include '../../../inc/includes.php'; Html::header(PluginTimelineticketDisplay::getTypeName(2), $_SERVER["PHP_SELF"], "plugins", "timelineticket"); if (Session::haveRight("config", READ) || Session::haveRight("plugin_timelineticket_ticket", UPDATE)) { $ptConfig = new PluginTimelineticketConfig(); $grplevel = new PluginTimelineticketGroupLevel(); if (isset($_POST["reconstructStates"])) { ini_set("max_execution_time", "0"); ini_set("memory_limit", "-1"); $ptState = new PluginTimelineticketState(); $ptState->reconstructTimeline(); Html::back(); } else { if (isset($_POST["reconstructGroups"])) { ini_set("max_execution_time", "0"); ini_set("memory_limit", "-1"); $ptGroup = new PluginTimelineticketAssignGroup(); $ptGroup->reconstrucTimeline(); Html::back(); } else { if (isset($_POST["add_groups"]) || isset($_POST["delete_groups"])) { $grplevel->update($_POST); Html::back(); } else { if (isset($_POST["update"])) { $ptConfig->update($_POST); Html::back(); } else { $ptConfig->showReconstructForm(); $ptConfig->getFromDB(1); $ptConfig->showForm(); Html::footer();
static function showForTicket(Ticket $ticket) { global $DB, $CFG_GLPI; echo "<table class='tab_cadre_fixe'>"; echo "<tr><th>" . __('Summary') . "</th></tr>"; echo "<tr class='tab_bg_1 center'><td>" . _n('Time range', 'Time ranges', 2) . " : "; $calendar = new Calendar(); $calendars_id = Entity::getUsedConfig('calendars_id', $ticket->fields['entities_id']); if ($calendars_id > 0 && $calendar->getFromDB($calendars_id)) { echo $calendar->getLink(); } else { echo NOT_AVAILABLE; } echo "</td></tr>"; PluginTimelineticketState::showHistory($ticket); // Display ticket have Due date if ($ticket->fields['due_date'] && $ticket->fields['status'] != CommonITILObject::WAITING && strtotime(date('Y-m-d H:i:s')) - strtotime($ticket->fields['due_date']) > 0) { $calendar = new Calendar(); $calendars_id = Entity::getUsedConfig('calendars_id', $ticket->fields['entities_id']); if ($calendars_id > 0 && $calendar->getFromDB($calendars_id)) { if ($ticket->fields['closedate']) { $dateend = $calendar->getActiveTimeBetween($ticket->fields['due_date'], $ticket->fields['closedate']); } else { $dateend = $calendar->getActiveTimeBetween($ticket->fields['due_date'], date('Y-m-d H:i:s')); } } else { // cas 24/24 - 7/7 if ($ticket->fields['closedate']) { $dateend = strtotime($ticket->fields['closedate']) - strtotime($ticket->fields['due_date']); } else { $dateend = strtotime(date('Y-m-d H:i:s')) - strtotime($ticket->fields['due_date']); } } echo "<tr>"; echo "<th>" . __('Late') . "</th>"; echo "</tr>"; echo "<tr>"; echo "<td align='center' class='tab_bg_2_2'>" . Html::timestampToString($dateend, true) . "</td>"; echo "</tr>"; } echo "</table>"; echo "<table class='tab_cadre_fixe'>"; echo "<tr>"; echo "<th colspan='2'>" . __('Status') . "</th>"; echo "</tr>"; /* pChart library inclusions */ include GLPI_ROOT . "/plugins/timelineticket/lib/pChart2.1.4/class/pData.class.php"; include GLPI_ROOT . "/plugins/timelineticket/lib/pChart2.1.4/class/pDraw.class.php"; include GLPI_ROOT . "/plugins/timelineticket/lib/pChart2.1.4/class/pImage.class.php"; include GLPI_ROOT . "/plugins/timelineticket/lib/pChart2.1.4/class/pIndicator.class.php"; $a_data = PluginTimelineticketDisplay::getTotaltimeEnddate($ticket); $totaltime = $a_data['totaltime']; $end_date = $a_data['end_date']; $params = array('totaltime' => $totaltime, 'end_date' => $end_date); $ptState = new PluginTimelineticketState(); $ptState->showTimeline($ticket, $params); $ptAssignGroup = new PluginTimelineticketAssignGroup(); $ptAssignGroup->showTimeline($ticket, $params); $ptAssignUser = new PluginTimelineticketAssignUser(); $ptAssignUser->showTimeline($ticket, $params); echo "</table>"; PluginTimelineticketToolbox::ShowDetail($ticket, 'group'); PluginTimelineticketToolbox::ShowDetail($ticket, 'user'); }
static function showForTicket(Ticket $ticket) { global $DB, $CFG_GLPI; echo "<table class='tab_cadre_fixe'>"; echo "<tr><th>" . __('Summary') . "</th></tr>"; echo "<tr class='tab_bg_1 center'><td>" . _n('Time range', 'Time ranges', 2) . " : "; $calendar = new Calendar(); $calendars_id = Entity::getUsedConfig('calendars_id', $ticket->fields['entities_id']); if ($calendars_id > 0 && $calendar->getFromDB($calendars_id)) { echo $calendar->getLink(); } else { echo NOT_AVAILABLE; } echo "</td></tr>"; PluginTimelineticketState::showHistory($ticket); // Display ticket have Due date if ($ticket->fields['due_date'] && $ticket->fields['status'] != CommonITILObject::WAITING && strtotime(date('Y-m-d H:i:s')) - strtotime($ticket->fields['due_date']) > 0) { $calendar = new Calendar(); $calendars_id = Entity::getUsedConfig('calendars_id', $ticket->fields['entities_id']); if ($calendars_id > 0 && $calendar->getFromDB($calendars_id)) { if ($ticket->fields['closedate']) { $dateend = $calendar->getActiveTimeBetween($ticket->fields['due_date'], $ticket->fields['closedate']); } else { $dateend = $calendar->getActiveTimeBetween($ticket->fields['due_date'], date('Y-m-d H:i:s')); } } else { // cas 24/24 - 7/7 if ($ticket->fields['closedate']) { $dateend = strtotime($ticket->fields['closedate']) - strtotime($ticket->fields['due_date']); } else { $dateend = strtotime(date('Y-m-d H:i:s')) - strtotime($ticket->fields['due_date']); } } echo "<tr>"; echo "<th>" . __('Late') . "</th>"; echo "</tr>"; echo "<tr>"; echo "<td align='center' class='tab_bg_2_2'>" . Html::timestampToString($dateend, true) . "</td>"; echo "</tr>"; } echo "</table>"; echo "<table class='tab_cadre_fixe'>"; echo "<tr>"; echo "<th colspan='2'>" . __('Status') . "</th>"; echo "</tr>"; /* pChart library inclusions */ include GLPI_ROOT . "/plugins/timelineticket/lib/pChart2.1.4/class/pData.class.php"; include GLPI_ROOT . "/plugins/timelineticket/lib/pChart2.1.4/class/pDraw.class.php"; include GLPI_ROOT . "/plugins/timelineticket/lib/pChart2.1.4/class/pImage.class.php"; include GLPI_ROOT . "/plugins/timelineticket/lib/pChart2.1.4/class/pIndicator.class.php"; $a_data = PluginTimelineticketDisplay::getTotaltimeEnddate($ticket); $totaltime = $a_data['totaltime']; $end_date = $a_data['end_date']; $params = array('totaltime' => $totaltime, 'end_date' => $end_date); $ptState = new PluginTimelineticketState(); $ptState->showTimeline($ticket, $params); $ptAssignGroup = new PluginTimelineticketAssignGroup(); $ptAssignGroup->showTimeline($ticket, $params); $ptAssignUser = new PluginTimelineticketAssignUser(); $ptAssignUser->showTimeline($ticket, $params); echo "</table>"; PluginTimelineticketToolbox::ShowDetail($ticket, 'group'); PluginTimelineticketToolbox::ShowDetail($ticket, 'user'); if ($_SESSION['glpi_use_mode'] == Session::DEBUG_MODE) { echo "<br><table class='tab_cadre_fixe'>"; echo "<tr>"; echo "<th colspan='5'>" . __('DEBUG') . " " . __('Group') . "</th>"; echo "</tr>"; echo "<tr>"; echo "<th>" . __('ID') . "</th>"; echo "<th>" . __('Date') . "</th>"; echo "<th>" . __('Group') . "</th>"; echo "<th>" . __('Begin') . "</th>"; echo "<th>" . __('Delay', 'timelineticket') . "</th>"; echo "</tr>"; $query = "SELECT *\n FROM `glpi_plugin_timelineticket_assigngroups`\n WHERE `tickets_id` = '" . $ticket->getID() . "'"; $result = $DB->query($query); while ($data = $DB->fetch_assoc($result)) { echo "<tr class='tab_bg_1'>"; echo "<td>" . $data['id'] . "</td>"; echo "<td>" . Html::convDateTime($data['date']) . "</td>"; echo "<td>" . Dropdown::getDropdownName("glpi_groups", $data['groups_id']) . "</td>"; echo "<td>" . Html::timestampToString($data['begin']) . "</td>"; echo "<td>" . Html::timestampToString($data['delay']) . "</td>"; echo "</tr>"; } echo "</table>"; echo "<br><table class='tab_cadre_fixe'>"; echo "<tr>"; echo "<th colspan='5'>" . __('DEBUG') . " " . __('Technician') . "</th>"; echo "</tr>"; echo "<tr>"; echo "<th>" . __('ID') . "</th>"; echo "<th>" . __('Date') . "</th>"; echo "<th>" . __('Technician') . "</th>"; echo "<th>" . __('Begin') . "</th>"; echo "<th>" . __('Delay', 'timelineticket') . "</th>"; echo "</tr>"; $query = "SELECT *\n FROM `glpi_plugin_timelineticket_assignusers`\n WHERE `tickets_id` = '" . $ticket->getID() . "'"; $result = $DB->query($query); while ($data = $DB->fetch_assoc($result)) { echo "<tr class='tab_bg_1'>"; echo "<td>" . $data['id'] . "</td>"; echo "<td>" . Html::convDateTime($data['date']) . "</td>"; echo "<td>" . getUserName($data['users_id']) . "</td>"; echo "<td>" . Html::timestampToString($data['begin']) . "</td>"; echo "<td>" . Html::timestampToString($data['delay']) . "</td>"; echo "</tr>"; } echo "</table>"; } }
static function deleteGroupTicket(Group_Ticket $item) { global $DB; $ticket = new Ticket(); $ptAssignGroup = new PluginTimelineticketAssignGroup(); $ticket->getFromDB($item->fields['tickets_id']); $calendar = new Calendar(); $calendars_id = Entity::getUsedConfig('calendars_id', $ticket->fields['entities_id']); $query = "SELECT MAX(`date`) AS datedebut, id\n FROM `" . $ptAssignGroup->getTable() . "`\n WHERE `tickets_id` = '" . $item->fields['tickets_id'] . "'\n AND `groups_id`='" . $item->fields['groups_id'] . "'\n AND `delay` IS NULL"; $result = $DB->query($query); $datedebut = ''; $input = array(); if ($result && $DB->numrows($result)) { $datedebut = $DB->result($result, 0, 'datedebut'); $input['id'] = $DB->result($result, 0, 'id'); } else { return; } if (!$datedebut) { $delay = 0; // Utilisation calendrier } else { if ($calendars_id > 0 && $calendar->getFromDB($calendars_id)) { $delay = $calendar->getActiveTimeBetween($datedebut, $_SESSION["glpi_currenttime"]); } else { // cas 24/24 - 7/7 $delay = strtotime($_SESSION["glpi_currenttime"]) - strtotime($datedebut); } } $input['delay'] = $delay; $ptAssignGroup->update($input); }
function plugin_timelineticket_giveItem($type, $ID, $data, $num) { global $CFG_GLPI, $DB; $searchopt =& Search::getOptions($type); $table = $searchopt[$ID]["table"]; $field = $searchopt[$ID]["field"]; switch ($table . '.' . $field) { case "glpi_plugin_timelineticket_grouplevels.groups": if (empty($data["ITEM_{$num}"])) { $out = __('None'); } else { $out = ""; $groups = json_decode($data["ITEM_{$num}"], true); if (!empty($groups)) { foreach ($groups as $key => $val) { $out .= Dropdown::getDropdownName("glpi_groups", $val) . "<br>"; } } } return $out; break; case "glpi_plugin_timelineticket_assigngroups.groups_id": $ptAssignGroup = new PluginTimelineticketAssignGroup(); $group = new Group(); $ticket = new Ticket(); $out = ""; $a_out = array(); $a_groupname = array(); if (!isset($data["ITEM_{$num}"]) or !strstr($data["ITEM_{$num}"], '$$')) { return ""; } $splitg = explode("\$\$\$\$", $data["ITEM_{$num}"]); foreach ($splitg as $datag) { $split = explode("\$\$", $datag); $group->getFromDB($split[0]); $ptAssignGroup->getFromDB($split[1]); $time = $ptAssignGroup->fields['delay']; if ($ptAssignGroup->fields['delay'] === NULL) { $ticket->getFromDB($data["ITEM_0"]); $calendar = new Calendar(); $calendars_id = Entity::getUsedConfig('calendars_id', $ticket->fields['entities_id']); $datedebut = $ptAssignGroup->fields['date']; $enddate = $_SESSION["glpi_currenttime"]; if ($ticket->fields['status'] == Ticket::CLOSED) { $enddate = $ticket->fields['closedate']; } if ($calendars_id > 0 && $calendar->getFromDB($calendars_id)) { $time = $calendar->getActiveTimeBetween($datedebut, $enddate); } else { // cas 24/24 - 7/7 $time = strtotime($enddate) - strtotime($datedebut); } } else { if ($ptAssignGroup->fields['delay'] == 0) { $time = 0; } } $a_groupname[$group->fields['id']] = $group->getLink(); if (isset($a_out[$group->fields['id']])) { $a_out[$group->fields['id']] += $time; } else { $a_out[$group->fields['id']] = $time; } } $a_out_comp = array(); foreach ($a_out as $groups_id => $time) { $a_out_comp[] = $a_groupname[$groups_id] . " : " . Html::timestampToString($time, TRUE, FALSE); } $out = implode("<hr/>", $a_out_comp); return $out; break; } return ""; }