示例#1
0
 if ($order_by == "published_on") {
     $safe_order_by = "published_on";
 }
 if ($order_by == "added_on") {
     $safe_order_by = "added_on";
 }
 if ($order_by == "post_freq") {
     $safe_order_by = "post_freq";
 }
 # posts containing a specific term (or terms)?
 if ($term) {
     $pterms = explode(",", $term);
     $tposts = array();
     if (sizeof($pterms)) {
         foreach ($pterms as $pterm) {
             $tposts = array_merge($tposts, get_posts_with_term($pterm));
         }
     }
     if (sizeof($tposts) >= 1) {
         $filters['post_id'] = $tposts;
     } else {
         $filters['post_id'] = array();
         $output_available = 0;
     }
 }
 # category
 if ($category) {
     $filters['category'] = $category;
 }
 # timeframe
 $safe_timeframe = $timeframe;
function get_posts($sort_by = "published_on", $filters = array())
{
    $query = "SELECT SQL_CALC_FOUND_ROWS * FROM posts_summary ";
    $where_clause = " WHERE !ISNULL(post_id)";
    #$where_clause .= " AND p2.post_id = links.post_id AND p2.blog_id != posts.blog_id";
    $order_by = " ORDER BY pubdate DESC";
    $limit_by = "";
    if ($sort_by == "published_on") {
        $order_by = " ORDER BY pubdate DESC";
    }
    if ($sort_by == "added_on") {
        $order_by = " ORDER BY added_on DESC";
    }
    if ($sort_by == "cited") {
        $order_by = " ORDER BY linked_by DESC, pubdate DESC";
    }
    if ($sort_by == "post_freq") {
        if ($filters['post_id']) {
            # we want an order in which elements that appear most frequently in $filters['post_id'] have the highest rankings
            $post_freq = array_count_values($filters['post_id']);
            arsort($post_freq);
            $order_by = " ORDER BY FIELD(post_id";
            foreach ($post_freq as $post_id => $post_freq) {
                $order_by .= ", {$post_id}";
            }
            $order_by .= ")";
        }
    }
    $sort_by .= ", title ASC";
    if (!$filters['limit']) {
        $filters['limit'] = $GLOBALS["config"]['posts_per_page'];
    }
    if ($filters['limit']) {
        $limit_by = " LIMIT " . $filters['limit'];
    }
    if ($filters['skip']) {
        if ($filters['skip'] < 0) {
            $filters['skip'] = 0;
        }
        $limit_by = " LIMIT " . $filters['skip'] . "," . $filters['limit'];
    }
    if ($filters['base_url']) {
        $where_clause .= " AND url LIKE '" . $filters['base_url'] . "%'";
    }
    if ($filters['term']) {
        $tposts = get_posts_with_term($filters['term']);
        $tposts = "'" . implode("','", $tposts) . "'";
        $where_clause .= " AND post_id IN ({$tposts})";
    }
    if ($filters['category']) {
        $blogs = get_blogs_with_tag($filters['category']);
        $blogs = "'" . implode("','", $blogs) . "'";
        $where_clause .= " AND blog_id IN ({$blogs})";
    }
    if ($filters['tag']) {
        $tag = $filters['tag'];
        $tposts = array();
        if ($tag == "original_research") {
            $tposts = get_posts_with_research();
        } elseif ($tag == "conference") {
            $tposts = get_posts_with_conference();
        } elseif ($tag == "review") {
            $tposts = get_posts_with_review();
        } else {
            $tposts = get_posts_with_tag($filters['tag']);
        }
        $tposts = "'" . implode("','", $tposts) . "'";
        $where_clause .= " AND post_id IN ({$tposts})";
    }
    if ($filters['review']) {
        $tposts = get_posts_with_review();
        $tposts = "'" . implode("','", $tposts) . "'";
        $where_clause .= " AND post_id IN ({$tposts})";
    }
    if ($filters['conference']) {
        $tposts = get_posts_with_conference();
        $tposts = "'" . implode("','", $tposts) . "'";
        $where_clause .= " AND post_id IN ({$tposts})";
    }
    if ($filters['original_research']) {
        $tposts = get_posts_with_research();
        $tposts = "'" . implode("','", $tposts) . "'";
        $where_clause .= " AND post_id IN ({$tposts})";
    }
    if ($filters['published_before']) {
        $date = $filters['published_before'];
        $where_clause .= " AND pubdate < '{$date}'";
    }
    if ($filters['published_after']) {
        $date = $filters['published_after'];
        $where_clause .= " AND pubdate >= '{$date}'";
    }
    if ($filters['blog_id']) {
        $where_clause .= " AND blog_id = " . $filters['blog_id'];
    }
    if (isset($filters['post_id'])) {
        if ($filters['post_id']) {
            if (!is_array($filters['post_id'])) {
                $where_clause .= " AND post_id = " . $filters['post_id'];
            } else {
                if (is_array($filters['post_id'])) {
                    $where_clause .= " AND post_id IN (" . implode(",", $filters['post_id']) . ")";
                }
            }
        } else {
            return array();
        }
    }
    if ($filters['min_links']) {
        $where_clause .= " AND linked_by >= " . $filters['min_links'];
    }
    $posts = array();
    $having = "";
    $query = $query . $where_clause . $group_by . $having . $order_by . $limit_by;
    $results = mysql_query($query);
    $rows = mysql_num_rows($results);
    if ($limit_by) {
        $count_query = "SELECT FOUND_ROWS() AS rows";
        $count_results = mysql_query($count_query);
        while ($row = mysql_fetch_assoc($count_results)) {
            $rows = $row['rows'];
        }
    }
    while ($row = mysql_fetch_assoc($results)) {
        $post = $row;
        $post['rows_returned'] = $rows;
        $post['post_request_type'] = "all";
        if ($filters['conference']) {
            $post['post_request_type'] = "conference";
        }
        if ($filters['review']) {
            $post['post_request_type'] = "review";
        }
        if ($filters['originaL_research']) {
            $post['post_request_type'] = "original_research";
        }
        array_push($posts, $post);
    }
    if ($filters['order_by_filenames_array']) {
        $filenames = $filters['order_by_filenames_array'];
        $ordered_posts = array();
        # we need to do some post-ordering
        foreach ($filenames as $filename) {
            # find row with this filename, add it to the array.
            foreach ($posts as $post) {
                if ($post['filename'] == $filename) {
                    array_push($ordered_posts, $post);
                }
            }
        }
        $posts = $ordered_posts;
    }
    return $posts;
}
示例#3
0
            }
        }
    }
}
if ($bloglines_terms) {
    $valid_terms = validate_terms(array_keys($bloglines_terms));
    if (!$valid_terms) {
        print "<h3>Sorry</h3>";
        print "<p>None of the terms in " . $_SAFE['bloglines_username'] . "'s subscriptions are in the Postgenomic index.";
        print_r($bloglines_terms);
    } else {
        print "<h3>Matched Bloglines terms</h3>";
        print_termcloud($valid_terms);
        # try and match up tags with blogs in the database
        foreach ($valid_terms as $term => $freq) {
            $post_ids = get_posts_with_term($term);
            # what blogs are these posts from?
            if ($post_ids) {
                $done = array();
                $posts = get_posts("cited", array("post_id" => $post_ids));
                if ($posts) {
                    foreach ($posts as $post) {
                        if ($done[$post['blog_id']]) {
                            next;
                        } else {
                            if ($_SAFE['use_weighting_bloglines']) {
                                $blog_ids[$post['blog_id']] += $freq;
                            } else {
                                $blog_ids[$post['blog_id']]++;
                            }
                            $blog_names[$post['blog_id']] = $post['blog_name'];