本文整理汇总了PHP中SLA::getActiveTimeBetween方法的典型用法代码示例。如果您正苦于以下问题:PHP SLA::getActiveTimeBetween方法的具体用法?PHP SLA::getActiveTimeBetween怎么用?PHP SLA::getActiveTimeBetween使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SLA
的用法示例。
在下文中一共展示了SLA::getActiveTimeBetween方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: unset
//.........这里部分代码省略.........
unset($this->updates[$key]);
unset($this->oldvalues['closedate']);
}
}
}
if (($key = array_search('status', $this->updates)) !== false && $this->oldvalues['status'] == $this->fields['status']) {
unset($this->updates[$key]);
unset($this->oldvalues['status']);
}
// Status solved : check dates
if (in_array($this->fields["status"], $this->getSolvedStatusArray()) && (in_array("date", $this->updates) || in_array("solvedate", $this->updates))) {
// Invalid dates : no change
// solvedate must be > create date
if ($this->fields["solvedate"] < $this->fields["date"]) {
Session::addMessageAfterRedirect(__('Invalid dates. Update cancelled.'), false, ERROR);
if (($key = array_search('date', $this->updates)) !== false) {
unset($this->updates[$key]);
unset($this->oldvalues['date']);
}
if (($key = array_search('solvedate', $this->updates)) !== false) {
unset($this->updates[$key]);
unset($this->oldvalues['solvedate']);
}
}
}
// Manage come back to waiting state
if (!is_null($this->fields['begin_waiting_date']) && ($key = array_search('status', $this->updates)) !== false && ($this->oldvalues['status'] == self::WAITING || in_array($this->oldvalues["status"], $this->getSolvedStatusArray()) && !in_array($this->fields["status"], $this->getClosedStatusArray()))) {
// Compute ticket waiting time use calendar if exists
$calendars_id = Entity::getUsedConfig('calendars_id', $this->fields['entities_id']);
$calendar = new Calendar();
$delay_time = 0;
// Compute ticket waiting time use calendar if exists
// Using calendar
if ($calendars_id > 0 && $calendar->getFromDB($calendars_id)) {
$delay_time = $calendar->getActiveTimeBetween($this->fields['begin_waiting_date'], $_SESSION["glpi_currenttime"]);
} else {
// Not calendar defined
$delay_time = strtotime($_SESSION["glpi_currenttime"]) - strtotime($this->fields['begin_waiting_date']);
}
// SLA case : compute sla duration
if (isset($this->fields['slas_id']) && $this->fields['slas_id'] > 0) {
$sla = new SLA();
if ($sla->getFromDB($this->fields['slas_id'])) {
$sla->setTicketCalendar($calendars_id);
$delay_time_sla = $sla->getActiveTimeBetween($this->fields['begin_waiting_date'], $_SESSION["glpi_currenttime"]);
$this->updates[] = "sla_waiting_duration";
$this->fields["sla_waiting_duration"] += $delay_time_sla;
}
// Compute new due date
$this->updates[] = "due_date";
$this->fields['due_date'] = $sla->computeDueDate($this->fields['date'], $this->fields["sla_waiting_duration"]);
// Add current level to do
$sla->addLevelToDo($this);
} else {
// Using calendar
if ($calendars_id > 0 && $calendar->getFromDB($calendars_id)) {
if ($this->fields['due_date'] > 0) {
// compute new due date using calendar
$this->updates[] = "due_date";
$this->fields['due_date'] = $calendar->computeEndDate($this->fields['due_date'], $delay_time);
}
} else {
// Not calendar defined
if ($this->fields['due_date'] > 0) {
// compute new due date : no calendar so add computed delay_time
$this->updates[] = "due_date";
$this->fields['due_date'] = date('Y-m-d H:i:s', $delay_time + strtotime($this->fields['due_date']));
}
}
}
$this->updates[] = "waiting_duration";
$this->fields["waiting_duration"] += $delay_time;
// Reset begin_waiting_date
$this->updates[] = "begin_waiting_date";
$this->fields["begin_waiting_date"] = 'NULL';
}
// Set begin waiting date if needed
if (($key = array_search('status', $this->updates)) !== false && ($this->fields['status'] == self::WAITING || in_array($this->fields["status"], $this->getSolvedStatusArray()))) {
$this->updates[] = "begin_waiting_date";
$this->fields["begin_waiting_date"] = $_SESSION["glpi_currenttime"];
// Specific for tickets
if (isset($this->fields['slas_id']) && $this->fields['slas_id'] > 0) {
SLA::deleteLevelsToDo($this);
}
}
// solve_delay_stat : use delay between opendate and solvedate
if (in_array("solvedate", $this->updates)) {
$this->updates[] = "solve_delay_stat";
$this->fields['solve_delay_stat'] = $this->computeSolveDelayStat();
}
// close_delay_stat : use delay between opendate and closedate
if (in_array("closedate", $this->updates)) {
$this->updates[] = "close_delay_stat";
$this->fields['close_delay_stat'] = $this->computeCloseDelayStat();
}
// Do not take into account date_mod if no update is done
if (count($this->updates) == 1 && ($key = array_search('date_mod', $this->updates)) !== false) {
unset($this->updates[$key]);
}
}
示例2: giveItem
//.........这里部分代码省略.........
$out = "<a id='ticket{$itemtype}" . $data['id'] . "' ";
$out .= "href=\"" . $CFG_GLPI["root_doc"] . "/front/ticket.php?" . Toolbox::append_params($options, '&') . "\">";
$out .= $data[$num][0]['name'] . "</a>";
return $out;
}
}
break;
case "glpi_tickets.due_date":
case "glpi_problems.due_date":
case "glpi_changes.due_date":
// Due date + progress
if ($ID == 151) {
$out = Html::convDate($data[$num][0]['name']);
// No due date in waiting status
if ($data[$num][0]['status'] == CommonITILObject::WAITING) {
return '';
}
if (empty($data[$num][0]['name'])) {
return '';
}
if ($data[$num][0]['status'] == Ticket::SOLVED || $data[$num][0]['status'] == Ticket::CLOSED) {
return $out;
}
$itemtype = getItemTypeForTable($table);
$item = new $itemtype();
$item->getFromDB($data['id']);
$percentage = 0;
$totaltime = 0;
$currenttime = 0;
if ($item->isField('slas_id') && $item->fields['slas_id'] != 0) {
// Have SLA
$sla = new SLA();
$sla->getFromDB($item->fields['slas_id']);
$currenttime = $sla->getActiveTimeBetween($item->fields['date'], date('Y-m-d H:i:s'));
$totaltime = $sla->getActiveTimeBetween($item->fields['date'], $data[$num][0]['name']);
} else {
$calendars_id = Entity::getUsedConfig('calendars_id', $item->fields['entities_id']);
if ($calendars_id != 0) {
// Ticket entity have calendar
$calendar = new Calendar();
$calendar->getFromDB($calendars_id);
$currenttime = $calendar->getActiveTimeBetween($item->fields['date'], date('Y-m-d H:i:s'));
$totaltime = $calendar->getActiveTimeBetween($item->fields['date'], $data[$num][0]['name']);
} else {
// No calendar
$currenttime = strtotime(date('Y-m-d H:i:s')) - strtotime($item->fields['date']);
$totaltime = strtotime($data[$num][0]['name']) - strtotime($item->fields['date']);
}
}
if ($totaltime != 0) {
$percentage = round(100 * $currenttime / $totaltime);
} else {
// Total time is null : no active time
$percentage = 100;
}
if ($percentage > 100) {
$percentage = 100;
}
$percentage_text = $percentage;
if ($_SESSION['glpiduedatewarning_unit'] == '%') {
$less_warn_limit = $_SESSION['glpiduedatewarning_less'];
$less_warn = 100 - $percentage;
} else {
if ($_SESSION['glpiduedatewarning_unit'] == 'hour') {
$less_warn_limit = $_SESSION['glpiduedatewarning_less'] * HOUR_TIMESTAMP;
$less_warn = $totaltime - $currenttime;
示例3: getPeriodTime
static function getPeriodTime(CommonGLPI $ticket, $start, $end)
{
$totaltime = 0;
if ($ticket->fields['slas_id'] != 0) {
// Have SLA
$sla = new SLA();
$sla->getFromDB($ticket->fields['slas_id']);
$totaltime = $sla->getActiveTimeBetween($start, $end);
} else {
$calendars_id = Entity::getUsedConfig('calendars_id', $ticket->fields['entities_id']);
if ($calendars_id != 0) {
// Ticket entity have calendar
$calendar = new Calendar();
$calendar->getFromDB($calendars_id);
$totaltime = $calendar->getActiveTimeBetween($start, $end);
} else {
// No calendar
$totaltime = strtotime($end) - strtotime($start);
}
}
return $totaltime;
}
示例4: unset
//.........这里部分代码省略.........
unset($this->updates[$key]);
unset($this->oldvalues['date']);
}
if (($key = array_search('closedate', $this->updates)) !== false) {
unset($this->updates[$key]);
unset($this->oldvalues['closedate']);
}
}
}
/* if (in_array("users_id",$this->updates)) {
$user = new User;
$user->getFromDB($this->input["users_id"]);
if (!empty($user->fields["email"])) {
$this->updates[] = "user_email";
$this->fields["user_email"] = $user->fields["email"];
}
}*/
if (($key = array_search('status', $this->updates)) !== false && $this->oldvalues['status'] == $this->fields['status']) {
unset($this->updates[$key]);
unset($this->oldvalues['status']);
}
$sla = new SLA();
// Set begin waiting date if needed
if (($key = array_search('status', $this->updates)) !== false && ($this->fields['status'] == 'waiting' || $this->fields['status'] == 'solved')) {
$this->updates[] = "begin_waiting_date";
$this->fields["begin_waiting_date"] = $_SESSION["glpi_currenttime"];
if ($this->fields['slas_id'] > 0) {
$sla->deleteLevelsToDo($this);
}
}
// Manage come back to waiting state
if ($key = array_search('status', $this->updates) !== false && ($this->oldvalues['status'] == 'waiting' || $this->oldvalues['status'] == 'solved' && $this->fields['status'] != 'closed')) {
// Compute ticket waiting time use calendar if exists
$calendars_id = EntityData::getUsedConfig('calendars_id', $this->fields['entities_id']);
$calendar = new Calendar();
$delay_time = 0;
// Compute ticket waiting time use calendar if exists
// Using calendar
if ($calendars_id > 0 && $calendar->getFromDB($calendars_id)) {
$delay_time = $calendar->getActiveTimeBetween($this->fields['begin_waiting_date'], $_SESSION["glpi_currenttime"]);
} else {
// Not calendar defined
$delay_time = strtotime($_SESSION["glpi_currenttime"]) - strtotime($this->fields['begin_waiting_date']);
}
// SLA case : compute sla duration
if ($this->fields['slas_id'] > 0) {
if ($sla->getFromDB($this->fields['slas_id'])) {
$delay_time_sla = $sla->getActiveTimeBetween($this->fields['begin_waiting_date'], $_SESSION["glpi_currenttime"]);
$this->updates[] = "sla_waiting_duration";
$this->fields["sla_waiting_duration"] += $delay_time_sla;
}
// Compute new due date
$this->updates[] = "due_date";
$this->fields['due_date'] = $sla->computeDueDate($this->fields['date'], $this->fields["sla_waiting_duration"]);
// Add current level to do
$sla->addLevelToDo($this);
} else {
// Using calendar
if ($calendars_id > 0 && $calendar->getFromDB($calendars_id)) {
if ($this->fields['due_date'] > 0) {
// compute new due date using calendar
$this->updates[] = "due_date";
$this->fields['due_date'] = $calendar->computeEndDate($this->fields['due_date'], $delay_time);
}
} else {
// Not calendar defined
if ($this->fields['due_date'] > 0) {
// compute new due date : no calendar so add computed delay_time
$this->updates[] = "due_date";
$this->fields['due_date'] = date('Y-m-d H:i:s', $delay_time + strtotime($this->fields['due_date']));
}
}
}
$this->updates[] = "ticket_waiting_duration";
$this->fields["ticket_waiting_duration"] += $delay_time;
// Reset begin_waiting_date
$this->updates[] = "begin_waiting_date";
$this->fields["begin_waiting_date"] = 'NULL';
}
// solve_delay_stat : use delay between opendate and solvedate
if (in_array("solvedate", $this->updates)) {
$this->updates[] = "solve_delay_stat";
$this->fields['solve_delay_stat'] = $this->computeSolveDelayStat();
}
// close_delay_stat : use delay between opendate and closedate
if (in_array("closedate", $this->updates)) {
$this->updates[] = "close_delay_stat";
$this->fields['close_delay_stat'] = $this->computeCloseDelayStat();
}
// takeintoaccount :
// - update done by someone who have update right / see also updatedatemod used by ticketfollowup updates
if ($this->canUpdateItem() && $this->fields['takeintoaccount_delay_stat'] == 0) {
$this->updates[] = "takeintoaccount_delay_stat";
$this->fields['takeintoaccount_delay_stat'] = $this->computeTakeIntoAccountDelayStat();
}
// Do not take into account date_mod if no update is done
if (count($this->updates) == 1 && ($key = array_search('date_mod', $this->updates)) !== false) {
unset($this->updates[$key]);
}
}
示例5: giveItem
//.........这里部分代码省略.........
}
}
$options['reset'] = 'reset';
$out = "<a id='ticket{$itemtype}" . $data['id'] . "' ";
$out .= "href=\"" . $CFG_GLPI["root_doc"] . "/front/ticket.php?" . Toolbox::append_params($options, '&') . "\">";
$out .= $data[$NAME . $num] . "</a>";
} else {
$out = $data[$NAME . $num];
}
return $out;
case "glpi_tickets.due_date":
// Due date + progress
if ($ID == 151) {
$out = Html::convDate($data[$NAME . $num]);
// No due date in waiting status
if ($data[$NAME . $num . '_2'] == CommonITILObject::WAITING) {
return '';
}
if (empty($data[$NAME . $num])) {
return '';
}
if ($data[$NAME . $num . '_2'] == Ticket::SOLVED || $data[$NAME . $num . '_2'] == Ticket::CLOSED) {
return $data[$NAME . $num];
}
$ticket = new Ticket();
$ticket->getFromDB($data['ITEM_0']);
$percentage = 0;
$totaltime = 0;
$currenttime = 0;
if ($ticket->fields['slas_id'] != 0) {
// Have SLA
$sla = new SLA();
$sla->getFromDB($ticket->fields['slas_id']);
$currenttime = $sla->getActiveTimeBetween($ticket->fields['date'], date('Y-m-d H:i:s'));
$totaltime = $sla->getActiveTimeBetween($ticket->fields['date'], $data[$NAME . $num]);
} else {
$calendars_id = Entity::getUsedConfig('calendars_id', $ticket->fields['entities_id']);
if ($calendars_id != 0) {
// Ticket entity have calendar
$calendar = new Calendar();
$calendar->getFromDB($calendars_id);
$currenttime = $calendar->getActiveTimeBetween($ticket->fields['date'], date('Y-m-d H:i:s'));
$totaltime = $calendar->getActiveTimeBetween($ticket->fields['date'], $data[$NAME . $num]);
} else {
// No calendar
$currenttime = strtotime(date('Y-m-d H:i:s')) - strtotime($ticket->fields['date']);
$totaltime = strtotime($data[$NAME . $num]) - strtotime($ticket->fields['date']);
}
}
if ($totaltime != 0) {
$percentage = round(100 * $currenttime / $totaltime);
} else {
// Total time is null : no active time
$percentage = 100;
}
if ($percentage > 100) {
$percentage = 100;
}
$percentage_text = $percentage;
if ($_SESSION['glpiduedatewarning_unit'] == '%') {
$less_warn_limit = $_SESSION['glpiduedatewarning_less'];
$less_warn = 100 - $percentage;
} else {
if ($_SESSION['glpiduedatewarning_unit'] == 'hours') {
$less_warn_limit = $_SESSION['glpiduedatewarning_less'] * HOUR_TIMESTAMP;
$less_warn = $totaltime - $currenttime;