本文整理汇总了PHP中SLA::computeDueDate方法的典型用法代码示例。如果您正苦于以下问题:PHP SLA::computeDueDate方法的具体用法?PHP SLA::computeDueDate怎么用?PHP SLA::computeDueDate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SLA
的用法示例。
在下文中一共展示了SLA::computeDueDate方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getDatasToAddSLA
/**
* Get Datas to be added for SLA add
*
* @param $slas_id SLA id
* @param $entities_id entity ID of the ticket
* @param $date begin date of the ticket
*
* @return array of datas to add in ticket
**/
function getDatasToAddSLA($slas_id, $entities_id, $date)
{
$calendars_id = Entity::getUsedConfig('calendars_id', $entities_id);
$data = array();
$sla = new SLA();
if ($sla->getFromDB($slas_id)) {
$sla->setTicketCalendar($calendars_id);
// Get first SLA Level
$data["slalevels_id"] = SlaLevel::getFirstSlaLevel($slas_id);
// Compute due_date
$data['due_date'] = $sla->computeDueDate($date);
$data['sla_waiting_duration'] = 0;
} else {
$data["slalevels_id"] = 0;
$data["slas_id"] = 0;
$data['sla_waiting_duration'] = 0;
}
return $data;
}
示例2: 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]);
}
}
示例3: prepareInputForAdd
//.........这里部分代码省略.........
}
if (!$input['_groups_id_assign'] && $cat->isField('groups_id')) {
$input['_groups_id_assign'] = $cat->getField('groups_id');
}
}
// Auto assign tech from item
if ($input["_users_id_assign"] == 0 && $item != NULL) {
if ($item->isField('users_id_tech')) {
$input["_users_id_assign"] = $item->getField('users_id_tech');
if ($input["_users_id_assign"] > 0) {
$input["status"] = "assign";
}
}
}
break;
}
// Process Business Rules
$rules = new RuleTicketCollection($input['entities_id']);
// Set unset variables with are needed
$user = new User();
if (isset($input["_users_id_requester"]) && $user->getFromDB($input["_users_id_requester"])) {
$input['users_locations'] = $user->fields['locations_id'];
}
$input = $rules->processAllRules($input, $input, array('recursive' => true));
// if (isset($input["use_email_notification"])
// && $input["use_email_notification"]
// && empty($input["user_email"])) {
//
// if ($user->getFromDB($input["users_id"])) {
// $input["user_email"] = $user->fields["email"];
// }
// }
if ((isset($input["_users_id_assign"]) && $input["_users_id_assign"] > 0 || isset($input["_groups_id_assign"]) && $input["_groups_id_assign"] > 0 || isset($input["suppliers_id_assign"]) && $input["suppliers_id_assign"] > 0) && $input["status"] == "new") {
$input["status"] = "assign";
}
if (isset($input["hour"]) && isset($input["minute"])) {
$input["actiontime"] = $input["hour"] * HOUR_TIMESTAMP + $input["minute"] * MINUTE_TIMESTAMP;
$input["_hour"] = $input["hour"];
$input["_minute"] = $input["minute"];
unset($input["hour"]);
unset($input["minute"]);
}
if (isset($input["status"]) && $input["status"] == "solved") {
if (isset($input["date"])) {
$input["solvedate"] = $input["date"];
} else {
$input["solvedate"] = $_SESSION["glpi_currenttime"];
}
}
if (isset($input["status"]) && $input["status"] == "closed") {
if (isset($input["date"])) {
$input["closedate"] = $input["date"];
} else {
$input["closedate"] = $_SESSION["glpi_currenttime"];
}
$input['solvedate'] = $input["closedate"];
}
// Set begin waiting time if status is waiting
if (isset($input["status"]) && $input["status"] == "waiting") {
$input['begin_waiting_date'] = $input['date'];
}
// No name set name
if (empty($input["name"])) {
$input["name"] = preg_replace('/\\r\\n/', ' ', $input['content']);
$input["name"] = preg_replace('/\\n/', ' ', $input['name']);
$input["name"] = utf8_substr($input['name'], 0, 70);
}
//// Manage SLA assignment
// due date defined : no SLA
if (isset($input["due_date"]) && $input['due_date'] != 'NULL') {
// Valid due date
if ($input['due_date'] > $input['date']) {
if (isset($input["slas_id"])) {
unset($input["slas_id"]);
}
} else {
// Unset due date
unset($input["due_date"]);
}
}
if (isset($input["slas_id"]) && $input["slas_id"] > 0) {
$sla = new SLA();
if ($sla->getFromDB($input["slas_id"])) {
// Get first SLA Level
$input["slalevels_id"] = SlaLevel::getFirstSlaLevel($input["slas_id"]);
// Compute due_date
$input['due_date'] = $sla->computeDueDate($input['date']);
$input['sla_waiting_duration'] = 0;
} else {
$input["slalevels_id"] = 0;
$input["slas_id"] = 0;
$input['sla_waiting_duration'] = 0;
}
}
// auto set type if not set
if (!isset($input["type"])) {
$input['type'] = EntityData::getUsedConfig('tickettype', $input['entities_id']);
}
return $input;
}