diff --git a/module/program/model.php b/module/program/model.php index be9d29f6b6..f45f36eadd 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -1389,7 +1389,35 @@ class programModel extends model ->exec(); } - /* 5. Update projectStatsTime in config. */ + /* 5. Update programStatsTime. */ + $projectList = $this->dao->select('id,progress,path')->from(TABLE_PROJECT) + ->where('type')->eq('project') + ->andWhere('parent')->ne(0) + ->fetchAll('id'); + $programProgress = array(); + foreach($projectList as $projectID => $project) + { + $path = explode(',', trim($project->path, ',')); + + foreach($path as $programID) + { + if($programID == $projectID) continue; + $programProgress[$programID][] = $project->progress; + } + } + + foreach($programProgress as $programID => $progress) + { + $count = count($progress); + $sum = array_sum($progress); + $average = round($sum / $count, 2); + $this->dao->update(TABLE_PROJECT) + ->set('progress')->eq($average) + ->where('id')->eq($programID) + ->exec(); + } + + /* 6. Update projectStatsTime in config. */ $this->loadModel('setting')->setItem('system.common.global.projectStatsTime', $now); $this->app->config->global->projectStatsTime = $now; }