* @copyright 2015 PrestaShow.pl * @license http://PrestaShow.pl/license */ if (!defined('_PS_VERSION_')) { exit; } require_once dirname(__FILE__) . "/config.php"; class PShowImporter extends PShowModule { /** * Module controller with tab in admin menu */ public $admin_menu_tab = 'PShowImporterMain'; /** * Module controllers without tab in admin menu */ public $controllers = array( 'PShowImporterBackup', 'PShowImporterUpdate', 'PShowImporterReportBug', 'PShowImporterHook', 'PShowImporterImport', 'PShowImporterConfig', 'PShowImporterSettings' ); /** * Append here all new versions which has got update functions * * example: * $moduleVersionPath = array('1.0.0', '1.1.0', '1.2.0') * during update from 1.0.0 to 1.2.0 functions with be called(if exists): * update_from_1_1() * update_from_1_2() */ public $moduleVersionPath = array(); /** * Primary configuration */ public $name = 'pshowimporter'; public $tab = 'other'; public $version = '2.204.0'; public $ps_versions_compliancy = array('min' => '1.5', 'max' => _PS_VERSION_); public $trusted = true; /** * constructor */ public function __construct() { parent::__construct(); $this->displayName = $this->l('PShow Importer'); $this->description = $this->l('Professional importing module for e-commerce system - PrestaShop.'); $version_tmp = preg_replace('~([^0-9]+)~', null, $this->version); // add column `import` to the products table Product::$definition['fields']['import'] = array('type' => ObjectModel::TYPE_BOOL, 'shop' => true, 'validate' => 'isBool'); if (!Configuration::get('PShowImpProImpS' . $version_tmp)) { try { $q = "ALTER TABLE `" . _DB_PREFIX_ . "product` ADD COLUMN `import` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1; "; Db::getInstance()->execute($q); $q = "ALTER TABLE `" . _DB_PREFIX_ . "product_shop` ADD COLUMN `import` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1; "; Db::getInstance()->execute($q); } catch (PrestaShopDatabaseException $e) { file_put_contents( PShowUpdateNew::getInstance(__FILE__)->getModulePath() . 'exceptions.log', "[" . date('d-m-Y H:i:s') . "]" . $e->getMessage() . "\n\n", FILE_APPEND ); } Configuration::updateValue('PShowImpProImpS' . $version_tmp, 1); if (defined('_PS_ADMIN_DIR_')) { $this->adminDisplayInformation($this->l('Updated database schema for field Product->import.')); } } // add columns to the combinations table Combination::$definition['fields']['width'] = array('type' => ObjectModel::TYPE_FLOAT, 'validate' => 'isUnsignedFloat'); Combination::$definition['fields']['height'] = array('type' => ObjectModel::TYPE_FLOAT, 'validate' => 'isUnsignedFloat'); Combination::$definition['fields']['depth'] = array('type' => ObjectModel::TYPE_FLOAT, 'validate' => 'isUnsignedFloat'); Combination::$definition['fields']['description'] = array('type' => ObjectModel::TYPE_HTML, 'size' => 1000000); if (!Configuration::get('PShowImpCombDim' . $version_tmp)) { try { $q = "ALTER TABLE `" . _DB_PREFIX_ . "product_attribute` ADD COLUMN `description` TEXT NOT NULL; "; Db::getInstance()->execute($q); $q = "ALTER TABLE `" . _DB_PREFIX_ . "product_attribute` ADD COLUMN `width` DECIMAL(20, 6) NOT NULL DEFAULT 0.000000; "; Db::getInstance()->execute($q); $q = "ALTER TABLE `" . _DB_PREFIX_ . "product_attribute` ADD COLUMN `height` DECIMAL(20, 6) NOT NULL DEFAULT 0.000000; "; Db::getInstance()->execute($q); $q = "ALTER TABLE `" . _DB_PREFIX_ . "product_attribute` ADD COLUMN `depth` DECIMAL(20, 6) NOT NULL DEFAULT 0.000000; "; Db::getInstance()->execute($q); } catch (PrestaShopDatabaseException $e) { file_put_contents( PShowUpdateNew::getInstance(__FILE__)->getModulePath() . 'exceptions.log', "[" . date('d-m-Y H:i:s') . "]" . $e->getMessage() . "\n\n", FILE_APPEND ); } Configuration::updateValue('PShowImpCombDim' . $version_tmp, 1); if (defined('_PS_ADMIN_DIR_')) { $this->adminDisplayInformation($this->l('Updated database schema for combination dimension fields.')); } } /** * Save PHP command to file */ $get_php_command_content = 'getModulePath() . 'get_php_command.php'; $php_command = PShow_Settings::getInstance(__FILE__)->get('php_command'); if (!$php_command || empty($php_command)) { PShow_Settings::getInstance(__FILE__)->set('php_command', 'php'); file_put_contents($get_php_command_path, sprintf($get_php_command_content, "php")); } elseif (!file_exists($get_php_command_path)) { file_put_contents($get_php_command_path, sprintf($get_php_command_content, $php_command)); } else { $get_php_command = require $get_php_command_path; if ($php_command != $get_php_command) { file_put_contents($get_php_command_path, sprintf($get_php_command_content, $php_command)); } } /** * Save CPU limit to file */ $cpu_limit_content = 'getModulePath() . 'get_cpu_limit.php'; $cpu_limit = (int) PShow_Settings::getInstance(__FILE__)->get('cpu_limit'); if ((!$cpu_limit || empty($cpu_limit) || $cpu_limit <= 0) && file_exists($cpu_limit_path)) { unlink($cpu_limit_path); } elseif (!file_exists($cpu_limit_path) && $cpu_limit > 0) { file_put_contents($cpu_limit_path, sprintf($cpu_limit_content, $cpu_limit)); } elseif (file_exists($cpu_limit_path)) { $cpu_limit_ = require $cpu_limit_path; if ($cpu_limit_ != $cpu_limit) { file_put_contents($cpu_limit_path, sprintf($cpu_limit_content, $cpu_limit)); } } } public function hookDisplayBackOfficeTop() { if (Tools::getValue('controller') == 'PShowImporterImport') { return; } if ((bool) PShow_Settings::getInstance(__FILE__)->get('mod_combination_dimensions')) { $this->context->controller->addJS(__PS_BASE_URI__ . 'modules/pshowimporter/views/js/admin_combination_sizes.js'); } return parent::hookDisplayBackOfficeTop(); } }