* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt * @package System * @version $Id: $ */ $updateto = '0.9'; $frontend = 'froxlor'; $updatelog->logAction(ADM_ACTION, LOG_WARNING, "Upgrading SysCP ".$settings['panel']['version']." to Froxlor ". $updateto); // set new version $query = 'UPDATE `%s` SET `value` = \'' . $updateto . '\' WHERE `settinggroup` = \'panel\' AND `varname` = \'version\''; $query = sprintf($query, TABLE_PANEL_SETTINGS); $db->query($query); $settings['panel']['version'] = $updateto; // add field frontend $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system','frontend','froxlor')"); $settings['panel']['frontend'] = 'froxlor'; /* * this is the main upgrade */ if($settings['panel']['frontend'] == 'froxlor' && $settings['panel']['version'] == '0.9') { /* * add missing database-updates if necessary (old: update/update_database.php */ if(!isset($settings['system']['dbversion']) || $settings['system']['dbversion'] < '1') { $db->query("ALTER TABLE `panel_databases` ADD `dbserver` INT( 11 ) UNSIGNED NOT NULL default '0';"); } if(!isset($settings['system']['dbversion']) || $settings['system']['dbversion'] < '2') { $db->query("ALTER TABLE `panel_ipsandports` CHANGE `ssl_cert` `ssl_cert_file` VARCHAR( 255 ) NOT NULL, ADD `ssl_key_file` VARCHAR( 255 ) NOT NULL, ADD `ssl_ca_file` VARCHAR( 255 ) NOT NULL, ADD `default_vhostconf_domain` TEXT NOT NULL;"); $db->query("INSERT INTO `panel_settings` SET `settinggroup` = 'system', `varname` = 'ssl_key_file', `value` = '';"); $db->query("INSERT INTO `panel_settings` SET `settinggroup` = 'system', `varname` = 'ssl_ca_file', `value` = '';"); } // eof(lostuff) /* * remove billing tables in database */ define('TABLE_BILLING_INVOICES', 'billing_invoices'); define('TABLE_BILLING_INVOICES_ADMINS', 'billing_invoices_admins'); define('TABLE_BILLING_INVOICE_CHANGES', 'billing_invoice_changes'); define('TABLE_BILLING_INVOICE_CHANGES_ADMINS', 'billing_invoice_changes_admins'); define('TABLE_BILLING_SERVICE_CATEGORIES', 'billing_service_categories'); define('TABLE_BILLING_SERVICE_CATEGORIES_ADMINS', 'billing_service_categories_admins'); define('TABLE_BILLING_SERVICE_DOMAINS_TEMPLATES', 'billing_service_domains_templates'); define('TABLE_BILLING_SERVICE_OTHER', 'billing_service_other'); define('TABLE_BILLING_SERVICE_OTHER_TEMPLATES', 'billing_service_other_templates'); define('TABLE_BILLING_TAXCLASSES', 'billing_taxclasses'); define('TABLE_BILLING_TAXRATES', 'billing_taxrates'); $db->query("DROP TABLE `" . TABLE_BILLING_SERVICE_CATEGORIES . "`;"); $db->query("DROP TABLE `" . TABLE_BILLING_SERVICE_CATEGORIES_ADMINS . "`;"); $db->query("DROP TABLE `" . TABLE_BILLING_SERVICE_DOMAINS_TEMPLATES . "`;"); $db->query("DROP TABLE `" . TABLE_BILLING_SERVICE_OTHER . "`;"); $db->query("DROP TABLE `" . TABLE_BILLING_SERVICE_OTHER_TEMPLATES . "`;"); $db->query("DROP TABLE `" . TABLE_BILLING_TAXCLASSES . "`;"); $db->query("DROP TABLE `" . TABLE_BILLING_TAXRATES . "`;"); $db->query("DROP TABLE `" . TABLE_BILLING_INVOICES . "`;"); $db->query("DROP TABLE `" . TABLE_BILLING_INVOICES_ADMINS . "`;"); $db->query("DROP TABLE `" . TABLE_BILLING_INVOICE_CHANGES . "`;"); $db->query("DROP TABLE `" . TABLE_BILLING_INVOICE_CHANGES_ADMINS . "`;"); $db->query("DROP TABLE `" . TABLE_PANEL_DISKSPACE . "`;"); $db->query("DROP TABLE `" . TABLE_PANEL_DISKSPACE_ADMINS . "`;"); /* * update panel_domains, panel_customers, panel_admins */ $db->query("ALTER TABLE `" . TABLE_PANEL_ADMINS . "` DROP `firstname`, DROP `title`, DROP `company`, DROP `street`, DROP `zipcode`, DROP `city`, DROP `country`, DROP `phone`, DROP `fax`, DROP `taxid`, DROP `contract_date`, DROP `contract_number`, DROP `contract_details`, DROP `included_domains_qty`, DROP `included_domains_tld`, DROP `additional_traffic_fee`, DROP `additional_traffic_unit`, DROP `additional_diskspace_fee`, DROP `additional_diskspace_unit`, DROP `taxclass`, DROP `setup_fee`, DROP `interval_fee`, DROP `interval_length`, DROP `interval_type`, DROP `interval_payment`, DROP `calc_tax`, DROP `term_of_payment`, DROP `payment_every`, DROP `payment_method`, DROP `bankaccount_holder`, DROP `bankaccount_number`, DROP `bankaccount_blz`, DROP `bankaccount_bank`, DROP `service_active`, DROP `servicestart_date`, DROP `serviceend_date`, DROP `lastinvoiced_date`, DROP `lastinvoiced_date_traffic`, DROP `lastinvoiced_date_diskspace`, DROP `customer_categories_once`, DROP `customer_categories_period`, DROP `invoice_fee`, DROP `invoice_fee_hosting`, DROP `invoice_fee_hosting_customers`, DROP `invoice_fee_domains`, DROP `invoice_fee_traffic`, DROP `invoice_fee_diskspace`, DROP `invoice_fee_other`, DROP `edit_billingdata`;"); $db->query("ALTER TABLE `" . TABLE_PANEL_CUSTOMERS . "` DROP `taxid`, DROP `title`, DROP `country`, DROP `additional_service_description`, DROP `contract_date`, DROP `contract_number`, DROP `contract_details`, DROP `included_domains_qty`, DROP `included_domains_tld`, DROP `additional_traffic_fee`, DROP `additional_traffic_unit`, DROP `additional_diskspace_fee`, DROP `additional_diskspace_unit`, DROP `taxclass`, DROP `setup_fee`, DROP `interval_fee`, DROP `interval_length`, DROP `interval_type`, DROP `interval_payment`, DROP `calc_tax`, DROP `term_of_payment`, DROP `payment_every`, DROP `payment_method`, DROP `bankaccount_holder`, DROP `bankaccount_number`, DROP `bankaccount_blz`, DROP `bankaccount_bank`, DROP `service_active`, DROP `servicestart_date`, DROP `serviceend_date`, DROP `lastinvoiced_date`, DROP `lastinvoiced_date_traffic`, DROP `lastinvoiced_date_diskspace`, DROP `invoice_fee`, DROP `invoice_fee_hosting`, DROP `invoice_fee_domains`, DROP `invoice_fee_traffic`, DROP `invoice_fee_diskspace`, DROP `invoice_fee_other`;"); $db->query("ALTER TABLE `panel_domains` DROP `taxclass`, DROP `setup_fee`, DROP `interval_fee`, DROP `interval_length`, DROP `interval_type`, DROP `interval_payment`, DROP `service_active`, DROP `servicestart_date`, DROP `serviceend_date`, DROP `lastinvoiced_date`;"); $db->query("DELETE FROM `" . TABLE_PANEL_SETTINGS . "` WHERE `settinggroup` = 'billing';"); $db->query("ALTER TABLE `" . TABLE_PANEL_ADMINS . "` MODIFY `traffic` BIGINT(30), MODIFY `traffic_used` BIGINT(30)"); $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (119, 'spf', 'use_spf', '0');"); $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (120, 'spf', 'spf_entry', '@ IN TXT \"v=spf1 a mx -all\"');"); // Convert all data to UTF-8 to have a sane standard across all data $tables = $db->fetch_array("SHOW TABLES"); foreach ($tables as $table) { $db->query("ALTER TABLE " . $table[0] . " CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;"); $db->query("ALTER TABLE " . $table[0] . " DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci"); $columns = $db->fetch_array("SHOW COLUMNS FROM ".$table[0]); $affected_columns = array(); $primarykey = ""; foreach ($columns as $column) { if (!(strpos($column['Type'], "char") === false) || !(strpos($column['Type'], "text") === false)) { $affected_columns[] = $column['Field']; } if ($column['Key'] == 'PRI') { $primarykey = $column['Field']; } } $count_cols = count($affected_columns); if ($count_cols > 0) { $load = ""; foreach($affected_columns as $col) { $load .= ", " . $col; } $rows = $db->fetch_array("SELECT $primarykey" . $load . " FROM " . $table[0]); foreach($rows as $row) { $changes = ""; for ($i = 0; $i < $count_cols; $i++) { $base = $affected_columns[$i] . " = " . $db->escape(convertUtf8($row[$affected_columns[$i]])) ; $changes .= ($i == ($count_cols-1)) ? $base : $base . ", "; } $db->query("UPDATE " . $table[0] . " SET " . $changes . " WHERE $primarykey = " . $db->escape($row['id']) . ";"); } } } } ?>