first commit
This commit is contained in:
374
modules/x13import/x13import.php
Normal file
374
modules/x13import/x13import.php
Normal file
@@ -0,0 +1,374 @@
|
||||
<?php
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
require_once (dirname(__FILE__) . '/x13import.ion.php');
|
||||
|
||||
define('X_IMPORT_IMG_MAX_SIZE', 9);
|
||||
define('X_IMPORT_IMG_MAX_PIXELS', 9000);
|
||||
define('X_IMPORT_IMG_TMP_PREFIX', 'PS_X_');
|
||||
define('X_IMPORT_ITEMS_LIMIT', 500);
|
||||
define('X_IMPORT_ITEMS_DOWNLOAD_LIMIT', 25);
|
||||
define('X_IMPORT_TIMEOUT', 600);
|
||||
define('X_IMPORT_MEMORY_LIMIT', '512M');
|
||||
define('X_IMPORT_DB_MAX_ALLOWED_PACKET', 16777216);
|
||||
define('X_IMPORT_DB_WAIT_TIMEOUT', 30);
|
||||
define('X_IMPORT_DEBUG', false);
|
||||
|
||||
class x13import extends x13import\XImportModuleCore
|
||||
{
|
||||
/** @var XImportConfiguration */
|
||||
public $config;
|
||||
|
||||
/** @var bool */
|
||||
public $bootstrap;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->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, '<span class="badge badge-' . $className . '"><b>' . $this->displayName . '</b></span>', ($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] : '');
|
||||
}
|
||||
Reference in New Issue
Block a user