* Performance for product list.
This commit is contained in:
@@ -629,55 +629,6 @@ class programModel extends model
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get program and project progress list.
|
||||
*
|
||||
* @param array $programIdList
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProgressList($programIdList = array())
|
||||
{
|
||||
$programPairs = $this->getPairs();
|
||||
$existProgramIdList = array_intersect($programIdList, array_keys($programPairs));
|
||||
$projectStats = $this->getProjectStats(0, 'all', 0, 'id_desc', null, 0, 0, true);
|
||||
|
||||
$totalProgress = array();
|
||||
$projectCount = array();
|
||||
$userPRJCount = array();
|
||||
$progressList = array();
|
||||
|
||||
foreach($existProgramIdList as $programID)
|
||||
{
|
||||
$totalProgress[$programID] = 0;
|
||||
$projectCount[$programID] = 0;
|
||||
$userPRJCount[$programID] = 0;
|
||||
$progressList[$programID] = 0;
|
||||
|
||||
foreach($projectStats as $projectID => $project)
|
||||
{
|
||||
if(strpos($projectStats[$projectID]->path, ",{$programID},") === false) continue;
|
||||
|
||||
/* The number of projects under this program that the user can view. */
|
||||
if(strpos(",{$this->app->user->view->projects},", ",{$projectID},") !== false) $userPRJCount[$programID] ++;
|
||||
|
||||
$totalProgress[$programID] += $projectStats[$projectID]->progress;
|
||||
$projectCount[$programID] ++;
|
||||
}
|
||||
|
||||
if(empty($projectCount[$programID])) continue;
|
||||
|
||||
$progressList[$programID] = round($totalProgress[$programID] / $projectCount[$programID]);
|
||||
}
|
||||
|
||||
/* Add project progress. */
|
||||
/* First calculate the overall progress of the program, and then filter the unqualified projects. */
|
||||
$existProjectIdList = array_intersect($programIdList, array_keys($projectStats));
|
||||
foreach($existProjectIdList as $projectID) $progressList[$projectID] = $projectStats[$projectID]->progress;
|
||||
|
||||
return $progressList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a program.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user