- Edited
Hi. I have a department called "Purchases" and one called "Finance". What I am trying to achieve is:
I need a plugin that will automatically transfer a ticket "Purchasees" to the "Finance" department when an agent from "Purchases" closes the ticket. This is what i currently have, but it's not working. It seems to be properly detecting a ticket closure (ticket.close signal). But nothing happens. Can anyone help me out?
<?php
require_once(INCLUDE_DIR . 'class.signal.php');
require_once(INCLUDE_DIR . 'class.plugin.php');
require_once(INCLUDE_DIR . 'class.ticket.php');
require_once(INCLUDE_DIR . 'class.osticket.php');
require_once(INCLUDE_DIR . 'class.config.php');
require_once(INCLUDE_DIR . 'class.format.php');
class PurchaseCloseTransferPlugin extends Plugin
{
var $config_class = 'PurchaseCloseTransferPluginConfig';
function bootstrap()
{
Signal::connect('ticket.close.before', array($this, 'onTicketClose'));
error_log("Detected! a ticket closure");
}
function onTicketClose($ticket)
{
if ($ticket->dept->name == 'Purchases') {
$transfer_dept = $this->getConfig()->get('transfer_department');
$dept = Department::lookupByName($transfer_dept);
if ($dept) {
$ticket->transfer($dept->getId());
} else {
$log = Ticket::log(
'PurchaseCloseTransferPlugin',
sprintf('Transfer department "%s" not found', $transfer_dept)
);
}
}
}
}
class PurchaseCloseTransferPluginConfig extends PluginConfig
{
function getOptions()
{
return array(
'transfer_department' => new TextboxField(array(
'label' => 'Transfer To Department',
'default' => 'Finance',
'configuration' => array('size' => 20, 'length' => 100),
)),
);
}
}