示例#1
0
 /**
  * Gets available languages
  * @return array languages list
  */
 public function getLanguages()
 {
     if (empty($this->languages)) {
         $this->languages = Languages::getAll();
     }
     return $this->languages;
 }
示例#2
0
 public function index($id = 0, $params = array())
 {
     $status = Response::STATUS_OK;
     $data = \Tygh\Languages\Languages::getAll();
     if ($data && $id) {
         foreach ($data as $lang_data) {
             if ($lang_data['lang_id'] == $id) {
                 $data = $lang_data;
                 break;
             } else {
                 $data = array();
             }
         }
     } elseif ($data && ($lang_code = $this->safeGet($params, 'lang_code', ''))) {
         if (!empty($data[$lang_code])) {
             $data = $data[$lang_code];
         } else {
             $status = Response::STATUS_NOT_FOUND;
             $data = array();
         }
     } else {
         $items_per_page = $this->safeGet($params, 'items_per_page', Registry::get('settings.Appearance.admin_products_per_page'));
         $page = $this->safeGet($params, 'page', 1);
         if ($items_per_page) {
             $data = array_slice($data, ($page - 1) * $items_per_page, $items_per_page);
         }
         $data = array('languages' => $data, 'params' => array('items_per_page' => $items_per_page, 'page' => $page, 'total_items' => count($data)));
     }
     if (!$data) {
         $status = Response::STATUS_NOT_FOUND;
     }
     return array('status' => $status, 'data' => $data);
 }
