public static function triggerEvent($module, $eventName, $data = null)
{
$module = (string) $module;
$eventName = (string) $eventName;
// create log instance
$log = self::getContainer()->get('logger');
$log->info('Event (' . $module . '/' . $eventName . ') triggered.');
// get all items that subscribe to this event
$subscriptions = (array) self::getContainer()->get('database')->getRecords('SELECT i.module, i.callback
FROM hooks_subscriptions AS i
WHERE i.event_module = ? AND i.event_name = ?', array($module, $eventName));
// any subscriptions?
if (!empty($subscriptions)) {
// init var
$queuedItems = array();
// loop items
foreach ($subscriptions as $subscription) {
// build record
$item['module'] = $subscription['module'];
$item['callback'] = $subscription['callback'];
$item['data'] = serialize($data);
$item['status'] = 'queued';
$item['created_on'] = self::getUTCDate();
// add
$queuedItems[] = self::getContainer()->get('database')->insert('hooks_queue', $item);
$log->info('Callback (' . $subscription['callback'] . ') is subscribed to event (' . $module . '/' . $eventName . ').');
}
// start processing
self::startProcessingHooks();
}
}