/**
  * 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;
 }
예제 #3
0
 /**
  * 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;
 }
예제 #5
0
 /**
  * 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);
             }
         }
     }
 }
예제 #6
0
 /**
  * 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;
 }