示例#3
0
function fn_rus_spsr_install()
{
    $service = array('status' => 'A', 'module' => 'spsr', 'code' => 'spsr', 'sp_file' => '', 'description' => 'СПСР');
    $service['service_id'] = db_query('INSERT INTO ?:shipping_services ?e', $service);
    foreach (Languages::getAll() as $service['lang_code'] => $lang_data) {
        db_query('INSERT INTO ?:shipping_service_descriptions ?e', $service);
    }
}
示例#4
0
function fn_rus_dellin_install()
{
    $service = array('status' => 'A', 'module' => 'dellin', 'code' => '301', 'sp_file' => '', 'description' => 'Деловые линии');
    $service_id = db_query('INSERT INTO ?:shipping_services ?e', $service);
    $service['service_id'] = $service_id;
    foreach (Languages::getAll() as $service['lang_code'] => $lang_data) {
        db_query('INSERT INTO ?:shipping_service_descriptions ?e', $service);
    }
}
示例#5
0
function fn_rus_pecom_install()
{
    $objects = fn_rus_pecom_schema();
    foreach ($objects as $object) {
        $service = array('status' => $object['status'], 'module' => $object['module'], 'code' => $object['code'], 'sp_file' => $object['sp_file'], 'description' => $object['description']);
        $service['service_id'] = db_query('INSERT INTO ?:shipping_services ?e', $service);
        foreach (Languages::getAll() as $service['lang_code'] => $lang_data) {
            db_query('INSERT INTO ?:shipping_service_descriptions ?e', $service);
        }
    }
}
示例#6
0
function fn_rus_edost_install()
{
    $services = fn_get_schema('edost', 'services', 'php', true);
    foreach ($services as $service) {
        $service_id = db_query('INSERT INTO ?:shipping_services ?e', $service);
        $service['service_id'] = $service_id;
        foreach (Languages::getAll() as $service['lang_code'] => $lang_data) {
            db_query('INSERT INTO ?:shipping_service_descriptions ?e', $service);
        }
    }
}
示例#7
0
function fn_rus_pickpoint_install()
{
    $service = array('status' => 'A', 'module' => 'pickpoint', 'code' => 'pickpoint', 'sp_file' => '', 'description' => 'Pickpoint');
    $service['service_id'] = db_query('INSERT INTO ?:shipping_services ?e', $service);
    foreach (Languages::getAll() as $service['lang_code'] => $lang_data) {
        db_query('INSERT INTO ?:shipping_service_descriptions ?e', $service);
    }
    db_query("CREATE TABLE IF NOT EXISTS `?:rus_pickpoint_postamat` (\n        `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,\n        `city_name` varchar(150) NOT NULL,\n        `country_name` varchar(150) NOT NULL,\n        `region_name` varchar(150) NOT NULL,\n        `number` varchar(20) NOT NULL,\n        `name` varchar(250) NOT NULL,\n        `work_time` varchar(100) NOT NULL,\n        `post_code` varchar(16) NOT NULL,\n        `address` varchar(255) NOT NULL,\n        PRIMARY KEY (`id`)\n    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;");
    $http_url = fn_get_storefront_protocol();
    $url = $http_url . '://e-solution.pickpoint.ru/api/';
    RusPickpoint::postamatPickpoint($url . 'postamatlist');
}
示例#8
0
文件: func.php 项目: askzap/ask-zap
function fn_rus_russianpost_install()
{
    $objects = fn_rus_russianpost_schema();
    foreach ($objects as $object) {
        $service = array('status' => $object['status'], 'module' => $object['module'], 'code' => $object['code'], 'sp_file' => $object['sp_file'], 'description' => $object['description']);
        $service_id = db_get_field('SELECT service_id FROM ?:shipping_services WHERE module = ?s AND code = ?s', $object['module'], $object['code']);
        if (empty($service_id)) {
            $service['service_id'] = db_query('INSERT INTO ?:shipping_services ?e', $service);
            foreach (Languages::getAll() as $service['lang_code'] => $lang_data) {
                db_query('INSERT INTO ?:shipping_service_descriptions ?e', $service);
            }
        }
    }
}
示例#9
0
function fn_rus_pickup_install()
{
    $service = array('status' => 'A', 'module' => 'pickup', 'code' => 'pickup', 'sp_file' => '', 'description' => 'Pickup');
    $service['service_id'] = db_get_field('SELECT service_id FROM ?:shipping_services WHERE module = ?s AND code = ?s', $service['module'], $service['code']);
    if (empty($service['service_id'])) {
        $service['service_id'] = db_query('INSERT INTO ?:shipping_services ?e', $service);
    }
    $languages = Languages::getAll();
    foreach ($languages as $lang_code => $lang_data) {
        if ($lang_code == 'ru') {
            $service['description'] = "Самовывоз";
        } else {
            $service['description'] = "Pickup";
        }
        $service['lang_code'] = $lang_code;
        db_query('INSERT INTO ?:shipping_service_descriptions ?e', $service);
    }
}
示例#10
0
function fn_yandex_delivery_install()
{
    $service = array('status' => 'A', 'module' => 'yandex', 'code' => 'yandex', 'sp_file' => '', 'description' => 'Yandex.Delivery');
    $service['service_id'] = db_get_field('SELECT service_id FROM ?:shipping_services WHERE module = ?s AND code = ?s', $service['module'], $service['code']);
    if (empty($service['service_id'])) {
        $service['service_id'] = db_query('INSERT INTO ?:shipping_services ?e', $service);
    }
    $languages = Languages::getAll();
    foreach ($languages as $lang_code => $lang_data) {
        if ($lang_code == 'ru') {
            $service['description'] = "Яндекс.Доставка";
        } else {
            $service['description'] = "Yandex.Delivery";
        }
        $service['lang_code'] = $lang_code;
        db_query('INSERT INTO ?:shipping_service_descriptions ?e', $service);
    }
}
示例#11
0
function fn_settings_actions_addons_banners_banner_multilang($new_value, $old_value)
{
    if ($new_value == 'N') {
        $lang_codes = Languages::getAll();
        unset($lang_codes[DEFAULT_LANGUAGE]);
        $banners_multilang = array();
        foreach ($lang_codes as $lang_code => $lang_data) {
            list($banners) = fn_get_banners(array(), $lang_code);
            foreach ($banners as $banner) {
                $banners_multilang[$lang_code][$banner['banner_id']] = $banner;
            }
        }
        list($banners) = fn_get_banners(array(), DEFAULT_LANGUAGE);
        foreach ($banners as $banner) {
            if ($banner['type'] != 'G') {
                continue;
            }
            $main_image_id = !empty($banner['main_pair']['image_id']) ? $banner['main_pair']['image_id'] : 0;
            foreach ($lang_codes as $lang_code => $lang_data) {
                $banner_lang = $banners_multilang[$lang_code][$banner['banner_id']];
                $lang_image_id = !empty($banner_lang['main_pair']['image_id']) ? $banner_lang['main_pair']['image_id'] : 0;
                if ($lang_image_id != 0 && ($main_image_id == 0 || $main_image_id != $lang_image_id)) {
                    fn_delete_image($lang_image_id, $banner_lang['main_pair']['pair_id'], 'promo');
                    $lang_image_id = 0;
                }
                if ($lang_image_id == 0 && $main_image_id != 0) {
                    $data_banner_image = array('banner_id' => $banner['banner_id'], 'lang_code' => $lang_code);
                    $banner_image_id = db_query("INSERT INTO ?:banner_images ?e", $data_banner_image);
                    fn_add_image_link($banner_image_id, $banner['main_pair']['pair_id']);
                    $data_desc = array('description' => empty($banner['main_pair']['icon']['alt']) ? '' : $banner['main_pair']['icon']['alt'], 'object_holder' => 'images');
                    fn_create_description('common_descriptions', 'object_id', $main_image_id, $data_desc);
                }
                db_query("UPDATE ?:banner_descriptions SET url = ?s WHERE banner_id = ?i", $banner['url'], $banner['banner_id']);
            }
        }
    }
    return true;
}
示例#12
0
/**
 * Updates product feature variant
 *
 * @param int $feature_id Feature identifier
 * @param array $feature_type Feature type
 * @param array $variant Feature variant data
 * @param string $lang_code 2-letters language code
 *
 * @return array $variant_id Feature variant identifier
 */
