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; } }
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; } }
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; }