Пример #1
0
 /**
  * Retrieve synchronize process state and it's parameters in json format
  *
  * @return \Magento\Framework\Controller\Result\JSON
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  */
 public function execute()
 {
     $result = [];
     $flag = $this->_getSyncFlag();
     if ($flag) {
         $state = $flag->getState();
         switch ($state) {
             case \Magento\Core\Model\File\Storage\Flag::STATE_INACTIVE:
                 $flagData = $flag->getFlagData();
                 if (is_array($flagData)) {
                     if (isset($flagData['destination']) && !empty($flagData['destination'])) {
                         $result['destination'] = $flagData['destination'];
                     }
                 }
                 $state = \Magento\Core\Model\File\Storage\Flag::STATE_INACTIVE;
                 break;
             case \Magento\Core\Model\File\Storage\Flag::STATE_RUNNING:
                 if (!$flag->getLastUpdate() || time() <= strtotime($flag->getLastUpdate()) + \Magento\Core\Model\File\Storage\Flag::FLAG_TTL) {
                     $flagData = $flag->getFlagData();
                     if (is_array($flagData) && isset($flagData['source']) && !empty($flagData['source']) && isset($flagData['destination']) && !empty($flagData['destination'])) {
                         $result['message'] = __('Synchronizing %1 to %2', $flagData['source'], $flagData['destination']);
                     } else {
                         $result['message'] = __('Synchronizing...');
                     }
                     break;
                 } else {
                     $flagData = $flag->getFlagData();
                     if (is_array($flagData) && !(isset($flagData['timeout_reached']) && $flagData['timeout_reached'])) {
                         $this->_objectManager->get('Psr\\Log\\LoggerInterface')->critical(new \Magento\Framework\Exception(__('The timeout limit for response from synchronize process was reached.')));
                         $state = \Magento\Core\Model\File\Storage\Flag::STATE_FINISHED;
                         $flagData['has_errors'] = true;
                         $flagData['timeout_reached'] = true;
                         $flag->setState($state)->setFlagData($flagData)->save();
                     }
                 }
                 // fall-through intentional
                 // fall-through intentional
             // fall-through intentional
             // fall-through intentional
             case \Magento\Core\Model\File\Storage\Flag::STATE_FINISHED:
             case \Magento\Core\Model\File\Storage\Flag::STATE_NOTIFIED:
                 $flagData = $flag->getFlagData();
                 if (!isset($flagData['has_errors'])) {
                     $flagData['has_errors'] = false;
                 }
                 $result['has_errors'] = $flagData['has_errors'];
                 break;
             default:
                 $state = \Magento\Core\Model\File\Storage\Flag::STATE_INACTIVE;
                 break;
         }
     } else {
         $state = \Magento\Core\Model\File\Storage\Flag::STATE_INACTIVE;
     }
     $result['state'] = $state;
     /** @var \Magento\Framework\Controller\Result\JSON $resultJson */
     $resultJson = $this->resultJsonFactory->create();
     return $resultJson->setData($result);
 }