/** * @param integer $post_id * @param SitePress $sitepress * * @return null|string */ protected function get_save_post_lang($post_id, $sitepress) { $language_code = isset($post_vars['icl_post_language']) ? $post_vars['icl_post_language'] : null; $language_code = $language_code ? $language_code : filter_input(INPUT_GET, 'lang', FILTER_SANITIZE_FULL_SPECIAL_CHARS); $language_code = $language_code ? $language_code : parent::get_save_post_lang($post_id, $sitepress); return $language_code; }
function get_element_language_details($el_id, $el_type = 'post_post') { $details = false; if ($el_id) { if (strpos($el_type, 'post_') === 0) { $details = $this->post_translation->get_element_language_details($el_id, OBJECT); } if (strpos($el_type, 'tax_') === 0) { $details = $this->term_translation->get_element_language_details($el_id, OBJECT); } if (!$details) { $cache_key = $el_id . ':' . $el_type; $cache_group = 'element_language_details'; $cached_details = wp_cache_get($cache_key, $cache_group); if ($cached_details) { return $cached_details; } if (isset($this->icl_translations_cache) && $this->icl_translations_cache->has_key($el_id . $el_type)) { return $this->icl_translations_cache->get($el_id . $el_type); } $details_query = "\n\t\t\t\tSELECT trid, language_code, source_language_code\n\t\t\t\tFROM {$this->wpdb->prefix}icl_translations\n\t\t\t\tWHERE element_id=%d AND element_type=%s\n\t\t\t\t"; $details_prepare = $this->wpdb->prepare($details_query, array($el_id, $el_type)); $details = $this->wpdb->get_row($details_prepare); if (isset($this->icl_translations_cache)) { $this->icl_translations_cache->set($el_id . $el_type, $details); } wp_cache_add($cache_key, $details, $cache_group); } } return $details; }
/** * @param string[] $allowed_langs * @param int $element_id * @param string $element_type_prefix * * @return string[] */ public function filter_target_langs($allowed_langs, $element_id, $element_type_prefix) { if (TranslationProxy_Basket::anywhere_in_basket($element_id, $element_type_prefix)) { $allowed_langs = array(); } elseif ($element_type_prefix === 'post') { if ((bool) $this->post_translations->get_element_lang_code($element_id) === true) { $allowed_langs = array_fill_keys($allowed_langs, 1); $translations = $this->tm_records->icl_translations_by_element_id_and_type_prefix($element_id, 'post')->translations(); foreach ($translations as $lang_code => $element) { if (isset($allowed_langs[$lang_code]) && ($element->element_id() && !$element->source_language_code() || $this->tm_status->is_in_active_job($element_id, $lang_code, 'post'))) { unset($allowed_langs[$lang_code]); } } $allowed_langs = array_keys($allowed_langs); } } return $allowed_langs; }
/** * @param integer $post_id * @param SitePress $sitepress * * @return null|string */ public function get_save_post_lang($post_id, $sitepress) { $language_code = filter_var(isset($_POST['icl_post_language']) ? $_POST['icl_post_language'] : '', FILTER_SANITIZE_FULL_SPECIAL_CHARS); $language_code = $language_code ? $language_code : filter_input(INPUT_GET, 'lang', FILTER_SANITIZE_FULL_SPECIAL_CHARS); return $language_code ? $language_code : parent::get_save_post_lang($post_id, $sitepress); }