Files
kupshop/upgrade/list/upgrade.2015-05-04.php
2025-08-02 16:30:27 +02:00

462 lines
17 KiB
PHP

<?php
class Upgrade32 extends UpgradeNew
{
public function checkRightfulness_1()
{
return findModule('eshop_delivery') && $this->checkTableExists('delivery_type_delivery');
}
/** Split delivery_types to delivery and payment */
public function makeChanges_1()
{
sqlQuery("
CREATE TABLE `delivery_type_delivery` (
`id` INT(11) NOT NULL,
`name` VARCHAR(50) NOT NULL,
`price` FLOAT NOT NULL DEFAULT '0',
`photo` VARCHAR(50) DEFAULT NULL
) ENGINE=InnoDB;
-- --------------------------------------------------------
--
-- Table structure for table `delivery_type_payment`
--
CREATE TABLE `delivery_type_payment` (
`id` INT(11) NOT NULL,
`name` VARCHAR(50) NOT NULL,
`price` FLOAT NOT NULL DEFAULT '0',
`class` VARCHAR(20) DEFAULT NULL,
`photo` VARCHAR(50) DEFAULT NULL
) ENGINE=InnoDB;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `delivery_type_delivery`
--
ALTER TABLE `delivery_type_delivery`
ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `name` (`name`);
--
-- Indexes for table `delivery_type_payment`
--
ALTER TABLE `delivery_type_payment`
ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `name` (`name`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `delivery_type_delivery`
--
ALTER TABLE `delivery_type_delivery`
MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `delivery_type_payment`
--
ALTER TABLE `delivery_type_payment`
MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT;SET FOREIGN_KEY_CHECKS=1;
");
$this->upgradeOK();
}
public function checkRightfulness_2()
{
return findModule('eshop_delivery') && $this->checkColumnExists('delivery_type', 'id_delivery');
}
/** Create relations */
public function makeChanges_2()
{
sqlQuery('ALTER TABLE `delivery_type` ADD `id_delivery` INT NULL AFTER `id`, ADD `id_payment` INT NULL AFTER `id_delivery`');
sqlQuery('ALTER TABLE `delivery_type` ADD INDEX(`id_delivery`)');
sqlQuery('ALTER TABLE `delivery_type` ADD INDEX(`id_payment`)');
sqlQuery('ALTER TABLE `delivery_type` ADD FOREIGN KEY (`id_delivery`) REFERENCES `delivery_type_delivery`(`id`) ON DELETE SET NULL ON UPDATE CASCADE');
sqlQuery('ALTER TABLE `delivery_type` ADD FOREIGN KEY (`id_payment`) REFERENCES `delivery_type_payment`(`id`) ON DELETE SET NULL ON UPDATE CASCADE');
$this->upgradeOK();
}
public function checkRightfulness_3()
{
return findModule('eshop_delivery') && !$this->checkColumnExists('delivery_type', 'delivery');
}
/** Migrate existing deliveries */
public function makeChanges_3()
{
$image = 'NULL';
if (findModule('eshop_delivery', 'images')) {
$image = 'delivery_photo';
}
sqlQuery('DELETE FROM `delivery_type_delivery`');
sqlQuery("INSERT INTO `delivery_type_delivery`(`id`, `name`, `price`, `photo`)
SELECT NULL, delivery, 0, {$image} FROM `delivery_type` WHERE delivery != '' GROUP BY delivery");
if (findModule('eshop_delivery', 'images')) {
$image = 'payment_photo';
}
$class = 'NULL';
if (findModule('payments')) {
$class = 'payment_class';
}
sqlQuery('DELETE FROM `delivery_type_payment`');
sqlQuery("INSERT INTO `delivery_type_payment`(`id`, `name`, `price`, `class`, `photo`)
SELECT NULL, payment, 0, {$class}, {$image} FROM `delivery_type` WHERE payment != '' GROUP BY payment");
sqlQuery('UPDATE `delivery_type` dt SET `id_delivery`=(SELECT id FROM delivery_type_delivery dtd WHERE dtd.name=dt.delivery)');
sqlQuery('UPDATE `delivery_type` dt SET `id_payment`=(SELECT id FROM delivery_type_payment dtp WHERE dtp.name=dt.payment)');
sqlQuery('ALTER TABLE `delivery_type` CHANGE `price` `price` FLOAT NULL DEFAULT NULL');
sqlQuery('ALTER TABLE `delivery_type` CHANGE `price_dont_countin_from` `price_dont_countin_from` FLOAT NULL DEFAULT NULL');
// Update price_dont_countin_from - set to NULL where was 0
sqlQuery('UPDATE `delivery_type` SET `price_dont_countin_from`=NULL WHERE `price_dont_countin_from` = 0');
if (findModule('payments')) {
sqlQuery('ALTER TABLE `delivery_type` DROP `payment_class`');
}
sqlQuery('ALTER TABLE `delivery_type` DROP `payment`, DROP `delivery`');
$this->upgradeOK();
}
public function checkRightfulness_4()
{
return $this->checkColumnExists('photos_products_relation', 'position');
}
/** Add position column for photo ordering */
public function makeChanges_4()
{
sqlQuery('ALTER TABLE '.getTableName('photos_products_relation').' ADD `position` INT(11) NULL ');
sqlQuery('UPDATE '.getTableName('photos_products_relation')." SET `position`='1' WHERE `show_in_lead`='N' ");
sqlQuery('UPDATE '.getTableName('photos_products_relation')." SET `position`='0' WHERE `show_in_lead`='Y' ");
$this->upgradeOK();
}
public function checkRightfulness_5()
{
return findModule('price_levels') && $this->checkForeignKeyExists('price_levels_products', 'id_product');
}
/** Price Levels Products - add missing constraint */
public function makeChanges_5()
{
sqlQuery('ALTER TABLE '.getTableName('price_levels_products').' CHANGE `id_product` `id_product` INT(11) NOT NULL');
sqlQuery('DELETE plp FROM '.getTableName('price_levels_products').' plp
LEFT JOIN '.getTableName('price_levels').' pl ON pl.id=plp.id_price_level
LEFT JOIN '.getTableName('products').' p ON p.id=plp.id_product
WHERE pl.id IS NULL OR p.id IS NULL');
sqlQuery('ALTER TABLE '.getTableName('price_levels_products').' ADD FOREIGN KEY (`id_price_level`) REFERENCES `price_levels`(`id`) ON DELETE CASCADE ON UPDATE CASCADE');
sqlQuery('ALTER TABLE '.getTableName('price_levels_products').' ADD FOREIGN KEY (`id_product`) REFERENCES `products`(`id`) ON DELETE CASCADE ON UPDATE CASCADE');
$this->upgradeOK();
}
public function checkRightfulness_6()
{
return findModule('price_levels') && $this->checkForeignKeyExists('price_levels_sections', 'id_section');
}
/** Price Levels Sections - add missing constraint */
public function makeChanges_6()
{
sqlQuery('ALTER TABLE '.getTableName('price_levels_sections').' CHANGE `id_section` `id_section` INT(11) NOT NULL');
sqlQuery('DELETE plp FROM '.getTableName('price_levels_sections').' plp
LEFT JOIN '.getTableName('price_levels').' pl ON pl.id=plp.id_price_level
LEFT JOIN '.getTableName('sections').' p ON p.id=plp.id_section
WHERE pl.id IS NULL OR p.id IS NULL');
sqlQuery('ALTER TABLE '.getTableName('price_levels_sections').' ADD FOREIGN KEY (`id_price_level`) REFERENCES `price_levels`(`id`) ON DELETE CASCADE ON UPDATE CASCADE');
sqlQuery('ALTER TABLE '.getTableName('price_levels_sections').' ADD FOREIGN KEY (`id_section`) REFERENCES `sections`(`id`) ON DELETE CASCADE ON UPDATE CASCADE');
$this->upgradeOK();
}
public function checkRightfulness_7()
{
return findModule('price_levels') && $this->checkForeignKeyExists('price_levels_producers', 'id_producer');
}
/** Price Levels Producers - add missing constraint */
public function makeChanges_7()
{
sqlQuery('ALTER TABLE '.getTableName('price_levels_producers').' CHANGE `id_producer` `id_producer` INT(10) UNSIGNED NOT NULL');
sqlQuery('DELETE plp FROM '.getTableName('price_levels_producers').' plp
LEFT JOIN '.getTableName('price_levels').' pl ON pl.id=plp.id_price_level
LEFT JOIN '.getTableName('producers').' p ON p.id=plp.id_producer
WHERE pl.id IS NULL OR p.id IS NULL');
sqlQuery('ALTER TABLE '.getTableName('price_levels_producers').' ADD FOREIGN KEY (`id_price_level`) REFERENCES `price_levels`(`id`) ON DELETE CASCADE ON UPDATE CASCADE');
sqlQuery('ALTER TABLE '.getTableName('price_levels_producers').' ADD FOREIGN KEY (`id_producer`) REFERENCES `producers`(`id`) ON DELETE CASCADE ON UPDATE CASCADE');
$this->upgradeOK();
}
public function checkRightfulness_8()
{
return findModule('price_levels') && $this->checkForeignKeyExists('price_levels_producers', 'id_producer');
}
/** Price Levels Producers - add missing constraint */
public function makeChanges_8()
{
sqlQuery('ALTER TABLE '.getTableName('sections').' CHANGE `lead_figure` `lead_figure` ENUM("Y","N") NOT NULL DEFAULT "N"');
sqlQuery('ALTER TABLE '.getTableName('sections').' CHANGE `behaviour` `behaviour` ENUM("1","2") NOT NULL DEFAULT "2"');
$this->upgradeOK();
}
public function checkRightfulness_9()
{
return findModule('deliveries') && $this->checkColumnExists('delivery_type_delivery', 'class');
}
/** Delivery Type Delivery - class */
public function makeChanges_9()
{
sqlQuery('ALTER TABLE '.getTableName('delivery_type_delivery').' ADD `class` VARCHAR(50) NULL DEFAULT NULL');
$this->upgradeOK();
}
//
// function checkRightfulness_10()
// {
// return findModule('eshop_delivery') && $this->checkColumnExists('delivery_type_delivery', 'in_person');
// }
//
// /** Delivery Type Delivery - in_person */
// function makeChanges_10()
// {
// sqlQuery("ALTER TABLE ".getTableName('delivery_type_delivery')." ADD `in_person` ENUM('Y','N') DEFAULT 'N'");
//
// $this->upgradeOK();
// }
public function checkRightfulness_11()
{
return findModule('eshop_delivery') && $this->checkColumnExists('delivery_type_delivery', 'time_days');
}
/** Delivery Type Delivery - delivery days and delivery hour */
public function makeChanges_11()
{
sqlQuery('ALTER TABLE '.getTableName('delivery_type_delivery').' ADD `time_days` INT NULL DEFAULT NULL , ADD `time_hours` TIME NULL DEFAULT NULL');
$this->upgradeOK();
}
public function checkRightfulness_12()
{
return $this->checkEnumExists('products', 'figure', 'O');
}
/** Old products - product.figure ENUM add 'O' */
public function makeChanges_12()
{
$this->checkEnumExists('products', 'figure', 'O', $figures);
$figures = str_replace(')', ",'O')", $figures);
sqlQuery('ALTER TABLE '.getTableName('products')." CHANGE `figure` `figure` {$figures} DEFAULT 'Y'");
$this->upgradeOK();
}
public function checkRightfulness_13()
{
return $this->checkColumnExists('producers', 'meta_title');
}
/** Producers - add SEO columns */
public function makeChanges_13()
{
$SQL = sqlQuery('ALTER TABLE '.getTableName('producers').' ADD
(`meta_title` VARCHAR(70) NULL DEFAULT NULL,
`meta_description` VARCHAR(250) NULL DEFAULT NULL,
`meta_keywords` VARCHAR(100) NULL DEFAULT NULL)');
$this->upgradeOK();
}
public function checkRightfulness_14()
{
return findModule('sliders') && $this->checkColumnExists('sliders_images', 'date_from');
}
/** Sliders images - add dates columns */
public function makeChanges_14()
{
sqlQuery('ALTER TABLE '.getTableName('sliders_images').' ADD `date_from` DATETIME NULL');
sqlQuery('ALTER TABLE '.getTableName('sliders_images').' ADD `date_to` DATETIME NULL');
$this->upgradeOK();
}
public function checkRightfulness_15()
{
return findModule('sliders') && $this->checkColumnExists('sliders', 'size');
}
/** Sliders - add size */
public function makeChanges_15()
{
sqlQuery('ALTER TABLE '.getTableName('sliders').' ADD `size` VARCHAR(20) NULL DEFAULT NULL');
$this->upgradeOK();
}
public function checkRightfulness_16()
{
return $this->checkColumnExists('parameters', 'position');
}
/** Add position column for parameters */
public function makeChanges_16()
{
sqlQuery('ALTER TABLE '.getTableName('parameters').' ADD `position` INT(11) NULL ');
$this->upgradeOK();
}
public function checkRightfulness_17()
{
return $this->checkColumnExists('producers', 'orderby');
}
/** Add ordering columns for producers */
public function makeChanges_17()
{
sqlQuery('ALTER TABLE '.getTableName('producers')." ADD `orderby` ENUM('date','title','price','store') NOT NULL DEFAULT 'title' ");
sqlQuery('ALTER TABLE '.getTableName('producers')." ADD `orderdir` ENUM('ASC','DESC') NOT NULL DEFAULT 'ASC' ");
$this->upgradeOK();
}
public function checkRightfulness_18()
{
return findModule('eshop_users') && $this->checkTableExists('users_groups');
}
/** Create Users Groups and relations table*/
public function makeChanges_18()
{
sqlQuery('CREATE TABLE IF NOT EXISTS `users_groups` (
`id` INT(11) NOT NULL,
`name` VARCHAR(50) NOT NULL,
`descr` TEXT
) ENGINE=InnoDB;
ALTER TABLE `users_groups` ADD PRIMARY KEY (`id`);
ALTER TABLE `users_groups`
MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=1;
ALTER TABLE `users_groups` ADD UNIQUE(`name`);
CREATE TABLE IF NOT EXISTS `users_groups_relations` (
`id_group` INT(11) NOT NULL,
`id_user` INT(11) UNSIGNED NOT NULL
) ENGINE=InnoDB;
ALTER TABLE `users_groups_relations` ADD PRIMARY KEY (`id_group`,`id_user`), ADD KEY `users_groups_relations_ibfk_2` (`id_user`);
ALTER TABLE `users_groups_relations`
ADD CONSTRAINT `users_groups_relations_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `users_groups_relations_ibfk_1` FOREIGN KEY (`id_group`) REFERENCES `users_groups` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `users_groups` ADD UNIQUE(`name`);
');
$this->upgradeOK();
}
public function checkRightfulness_19()
{
return $this->checkColumnExists('products_in_sections', 'position');
}
public function checkRightfulness_20()
{
return !$this->checkColumnExists('settings', 'key_name') && Settings::getDefault()->user_rights_version == 1;
}
/** Move analytics from config to settings */
public function makeChanges_20()
{
global $dbcfg, $cfg;
$settings = Settings::createFromDB();
if (empty($dbcfg['analytics']['google_analytics']['ID']) && !empty($cfg['Modules']['google_analytics']['ID'])) {
$settings->analytics['google_analytics']['ID'] = $cfg['Modules']['google_analytics']['ID'];
}
if (empty($dbcfg['analytics']['google_conversion']['ID']) && !empty($cfg['Modules']['google_conversion']['ID'])) {
$settings->analytics['google_conversion']['ID'] = $cfg['Modules']['google_conversion']['ID'];
}
if (empty($dbcfg['analytics']['google_conversion']['label']) && !empty($cfg['Modules']['google_conversion']['label'])) {
$settings->analytics['google_conversion']['label'] = $cfg['Modules']['google_conversion']['label'];
}
if (empty($dbcfg['analytics']['heureka_overeno']['ID']) && !empty($cfg['Heureka']['id'])) {
$settings->analytics['heureka_overeno']['ID'] = $cfg['Heureka']['id'];
}
if (empty($dbcfg['analytics']['heureka_overeno']['ID']) && !empty($cfg['Modules']['heureka_overeno']['id'])) {
$settings->analytics['heureka_overeno']['ID'] = $cfg['Modules']['heureka_overeno']['id'];
}
if (empty($dbcfg['analytics']['heureka_conversion']['ID']) && !empty($cfg['Modules']['heureka_conversion']['ID'])) {
$settings->analytics['heureka_conversion']['ID'] = $cfg['Modules']['heureka_conversion']['ID'];
}
if (empty($dbcfg['analytics']['zbozi_cz_feedback']['chsum']) && !empty($cfg['Modules']['zbozi_cz_feedback']['chsum'])) {
$settings->analytics['zbozi_cz_feedback']['chsum'] = $cfg['Modules']['zbozi_cz_feedback']['chsum'];
}
if (empty($dbcfg['analytics']['sklik_conversion']['ID']) && !empty($cfg['Modules']['sklik_conversion']['ID'])) {
$settings->analytics['sklik_conversion']['ID'] = $cfg['Modules']['sklik_conversion']['ID'];
}
if (empty($dbcfg['analytics']['seznam_rtg']['ID']) && !empty($cfg['Modules']['seznam_rtg']['ID'])) {
$settings->analytics['seznam_rtg']['ID'] = $cfg['Modules']['seznam_rtg']['ID'];
}
$this->commitDataMigration(2);
$this->upgradeOK();
}
public function checkRightfulness_22()
{
return !$this->checkColumnExists('settings', 'settings') && $this->checkColumnCollation('settings', 'settings', 'utf8mb4_bin');
}
/** Change settings to UTF-8 */
public function makeChanges_22()
{
sqlQuery('ALTER TABLE `settings` CHANGE `settings` `settings` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL;');
$this->upgradeOK();
}
}