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

219 lines
6.3 KiB
PHP

<?php
class Upgrade25 extends Upgrade
{
public function upgrade()
{
$changed = false;
// jestlize je opravnene udelat upgrade, tak provest
if (findModule('stock_in') && $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 ($this->checkRightfulness_3()) {
$this->makeChanges_3();
$changed = true;
}
// jestlize je opravnene udelat upgrade, tak provest
if ($this->checkRightfulness_4()) {
$this->makeChanges_4();
$changed = true;
}
global $cfg;
if (!empty($cfg['Order']['Flags'])) {
// jestlize je opravnene udelat upgrade, tak provest
if ($this->checkRightfulness_5()) {
$this->makeChanges_5();
$changed = true;
}
// jestlize je opravnene udelat upgrade, tak provest
if ($this->checkRightfulness_6()) {
$this->makeChanges_6();
$changed = true;
}
}
// jestlize je opravnene udelat upgrade, tak provest
if ($this->checkRightfulness_7()) {
$this->makeChanges_7();
$changed = true;
}
if ($changed == false) {
$this->noChanges();
}
$this->printResult();
}
// overi, jestli je opravnene provest upgrade
public function checkRightfulness_1()
{
return false;
}
// provest samotny upgrade
public function makeChanges_1()
{
}
// overi, jestli je opravnene provest upgrade
public function checkRightfulness_2()
{
global $cfg;
$type = '';
$this->checkEnumExists('products', 'campaign', 'bžet', $type);
foreach ($cfg['Products']['Flags'] as $name => $flag) {
if (strstr($type, "'{$name}'") === false) {
return true;
}
}
}
// provest samotny upgrade
public function makeChanges_2()
{
global $cfg;
$type = '';
$this->checkEnumExists('products', 'campaign', 'bžet', $type);
foreach ($cfg['Products']['Flags'] as $name => $flag) {
if (strstr($type, "'{$name}'") === false) {
$type = str_replace(')', ",'{$name}')", $type);
}
}
sqlQuery('ALTER TABLE '.getTableName('products')." CHANGE `campaign` `campaign` {$type} NOT NULL");
$this->upgradeOK();
}
// overi, jestli je opravnene provest upgrade
public function checkRightfulness_3()
{
return $this->checkConstraintWithColumnExists('products_related', 'products_related_ibfk_1', 'id_top_product');
}
// provest samotny upgrade
public function makeChanges_3()
{
sqlQuery('DELETE pr FROM '.getTableName('products_related').' pr
LEFT JOIN '.getTableName('products').' p ON pr.id_top_product=p.id
WHERE p.id IS NULL');
sqlQuery('ALTER TABLE '.getTableName('products_related').' CHANGE `id_top_product` `id_top_product` INT(11) NOT NULL');
sqlQuery('ALTER TABLE '.getTableName('products_related').'
ADD CONSTRAINT `products_related_ibfk_1` FOREIGN KEY (`id_top_product`) REFERENCES `products` (`id`) ON DELETE CASCADE ON UPDATE CASCADE');
$this->upgradeOK();
}
// overi, jestli je opravnene provest upgrade
public function checkRightfulness_4()
{
return $this->checkConstraintWithColumnExists('products_related', 'products_related_ibfk_2', 'id_rel_product');
}
// provest samotny upgrade
public function makeChanges_4()
{
sqlQuery('DELETE pr FROM '.getTableName('products_related').' pr
LEFT JOIN '.getTableName('products').' p ON pr.id_rel_product=p.id
WHERE p.id IS NULL');
sqlQuery('ALTER TABLE '.getTableName('products_related').' CHANGE `id_rel_product` `id_rel_product` INT(11) NOT NULL');
sqlQuery('ALTER TABLE '.getTableName('products_related').'
ADD CONSTRAINT `products_related_ibfk_2` FOREIGN KEY (`id_rel_product`) REFERENCES `products` (`id`) ON DELETE CASCADE ON UPDATE CASCADE');
$this->upgradeOK();
}
// overi, jestli je opravnene provest upgrade
public function checkRightfulness_5()
{
return $this->checkColumnExists('orders', 'flags');
}
// provest samotny upgrade
public function makeChanges_5()
{
global $cfg;
sqlQuery('ALTER TABLE '.getTableName('orders')." ADD `flags` SET('".join("','", array_keys($cfg['Order']['Flags']))."') NOT NULL");
sqlQuery('ALTER TABLE '.getTableName('orders').' ADD INDEX(`flags`)');
$this->upgradeOK();
}
// overi, jestli je opravnene provest upgrade
public function checkRightfulness_6()
{
global $cfg;
$type = '';
$this->checkEnumExists('orders', 'flags', 'bžet', $type);
foreach ($cfg['Order']['Flags'] as $name => $flag) {
if (strstr($type, "'{$name}'") === false) {
return true;
}
}
}
// provest samotny upgrade
public function makeChanges_6()
{
global $cfg;
$type = '';
$this->checkEnumExists('orders', 'flags', 'bžet', $type);
foreach ($cfg['Order']['Flags'] as $name => $flag) {
if (strstr($type, "'{$name}'") === false) {
$type = str_replace(')', ",'{$name}')", $type);
}
}
sqlQuery('ALTER TABLE '.getTableName('orders')." CHANGE `flags` `flags` {$type} NOT NULL");
$this->upgradeOK();
}
// overi, jestli je opravnene provest upgrade
public function checkRightfulness_7()
{
return $this->checkEnumExists('products', 'campaign', 'M');
}
// provest samotny upgrade
public function makeChanges_7()
{
$type = '';
$this->checkEnumExists('products', 'campaign', 'M', $type);
$type = str_replace(')', ",'M')", $type);
sqlQuery('ALTER TABLE '.getTableName('products')." CHANGE `campaign` `campaign` {$type} NOT NULL");
$this->upgradeOK();
}
}