| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <?php
- public function getDocumentList()
- {
- return $document = $this->dao->select("t1.id, CONCAT_WS(' / ', t2.name, t1.name) as name")->from(TABLE_ZOUTPUT)->alias('t1')
- ->leftJoin(TABLE_ACTIVITY)->alias('t2')->on('t1.activity = t2.id')
- ->where('t1.deleted')->eq(0)
- ->fetchPairs('id', 'name');
- }
- /**
- * @param int $executionID
- * @param int $productID
- * @param string $orderBy
- */
- public function getPlans($executionID = 0, $productID = 0, $orderBy = 'id_asc')
- {
- $plans = $this->getStage($executionID, $productID, 'all', $orderBy);
- $documentList = $this->getDocumentList();
- $parents = array();
- foreach($plans as $planID => $plan)
- {
- $document = '';
- if(!empty($plan->output))
- {
- $output = explode(',', $plan->output);
- foreach($output as $title) if(isset($documentList[$title])) $document .= $documentList[$title];
- }
- $plan->output = empty($plan->output) ? '' : $document;
- $plan->grade == 1 ? $parents[$planID] = $plan : $children[$plan->parent][] = $plan;
- }
- foreach($parents as $planID => $plan) $parents[$planID]->children = isset($children[$planID]) ? $children[$planID] : array();
- return $parents;
- }
- /**
- * Get the stage set to milestone.
- *
- * @param int $projectID
- * @access public
- * @return array
- */
- public function getMilestones($projectID = 0)
- {
- $milestones = $this->dao->select('id, path')->from(TABLE_PROJECT)
- ->where('project')->eq($projectID)
- ->andWhere('type')->eq('stage')
- ->andWhere('milestone')->eq(1)
- ->andWhere('deleted')->eq(0)
- ->orderBy('begin_desc,path')
- ->fetchPairs();
- return $this->formatMilestones($milestones, $projectID);
- }
- /**
- * 根据product获取里程碑。
- * Get milestone by product.
- *
- * @param int $productID
- * @param int $projectID
- * @access public
- * @return array
- */
- public function getMilestoneByProduct($productID, $projectID)
- {
- $milestones = $this->dao->select('t1.id, t1.path')->from(TABLE_PROJECT)->alias('t1')
- ->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id=t2.project')
- ->where('t2.product')->eq($productID)
- ->andWhere('t1.project')->eq($projectID)
- ->andWhere('t1.milestone')->eq(1)
- ->andWhere('t1.deleted')->eq(0)
- ->orderBy('t1.begin asc,path')
- ->fetchPairs();
- return $this->formatMilestones($milestones, $projectID);
- }
- /**
- * Format milestones use '/'.
- *
- * @param array $milestones
- * @param int $projectID
- * @access private
- * @return array
- */
- private function formatMilestones($milestones, $projectID)
- {
- $allStages = $this->dao->select('id,name')->from(TABLE_EXECUTION)
- ->where('project')->eq($projectID)
- ->andWhere('type')->notin('program,project')
- ->fetchPairs();
- foreach($milestones as $id => $path)
- {
- $paths = explode(',', trim($path, ','));
- $stageName = '';
- foreach($paths as $stage)
- {
- if(isset($allStages[$stage])) $stageName .= '/' . $allStages[$stage];
- }
- $milestones[$id] = trim($stageName, '/');
- }
- return $milestones;
- }
|