/**
     * Add hidden fields to TM basket.
     * #icl_duplicate_post_in_basket with list of ids in basket.
     * #icl_disconnect_nonce nonce for AJAX call.
     */
    public function add_hidden_field()
    {
        if (class_exists('TranslationProxy_Basket')) {
            $basket = TranslationProxy_Basket::get_basket(true);
            if (!isset($basket['post'])) {
                return;
            }
            $post_ids = array_map('intval', array_keys($basket['post']));
            if (true === $this->duplicated_posts_found($post_ids)) {
                ?>
				<input type="hidden" value="<?php 
                echo implode(',', $post_ids);
                ?>
" id="icl_duplicate_post_in_basket">
				<input type="hidden" value="<?php 
                echo wp_create_nonce('icl_disconnect_duplicates');
                ?>
" id="icl_disconnect_nonce">
				<?php 
            }
        }
    }
 /**
  * Returns an array representation of the current translation basket
  *
  * @param bool|false $force if true reloads the baskets contents from the database
  *
  * @return array
  */
 function get_basket($force = false)
 {
     $basket = TranslationProxy_Basket::get_basket($force);
     $basket = $basket ? $basket : array();
     return $basket;
 }
 public function is_in_basket($target_lang)
 {
     if (class_exists('TranslationProxy_Basket')) {
         $basket = TranslationProxy_Basket::get_basket();
         return isset($basket['package'][$this->package->ID]['to_langs'][$target_lang]);
     } else {
         return false;
     }
 }
예제 #4
0
 public function rollback_basket_commit()
 {
     TranslationProxy_Basket::get_basket(true);
     $basket_name = TranslationProxy_Basket::get_basket_name();
     $basket_name = $basket_name ? $basket_name : filter_input(INPUT_POST, 'basket_name', FILTER_SANITIZE_STRING);
     $batch_id = TranslationProxy::get_batch_id_from_name($basket_name);
     if ($batch_id) {
         $batch = new WPML_Translation_Batch($batch_id);
         $batch->cancel_all_remote_jobs();
     }
 }
 /**
  * @param $data
  */
 private function set_translation_jobs_basket($data)
 {
     if (isset($data['batch']) && $data['batch']) {
         $batch = $data['batch'];
         $translation_jobs_basket_full = TranslationProxy_Basket::get_basket();
         $this->translation_jobs_basket['name'] = $translation_jobs_basket_full['name'];
         foreach ($batch as $batch_item) {
             $element_type = $batch_item['type'];
             $element_id = $batch_item['post_id'];
             if (isset($translation_jobs_basket_full[$element_type][$element_id])) {
                 $this->translation_jobs_basket[$element_type][$element_id] = $translation_jobs_basket_full[$element_type][$element_id];
             }
         }
     }
 }
 /**
  * return TranslationProxy_Batch
  */
 public static function get_batch_data()
 {
     $basket = TranslationProxy_Basket::get_basket();
     return $basket;
 }
 /**
  * @param     $source_language
  * @param     $target_language
  *
  * @throws WPML_Package_Exception
  */
 public function send_package_to_basket($source_language, $target_language)
 {
     global $sitepress, $iclTranslationManagement;
     $package = $this->package;
     $package_id = $package->ID;
     $basket = TranslationProxy_Basket::get_basket();
     $language_name = $sitepress->get_display_language_name($target_language);
     $send_to_basket = true;
     $package_helper = new WPML_Package_Helper();
     $post = $package_helper->get_translatable_item(null, $package_id);
     $post_title = $post->title;
     $element_type = $package->get_element_type_prefix() . '_' . $post->kind_slug;
     $trid = $sitepress->get_element_trid($package_id, $element_type);
     $job_id = $iclTranslationManagement->get_translation_job_id($trid, $target_language);
     if ($job_id) {
         $job_details = $iclTranslationManagement->get_translation_job($job_id);
         $send_to_basket = $this->validate_package_status($job_details, $post_title, $language_name);
     }
     if ($send_to_basket) {
         $basket['package'][$package_id]['from_lang'] = $source_language;
         $basket['package'][$package_id]['to_langs'][$target_language] = 1;
         // set basket language if not already set
         if (!isset($basket['source_language'])) {
             $basket['source_language'] = $source_language;
         }
     }
     TranslationProxy_Basket::update_basket($basket);
 }
 private function get_data()
 {
     global $iclTranslationManagement;
     $translation_jobs_basket = TranslationProxy_Basket::get_basket();
     $basket_items_types = TranslationProxy_Basket::get_basket_items_types();
     foreach ($basket_items_types as $item_type_name => $item_type) {
         $translation_jobs_cart[$item_type_name] = false;
         if ($item_type == 'core') {
             if (!empty($translation_jobs_basket[$item_type_name])) {
                 $basket_type_items = $translation_jobs_basket[$item_type_name];
                 if ($item_type_name == 'string') {
                     $translation_jobs_cart[$item_type_name] = $iclTranslationManagement->get_translation_jobs_basket_strings($basket_type_items);
                 } else {
                     $translation_jobs_cart[$item_type_name] = $iclTranslationManagement->get_translation_jobs_basket_posts($basket_type_items);
                 }
                 $this->build_basket_items($translation_jobs_cart[$item_type_name], $item_type_name);
             }
         } elseif ($item_type == 'custom') {
             $translation_jobs_cart_externals = apply_filters('wpml_tm_translation_jobs_basket', array(), $translation_jobs_basket, $item_type_name);
             $this->build_basket_items($translation_jobs_cart_externals, $item_type_name);
         }
     }
 }