/** * Updates language * * @param array $language_data Language data * @param string $lang_id language id * @return string language id */ public static function update($language_data, $lang_id) { if (!$language_data || empty($language_data['lang_code'])) { return false; } /** * Changes language data before update * * @param array $language_data Language data * @param string $lang_id language id */ fn_set_hook('update_language_pre', $language_data, $lang_id); $language_data['lang_code'] = trim($language_data['lang_code']); $language_data['lang_code'] = substr($language_data['lang_code'], 0, 2); $action = false; $is_exists = db_get_field("SELECT COUNT(*) FROM ?:languages WHERE lang_code = ?s AND lang_id <> ?i", $language_data['lang_code'], $lang_id); if (!empty($is_exists)) { fn_set_notification('E', __('error'), __('error_lang_code_exists', array('[code]' => $language_data['lang_code']))); $lang_id = false; } elseif (empty($lang_id)) { if (!empty($language_data['lang_code']) && !empty($language_data['name'])) { $lang_id = db_query("INSERT INTO ?:languages ?e", $language_data); $clone_from = !empty($language_data['from_lang_code']) ? $language_data['from_lang_code'] : CART_LANGUAGE; fn_clone_language($language_data['lang_code'], $clone_from); $action = 'add'; } } else { $res = db_query("UPDATE ?:languages SET ?u WHERE lang_id = ?i", $language_data, $lang_id); if (!$res) { $lang_id = null; } $action = 'update'; } /** * Adds additional actions after language update * * @param array $language_data Language data * @param string $lang_id language id * @param string $action Current action ('add', 'update' or bool false if failed to update language) */ fn_set_hook('update_language_post', $language_data, $lang_id, $action); return $lang_id; }
protected function _fixLanguagesMissedInImported($copy_from_language) { General::connectToImportedDB($this->store_data); $languages = db_get_hash_array('SELECT * FROM ?:languages', 'lang_code'); General::connectToOriginalDB(array('table_prefix' => General::formatPrefix())); $existing = db_get_hash_array('SELECT * FROM ?:languages', 'lang_code'); $missed_languages = array_diff_key($existing, $languages); if (!empty($missed_languages)) { foreach ($missed_languages as $lang_code => $language_data) { fn_clone_language($language_data['lang_code'], $copy_from_language); } } return true; }