<?php
/***************************************************************************
* adv_top5.php
* -------------------
* Contains GPL code copyright of phpBB group.
*
* MOD Name: Top5 topics
* Author: OOHOO
* Version: 1.x.x for phpBB 2 Beta serial
* Version: 2.0.0 for phpBB 2 RC serial
* Version: 2.1.0 for phpBB 2.0.0
*
* Author: iamelton
* Version: 2.2.0 for hypercell effect in display
*
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. --- $phpbb_root_path = "./";
*
***************************************************************************/
define('IN_PHPBB', true);
$phpbb_root_path = "../phpBB2/";
$cpath = "../phpBB2"; // Pfadkorrektur (kein / am Ende!)
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//
// Mod setting
//
// Topics text length
$MAX_STR_LEN = 30;
// Topics to display
$MAX_TOPICS = 10;
// 0 => users can see all topics including authorized issue(but they cant read the posts)
// 1 => users can see only authorized topics
$AUTH_SECRUITY = 1;
function cutStr($str) {
global $MAX_STR_LEN;
$str = (strlen($str) > $MAX_STR_LEN) ? (substr($str, 0, $MAX_STR_LEN - 1) . "...") : $str;
return $str;
}
//
// gzip_compression
//
$do_gzip_compress = FALSE;
if($board_config['gzip_compress'])
{
$phpver = phpversion();
if($phpver >= "4.0.4pl1")
{
if(extension_loaded("zlib"))
{
ob_start("ob_gzhandler");
}
}
else if($phpver > "4.0")
{
if(strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip'))
{
if(extension_loaded("zlib"))
{
$do_gzip_compress = TRUE;
ob_start();
ob_implicit_flush(0);
header("Content-Encoding: gzip");
}
}
}
}
header ("Cache-Control: no-store, no-cache, must-revalidate");
header ("Cache-Control: pre-check=0, post-check=0, max-age=0", false);
header ("Pragma: no-cache");
header ("Expires: " . gmdate("D, d M Y H:i:s", time()) . " GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX, $session_length);
init_userprefs($userdata);
//
// End session management
//
// Find which forums are visible for this user
$is_auth_ary = array();
$is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata);
$auth_forum_ary = array();
// Get forum info
$sql = "SELECT forum_id FROM " . FORUMS_TABLE;
if( !$q_forums = $db->sql_query($sql) )
{
message_die(GENERAL_MESSAGE, 'ADV_TOP5 MOD ERROR!!');
}
// Authorized forums info
while( $forum_row = $db->sql_fetchrow($q_forums) )
{
$forum_id = $forum_row['forum_id'];
if( $is_auth_ary[$forum_id]['auth_read'] == 1)
{
array_push($auth_forum_ary, $forum_id);
}
}
if( sizeOf($auth_forum_ary) == 0
!$AUTH_SECRUITY )
{
$auth_forums = "";
}
else
{
$auth_forums = 'AND f.forum_id IN(';
if(sizeOf($auth_forum_ary) > 1)
{
$auth_forums .= implode (',', $auth_forum_ary);
}
else
{
$auth_forums .= $auth_forum_ary[0];
}
$auth_forums .= ')';
}
// select mode
switch($mode)
{
case 'last':
$sortby = "topic_last_post_id";
break;
case 'hot':
$sortby = "topic_views";
break;
case 'top':
$sortby = "topic_replies";
break;
default:
$sortby = "topic_last_post_id";
$mode = "last";
break;
}
// nav links
$last_link = ( ($mode == "Beitraege") ? "<font style=\"{color: #ff006e}\">« letzte Beiträge $MAX_TOPICS »</font>" : ('[url='' . append_sid(']letzte Beiträge[/url]'));
$hot_links = ( ($mode == "Aufrufe") ? "<font style=\"{color: #ff006e}\">« meiste Aufrufe $MAX_TOPICS »</font>" : ('[url='' . append_sid(']meiste Aufrufe[/url]'));
$top_links = ( ($mode == "Antworten") ? "<font style=\"{color: #ff006e}\">« meiste Antworten $MAX_TOPICS »</font>" : ('[url='' . append_sid(']meiste Antworten[/url]'));
// set template
$template->set_filenames(array("body" => "adv_top5_body.tpl"));
$template->assign_vars(array(
"icon_url" => $images['icon_latest_reply'],
"icon_alt" => $lang['View_latest_post'],
"nav_links" => "$last_link $hot_links $top_links"
));
// query
$sql = "SELECT topic_id, topic_title, topic_poster, topic_views, topic_replies, topic_last_post_id, f.forum_id, forum_name
FROM " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f
WHERE t.forum_id = f.forum_id
AND topic_moved_id = '0'
$auth_forums
ORDER BY $sortby DESC LIMIT 0, $MAX_TOPICS";
if( !$result = $db->sql_query($sql) )
{
echo '<p align="center"><font color="red">ADV_TOPN_MOD TOPICS QUERY ERROR!!</font></p>';
exit;
}
// fetch rows
while( $rows = $db->sql_fetchrow($result) )
{
$topic_url = append_sid("$cpath/viewtopic.$phpEx?t=" . $rows['topic_id']);
$forum_url = append_sid("$cpath/viewforum.$phpEx?f=" . $rows['forum_id']);
$topic_poster = $rows['topic_poster'];
$topic_last_post_id = $rows['topic_last_post_id'];
// Grab topic poster and last replier data
$sql = "SELECT post_username, user_id, username
FROM " . POSTS_TABLE . ", " . USERS_TABLE . "
WHERE topic_id = '" . $rows['topic_id'] . "'
AND poster_id = user_id
ORDER BY post_id LIMIT 0, 1";
if( !$p_result = $db->sql_query($sql) )
{
message_die(GENERAL_MESSAGE, 'ADV_TOP5 MOD TOPIC_POSTER QUERY ERROR!!');
}
$p_row = $db->sql_fetchrow($p_result);
$poster_name = ( $topic_poster != ANONYMOUS ) ? $p_row['username'] : ( !$p_row['post_username'] ? $lang['Guest'] : $p_row['post_username']);
$poster_url = ( $topic_poster != ANONYMOUS && !$p_row['post_username'] ) ? ('[url='' . append_sid(']' . "$poster_name[/url]") : $poster_name;
$sql = "SELECT post_username, user_id, username, post_time
FROM " . POSTS_TABLE . ", " . USERS_TABLE . "
WHERE post_id = '$topic_last_post_id'
AND poster_id = user_id";
if( !$r_result = $db->sql_query($sql) )
{
message_die(GENERAL_MESSAGE, 'ADV_TOP5 MOD LAST_REPLIER QUERY ERROR!!');
}
$r_row = $db->sql_fetchrow($r_result);
$replier_id = $r_row['user_id'];
$replier_name = ( $replier_id != ANONYMOUS ) ? $r_row['username'] : ( !$r_row['post_username'] ? $lang['Guest'] : $r_row['post_username']);
$replier_url = ( $replier_id != ANONYMOUS && !$r_row['post_username'] ) ? ('[url='' . append_sid(']' . "$replier_name[/url]") : $replier_name;
$last_post_url = append_sid("$cpath/viewtopic.$phpEx?p=$topic_last_post_id#$topic_last_post_id");
$template->assign_block_vars("toprow", array(
"forum_name" => $rows['forum_name'],
"forum_url" => $forum_url,
"topic" => cutStr($rows['topic_title']),
"topic_url" => $topic_url,
"topic_views" => $rows['topic_views'],
"topic_replies" => $rows['topic_replies'],
"post_time" => create_date($board_config['default_dateformat'], $r_row['post_time'], $board_config['board_timezone']),
"poster_url" => $poster_url,
"replier_url" => $replier_url,
"last_post_url" => $last_post_url
));
}
$template->assign_vars(array(
'S_CONTENT_DIRECTION' => $lang['DIRECTION'],
'S_CONTENT_ENCODING' => $lang['ENCODING'],
'T_HEAD_STYLESHEET' => $theme['head_stylesheet'],
'T_BODY_BGCOLOR' => '#'.$theme['body_bgcolor'],
'T_BODY_TEXT' => '#'.$theme['body_text'],
'T_BODY_LINK' => '#'.$theme['body_link'],
'T_BODY_VLINK' => '#'.$theme['body_vlink'],
'T_TR_COLOR1' => '#'.$theme['tr_color1'],
'T_TR_COLOR2' => '#'.$theme['tr_color2'],
'T_TD_COLOR1' => '#'.$theme['td_color1'],
'T_TD_COLOR2' => '#'.$theme['td_color2'],
'L_FORUM' => $lang['Forum'],
'L_TOPICS' => $lang['Topics'],
'L_REPLIES' => $lang['Replies'],
'L_AUTHOR' => $lang['Author'],
'L_VIEWS' => $lang['Views'],
'L_POSTS' => $lang['Posts'],
'L_LASTPOST' => $lang['Last_Post']
));
//
// Generate the page
//
//$gen_simple_header = TRUE;
//include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$template->pparse("body");
$db->sql_close();
//
// Compress buffered output if required
// and send to browser
//
if($do_gzip_compress)
{
//
// Borrowed from php.net!
//
$gzip_contents = ob_get_contents();
ob_end_clean();
$gzip_size = strlen($gzip_contents);
$gzip_crc = crc32($gzip_contents);
$gzip_contents = gzcompress($gzip_contents, 9);
$gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4);
echo "\x1f\x8b\x08\x00\x00\x00\x00\x00";
echo $gzip_contents;
echo pack("V", $gzip_crc);
echo pack("V", $gzip_size);
}
exit;
?>