function relevanssi_post_ok($doc) { static $set_listed_ids = false; if (!$set_listed_ids) { $set_listed_ids = true; $GLOBALS['scoper']->listed_ids['post'] = array_fill_keys(array_keys($this->relevanssi_results), true); } if (function_exists('relevanssi_s2member_level')) { if (relevanssi_s2member_level($doc) == 0) { return false; } // back compat with relevanssi_default_post_ok, in case somebody is also running s2member } $status = relevanssi_get_post_status($doc); if (in_array($status, $this->valid_stati)) { $post_ok = current_user_can('read_post', $doc); } else { $post_ok = false; } return $post_ok; }
/** * Do note that while this function takes $post_ok as a parameter, it actually doesn't care much * about the previous value, and will instead overwrite it. If you want to make sure your value * is preserved, either disable this default function, or run your function on a later priority * (this defaults to 10). */ function relevanssi_default_post_ok($post_ok, $doc) { $status = relevanssi_get_post_status($doc); // if it's not public, don't show if ('publish' != $status) { $post_ok = false; } // ...unless if ('private' == $status) { $post_ok = false; if (function_exists('awp_user_can')) { // Role-Scoper, though Role-Scoper actually uses a different function to do this // So whatever is in here doesn't actually run. $current_user = wp_get_current_user(); $post_ok = awp_user_can('read_post', $doc, $current_user->ID); } else { // Basic WordPress version $type = relevanssi_get_post_type($doc); $cap = 'read_private_' . $type . 's'; if (current_user_can($cap)) { $post_ok = true; } } } // only show drafts, pending and future posts in admin search if (in_array($status, array('draft', 'pending', 'future')) && is_admin()) { $post_ok = true; } if (relevanssi_s2member_level($doc) == 0) { $post_ok = false; } // not ok with s2member return $post_ok; }
function relevanssi_do_excerpt($t_post, $query) { global $post; $old_global_post = NULL; if ($post != NULL) { $old_global_post = $post; } $post = $t_post; $remove_stopwords = false; $terms = relevanssi_tokenize($query, $remove_stopwords, -1, false); // These shortcodes cause problems with Relevanssi excerpts remove_shortcode('layerslider'); $content = apply_filters('relevanssi_pre_excerpt_content', $post->post_content, $post, $query); $content = apply_filters('the_content', $content); $content = apply_filters('relevanssi_excerpt_content', $content, $post, $query); $content = relevanssi_strip_invisibles($content); // removes <script>, <embed> &c with content $content = preg_replace('/(<\\/[^>]+?>)(<[^>\\/][^>]*?>)/', '$1 $2', $content); // add spaces between tags to avoid getting words stuck together $content = strip_tags($content, get_option('relevanssi_excerpt_allowable_tags', '')); // this removes the tags, but leaves the content $content = preg_replace("/\n\r|\r\n|\n|\r/", " ", $content); // $content = trim(preg_replace("/\s\s+/", " ", $content)); $excerpt_data = relevanssi_create_excerpt($content, $terms, $query); if (get_option("relevanssi_index_comments") != 'none') { $comment_content = relevanssi_get_comments($post->ID); $comment_excerpts = relevanssi_create_excerpt($comment_content, $terms, $query); if ($comment_excerpts[1] > $excerpt_data[1]) { $excerpt_data = $comment_excerpts; } } if (get_option("relevanssi_index_excerpt") != 'none') { $excerpt_content = $post->post_excerpt; $excerpt_excerpts = relevanssi_create_excerpt($excerpt_content, $terms, $query); if ($excerpt_excerpts[1] > $excerpt_data[1]) { $excerpt_data = $excerpt_excerpts; } } $start = $excerpt_data[2]; $excerpt = $excerpt_data[0]; $excerpt = trim($excerpt); $excerpt = apply_filters('relevanssi_excerpt', $excerpt); $ellipsis = apply_filters('relevanssi_ellipsis', '...'); $highlight = get_option('relevanssi_highlight'); if ("none" != $highlight) { if (!is_admin()) { $excerpt = relevanssi_highlight_terms($excerpt, $query); } } if (!$start && !empty($excerpt)) { $excerpt = $ellipsis . $excerpt; // do not add three dots to the beginning of the post } if (!empty($excerpt)) { $excerpt = $excerpt . $ellipsis; } if (relevanssi_s2member_level($post->ID) == 1) { $excerpt = $post->post_excerpt; } if ($old_global_post != NULL) { $post = $old_global_post; } return $excerpt; }
function relevanssi_do_excerpt($post, $query) { $remove_stopwords = false; $terms = relevanssi_tokenize($query, $remove_stopwords); $content = apply_filters('the_content', $post->post_content); if ('on' == get_option('relevanssi_expand_shortcodes')) { if (function_exists("do_shortcode")) { $content = do_shortcode($content); } } else { if (function_exists("strip_shortcodes")) { $content = strip_shortcodes($content); } } $content = apply_filters('relevanssi_excerpt_content', $content, $post, $query); $content = relevanssi_strip_invisibles($content); // removes <script>, <embed> &c with content $content = strip_tags($content); // this removes the tags, but leaves the content $content = preg_replace("/\n\r|\r\n|\n|\r/", " ", $content); $excerpt_data = relevanssi_create_excerpt($content, $terms); if (get_option("relevanssi_index_comments") != 'none') { $comment_content = relevanssi_get_comments($post->ID); $comment_excerpts = relevanssi_create_excerpt($comment_content, $terms); if ($comment_excerpts[1] > $excerpt_data[1]) { $excerpt_data = $comment_excerpts; } } if (get_option("relevanssi_index_excerpt") != 'none') { $excerpt_content = $post->post_excerpt; $excerpt_excerpts = relevanssi_create_excerpt($excerpt_content, $terms); if ($excerpt_excerpts[1] > $excerpt_data[1]) { $excerpt_data = $excerpt_excerpts; } } $excerpt = $excerpt_data[0]; $start = $excerpt_data[2]; $content = apply_filters('get_the_excerpt', $content); $content = apply_filters('the_excerpt', $content); $highlight = get_option('relevanssi_highlight'); if ("none" != $highlight) { if (!is_admin()) { $excerpt = relevanssi_highlight_terms($excerpt, $query); } } if (!$start) { $excerpt = "..." . $excerpt; // do not add three dots to the beginning of the post } $excerpt = $excerpt . "..."; if (relevanssi_s2member_level($post->ID) == 1) { $excerpt = $post->post_excerpt; } return $excerpt; }