コード例 #1
0
ファイル: EventTask.php プロジェクト: kingsj/core
 /**
  * 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;
 }
コード例 #2
0
ファイル: EventListener.php プロジェクト: kingsj/core
 /**
  * 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);
         }
     }
 }
コード例 #3
0
ファイル: EventTask.php プロジェクト: kingsj/core
 /**
  * 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;
 }
コード例 #4
0
ファイル: AMQPListener.php プロジェクト: kirkbauer2/kirkxc
 /**
  * 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());
     }
 }
コード例 #5
0
ファイル: AMQPService.php プロジェクト: kingsj/core
 /**
  * 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);
             }
         }
     }
 }
コード例 #6
0
ファイル: Importer.php プロジェクト: kirkbauer2/kirkxc
 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;
 }
コード例 #7
0
ファイル: EventListener.php プロジェクト: kingsj/core
 /**
  * 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'));
 }
コード例 #8
0
ファイル: EventListener.php プロジェクト: kirkbauer2/kirkxc
 /**
  * Get listeners
  *
  * @return array
  */
 protected function getListeners()
 {
     return parent::getListeners() + array('sales' => array('\\XLite\\Module\\CDev\\Bestsellers\\Core\\EventListener\\Sales'));
 }