Source for file rankings.php
Documentation is available at rankings.php
// Copyright (c) 2002-2003, Luis Argerich, Garland Foster, Eduardo Polidor, et. al.
// All Rights Reserved. See below for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See http://www.gnu.org/copyleft/lesser.html for details.
require_once( '../kernel/setup_inc.php' );
include_once( LIBERTY_PKG_PATH . 'LibertyContent.php' );
require_once( BLOGS_PKG_PATH . 'BitBlog.php' );
require_once( BLOGS_PKG_PATH . 'BitBlogPost.php' );
$gBitSystem->verifyPackage( 'blogs' );
$gBitSystem->verifyFeature( 'blog_rankings' );
'output' => tra( 'Most Often Viewed' ),
'output' => tra( 'Most Recently Modified' ),
'value' => 'last_modified_desc'
'output' => tra( 'Most Active Authors' ),
$gBitSmarty->assign( 'rankingOptions', $rankingOptions );
if( !empty( $_REQUEST['sort_mode'] ) ) {
switch( $_REQUEST['sort_mode'] ) {
case 'last_modified_desc':
$gBitSmarty->assign( 'attribute', 'last_modified' );
$_REQUEST['attribute'] = tra( 'Date of last modification' );
$gBitSmarty->assign( 'attribute', 'ag_hits' );
$_REQUEST['attribute'] = tra( 'Hits to items by this Author' );
$gBitSmarty->assign( 'attribute', 'hits' );
$_REQUEST['attribute'] = tra( 'Hits' );
$gBitSmarty->assign( 'attribute', 'hits' );
$_REQUEST['attribute'] = tra( 'Hits' );
$_REQUEST['title'] = tra( 'Blog Post Rankings' );
$_REQUEST['max_records'] = !empty( $_REQUEST['max_records'] ) ? $_REQUEST['max_records'] : 10;
if( empty( $gContent ) ) {
$gBitSmarty->assign( 'rankList', $rankList );
$gBitSystem->display( 'bitpackage:liberty/rankings.tpl', tra( "Blog Post Rankings" ) , array( 'display_mode' => 'display' ));
/* ---- below is what blog rankings was - might want to canabalize some of it eventually ---- */
require_once( '../kernel/setup_inc.php' );
$gBitSystem->verifyPackage( 'blogs' );
$gBitSystem->verifyFeature( 'blog_rankings' );
$gBitSystem->verifyPermission( 'p_blogs_view' );
require_once( BLOGS_PKG_PATH . 'BitBlog.php' );
require_once( BLOGS_PKG_PATH . 'BitBlogPost.php' );
'name' => tra('Most visited blogs'),
'value' => 'blog_ranking_top_blogs'
'name' => tra('Last posts'),
'value' => 'blog_ranking_last_posts'
* @todo reenable once we have activity implemented
'name' => tra('Most active blogs'),
'value' => 'blog_ranking_top_active_blogs'
$gBitSmarty->assign('allrankings', $allrankings);
if (!isset($_REQUEST["which"])) {
$which = 'blog_ranking_top_blogs';
$which = $_REQUEST["which"];
$gBitSmarty->assign('which', $which);
// Get the page from the request var or default it to HomePage
if (!isset($_REQUEST["limit"])) {
$limit = $_REQUEST["limit"];
$gBitSmarty->assign_by_ref('limit', $limit);
// Top Authors -- Would be nice.
$rankings = $which($limit);
$gBitSmarty->assign_by_ref('rankings', $rankings);
$gBitSmarty->assign('rpage', 'rankings.php');
$gBitSystem->display( 'bitpackage:blogs/ranking.tpl', tra($rankings['title']), array( 'display_mode' => 'display' ));
// =============================== some ranking functions - as soon as blogs are part of LibertyContent, we can use LibertyContent::getContentRanking()
function blog_ranking_top_blogs($limit) {
$list_hash['sort_mode'] = 'lch.hits_desc';
$list_hash['max_records'] = $limit;
$list = $b->getList($list_hash);
$query = "select p.*, lc.* FROM `".BIT_DB_PREFIX."blog_posts` p LEFT JOIN `".BIT_DB_PREFIX."liberty_content` lc ON (p.`content_id` = lc.`content_id`) WHERE p.blog_id = ? ORDER BY p.post_id desc";
foreach($list['data'] as $key => $blog) {
$result = $gBitSystem->mDb->query($query, array($blog['blog_id']), $gBitSystem->getConfig('blogs_top_post_count', 3));
while ($ret = $result->fetchRow()) {
$ret['display_url'] = BitBlogPost::getDisplayUrlFromHash($ret['content_id']);
$list['data'][$key]['post_array'][] = $ret;
$list['title'] = tra("Most Visited Blogs");
/** TODO: This should be changed when we start using activity in the blog.
We should check TW 1.9 for code for that field in the blog. */
function blog_ranking_top_active_blogs($limit) {
$list_hash['sort_mode'] = 'b.activity';
$list_hash['max_records'] = $limit;
$list = $b->getList($list_hash);
$query = "select p.*, lc.* FROM `".BIT_DB_PREFIX."blog_posts` p LEFT JOIN `".BIT_DB_PREFIX."liberty_content` lc ON (p.`content_id` = lc.`content_id`) WHERE p.blog_id = ? ORDER BY p.post_id desc";
foreach($list['data'] as $key => $blog) {
$result = $gBitSystem->mDb->query($query, array($blog['blog_id']), $gBitSystem->getConfig('blogs_top_post_count', 3));
while ($ret = $result->fetchRow()) {
$ret['display_url'] = BitBlogPost::getDisplayUrlFromHash($ret['content_id']);
$list['data'][$key]['post_array'][] = $ret;
$list['title'] = tra("Most Visited Blogs");
function blog_ranking_last_posts($limit) {
$list_hash['max_records'] = $limit;
$list_hash['sort_mode'] = 'created_desc';
$list_hash['max_records'] = $limit;
$posts = $bp->getList($list_hash);
// Extract blog_ids to load the blogs.
foreach( $posts['data'] as $key => $post) {
$blog_ids[$post['blog_id']] = $post['blog_id'];
$blog_hash['sort_mode'] = 'lch.hits_desc';
$blog_hash['find'] = $blog_ids;
$blogs = $b->getList($blog_hash);
// Reorganize blogs by id
foreach($blogs['data'] as $key => $blog) {
$list['data'][$blog['blog_id']] = $blog;
foreach($posts['data'] as $key => $post) {
$post['post_url'] = $bp->getDisplayUrl($post['content_id']);
$list['data'][$post['blog_id']]['post_array'][] = $post;
$list['title'] = 'Last Posts';
|