mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-22 01:58:47 +02:00
Check SLA for tickets, integrated into the internal CRON architecture (and moved into the Tickets module)
SVN:trunk[1136]
This commit is contained in:
@@ -610,4 +610,61 @@ abstract class ResponseTicket extends Ticket
|
||||
*/
|
||||
}
|
||||
|
||||
class ProcessSLAResponseTicket implements iBackgroundProcess
|
||||
{
|
||||
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 ($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 ($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 ($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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
<?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
|
||||
|
||||
/**
|
||||
* Export data specified by an OQL
|
||||
*
|
||||
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
||||
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
||||
* @author Denis Flaven <denis.flaven@combodo.com>
|
||||
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
require_once('../approot.inc.php');
|
||||
require_once(APPROOT.'/application/startup.inc.php');
|
||||
|
||||
require_once(APPROOT.'/application/loginwebpage.class.inc.php');
|
||||
LoginWebPage::DoLogin(); // Check user rights and prompt if needed
|
||||
|
||||
$oMyChange = new CMDBChange();
|
||||
$oMyChange->Set("date", time());
|
||||
$oMyChange->Set("userinfo", "Automatic updates");
|
||||
$iChangeId = $oMyChange->DBInsertNoReload();
|
||||
|
||||
$oSet = new DBObjectSet(DBObjectSearch::FromOQL('SELECT ResponseTicket WHERE status = \'new\' AND tto_escalation_deadline <= NOW()'));
|
||||
while ($oToEscalate = $oSet->Fetch())
|
||||
{
|
||||
$oToEscalate->ApplyStimulus('ev_timeout');
|
||||
//$oToEscalate->Set('tto_escalation_deadline', null);
|
||||
$oToEscalate->DBUpdateTracked($oMyChange, true);
|
||||
echo "<p>ticket ".$oToEscalate->Get('ref')." reached TTO ESCALATION deadline</p>\n";
|
||||
}
|
||||
|
||||
$oSet = new DBObjectSet(DBObjectSearch::FromOQL('SELECT ResponseTicket WHERE status = \'assigned\' AND ttr_escalation_deadline <= NOW()'));
|
||||
while ($oToEscalate = $oSet->Fetch())
|
||||
{
|
||||
$oToEscalate->ApplyStimulus('ev_timeout');
|
||||
//$oToEscalate->Set('ttr_escalation_deadline', null);
|
||||
$oToEscalate->DBUpdateTracked($oMyChange, true);
|
||||
echo "<p>ticket ".$oToEscalate->Get('ref')." reached TTR ESCALATION deadline</p>\n";
|
||||
}
|
||||
|
||||
$oSet = new DBObjectSet(DBObjectSearch::FromOQL('SELECT ResponseTicket WHERE status = \'resolved\' AND closure_deadline <= NOW()'));
|
||||
while ($oToEscalate = $oSet->Fetch())
|
||||
{
|
||||
$oToEscalate->ApplyStimulus('ev_close');
|
||||
//$oToEscalate->Set('closure_deadline', null);
|
||||
$oToEscalate->DBUpdateTracked($oMyChange, true);
|
||||
echo "<p>ticket ".$oToEscalate->Get('ref')." reached closure deadline</p>\n";
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user