name = 'x13import'; $this->tab = 'market_place'; $this->version = '4.7.3'; $this->author = 'x13.pl'; $this->need_instance = 1; $this->ps_versions_compliancy = array('min' => '1.5', 'max' => '1.7.99.9999'); $this->ps_version = substr(_PS_VERSION_, 0, 3); if (version_compare(_PS_VERSION_, '1.6', '<')) { $this->bootstrap = false; } else { $this->bootstrap = true; } parent::__construct(); $this->config = new XImportConfiguration($this); $this->displayName = $this->l('Integracja XML / CSV'); $this->description = $this->l('Import hurtowni XML / CSV / API - zaawansowana integracja hurtowni z Twoim sklepem PrestaShop. Wygodny import produktów, wraz z automatyczną aktualizacją danych.'); } public function hookActionObjectCategoryDeleteBefore($data) { Db::getInstance()->update('ximport_category', array( 'id_category' => 0 ), 'id_category = ' . (int)$data['object']->id); Db::getInstance()->delete('ximport_category_additional', 'id_category = ' . (int)$data['object']->id); foreach ($data['object']->getSubCategories(Context::getContext()->language->id) as $category) { Db::getInstance()->update('ximport_category', array( 'id_category' => 0 ), 'id_category = ' . (int)$category['id_category']); Db::getInstance()->delete('ximport_category_additional', 'id_category = ' . (int)$category['id_category']); } } public function hookActionObjectImageDeleteBefore($data) { Db::getInstance()->delete('ximport_image', 'id_image = ' . (int)$data['object']->id); Db::getInstance()->delete('ximport_image_attribute', 'id_image = ' . (int)$data['object']->id); } public function hookActionObjectProductDeleteBefore($data) { Db::getInstance()->delete('ximport_product', 'id_product = ' . (int)$data['object']->id); Db::getInstance()->delete('ximport_attachment', 'id_product = ' . (int)$data['object']->id); Db::getInstance()->delete('ximport_image', 'id_product = ' . (int)$data['object']->id); Db::getInstance()->delete('ximport_image_attribute', 'id_product = ' . (int)$data['object']->id); } public function install() { if (!parent::install() || !$this->registerHook('actionObjectCategoryDeleteBefore') || !$this->registerHook('actionObjectImageDeleteBefore') || !$this->registerHook('actionObjectProductDeleteBefore') || !$this->registerHook('backOfficeHeader') ) { return false; } // Module::install() czysci Autoload, wiec uruchamiamy funkcje jeszcze raz przed dalsza czescia instalacji require (dirname(__FILE__) . '/x13import.ion.php'); $this->reinstallTabs(); $dbCharset = \x13import\Adapter\DbAdapter::getUtf8Collation(); Db::getInstance()->execute(' CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'ximport_configuration` ( `id_ximport_configuration` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(32) NOT NULL, `value` text NOT NULL, PRIMARY KEY (`id_ximport_configuration`), UNIQUE INDEX (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=' . $dbCharset . '; CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'ximport_configuration_wholesaler` ( `wholesaler` varchar(64) NOT NULL, `value` text NOT NULL, PRIMARY KEY (`wholesaler`) ) ENGINE=InnoDB DEFAULT CHARSET=' . $dbCharset . '; CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'ximport_price` ( `id_ximport_price` int(10) unsigned NOT NULL AUTO_INCREMENT, `wholesaler` varchar(64) NOT NULL, `range_from` decimal(10,2) NULL DEFAULT "0.00", `range_to` decimal(10,2) NULL DEFAULT "0.00", `type` tinyint(1) NOT NULL, `markup` decimal(10,2) NULL DEFAULT "0.00", `override_category` tinyint(1) NOT NULL, PRIMARY KEY (`id_ximport_price`), INDEX (`wholesaler`) ) ENGINE=InnoDB DEFAULT CHARSET=' . $dbCharset . '; CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'ximport_category` ( `id_ximport_category` int(10) unsigned NOT NULL AUTO_INCREMENT, `id_category` int(10) unsigned NOT NULL, `path` varchar(255) NOT NULL, `title_pattern` varchar(255) NOT NULL DEFAULT "", `import` tinyint(1) NOT NULL, `markup` decimal(10,2) NOT NULL DEFAULT "0.00", `markup_type` enum("percent", "amount") NOT NULL DEFAULT "percent", `wholesaler_code` varchar(10) NOT NULL, `wholesaler_name` varchar(50) NOT NULL, PRIMARY KEY (`id_ximport_category`), INDEX (`id_category`), INDEX (`import`), INDEX (`wholesaler_code`) ) ENGINE=InnoDB DEFAULT CHARSET=' . $dbCharset . '; CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'ximport_category_additional` ( `id_ximport_category` int(10) unsigned NOT NULL, `id_category` int(10) unsigned NOT NULL, UNIQUE INDEX (`id_ximport_category`, `id_category`) ) ENGINE=InnoDB DEFAULT CHARSET=' . $dbCharset . '; CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'ximport_image` ( `id_ximport_image` int(10) unsigned NOT NULL AUTO_INCREMENT, `code` varchar(128) NOT NULL, `id_product` int(10) unsigned NOT NULL, `id_image` int(10) unsigned NOT NULL, `fingerprint` varchar(32) NOT NULL COMMENT "md5 - wartosci (adres, base64)", PRIMARY KEY (`id_ximport_image`), INDEX (`code`), INDEX (`id_product`), INDEX (`id_image`), INDEX (`fingerprint`) ) ENGINE=InnoDB DEFAULT CHARSET=' . $dbCharset . '; CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'ximport_image_attribute` ( `id_ximport_image_attribute` int(10) unsigned NOT NULL AUTO_INCREMENT, `id_product` int(10) unsigned NOT NULL, `id_product_attribute` int(10) unsigned NOT NULL, `id_image` int(10) unsigned NOT NULL, PRIMARY KEY (`id_ximport_image_attribute`), INDEX (`id_product`, `id_product_attribute`), INDEX (`id_image`) ) ENGINE=InnoDB DEFAULT CHARSET=' . $dbCharset . '; CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'ximport_attachment` ( `id_ximport_attachment` int(10) unsigned NOT NULL AUTO_INCREMENT, `code` varchar(128) NOT NULL, `id_product` int(10) unsigned NOT NULL, `id_attachment` int(10) unsigned NOT NULL, `fingerprint` varchar(32) NOT NULL, PRIMARY KEY (`id_ximport_attachment`), INDEX (`code`), INDEX (`id_product`), INDEX (`id_attachment`), INDEX (`fingerprint`) ) ENGINE=InnoDB DEFAULT CHARSET=' . $dbCharset . '; CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'ximport_item` ( `id_ximport_item` int(10) unsigned NOT NULL AUTO_INCREMENT, `code` varchar(128) NOT NULL, `wholesaler_code` varchar(10) NOT NULL, `reference` varchar(32) NOT NULL DEFAULT "", `isbn` varchar(32) NOT NULL DEFAULT "", `ean13` varchar(32) NOT NULL DEFAULT "", `mpn` varchar(40) NOT NULL DEFAULT "", `id_category` int(10) unsigned NOT NULL, `additional_categories` varchar(255) NOT NULL DEFAULT "", `name` varchar(128) NOT NULL, `link_rewrite` varchar(128) NOT NULL, `carriers` varchar(255) NOT NULL DEFAULT "", `description` longtext NOT NULL DEFAULT "", `description_short` text NOT NULL DEFAULT "", `tax` int(10) unsigned NOT NULL DEFAULT 0, `price` decimal(20,6) NOT NULL DEFAULT "0.00", `unit_price` decimal(20,6) NOT NULL DEFAULT "0.00", `wholesale_price` decimal(20,6) NOT NULL DEFAULT "0.00", `additional_shipping_cost` decimal(20,6) NOT NULL DEFAULT "0.00", `weight` decimal(20,6) NOT NULL DEFAULT "0.00", `width` decimal(20,6) NOT NULL DEFAULT "0.00", `height` decimal(20,6) NOT NULL DEFAULT "0.00", `depth` decimal(20,6) NOT NULL DEFAULT "0.00", `condition` enum("new", "used", "refurbished") NOT NULL DEFAULT "new", `unity` varchar(255) NOT NULL DEFAULT "", `manufacturer` varchar(64) NOT NULL DEFAULT "", `supplier` varchar(64) NOT NULL DEFAULT "", `quantity` int(10) unsigned NOT NULL DEFAULT 0, `minimal_quantity` int(10) unsigned NOT NULL DEFAULT 1, `online_only` tinyint(1) NOT NULL DEFAULT 0, `show_price` tinyint(1) NOT NULL DEFAULT 1, `available_for_order` tinyint(1) NOT NULL DEFAULT 1, `attributes` text NOT NULL DEFAULT "", `features` text NOT NULL DEFAULT "", `active` tinyint(1) NOT NULL DEFAULT 1, `visibility` enum("both", "catalog", "search", "none", "nothing") NOT NULL DEFAULT "both", `visibility_num` tinyint(1) NOT NULL DEFAULT 1, `on_sale` tinyint(1) NOT NULL DEFAULT 0, `is_virtual` tinyint(1) NOT NULL DEFAULT 0, `out_of_stock` tinyint(1) NOT NULL DEFAULT 0, `available_date` date NULL, `meta_title` varchar(255) NOT NULL DEFAULT "", `meta_description` varchar(255) NOT NULL DEFAULT "", `meta_keywords` varchar(255) NOT NULL DEFAULT "", `available_now` varchar(255) NOT NULL DEFAULT "", `available_later` varchar(255) NOT NULL DEFAULT "", `delivery_in_stock` varchar(255) NOT NULL DEFAULT "", `delivery_out_stock` varchar(255) NOT NULL DEFAULT "", `tags` varchar(255) NOT NULL DEFAULT "", `fingerprint` varchar(32) NOT NULL, `images_data` text NOT NULL DEFAULT "", `auction_id` bigint(20) NOT NULL DEFAULT 0, PRIMARY KEY (`id_ximport_item`), UNIQUE INDEX (`fingerprint`), INDEX (`code`), INDEX (`wholesaler_code`), INDEX (`manufacturer`), INDEX (`supplier`) ) ENGINE=InnoDB DEFAULT CHARSET=' . $dbCharset . '; CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'ximport_item_image` ( `id_ximport_item_image` int(10) unsigned NOT NULL AUTO_INCREMENT, `code` varchar(128) NOT NULL, `type` varchar(10) NOT NULL, `value` mediumtext NOT NULL, `value_md5` varchar(32) NOT NULL, `fingerprint` varchar(32) NOT NULL, PRIMARY KEY (`id_ximport_item_image`), UNIQUE INDEX (`value_md5`, `fingerprint`), INDEX (`code`), INDEX (`value_md5`), INDEX (`fingerprint`) ) ENGINE=InnoDB DEFAULT CHARSET=' . $dbCharset . '; CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'ximport_item_attachment` ( `id_ximport_item_attachment` int(10) unsigned NOT NULL AUTO_INCREMENT, `code` varchar(128) NOT NULL, `type` varchar(10) NOT NULL, `value` mediumtext NOT NULL, `value_md5` varchar(32) NOT NULL, `fingerprint` varchar(32) NULL, PRIMARY KEY (`id_ximport_item_attachment`), UNIQUE INDEX (`code`, `value_md5`), INDEX (`code`), INDEX (`value_md5`) ) ENGINE=InnoDB DEFAULT CHARSET=' . $dbCharset . '; CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'ximport_product` ( `id_ximport_product` int(10) unsigned NOT NULL AUTO_INCREMENT, `code` varchar(128) NOT NULL, `id_product` int(10) unsigned NOT NULL, `id_product_attribute` int(10) unsigned NOT NULL, `fingerprint` varchar(32) NOT NULL, `exclude` tinyint(1) NOT NULL DEFAULT 0, `exclude_price` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (`id_ximport_product`), UNIQUE INDEX (`id_product`, `id_product_attribute`), INDEX (`code`), INDEX (`fingerprint`), INDEX (`exclude`), INDEX (`exclude_price`) ) ENGINE=InnoDB DEFAULT CHARSET=' . $dbCharset . '; CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'ximport_tmp` ( `id_product` int(10) unsigned NOT NULL, `quantity` int(10) unsigned NOT NULL DEFAULT 0, `min_out_of_stock` tinyint(1) unsigned NOT NULL DEFAULT 0, `max_out_of_stock` tinyint(1) unsigned NOT NULL DEFAULT 0, `product_unit_price` decimal(20,6) NOT NULL DEFAULT "0.00", `basic_price` decimal(20,6) NOT NULL DEFAULT "0.00", `basic_unit_price` decimal(20,6) NOT NULL DEFAULT "0.00", `basic_wholesale_price` decimal(20,6) NOT NULL DEFAULT "0.00", `basic_weight` decimal(20,6) NOT NULL DEFAULT "0.00", PRIMARY KEY `id_product` (`id_product`) ) ENGINE=InnoDB DEFAULT CHARSET=' . $dbCharset . ';' ); foreach (XImportConfiguration::getDefaultConfiguration() as $key => $value) { XImportConfiguration::updateValue($key, $value); } return true; } public function uninstall() { if (!parent::uninstall()) { return false; } Db::getInstance()->execute(' DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'ximport_attachment`; DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'ximport_category`; DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'ximport_category_additional`; DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'ximport_configuration`; DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'ximport_configuration_wholesaler`; DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'ximport_price`; DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'ximport_image`; DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'ximport_image_attribute`; DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'ximport_item`; DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'ximport_item_attachment`; DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'ximport_item_image`; DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'ximport_product`; DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'ximport_tmp`;' ); foreach (Tab::getCollectionFromModule($this->name) as $tab) { $tab->delete(); } return true; } public function reinstallTabs() { return $this->config->reinstallTabs(); } /** * @param string $message * @param string $className * @param bool $prefix * @return string */ public function renderAdminMessage($message, $className = 'warning', $prefix = true) { return str_replace($this->displayName, '' . $this->displayName . '', ($prefix ? $this->displayName . ' ' : '') . $message); } } function convertMemory($memory) { $unit = array('B', 'KB', 'MB', 'GB'); return @round($memory / pow(1024, ($i = floor(log($memory, 1024)))), 2) . (isset($unit[(int)$i]) ? ' ' . $unit[(int)$i] : ''); }