/**
  * Execute job by calling specific class::method
  *
  * @param int $scheduledTime
  * @param int $currentTime
  * @param string[] $jobConfig
  * @param Schedule $schedule
  * @param string $groupId
  * @return void
  * @throws \Exception
  */
 protected function _runJob($scheduledTime, $currentTime, $jobConfig, $schedule, $groupId)
 {
     $scheduleLifetime = (int) $this->_scopeConfig->getValue('system/cron/' . $groupId . '/' . self::XML_PATH_SCHEDULE_LIFETIME, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
     $scheduleLifetime = $scheduleLifetime * self::SECONDS_IN_MINUTE;
     if ($scheduledTime < $currentTime - $scheduleLifetime) {
         $schedule->setStatus(Schedule::STATUS_MISSED);
         throw new \Exception('Too late for the schedule');
     }
     if (!isset($jobConfig['instance'], $jobConfig['method'])) {
         $schedule->setStatus(Schedule::STATUS_ERROR);
         throw new \Exception('No callbacks found');
     }
     $model = $this->_objectManager->create($jobConfig['instance']);
     $callback = [$model, $jobConfig['method']];
     if (!is_callable($callback)) {
         $schedule->setStatus(Schedule::STATUS_ERROR);
         throw new \Exception(sprintf('Invalid callback: %s::%s can\'t be called', $jobConfig['instance'], $jobConfig['method']));
     }
     $schedule->setExecutedAt(strftime('%Y-%m-%d %H:%M:%S', $this->timezone->scopeTimeStamp()))->save();
     try {
         call_user_func_array($callback, [$schedule]);
     } catch (\Exception $e) {
         $schedule->setStatus(Schedule::STATUS_ERROR);
         throw $e;
     }
     $schedule->setStatus(Schedule::STATUS_SUCCESS)->setFinishedAt(strftime('%Y-%m-%d %H:%M:%S', $this->timezone->scopeTimeStamp()));
 }
 /**
  * Generate Code
  *
  * @param string $generationDir
  * @param array $fileExcludePatterns
  * @param InputInterface $input
  * @return void
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 public function generateCode($generationDir, $fileExcludePatterns, $input)
 {
     // 1.1 Code scan
     $filePatterns = ['php' => '/.*\\.php$/', 'di' => '/\\/etc\\/([a-zA-Z_]*\\/di|di)\\.xml$/'];
     $directoryScanner = new Scanner\DirectoryScanner();
     foreach ($this->componentRegistrar->getPaths(ComponentRegistrar::MODULE) as $codeScanDir) {
         $this->files = array_merge_recursive($this->files, $directoryScanner->scan($codeScanDir, $filePatterns, $fileExcludePatterns));
     }
     $this->files['di'][] = $this->directoryList->getPath(\Magento\Framework\App\Filesystem\DirectoryList::CONFIG) . '/di.xml';
     $this->files['additional'] = [$input->getOption(self::INPUT_KEY_EXTRA_CLASSES_FILE)];
     $repositoryScanner = new Scanner\RepositoryScanner();
     $repositories = $repositoryScanner->collectEntities($this->files['di']);
     $scanner = new Scanner\CompositeScanner();
     $scanner->addChild(new Scanner\PhpScanner($this->log), 'php');
     $scanner->addChild(new Scanner\XmlScanner($this->log), 'di');
     $scanner->addChild(new Scanner\ArrayScanner(), 'additional');
     $this->entities = $scanner->collectEntities($this->files);
     $interceptorScanner = new Scanner\XmlInterceptorScanner();
     $this->entities['interceptors'] = $interceptorScanner->collectEntities($this->files['di']);
     // 1.2 Generation of Factory and Additional Classes
     $generatorIo = $this->objectManager->create('Magento\\Framework\\Code\\Generator\\Io', ['generationDirectory' => $generationDir]);
     $this->generator = $this->objectManager->create('Magento\\Framework\\Code\\Generator', ['ioObject' => $generatorIo]);
     /** Initialize object manager for code generation based on configs */
     $this->generator->setObjectManager($this->objectManager);
     $generatorAutoloader = new \Magento\Framework\Code\Generator\Autoloader($this->generator);
     spl_autoload_register([$generatorAutoloader, 'load']);
     foreach ($repositories as $entityName) {
         switch ($this->generator->generateClass($entityName)) {
             case CodeGenerator::GENERATION_SUCCESS:
                 $this->log->add(Log::GENERATION_SUCCESS, $entityName);
                 break;
             case CodeGenerator::GENERATION_ERROR:
                 $this->log->add(Log::GENERATION_ERROR, $entityName);
                 break;
             case CodeGenerator::GENERATION_SKIP:
             default:
                 //no log
                 break;
         }
     }
     foreach (['php', 'additional'] as $type) {
         sort($this->entities[$type]);
         foreach ($this->entities[$type] as $entityName) {
             switch ($this->generator->generateClass($entityName)) {
                 case CodeGenerator::GENERATION_SUCCESS:
                     $this->log->add(Log::GENERATION_SUCCESS, $entityName);
                     break;
                 case CodeGenerator::GENERATION_ERROR:
                     $this->log->add(Log::GENERATION_ERROR, $entityName);
                     break;
                 case CodeGenerator::GENERATION_SKIP:
                 default:
                     //no log
                     break;
             }
         }
     }
 }
 /**
  * @param  string $type
  * @param  array  $arguments
  *
  * @return mixed
  */
 protected function createMagentoObject($type, array $arguments = [])
 {
     return $this->objectManager->create($type, $arguments);
 }
Esempio n. 4
0
 public function execute($observer)
 {
     $model = $this->_objectManager->create('Celebros\\Celexport\\Model\\Exporter');
     $model->export_celebros($this->_objectManager, false);
     return $this;
 }