function fn_update_product_feature_variant($feature_id, $feature_type, $variant, $lang_code = DESCR_SL)
{
    if (empty($variant['variant']) && (!isset($variant['variant']) || $variant['variant'] !== '0')) {
        return false;
    }
    $variant['feature_id'] = $feature_id;
    if (isset($variant['variant_id'])) {
        $variant_id = db_get_field('SELECT variant_id FROM ?:product_feature_variants WHERE variant_id = ?i', $variant['variant_id']);
        unset($variant['variant_id']);
    }
    if (empty($variant_id)) {
        $join = db_quote('INNER JOIN ?:product_feature_variants fv ON fv.variant_id = fvd.variant_id');
        $variant_id = db_get_field("SELECT fvd.variant_id FROM ?:product_feature_variant_descriptions AS fvd {$join} WHERE variant = ?s AND feature_id = ?i", $variant['variant'], $feature_id);
    }
    if (empty($variant_id)) {
        $variant_id = $variant['variant_id'] = db_query("INSERT INTO ?:product_feature_variants ?e", $variant);
        foreach (Languages::getAll() as $variant['lang_code'] => $_v) {
            db_query("INSERT INTO ?:product_feature_variant_descriptions ?e", $variant);
        }
    } else {
        db_query("UPDATE ?:product_feature_variants SET ?u WHERE variant_id = ?i", $variant, $variant_id);
        db_query("UPDATE ?:product_feature_variant_descriptions SET ?u WHERE variant_id = ?i AND lang_code = ?s", $variant, $variant_id, $lang_code);
    }
    if ($feature_type == 'N') {
        // number
        db_query('UPDATE ?:product_features_values SET ?u WHERE variant_id = ?i AND lang_code = ?s', array('value_int' => $variant['variant']), $variant_id, $lang_code);
    }
    return $variant_id;
}
示例#13
0
/**
 * @deprecated
 *
 * Gets list of all languages defined in store
 * used for adding desciptions and etc.
 *
 * @param boolean $edit Flag that determines if language list is used to be edited
 * @return array $languages Languages list
 */
