242 lines
7.3 KiB
PHP
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();
|
|
}
|
|
}
|