コード例 #1
0
 function process_request($data)
 {
     $action = $data['icl_tm_action'];
     $data = stripslashes_deep($data);
     switch ($action) {
         case 'add_translator':
             if (wp_verify_nonce($data['add_translator_nonce'], 'add_translator')) {
                 // Initial adding
                 if (isset($data['from_lang']) && isset($data['to_lang'])) {
                     $data['lang_pairs'] = array();
                     $data['lang_pairs'][$data['from_lang']] = array($data['to_lang'] => 1);
                 }
                 $this->add_translator($data['user_id'], $data['lang_pairs']);
                 $_user = new WP_User($data['user_id']);
                 wp_redirect('admin.php?page=' . WPML_TM_FOLDER . '/menu/main.php&sm=translators&icl_tm_message=' . urlencode(sprintf(__('%s has been added as a translator for this site.', 'sitepress'), $_user->data->display_name)) . '&icl_tm_message_type=updated');
             }
             break;
         case 'edit_translator':
             $message = null;
             $message_type = 'updated';
             if (wp_verify_nonce($data['edit_translator_nonce'], 'edit_translator')) {
                 $result = $this->edit_translator($data['user_id'], isset($data['lang_pairs']) ? $data['lang_pairs'] : array());
                 $_user = new WP_User($data['user_id']);
                 if ($result) {
                     $message = sprintf(__('Language pairs for %s have been edited.', 'sitepress'), $_user->data->display_name);
                 }
             } elseif (isset($_user) && !empty($_user->ID)) {
                 $message = sprintf(__('%s has been removed as a translator for this site.', 'sitepress'), $_user->data->display_name);
             } elseif (isset($data['user_id'])) {
                 $message = sprintf(__("I can't find user ID %d: he might have been removed as a translator for this site.", 'sitepress'), $data['user_id']);
             } else {
                 $message = sprintf(__("You can't do that.", 'sitepress'), $data['user_id']);
                 $message_type = 'error';
             }
             if ($message) {
                 wp_redirect('admin.php?page=' . WPML_TM_FOLDER . '/menu/main.php&sm=translators&icl_tm_message=' . urlencode($message) . '&icl_tm_message_type=' . $message_type);
             }
             break;
         case 'remove_translator':
             if (wp_verify_nonce($data['remove_translator_nonce'], 'remove_translator')) {
                 $this->remove_translator($data['user_id']);
                 $_user = new WP_User($data['user_id']);
                 wp_redirect('admin.php?page=' . WPML_TM_FOLDER . '/menu/main.php&sm=translators&icl_tm_message=' . urlencode(sprintf(__('%s has been removed as a translator for this site.', 'sitepress'), $_user->data->display_name)) . '&icl_tm_message_type=updated');
             }
             break;
         case 'edit':
             $this->selected_translator->ID = intval($data['user_id']);
             break;
         case 'dashboard_filter':
             $_SESSION['translation_dashboard_filter'] = $data['filter'];
             wp_redirect('admin.php?page=' . WPML_TM_FOLDER . '/menu/main.php&sm=dashboard');
             break;
         case 'sort':
             if (isset($data['sort_by'])) {
                 $_SESSION['translation_dashboard_filter']['sort_by'] = $data['sort_by'];
             }
             if (isset($data['sort_order'])) {
                 $_SESSION['translation_dashboard_filter']['sort_order'] = $data['sort_order'];
             }
             break;
         case 'reset_filters':
             unset($_SESSION['translation_dashboard_filter']);
             break;
         case 'add_jobs':
             if (isset($data['iclnonce']) && wp_verify_nonce($data['iclnonce'], 'pro-translation-icl')) {
                 TranslationProxy_Basket::add_posts_to_basket($data);
                 do_action('wpml_tm_add_to_basket', $data);
             }
             break;
         case 'jobs_filter':
             $_SESSION['translation_jobs_filter'] = $data['filter'];
             wp_redirect('admin.php?page=' . WPML_TM_FOLDER . '/menu/main.php&sm=jobs');
             break;
         case 'ujobs_filter':
             $_SESSION['translation_ujobs_filter'] = $data['filter'];
             wp_redirect('admin.php?page=' . WPML_TM_FOLDER . '/menu/translations-queue.php');
             break;
         case 'save_translation':
             if (!empty($data['resign'])) {
                 $this->resign_translator($data['job_id']);
                 wp_redirect(admin_url('admin.php?page=' . WPML_TM_FOLDER . '/menu/translations-queue.php&resigned=' . $data['job_id']));
                 exit;
             } else {
                 do_action('wpml_save_translation_data', $data);
             }
             break;
         case 'save_notification_settings':
             $this->settings['notification'] = $data['notification'];
             $this->save_settings();
             $this->add_message(array('type' => 'updated', 'text' => __('Preferences saved.', 'sitepress')));
             break;
         case 'create_job':
             global $current_user;
             if (!isset($this->current_translator->ID) && isset($current_user->ID)) {
                 $this->current_translator->ID = $current_user->ID;
             }
             $data['translator'] = $this->current_translator->ID;
             $job_ids = $this->send_jobs($data);
             wp_redirect('admin.php?page=' . WPML_TM_FOLDER . '/menu/translations-queue.php&job_id=' . array_pop($job_ids));
             break;
         case 'cancel_jobs':
             if (isset($data['icl_translation_id'])) {
                 $this->cancel_translation_request($data['icl_translation_id']);
                 $this->add_message(array('type' => 'updated', 'text' => __('Translation requests cancelled.', 'sitepress')));
             } else {
                 $this->add_message(array('type' => 'updated', 'text' => __('No Translation requests selected.', 'sitepress')));
             }
             break;
     }
 }
