//If the start date does not exist then set it for today. //This avoids jpgraphs internal errors that render the gantt completely useless if ($t['task_end_date'] == '0000-00-00 00:00:00') { if ($t['task_duration']) { $t['task_end_date'] = db_unix2dateTime(db_dateTime2unix($t['task_start_date']) + SECONDS_PER_DAY * convert2days($t['task_duration'], $t['task_duration_type'])); } else { $todaydate = new CDate(); $t['task_end_date'] = $todaydate->format(FMT_TIMESTAMP_DATE); } } $tStart = intval($t['task_start_date']) ? $t['task_start_date'] : $start; $tEnd = intval($t['task_end_date']) ? $t['task_end_date'] : $end; $tStartObj = new CDate($t['task_start_date']); $tEndObj = new CDate($t['task_end_date']); if ($t['task_milestone'] != 1) { $gantt->addSubBar(substr(' --' . $t['task_name'], 0, 20) . '...', $tStart, $tEnd, $caption, $t['task_dynamic'] == 1 ? 0.1 : 0.6, $p['project_color_identifier'], $progress); } else { $gantt->addMilestone(array('-- ' . $t['task_name']), $t['task_start_date']); } // Insert workers for each task into Gantt Chart $q = new DBQuery(); $q->addTable('user_tasks', 't'); $q->addQuery('DISTINCT contact_first_name, contact_last_name, t.task_id'); $q->addJoin('users', 'u', 'u.user_id = t.user_id', 'inner'); $q->addJoin('contacts', 'c', 'c.contact_id = u.user_contact', 'inner'); $q->addWhere('t.task_id = ' . (int) $t['task_id']); $q->addOrder('user_username ASC'); $workers = $q->loadList(); $q->clear(); foreach ($workers as $w) { $label = ' * ' . $w['contact_first_name'] . ' ' . $w['contact_last_name'];