Files
kupshop/upgrade/list/upgrade.2012-12-03.php
2025-08-02 16:30:27 +02:00

242 lines
7.3 KiB
PHP

<?php
class Upgrade18 extends Upgrade
{
public function upgrade()
{
$changed = false;
if (findModule('price_levels')) {
// jestlize je opravnene udelat upgrade, tak provest
if ($this->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();
}
}