/** * Run task * * @return void */ protected function doActionRun() { $event = \XLite\Core\Request::getInstance()->event; $result = false; $errors = array(); $task = \XLite\Core\Database::getRepo('XLite\\Model\\EventTask')->findOneBy(array('name' => $event)); if ($task) { if (\XLite\Core\EventListener::getInstance()->handle($task->getName(), $task->getArguments())) { \XLite\Core\Database::getEM()->remove($task); $result = true; } $errors = \XLite\Core\EventListener::getInstance()->getErrors(); } else { \XLite\Core\Database::getRepo('XLite\\Model\\TmpVar')->removeEventState($event); } \XLite\Core\Database::getEM()->flush(); $state = \XLite\Core\Database::getRepo('XLite\\Model\\TmpVar')->getEventState($event); $this->setPureAction(true); if ($result && $state) { \XLite\Core\Event::eventTaskRun(array('percent' => \XLite\Core\Database::getRepo('XLite\\Model\\TmpVar')->getEventStatePercent($event), 'error' => !empty($errors))); } else { $result = false; } if ($errors) { foreach ($errors as $message) { \XLite\Core\TopMessage::addError($message); } $result = false; } $this->valid = $result; }
/** * Run step * * @return void */ protected function runStep() { $listener = \XLite\Core\EventListener::getInstance(); foreach (\XLite\Core\Database::getRepo('XLite\\Model\\EventTask')->findQuery() as $task) { if ($listener->handle($task->getName(), $task->getArguments())) { \XLite\Core\Database::getEM()->remove($task); } } }
/** * Call events * * @param string $name Event name * @param array $args Event arguments OPTIONAL * * @return boolean */ public static function __callStatic($name, array $args = array()) { $result = false; if (in_array($name, \XLite\Core\EventListener::getInstance()->getEvents())) { $args = isset($args[0]) && is_array($args[0]) ? $args[0] : array(); $driver = static::getInstance()->getDriver(); $result = $driver ? $driver->fire($name, $args) : false; } return $result; }
/** * Preprocessor for no-action * * @return void */ protected function doNoAction() { $driver = $this->getDriver(); if ($driver) { foreach (\XLite\Core\EventListener::getInstance()->getEvents() as $name) { $object = $this; $listener = function (\AMQPMessage $message) use($object, $name) { return $object->handleMessage($message, $name); }; $driver->consume($name, $listener); } do { $this->wait(); } while ($this->checkCycle()); } }
/** * Remove all queues * * @return void */ protected function doActionRemoveQueues() { if (\XLite\Core\EventDriver\AMQP::isValid()) { $driver = new \XLite\Core\EventDriver\AMQP(); foreach (\XLite\Core\EventListener::getInstance()->getEvents() as $name) { $this->printContent($name . ' ... '); $result = false; try { $driver->getChannel()->queue_delete($name); $result = true; } catch (\Exception $e) { $driver->getChannel(true); } if ($result) { $this->printContent('done' . PHP_EOL); } else { $this->printContent('failed' . PHP_EOL); } } } }
public static function runHeadless() { $event = static::getEventName(); $result = false; $errors = array(); do { call_user_func('\\XLite\\Core\\EventListener\\Import::resetInstance'); if (\XLite\Core\EventListener::getInstance()->handle($event, array())) { $result = true; } $state = \XLite\Core\Database::getRepo('XLite\\Model\\TmpVar')->getEventState($event); if ($state['state'] == \XLite\Core\EventTask::STATE_FINISHED || $state['state'] == \XLite\Core\EventTask::STATE_ABORTED) { $result = false; } } while ($result); $errors = \XLite\Core\EventListener::getInstance()->getErrors(); if ($errors) { $result = false; } return $result; }
/** * Get listeners * * @return array */ protected function getListeners() { return parent::getListeners() + array('migrateToS3' => array('\\XLite\\Module\\CDev\\AmazonS3Images\\Core\\EventListener\\MigrateToS3'), 'migrateFromS3' => array('\\XLite\\Module\\CDev\\AmazonS3Images\\Core\\EventListener\\MigrateFromS3')); }
/** * Get listeners * * @return array */ protected function getListeners() { return parent::getListeners() + array('sales' => array('\\XLite\\Module\\CDev\\Bestsellers\\Core\\EventListener\\Sales')); }