function fn_get_translation_languages($edit = false)
{
    return Languages::getAll($edit);
}
示例#14
0
 protected function getLangCodes()
 {
     return array_keys(Languages::getAll());
 }
示例#15
0
function fn_banners_install()
{
    // FIXME
    if (DEFAULT_LANGUAGE != 'en') {
        db_query("UPDATE ?:banner_images SET lang_code = ?s WHERE lang_code = ?s", DEFAULT_LANGUAGE, 'en');
        // Demo data
    }
    $banners = db_get_array("SELECT ?:banners.banner_id, ?:banner_images.banner_image_id FROM ?:banners LEFT JOIN ?:banner_images ON ?:banner_images.banner_id = ?:banners.banner_id AND ?:banner_images.lang_code = ?s", DEFAULT_LANGUAGE);
    foreach ($banners as $k => $v) {
        $banners[$k]['main_pair'] = fn_get_image_pairs($v['banner_image_id'], 'promo', 'M', true, false, DEFAULT_LANGUAGE);
    }
    foreach (Languages::getAll() as $lang_code => $v) {
        fn_banners_clone($banners, $lang_code);
    }
    return true;
}
示例#16
0
function fn_yml_add_logs()
{
    $setting = Settings::instance()->getSettingDataByName('log_type_yml_export');
    if (!$setting) {
        $setting = array('name' => 'log_type_yml_export', 'section_id' => 12, 'section_tab_id' => 0, 'type' => 'N', 'position' => 10, 'is_global' => 'N', 'edition_type' => 'ROOT,VENDOR', 'value' => '#M#export');
        $descriptions = array();
        foreach (Languages::getAll() as $lang_code => $_lang) {
            $descriptions[] = array('object_type' => Settings::SETTING_DESCRIPTION, 'lang_code' => $lang_code, 'value' => __('yml2_log'));
        }
        $setting_id = Settings::instance()->update($setting, null, $descriptions, true);
        $variant_id = Settings::instance()->updateVariant(array('object_id' => $setting_id, 'name' => 'export', 'position' => 5));
        foreach (Languages::getAll() as $lang_code => $_lang) {
            $description = array('object_id' => $variant_id, 'object_type' => Settings::VARIANT_DESCRIPTION, 'lang_code' => $lang_code, 'value' => __('yml2_log_export'));
            Settings::instance()->updateDescription($description);
        }
    }
    return true;
}
示例#17
0
function fn_banners_install()
{
    $banners = db_get_hash_multi_array("SELECT ?:banners.banner_id, ?:banner_images.banner_image_id, ?:banner_images.lang_code FROM ?:banners LEFT JOIN ?:banner_images ON ?:banner_images.banner_id = ?:banners.banner_id", array('lang_code', 'banner_id'));
    $langs = array_keys(Languages::getAll());
    $need_clone_langs = array_diff($langs, array_keys($banners));
    if (!empty($need_clone_langs)) {
        $clone_lang = DEFAULT_LANGUAGE;
        if (in_array(DEFAULT_LANGUAGE, $need_clone_langs)) {
            $clone_lang = 'en';
        }
        foreach ($banners[$clone_lang] as $banner_id => &$banner) {
            $banner['main_pair'] = fn_get_image_pairs($banner['banner_image_id'], 'promo', 'M', true, false, $clone_lang);
        }
        foreach ($need_clone_langs as $need_clone_lang) {
            fn_banners_clone($banners[$clone_lang], $need_clone_lang);
        }
    }
    foreach ($banners['en'] as $banner_id => &$banner) {
        $banner['main_pair'] = fn_get_image_pairs($banner['banner_image_id'], 'promo', 'M', true, false, 'en');
    }
    if (!in_array('en', $langs)) {
        $banner_images_ids = db_get_fields("SELECT banner_image_id FROM ?:banner_images WHERE lang_code = ?s", 'en');
        foreach ($banner_images_ids as $banner_image_id) {
            fn_delete_image_pairs($banner_image_id, 'promo');
        }
        if (!empty($banner_images_ids)) {
            db_query("DELETE FROM ?:banner_images WHERE banner_image_id IN (?n)", $banner_images_ids);
        }
    }
    return true;
}
示例#18
0
 protected function insert()
 {
     $table_name = $this->getTableName();
     $description_table_name = $this->getDescriptionTableName();
     $primary_field = $this->getPrimaryField();
     $_data = $this->prepareAttributes();
     $result = db_query("INSERT INTO {$table_name} ?e", $_data);
     if ($this->primaryAutoIncrement()) {
         $this->id = $result;
     } else {
         $this->id = $this->{$primary_field};
     }
     if (!empty($description_table_name)) {
         $_data[$primary_field] = $this->id;
         foreach (Languages::getAll() as $_data['lang_code'] => $v) {
             db_query("INSERT INTO {$description_table_name} ?e", $_data);
         }
     }
     $this->{$primary_field} = $this->id;
     return true;
 }
