/** * Builds translations from given post. * * @param $post * @param $mlp_post_id * * @return array */ public function build_translation_item($post, $mlp_post_id) { $ret = array(); $source_id = Wpml2mlp_Helper::get_default_post_ID($post); $source_post = get_post($source_id); if ($source_post == NULL) { return FALSE; } // put translations here for current post array_push($ret, new Wpml2mlp_Translation_Item($source_post->post_title, $post->post_title, $source_id, $mlp_post_id)); array_push($ret, new Wpml2mlp_Translation_Item($source_post->post_content, $post->post_content, $source_id, $mlp_post_id)); return $ret; }
/** * Gets the relevant multisite post id from singlesite post. * * @param $post * @param $blog * * @return int */ public function get_multisite_id($post, $blog) { $rel = $this->content_relations->get_relations(Wpml2mlp_Helper::get_default_blog(), Wpml2mlp_Helper::get_default_post_ID($post), $post->post_type); $blog_id = (int) $blog['blog_id']; $multisite_id = -1; foreach ($rel as $key => $value) { if ($key == $blog_id) { $multisite_id = $value; break; } } return $multisite_id; }
/** * Gets the main post id from multisite language post. * * @param $post * * @return int * */ public static function get_default_post_ID($post) { $main_language = Wpml2mlp_Helper::get_main_language(); return (int) icl_object_id($post->ID, $post->post_type, TRUE, $main_language); }
/** * Checks if given language already exists on WP. * * @param $language * * @return bool */ private function language_exists($language) { $all_lngs = mlp_get_available_languages(); $short_code = Wpml2mlp_Helper::get_short_language($language['language_code']); $short_locale = Wpml2mlp_Helper::get_short_language($language['default_locale']); foreach ($all_lngs as $lng) { $short_lng = Wpml2mlp_Helper::get_short_language($lng); if ($short_code == $short_lng || $short_locale == $short_lng) { return TRUE; } } return FALSE; }
/** * Set xliff item. * * @param $mlp_post_id * @param $post * @param WPML2MLP_Language_Holder $language_holder */ private function set_xliff_item($mlp_post_id, $post, WPML2MLP_Language_Holder &$language_holder) { $post_lang = Wpml2mlp_Helper::get_language_info($post->ID); if ($post_lang != $this->main_language) { // don't map default language $post_translations = $this->translation_builder->build_translation_item($post, $mlp_post_id); if ($post_translations) { foreach ($post_translations as $trans_item) { $language_holder->set_item($trans_item, $this->main_language, $post_lang); } } } }
/** * Gets blog relevant for provided post. * * @param $post * * @return blog */ private function get_relevant_blog($post) { if (!$this->blog_cache) { $this->blog_cache = wp_get_sites(); } $pst_lng = Wpml2mlp_Helper::get_language_info($post->ID); foreach ($this->blog_cache as $ab) { if (get_blog_language($ab['blog_id'], TRUE) == $pst_lng) { return $ab; } } return FALSE; }