diff --git a/api/v1/entries/programs.php b/api/v1/entries/programs.php index 1b36ddafea..3df9668be2 100644 --- a/api/v1/entries/programs.php +++ b/api/v1/entries/programs.php @@ -9,7 +9,7 @@ * @version 1 * @link http://www.zentao.net */ -class ProgramsEntry extends Entry +class programsEntry extends Entry { /** * GET method. @@ -19,17 +19,47 @@ class ProgramsEntry extends Entry */ public function get() { + $_COOKIE['showClosed'] = $this->param('showClosed', 0); + $mergeChildren = $this->param('mergeChildren', 0); + $program = $this->loadController('program', 'browse'); $program->browse($this->param('status', 'all'), $this->param('order', 'order_asc')); $data = $this->getData(); if(isset($data->status) and $data->status == 'success') { - $programs = $data->data->programs; - $result = array(); + $programs = (array)$data->data->programs; + $progressList = $data->data->progressList; + $users = $data->data->users; + $result = array(); foreach($programs as $program) { - $result[] = $this->format($program, 'begin:date,end:date,realBegan:date,realEnd:date,openedDate:time,lastEditedDate:time,closedDate:time,canceledDate:time,deleted:bool'); + $program->progress = zget($progressList, $program->id, 0); + $program->openedBy = zget($users, $program->openedBy); + $program->closedBy = zget($users, $program->closedBy); + $program->canceledBy = zget($users, $program->canceledBy); + $program->PO = zget($users, $program->PO); + $program->PM = zget($users, $program->PM); + $program->QD = zget($users, $program->QD); + $program->RD = zget($users, $program->RD); + unset($program->desc); + + $param = $this->format($program, 'begin:date,end:date,realBegan:date,realEnd:date,openedDate:time,lastEditedDate:time,closedDate:time,canceledDate:time,deleted:bool'); + + if($mergeChildren) + { + if(empty($program->parent)) $result[$program->parent][$program->id] = $program; + if(isset($programs[$program->parent])) + { + $parentProgram = $programs[$program->parent]; + if(!isset($parentProgram->children)) $parentProgram->children = array(); + $parentProgram->children[] = $program; + } + } + else + { + $result[] = $program; + } } return $this->send(200, array('programs' => $result)); }