/** * Update plugin method * * @see Shopware_Components_Plugin_Bootstrap::update() */ public function update($version) { $Logger = PlentymarketsLogger::getInstance(); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, $version . ' → ' . $this->getVersion()); if (version_compare($version, '1.6') !== 1) { try { PlentymarketsExportController::getInstance()->erase('ItemCategory'); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'PlentymarketsExportController::getInstance()->erase(\'ItemCategory\') done'); } catch (Exception $E) { $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'PlentymarketsExportController::getInstance()->erase(\'ItemCategory\') failed'); } try { Shopware()->Db()->exec("\n\t\t\t\t\tALTER TABLE `plenty_mapping_category` CHANGE `shopwareID` `shopwareID` VARCHAR(255) NOT NULL DEFAULT '';\n\t\t\t\t"); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'ALTER TABLE `plenty_mapping_category` done'); } catch (Exception $E) { $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'ALTER TABLE `plenty_mapping_category` failed'); } PyConf()->erase('PlentymarketsVersionTimestamp'); } if (version_compare($version, '1.7') !== 1) { $this->subscribeEvent('Shopware_Models_Order_Order::postPersist', 'onOrderModelPostPersist'); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'Shopware_Models_Order_Order::postPersist'); try { Shopware()->Db()->exec("\n\t\t\t\t\tALTER TABLE `plenty_mapping_referrer` CHANGE `plentyID` `plentyID` FLOAT(11) UNSIGNED NOT NULL;\n\t\t\t\t"); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'ALTER TABLE `plenty_mapping_referrer` done'); } catch (Exception $E) { $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'ALTER TABLE `plenty_mapping_referrer` failed'); } } if (version_compare($version, '1.7.4') !== 1) { PyConf()->setCheckIncomingPayment(1); PyConf()->setCheckOutgoingItems(1); PyConf()->setItemNumberSourceKey('ItemNo'); PyConf()->setItemVariationNumberSourceKey('ColliNo'); PlentymarketsConfig::getInstance()->setImportOrderStatusChangeLastUpdateTimestamp(time()); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'setCheckIncomingPayment(1)'); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'setCheckOutgoingItems(1)'); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'setImportOrderStatusChangeLastUpdateTimestamp(time())'); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, "setItemNumberSourceKey('ItemNo')"); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, "setItemVariationNumberSourceKey('ColliNo')"); try { Shopware()->Db()->exec("\n\t\t\t\t\tCREATE TABLE `plenty_mapping_order_status` (\n\t\t\t\t\t `shopwareID` int(11) NOT NULL,\n\t\t\t\t\t `plentyID` decimal(3,1) unsigned NOT NULL,\n\t\t\t\t\t PRIMARY KEY (`shopwareID`,`plentyID`),\n\t\t\t\t\t UNIQUE KEY `plentyID` (`plentyID`)\n\t\t\t\t\t) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n\t\t\t\t"); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'CREATE TABLE `plenty_mapping_order_status` done'); } catch (Exception $E) { $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'CREATE TABLE `plenty_mapping_order_status` failed'); } try { Shopware()->Db()->exec("\n\t\t\t\t\tCREATE TABLE `plenty_mapping_payment_status` (\n\t\t\t\t\t `shopwareID` int(11) NOT NULL,\n\t\t\t\t\t `plentyID` decimal(3,1) unsigned NOT NULL,\n\t\t\t\t\t PRIMARY KEY (`shopwareID`,`plentyID`),\n\t\t\t\t\t UNIQUE KEY `plentyID` (`plentyID`)\n\t\t\t\t\t) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n\t\t\t\t"); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'CREATE TABLE `plenty_mapping_payment_status` done'); } catch (Exception $E) { $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'CREATE TABLE `plenty_mapping_payment_status` failed'); } } if (version_compare($version, '1.8.1', '<')) { try { $this->subscribeEvent('Shopware_Models_Order_Order::postPersist', 'onOrderModelPostPersist'); } catch (Exception $e) { return array('success' => false, 'message' => $e->getMessage()); } } PlentymarketsConfig::getInstance()->setConnectorVersion($this->getVersion()); return true; }
/** * 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']])); }
/** * Checks whether the initial exports are completely done * * @return boolean */ protected function isExportFinished() { $isExportFinished = PlentymarketsExportController::getInstance()->isComplete(); PlentymarketsConfig::getInstance()->set('IsExportFinished', (int) $isExportFinished); return $isExportFinished; }
/** * Does the actual magic :) */ public function conjure() { // if (!$this->isActive()) { return; } // If there is nothing to do for the wizzard if ($this->StatusController->isBroke()) { // Deactivate $this->deactivate(); // Log PlentymarketsLogger::getInstance()->message('Export:Initial:Wizard', 'Automatically disabled because an entity is broke'); return; } // If there is nothing to do for the wizzard if ($this->StatusController->isFinished()) { // Deactivate $this->deactivate(); // Log PlentymarketsLogger::getInstance()->message('Export:Initial:Wizard', 'Automatically disabled because there is nothing more to do'); return; } // Entity is already waiting (item chunks) if ($this->StatusController->isWaiting()) { // Log PlentymarketsLogger::getInstance()->message('Export:Initial:Wizard', 'An entity is already waiting'); return; } try { // Get the next entity $EntityStatus = $this->StatusController->getNext(); // and announce it PlentymarketsExportController::getInstance()->announce($EntityStatus->getName()); // Log PlentymarketsLogger::getInstance()->message('Export:Initial:Wizard', 'Automatically announced ' . $EntityStatus->getName()); } catch (PlentymarketsExportException $E) { PlentymarketsLogger::getInstance()->error('Export:Initial:Wizard', $E->getMessage(), $E->getCode()); $this->deactivate(); } catch (PlentymarketsExportStatusException $E) { PlentymarketsLogger::getInstance()->error('Export:Initial:Wizard', $E->getMessage(), $E->getCode()); $this->deactivate(); } }
/** * Update plugin method * * @see Shopware_Components_Plugin_Bootstrap::update() */ public function update($version) { $Logger = PlentymarketsLogger::getInstance(); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, $version . ' → ' . $this->getVersion()); if ($version == '1.4.3') { try { // Drop unused columns from the log Shopware()->Db()->exec("\n\t\t\t\t\tALTER TABLE `plenty_log`\n\t\t\t\t\t\tDROP `request`,\n\t\t\t\t\t\tDROP `response`;\n\t\t\t\t"); } catch (Exception $E) { $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'ALTER TABLE `plenty_log` (drop unused columns from the log) already carried out'); } } if (version_compare($version, '1.4.4') !== 1) { try { Shopware()->Db()->exec("\n\t\t\t\t\tCREATE TABLE `plenty_mapping_customer_billing_address` (\n\t\t\t\t\t `shopwareID` int(11) unsigned NOT NULL,\n\t\t\t\t\t `plentyID` int(11) unsigned NOT NULL,\n\t\t\t\t\t PRIMARY KEY (`shopwareID`,`plentyID`)\n\t\t\t\t\t) ENGINE=InnoDB DEFAULT CHARSET=utf8\n\t\t\t\t"); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'CREATE TABLE `plenty_mapping_customer_billing_address` done'); } catch (Exception $E) { $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'CREATE TABLE `plenty_mapping_customer_billing_address` already carried out'); } Shopware()->Db()->exec("\n\t\t\t\tTRUNCATE TABLE `plenty_mapping_customer`\n\t\t\t"); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'TRUNCATE TABLE `plenty_mapping_customer` done'); Shopware()->Db()->exec("\n\t\t\t\tDELETE FROM `plenty_config` WHERE `key` LIKE 'CustomerExport%'\n\t\t\t"); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'DELETE FROM `plenty_config` done'); } if (version_compare($version, '1.4.5') !== 1) { try { $this->addMappingCleanupCronEvent(); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'addMappingCleanupCronEvent done'); } catch (Exception $E) { $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'addMappingCleanupCronEvent already carried out'); } } if (version_compare($version, '1.4.7') !== 1) { if (PlentymarketsConfig::getInstance()->getItemExportStatus() == 'success') { PlentymarketsConfig::getInstance()->setItemCrossSellingExportStatus('success'); PlentymarketsConfig::getInstance()->setItemCrossSellingExportTimestampStart(time()); PlentymarketsConfig::getInstance()->setItemCrossSellingExportTimestampFinished(time()); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'Item cross selling export marked as done'); } } if (version_compare($version, '1.4.8') !== 1) { $this->addItemImportStackCronEvent(); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'addItemImportStackCronEvent done'); try { Shopware()->Db()->exec("\n\t\t\t\t\tCREATE TABLE `plenty_stack_item` (\n\t\t\t\t\t `itemId` int(11) unsigned NOT NULL,\n\t\t\t\t\t `timestamp` int(10) unsigned NOT NULL,\n\t\t\t\t\t `storeIds` text NOT NULL,\n\t\t\t\t\t PRIMARY KEY (`itemId`),\n\t\t\t\t\t KEY `timestamp` (`timestamp`)\n\t\t\t\t\t) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n\t\t\t\t"); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'CREATE TABLE `plenty_stack_item` done'); } catch (Exception $E) { $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'CREATE TABLE `plenty_stack_item` already carried out'); } try { Shopware()->Db()->exec("\n\t\t\t\t\tUPDATE plenty_config\n\t\t\t\t\t\tSET `key` = 'ImportItemStackLastUpdateTimestamp'\n\t\t\t\t\t\tWHERE `key` = 'ImportItemLastUpdateTimestamp'\n\t\t\t\t"); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'UPDATE plenty_config (ImportItemStackLastUpdateTimestamp) done'); } catch (Exception $E) { $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'UPDATE plenty_config (ImportItemStackLastUpdateTimestamp) failed'); } } if (version_compare($version, '1.4.12') !== 1) { try { Shopware()->Db()->exec("\n\t\t\t\t\tALTER TABLE `plenty_log` ADD `code` INT UNSIGNED NULL DEFAULT NULL AFTER `message`;\n\t\t\t\t"); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'ALTER TABLE `plenty_log` ADD `code` done'); } catch (Exception $E) { $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'ALTER TABLE `plenty_log` ADD `code` already carried out'); } } if (version_compare($version, '1.4.14') !== 1) { $this->addLogCleanupCronEvent(); } if (version_compare($version, '1.4.18') !== 1) { $this->addItemAssociateUpdateCronEvent(); } if (version_compare($version, '1.4.22') !== 1) { try { Shopware()->Db()->exec("\n\t\t\t\t\tCREATE TABLE `plenty_mapping_item_bundle` (\n\t\t\t\t\t `shopwareID` int(11) unsigned NOT NULL,\n\t\t\t\t\t `plentyID` int(11) unsigned NOT NULL,\n\t\t\t\t\t PRIMARY KEY (`shopwareID`,`plentyID`),\n\t\t\t\t\t UNIQUE KEY `plentyID` (`plentyID`)\n\t\t\t\t\t) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n\t\t\t\t"); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'CREATE TABLE `plenty_mapping_item_bundle` done'); } catch (Exception $E) { $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'CREATE TABLE `plenty_mapping_item_bundle` failed'); } $this->addItemBundleCronEvents(); } if (version_compare($version, '1.6') !== 1) { try { PlentymarketsExportController::getInstance()->erase('ItemCategory'); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'PlentymarketsExportController::getInstance()->erase(\'ItemCategory\') done'); } catch (Exception $E) { $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'PlentymarketsExportController::getInstance()->erase(\'ItemCategory\') failed'); } try { Shopware()->Db()->exec("\n\t\t\t\t\tALTER TABLE `plenty_mapping_category` CHANGE `shopwareID` `shopwareID` VARCHAR(255) NOT NULL DEFAULT '';\n\t\t\t\t"); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'ALTER TABLE `plenty_mapping_category` done'); } catch (Exception $E) { $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'ALTER TABLE `plenty_mapping_category` failed'); } PyConf()->erase('PlentymarketsVersionTimestamp'); } if (version_compare($version, '1.7') !== 1) { $this->subscribeEvent('Shopware_Models_Order_Order::postPersist', 'onOrderModelPostPersist'); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'Shopware_Models_Order_Order::postPersist'); try { Shopware()->Db()->exec("\n\t\t\t\t\tALTER TABLE `plenty_mapping_referrer` CHANGE `plentyID` `plentyID` FLOAT(11) UNSIGNED NOT NULL;\n\t\t\t\t"); $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'ALTER TABLE `plenty_mapping_referrer` done'); } catch (Exception $E) { $Logger->message(PlentymarketsLogger::PREFIX_UPDATE, 'ALTER TABLE `plenty_mapping_referrer` failed'); } } // PlentymarketsConfig::getInstance()->setConnectorVersion($this->getVersion()); return true; }
/** * If an instance of PlentymarketsExportController exists, it returns this instance. * Else it creates a new instance of PlentymarketsExportController. * * @return PlentymarketsExportController */ public static function getInstance() { if (!self::$Instance instanceof self) { self::$Instance = new self(); } return self::$Instance; }
/** * 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(); }