Example #1
0
 /** Get data to display on GANTT for a project task
  *
  * @param $ID ID of the project task
  */
 static function getDataToDisplayOnGantt($ID)
 {
     global $DB;
     $todisplay = array();
     $task = new self();
     //       echo $ID.'<br>';
     if ($task->getFromDB($ID)) {
         $subtasks = array();
         foreach ($DB->request('glpi_projecttasks', array('projecttasks_id' => $ID, 'ORDER' => array('plan_start_date', 'real_start_date'))) as $data) {
             $subtasks += static::getDataToDisplayOnGantt($data['id']);
         }
         $real_begin = NULL;
         $real_end = NULL;
         // Use real if set
         if (!is_null($task->fields['real_start_date'])) {
             $real_begin = $task->fields['real_start_date'];
         }
         // Determine begin / end date of current task if not set (min/max sub projects / tasks)
         if (is_null($real_begin)) {
             if (!is_null($task->fields['plan_start_date'])) {
                 $real_begin = $task->fields['plan_start_date'];
             } else {
                 foreach ($subtasks as $subtask) {
                     if (is_null($real_begin) || !is_null($subtask['from']) && $real_begin > $subtask['from']) {
                         $real_begin = $subtask['from'];
                     }
                 }
             }
         }
         // Use real if set
         if (!is_null($task->fields['real_end_date'])) {
             $real_end = $task->fields['real_end_date'];
         }
         if (is_null($real_end)) {
             if (!is_null($task->fields['plan_end_date'])) {
                 $real_end = $task->fields['plan_end_date'];
             } else {
                 foreach ($subtasks as $subtask) {
                     if (is_null($real_end) || !is_null($subtask['to']) && $real_end < $subtask['to']) {
                         $real_end = $subtask['to'];
                     }
                 }
             }
         }
         $parents = 0;
         if ($task->fields['projecttasks_id'] > 0) {
             $parents = count(getAncestorsOf("glpi_projecttasks", $ID));
         }
         if ($task->fields['is_milestone']) {
             $percent = "";
         } else {
             $percent = isset($task->fields['percent_done']) ? $task->fields['percent_done'] : 0;
         }
         // Add current task
         $todisplay[$real_begin . '#' . $real_end . '#task' . $task->getID()] = array('id' => $task->getID(), 'name' => $task->fields['name'], 'desc' => $task->fields['content'], 'link' => $task->getlink(), 'type' => 'task', 'percent' => $percent, 'from' => $real_begin, 'parents' => $parents, 'to' => $real_end, 'is_milestone' => $task->fields['is_milestone']);
         // Add ordered subtasks
         foreach ($subtasks as $key => $val) {
             $todisplay[$key] = $val;
         }
     }
     return $todisplay;
 }