shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

1001.php (11598B)


      1 <?php
      2 class ModelUpgrade1001 extends Model {
      3 	public function upgrade() {
      4 		// address
      5 		$this->db->query("ALTER TABLE `" . DB_PREFIX . "address` CHANGE `company` `company` VARCHAR(40) NOT NULL");
      6 
      7 		// order
      8 		$this->db->query("ALTER TABLE `" . DB_PREFIX . "order` CHANGE `payment_company` `payment_company` VARCHAR(40) NOT NULL");
      9 
     10 		// order
     11 		$this->db->query("ALTER TABLE `" . DB_PREFIX . "order` CHANGE `shipping_company` `shipping_company` VARCHAR(40) NOT NULL");
     12 
     13 		// affiliate
     14 		$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "affiliate'");
     15 		
     16 		if ($query->num_rows) {
     17 			$this->db->query("ALTER TABLE `" . DB_PREFIX . "affiliate` CHANGE `company` `company` VARCHAR(40) NOT NULL");
     18 		}
     19 
     20 		// order_history
     21 		$this->db->query("ALTER TABLE `" . DB_PREFIX . "order_history` CHANGE `order_status_id` `order_status_id` int(11) NOT NULL");
     22 
     23 		// order_recurring
     24 		$this->db->query("ALTER TABLE `" . DB_PREFIX . "order_recurring` CHANGE `status` `status` tinyint(4) NOT NULL AFTER `trial_price`");
     25 
     26 		// order_recurring
     27 		$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "order_recurring' AND COLUMN_NAME = 'created'");
     28 
     29 		if ($query->num_rows) {
     30 			$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "order_recurring' AND COLUMN_NAME = 'date_added'");
     31 
     32 			if ($query->num_rows) {
     33 				$this->db->query("UPDATE `" . DB_PREFIX . "order_recurring` SET `date_added` = `created` WHERE `date_added` IS NULL or `date_added` = ''");
     34 				$this->db->query("ALTER TABLE `" . DB_PREFIX . "order_recurring` DROP `created`");
     35 			} else {
     36 				$this->db->query("ALTER TABLE `" . DB_PREFIX . "order_recurring` CHANGE `created` `date_added` datetime NOT NULL AFTER `status`");
     37 			}
     38 		}
     39 
     40 		// order_recurring
     41 		$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "order_recurring' AND COLUMN_NAME = 'profile_id'");
     42 
     43 		if ($query->num_rows) {
     44 			$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "order_recurring' AND COLUMN_NAME = 'recurring_id'");
     45 
     46 			if ($query->num_rows) {
     47 				$this->db->query("UPDATE `" . DB_PREFIX . "order_recurring` SET `recurring_id` = `profile_id` WHERE `recurring_id` IS NULL or `recurring_id` = ''");
     48 				$this->db->query("ALTER TABLE `" . DB_PREFIX . "order_recurring` DROP `profile_id`");
     49 			} else {
     50 				$this->db->query("ALTER TABLE `" . DB_PREFIX . "order_recurring` CHANGE `profile_id` `recurring_id` int(11) NOT NULL");
     51 			}
     52 		}
     53 
     54 		// order_recurring
     55 		$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "order_recurring' AND COLUMN_NAME = 'profile_name'");
     56 
     57 		if ($query->num_rows) {
     58 			$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "order_recurring' AND COLUMN_NAME = 'recurring_name'");
     59 
     60 			if ($query->num_rows) {
     61 				$this->db->query("UPDATE `" . DB_PREFIX . "order_recurring` SET `recurring_name` = `profile_name` WHERE `recurring_name` IS NULL or `recurring_name` = ''");
     62 				$this->db->query("ALTER TABLE `" . DB_PREFIX . "order_recurring` DROP `profile_name`");
     63 			} else {
     64 				$this->db->query("ALTER TABLE `" . DB_PREFIX . "order_recurring` CHANGE `profile_name` `recurring_name` varchar(255) NOT NULL");
     65 			}
     66 		}
     67 
     68 		// order_recurring
     69 		$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "order_recurring' AND COLUMN_NAME = 'profile_description'");
     70 
     71 		if ($query->num_rows) {
     72 			$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "order_recurring' AND COLUMN_NAME = 'recurring_description'");
     73 
     74 			if ($query->num_rows) {
     75 				$this->db->query("UPDATE `" . DB_PREFIX . "order_recurring` SET `recurring_description` = `profile_description` WHERE `recurring_description` IS NULL or `recurring_description` = ''");
     76 				$this->db->query("ALTER TABLE `" . DB_PREFIX . "order_recurring` DROP `profile_description`");
     77 			} else {
     78 				$this->db->query("ALTER TABLE `" . DB_PREFIX . "order_recurring` CHANGE `profile_description` `recurring_description` varchar(255) NOT NULL");
     79 			}
     80 		}
     81 
     82 		// address
     83 		$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "address' AND COLUMN_NAME = 'custom_field'");
     84 
     85 		if (!$query->num_rows) {
     86 			$this->db->query("ALTER TABLE `" . DB_PREFIX . "address` ADD `custom_field` TEXT NOT NULL AFTER `zone_id`");
     87 		}
     88 
     89 		// customer
     90 		$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "customer' AND COLUMN_NAME = 'custom_field'");
     91 
     92 		if (!$query->num_rows) {
     93 			$this->db->query("ALTER TABLE `" . DB_PREFIX . "customer` ADD `custom_field` TEXT NOT NULL AFTER `address_id`");
     94 		}
     95 
     96 		// order
     97 		$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "order' AND COLUMN_NAME = 'custom_field'");
     98 
     99 		if (!$query->num_rows) {
    100 			$this->db->query("ALTER TABLE `" . DB_PREFIX . "order` ADD `custom_field` TEXT NOT NULL AFTER `telephone`");
    101 		}
    102 
    103 		// order
    104 		$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "order' AND COLUMN_NAME = 'payment_custom_field'");
    105 
    106 		if (!$query->num_rows) {
    107 			$this->db->query("ALTER TABLE `" . DB_PREFIX . "order` ADD `payment_custom_field` TEXT NOT NULL AFTER `payment_address_format`");
    108 		}
    109 
    110 		// order
    111 		$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "order' AND COLUMN_NAME = 'shipping_custom_field'");
    112 
    113 		if (!$query->num_rows) {
    114 			$this->db->query("ALTER TABLE `" . DB_PREFIX . "order` ADD `shipping_custom_field` TEXT NOT NULL AFTER `shipping_address_format`");
    115 		}
    116 
    117 		// banner
    118 		$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "banner_image' AND COLUMN_NAME = 'sort_order'");
    119 
    120 		if (!$query->num_rows) {
    121 			$this->db->query("ALTER TABLE `" . DB_PREFIX . "banner_image` ADD `sort_order` INT(3) NOT NULL AFTER `image`");
    122 		}
    123 
    124 		// setting
    125 		$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "setting' AND COLUMN_NAME = 'group'");
    126 
    127 		if ($query->num_rows) {
    128 			// Leave code if already there and just drop group
    129 			$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "setting' AND COLUMN_NAME = 'code'");
    130 
    131 			if ($query->num_rows) {
    132 				$this->db->query("UPDATE `" . DB_PREFIX . "setting` SET `code` = `group` WHERE `code` IS NULL or `code` = ''");
    133 				$this->db->query("ALTER TABLE `" . DB_PREFIX . "setting` DROP `group`");
    134 			} else {
    135 				$this->db->query("ALTER TABLE `" . DB_PREFIX . "setting` CHANGE `group` `code` varchar(32) NOT NULL");
    136 			}
    137 		}
    138 		
    139 		// tags
    140 		$query = $this->db->query("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '" . DB_DATABASE . "' AND TABLE_NAME = '" . DB_PREFIX . "product_tag'");
    141 
    142 		if ($query->num_rows) {
    143 			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "language");
    144 
    145 			foreach ($query->rows as $language) {
    146 				// Get old tags
    147 				$query = $this->db->query("SELECT p.product_id, GROUP_CONCAT(DISTINCT pt.tag order by pt.tag ASC SEPARATOR ',') as tags FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_tag pt ON (p.product_id = pt.product_id) WHERE pt.language_id = '" . (int)$language['language_id'] . "' GROUP BY p.product_id");
    148 
    149 				if ($query->num_rows) {
    150 					foreach ($query->rows as $row) {
    151 						$this->db->query("UPDATE " . DB_PREFIX . "product_description SET tag = '" . $this->db->escape(strtolower($row['tags'])) . "' WHERE product_id = '" . (int)$row['product_id'] . "' AND language_id = '" . (int)$language['language_id'] . "'");
    152 						$this->db->query("DELETE FROM " . DB_PREFIX . "product_tag WHERE product_id = '" . (int)$row['product_id'] . "' AND language_id = '" . (int)$language['language_id'] . "'");
    153 					}
    154 				}
    155 			}
    156 		}
    157 
    158 		// Update the config.php by adding a DIR_MODIFICATION
    159 		if (is_file(DIR_OPENCART . 'config.php')) {
    160 			$files = glob(DIR_OPENCART . '{config.php,admin/config.php}', GLOB_BRACE);
    161 
    162 			foreach ($files as $file) {
    163 				if (!is_writable($file)) {
    164 					exit(json_encode(array('error' => 'File is read only. Please adjust and try again: ' . $file)));
    165 				}
    166 
    167 				$upgrade = true;
    168 
    169 				$lines = file($file);
    170 
    171 				foreach ($lines as $line) {
    172 					if (strpos($line, 'DIR_MODIFICATION') !== false) {
    173 						$upgrade = false;
    174 
    175 						break;
    176 					}
    177 				}
    178 
    179 				if ($upgrade) {
    180 					$output = '';
    181 
    182 					foreach ($lines as $line_id => $line) {
    183 						if (strpos($line, 'DIR_LOGS') !== false) {
    184 							$new_line = "define('DIR_MODIFICATION', '" . str_replace("\\", "/", DIR_SYSTEM) . 'modification/' . "');";
    185 							$output .= $new_line . "\n";
    186 							$output .= $line;
    187 						} else {
    188 							$output .= $line;
    189 						}
    190 					}
    191 
    192 					file_put_contents($file, $output);
    193 				}
    194 			}
    195 
    196 			// Update the config.php by adding a DIR_UPLOAD
    197 			foreach ($files as $file) {
    198 				if (!is_writable($file)) {
    199 					exit(json_encode(array('error' => 'File is read only. Please adjust and try again: ' . $file)));
    200 				}
    201 
    202 				$upgrade = true;
    203 
    204 				$lines = file($file);
    205 
    206 				foreach ($lines as $line) {
    207 					if (strpos($line, 'DIR_UPLOAD') !== false) {
    208 						$upgrade = false;
    209 
    210 						break;
    211 					}
    212 				}
    213 
    214 				if ($upgrade) {
    215 					$output = '';
    216 
    217 					foreach ($lines as $line_id => $line) {
    218 						if (strpos($line, 'DIR_LOGS') !== false) {
    219 							$new_line = "define('DIR_UPLOAD', '" . str_replace("\\", "/", DIR_SYSTEM) . 'upload/' . "');";
    220 							$output .= $new_line . "\n";
    221 							$output .= $line;
    222 						} else {
    223 							$output .= $line;
    224 						}
    225 					}
    226 
    227 					file_put_contents($file, $output);
    228 				}
    229 			}
    230 
    231 			// Update the config.php to change mysql to mysqli
    232 			foreach ($files as $file) {
    233 				if (!is_writable($file)) {
    234 					exit(json_encode(array('error' => 'File is read only. Please adjust and try again: ' . $file)));
    235 				}
    236 
    237 				$upgrade = false;
    238 
    239 				$lines = file($file);
    240 
    241 				foreach ($lines as $line) {
    242 					if (strpos($line, "'mysql'") !== false) {
    243 						$upgrade = true;
    244 
    245 						break;
    246 					}
    247 				}
    248 
    249 				if ($upgrade) {
    250 					$output = '';
    251 
    252 					foreach ($lines as $line_id => $line) {
    253 						if (strpos($line, "'mysql'") !== false) {
    254 							$new_line = "define('DB_DRIVER', 'mysqli');";
    255 							$output .= $new_line . "\n";
    256 						} else {
    257 							$output .= $line;
    258 						}
    259 					}
    260 
    261 					file_put_contents($file, $output);
    262 				}
    263 			}
    264 		}
    265 	}
    266 }