Helpdesk da PluGzOne, baseado no osTicket
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

82 lines
2.7 KiB

<?php
class QueueSortCreator extends MigrationTask {
var $description = "Load customziable ticket queues";
function run($time) {
$i18n = new Internationalization('en_US');
$columns = $i18n->getTemplate('queue_column.yaml')->getData();
foreach ($columns as $C) {
QueueColumn::__create($C);
}
// Save old records
$old = db_assoc_array(db_query('SELECT * FROM '.QUEUE_TABLE));
// Truncate Queue table - make room for the new queues starting at ID 1
db_query('TRUNCATE TABLE '.QUEUE_TABLE);
$queues = $i18n->getTemplate('queue.yaml')->getData();
foreach ($queues as $C) {
CustomQueue::__create($C);
}
// Re-insert old saved searches
foreach ($old ?: array() as $row) {
// Only save entries with "valid" criteria
if (!$row['title']
|| !($config = JsonDataParser::parse($row['config'],
true)))
continue;
$row['root'] = 'T'; // Ticket Queue
$row['flags'] = 16; // Saved Search
if (($criteria = self::isolateCriteria($config)))
$row['config'] = JsonDataEncoder::encode(array(
'criteria' => $criteria,
'conditions' => array()));
CustomQueue::__create(array_intersect_key($row, array_flip(
array('staff_id', 'title', 'config', 'flags',
'root', 'created', 'updated'))));
}
$columns = $i18n->getTemplate('queue_sort.yaml')->getData();
foreach ($columns as $C) {
QueueSort::__create($C);
}
$open = CustomQueue::lookup(1);
foreach (QueueSort::forQueue($open) as $qs) {
$open->sorts->add($qs);
}
$open->sorts->saveAll();
foreach ($open->getChildren() as $q) {
$q->flags |= CustomQueue::FLAG_INHERIT_SORTING;
$q->psave();
}
// Set default queue to 'open'
global $cfg;
if ($cfg)
$cfg->set('default_ticket_queue', 1);
}
static function isolateCriteria($config) {
if (is_string($config))
$config = JsonDataParser::parse($config, true);
foreach ($config as $k => $v) {
if (substr($k, -7) != '+search')
continue;
// Fix up some entries
list($name,) = explode('+', $k, 2);
if (!isset($config["{$name}+method"]))
$config["{$name}+method"] = isset($config["{$name}+includes"])
? 'includes' : 'set';
}
return CustomQueue::isolateCriteria($config);
}
}
return 'QueueSortCreator';