checkTableExists('products_collections'); } /** New module 'collections' -> products_collections table */ public function makeChanges_1() { sqlQuery('CREATE TABLE IF NOT EXISTS '.getTableName('products_collections').' ( `id_product` INT(11) NOT NULL, `id_product_related` INT(11) NOT NULL ) ENGINE=InnoDB'); sqlQuery('ALTER TABLE '.getTableName('products_collections').' ADD PRIMARY KEY (`id_product`,`id_product_related`), ADD KEY `id_product_related` (`id_product_related`)'); sqlQuery('ALTER TABLE '.getTableName('products_collections').' ADD CONSTRAINT `products_collections_ibfk_2` FOREIGN KEY (`id_product_related`) REFERENCES `products` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `products_collections_ibfk_1` FOREIGN KEY (`id_product`) REFERENCES `products` (`id`) ON DELETE CASCADE ON UPDATE CASCADE'); $this->upgradeOK(); } public function checkRightfulness_2() { return $this->checkColumnType('products', 'show_in_feed', "enum('Y','N')"); } /** Convert product.show_in_feed from BOOL to Y/N */ public function makeChanges_2() { sqlQuery('ALTER TABLE '.getTableName('products')." CHANGE `show_in_feed` `show_in_feed` ENUM('Y', 'N') NOT NULL DEFAULT 'Y'"); sqlQuery('UPDATE '.getTableName('products')." SET `show_in_feed`='N' WHERE `show_in_feed`=''"); $this->upgradeOK(); } public function checkRightfulness_3() { return $this->checkConstraintExists('orders', 'order_no'); } /** Add unique to order_no */ public function makeChanges_3() { sqlQuery('ALTER TABLE '.getTableName('orders').' ADD UNIQUE(`order_no`)'); $this->upgradeOK(); } public function checkRightfulness_4() { return findModule('stock_in') && $this->checkColumnExists('suppliers', 'import_settings'); } /** Add import_settings to suppliers */ public function makeChanges_4() { sqlQuery('ALTER TABLE '.getTableName('suppliers').' ADD `import_settings` TEXT'); $this->upgradeOK(); } public function checkRightfulness_5() { return findModule('stock_in') && $this->checkColumnExists('products_of_suppliers', 'import_multiplier'); } /** Add import_multiplier to products_of_suppliers */ public function makeChanges_5() { sqlQuery('ALTER TABLE '.getTableName('products_of_suppliers').' ADD `import_multiplier` INT DEFAULT 1'); $this->upgradeOK(); } public function checkRightfulness_6() { return false; } public function checkRightfulness_7() { return Settings::getDefault()->user_rights_version == 0; } /** Update user rights: ORDER_ADD|ORDER_ERASE|ORDER_EDIT **/ public function makeChanges_7() { $settings = Settings::getDefault(); sqlQuery('UPDATE '.getTableName('admins')." SET privilege = TRIM(BOTH '|' FROM REPLACE(CONCAT('|', privilege, '|'), '|ORDER|', '|ORDER_ADD|ORDER_ERASE|ORDER_EDIT|'))"); $this->commitDataMigration(1); $this->upgradeOK(); } public function checkRightfulness_8() { return findModule('order_edit') && $this->checkColumnIsNull('order_edit', 'id_item', true); } /** Make order_edit.id_item null **/ public function makeChanges_8() { sqlQuery('ALTER TABLE '.getTableName('order_edit').' CHANGE `id_item` `id_item` INT(10) UNSIGNED NULL DEFAULT NULL'); sqlQuery('ALTER TABLE '.getTableName('order_edit').' DROP FOREIGN KEY `order_edit_ibfk_4`'); sqlQuery('ALTER TABLE '.getTableName('order_edit').' ADD CONSTRAINT `order_edit_ibfk_4` FOREIGN KEY (`id_item`) REFERENCES `order_items`(`id`) ON DELETE SET NULL ON UPDATE SET NULL'); $this->upgradeOK(); } public function checkRightfulness_10() { return findModule('stock_in') && $this->checkColumnExists('stock_in', 'multiplier'); } /** Add 'multiplier' to 'stock_in' **/ public function makeChanges_10() { sqlQuery('ALTER TABLE '.getTableName('stock_in')." ADD `multiplier` DECIMAL(5,2) NOT NULL DEFAULT '1'"); $this->upgradeOK(); } public function checkRightfulness_11() { return findModule('orders_of_suppliers') && $this->checkTableExists('orders_of_suppliers'); } /** Create table 'orders_of_suppliers' **/ public function makeChanges_11() { sqlQuery('CREATE TABLE IF NOT EXISTS '.getTableName('orders_of_suppliers').' ( `id` INT(11) NOT NULL, `id_supplier` INT(11) NOT NULL, `id_product` INT(11) NOT NULL, `id_variation` INT(11) DEFAULT NULL, `pieces` INT(11) NOT NULL, `date_create` DATETIME NOT NULL ) ENGINE=InnoDB '); sqlQuery('ALTER TABLE '.getTableName('orders_of_suppliers').' ADD PRIMARY KEY (`id`), ADD KEY `id_supplier` (`id_supplier`), ADD KEY `id_variation` (`id_variation`), ADD KEY `id_product` (`id_product`)'); sqlQuery('ALTER TABLE '.getTableName('orders_of_suppliers').' MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT'); sqlQuery('ALTER TABLE '.getTableName('orders_of_suppliers').' ADD CONSTRAINT `orders_of_suppliers_ibfk_1` FOREIGN KEY (`id_supplier`) REFERENCES `suppliers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `orders_of_suppliers_ibfk_2` FOREIGN KEY (`id_product`) REFERENCES `products` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `orders_of_suppliers_ibfk_3` FOREIGN KEY (`id_variation`) REFERENCES `products_variations` (`id`) ON DELETE CASCADE ON UPDATE CASCADE'); $this->upgradeOK(); } public function checkRightfulness_12() { return findModule('stock_in') && $this->checkColumnIsNull('stock_in', 'number', true); } /** Make stock_in.number and stock_in.code null **/ public function makeChanges_12() { sqlQuery('ALTER TABLE '.getTableName('stock_in').' CHANGE `number` `number` INT(11) NULL, CHANGE `code` `code` BIGINT(20) NULL'); $this->upgradeOK(); } public function checkRightfulness_13() { return findModule('eshop_delivery') && $this->checkColumnExists('delivery_type', 'figure'); } /** Add Figure to delivery_type - show/hide delivery types **/ public function makeChanges_13() { sqlQuery('ALTER TABLE '.getTableName('delivery_type')." ADD `figure` ENUM('Y','N','','') NOT NULL DEFAULT 'Y'"); $this->upgradeOK(); } public function checkRightfulness_14() { global $cfg; return !empty($cfg['Modules']['eshop_delivery']['images']) && $this->checkColumnExists('delivery_type', 'delivery_photo'); } /** Add photos to delivery_type **/ public function makeChanges_14() { sqlQuery('ALTER TABLE '.getTableName('delivery_type').' ADD `delivery_photo` VARCHAR(50), ADD `payment_photo` VARCHAR(50)'); $this->upgradeOK(); } public function checkRightfulness_15() { return $this->checkColumnType('users', 'email', 'VARCHAR(100)'); } /** Make email NULLable and 100 chars long **/ public function makeChanges_15() { sqlQuery('ALTER TABLE `users` CHANGE `email` `email` VARCHAR(100) NOT NULL DEFAULT ""'); $this->upgradeOK(); } public function checkRightfulness_16() { return findModule('stock_in') && $this->checkColumnExists('stock_in_items', 'vat'); } /** Add vat to stock_in_items. Update name and vats **/ public function makeChanges_16() { sqlQuery('ALTER TABLE '.getTableName('stock_in_items').' ADD `vat` INT NOT NULL DEFAULT 0'); sqlQuery('UPDATE '.getTableName('stock_in_items').' sii LEFT JOIN '.getTableName('products').' p ON sii.id_product=p.id LEFT JOIN '.getTableName('vats').' v ON p.vat=v.id SET sii.name=p.title, sii.vat=v.vat WHERE sii.id_product IS NOT NULL'); foreach (sqlQuery('SELECT * FROM '.getTableName('stock_in_items').' WHERE id_variation IS NOT NULL') as $row) { $this->updateSQL('stock_in_items', ['name' => Variations::fillInProductTitle($row['id_variation'], $row['name'])], ['id' => $row['id']]); } $this->upgradeOK(); } }