/** * Gets available languages * @return array languages list */ public function getLanguages() { if (empty($this->languages)) { $this->languages = Languages::getAll(); } return $this->languages; }
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); }
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); } }
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); } }
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); } } }
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); } } }
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'); }
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); } } } }
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); } }
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); } }
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; }
/** * 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; }
/** * @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); }
protected function getLangCodes() { return array_keys(Languages::getAll()); }
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; }
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; }
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; }
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; }
/** * 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; }
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); } }