checkRightfulness_1()) { $this->makeChanges_1(); $changed = true; } // jestlize je opravnene udelat upgrade, tak provest if ($this->checkRightfulness_2()) { $this->makeChanges_2(); $changed = true; } } // jestlize je opravnene udelat upgrade, tak provest if (findModule('products_suppliers') || findModule('automatic_import')) { if ($this->checkRightfulness_3()) { $this->makeChanges_3(); $changed = true; } } // jestlize je opravnene udelat upgrade, tak provest if ($this->checkRightfulness_4()) { $this->makeChanges_4(); $changed = true; } // jestlize je opravnene udelat upgrade, tak provest if ($this->checkRightfulness_5()) { $this->makeChanges_5(); $changed = true; } global $cfg; if (!empty($cfg['Modules']['products']['showMax'])) { // jestlize je opravnene udelat upgrade, tak provest if ($this->checkRightfulness_6()) { $this->makeChanges_6(); $changed = true; } } if ($changed == false) { $this->noChanges(); } $this->printResult(); } // overi, jestli je opravnene provest upgrade public function checkRightfulness_1() { $change = true; $SQL = sqlQuery("SHOW TABLES LIKE '".getTableName('price_levels_producers', false)."'"); if (sqlNumRows($SQL) > 0) { $change = false; } return $change; } // provest samotny upgrade public function makeChanges_1() { $SQL = sqlQuery('CREATE TABLE IF NOT EXISTS '.getTableName('price_levels_producers')." ( `id_price_level` INT(10) UNSIGNED NOT NULL DEFAULT '0', `id_producer` INT(10) UNSIGNED NOT NULL DEFAULT '0', `discount` FLOAT NOT NULL DEFAULT '0', `unit` ENUM('perc','price') NOT NULL DEFAULT 'perc', PRIMARY KEY (`id_price_level`,`id_producer`), KEY `id_product` (`id_producer`) ) ENGINE=InnoDB COMMENT='cenove hladiny eshopu'"); sqlQuery('ALTER TABLE '.getTableName('price_levels_producers').' ADD CONSTRAINT `price_levels_producers_ibfk_2` FOREIGN KEY (`id_producer`) REFERENCES `producers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `price_levels_producers_ibfk_1` FOREIGN KEY (`id_price_level`) REFERENCES `price_levels` (`id`) ON DELETE CASCADE ON UPDATE CASCADE'); $this->upgradeOK(); } // overi, jestli je opravnene provest upgrade public function checkRightfulness_2() { $change = false; $SQL = sqlQuery('SHOW FIELDS FROM '.getTableName('products')); while ($row = sqlFetchArray($SQL)) { if ($row['Field'] == 'vat' && $row['Null'] == 'YES') { $change = true; break; } } return $change; } // provest samotny upgrade public function makeChanges_2() { sqlQuery('ALTER TABLE '.getTableName('products').' CHANGE `vat` `vat` INT( 11 ) UNSIGNED NOT NULL'); sqlQuery('ALTER TABLE '.getTableName('products').' ADD INDEX ( `vat` ) '); sqlQuery('ALTER TABLE '.getTableName('vats').' ENGINE = InnoDB'); sqlQuery('UPDATE '.getTableName('products').' p LEFT JOIN vats v ON p.vat=v.id SET p.vat = 1 WHERE v.id IS NULL'); sqlQuery('ALTER TABLE '.getTableName('products').' ADD FOREIGN KEY ( `vat` ) REFERENCES '.getTableName('vats').' ( `id` ) ON UPDATE CASCADE'); $this->upgradeOK(); } // overi, jestli je opravnene provest upgrade public function checkRightfulness_3() { $change = true; $SQL = sqlQuery("SELECT 1 FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA='".$GLOBALS['cfg']['Connection']['database']."' AND CONSTRAINT_TYPE='UNIQUE' AND TABLE_NAME='".getTableName('products_of_suppliers', false)."'"); if (sqlNumRows($SQL) > 1) { $change = false; } return $change; } // provest samotny upgrade public function makeChanges_3() { $SQL = false; try { $SQL = sqlQuery('ALTER TABLE '.getTableName('products_of_suppliers').' ADD UNIQUE ( `id_supplier` , `code` )'); } catch (Exception $e) { } $this->upgradeOK(); } // overi, jestli je opravnene provest upgrade public function checkRightfulness_4() { $change = false; $SQL = sqlQuery('SHOW FIELDS FROM '.getTableName('products')); while ($row = sqlFetchArray($SQL)) { if ($row['Field'] == 'code' && $row['Null'] == 'NO') { $change = true; break; } } return $change; } // provest samotny upgrade public function makeChanges_4() { $SQL = sqlQuery('ALTER TABLE '.getTableName('products').' CHANGE `code` `code` VARCHAR( 20 ) NULL DEFAULT NULL'); $this->upgradeOK(); } // overi, jestli je opravnene provest upgrade public function checkRightfulness_5() { $change = true; $SQL = sqlQuery('SHOW FIELDS FROM '.getTableName('photos_products_relation')); while ($row = sqlFetchArray($SQL)) { if ($row['Field'] == 'id_variation') { $change = false; break; } } return $change; } // provest samotny upgrade public function makeChanges_5() { $SQL = sqlQuery('ALTER TABLE '.getTableName('photos_products_relation').' ADD `id_variation` INT(11) NULL DEFAULT NULL AFTER `id_product`'); sqlQuery('ALTER TABLE '.getTableName('photos_products_relation').' ADD UNIQUE KEY `id_photo` (`id_photo`,`id_product`,`id_variation`)'); sqlQuery('ALTER TABLE '.getTableName('photos_products_relation').' ADD FOREIGN KEY ( `id_variation` ) REFERENCES '.getTableName('products_variations').' ( `id` ) ON UPDATE CASCADE ON DELETE SET NULL'); sqlQuery('ALTER TABLE '.getTableName('photos_products_relation').' DROP PRIMARY KEY'); $this->upgradeOK(); } // overi, jestli je opravnene provest upgrade public function checkRightfulness_6() { $change = true; $SQL = sqlQuery('SHOW FIELDS FROM '.getTableName('products')); while ($row = sqlFetchArray($SQL)) { if ($row['Field'] == 'in_store_show_max') { $change = false; break; } } return $change; } // provest samotny upgrade public function makeChanges_6() { sqlQuery('ALTER TABLE '.getTableName('products').' ADD `in_store_show_max` INT(11) DEFAULT NULL'); sqlQuery('ALTER TABLE '.getTableName('products_variations').' ADD `in_store_show_max` INT(11) DEFAULT NULL'); $this->upgradeOK(); } }