/** * Adds the post to the relevant site * * @param $post * * @param $blog * * @return int|\WP_Error */ public function add_post($post, $blog) { if (!$blog || $this->post_exists($post, $blog)) { return FALSE; } $original_post_id = $post->ID; // store temp so that we can return it to the original post $source_content_id = Wpml2mlp_Helper::get_default_post_ID($post); $meta = get_post_meta($post->ID); $post->ID = NULL; // reset the post_id, new one will be created switch_to_blog((int) $blog['blog_id']); $new_post_id = wp_insert_post((array) $post); if ($new_post_id > 0) { foreach ($meta as $key => $value) { update_post_meta($new_post_id, $key, $value[0]); } } restore_current_blog(); if (0 < $new_post_id) { $this->content_relations->set_relation(Wpml2mlp_Helper::get_default_blog(), (int) $blog['blog_id'], $source_content_id, $new_post_id, $post->post_type); } $post->ID = $original_post_id; return $new_post_id; }
/** * @param array $existing * @param int $source_term_taxonomy_id * @param int $target_site_id * @param int $target_term_taxonomy_id * * @return bool */ private function update_terms(array $existing, $source_term_taxonomy_id, $target_site_id, $target_term_taxonomy_id) { if (isset($existing[$target_site_id]) && $existing[$target_site_id] === $target_term_taxonomy_id) { return TRUE; } if (0 !== $target_term_taxonomy_id) { return $this->content_relations->set_relation($this->current_site_id, $target_site_id, $source_term_taxonomy_id, $target_term_taxonomy_id, 'term'); } $translation_ids = $this->content_relations->get_translation_ids($this->current_site_id, $target_site_id, $source_term_taxonomy_id, $target_term_taxonomy_id, 'term'); return $this->content_relations->delete_relation($translation_ids['ml_source_blogid'], $target_site_id, $translation_ids['ml_source_elementid'], 0, 'term'); }
/** * @param array $existing * @param int $source_term_taxonomy_id * @param int $target_site_id * @param int $target_term_taxonomy_id * * @return bool */ private function update_terms(array $existing, $source_term_taxonomy_id, $target_site_id, $target_term_taxonomy_id) { // There's nothing to do here if (-1 === $target_term_taxonomy_id) { return TRUE; } if (isset($existing[$target_site_id]) && $existing[$target_site_id] === $target_term_taxonomy_id) { return TRUE; } $translation_ids = $this->content_relations->get_translation_ids($this->current_site_id, $target_site_id, $source_term_taxonomy_id, $target_term_taxonomy_id, 'term'); if ($translation_ids['ml_source_blogid'] !== $this->current_site_id) { $target_site_id = $this->current_site_id; if (0 !== $target_term_taxonomy_id) { $target_term_taxonomy_id = $source_term_taxonomy_id; } } // Delete a relation if (0 === $target_term_taxonomy_id) { return $this->content_relations->delete_relation($translation_ids['ml_source_blogid'], $target_site_id, $translation_ids['ml_source_elementid'], 0, 'term'); } return $this->content_relations->set_relation($translation_ids['ml_source_blogid'], $target_site_id, $translation_ids['ml_source_elementid'], $target_term_taxonomy_id, 'term'); }
/** * set the source id of the element * * @param int $source_content_id ID of current element * @param int $remote_site_id ID of remote site * @param int $remote_content_id ID of remote content * @return void */ public function set_linked_element($source_content_id, $remote_site_id, $remote_content_id) { $this->content_relations->set_relation($this->source_site_id, $remote_site_id, $source_content_id, $remote_content_id, 'post'); }