/** * 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(); }