/**
  * sanitize input for stt2extat_settings_update_term option
  *
  * @since 1.1
  *
  */
 public function sanitize_update_term($input)
 {
     global $stt2extat_data;
     if (isset($input['term_postid'], $input['term_id'], $input['term_name'], $input['old_term']) && check_admin_referer($this->plugin_data->TextDomain . '_update_term-options', '_wpnonce')) {
         $code = false;
         $new_term = strtolower(sanitize_text_field($input['term_name']));
         $old_term = strtolower(sanitize_text_field($input['old_term']));
         $post_id = absint($input['term_postid']);
         $term_id = absint($input['term_id']);
         if ($new_term == $old_term) {
             $code = 5;
         } else {
             $code = stt2extat_update_postmeta($new_term, $post_id, $old_term, 0, $stt2extat_data->terms, $term_id);
         }
         if (is_int($code)) {
             $msg = stt2extat_edit_term_notice($code, '', $add_setting_error = true);
             add_settings_error('stt2extat_term_error', esc_attr('stt2extat_error_' . absint($code)), $msg, 'error');
             return absint($code);
         }
         $location = 'options-general.php?page=stt2extat';
         $location = add_query_arg('message', 3, $location);
         wp_safe_redirect($location);
         exit;
     }
 }
/**
 * manual insert terms into wp table database post_meta
 * @deprecated see stt2extat_insert_searchterm_callback
 * 
 * @since 1.0.0
 *
 * sanitize $_POST and $_REQUEST and other variable
 *
 * @since 1.0.3
 *
 * change shortcut syntax array
 *
 * @since 1.0.4
 *
 */
function stt2extat_insert_ajax()
{
    global $post, $stt2extat_settings, $stt2extat_data;
    if (!isset($_REQUEST['_wpnonce']) || !wp_verify_nonce($_REQUEST['_wpnonce'], 'heartbeat-nonce')) {
        wp_die('1');
    }
    if (check_admin_referer('heartbeat-nonce', '_wpnonce') && isset($_POST['terms']) && '' != $_POST['terms']) {
        if (!session_id() && !headers_sent()) {
            session_start();
        }
        $post_id = absint($_POST['postid']);
        $ignore = wp_validate_boolean($_POST['ignore']);
        $terms_array = array_map('trim', explode(',', $_POST['terms']));
        $data = $stt2extat_data->terms;
        $last_id = $stt2extat_data->last_id;
        $i = 0;
        $result = array();
        foreach ($terms_array as $query) {
            if ('' == $query) {
                continue;
            }
            $q = stt2extat_filter_text($query);
            if (!is_array($q) && !empty($q)) {
                $relevant = stt2extat_get_relevant_post($post_id, $q, $ignore, true);
                if (isset($data[$q])) {
                    $post_id_exist = $data[$q]->post_id;
                    $meta_count = $data[$q]->count;
                    $result['exists'][] = array($q, __('already exist in', 'stt2extat'), get_permalink($post_id_exist), get_the_title($post_id_exist), __('Hits', 'stt2extat'), intval($meta_count));
                } elseif (!stt2extat_in_stopwords($q) && 3 < mb_strlen($q) && $stt2extat_settings['max_char'] >= mb_strlen($q) && $relevant) {
                    $i++;
                    $id = $last_id + $i;
                    stt2extat_update_postmeta($q, $post_id, '', $id, $data, null);
                    $result['new'][] = array($q, get_permalink($post_id), get_the_title($post_id));
                } elseif (stt2extat_in_stopwords($q)) {
                    $result['stopwords'][] = $q;
                } elseif ($stt2extat_settings['max_char'] < mb_strlen($q)) {
                    $result['long_term'][] = $q;
                } elseif (4 > mb_strlen($q)) {
                    $result['short_term'][] = $q;
                } elseif (!$relevant) {
                    $result['irrelevant'][] = $q;
                }
            } else {
                if (stt2extat_in_stopwords($q['error'])) {
                    $result['stopwords'][] = $q['error'];
                } else {
                    $result['error'][] = esc_attr($q['error']);
                }
            }
        }
        $button_dissmiss = sprintf('<button type="button" class="notice-dismiss"><span class="screen-reader-text">%1$s</span></button>', __('Dismiss this notice.', 'stt2extat'));
        $print = array();
        if (isset($result['exists'])) {
            $exist_msg_html = '<div id="message" class="notice notice-warning fade notice is-dismissible"><p style="margin: .5em 0"><kbd>%1$s</kbd> %2$s <kbd class="permalink">%3$s</kbd> <a target="_blank" href="%4$s" title="%5$s"><i class="dashicons dashicons-external"></i></a>. %6$s: <kbd>%7$s</kbd></p>%8$s</div>';
            $unique = array();
            foreach ($result['exists'] as $k) {
                $unique[] = sprintf($exist_msg_html, esc_attr($k[0]), esc_attr($k[1]), urldecode($k[2]), esc_url($k[2]), esc_attr($k[3]), esc_attr($k[4]), absint($k[5]), $button_dissmiss);
            }
            $print[] = implode('', array_unique($unique));
        }
        if (isset($result['new'])) {
            $new_msg_html = '<div id="message" class="updated fade notice is-dismissible"><p><kbd>%1$s</kbd> %2$s <kbd class="permalink">%3$s</kbd> <a target="_blank" href="%4$s" title="%5$s"><i class="dashicons dashicons-external"></i></a></p>%6$s</div>';
            $unique = array();
            foreach ($result['new'] as $k) {
                $unique['term'][] = $k[0];
                $unique['link'][] = $k[1];
                $unique['title'][] = $k[2];
            }
            $print[] = sprintf($new_msg_html, implode('</kbd><kbd>', array_unique($unique['term'])), __('added into', 'stt2extat'), urldecode($unique['link'][0]), esc_url($unique['link'][0]), esc_attr($unique['title'][0]), $button_dissmiss);
        }
        $error_msg_html = '<div id="message" class="error fade notice is-dismissible"><p><kbd>%1$s</kbd> %2$s</p>%3$s</div>';
        if (isset($result['error'])) {
            $print[] = sprintf($error_msg_html, implode('</kbd><kbd>', $result['error']), __('this term not allowed.', 'stt2extat'), $button_dissmiss);
        }
        if (isset($result['stopwords'])) {
            $print[] = sprintf($error_msg_html, implode('</kbd><kbd>', $result['stopwords']), __('include in filter word(s), can not be added!.', 'stt2extat'), $button_dissmiss);
        }
        if (isset($result['irrelevant'])) {
            $print[] = sprintf($error_msg_html, implode('</kbd><kbd>', $result['irrelevant']), __('irrelevant, can not be added!.', 'stt2extat'), $button_dissmiss);
        }
        if (isset($result['long_term'])) {
            $print[] = sprintf($error_msg_html, implode('</kbd><kbd>', $result['long_term']), __('too long, can not be added!.', 'stt2extat'), $button_dissmiss);
        }
        if (isset($result['short_term'])) {
            $print[] = sprintf($error_msg_html, implode('</kbd><kbd>', $result['short_term']), __('too short, can not be added!.', 'stt2extat'), $button_dissmiss);
        }
        if (array_filter($print)) {
            echo join('', $print);
        }
    }
    wp_die();
}