示例#19
0
/**
 * Updates SEO names according to path when parent was changed for object.
 *
 * @param integer $object_id   object ID
 * @param string  $object_type object type
 * @param array   $params      params
 *
 * @return bool Whether SEO-names were regenerated successfully.
 */
function fn_seo_update_tree_object($object_id, $object_type, $params)
{
    if (isset($params['old_id_path']) && empty($params['old_id_path'])) {
        return false;
        // newly created object, skip
    }
    // Update item itself if it wasn't deleted
    if (!isset($params['after_deletion']) || !$params['after_deletion']) {
        $lang_codes = array();
        $seo_settings = fn_get_seo_settings($params['company_id']);
        if ($seo_settings['single_url'] == 'Y') {
            $lang_codes[] = Registry::get('settings.Appearance.frontend_default_language');
        } else {
            $lang_codes = array_keys(Languages::getAll());
        }
        foreach ($lang_codes as $lang_code) {
            $seo_name = fn_seo_get_name($object_type, $object_id, '', $params['company_id'], $lang_code);
            fn_create_seo_name($object_id, $object_type, $seo_name, 0, '', $params['company_id'], $lang_code, true);
        }
    }
    if (empty($params['old_id_path'])) {
        return true;
    }
    $condition = fn_get_seo_company_condition('?:seo_names.company_id', '', $params['company_id']);
    // Regenerate siblings' SEO-names
    fn_iterate_through_seo_names('fn_regenerate_seo_name', db_quote("path = ?s AND type IN (?a) ?p", $params['old_id_path'], $params['object_types'], $condition));
    // Regenerate children SEO-names
    fn_iterate_through_seo_names('fn_regenerate_seo_name', db_quote("path LIKE ?l AND type IN (?a) ?p", $params['old_id_path'] . '/%', $params['object_types'], $condition));
    return true;
}
示例#20
0
function fn_qwintry_create_shipping_service()
{
    $service = array('status' => 'A', 'module' => 'qwintry', 'code' => 'Qwintry Air');
    $service_id = db_query('INSERT INTO ?:shipping_services ?e', $service);
    $service_description = array('service_id' => $service_id, 'description' => 'Qwintry Air');
    foreach (Languages::getAll() as $service_description['lang_code'] => $_v) {
        db_query("INSERT INTO ?:shipping_service_descriptions ?e", $service_description);
    }
    $section_id = db_get_field('SELECT section_id FROM ?:settings_sections WHERE name = ?s', 'Shippings');
    $setting = array('edition_type' => 'ROOT', 'name' => 'qwintry_enabled', 'section_id' => $section_id, 'section_tab_id' => 0, 'type' => 'C', 'value' => 'Y', 'position' => 35, 'is_global' => 'N', 'handler' => '', 'parent_id' => 0);
    $setting_id = db_query('INSERT INTO ?:settings_objects ?e', $setting);
    $setting_description = array('object_id' => $setting_id, 'object_type' => 'O', 'value' => 'Enable Qwintry Air', 'tooltip' => '');
    foreach (Languages::getAll() as $setting_description['lang_code'] => $_v) {
        db_query("INSERT INTO ?:settings_descriptions ?e", $setting_description);
    }
}