public function __construct() { #init update process $addon_scheme = SchemesManager::getScheme($this->addon_name); $addon_data = Registry::get('addons.' . $this->addon_name); $license = !empty($addon_data['license']) ? trim($addon_data['license']) : ''; $this->settings = array('addon' => $this->addon_name, 'upgrade_server' => $this->upgrade_server, 'packages_server' => $this->packages_server, 'addon_version' => $addon_scheme->getVersion(), 'license' => $license); }
/** @inheritdoc */ public function __construct() { parent::__construct(); /** @var AXmlScheme $addon_scheme */ $addon_scheme = SchemesManager::getScheme('ebay'); $this->addon_id = 'ebay'; $this->license_number = Registry::get(str_rot13('nqqbaf.ronl.ronl_yvprafr_ahzore')); $this->product_edition = 'EBAY'; $this->product_name = $addon_scheme->getName(); $this->product_version = $addon_scheme->getVersion(); $this->product_build = ''; $this->notification_key = 'upgrade_center:addon_ebay'; }
/** * Returns addons list that need be installed for some PRODUCT TYPE * * @param string $product_type Product type * @return array List af addons */ private function _getAddons($product_type = PRODUCT_EDITION) { $available_addons = fn_get_dir_contents(Registry::get('config.dir.addons'), true, false); $addons_list = array(); foreach ($available_addons as $addon_name) { $scheme = SchemesManager::getScheme($addon_name); if (!empty($scheme)) { $auto_install = $scheme->autoInstallFor(); if (in_array($product_type, $auto_install)) { $addons_list[] = $addon_name; } } } return $addons_list; }
/** @inheritdoc */ public function onSuccessPackageInstall($content_schema, $information_schema) { parent::onSuccessPackageInstall($content_schema, $information_schema); if ($this->addon_id) { SchemesManager::clearInternalCache($this->addon_id); /** @var AXmlScheme $scheme */ $scheme = SchemesManager::getScheme($this->addon_id); if ($scheme) { $version = $scheme->getVersion(); if (!empty($version)) { fn_update_addon_version($this->addon_id, $version); } } } }
function uninstall(&$STACK, $addon) { $INSTALLED = array(); $STACK->rewind(); foreach ($STACK as $item) { $INSTALLED[] = $item; } // Check dependencies for this $addon - recurse if necessary $dependencies = SchemesManager::getUninstallDependencies($addon); if (!empty($dependencies)) { foreach ($dependencies as $shortcode => $name) { // print "$addon depends on $shortcode\n"; if (!in_array($shortcode, $INSTALLED)) { uninstall($STACK, $shortcode); } else { echo "warning: {$addon} already uninstalled\n"; } } } if (!isset($INSTALLED) || !in_array($addon, $INSTALLED)) { $result = fn_uninstall_addon($addon, true); if (empty($result)) { echo "could not uninstall '{$addon}' - aborting...\n\n"; echo "Re-installing previously uninstalled addons to restore system to good state\n"; foreach ($STACK as $item) { $addon = $STACK->pop(); fn_install_addon($addon, true, false); fn_update_addon_status($addon, 'A', true, false); print "INSTALL: {$addon}\n"; } exit; } echo "UNINSTALL: {$addon}\n"; $STACK->push($addon); } }
/** * Exports only specified add-on language data * * @param string $addon_id Addon ID (like: gift_certificates, buy_together) * @param string $pack_path Path to exported PO-file * @param string $lang_code 2-letters language code * @param array $current_values Current lang values from DB * @return array Exported data */ private static function exportAddonsPo($addon_id, $pack_path, $lang_code, $current_values = array()) { // Translation packs should not include "Not translated" language data $allow_overlap = $lang_code == 'en' ? true : false; $langs = self::get(array('lang_code' => $lang_code)); $lang = $langs[$lang_code]; fn_rm($pack_path); Po::createHeader($pack_path, $lang); $addon_scheme = SchemesManager::getScheme($addon_id); $values = array(); $originals = $addon_scheme->getOriginals(); $_addon[] = array('name' => $addon_id, 'value' => $addon_scheme->getName($lang_code), 'original_value' => $originals['name']); $_addon = Po::convert($_addon, array(), $allow_overlap); $values = array_merge($values, Po::putValues('Addons' . \I18n_Pofile::DELIMITER . 'name', $_addon, $pack_path)); $_description[] = array('name' => $addon_id, 'value' => $addon_scheme->getDescription($lang_code), 'original_value' => $originals['description']); $_description = Po::convert($_description, array(), $allow_overlap); $values = array_merge($values, Po::putValues('Addons' . \I18n_Pofile::DELIMITER . 'description', $_description, $pack_path)); unset($_addon, $_description, $originals); $language_variables = $addon_scheme->getLanguageValues(false); $original_variables = $addon_scheme->getLanguageValues(true); $_originals = array(); foreach ($original_variables as $id => $val) { $_originals[$val['msgctxt']] = $val; } $original_variables = $_originals; unset($_originals); $_values = array(); foreach ($language_variables as $variable) { if ($lang_code != $variable['lang_code']) { continue; } $key = 'Languages' . \I18n_Pofile::DELIMITER . $variable['name']; $_values[] = array('name' => $variable['name'], 'value' => isset($current_values[$key]) ? $current_values[$key]['value'] : $variable['value'], 'original_value' => isset($original_variables[$key]) ? $original_variables[$key]['msgid'] : ''); } $_values = Po::convert($_values, array(), $allow_overlap); $values = array_merge($values, Po::putValues('Languages', $_values, $pack_path)); unset($original_variables, $language_variables); $_tooltips = array(); $original_tooltips = self::getOriginalValues('SettingsTooltips'); $section = Settings::instance()->getSectionByName($addon_id, Settings::ADDON_SECTION); if (!empty($section)) { $subsections = Settings::instance()->getSectionTabs($section['section_id'], $lang_code); if (!empty($subsections)) { $_sub_sections = array(); $original_values = self::getOriginalValues('SettingsSections'); foreach ($subsections as $subsection) { $_sub_sections[] = array('name' => $subsection['name'], 'value' => $subsection['description'], 'original_value' => isset($original_values['SettingsSections' . \I18n_Pofile::DELIMITER . $addon_id . \I18n_Pofile::DELIMITER . $subsection['name']]) ? $original_values['SettingsSections' . \I18n_Pofile::DELIMITER . $addon_id . \I18n_Pofile::DELIMITER . $subsection['name']]['msgid'] : ''); } $_sub_sections = Po::convert($_sub_sections, array(), $allow_overlap); $values = array_merge($values, Po::putValues('SettingsSections' . \I18n_Pofile::DELIMITER . $addon_id, $_sub_sections, $pack_path)); unset($_sub_sections, $original_values); } unset($subsections); $section_options = Settings::instance()->getList($section['section_id'], 0, false, null, $lang_code); $original_options = self::getOriginalValues('SettingsOptions'); $original_variants = self::getOriginalValues('SettingsVariants'); foreach ($section_options as $section_id => $options) { $_options = array(); foreach ($options as $option) { $_options[] = array('name' => $option['name'], 'value' => $option['description'], 'original_value' => isset($original_options['SettingsOptions' . \I18n_Pofile::DELIMITER . $addon_id . \I18n_Pofile::DELIMITER . $option['name']]) ? $original_options['SettingsOptions' . \I18n_Pofile::DELIMITER . $addon_id . \I18n_Pofile::DELIMITER . $option['name']]['msgid'] : ''); if (!empty($option['variants'])) { $_variants = array(); foreach ($option['variants'] as $variant_id => $variant) { $_variants[] = array('name' => $variant_id, 'value' => $variant, 'original_value' => isset($original_variants['SettingsVariants' . \I18n_Pofile::DELIMITER . $addon_id . \I18n_Pofile::DELIMITER . $option['name'] . \I18n_Pofile::DELIMITER . $variant_id]) ? $original_variants['SettingsVariants' . \I18n_Pofile::DELIMITER . $addon_id . \I18n_Pofile::DELIMITER . $option['name'] . \I18n_Pofile::DELIMITER . $variant_id]['msgid'] : ''); } $_variants = Po::convert($_variants, array(), $allow_overlap); $values = array_merge($values, Po::putValues('SettingsVariants' . \I18n_Pofile::DELIMITER . $addon_id . \I18n_Pofile::DELIMITER . $option['name'], $_variants, $pack_path)); unset($_variants); } if (!empty($option['tooltip'])) { $_tooltips[] = array('name' => $option['name'], 'value' => $option['tooltip'], 'original_value' => isset($original_tooltips['SettingsTooltips' . \I18n_Pofile::DELIMITER . $addon_id . \I18n_Pofile::DELIMITER . $option['name']]) ? $original_tooltips['SettingsTooltips' . \I18n_Pofile::DELIMITER . $addon_id . \I18n_Pofile::DELIMITER . $option['name']]['msgid'] : ''); } } $_options = Po::convert($_options, array(), $allow_overlap); $values = array_merge($values, Po::putValues('SettingsOptions' . \I18n_Pofile::DELIMITER . $addon_id, $_options, $pack_path)); unset($_options); } } $_tooltips = Po::convert($_tooltips, array(), $allow_overlap); $values = array_merge($values, Po::putValues('SettingsTooltips' . \I18n_Pofile::DELIMITER . $addon_id, $_tooltips, $pack_path)); $values = fn_array_value_to_key($values, 'msgctxt'); return $values; }
/** * Gets addons list * * @param array $params search params * @param int $items_per_page items per page for pagination * @param string $lang_code language code * @return array addons list and filtered search params */ function fn_get_addons($params, $items_per_page = 0, $lang_code = CART_LANGUAGE) { $params = LastView::instance()->update('addons', $params); $default_params = array('type' => 'any'); $params = array_merge($default_params, $params); $addons = array(); $sections = Settings::instance()->getAddons(); $all_addons = fn_get_dir_contents(Registry::get('config.dir.addons'), true, false); $installed_addons = db_get_hash_array('SELECT a.addon, a.status, b.name as name, b.description as description, a.separate, a.unmanaged, a.has_icon ' . 'FROM ?:addons as a LEFT JOIN ?:addon_descriptions as b ON b.addon = a.addon AND b.lang_code = ?s' . 'ORDER BY b.name ASC', 'addon', $lang_code); foreach ($installed_addons as $key => $addon) { $installed_addons[$key]['has_sections'] = Settings::instance()->sectionExists($sections, $addon['addon']); $installed_addons[$key]['has_options'] = $installed_addons[$key]['has_sections'] ? Settings::instance()->optionsExists($addon['addon'], 'ADDON') : false; // Check add-on snaphot if (!fn_check_addon_snapshot($key)) { $installed_addons[$key]['status'] = 'D'; $installed_addons[$key]['snapshot_correct'] = false; } else { $installed_addons[$key]['snapshot_correct'] = true; } } foreach ($all_addons as $addon) { $addon_scheme = SchemesManager::getScheme($addon); if (in_array($params['type'], array('any', 'installed', 'active', 'disabled'))) { $search_status = $params['type'] == 'active' ? 'A' : ($params['type'] == 'disabled' ? 'D' : ''); if (!empty($installed_addons[$addon])) { // exclude unmanaged addons from the list if ($installed_addons[$addon]['unmanaged'] == true) { continue; } if (!empty($search_status) && $installed_addons[$addon]['status'] != $search_status) { continue; } $addons[$addon] = $installed_addons[$addon]; if ($addon_scheme != false && !$addon_scheme->getUnmanaged()) { $addons[$addon]['originals'] = $addon_scheme->getOriginals(); } fn_update_lang_objects('installed_addon', $addons[$addon]); // Generate custom description $func = 'fn_addon_dynamic_description_' . $addon; if (function_exists($func)) { $addons[$addon]['description'] = $func($addons[$addon]['description']); } } } if (empty($installed_addons[$addon]) && empty($params['for_company']) && in_array($params['type'], array('any', 'not_installed'))) { if ($addon_scheme != false && !$addon_scheme->getUnmanaged()) { $addons[$addon] = array('status' => 'N', 'name' => $addon_scheme->getName(), 'snapshot_correct' => fn_check_addon_snapshot($addon), 'description' => $addon_scheme->getDescription(), 'has_icon' => $addon_scheme->hasIcon()); } } } if (!empty($params['q'])) { foreach ($addons as $addon => $addon_data) { if (!preg_match('/' . preg_quote($params['q'], '/') . '/ui', $addon_data['name'], $m)) { unset($addons[$addon]); } } } $addons = fn_sort_array_by_key($addons, 'name', SORT_ASC); return array($addons, $params); }
public static function installAddons() { General::connectToOriginalDB(array('table_prefix' => General::formatPrefix())); $addons = db_get_fields("SELECT addon FROM ?:addons"); //fill original values in new database foreach ($addons as $addon) { $addon_scheme = SchemesManager::getScheme($addon); if ($addon_scheme) { if ($original = $addon_scheme->getOriginals()) { db_query("REPLACE INTO ?:original_values ?e", array('msgctxt' => 'Addon:' . $addon, 'msgid' => $original['name'])); db_query("REPLACE INTO ?:original_values ?e", array('msgctxt' => 'AddonDescription:' . $addon, 'msgid' => $original['description'])); } $language_variables = $addon_scheme->getLanguageValues(true); if (!empty($language_variables)) { db_query('REPLACE INTO ?:original_values ?m', $language_variables); } } } General::connectToOriginalDB(); foreach ($addons as $addon) { if (!db_get_field("SELECT status FROM ?:addons WHERE addon = ?s", $addon)) { fn_install_addon($addon, false); } } return true; }
/** * Returns list of all store addons, exclude list of addons in params * * @return array Addons list */ function fn_settings_wizard_get_addons() { $addons_list = array(); $exclude_addons = func_get_args(); $addons = fn_get_dir_contents(Registry::get('config.dir.addons'), true, false); $addons = array_diff($addons, $exclude_addons); foreach ($addons as $addon_id) { $addon_scheme = SchemesManager::getScheme($addon_id); if ($addon_scheme != false && !$addon_scheme->getUnmanaged()) { $addon = array('name' => $addon_scheme->getName(), 'addon_name' => $addon_id, 'description' => $addon_scheme->getDescription(), 'has_icon' => $addon_scheme->hasIcon()); $addons_list[$addon_id] = $addon; } } return $addons_list; }
/** * Create default product tabs * * @return bool Always true */ public function createDefaultTabs() { $templates = $this->getTemplates(true, false); foreach ($templates as $template => $name) { $tab_data = array('name' => $name, 'tab_type' => 'T', 'position' => $this->getMaxPosition() + 1, 'status' => 'A', 'template' => $template, 'is_primary' => 'Y', 'lang_code' => DESCR_SL, 'company_id' => $this->_company_id); $this->update($tab_data); } // Now get tabs blocks from addons foreach (Registry::get('addons') as $addon => $v) { $scheme = AddonSchemesManager::getScheme($addon); if ($scheme != null) { $this->createAddonTabs($addon, $scheme->getTabOrder()); $this->updateAddonTabStatus($addon, $v['status']); } } return true; }
/** * Validates schema to check if upgrade pack can be applied * * @param array $schema Pack schema data * @return bool true if valid, false otherwise */ protected function validateSchema($schema) { $is_valid = true; $required_fields = array('file', 'name', 'description', 'from_version', 'to_version', 'timestamp', 'size', 'type'); foreach ($required_fields as $field) { if (empty($schema[$field])) { $is_valid = false; } } if ($is_valid) { switch ($schema['type']) { case 'core': case 'hotfix': if ($schema['from_version'] != PRODUCT_VERSION) { $is_valid = false; } break; case 'addon': $addon_scheme = SchemesManager::getScheme($schema['id']); if (!empty($addon_scheme)) { $addon_version = $addon_scheme->getVersion(); } else { $is_valid = false; break; } if ($schema['from_version'] != $addon_version) { $is_valid = false; } break; } } return $is_valid; }
$view->assign('id', str_replace('.', '_', $_REQUEST['id'])); $view->assign('type', $_REQUEST['type']); $view->assign('caption', __('continue')); $view->assign('show_pre_upgrade_notice', false); if (defined('AJAX_REQUEST')) { Tygh::$app['ajax']->updateRequest(); } $view->display('views/upgrade_center/components/notices.tpl'); $view->display('views/upgrade_center/components/install_button.tpl'); exit; } else { if ($result === UpgradeCenter::PACKAGE_INSTALL_RESULT_SUCCESS) { if ($_REQUEST['type'] === 'core') { fn_set_notification('N', __('successful'), __('text_uc_upgrade_completed'), 'K'); } else { $addon_schema = \Tygh\Addons\SchemesManager::getScheme($_REQUEST['id']); if ($addon_schema) { $addon_name = $addon_schema->getName(); } else { $addon_name = $_REQUEST['id']; } fn_set_notification('N', __('successful'), __('text_uc_addon_upgrade_completed', array('[name]' => $addon_name)), 'K'); } } elseif ($result === UpgradeCenter::PACKAGE_INSTALL_RESULT_WITH_ERRORS) { fn_set_notification('W', __('warning'), __('text_uc_package_installed_with_errors'), 'K'); } // Browser should perform redirect right after AJAX-request, // because inner soft-redirect causes errors in case of this file was modified by upgrade package. if (defined('AJAX_REQUEST')) { Tygh::$app['ajax']->assign('non_ajax_notifications', true); Tygh::$app['ajax']->assign('force_redirection', fn_url('upgrade_center.manage'));
/** * Gets addons list * * @param array $params search params * @param int $items_per_page items per page for pagination * @param string $lang_code language code * @return array addons list and filtered search params */ function fn_get_addons($params, $items_per_page = 0, $lang_code = CART_LANGUAGE) { $params = LastView::instance()->update('addons', $params); $addons_counter = array('installed' => 0, 'activated' => 0, 'core' => 0, 'other' => 0); $default_params = array('type' => 'any'); $params = array_merge($default_params, $params); $addons = array(); $sections = Settings::instance()->getAddons(); $all_addons = fn_get_dir_contents(Registry::get('config.dir.addons'), true, false); $installed_addons = db_get_hash_array('SELECT a.addon, a.status, b.name as name, b.description as description, a.separate, a.unmanaged, a.has_icon, a.install_datetime ' . 'FROM ?:addons as a LEFT JOIN ?:addon_descriptions as b ON b.addon = a.addon AND b.lang_code = ?s' . 'ORDER BY b.name ASC', 'addon', $lang_code); $addons_counter['installed'] = count($installed_addons); foreach ($installed_addons as $key => $addon) { $installed_addons[$key]['has_sections'] = Settings::instance()->sectionExists($sections, $addon['addon']); $installed_addons[$key]['has_options'] = $installed_addons[$key]['has_sections'] ? Settings::instance()->optionsExists($addon['addon'], 'ADDON') : false; // Check add-on snaphot if (!fn_check_addon_snapshot($key)) { $installed_addons[$key]['status'] = 'D'; $installed_addons[$key]['snapshot_correct'] = false; } else { $installed_addons[$key]['snapshot_correct'] = true; } if ($installed_addons[$key]['status'] == 'A') { $addons_counter['activated']++; } } foreach ($all_addons as $addon) { $addon_scheme = SchemesManager::getScheme($addon); // skip addons with broken or missing scheme if (!$addon_scheme) { continue; } if ($addon_scheme->isCoreAddon()) { $addons_counter['core']++; } else { $addons_counter['other']++; } if (in_array($params['type'], array('any', 'installed', 'active', 'disabled'))) { $search_status = $params['type'] == 'active' ? 'A' : ($params['type'] == 'disabled' ? 'D' : ''); if (!empty($installed_addons[$addon])) { // exclude unmanaged addons from the list if ($installed_addons[$addon]['unmanaged'] == true) { continue; } if (!empty($search_status) && $installed_addons[$addon]['status'] != $search_status) { continue; } $addons[$addon] = $installed_addons[$addon]; $addons[$addon]['supplier'] = $addon_scheme->getSupplier(); $addons[$addon]['supplier_link'] = $addon_scheme->getSupplierLink(); $addons[$addon]['version'] = $addon_scheme->getVersion(); $addons[$addon]['is_core_addon'] = $addon_scheme->isCoreAddon(); $addons[$addon]['delete_url'] = ''; $addons[$addon]['url'] = fn_url("addons.update?addon={$addon}&return_url=" . urlencode(Registry::get('config.current_url'))); if (!Registry::get('runtime.company_id')) { $addons[$addon]['delete_url'] = fn_url("addons.uninstall?addon={$addon}&redirect_url=" . urlencode(Registry::get('config.current_url'))); } if ($addon_scheme != false && !$addon_scheme->getUnmanaged()) { $addons[$addon]['originals'] = $addon_scheme->getOriginals(); } fn_update_lang_objects('installed_addon', $addons[$addon]); if (is_file(Registry::get('config.dir.addons') . $addon . '/func.php')) { require_once Registry::get('config.dir.addons') . $addon . '/func.php'; if (is_file(Registry::get('config.dir.addons') . $addon . '/config.php')) { require_once Registry::get('config.dir.addons') . $addon . '/config.php'; } // Generate custom description $func = 'fn_addon_dynamic_description_' . $addon; if (function_exists($func)) { $addons[$addon]['description'] = $func($addons[$addon]['description']); } //Generate custom url $url_func = 'fn_addon_dynamic_url_' . $addon; if (function_exists($url_func)) { list($addons[$addon]['url'], $addons[$addon]['delete_url']) = $url_func($addons[$addon]['url'], $addons[$addon]['delete_url']); } } } } if (empty($installed_addons[$addon]) && empty($params['for_company']) && in_array($params['type'], array('any', 'not_installed'))) { if ($addon_scheme != false && !$addon_scheme->getUnmanaged()) { $addons[$addon] = array('status' => 'N', 'name' => $addon_scheme->getName(), 'version' => $addon_scheme->getVersion(), 'supplier' => $addon_scheme->getSupplier(), 'supplier_link' => $addon_scheme->getSupplierLink(), 'snapshot_correct' => fn_check_addon_snapshot($addon), 'description' => $addon_scheme->getDescription(), 'has_icon' => $addon_scheme->hasIcon(), 'is_core_addon' => $addon_scheme->isCoreAddon(), 'install_datetime' => null); } } } if (!empty($params['q'])) { foreach ($addons as $addon => $addon_data) { if (!preg_match('/' . preg_quote($params['q'], '/') . '/ui', $addon_data['name'] . $addon_data['supplier'], $m)) { unset($addons[$addon]); } } } if (!empty($params['source'])) { $is_core_addon = $params['source'] == 'core'; foreach ($addons as $addon => $addon_data) { if ($is_core_addon != $addon_data['is_core_addon']) { unset($addons[$addon]); } } } $addons = fn_sort_array_by_key($addons, 'name', SORT_ASC); return array($addons, $params, $addons_counter); }
public static function setActualLangValues() { $addons = self::getInstalledAddons(); $languages = db_get_fields("SELECT lang_code FROM ?:languages"); foreach ($addons as $addon) { $addon_scheme = AddonSchemesManager::getScheme($addon); if (!empty($addon_scheme)) { // Add optional language variables $language_variables = $addon_scheme->getLanguageValues(); if (!empty($language_variables)) { db_query('REPLACE INTO ?:language_values ?m', $language_variables); } foreach ($languages as $lang_code) { $description = $addon_scheme->getDescription($lang_code); $addon_name = $addon_scheme->getName($lang_code); db_query("UPDATE ?:addon_descriptions SET description = ?s, name = ?s WHERE addon = ?s AND lang_code = ?s", $description, $addon_name, $addon, $lang_code); } $tabs = $addon_scheme->getSections(); if (!empty($tabs)) { foreach ($tabs as $tab_index => $tab) { $addon_section_id = db_get_field("SELECT section_id FROM ?:settings_sections WHERE name = ?s AND parent_id = (SELECT section_id FROM ?:settings_sections WHERE name = ?s)", $tab['id'], $addon); //Can't check edition here, so just skip description update if addon section was not found. if (!empty($addon_section_id)) { fn_update_addon_settings_descriptions($addon_section_id, Settings::SECTION_DESCRIPTION, $tab['translations']); $settings = $addon_scheme->getSettings($tab['id']); foreach ($settings as $k => $setting) { $setting_id = db_get_field("SELECT object_id FROM ?:settings_objects WHERE name = ?s AND section_tab_id = ?i", $setting['id'], $addon_section_id); if (!empty($setting_id)) { fn_update_addon_settings_descriptions($setting_id, Settings::SETTING_DESCRIPTION, $setting['translations']); if (isset($setting['variants'])) { foreach ($setting['variants'] as $variant_k => $variant) { $variant_id = db_get_field("SELECT variant_id FROM ?:settings_variants WHERE object_id = ?i AND name = ?s", $setting_id, $variant['id']); if (!empty($variant_id)) { fn_update_addon_settings_descriptions($variant_id, Settings::VARIANT_DESCRIPTION, $variant['translations']); } } } } } } } } } } General::connectToOriginalDB(array('table_prefix' => General::formatPrefix())); $prefix = Registry::get('config.table_prefix'); /* db_query("INSERT INTO ?:state_descriptions (SELECT state_id, ?s as lang_code, state FROM " . $prefix . "state_descriptions WHERE lang_code = ?s) ON DUPLICATE KEY UPDATE ?:state_descriptions.state_id = ?:state_descriptions.state_id", General::$default_language, DEFAULT_LANGUAGE); if (fn_allowed_for('ULTIMATE')) { db_query("INSERT INTO ?:ult_language_values (SELECT ?s as lang_code, name, value, company_id FROM " . $prefix . "ult_language_values WHERE lang_code = ?s) ON DUPLICATE KEY UPDATE ?:ult_language_values.value = ?:ult_language_values.value", General::$default_language, DEFAULT_LANGUAGE); } $new_ver_langs = db_get_fields("SELECT lang_code FROM " . $prefix . "languages"); foreach (db_get_fields("SELECT lang_code FROM ?:languages") as $lang_code) { $_lang_code = in_array($lang_code, $new_ver_langs) ? $lang_code : DEFAULT_LANGUAGE; //We can update only core settings descriptions because addons descriptions were updated during settings restore. db_query("INSERT INTO ?:settings_descriptions " . "(SELECT object_id, object_type, ?s as lang_code, value, tooltip FROM " . $prefix . "settings_descriptions WHERE object_id IN " . "(SELECT object_id FROM " . $prefix . "settings_objects WHERE section_id IN " . "(SELECT section_id FROM " . $prefix . "settings_sections WHERE type = 'CORE')) " . "AND lang_code = ?s) " . "ON DUPLICATE KEY UPDATE ?:settings_descriptions.value = " . $prefix . "settings_descriptions.value, ?:settings_descriptions.tooltip = " . $prefix . "settings_descriptions.tooltip", $lang_code, $_lang_code ); db_query("INSERT INTO ?:language_values " . "(SELECT ?s as lang_code, name, value FROM " . $prefix . "language_values WHERE lang_code = ?s) " . "ON DUPLICATE KEY UPDATE ?:language_values.name = " . $prefix . "language_values.name", $lang_code, $_lang_code ); } db_query("REPLACE INTO ?:original_values (SELECT * FROM " . $prefix . "original_values)"); */ $langs = db_get_fields("SELECT lang_code FROM ?:languages"); $po_path = Registry::get('config.dir.lang_packs'); $params = array('install_newly_added' => true, 'reinstall' => true); foreach ($langs as $lang_code) { $params['force_lang_code'] = $lang_code; $params['validate_lang_code'] = true; if (!is_dir($po_path . $lang_code)) { $params['validate_lang_code'] = false; if (is_dir($po_path . General::$default_language)) { $lang_code = General::$default_language; $params['force_lang_code'] = General::$default_language; } elseif (is_dir($po_path . 'en')) { $lang_code = 'en'; $params['force_lang_code'] = 'en'; } } $result = Languages::installCrowdinPack($po_path . $lang_code, $params); } return true; }
public function import($db_already_cloned) { General::setProgressTitle(__CLASS__); if (!$db_already_cloned) { if (!General::cloneImportedDB($this->store_data)) { return false; } } else { General::setEmptyProgressBar(__('importing_data')); General::setEmptyProgressBar(__('importing_data')); } General::connectToOriginalDB(array('table_prefix' => General::formatPrefix())); General::processAddons($this->store_data, __CLASS__); $main_sql = Registry::get('config.dir.addons') . 'store_import/database/' . $this->main_sql_filename; if (is_file($main_sql)) { //Process main sql if (!db_import_sql_file($main_sql)) { return false; } } db_query("INSERT INTO ?:payment_processors (processor, processor_script, processor_template, admin_template, callback, `type`) VALUES ('Realex Payments Remote', 'realex_remote.php', 'views/orders/components/payments/cc.tpl', 'realex_remote.tpl', 'N', 'P')"); db_query("INSERT INTO ?:payment_processors (processor, processor_script, processor_template, admin_template, callback, `type`) VALUES ('Realex Payments Redirect', 'realex_redirect.php', 'views/orders/components/payments/cc_outside.tpl', 'realex_redirect.tpl', 'N', 'P')"); db_query("UPDATE ?:settings_sections SET `edition_type` = 'ROOT,VENDOR' WHERE `name` = 'Security' AND `type` = 'CORE'"); General::addIpv6Support(); $paypal_enabled = db_get_fields("SELECT payment_id FROM ?:payments WHERE processor_id IN (SELECT processor_id FROM ?:payment_processors WHERE processor_script IN ('paypal.php', 'payflow_pro.php', 'paypal_advanced.php', 'paypal_express.php', 'paypal_pro.php'))"); if (!empty($paypal_enabled)) { db_query("INSERT INTO ?:addons (`addon`, `status`, `version`, `priority`, `dependencies`, `conflicts`, `separate`, `unmanaged`, `has_icon`) VALUES ('paypal', 'A', '1.0', 100, '', '', 0, 0, 0)"); db_query("INSERT INTO ?:settings_sections (`parent_id`, `edition_type`, `name`, `position`, `type`) VALUES (0, 'ROOT,ULT:VENDOR', 'paypal', 0, 'ADDON')"); $section_id = db_get_field("SELECT section_id FROM ?:settings_sections WHERE name = 'paypal' AND type = 'ADDON'"); db_query("INSERT INTO ?:settings_sections (`parent_id`, `edition_type`, `name`, `position`, `type`) VALUES ({$section_id}, 'ROOT,ULT:VENDOR', 'general', 0, 'TAB')"); $parent_id = db_get_field("SELECT section_id FROM ?:settings_sections WHERE parent_id = {$section_id}"); db_query("INSERT INTO ?:settings_objects (`edition_type`, `name`, `section_id`, `section_tab_id`, `type`, `value`, `position`, `is_global`, `handler`, `parent_id`) VALUES\n ('ROOT,ULT:VENDOR', 'paypal_ipn_settings', {$section_id}, {$parent_id}, 'H', '', 0, 'N', '', 0),\n ('ROOT,ULT:VENDOR', 'override_customer_info', {$section_id}, {$parent_id}, 'C', 'Y', 10, 'N', '', 0),\n ('ROOT', 'test_mode', {$section_id}, {$parent_id}, 'C', 'N', 20, 'N', '', 0),\n ('ROOT,ULT:VENDOR', 'template', {$section_id}, {$parent_id}, 'Z', 'statuses_map.tpl', 30, 'N', '', 0),\n ('ROOT,ULT:VENDOR', 'template', {$section_id}, {$parent_id}, 'Z', 'logo_uploader.tpl', 40, 'N', '', 0),\n ('ROOT,ULT:VENDOR', 'pp_statuses', {$section_id}, {$parent_id}, 'D', 'a:10:{s:8:\"refunded\";s:1:\"I\";s:9:\"completed\";s:1:\"P\";s:7:\"pending\";s:1:\"O\";s:17:\"canceled_reversal\";s:1:\"I\";s:7:\"created\";s:1:\"O\";s:6:\"denied\";s:1:\"I\";s:7:\"expired\";s:1:\"F\";s:8:\"reversed\";s:1:\"I\";s:9:\"processed\";s:1:\"P\";s:6:\"voided\";s:1:\"P\";}', 50, 'N', '', 0)\n "); $pp_standart_params = db_get_field("SELECT processor_params FROM ?:payments WHERE processor_id = (SELECT processor_id FROM ?:payment_processors WHERE processor_script = 'paypal.php')"); if (!empty($pp_standart_params)) { $pp_standart_params = unserialize($pp_standart_params); if (!empty($pp_standart_params['statuses'])) { db_query("UPDATE ?:settings_objects SET value = ?s WHERE name = 'pp_statuses'", serialize($pp_standart_params['statuses'])); unset($pp_standart_params['statuses']); $pp_standart_params = serialize($pp_standart_params); db_query("UPDATE ?:payments SET processor_params = ?s WHERE processor_id = (SELECT processor_id FROM ?:payment_processors WHERE processor_script = 'paypal.php')", $pp_standart_params); } } $languages = db_get_fields("SELECT lang_code FROM ?:languages"); $addon_scheme = AddonSchemesManager::getScheme('paypal'); $language_variables = $addon_scheme->getLanguageValues(); if (!empty($language_variables)) { db_query('REPLACE INTO ?:language_values ?m', $language_variables); } $settings_descr = array('paypal_ipn_settings' => 'Instant payment notification settings', 'override_customer_info' => 'Override customer info', 'test_mode' => 'Test mode'); foreach ($languages as $lang_code) { $description = $addon_scheme->getDescription($lang_code); $addon_name = $addon_scheme->getName($lang_code); db_query("INSERT INTO ?:addon_descriptions (addon, name, description, lang_code) VALUES ('paypal', ?s, ?s, ?s) ON DUPLICATE KEY UPDATE ?:addon_descriptions.addon = ?:addon_descriptions.addon", $addon_name, $description, $lang_code); foreach ($settings_descr as $setting_name => $descr) { db_query("REPLACE INTO ?:settings_descriptions VALUES ((SELECT object_id FROM ?:settings_objects WHERE name = ?s), 'O', ?s, ?s, '')", $setting_name, $lang_code, $descr); } } } else { db_query("DELETE FROM ?:payment_processors WHERE processor_script IN ('paypal.php', 'payflow_pro.php', 'paypal_advanced.php', 'paypal_express.php', 'paypal_pro.php')"); } General::updateAltLanguages('language_values', 'name'); General::updateAltLanguages('settings_descriptions', array('object_id', 'object_type')); General::setEmptyProgressBar(); General::setEmptyProgressBar(); General::setEmptyProgressBar(); General::setEmptyProgressBar(); return true; }
function fn_uc_restore_settings($new_edition = '') { $was_settings_backed_up = db_get_field("SHOW TABLES LIKE '?:settings_objects_upg'"); if (!empty($was_settings_backed_up)) { $addons = db_get_fields('SELECT addon FROM ?:addons'); $languages = db_get_fields("SELECT lang_code FROM ?:languages"); if (!empty($new_edition)) { Settings::instance()->setNewEdition($new_edition); } foreach ($addons as $addon) { $addon_scheme = AddonSchemesManager::getScheme($addon); if (!empty($addon_scheme)) { fn_uc_update_addon_settings($addon_scheme); if ($original = $addon_scheme->getOriginals()) { db_query("REPLACE INTO ?:original_values ?e", array('msgctxt' => 'Addon:' . $addon, 'msgid' => $original['name'])); db_query("REPLACE INTO ?:original_values ?e", array('msgctxt' => 'AddonDescription:' . $addon, 'msgid' => $original['description'])); } $language_variables = $addon_scheme->getLanguageValues(true); if (!empty($language_variables)) { db_query('REPLACE INTO ?:original_values ?m', $language_variables); } // $addon_scheme->installLanguageValues(); // foreach ($languages as $lang_code) { // $description = $addon_scheme->getDescription($lang_code); // $addon_name = $addon_scheme->getName($lang_code); // db_query("UPDATE ?:addon_descriptions SET description = ?s, name = ?s WHERE addon = ?s AND lang_code = ?s", $description, $addon_name, $addon, $lang_code); // } } } $settings = db_get_array('SELECT * FROM ?:settings_objects_upg'); foreach ($settings as $setting) { fn_uc_update_setting_value($setting['name'], $setting['value'], $setting['section_name']); } db_query('DROP TABLE ?:settings_objects_upg'); $was_company_settings_backed_up = db_get_field("SHOW TABLES LIKE '?:settings_vendor_values_upg'"); if (!empty($was_company_settings_backed_up)) { $company_settings = db_get_array('SELECT * FROM ?:settings_vendor_values_upg'); foreach ($company_settings as $setting) { fn_uc_update_setting_value($setting['name'], $setting['value'], $setting['section_name'], $setting['company_id']); } db_query('DROP TABLE ?:settings_vendor_values_upg'); } } return true; }