/** * @see ProjectTaskInterface::set_start() * @param string $date * @param string $time * @return bool */ public function set_start($date, $time) { global $transaction; if ($date) { $transaction_id = $transaction->begin(); if ($this->get_uf_end_time() != -1) { $current_end_datetime_handler = new DatetimeHandler($this->get_end_date() . " " . $this->get_uf_end_time()); } else { $current_end_datetime_handler = new DatetimeHandler($this->get_end_date() . " 23:59:59"); } if ($time) { $new_start_datetime_handler = new DatetimeHandler($date . " " . $time); } else { $new_start_datetime_handler = new DatetimeHandler($date . " 00:00:00"); } $new_previous_task_end_datetime_handler = clone $new_start_datetime_handler; if (!$time) { $new_previous_task_end_datetime_handler->sub_day(1); } else { $new_previous_task_end_datetime_handler->sub_second(1); } if ($new_start_datetime_handler->distance($current_end_datetime_handler) > 0) { $previous_project_task_has_previous_task_array = ProjectTaskHasPreviousTask_Access::list_previous_tasks_by_task_id($this->task_id); if (is_array($previous_project_task_has_previous_task_array) and count($previous_project_task_has_previous_task_array) >= 1) { foreach ($previous_project_task_has_previous_task_array as $key => $value) { $project_task = new ProjectTask($value); if ($project_task->get_start_time() != null) { $current_previous_task_end_datetime_handler = new DatetimeHandler($project_task->get_start_date() . " " . $project_task->get_start_time()); } else { $current_previous_task_end_datetime_handler = new DatetimeHandler($project_task->get_start_date() . " 00:00:00"); } if ($new_start_datetime_handler->distance($current_previous_task_end_datetime_handler) >= 0) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } return false; } } foreach ($previous_project_task_has_previous_task_array as $key => $value) { $project_task_access = new ProjectTask_Access($value); if ($project_task_access->set_end_date($new_previous_task_end_datetime_handler->get_formatted_string("Y-m-d")) == false) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } return false; } if (!$time) { if ($project_task_access->set_end_time("23:59:59") == false) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } return false; } } else { if ($project_task_access->set_end_time($new_previous_task_end_datetime_handler->get_formatted_string("H:i:s")) == false) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } return false; } } } } if ($this->task->set_start_date($date) == false) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } return false; } if ($time) { if ($this->task->set_start_time($time) == false) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } return false; } } if ($transaction_id != null) { $transaction->commit($transaction_id); } return true; } else { if ($transaction_id != null) { $transaction->rollback($transaction_id); } return false; } } else { return false; } }
/** * @throws ProjectIDMissingException * @throws ProjectSecuriyAccessDeniedException */ public static function calendar_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']); $calendar_array = array(); $counter = 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_time()) { $start_time = $project_task->get_start_time(); } else { $start_time = "00:00:00"; } if ($project_task->get_uf_end_time() > 0) { $end_time = $project_task->get_end_time(); } else { $end_time = "23:59:59"; } $paramquery = $_GET; $paramquery['run'] = "task_detail"; $paramquery['id'] = $value; $params = http_build_query($paramquery, '', '&'); $calendar_array[$counter]['name'] = $project_task->get_name(); $calendar_array[$counter]['start_date'] = $project_task->get_start_date(); $calendar_array[$counter]['start_time'] = $start_time; $calendar_array[$counter]['end_date'] = $project_task->get_end_date(); $calendar_array[$counter]['end_time'] = $end_time; $calendar_array[$counter]['color'] = "4284d3"; $calendar_array[$counter]['link'] = $params; $calendar_array[$counter]['id'] = $value; $calendar_array[$counter]['serial_id'] = 0; $counter++; } } $template = new HTMLTemplate("project/tasks/calendar_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); require_once "core/modules/organiser/io/organiser_library.io.php"; $organiser_library_io = new OrganiserLibraryIO(31); $organiser_library_io->set_calendar_array($calendar_array); $template->set_var("content", $organiser_library_io->get_content()); $template->output(); } else { throw new ProjectSecuriyAccessDeniedException(); } } else { throw new ProjectIDMissingException(); } }