/** * Reverse IP filter */ function fn_settings_actions_addons_access_restrictions_admin_reverse_ip_access(&$new_value, $old_value) { $ip = fn_get_ip(true); if ($new_value == 'Y') { $ip_data = db_get_row("SELECT item_id, status FROM ?:access_restriction WHERE ip_from = ?i AND ip_to = ?i AND type IN ('aas', 'aab', 'aar')", $ip['host'], $ip['host']); if (empty($ip_data) || empty($ip_data['item_id'])) { // Add IP $restrict_ip = array('ip_from' => $ip['host'], 'ip_to' => $ip['host'], 'type' => 'aas', 'timestamp' => TIME, 'expires' => '0', 'status' => 'A'); $__data = array(); $__data['item_id'] = db_query("REPLACE INTO ?:access_restriction ?e", $restrict_ip); $__data['type'] = 'aas'; foreach (fn_get_translation_languages() as $__data['lang_code'] => $_v) { $__data['reason'] = __('store_admin', '', $__data['lang_code']); db_query("REPLACE INTO ?:access_restriction_reason_descriptions ?e", $__data); } fn_set_notification('W', __('warning'), __('your_ip_added', array('[ip]' => long2ip($ip['host'])))); } elseif (empty($ip_data['status']) || $ip_data['status'] != 'A') { // Change IP status to available db_query("UPDATE ?:access_restriction SET ?u WHERE item_id = ?i", array('status' => 'A'), $ip_data['item_id']); fn_set_notification('W', __('warning'), __('your_ip_enabled', array('[ip]' => long2ip($ip['host'])))); } } else { // Delete IP $ips_data = db_get_array("SELECT item_id, type FROM ?:access_restriction WHERE ip_from <= ?i AND ip_to >= ?i AND type IN ('aas', 'aab', 'aar')", $ip['host'], $ip['host']); if (!empty($ips_data)) { foreach ($ips_data as $ip_data) { db_query("DELETE FROM ?:access_restriction WHERE item_id = ?i", $ip_data['item_id']); db_query("DELETE FROM ?:access_restriction_reason_descriptions WHERE item_id = ?i AND type = ?s", $ip_data['item_id'], $ip_data['type']); } fn_set_notification('W', __('warning'), __('your_ip_removed', array('[ip]' => long2ip($ip['host'])))); } } return true; }
public static function rub_create() { $currencies = Registry::get('currencies'); $symbol = SYMBOL_RUBL; if (empty($currencies[CURRENCY_RUB])) { $rub = array('currency_code' => CURRENCY_RUB, 'after' => 'Y', 'symbol' => $symbol, 'coefficient' => '1', 'is_primary' => 'Y', 'position' => '0', 'decimals_separator' => '', 'thousands_separator' => '', 'decimals' => '0', 'status' => 'A'); db_query("UPDATE ?:currencies SET is_primary = 'N' WHERE is_primary = 'Y'"); $rub_id = db_query('INSERT INTO ?:currencies ?e', $rub); if (!empty($rub_id)) { $rub_array = $rub; $rub_array['currency_id'] = $rub_id; Registry::set('currencies.RUB', $rub_array); foreach (fn_get_translation_languages() as $lang_code => $v) { db_query("REPLACE INTO ?:currency_descriptions (`currency_code`, `description`, `lang_code`) VALUES (?s, 'Рубли', ?s)", CURRENCY_RUB, $lang_code); } fn_set_notification('N', __('notice'), __('rus_ruble.symbol_rub_created')); } } else { if ($currencies[CURRENCY_RUB]['is_primary'] == 'N') { db_query("UPDATE ?:currencies SET is_primary = 'N' WHERE is_primary = 'Y'"); db_query("UPDATE ?:currencies SET is_primary = 'Y', coefficient = 1 WHERE currency_code = ?s", CURRENCY_RUB); } if ($currencies[CURRENCY_RUB]['symbol'] != $symbol) { self::symbol_update($symbol); } } return true; }
/** * Update poll * * @param array $page_data page data * @param int $page_id ID of the page, poll attached to * @param string $lang_code language code * @return bool always true */ function fn_polls_update_page_post(&$page_data, &$page_id, &$lang_code) { if (empty($page_id) || empty($page_data['page_type']) || $page_data['page_type'] != PAGE_TYPE_POLL) { return false; } $exists = db_get_field('SELECT COUNT(*) FROM ?:polls WHERE page_id = ?i', $page_id) ? true : false; $data = $page_data['poll_data']; $types = array('H' => 'header', 'F' => 'footer', 'R' => 'results'); if (empty($exists)) { $data['page_id'] = $page_id; db_query('INSERT INTO ?:polls ?e', $data); foreach ($types as $type => $elm) { $_data = array('description' => $data[$elm], 'object_id' => $page_id, 'type' => $type, 'page_id' => $page_id); foreach (fn_get_translation_languages() as $_data['lang_code'] => $v) { db_query("INSERT INTO ?:poll_descriptions ?e", $_data); } } } else { db_query('UPDATE ?:polls SET ?u WHERE page_id = ?i', $data, $page_id); foreach ($types as $type => $elm) { $_data = array('description' => $data[$elm]); db_query('UPDATE ?:poll_descriptions SET ?u WHERE object_id = ?i AND lang_code = ?s AND type = ?s', $_data, $page_id, $lang_code, $type); } } return true; }
function fn_buy_together_update_chain($item_id, $product_id, $item_data, $auth, $lang_code = CART_LANGUAGE) { if (empty($product_id) || $product_id == 0) { return false; } SecurityHelper::sanitizeObjectData('buy_together_chain', $item_data); $show_notice = true; $item_data['product_id'] = $product_id; if (!empty($item_data['products'])) { foreach ($item_data['products'] as $key => $product) { // Delete products with empty amount if (empty($product['amount']) || intval($product['amount']) == 0) { unset($item_data['products'][$key]); continue; } $item_data['products'][$key]['modifier'] = floatval($item_data['products'][$key]['modifier']); $is_restricted = false; fn_set_hook('buy_together_restricted_product', $product['product_id'], $auth, $is_restricted, $show_notice); if ($is_restricted) { unset($item_data['products'][$key]); } } $item_data['products'] = serialize($item_data['products']); } else { $item_data['products'] = array(); } if (!empty($item_data['date_from'])) { $item_data['date_from'] = fn_parse_date($item_data['date_from']); } if (!empty($item_data['date_to'])) { $item_data['date_to'] = fn_parse_date($item_data['date_to']); } if (empty($item_id) || $item_id == 0) { //Create a new chain $item_id = db_query("INSERT INTO ?:buy_together ?e", $item_data); if (empty($item_id)) { return false; } $_data = array(); $_data['chain_id'] = $item_id; $_data['name'] = !empty($item_data['name']) ? $item_data['name'] : ''; $_data['description'] = !empty($item_data['description']) ? $item_data['description'] : ''; foreach (fn_get_translation_languages() as $_data['lang_code'] => $v) { db_query("INSERT INTO ?:buy_together_descriptions ?e", $_data); } } else { //Update already existing chain $_data = array(); $_data['chain_id'] = $item_id; $_data['name'] = !empty($item_data['name']) ? $item_data['name'] : ''; $_data['description'] = !empty($item_data['description']) ? $item_data['description'] : ''; db_query("UPDATE ?:buy_together SET ?u WHERE chain_id = ?i", $item_data, $item_id); db_query("UPDATE ?:buy_together_descriptions SET ?u WHERE chain_id = ?i AND lang_code = ?s", $_data, $item_id, $lang_code); } return $item_id; }
function fn_get_image($image_id, $object_type, $lang_code = CART_LANGUAGE, $get_all_alts = false) { $path = $object_type; if (!empty($image_id) && !empty($object_type)) { $image_data = db_get_row("SELECT ?:images.image_id, ?:images.image_path, ?:common_descriptions.description as alt, ?:images.image_x, ?:images.image_y FROM ?:images LEFT JOIN ?:common_descriptions ON ?:common_descriptions.object_id = ?:images.image_id AND ?:common_descriptions.object_holder = 'images' AND ?:common_descriptions.lang_code = ?s WHERE ?:images.image_id = ?i", $lang_code, $image_id); if ($get_all_alts && count(fn_get_translation_languages()) > 1) { $image_data['alt'] = db_get_hash_single_array('SELECT description, lang_code FROM ?:common_descriptions WHERE object_id = ?i AND object_holder = ?s', array('lang_code', 'description'), $image_data['image_id'], 'images'); } } fn_attach_absolute_image_paths($image_data, $object_type); return !empty($image_data) ? $image_data : false; }
function fn_update_state($state_data, $state_id = 0, $lang_code = DESCR_SL) { if (empty($state_id)) { if (!empty($state_data['code']) && !empty($state_data['state'])) { $state_data['state_id'] = $state_id = db_query("REPLACE INTO ?:states ?e", $state_data); foreach (fn_get_translation_languages() as $state_data['lang_code'] => $_v) { db_query('REPLACE INTO ?:state_descriptions ?e', $state_data); } } } else { db_query("UPDATE ?:state_descriptions SET ?u WHERE state_id = ?i AND lang_code = ?s", $state_data, $state_id, $lang_code); } return $state_id; }
function fn_update_attachments($attachment_data, $attachment_id, $object_type, $object_id, $type = 'M', $files = null, $lang_code = DESCR_SL) { $object_id = intval($object_id); $directory = $object_type . '/' . $object_id; if ($files != null) { $uploaded_data = $files; } else { $uploaded_data = fn_filter_uploaded_data('attachment_files'); } if (!empty($attachment_id)) { $rec = array('usergroup_ids' => empty($attachment_data['usergroup_ids']) ? '0' : implode(',', $attachment_data['usergroup_ids']), 'position' => $attachment_data['position']); db_query("UPDATE ?:attachment_descriptions SET description = ?s WHERE attachment_id = ?i AND lang_code = ?s", $attachment_data['description'], $attachment_id, $lang_code); db_query("UPDATE ?:attachments SET ?u WHERE attachment_id = ?i AND object_type = ?s AND object_id = ?i AND type = ?s", $rec, $attachment_id, $object_type, $object_id, $type); fn_set_hook('attachment_update_file', $attachment_data, $attachment_id, $object_type, $object_id, $type, $files, $lang_code, $uploaded_data); } elseif (!empty($uploaded_data)) { $rec = array('object_type' => $object_type, 'object_id' => $object_id, 'usergroup_ids' => empty($attachment_data['usergroup_ids']) ? '0' : implode(',', $attachment_data['usergroup_ids']), 'position' => $attachment_data['position']); if ($type !== null) { $rec['type'] = $type; } elseif (!empty($attachment_data['type'])) { $rec['type'] = $attachment_data['type']; } $attachment_id = db_query("INSERT INTO ?:attachments ?e", $rec); if ($attachment_id) { // Add file description foreach (fn_get_translation_languages() as $lang_code => $v) { $rec = array('attachment_id' => $attachment_id, 'lang_code' => $lang_code, 'description' => is_array($attachment_data['description']) ? $attachment_data['description'][$lang_code] : $attachment_data['description']); db_query("INSERT INTO ?:attachment_descriptions ?e", $rec); } $uploaded_data[$attachment_id] = $uploaded_data[0]; unset($uploaded_data[0]); } fn_set_hook('attachment_add_file', $attachment_data, $object_type, $object_id, $type, $files, $attachment_id, $uploaded_data); } if ($attachment_id && !empty($uploaded_data[$attachment_id]) && $uploaded_data[$attachment_id]['size']) { $filename = $uploaded_data[$attachment_id]['name']; $old_filename = db_get_field("SELECT filename FROM ?:attachments WHERE attachment_id = ?i", $attachment_id); if ($old_filename) { Storage::instance('attachments')->delete($directory . '/' . $old_filename); } list($filesize, $filename) = Storage::instance('attachments')->put($directory . '/' . $filename, array('file' => $uploaded_data[$attachment_id]['path'])); if ($filesize) { $filename = fn_basename($filename); db_query("UPDATE ?:attachments SET filename = ?s, filesize = ?i WHERE attachment_id = ?i", $filename, $filesize, $attachment_id); } } return $attachment_id; }
public function up() { fn_print_r('Hello world!'); $addons = array('ak_union_web'); $updater = array(); foreach (fn_get_translation_languages() as $lang_code => $_data) { foreach ($addons as $addon) { $addon_scheme = @simplexml_load_file('app/addons/' . $addon . '/addon.xml', '\\Tygh\\ExSimpleXmlElement', LIBXML_NOCDATA); $current_langvars = $addon_scheme->xpath("//language_variables/item[@lang='{$lang_code}']"); foreach ($current_langvars as $key => $value) { if (!empty($value) && !empty($value['id']) && !empty($value['lang'])) { $updater[] = array('value' => (string) $value, 'name' => (string) $value['id'], 'lang_code' => (string) $value['lang']); fn_print_r((string) $value['lang'] . ' --> ' . (string) $value['id'] . ' --> ' . (string) $value); } } } } db_query('REPLACE INTO ?:language_values ?m', $updater); die; }
function fn_update_mailing_list($mailing_list_data, $list_id, $lang_code = DESCR_SL) { if (empty($list_id)) { $list_id = db_query("INSERT INTO ?:mailing_lists ?e", $mailing_list_data); $_data = $mailing_list_data; $_data['object_id'] = $list_id; $_data['object_holder'] = 'mailing_lists'; $_data['object'] = $_data['name']; foreach (fn_get_translation_languages() as $_data['lang_code'] => $v) { db_query("REPLACE INTO ?:common_descriptions ?e", $_data); } } else { db_query("UPDATE ?:mailing_lists SET ?u WHERE list_id = ?i", $mailing_list_data, $list_id); $_data = $mailing_list_data; $_data['object_id'] = $list_id; $_data['object_holder'] = 'mailing_lists'; $_data['object'] = $_data['name']; $_where = array('object_id' => $list_id, 'object_holder' => 'mailing_lists', 'lang_code' => $lang_code); db_query("UPDATE ?:common_descriptions SET ?u WHERE ?w", $_data, $_where); } if (!empty($mailing_list_data['add_subscribers'])) { foreach ($mailing_list_data['add_subscribers'] as $subscriber) { $exists = db_get_field("SELECT subscriber_id FROM ?:subscribers WHERE email=?s", $subscriber['email']); // check if subscriber exists already if (!$exists) { $_data = $subscriber; $_data['timestamp'] = TIME; $subscriber_id = db_query("INSERT INTO ?:subscribers ?e", $_data); } // mark mailing list as active for this subscriber $_data = array('subscriber_id' => $subscriber_id, 'list_id' => $list_id, 'lang_code' => $subscriber['lang_code'], 'confirmed' => $subscriber['confirmed'], 'timestamp' => TIME); db_query("REPLACE INTO ?:user_mailing_lists ?e", $_data); } } return $list_id; }
function fn_update_abandoned_cart_settings($data, $lang_code = CART_LANGUAGE) { $data_1 = $data[0]; $data_1['number'] = 1; $check_exist = db_get_row('SELECT * FROM ?:abandoned_cart_reminder_notifications WHERE lang_code=?s AND number=?i', $lang_code, 1); if (empty($check_exist)) { foreach (fn_get_translation_languages() as $data_1['lang_code'] => $v) { db_query("INSERT INTO ?:abandoned_cart_reminder_notifications ?e", $data_1); } } else { db_query('UPDATE ?:abandoned_cart_reminder_notifications SET ?u WHERE lang_code=?s AND number=?i', $data_1, $lang_code, 1); } $data_2 = $data[1]; $data_2['number'] = 2; $check_exist = db_get_row('SELECT * FROM ?:abandoned_cart_reminder_notifications WHERE lang_code=?s AND number=?i', $lang_code, 2); if (empty($check_exist)) { foreach (fn_get_translation_languages() as $data_2['lang_code'] => $v) { db_query("INSERT INTO ?:abandoned_cart_reminder_notifications ?e", $data_2); } } else { db_query('UPDATE ?:abandoned_cart_reminder_notifications SET ?u WHERE lang_code=?s AND number=?i', $data_2, $lang_code, 2); } return true; }
/** * Returns array of setting item data from xml node * @param $xml_node * @return array */ protected function _getSettingItem($xml_node) { $addon_id = (string) $this->_xml->id; $default_language = $this->getDefaultLanguage(); foreach (fn_get_translation_languages() as $lang_code => $_v) { $items[$lang_code] = $this->getPoValues($lang_code, 'SettingsOptions'); } if (isset($xml_node['id'])) { $_types = $this->_getTypes(); $translations = $this->_getTranslations($xml_node, 'SettingsOptions', $addon_id); $tooltip_translations = $this->_getTranslations($xml_node, 'SettingsTooltips', $addon_id, 'tooltip'); $setting = array('edition_type' => $this->_getEditionType($xml_node), 'id' => (string) $xml_node['id'], 'name' => isset($items[$default_language][(string) $xml_node['id']]) ? $items[$default_language][(string) $xml_node['id']] : (string) $xml_node->name, 'type' => isset($_types[(string) $xml_node->type]) ? $_types[(string) $xml_node->type] : '', 'translations' => fn_array_merge($translations, $tooltip_translations), 'default_value' => isset($xml_node->default_value) ? (string) $xml_node->default_value : '', 'variants' => $this->_getVariants($xml_node), 'handler' => isset($xml_node->handler) ? (string) $xml_node->handler : '', 'parent_id' => isset($xml_node['parent_id']) ? (string) $xml_node['parent_id'] : ''); return $setting; } else { return array(); } }
function fn_update_localization($data, $localization_id = 0, $lang_code = DESCR_SL) { fn_define('POSITIONS_STEP', 10); if (!empty($localization_id)) { db_query('UPDATE ?:localizations SET ?u WHERE localization_id = ?i', $data, $localization_id); db_query('UPDATE ?:localization_descriptions SET ?u WHERE localization_id = ?i AND lang_code = ?s', $data, $localization_id, $lang_code); db_query("DELETE FROM ?:localization_elements WHERE localization_id = ?i", $localization_id); } else { $exist = db_get_field("SELECT COUNT(*) FROM ?:localizations"); if (empty($exist)) { $data['is_default'] = 'Y'; } $localization_id = $data['localization_id'] = db_query("REPLACE INTO ?:localizations ?e", $data); foreach (fn_get_translation_languages() as $data['lang_code'] => $_v) { db_query("REPLACE INTO ?:localization_descriptions ?e", $data); } } $_data = array('localization_id' => $localization_id); if (!empty($data['countries'])) { $_data['element_type'] = 'C'; foreach ($data['countries'] as $key => $value) { $_data['element'] = $value; $_data['position'] = POSITIONS_STEP * $key; db_query('INSERT INTO ?:localization_elements ?e', $_data); } } if (!empty($data['currencies'])) { $_data['element_type'] = 'M'; foreach ($data['currencies'] as $key => $value) { $_data['element'] = $value; $_data['position'] = POSITIONS_STEP * $key; db_query('INSERT INTO ?:localization_elements ?e', $_data); } } if (!empty($data['languages'])) { $_data['element_type'] = 'L'; foreach ($data['languages'] as $key => $value) { $_data['element'] = $value; $_data['position'] = POSITIONS_STEP * $key; db_query('INSERT INTO ?:localization_elements ?e', $_data); } } return $localization_id; }
use Tygh\Mailer; if (!defined('BOOTSTRAP')) { die('Access denied'); } if ($_SERVER['REQUEST_METHOD'] == "POST") { fn_trusted_vars('settings_data'); if ($mode == "update_settings") { if (!empty($_REQUEST['settings_data'])) { if (!empty($_REQUEST['settings_data']['statuses'])) { $_REQUEST['settings_data']['statuses'] = implode(',', $_REQUEST['settings_data']['statuses']); } $check = db_get_row("SELECT * FROM ?:orders_feedback WHERE feedback_id = ?i AND lang_code=?s", $_REQUEST['feedback_id'], DESCR_SL); if (!empty($check)) { db_query("UPDATE ?:orders_feedback SET ?u WHERE feedback_id = ?i AND lang_code=?s", $_REQUEST['settings_data'], $_REQUEST['feedback_id'], DESCR_SL); } else { foreach (fn_get_translation_languages() as $_REQUEST['settings_data']['lang_code'] => $v) { $_REQUEST['settings_data']['feedback_id'] = db_query("INSERT INTO ?:orders_feedback ?e", $_REQUEST['settings_data']); } return array(CONTROLLER_STATUS_OK, "orders_feedback.update?feedback_id=" . $_REQUEST['settings_data']['feedback_id']); } } return array(CONTROLLER_STATUS_OK, "orders_feedback.update?feedback_id=" . $_REQUEST['feedback_id']); } if ($mode == "test_send") { $test_email = $_REQUEST['test_email']; $remind = $_REQUEST['settings_data']; $remind['lang_code'] = DESCR_SL; if (fn_validate_email($test_email)) { $statuses = $remind['statuses']; $remind_orders = db_get_array("SELECT * FROM ?:orders WHERE status in (?a) AND lang_code=?s", $statuses, $remind['lang_code']); if (!empty($remind_orders)) {
function fn_access_restrictions_user_init(&$auth, &$user_info) { $iplong = fn_get_ip(true); $acc_r = Registry::get('addons.access_restrictions'); if (AREA == 'A' && $acc_r['unsuccessful_attempts_login'] == 'Y' || AREA != 'A' && $acc_r['unsuccessful_attempts_login_customer'] == 'Y') { $block = db_get_row("SELECT * FROM ?:access_restriction_block WHERE ip >= ?i", $iplong['host']); $failed_atempts = AREA == 'A' ? $acc_r['number_unsuccessful_attempts'] : $acc_r['number_unsuccessful_attempts_customer']; if (!empty($block) && $block['tries'] >= $failed_atempts) { $time_block = AREA == 'A' ? $acc_r['time_block'] : $acc_r['time_block_customer']; $restrict_ip = array('ip_from' => $iplong['host'], 'ip_to' => $iplong['host'], 'type' => AREA == 'A' ? 'aab' : 'ipb', 'timestamp' => TIME, 'expires' => TIME + round($time_block * 3600), 'status' => 'A'); $__data['item_id'] = db_query("REPLACE INTO ?:access_restriction ?e", $restrict_ip); $__data['type'] = AREA == 'A' ? 'aab' : 'ipb'; foreach (fn_get_translation_languages() as $__data['lang_code'] => $v) { $__data['reason'] = str_replace("[number]", $failed_atempts, __('text_ip_blocked_failed_login', '', $__data['lang_code'])); db_query("REPLACE INTO ?:access_restriction_reason_descriptions ?e", $__data); } db_query("DELETE FROM ?:access_restriction_block WHERE ip = ?i", $block['ip']); } } db_query("DELETE FROM ?:access_restriction_block WHERE expires < ?i", TIME); db_query("DELETE FROM ?:access_restriction WHERE (type = 'ipb' OR type = 'aab') AND expires < ?i", TIME); $ar_type = AREA != 'A' ? "a.type IN ('ips', 'ipr', 'ipb')" : "a.type IN ('aas', 'aar', 'aab')"; $restricted = db_get_row("SELECT a.item_id, b.reason FROM ?:access_restriction as a LEFT JOIN ?:access_restriction_reason_descriptions as b ON a.item_id = b.item_id AND a.type = b.type AND lang_code = ?s WHERE ip_from <= ?i AND ip_to >= ?i AND {$ar_type} AND status = 'A'", CART_LANGUAGE, $iplong['host'], $iplong['host']); if ($restricted && (AREA != 'A' || $acc_r['admin_reverse_ip_access'] != 'Y')) { die(!empty($restricted['reason']) ? $restricted['reason'] : __('text_ip_is_blocked')); } elseif (!$restricted && $acc_r['admin_reverse_ip_access'] == 'Y' && AREA == 'A') { die(__('text_ips_denied')); } $is_domain_restricted = db_get_field("SELECT COUNT(*) FROM ?:access_restriction WHERE type='d' AND status = 'A'"); if ($is_domain_restricted && empty($_SESSION['access_domain'])) { $ip = fn_get_ip(); $domain = gethostbyaddr($ip['host']); fn_domain_is_blocked($domain); $_SESSION['access_domain'] = $domain; } }
function fn_data_feeds_update_feed($feed_data, $feed_id = 0, $lang_code = CART_LANGUAGE) { if (!empty($feed_data['fields'])) { $_fields = array(); foreach ($feed_data['fields'] as $key => $field) { if (empty($field['export_field_name'])) { unset($feed_data['fields'][$key]); } else { $_fields[intval($field['position'])][] = $field; } } } if (!empty($_fields)) { ksort($_fields); unset($feed_data['fields']); foreach ($_fields as $fields) { if (is_array($fields)) { foreach ($fields as $field) { $feed_data['fields'][] = $field; } } } } $feed_data['fields'] = serialize($feed_data['fields']); $feed_data['export_options'] = serialize(!empty($feed_data['export_options']) ? $feed_data['export_options'] : array()); if (fn_allowed_for('ULTIMATE') && Registry::get('runtime.company_id')) { $feed_data['company_id'] = Registry::get('runtime.company_id'); } if (empty($feed_id)) { $feed_id = db_query("INSERT INTO ?:data_feeds ?e", $feed_data); if (!empty($feed_id)) { $_data = array(); $_data['datafeed_id'] = $feed_id; $_data['datafeed_name'] = $feed_data['datafeed_name']; foreach (fn_get_translation_languages() as $_data['lang_code'] => $_v) { db_query("INSERT INTO ?:data_feed_descriptions ?e", $_data); } } } else { db_query("UPDATE ?:data_feeds SET ?u WHERE datafeed_id = ?i", $feed_data, $feed_id); unset($feed_data['lang_code']); db_query("UPDATE ?:data_feed_descriptions SET ?u WHERE datafeed_id = ?i AND lang_code = ?s", $feed_data, $feed_id, $lang_code); } return $feed_id; }
function content_55dc7db6ede751_81542503($_smarty_tpl) { if (!is_callable('smarty_block_hook')) { include '/var/www/html/market/app/functions/smarty_plugins/block.hook.php'; } fn_preload_lang_vars(array('general', 'language_code', 'name', 'country', 'tt_views_languages_update_country', 'clone_from', 'install')); if ($_smarty_tpl->tpl_vars['lang_data']->value) { ?> <?php $_smarty_tpl->tpl_vars['id'] = new Smarty_variable($_smarty_tpl->tpl_vars['lang_data']->value['lang_id'], null, 0); } else { ?> <?php $_smarty_tpl->tpl_vars['id'] = new Smarty_variable("0", null, 0); } ?> <?php $_smarty_tpl->tpl_vars['hide_inputs'] = new Smarty_variable(!fn_allow_save_object('', "languages"), null, 0); ?> <div id="content_group<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['id']->value, ENT_QUOTES, 'UTF-8'); ?> "> <?php if ($_smarty_tpl->tpl_vars['id']->value) { ?> <form action="<?php echo htmlspecialchars(fn_url(''), ENT_QUOTES, 'UTF-8'); ?> " method="post" name="add_language_form" class="form-horizontal<?php if (!fn_allow_save_object('', "languages")) { ?> cm-hide-inputs<?php } ?> "> <input type="hidden" name="selected_section" value="languages" /> <input type="hidden" name="lang_id" value="<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['id']->value, ENT_QUOTES, 'UTF-8'); ?> " /> <div class="tabs cm-j-tabs"> <ul class="nav nav-tabs"> <li id="tab_general_<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['id']->value, ENT_QUOTES, 'UTF-8'); ?> " class="cm-js active"><a><?php echo $_smarty_tpl->__("general"); ?> </a></li> <?php $_smarty_tpl->smarty->_tag_stack[] = array('hook', array('name' => "languages:tabs_list")); $_block_repeat = true; echo smarty_block_hook(array('name' => "languages:tabs_list"), null, $_smarty_tpl, $_block_repeat); while ($_block_repeat) { ob_start(); $_block_content = ob_get_clean(); $_block_repeat = false; echo smarty_block_hook(array('name' => "languages:tabs_list"), $_block_content, $_smarty_tpl, $_block_repeat); } array_pop($_smarty_tpl->smarty->_tag_stack); ?> </ul> </div> <div class="cm-tabs-content"> <div id="content_tab_general_<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['id']->value, ENT_QUOTES, 'UTF-8'); ?> "> <fieldset> <div class="control-group"> <label for="elm_to_lang_code_<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['id']->value, ENT_QUOTES, 'UTF-8'); ?> " class="control-label cm-required"><?php echo $_smarty_tpl->__("language_code"); ?> :</label> <div class="controls"> <input id="elm_to_lang_code_<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['id']->value, ENT_QUOTES, 'UTF-8'); ?> " type="text" name="language_data[lang_code]" value="<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['lang_data']->value['lang_code'], ENT_QUOTES, 'UTF-8'); ?> " size="6" maxlength="2"> </div> </div> <div class="control-group"> <label for="elm_lang_name_<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['id']->value, ENT_QUOTES, 'UTF-8'); ?> " class="control-label cm-required"><?php echo $_smarty_tpl->__("name"); ?> :</label> <div class="controls"> <input id="elm_lang_name_<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['id']->value, ENT_QUOTES, 'UTF-8'); ?> " type="text" name="language_data[name]" value="<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['lang_data']->value['name'], ENT_QUOTES, 'UTF-8'); ?> " maxlength="64"> </div> </div> <div class="control-group"> <label for="elm_lang_country_code_<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['id']->value, ENT_QUOTES, 'UTF-8'); ?> " class="control-label cm-required"><?php echo $_smarty_tpl->__("country"); echo $_smarty_tpl->getSubTemplate("common/tooltip.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, null, array('tooltip' => __("tt_views_languages_update_country")), 0); ?> :</label> <div class="controls"> <select id="elm_lang_country_code_<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['id']->value, ENT_QUOTES, 'UTF-8'); ?> " name="language_data[country_code]"> <?php $_smarty_tpl->tpl_vars["country"] = new Smarty_Variable(); $_smarty_tpl->tpl_vars["country"]->_loop = false; $_smarty_tpl->tpl_vars["code"] = new Smarty_Variable(); $_from = $_smarty_tpl->tpl_vars['countries']->value; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array'); } foreach ($_from as $_smarty_tpl->tpl_vars["country"]->key => $_smarty_tpl->tpl_vars["country"]->value) { $_smarty_tpl->tpl_vars["country"]->_loop = true; $_smarty_tpl->tpl_vars["code"]->value = $_smarty_tpl->tpl_vars["country"]->key; ?> <option <?php if ($_smarty_tpl->tpl_vars['code']->value == $_smarty_tpl->tpl_vars['lang_data']->value['country_code']) { ?> selected="selected"<?php } ?> value="<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['code']->value, ENT_QUOTES, 'UTF-8'); ?> "><?php echo htmlspecialchars($_smarty_tpl->tpl_vars['country']->value, ENT_QUOTES, 'UTF-8'); ?> </option> <?php } ?> </select> </div> </div> <?php if (fn_allowed_for("ULTIMATE:FREE")) { ?> <?php $_smarty_tpl->tpl_vars['hidden'] = new Smarty_variable(false, null, 0); ?> <?php } else { ?> <?php $_smarty_tpl->tpl_vars['hidden'] = new Smarty_variable(true, null, 0); ?> <?php } ?> <?php echo $_smarty_tpl->getSubTemplate("common/select_status.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, null, array('obj' => $_smarty_tpl->tpl_vars['lang_data']->value, 'display' => "radio", 'input_name' => "language_data[status]", 'hidden' => $_smarty_tpl->tpl_vars['hidden']->value), 0); ?> <?php if (!$_smarty_tpl->tpl_vars['id']->value) { ?> <div class="control-group"> <label for="elm_from_lang_code_<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['id']->value, ENT_QUOTES, 'UTF-8'); ?> " class="control-label cm-required"><?php echo $_smarty_tpl->__("clone_from"); ?> :</label> <div class="controls"> <select name="language_data[from_lang_code]" id="elm_from_lang_code_<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['id']->value, ENT_QUOTES, 'UTF-8'); ?> "> <?php $_smarty_tpl->tpl_vars["language"] = new Smarty_Variable(); $_smarty_tpl->tpl_vars["language"]->_loop = false; $_from = fn_get_translation_languages(''); if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array'); } foreach ($_from as $_smarty_tpl->tpl_vars["language"]->key => $_smarty_tpl->tpl_vars["language"]->value) { $_smarty_tpl->tpl_vars["language"]->_loop = true; ?> <option value="<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['language']->value['lang_code'], ENT_QUOTES, 'UTF-8'); ?> "><?php echo htmlspecialchars($_smarty_tpl->tpl_vars['language']->value['name'], ENT_QUOTES, 'UTF-8'); ?> </option> <?php } ?> </select> </div> </div> <?php } ?> <?php $_smarty_tpl->smarty->_tag_stack[] = array('hook', array('name' => "languages:update")); $_block_repeat = true; echo smarty_block_hook(array('name' => "languages:update"), null, $_smarty_tpl, $_block_repeat); while ($_block_repeat) { ob_start(); $_block_content = ob_get_clean(); $_block_repeat = false; echo smarty_block_hook(array('name' => "languages:update"), $_block_content, $_smarty_tpl, $_block_repeat); } array_pop($_smarty_tpl->smarty->_tag_stack); ?> </fieldset> </div> <?php $_smarty_tpl->smarty->_tag_stack[] = array('hook', array('name' => "languages:tabs_content")); $_block_repeat = true; echo smarty_block_hook(array('name' => "languages:tabs_content"), null, $_smarty_tpl, $_block_repeat); while ($_block_repeat) { ob_start(); $_block_content = ob_get_clean(); $_block_repeat = false; echo smarty_block_hook(array('name' => "languages:tabs_content"), $_block_content, $_smarty_tpl, $_block_repeat); } array_pop($_smarty_tpl->smarty->_tag_stack); ?> </div> <?php if (!$_smarty_tpl->tpl_vars['hide_inputs']->value) { ?> <div class="buttons-container"> <?php echo $_smarty_tpl->getSubTemplate("buttons/save_cancel.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, null, array('but_name' => "dispatch[languages.update]", 'cancel_action' => "close", 'save' => $_smarty_tpl->tpl_vars['id']->value), 0); ?> </div> <?php } ?> </form> <?php } else { ?> <div class="install-addon"> <form action="<?php echo htmlspecialchars(fn_url(''), ENT_QUOTES, 'UTF-8'); ?> " method="post" name="add_language_form" class="form-horizontal<?php if ($_smarty_tpl->tpl_vars['hide_inputs']->value) { ?> cm-hide-inputs<?php } ?> " enctype="multipart/form-data"> <div class="install-addon-wrapper"> <img class="install-addon-banner" src="<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['images_dir']->value, ENT_QUOTES, 'UTF-8'); ?> /addon_box.png" width="151px" height="141px" /> <?php echo $_smarty_tpl->getSubTemplate("common/fileuploader.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, null, array('var_name' => "language_data[po_file]", 'allowed_ext' => "po, zip"), 0); ?> </div> <?php if (!$_smarty_tpl->tpl_vars['hide_inputs']->value) { ?> <div class="buttons-container"> <?php echo $_smarty_tpl->getSubTemplate("buttons/save_cancel.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, null, array('but_name' => "dispatch[languages.install_from_po]", 'but_text' => __("install"), 'cancel_action' => "close", 'save' => $_smarty_tpl->tpl_vars['id']->value), 0); ?> </div> <?php } ?> </form> </div> <?php } ?> <!--content_group<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['id']->value, ENT_QUOTES, 'UTF-8'); ?> --></div><?php }
function fn_add_field_values($values = array(), $field_id = 0) { if (empty($values) || empty($field_id)) { return false; } foreach ($values as $_v) { if (empty($_v['description'])) { continue; } // Insert main data $_v['field_id'] = $field_id; $value_id = db_query("INSERT INTO ?:profile_field_values ?e", $_v); // Insert descriptions $_data = array('object_id' => $value_id, 'object_type' => 'V', 'description' => $_v['description']); foreach (fn_get_translation_languages() as $_data['lang_code'] => $_v) { db_query("INSERT INTO ?:profile_field_descriptions ?e", $_data); } } return true; }
/** * Create/Update sitemap links * * @param array $links_data Links update data * @param int $section_id Section identifier */ function fn_update_sitemap_links($links_data, $section_id) { $link_ids = array(); foreach ($links_data as $link_data) { if (!empty($link_data['link'])) { fn_set_hook('sitemap_update_object', $link_data); if (empty($link_data['link_id'])) { $link_data['section_id'] = $section_id; $link_id = db_query("INSERT INTO ?:sitemap_links ?e", $link_data); $link_ids[] = $link_id; if (!empty($link_id)) { $_data = array(); foreach (fn_get_translation_languages() as $lang_code => $_lang_data) { $_data[] = array('object' => $link_data['link'], 'object_id' => $link_id, 'object_holder' => 'sitemap_links', 'lang_code' => $lang_code); } db_query("INSERT INTO ?:common_descriptions ?m", $_data); } } else { $link_data['section_id'] = $section_id; $link_ids[] = $link_data['link_id']; db_query("UPDATE ?:sitemap_links SET ?u WHERE link_id = ?i", $link_data, $link_data['link_id']); db_query("UPDATE ?:common_descriptions SET object=?s WHERE object_id = ?i AND lang_code = ?s AND object_holder = 'sitemap_links'", $link_data['link'], $link_data['link_id'], DESCR_SL); } } } $obsolete_ids = db_get_fields("SELECT link_id FROM ?:sitemap_links WHERE section_id = ?i AND link_id NOT IN (?n)", $section_id, $link_ids); if (!empty($obsolete_ids)) { fn_delete_sitemap_links($obsolete_ids); } }
function fn_update_product_filter($filter_data, $filter_id, $lang_code = DESCR_SL) { if (fn_allowed_for('ULTIMATE') && Registry::get('runtime.company_id')) { if (!empty($filter_id) && !fn_check_company_id('product_filters', 'filter_id', $filter_id)) { fn_company_access_denied_notification(); return false; } if (!empty($filter_id)) { unset($filter_data['company_id']); } } // Parse filter type if (strpos($filter_data['filter_type'], 'FF-') === 0 || strpos($filter_data['filter_type'], 'RF-') === 0 || strpos($filter_data['filter_type'], 'DF-') === 0) { $filter_data['feature_id'] = str_replace(array('RF-', 'FF-', 'DF-'), '', $filter_data['filter_type']); $filter_data['feature_type'] = db_get_field("SELECT feature_type FROM ?:product_features WHERE feature_id = ?i", $filter_data['feature_id']); } else { $filter_data['field_type'] = str_replace(array('R-', 'B-'), '', $filter_data['filter_type']); $filter_fields = fn_get_product_filter_fields(); } if (isset($filter_data['display_more_count']) && isset($filter_data['display_count']) && $filter_data['display_more_count'] < $filter_data['display_count']) { $filter_data['display_more_count'] = $filter_data['display_count']; } if (!empty($filter_id)) { db_query('UPDATE ?:product_filters SET ?u WHERE filter_id = ?i', $filter_data, $filter_id); db_query('UPDATE ?:product_filter_descriptions SET ?u WHERE filter_id = ?i AND lang_code = ?s', $filter_data, $filter_id, $lang_code); } else { $filter_data['filter_id'] = $filter_id = db_query('INSERT INTO ?:product_filters ?e', $filter_data); foreach (fn_get_translation_languages() as $filter_data['lang_code'] => $_d) { db_query("INSERT INTO ?:product_filter_descriptions ?e", $filter_data); } } $delete_all_ranges = false; // if filter has ranges if (!empty($filter_data['feature_type']) && strpos('ODN', $filter_data['feature_type']) !== false || !empty($filter_data['field_type']) && !empty($filter_fields[$filter_data['field_type']]['is_range'])) { $range_ids = array(); foreach ($filter_data['ranges'] as $k => $range) { if (!empty($filter_data['feature_type']) && $filter_data['feature_type'] == 'D') { $range['to'] = fn_parse_date($filter_data['dates_ranges'][$k]['to']); $range['from'] = fn_parse_date($filter_data['dates_ranges'][$k]['from']); } $range['filter_id'] = $filter_id; if (!empty($filter_data['feature_id'])) { $range['feature_id'] = $filter_data['feature_id']; } if (!empty($range['range_id'])) { db_query("UPDATE ?:product_filter_ranges SET ?u WHERE range_id = ?i", $range, $range['range_id']); db_query('UPDATE ?:product_filter_ranges_descriptions SET ?u WHERE range_id = ?i AND lang_code = ?s', $range, $range['range_id'], $lang_code); } elseif ((!empty($range['from']) || !empty($range['to'])) && !empty($range['range_name'])) { $range['range_id'] = db_query("INSERT INTO ?:product_filter_ranges ?e", $range); foreach (fn_get_translation_languages() as $range['lang_code'] => $_d) { db_query("INSERT INTO ?:product_filter_ranges_descriptions ?e", $range); } } if (!empty($range['range_id'])) { $range_ids[] = $range['range_id']; } } if (!empty($range_ids)) { $deleted_ranges = db_get_fields("SELECT range_id FROM ?:product_filter_ranges WHERE filter_id = ?i AND range_id NOT IN (?n)", $filter_id, $range_ids); if (!empty($deleted_ranges)) { db_query("DELETE FROM ?:product_filter_ranges WHERE range_id IN (?n)", $deleted_ranges); db_query("DELETE FROM ?:product_filter_ranges_descriptions WHERE range_id IN (?n)", $deleted_ranges); } } else { $delete_all_ranges = true; } } else { $delete_all_ranges = true; } if ($delete_all_ranges) { $deleted_ranges = db_get_fields("SELECT range_id FROM ?:product_filter_ranges WHERE filter_id = ?i", $filter_id); db_query("DELETE FROM ?:product_filter_ranges WHERE filter_id = ?i", $filter_id); db_query("DELETE FROM ?:product_filter_ranges_descriptions WHERE range_id IN (?n)", $deleted_ranges); } fn_set_hook('update_product_filter', $filter_data, $filter_id, $lang_code); return $filter_id; }
/** * Updates statuses * @param string $status One letter status code that should be updated * @param array $status_data Status information * @param string $type One letter status type * @param string $lang_code Language code * @return array Updated status data */ function fn_update_status($status, $status_data, $type, $lang_code = DESCR_SL) { if (empty($status_data['status'])) { // Generate new status code $existing_codes = db_get_fields('SELECT status FROM ?:statuses WHERE type = ?s GROUP BY status', $type); $existing_codes[] = 'N'; // STATUS_INCOMPLETED_ORDER $existing_codes[] = 'T'; // STATUS_PARENT_ORDER $codes = array_diff(range('A', 'Z'), $existing_codes); $status_data['status'] = reset($codes); } $can_continue = true; fn_set_hook('update_status_pre', $status, $status_data, $type, $lang_code, $can_continue); if ($can_continue) { if (empty($status)) { $status_data['type'] = $type; db_query("INSERT INTO ?:statuses ?e", $status_data); $status = $status_data['status']; foreach (fn_get_translation_languages() as $status_data['lang_code'] => $_v) { db_query('REPLACE INTO ?:status_descriptions ?e', $status_data); } } else { db_query("UPDATE ?:statuses SET ?u WHERE status = ?s AND type = ?s", $status_data, $status, $type); db_query('UPDATE ?:status_descriptions SET ?u WHERE status = ?s AND type = ?s AND lang_code = ?s', $status_data, $status, $type, $lang_code); } if (!empty($status_data['params'])) { foreach ((array) $status_data['params'] as $param_name => $param_value) { $_data = array('status' => $status, 'type' => $type, 'param' => $param_name, 'value' => $param_value); db_query("REPLACE INTO ?:status_data ?e", $_data); } } } fn_set_hook('update_status_post', $status, $status_data, $type, $lang_code); return $status_data['status']; }
function fn_google_export_update_alt_languages($table, $keys, $show_process = false) { $langs = fn_get_translation_languages(); if (empty($langs)) { $langs = db_get_fields("SELECT lang_code FROM ?:languages"); } else { $langs = array_keys($langs); } if (!is_array($keys)) { $keys = array($keys); } $i = 0; $step = 50; while ($items = db_get_array("SELECT * FROM ?:{$table} WHERE lang_code = ?s LIMIT {$i}, {$step}", DEFAULT_LANGUAGE)) { if ($show_process) { fn_echo(' .'); } $i += $step; foreach ($items as $v) { foreach ($langs as $lang) { $condition = array(); foreach ($keys as $key) { $condition[] = "{$key} = '" . $v[$key] . "'"; } $condition = implode(' AND ', $condition); $exists = db_get_field("SELECT COUNT(*) FROM ?:{$table} WHERE {$condition} AND lang_code = ?s", $lang); if (empty($exists)) { $v['lang_code'] = $lang; db_query("REPLACE INTO ?:{$table} ?e", $v); } } } } }
/** * The function converts a user group name into a user group ID or creates a new user group if a user group specified in the import file does not exist * * @param string $usergroup Usergroup name presented in the file * @param string $lang_code 2-letter language code * @return int usergroup id */ function fn_exim_put_usergroup($usergroup, $lang_code) { $default_usergroups = fn_get_default_usergroups($lang_code); foreach ($default_usergroups as $usergroup_id => $ug) { if ($ug['usergroup'] == $usergroup) { return $usergroup_id; } } $usergroup_id = fn_get_usergroup_id($usergroup, $lang_code); // Create new usergroup if (empty($usergroup_id)) { $_data = array('type' => 'C', 'status' => 'A'); $usergroup_id = db_query("INSERT INTO ?:usergroups ?e", $_data); $_data = array('usergroup_id' => $usergroup_id, 'usergroup' => $usergroup); foreach (fn_get_translation_languages() as $_data['lang_code'] => $v) { db_query("INSERT INTO ?:usergroup_descriptions ?e", $_data); } } return $usergroup_id; }
} $sections = array('translations' => array('title' => __('translations'), 'href' => fn_url('languages.translations')), 'manage_languages' => array('title' => __('manage_languages'), 'href' => fn_url('languages.manage'))); Registry::set('navigation.dynamic.sections', $sections); Registry::set('navigation.dynamic.active_section', 'manage_languages'); Registry::set('navigation.tabs', array('languages' => array('title' => __('installed_languages'), 'js' => true))); if (!Registry::get('runtime.company_id')) { Registry::set('navigation.tabs.available_languages', array('title' => __('available_languages'), 'ajax' => true, 'href' => 'languages.install_list')); } $view = Tygh::$app['view']; $languages = fn_get_translation_languages(true); $view->assign('langs', $languages); $view->assign('countries', fn_get_simple_countries(false, DESCR_SL)); } elseif ($mode == 'install_list') { $view = Tygh::$app['view']; $langs_meta = Languages::getLangPacksMeta(); $languages = fn_get_translation_languages(true); $view->assign('langs_meta', $langs_meta); $view->assign('countries', fn_get_simple_countries(false, DESCR_SL)); $view->assign('langs', $languages); $view->display('views/languages/components/install_languages.tpl'); exit(0); } elseif ($mode == 'translations') { $sections = array('translations' => array('title' => __('translations'), 'href' => fn_url('languages.translations')), 'manage_languages' => array('title' => __('manage_languages'), 'href' => fn_url('languages.manage'))); Registry::set('navigation.dynamic.sections', $sections); Registry::set('navigation.dynamic.active_section', 'translations'); list($lang_data, $search) = LanguageValues::getVariables($_REQUEST, Registry::get('settings.Appearance.admin_elements_per_page')); Tygh::$app['view']->assign('lang_data', $lang_data); Tygh::$app['view']->assign('search', $search); } elseif ($mode == 'update') { $lang_data = Languages::get(array('lang_id' => $_REQUEST['lang_id']), 'lang_id'); if (empty($lang_data[$_REQUEST['lang_id']])) {
* license and accept to the terms of the License Agreement can install * * and use this program. * * * **************************************************************************** * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE * * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. * ****************************************************************************/ use Tygh\Registry; use Tygh\Navigation\LastView; if (!defined('BOOTSTRAP')) { die('Access denied'); } if ($_SERVER['REQUEST_METHOD'] == 'POST') { if ($mode == 'update') { if (!empty($_REQUEST['rule_data']) && !empty($_REQUEST['rule_data']['name']) && !empty($_REQUEST['rule_data']['rule_params'])) { foreach (fn_get_translation_languages() as $lc => $_v) { fn_create_seo_name(0, 's', $_REQUEST['rule_data']['name'], 0, $_REQUEST['rule_data']['rule_params'], '', $lc); } } } if ($mode == 'm_update') { if (!empty($_REQUEST['seo_data'])) { foreach ($_REQUEST['seo_data'] as $k => $v) { if (!empty($v['name'])) { fn_create_seo_name(0, 's', $v['name'], 0, $v['rule_params'], '', fn_get_corrected_seo_lang_code(DESCR_SL)); } } } } if ($mode == 'm_delete') { if (!empty($_REQUEST['dispatches'])) {
/** * Gets meta information from the PO file * * @param string $base_path Root dir * @param string $pack_file PO file name (without .po extension) * @param bool $reinstall Use this flag, if pack was alread installed before to get META information * @return array List of lang pack meta information */ public static function getLangPacksMeta($base_path = '', $pack_file = '', $reinstall = false, $check_installed = true) { if ($check_installed) { $installed_languages = fn_get_translation_languages(true); } else { $installed_languages = array(); } $path = empty($base_path) ? Registry::get('config.dir.lang_packs') : $base_path; $langs = array(); if (!empty($pack_file)) { $langs_packs = array($pack_file); } else { $_packs = fn_get_dir_contents($path, true, false, '.po'); foreach ($_packs as $_pack) { $langs_packs[] = $_pack . '/core.po'; } } foreach ($langs_packs as $pack_name) { $pack_meta = Po::getMeta($path . $pack_name); if (!is_array($pack_meta)) { fn_set_notification('E', __('error'), $pack_meta); continue; } if (isset($installed_languages[$pack_meta['lang_code']]) && !$reinstall) { continue; } $langs[] = $pack_meta; } if (!empty($pack_file) && !empty($langs)) { return reset($langs); } return $langs; }
function fn_exim_1c_update_category($category_data, $category_id, $lang_code) { $_data = $category_data; unset($_data['parent_id']); $_data['timestamp'] = fn_parse_date($category_data['timestamp']); if (empty($category_id)) { $create = true; $category_id = db_query("INSERT INTO ?:categories ?e", $_data); $_data['category_id'] = $category_id; foreach (fn_get_translation_languages() as $_data['lang_code'] => $v) { db_query("INSERT INTO ?:category_descriptions ?e", $_data); } $category_data['parent_id'] = !empty($category_data['parent_id']) ? $category_data['parent_id'] : 0; } else { db_query("UPDATE ?:categories SET ?u WHERE category_id = ?i", $_data, $category_id); db_query("UPDATE ?:category_descriptions SET ?u WHERE category_id = ?i AND lang_code = ?s", $_data, $category_id, $lang_code); } if ($category_id) { if (isset($category_data['parent_id'])) { fn_change_category_parent($category_id, intval($category_data['parent_id'])); } } return $category_id; }
function fn_update_product_filter($filter_data, $filter_id, $lang_code = DESCR_SL) { if (fn_allowed_for('ULTIMATE') && Registry::get('runtime.company_id')) { if (!empty($filter_id) && !fn_check_company_id('product_filters', 'filter_id', $filter_id)) { fn_company_access_denied_notification(); return false; } if (!empty($filter_id)) { unset($filter_data['company_id']); } } // Parse filter type if (strpos($filter_data['filter_type'], 'FF-') === 0 || strpos($filter_data['filter_type'], 'RF-') === 0 || strpos($filter_data['filter_type'], 'DF-') === 0) { $filter_data['feature_id'] = str_replace(array('RF-', 'FF-', 'DF-'), '', $filter_data['filter_type']); $filter_data['feature_type'] = db_get_field("SELECT feature_type FROM ?:product_features WHERE feature_id = ?i", $filter_data['feature_id']); } else { $filter_data['field_type'] = str_replace(array('R-', 'B-'), '', $filter_data['filter_type']); $filter_fields = fn_get_product_filter_fields(); } if (!empty($filter_id)) { db_query('UPDATE ?:product_filters SET ?u WHERE filter_id = ?i', $filter_data, $filter_id); db_query('UPDATE ?:product_filter_descriptions SET ?u WHERE filter_id = ?i AND lang_code = ?s', $filter_data, $filter_id, $lang_code); } else { $filter_data['filter_id'] = $filter_id = db_query('INSERT INTO ?:product_filters ?e', $filter_data); foreach (fn_get_translation_languages() as $filter_data['lang_code'] => $_d) { db_query("INSERT INTO ?:product_filter_descriptions ?e", $filter_data); } } fn_set_hook('update_product_filter', $filter_data, $filter_id, $lang_code); return $filter_id; }
function fn_update_company($company_data, $company_id = 0, $lang_code = CART_LANGUAGE) { $can_update = true; /** * Update company data (running before fn_update_company() function) * * @param array $company_data Company data * @param int $company_id Company identifier * @param string $lang_code Two-letter language code (e.g. 'en', 'ru', etc.) * @param boolean $can_update Flag, allows addon to forbid to create/update company */ fn_set_hook('update_company_pre', $company_data, $company_id, $lang_code, $can_update); if ($can_update == false) { return false; } if (fn_allowed_for('MULTIVENDOR') && Registry::get('runtime.company_id')) { unset($company_data['comission'], $company_data['comission_type'], $company_data['categories'], $company_data['shippings']); } elseif (fn_allowed_for('ULTIMATE') && Registry::get('runtime.company_id')) { unset($company_data['storefront'], $company_data['secure_storefront']); } if (fn_allowed_for('ULTIMATE') && !Registry::get('runtime.company_id')) { if (isset($company_data['storefront'])) { if (empty($company_data['storefront'])) { fn_set_notification('E', __('error'), __('storefront_url_not_defined')); return false; } else { if (empty($company_data['secure_storefront'])) { $company_data['secure_storefront'] = $company_data['storefront']; } $company_data['storefront'] = Url::clean($company_data['storefront']); $company_data['secure_storefront'] = Url::clean($company_data['secure_storefront']); } } } unset($company_data['company_id']); $_data = $company_data; if (fn_allowed_for('MULTIVENDOR')) { // Check if company with same email already exists $is_exist = db_get_field("SELECT email FROM ?:companies WHERE company_id != ?i AND email = ?s", $company_id, $_data['email']); if (!empty($is_exist)) { $_text = 'error_vendor_exists'; fn_set_notification('E', __('error'), __($_text)); return false; } } if (fn_allowed_for('ULTIMATE') && !empty($company_data['storefront'])) { // Check if company with the same Storefront URL already exists $http_exist = db_get_row('SELECT company_id, storefront FROM ?:companies WHERE storefront = ?s', $company_data['storefront']); $https_exist = db_get_row('SELECT company_id, secure_storefront FROM ?:companies WHERE secure_storefront = ?s', $company_data['secure_storefront']); if (!empty($http_exist) || !empty($https_exist)) { if (empty($company_id)) { if (!empty($http_exist)) { fn_set_notification('E', __('error'), __('storefront_url_already_exists')); } else { fn_set_notification('E', __('error'), __('secure_storefront_url_already_exists')); } return false; } elseif (!empty($http_exist) && $company_id != $http_exist['company_id'] || !empty($https_exist) && $company_id != $https_exist['company_id']) { if (!empty($http_exist) && $company_id != $http_exist['company_id']) { fn_set_notification('E', __('error'), __('storefront_url_already_exists')); unset($_data['storefront']); } else { fn_set_notification('E', __('error'), __('secure_storefront_url_already_exists')); unset($_data['secure_storefront']); } return false; } } } if (isset($company_data['shippings'])) { $_data['shippings'] = empty($company_data['shippings']) ? '' : fn_create_set($company_data['shippings']); } if (!empty($_data['countries_list'])) { $_data['countries_list'] = implode(',', $_data['countries_list']); } else { $_data['countries_list'] = ''; } // add new company if (empty($company_id)) { // company title can't be empty if (empty($company_data['company'])) { fn_set_notification('E', __('error'), __('error_empty_company_name')); return false; } $_data['timestamp'] = TIME; $company_id = db_query("INSERT INTO ?:companies ?e", $_data); if (empty($company_id)) { return false; } $_data['company_id'] = $company_id; foreach (fn_get_translation_languages() as $_data['lang_code'] => $_v) { db_query("INSERT INTO ?:company_descriptions ?e", $_data); } $action = 'add'; // update company information } else { if (isset($company_data['company']) && empty($company_data['company'])) { unset($company_data['company']); } if (!empty($_data['status'])) { $status_from = db_get_field("SELECT status FROM ?:companies WHERE company_id = ?i", $company_id); } db_query("UPDATE ?:companies SET ?u WHERE company_id = ?i", $_data, $company_id); if (isset($status_from) && $status_from != $_data['status']) { fn_companies_change_status($company_id, $_data['status'], '', $status_from, true); } // unset data lang code as it determines company main language not description language unset($_data['lang_code']); db_query("UPDATE ?:company_descriptions SET ?u WHERE company_id = ?i AND lang_code = ?s", $_data, $company_id, $lang_code); $action = 'update'; } /** * Update company data (running after fn_update_company() function) * * @param array $company_data Company data * @param int $company_id Company integer identifier * @param string $lang_code Two-letter language code (e.g. 'en', 'ru', etc.) * @param string $action Flag determines if company was created (add) or just updated (update). */ fn_set_hook('update_company', $company_data, $company_id, $lang_code, $action); $logo_ids = array(); if ($action == 'add') { $theme_name = !empty($company_data['theme_name']) ? $company_data['theme_name'] : Registry::get('config.base_theme'); if (fn_allowed_for('ULTIMATE')) { $clone_from = !empty($company_data['clone_from']) && $company_data['clone_from'] != 'all' ? $company_data['clone_from'] : null; if (!is_null($clone_from)) { $theme_name = fn_get_theme_path('[theme]', 'C', $clone_from); } } if (fn_allowed_for('ULTIMATE')) { $logo_ids = fn_install_theme($theme_name, $company_id, false); } else { $logo_ids = fn_create_theme_logos_by_layout_id($theme_name, 0, $company_id, true); } } fn_attach_image_pairs('logotypes', 'logos', 0, $lang_code, $logo_ids); return $company_id; }
function fn_import_parse_languages($pattern, &$import_data, $options) { foreach ($pattern['export_fields'] as $field_name => $field) { if (!empty($field['type']) && $field['type'] == 'languages') { if (empty($field['db_field'])) { $field_lang = $field_name; } else { $field_lang = $field['db_field']; } } } // Languages $langs = array(); // Get all lang from data foreach ($import_data as $k => $v) { if (!isset($v['lang_code']) || in_array($v['lang_code'], $langs)) { break; } $langs[] = $v['lang_code']; } if (empty($langs)) { foreach ($import_data as $key => $data) { $import_data[$key]['lang_code'] = DEFAULT_LANGUAGE; } $langs[] = DEFAULT_LANGUAGE; } $langs = array_intersect($langs, array_keys(fn_get_translation_languages())); $count_langs = count($langs); $count_lang_data = array(); foreach ($langs as $lang) { $count_lang_data[$lang] = 0; } $data = array(); $result = true; if (isset($field_lang)) { foreach ($import_data as $v) { if (!empty($v[$field_lang]) && in_array($v[$field_lang], $langs)) { $data[] = $v; $count_lang_data[$v[$field_lang]]++; } } // Check $count_data = reset($count_lang_data); foreach ($langs as $lang) { if ($count_lang_data[$lang] != $count_data) { $result = false; break; } } if ($result) { // Chunk on languages $data_lang = array_chunk($data, $count_langs); $data = array(); foreach ($data_lang as $data_key => $data_value) { foreach ($data_value as $v) { $data[$data_key][$v[$field_lang]] = $v; } } if (fn_allowed_for('ULTIMATE')) { foreach ($data as $data_key => $data_value) { $data_main = array_shift($data_value); if (empty($data_main['company'])) { $data_main['company'] = Registry::get('runtime.company_data.company'); } foreach ($data_value as $v) { $data[$data_key][$v[$field_lang]]['company'] = $data_main['company']; } } } $import_data = $data; } } else { $main_lang = reset($langs); foreach ($import_data as $data_key => $data_value) { $data[$data_key][$main_lang] = $data_value; } $import_data = $data; } return $result; }
function fn_update_destination($data, $destination_id, $lang_code = DESCR_SL) { $data['localization'] = empty($data['localization']) ? '' : fn_implode_localizations($data['localization']); if (!empty($destination_id)) { db_query('UPDATE ?:destinations SET ?u WHERE destination_id = ?i', $data, $destination_id); db_query('UPDATE ?:destination_descriptions SET ?u WHERE destination_id = ?i AND lang_code = ?s', $data, $destination_id, $lang_code); db_query("DELETE FROM ?:destination_elements WHERE destination_id = ?i", $destination_id); } else { $destination_id = $data['destination_id'] = db_query("REPLACE INTO ?:destinations ?e", $data); foreach (fn_get_translation_languages() as $data['lang_code'] => $_v) { db_query("REPLACE INTO ?:destination_descriptions ?e", $data); } } $_data = array('destination_id' => $destination_id); if (!empty($data['states'])) { $_data['element_type'] = 'S'; foreach ($data['states'] as $key => $_data['element']) { db_query("INSERT INTO ?:destination_elements ?e", $_data); } } if (!empty($data['countries'])) { $_data['element_type'] = 'C'; foreach ($data['countries'] as $key => $_data['element']) { db_query("INSERT INTO ?:destination_elements ?e", $_data); } } if (!empty($data['zipcodes'])) { $zipcodes = explode("\n", $data['zipcodes']); $_data['element_type'] = 'Z'; foreach ($zipcodes as $key => $value) { $value = trim($value); if (!empty($value)) { $_data['element'] = $value; db_query("INSERT INTO ?:destination_elements ?e", $_data); } } } if (!empty($data['cities'])) { $cities = explode("\n", $data['cities']); $_data['element_type'] = 'T'; foreach ($cities as $key => $value) { $value = trim($value); if (!empty($value)) { $_data['element'] = $value; db_query("INSERT INTO ?:destination_elements ?e", $_data); } } } if (!empty($data['addresses'])) { $addresses = explode("\n", $data['addresses']); $_data['element_type'] = 'A'; foreach ($addresses as $key => $value) { $value = trim($value); if (!empty($value)) { $_data['element'] = $value; db_query("INSERT INTO ?:destination_elements ?e", $_data); } } } return $destination_id; }