12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- // Copyright (C) 2010 Combodo SARL
- //
- // This program is free software; you can redistribute it and/or modify
- // it under the terms of the GNU General Public License as published by
- // the Free Software Foundation; version 3 of the License.
- //
- // This program is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- // GNU General Public License for more details.
- //
- // You should have received a copy of the GNU General Public License
- // along with this program; if not, write to the Free Software
- // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- class ProcessSLAResponseTicket implements iBackgroundProcess
- {
- public function GetPeriodicity()
- {
- return 2; // seconds
- }
- public function Process($iTimeLimit)
- {
- $oMyChange = new CMDBChange();
- $oMyChange->Set("date", time());
- $oMyChange->Set("userinfo", "Automatic updates");
- $iChangeId = $oMyChange->DBInsertNoReload();
- $aReport = array();
- $oSet = new DBObjectSet(DBObjectSearch::FromOQL('SELECT ResponseTicket WHERE status = \'new\' AND tto_escalation_deadline <= NOW()'));
- while ((time() < $iTimeLimit) && $oToEscalate = $oSet->Fetch())
- {
- $oToEscalate->ApplyStimulus('ev_timeout');
- //$oToEscalate->Set('tto_escalation_deadline', null);
- $oToEscalate->DBUpdateTracked($oMyChange, true);
- $aReport['reached TTO ESCALATION deadline'][] = $oToEscalate->Get('ref');
- }
-
- $oSet = new DBObjectSet(DBObjectSearch::FromOQL('SELECT ResponseTicket WHERE status = \'assigned\' AND ttr_escalation_deadline <= NOW()'));
- while ((time() < $iTimeLimit) && $oToEscalate = $oSet->Fetch())
- {
- $oToEscalate->ApplyStimulus('ev_timeout');
- //$oToEscalate->Set('ttr_escalation_deadline', null);
- $oToEscalate->DBUpdateTracked($oMyChange, true);
- $aReport['reached TTR ESCALATION deadline'][] = $oToEscalate->Get('ref');
- }
-
- $oSet = new DBObjectSet(DBObjectSearch::FromOQL('SELECT ResponseTicket WHERE status = \'resolved\' AND closure_deadline <= NOW()'));
- while ((time() < $iTimeLimit) && $oToEscalate = $oSet->Fetch())
- {
- $oToEscalate->ApplyStimulus('ev_close');
- //$oToEscalate->Set('closure_deadline', null);
- $oToEscalate->DBUpdateTracked($oMyChange, true);
- $aReport['reached closure deadline'][] = $oToEscalate->Get('ref');
- }
- $aStringReport = array();
- foreach ($aReport as $sOperation => $aTicketRefs)
- {
- if (count($aTicketRefs) > 0)
- {
- $aStringReport[] = $sOperation.': '.count($aTicketRefs).' {'.implode(', ', $aTicketRefs).'}';
- }
- }
- if (count($aStringReport) == 0)
- {
- return "No ticket to process";
- }
- else
- {
- return "Some tickets reached the limit - ".implode('; ', $aStringReport);
- }
- }
- }
- ?>
|