/** * @see ProjectTaskInterface::get_color() * @return string */ public function get_color() { if (!isset($this->progress)) { $this->calc_progress(); } if ($this->task and $this->task_id) { if ($this->progress < 100) { if ($this->get_uf_end_time() == -1) { $end_datetime_handler = new DatetimeHandler($this->task->get_end_date() . " 23:59:59"); } else { $end_datetime_handler = new DatetimeHandler($this->task->get_end_date() . " " . $this->task->get_end_date()); } $remaining_mktime = $end_datetime_handler->get_mktime() - time(); if ($remaining_mktime < 86400) { if ($remaining_mktime < 0) { $color = "FF0000"; } elseif ($remaining_mktime < 3600) { $color = "FF4500"; } elseif ($remaining_mktime < 36000) { $color = "FFA500"; } else { $color = "FFD700"; } } else { $color = "ADFF2F"; } return $color; } else { return "ADFF2F"; } } else { return "FFFFFF"; } }
private function day_view() { $today = date("j-m-Y"); $today_datetime_handler = new DatetimeHandler($today); if (!$_GET['page']) { $date = date("j-m-Y"); } else { $date = $_GET['page']; } $datetime_handler = new DatetimeHandler($date); $datetime_handler->add_hour(6); $next_day_datetime_handler = clone $datetime_handler; $next_day_datetime_handler->add_day(1); $prev_day_datetime_handler = clone $datetime_handler; $prev_day_datetime_handler->sub_day(1); $mktime = $datetime_handler->get_mktime(); $day = date("jS", $mktime); $month = date("m", $mktime); $month_name = date("F", $mktime); $year = date("Y", $mktime); $color_count = 1; $date_array = $this->mktime_has_date($mktime, $mktime + 86399); $rows = count($date_array); $column_array = array(); $column_array_count = 0; if ($datetime_handler->get_formatted_string("Y-m-d") == $today_datetime_handler->get_formatted_string("Y-m-d")) { $display_date = "<span class='CalendarToday'>" . $datetime_handler->get_formatted_string("l jS F Y") . "</span>"; } else { $display_date = $datetime_handler->get_formatted_string("l jS F Y"); } for ($i = 0; $i <= 17; $i++) { $mktime = $datetime_handler->get_mktime(); $date_array = $this->mktime_has_date($mktime, $mktime + 3599); if (is_array($date_array) and count($date_array >= 1)) { foreach ($date_array as $key => $value) { if (!in_array($value, $column_array)) { if ($this->calendar_array[$value]['link']) { $content_array[$i][$column_array_count]['name'] = "<a href='index.php?" . $this->calendar_array[$value]['link'] . "'>" . $this->calendar_array[$value]['name'] . "</a>"; } else { $content_array[$i][$column_array_count]['name'] = $this->calendar_array[$value]['name']; } $content_array[$i][$column_array_count]['value'] = $this->calendar_array[$value]['color']; $content_array[$i][$column_array_count]['datebegin'] = true; $start_datetime_handler = new DatetimeHandler($this->calendar_array[$value]['start_date'] . " " . $this->calendar_array[$value]['start_time']); $end_datetime_handler = new DatetimeHandler($this->calendar_array[$value]['end_date'] . " " . $this->calendar_array[$value]['end_time']); $content_array[$i][$column_array_count]['range'] = $start_datetime_handler->get_formatted_string("j-n-Y (H:i)") . " - " . $end_datetime_handler->get_formatted_string("j-n-Y (H:i)"); $column_array_count++; array_push($column_array, $value); } } for ($j = 0; $j <= $rows - 1; $j++) { if (!$content_array[$i][$j]['content']) { if (isset($column_array[$j]) and in_array($column_array[$j], $date_array)) { $content_array[$i][$j]['value'] = $this->calendar_array[$column_array[$j]]['color']; if ($content_array[$i][$j]['datebegin'] != true) { $content_array[$i][$j]['datebegin'] = false; } } else { $content_array[$i][$j]['value'] = ""; $content_array[$i][$j]['datebegin'] = false; } } } } else { $content_array[$i][0]['datebegin'] = false; $content_array[$i][0]['value'] = ""; } $content_array[$i]['time'] = $datetime_handler->get_formatted_string("H:i"); $datetime_handler->add_hour(1); if ($color_count % 2) { $tr_class = " class='CalendarTrGrey'"; } else { $tr_class = ""; } $content_array[$i]['tr_class'] = $tr_class; $color_count++; } $template = new HTMLTemplate("organiser/views/day.html"); $paramquery_prev = $_GET; $paramquery_prev['page'] = date("j-m-Y", $prev_day_datetime_handler->get_mktime()); $params_prev = http_build_query($paramquery_prev, '', '&'); $paramquery_next = $_GET; $paramquery_next['page'] = date("j-m-Y", $next_day_datetime_handler->get_mktime()); $params_next = http_build_query($paramquery_next, '', '&'); $template->set_var("previous_params", $params_prev); $template->set_var("next_params", $params_next); $template->set_var("date", $display_date); $template->set_var("content_array", $content_array); return $template->get_string(); }
/** * @throws ProjectIDMissingException * @throws ProjectSecuriyAccessDeniedException */ public static function gantt_view() { global $project_security; if ($_GET['project_id']) { if ($project_security->is_access(1, false) == true) { $project_task_array = ProjectTask::list_tasks($_GET['project_id']); $left_limit = 0; $right_limit = 0; if (is_array($project_task_array) and count($project_task_array) >= 1) { foreach ($project_task_array as $key => $value) { $project_task = new ProjectTask($value); if ($project_task->get_start_date()) { $begin_timestamp = $project_task->get_start_date() . " 00:00:00"; if ($project_task->get_uf_end_time() != "-1") { $end_timestamp = $project_task->get_end_date() . " " . $project_task->get_end_time(); } else { $end_timestamp = $project_task->get_end_date() . " 00:00:00"; } $begin_datetime_handler = new DatetimeHandler($begin_timestamp); $end_datetime_handler = new DatetimeHandler($end_timestamp); $begin_mktime = $begin_datetime_handler->get_mktime(); $end_mktime = $end_datetime_handler->get_mktime(); if ($left_limit == 0 or $left_limit > $begin_mktime) { $left_limit = $begin_mktime; } if ($right_limit == 0 or $right_limit < $end_mktime) { $right_limit = $end_mktime; } } } $left_limit_handler = new DatetimeHandler($left_limit); $right_limit_handler = new DatetimeHandler($right_limit); $day_distance = $left_limit_handler->day_distance($right_limit_handler); $date_range = $right_limit - $left_limit; if ($day_distance < 30) { if ($day_distance < 15) { if ($day_distance < 7) { $date_range_addition = ceil($date_range / ($day_distance * 4)); $date_mktime = $left_limit; $number_of_rows = $day_distance * 4 + 4; } else { $date_range_addition = ceil($date_range / ($day_distance * 2)); $date_mktime = $left_limit; $number_of_rows = $day_distance * 2 + 2; } } else { $date_range_addition = ceil($date_range / $day_distance); $date_mktime = $left_limit; $number_of_rows = $day_distance + 1; } } else { $date_range_addition = ceil($date_range / 29); $date_mktime = $left_limit; $number_of_rows = 30; } $width_of_row = 705 / $number_of_rows; $gantt_array = array(); for ($i = 0; $i <= $number_of_rows - 1; $i++) { $day = date("d", $date_mktime); $month = date("M", $date_mktime); $gantt_array[$i]['title'] = $day . "<br />" . $month; $gantt_array[$i]['mktime'] = $date_mktime; $date_mktime = $date_mktime + $date_range_addition; } $template = new HTMLTemplate("project/tasks/gantt_view.html"); $table_view_paramquery = $_GET; $table_view_paramquery['show'] = "table"; $table_view_params = http_build_query($table_view_paramquery, '', '&'); $template->set_var("table_view_params", $table_view_params); $gantt_view_paramquery = $_GET; $gantt_view_paramquery['show'] = "gantt"; $gantt_view_params = http_build_query($gantt_view_paramquery, '', '&'); $template->set_var("gantt_view_params", $gantt_view_params); $cal_view_paramquery = $_GET; $cal_view_paramquery['show'] = "cal"; $cal_view_params = http_build_query($cal_view_paramquery, '', '&'); $template->set_var("cal_view_params", $cal_view_params); $table = "<table class='ProjectTaskGanttTable'>"; $table .= "<tr>"; foreach ($gantt_array as $key => $value) { $table .= "<th width='" . $width_of_row . "px'>" . $value['title'] . "</th>"; } $table .= "</tr>"; foreach ($project_task_array as $key => $value) { $project_task = new ProjectTask($value); $begin_timestamp = $project_task->get_start_date() . " 00:00:00"; if ($project_task->get_uf_end_time() != "-1") { $end_timestamp = $project_task->get_end_date() . " " . $project_task->get_end_time(); } else { $end_timestamp = $project_task->get_end_date() . " 23:59:59"; } $begin_datetime_handler = new DatetimeHandler($begin_timestamp); $end_datetime_handler = new DatetimeHandler($end_timestamp); $begin_mktime = $begin_datetime_handler->get_mktime(); $end_mktime = $end_datetime_handler->get_mktime(); $table .= "<tr>"; $paramquery = $_GET; $paramquery['run'] = "task_detail"; $paramquery['id'] = $value; $params = http_build_query($paramquery, '', '&'); $table .= "<td colspan='30'><span class='smallText'><a href='index.php?" . $params . "'>" . $project_task->get_name() . " (" . $begin_datetime_handler->get_formatted_string("j/n/Y") . " - " . $end_datetime_handler->get_formatted_string("j/n/Y") . ")</a></span></td>"; $table .= "</tr><tr class='ProjectTaskGanttBlockEnd'>"; $begin_key = -1; $end_key = -1; foreach ($gantt_array as $fe_key => $fe_value) { if ($fe_value['mktime'] >= $begin_mktime) { if ($begin_key == -1) { $begin_key = $fe_key; } } if ($begin_key != -1 and $fe_value['mktime'] <= $end_mktime) { $end_key = $fe_key; } } $key_range = $end_key - $begin_key + 1; $in_task = false; for ($i = 0; $i <= $number_of_rows - 1; $i++) { if ($i == $begin_key) { $in_task = true; $width = $key_range * ($width_of_row + 1); if ($project_task->get_type() == 3) { $table .= "<td colspan='" . $key_range . "' style='text-align: center;'><img src='images/icons/milestone.png' alt='' /></td>"; } else { $table .= "<td colspan='" . $key_range . "'><img src='core/images/status_bar.php?length=" . $width . "&height=15&linecolor=A0A0A0&bgcolor=EAEAEA&color=" . $project_task->get_color() . "&value=" . $project_task->get_progress() . "' /></td>"; } } if ($in_task == false) { $table .= "<td></td>"; } if ($i == $end_key) { $in_task = false; } } $table .= "</tr>"; } $table .= "</table>"; $template->set_var("table", $table); $template->output(); } else { $template = new HTMLTemplate("project/tasks/gantt_view.html"); $table_view_paramquery = $_GET; $table_view_paramquery['show'] = "table"; $table_view_params = http_build_query($table_view_paramquery, '', '&'); $template->set_var("table_view_params", $table_view_params); $gantt_view_paramquery = $_GET; $gantt_view_paramquery['show'] = "gantt"; $gantt_view_params = http_build_query($gantt_view_paramquery, '', '&'); $template->set_var("gantt_view_params", $gantt_view_params); $cal_view_paramquery = $_GET; $cal_view_paramquery['show'] = "cal"; $cal_view_params = http_build_query($cal_view_paramquery, '', '&'); $template->set_var("cal_view_params", $cal_view_params); $template->set_var("table", "<span class='italic'>No Entries Found</span>"); $template->output(); } } else { throw new ProjectSecuriyAccessDeniedException(); } } else { throw new ProjectIDMissingException(); } }