/** * Handle ajax process */ public function on_process_ajax() { $ajax_return = array(); $order = $_POST['order']; switch ($order['action']) { case 'clean': case 'wpglobus-reset': require_once 'admin/class-wpglobus-clean.php'; WPGlobus_Clean::process_ajax($order); break; case 'save_post_meta_settings': $settings = (array) get_option(WPGlobus::Config()->option_post_meta_settings); if (empty($settings[$order['post_type']])) { $settings[$order['post_type']] = array(); } $settings[$order['post_type']][$order['meta_key']] = $order['checked']; if (update_option(WPGlobus::Config()->option_post_meta_settings, $settings)) { $ajax_return['result'] = 'ok'; } else { $ajax_return['result'] = 'error'; } $ajax_return['checked'] = $order['checked']; $ajax_return['id'] = $order['id']; $ajax_return['meta_key'] = $order['meta_key']; break; case 'wpglobus_select_lang': if ($order['locale'] == 'en_US') { update_option('WPLANG', ''); } else { update_option('WPLANG', $order['locale']); } break; case 'get_titles': if ('taxonomy' === $order['type']) { /** * Remove filter to get raw term description */ remove_filter('get_term', array('WPGlobus_Filters', 'filter__get_term'), 0); } $config = WPGlobus::Config(); $result = array(); $bulkedit_post_titles = array(); /** * Iterate through the Titles array. * * @var int $id Post or Term ID. * @var string $title Post or Term Name. */ foreach ((array) $order['title'] as $id => $title) { if (!WPGlobus_Core::has_translations($title['source'])) { /** * In some cases, we've lost the raw data for post title on edit.php page * for example product post type from Woo. */ $_title_from_db = ''; if ('post' === $order['type']) { $_title_from_db = get_post_field('post_title', $id); } elseif ('taxonomy' === $order['type']) { if ($_term_by_id = get_term_by('id', $id, $order['taxonomy'])) { $_title_from_db = $_term_by_id->name; } } if ($_title_from_db) { $title['source'] = $_title_from_db; } unset($_term_by_id, $_title_from_db); } $result[$id]['source'] = $title['source']; $term = null; // should initialize before if because used in the next foreach if ($order['type'] == 'taxonomy' && $order['taxonomy']) { $term = get_term($id, $order['taxonomy']); if (is_wp_error($term)) { $order['taxonomy'] = false; } } foreach ($config->enabled_languages as $language) { $return = $language == $config->default_language ? WPGlobus::RETURN_IN_DEFAULT_LANGUAGE : WPGlobus::RETURN_EMPTY; $result[$id][$language]['name'] = WPGlobus_Core::text_filter($title['source'], $language, $return); if ($term && $order['type'] == 'taxonomy' && $order['taxonomy']) { $result[$id][$language]['description'] = WPGlobus_Core::text_filter($term->description, $language, $return); } $bulkedit_post_titles[$id][$language]['name'] = WPGlobus_Core::text_filter($title['source'], $language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE); } } $ajax_return['qedit_titles'] = $result; $ajax_return['bulkedit_post_titles'] = $bulkedit_post_titles; break; } echo json_encode($ajax_return); die; }
/** * Handle ajax process */ public function on_process_ajax() { $ajax_return = array(); $order = $_POST['order']; switch ($order['action']) { case 'clean': case 'wpglobus-reset': require_once 'admin/class-wpglobus-clean.php'; WPGlobus_Clean::process_ajax($order); break; case 'save_post_meta_settings': $settings = (array) get_option(WPGlobus::Config()->option_post_meta_settings); if (empty($settings[$order['post_type']])) { $settings[$order['post_type']] = array(); } $settings[$order['post_type']][$order['meta_key']] = $order['checked']; if (update_option(WPGlobus::Config()->option_post_meta_settings, $settings)) { $ajax_return['result'] = 'ok'; } else { $ajax_return['result'] = 'error'; } $ajax_return['checked'] = $order['checked']; $ajax_return['id'] = $order['id']; $ajax_return['meta_key'] = $order['meta_key']; break; case 'wpglobus_select_lang': if ($order['locale'] == 'en_US') { update_option('WPLANG', ''); } else { update_option('WPLANG', $order['locale']); } break; case 'get_titles': if ($order['type'] == 'taxonomy') { /** * Remove filter to get raw term description * @todo Need to restore? */ remove_filter('get_term', array('WPGlobus_Filters', 'filter__get_term'), 0); } $config = WPGlobus::Config(); $result = array(); $bulkedit_post_titles = array(); foreach ($order['title'] as $id => $title) { $result[$id]['source'] = $title['source']; $term = null; // should initialize before if because used in the next foreach if ($order['type'] == 'taxonomy' && $order['taxonomy']) { $term = get_term($id, $order['taxonomy']); if (is_wp_error($term)) { $order['taxonomy'] = false; } } foreach ($config->enabled_languages as $language) { $return = $language == $config->default_language ? WPGlobus::RETURN_IN_DEFAULT_LANGUAGE : WPGlobus::RETURN_EMPTY; $result[$id][$language]['name'] = WPGlobus_Core::text_filter($title['source'], $language, $return); if ($term && $order['type'] == 'taxonomy' && $order['taxonomy']) { $result[$id][$language]['description'] = WPGlobus_Core::text_filter($term->description, $language, $return); } $bulkedit_post_titles[$id][$language]['name'] = WPGlobus_Core::text_filter($title['source'], $language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE); } } $ajax_return['qedit_titles'] = $result; $ajax_return['bulkedit_post_titles'] = $bulkedit_post_titles; break; } echo json_encode($ajax_return); die; }