function computeExecutionDate($start_date, $slalevels_id, $additional_delay = 0)
{
if (isset($this->fields['id'])) {
$slalevel = new SlaLevel();
if ($slalevel->getFromDB($slalevels_id)) {
// sla level exists
if ($slalevel->fields['slts_id'] == $this->fields['id']) {
// correct slt level
$work_in_days = $this->fields['definition_time'] == 'day';
$delay = $this->getSLTTime();
// Based on a calendar
if ($this->fields['calendars_id'] > 0) {
$cal = new Calendar();
if ($cal->getFromDB($this->fields['calendars_id'])) {
return $cal->computeEndDate($start_date, $delay, $slalevel->fields['execution_time'] + $additional_delay, $work_in_days);
}
}
// No calendar defined or invalid calendar
$delay += $additional_delay + $slalevel->fields['execution_time'];
$starttime = strtotime($start_date);
$endtime = $starttime + $delay;
return date('Y-m-d H:i:s', $endtime);
}
}
}
return NULL;
}