示例#1
0
 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);
 }
示例#2
0
 /** @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';
 }
示例#3
0
 /**
  * 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);
    }
}
示例#6
0
 /**
  * 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;
 }
示例#7
0
/**
 * 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);
}
示例#8
0
 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;
 }
示例#9
0
/**
 * 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;
}
示例#10
0
 /**
  * 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;
 }
示例#11
0
文件: App.php 项目: askzap/ultimate
 /**
  * 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;
 }
示例#12
0
     $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'));
示例#13
0
/**
 * 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);
}
示例#14
0
 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;
 }
示例#15
0
 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;
}