コード例 #2
0
 function process_request($data)
 {
     $action = $data['icl_tm_action'];
     $data = stripslashes_deep($data);
     switch ($action) {
         case 'add_translator':
             if (wp_verify_nonce($data['add_translator_nonce'], 'add_translator')) {
                 $this->icl_tm_add_translator($data);
                 wp_safe_redirect('admin.php?page=' . WPML_TM_FOLDER . '/menu/main.php&sm=translators');
                 exit;
             }
             break;
         case 'edit_translator':
             $this->icl_tm_edit_translator($data);
             wp_safe_redirect('admin.php?page=' . WPML_TM_FOLDER . '/menu/main.php&sm=translators');
             exit;
             break;
         case 'remove_translator':
             if (wp_verify_nonce($data['remove_translator_nonce'], 'remove_translator')) {
                 $this->icl_tm_remove_translator($data);
                 wp_safe_redirect('admin.php?page=' . WPML_TM_FOLDER . '/menu/main.php&sm=translators');
                 exit;
             }
             break;
         case 'edit':
             $this->selected_translator->ID = intval($data['user_id']);
             break;
         case 'dashboard_filter':
             $_SESSION['translation_dashboard_filter'] = $data['filter'];
             wp_safe_redirect('admin.php?page=' . WPML_TM_FOLDER . '/menu/main.php&sm=dashboard');
             break;
         case 'sort':
             if (isset($data['sort_by'])) {
                 $_SESSION['translation_dashboard_filter']['sort_by'] = $data['sort_by'];
             }
             if (isset($data['sort_order'])) {
                 $_SESSION['translation_dashboard_filter']['sort_order'] = $data['sort_order'];
             }
             break;
         case 'reset_filters':
             unset($_SESSION['translation_dashboard_filter']);
             break;
         case 'add_jobs':
             if (isset($data['iclnonce']) && wp_verify_nonce($data['iclnonce'], 'pro-translation-icl')) {
                 TranslationProxy_Basket::add_posts_to_basket($data);
                 do_action('wpml_tm_add_to_basket', $data);
             }
             break;
         case 'jobs_filter':
             $_SESSION['translation_jobs_filter'] = $data['filter'];
             wp_safe_redirect('admin.php?page=' . WPML_TM_FOLDER . '/menu/main.php&sm=jobs');
             break;
         case 'ujobs_filter':
             $_SESSION['translation_ujobs_filter'] = $data['filter'];
             wp_safe_redirect('admin.php?page=' . WPML_TM_FOLDER . '/menu/translations-queue.php');
             break;
         case 'save_translation':
             if (!empty($data['resign'])) {
                 $this->resign_translator($data['job_id']);
                 wp_safe_redirect(admin_url('admin.php?page=' . WPML_TM_FOLDER . '/menu/translations-queue.php&resigned=' . $data['job_id']));
                 exit;
             } else {
                 do_action('wpml_save_translation_data', $data);
             }
             break;
         case 'save_notification_settings':
             $this->icl_tm_save_notification_settings($data);
             break;
         case 'create_job':
             global $current_user;
             if (!isset($this->current_translator->ID) && isset($current_user->ID)) {
                 $this->current_translator->ID = $current_user->ID;
             }
             $data['translator'] = $this->current_translator->ID;
             $job_ids = $this->send_jobs($data);
             wp_safe_redirect('admin.php?page=' . WPML_TM_FOLDER . '/menu/translations-queue.php&job_id=' . array_pop($job_ids));
             break;
         case 'cancel_jobs':
             $this->icl_tm_cancel_jobs($data);
             break;
     }
 }
コード例 #3
0
 private function add_translation_id_to_basket($translation_id)
 {
     global $wpdb;
     $element = $wpdb->get_row($wpdb->prepare("\tSELECT o.element_id, i.source_language_code, i.language_code\n\t\t\t\tFROM {$wpdb->prefix}icl_translations i\n\t\t\t\tJOIN {$wpdb->prefix}icl_translation_status s\n\t\t\t\t\tON s.translation_id = i.translation_id\n\t\t\t\tJOIN {$wpdb->prefix}icl_translations o\n\t\t\t\t\tON o.trid = i.trid\n\t\t\t\t\t\tAND o.language_code = i.source_language_code\n\t\t\t\tWHERE i.translation_id = %d\n\t\t\t\tLIMIT 1", $translation_id));
     if ($element) {
         TranslationProxy_Basket::add_posts_to_basket(array('tr_action' => array($element->language_code => 1), 'translate_from' => $element->source_language_code, 'post' => array($element->element_id => array('checked' => $element->element_id, 'type' => 'post'))));
     }
     return (bool) $element;
 }