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;
}
Exemplo n.º 4
0
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;
}