/**
  * Singleton method
  *
  * @return PlentymarketsExportWizard
  */
 public static function getInstance()
 {
     if (!self::$Instance instanceof self) {
         self::$Instance = new self();
     }
     return self::$Instance;
 }
 /**
  * Announces an export
  */
 public function handleExportAction()
 {
     $params = $this->Request()->getParams();
     if (PlentymarketsExportWizard::getInstance()->isActive()) {
         return $this->View()->assign(array('success' => true, 'message' => 'Aktion kann nicht ausgeführt werden, da der automatische Export aktiv ist'));
     }
     try {
         if ($params['doAction'] == 'reset') {
             PlentymarketsExportController::getInstance()->reset($params['name']);
             PlentymarketsLogger::getInstance()->message('Export:Initial:' . ucfirst($params['name']), 'Resetted');
             $message = 'Export-Status zurückgesetzt';
         } else {
             if ($params['doAction'] == 'erase') {
                 PlentymarketsExportController::getInstance()->erase($params['name']);
                 PlentymarketsLogger::getInstance()->message('Export:Initial:' . ucfirst($params['name']), 'Completely erased');
                 $message = 'Export komplett zurückgesetzt';
             } else {
                 if ($params['doAction'] == 'start') {
                     PlentymarketsExportController::getInstance()->announce($params['name']);
                     PlentymarketsLogger::getInstance()->message('Export:Initial:' . ucfirst($params['name']), 'Announced');
                     $message = 'Export vorgemerkt';
                 }
             }
         }
         $success = true;
     } catch (PlentymarketsExportException $E) {
         $success = false;
         $message = $E->getMessage();
         $method = sprintf('set%sExportStatus', $params['name']);
         PlentymarketsConfig::getInstance()->{$method}('error');
         $method = sprintf('set%sExportLastErrorMessage', $params['name']);
         PlentymarketsConfig::getInstance()->{$method}($message);
         PlentymarketsLogger::getInstance()->error('Export:Initial:' . ucfirst($params['name']), $message, $E->getCode());
     }
     $settings = $this->getExportStatusList();
     $this->View()->assign(array('success' => $success, 'message' => $message, 'data' => $settings[$params['name']]));
 }
 /**
  * Returns the overview for the use in the view
  *
  * @return array
  */
 public function getOverview()
 {
     $wizardIsActive = PlentymarketsExportWizard::getInstance()->isActive();
     $overview = array();
     /** @var PlentymarketsExportStatus $Status */
     foreach ($this->Status as $position => $Status) {
         $overview[$Status->getName()] = array('position' => $position, 'name' => $Status->getName(), 'status' => $Status->getStatus(), 'error' => htmlspecialchars($Status->getError()), 'start' => $Status->getStart(), 'finished' => $Status->getFinished(), 'mayAnnounce' => !$wizardIsActive && $this->mayAnnounce() && $Status->mayAnnounce(), 'mayReset' => !$wizardIsActive && $Status->mayReset(), 'mayErase' => !$wizardIsActive && $Status->mayErase(), 'isOverdue' => $Status->isOverdue(), 'needsDependency' => !$wizardIsActive && $Status->needsDependency() && !$Status->isFinished());
     }
     return $overview;
 }
 /**
  * Runs the export cronjob.
  *
  * @param Shopware_Components_Cron_CronJob $Job
  */
 public function runExport(Shopware_Components_Cron_CronJob $Job)
 {
     try {
         PlentymarketsExportController::getInstance()->export();
     } catch (PlentymarketsExportException $E) {
         PlentymarketsLogger::getInstance()->error('Cron:Export', $E->getMessage(), $E->getCode());
     } catch (Exception $E) {
         PlentymarketsLogger::getInstance()->error('Cron:Export', $E->getMessage(), 1000);
         PlentymarketsLogger::getInstance()->error('Cron:Export', get_class($E), 1000);
         PlentymarketsLogger::getInstance()->error('Cron:Export', $E->getTraceAsString(), 1000);
     }
     $PlentymarketsExportWizard = PlentymarketsExportWizard::getInstance();
     $PlentymarketsExportWizard->conjure();
 }