Example #1
0
 /**
  * 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;
 }
Example #2
0
 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;
 }