You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1143 lines
38 KiB

<?php
/***************************************************************************
* weblogs.php
* ------------------
* begin : Saturday, Feb 13, 2001
* copyright : (C) 2001 The phpBB Group
* email : support@phpbb.com
*
* $Id: weblogs.php,v 1.9 2005/01/04 15:04:13 saraj Exp $
*
*
***************************************************************************/
/***************************************************************************
*
* 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.
*
***************************************************************************/
define('IN_PHPBB', true);
//$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . 'includes/weblogs_common.'.$phpEx);
# Added by Godwin -->
include_once ($phpbb_root_path . 'mods/phpbb_fetch_all/common.' . $phpEx);
include_once ($phpbb_root_path . 'mods/phpbb_fetch_all/stats.' . $phpEx);
include_once ($phpbb_root_path . 'mods/phpbb_fetch_all/users.' . $phpEx);
include_once ($phpbb_root_path . 'mods/phpbb_fetch_all/polls.' . $phpEx);
include_once ($phpbb_root_path . 'mods/phpbb_fetch_all/posts.' . $phpEx);
include_once ($phpbb_root_path . 'mods/phpbb_fetch_all/forums.' . $phpEx);
# Godwin <--
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_WEBLOGS);
init_userprefs($userdata);
//
// End session management
//
//Asign date
$TODAY_DATE = date ("Y-m-d H:i:s");
//
// Sorting stuff
//
$count = ( isset($HTTP_GET_VARS['count']) ) ? intval($HTTP_GET_VARS['count']) : 15;
$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
$sort = ( isset($HTTP_GET_VARS['sort']) ) ? intval($HTTP_GET_VARS['sort']) : 0;
if ( !empty($HTTP_POST_VARS['numweblogs']) || !empty($HTTP_GET_VARS['numweblogs']) )
{
$count = ( !empty($HTTP_POST_VARS['numweblogs']) ) ? $HTTP_POST_VARS['numweblogs'] : $HTTP_GET_VARS['numweblogs'];
}
else
{
$count = $weblog_config['weblogs_per_page'];
}
if ( !empty($HTTP_POST_VARS['sortmethod']) || !empty($HTTP_GET_VARS['sortmethod']) )
{
$sort = ( !empty($HTTP_POST_VARS['sort']) ) ? $HTTP_POST_VARS['sort'] : $HTTP_GET_VARS['sort'];
}
else
{
$sort = $weblog_config['weblog_sort'];
}
if ( !empty($HTTP_POST_VARS['sortorder']) || !empty($HTTP_GET_VARS['sortorder']) )
{
$order = ( !empty($HTTP_POST_VARS['sortorder']) ) ? $HTTP_POST_VARS['sortorder'] : $HTTP_GET_VARS['sortorder'];
}
else
{
$order = $weblog_config['weblog_order'];
}
//
// Start page proper
//
$sql = "SELECT c.cat_id, c.cat_title, c.cat_order
FROM " . CATEGORIES_TABLE . " c
WHERE c.cat_allow_weblogs = 1
ORDER BY c.cat_order";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query categories list', '', __LINE__, __FILE__, $sql);
}
while( $category_rows[] = $db->sql_fetchrow($result) );
if( ( $total_categories = count($category_rows) ) )
{
//
// Statistics
//
if ( $weblog_config['display_stats'] == 1 )
{
$template->assign_block_vars('stats', array());
/* $sql = "SELECT f.*, p.post_time, p.post_username, u.*
FROM (( " . CATEGORIES_TABLE . " c
INNER JOIN " . FORUMS_TABLE . " f ON f.cat_id = c.cat_id
INNER JOIN " . USERS_TABLE . " u2 ON u2.user_weblog = f.forum_id
LEFT JOIN " . POSTS_TABLE . " p ON p.post_id = f.forum_last_post_id )
LEFT JOIN " . USERS_TABLE . " u ON u.user_id = p.poster_id )
WHERE c.cat_allow_weblogs = 1
AND u.weblog_visible <> 0
ORDER BY f.cat_id, f.forum_id
LIMIT 10";
*/
# Query modified - To hide hidden post in all places except users myblog page - "and t.topic_auth <> 3 added" - Godwin -->
$sql = "SELECT f.*, u.*, p.post_time , t.topic_title , t.topic_views , t.topic_id , t.topic_time from " . FORUMS_TABLE ." f, ". USERS_TABLE ." u , ". POSTS_TABLE ." p , ". TOPICS_TABLE ." t where f.forum_id=u.user_weblog and p.post_id = f.forum_last_post_id and t.topic_id = p.topic_id and u.weblog_visible <> 0 ORDER BY topic_time";
# Godwin <--
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query forums information', '', __LINE__, __FILE__, $sql);
}
while( $row = $db->sql_fetchrow($result) )
{
$weblog_data_stat[] = $row;
}
$total_forums_stat = count($weblog_data_stat);
if ( count($weblog_data_stat) == 0 )
{
message_die(GENERAL_MESSAGE, $lang['No_weblogs']);
}
for ($i = 0; $i < $total_forums_stat; $i++)
{
$weblog_id = $weblog_data_stat[$i]['forum_id'];
//for Popular Articles
# Query modified - To hide hidden post in all places except users myblog page - "and t.topic_auth <> 3 added" - Godwin -->
$top_sql="select topic_id from " . TOPICS_TABLE . " where forum_id = $weblog_id and topic_time > UNIX_TIMESTAMP(DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)) ORDER BY topic_views DESC limit 1";
# Godwin <--
if ( !($result = $db->sql_query($top_sql)) )
{
message_die(GENERAL_ERROR, 'Could not query forum topic information', '', __LINE__, __FILE__, $top_sql);
}
while( $row = $db->sql_fetchrow($result) )
{
$weblog_late_topics_stat[] = $row;
}
//Popular Article ends
}
$total_topics = count($weblog_late_topics_stat);
//get the Popular Article
for ($j=0; $j < $total_topics; $j++)
{
$top_id = $weblog_late_topics_stat[$j]['topic_id'];
echo $topic_id;
# Query modified - To hide hidden post in all places except users myblog page - "and t.topic_auth <> 3 added" - Godwin -->
$topic_sql="select t.forum_id, t.topic_id, t.topic_views, t.topic_title, u.username from " . TOPICS_TABLE . " t, " . USERS_TABLE . " u where t.topic_id = $top_id and t.topic_poster = u.user_id and t.topic_auth <> 3";
# Godwin <--
if ( !($result = $db->sql_query($topic_sql)) )
{
message_die(GENERAL_ERROR, 'Could not query forum topic information', '', __LINE__, __FILE__, $sql_qry);
}
while( $row = $db->sql_fetchrow($result) )
{
$weblog_latest_topics_stat[$j] = $row;
}
}
//
# Query modified - To hide hidden post in all places except users myblog page - "and t.topic_auth <> 3
# and u.weblog_visible <> 0 added" - Godwin -->
$sql_lst_qry= "select t.topic_id, t.topic_title, t.topic_time, u.username from " . TOPICS_TABLE . " t, " . USERS_TABLE . " u where t.topic_poster=u.user_id and t.forum_id = u.user_weblog and t.topic_auth <> 3 and u.weblog_visible <> 0 order by topic_time desc limit 15";
# Godwin <--
if ( !($result = $db->sql_query($sql_lst_qry)) )
{
message_die(GENERAL_ERROR, 'Could not query forum latest topic information', '', __LINE__, __FILE__, $sql_lst_qry);
}
while( $row = $db->sql_fetchrow($result) )
{
$weblog_newest_topics_stat[] = $row;
}
$total_newest_topics = count($weblog_newest_topics_stat);
//
// Find which forums are visible for this user
//
$is_auth_ary = array();
$is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata, $weblog_data_stat);
$weblog_owner_data_stat = array();
$topic_data_stat = array();
for ($i = 0; $i < $total_forums_stat; $i++)
{
$weblog_id = $weblog_data_stat[$i]['forum_id'];
// Get Weblog Owner Data
$sql = "SELECT u.user_id, u.username, u.weblog_start_date
FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g, " . USERS_TABLE . " u
WHERE aa.forum_id = $weblog_id
AND aa.auth_mod = " . TRUE . "
AND g.group_single_user = 1
AND ug.group_id = aa.group_id
AND g.group_id = aa.group_id
AND u.user_id = ug.user_id
GROUP BY u.user_id, u.username
ORDER BY u.user_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query forum moderator information', '', __LINE__, __FILE__, $sql);
}
while( $row = $db->sql_fetchrow($result) )
{
$weblog_owner_data_stat[$i] = $row;
}
$sql = "SELECT f.forum_id, t.topic_time, t.topic_id
FROM " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f
WHERE t.forum_id = $weblog_id
AND f.forum_id = t.forum_id
ORDER BY f.forum_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query forums information', '', __LINE__, __FILE__, $sql);
}
while( $row = $db->sql_fetchrow($result) )
{
$topic_data_stat[$i] = $row;
}
}
$stat_mostpopular = array();
$stat_entries = array();
$stat_lastupdated = array();
$stat_newest = array();
$stat_mostpopular_name = array();
$stat_entries_name = array();
$stat_lastupdated_name = array();
$stat_newest_name = array();
$stat_mostpopular_owner = array();
$stat_mostpopular_views = array();
$stat_entries_owner = array();
$stat_lastupdated_owner = array();
$stat_newest_owner = array();
// Weblog IDs for linking
$stat_mostpopular_id = array();
$stat_entries_id = array();
$stat_lastupdated_id = array();
$stat_newest_id = array();
//Added to display Newest topics
for ($i = 0; $i < $total_newest_topics; $i++)
{
$topic_id = $weblog_newest_topics_stat[$i]['topic_id'];
$stat_lastupdated[$i] = $weblog_newest_topics_stat[$i]['topic_time'];
$stat_lastupdated_name[$i] = $weblog_newest_topics_stat[$i]['topic_title'];
$stat_lastupdated_owner[$i] = $weblog_newest_topics_stat[$i]['username'];
$stat_lastupdated_id[$i] = $weblog_newest_topics_stat[$i]['topic_id'];
}
// Bleh Bubble Sort (Order of n squared!). Too tired to think :-P
/* Bubble sort commented as it is already captured in the query - Rajkumar
for ($i = 0; $i < $total_newest_topics; $i++)
{
for ( $j = 0; $j < $total_newest_topics; $j++ )
{
// Most Popular
if ($stat_lastupdated[$i] > $stat_lastupdated[$j])
{
$temp = $stat_lastupdated[$j];
$stat_lastupdated[$j] = $stat_lastupdated[$i];
$stat_lastupdated[$i] = $temp;
$temp = $stat_lastupdated_name[$j];
$stat_lastupdated_name[$j] = $stat_lastupdated_name[$i];
$stat_lastupdated_name[$i] = $temp;
$temp = $stat_lastupdated_views[$j];
$stat_lastupdated_views[$j] = $stat_lastupdated_views[$i];
$stat_lastupdated_views[$i] = $temp;
$temp = $stat_lastupdated_owner[$j];
$stat_lastupdated_owner[$j] = $stat_lastupdated_owner[$i];
$stat_lastupdated_owner[$i] = $temp;
$temp = $stat_lastupdated_id[$j];
$stat_lastupdated_id[$j] = $stat_lastupdated_id[$i];
$stat_lastupdated_id[$i] = $temp;
}
}
} */
//Added to display most popular topics
for ($i = 0; $i < $total_topics; $i++)
{
$forum_id = $weblog_latest_topics_stat[$i]['forum_id'];
$stat_mostpopular[$i] = $weblog_latest_topics_stat[$i]['topic_views'];
$stat_mostpopular_name[$i] = $weblog_latest_topics_stat[$i]['topic_title'];
$stat_mostpopular_owner[$i] = $weblog_latest_topics_stat[$i]['username'];
$stat_mostpopular_id[$i] = $weblog_latest_topics_stat[$i]['topic_id'];
$stat_mostpopular_views[$i] = $weblog_latest_topics_stat[$i]['topic_views'];
}
// Bleh Bubble Sort (Order of n squared!). Too tired to think :-P
for ($i = 0; $i < $total_topics; $i++)
{
for ( $j = 0; $j < $total_topics; $j++ )
{
// Most Popular
if ($stat_mostpopular[$i] > $stat_mostpopular[$j])
{
$temp = $stat_mostpopular[$j];
$stat_mostpopular[$j] = $stat_mostpopular[$i];
$stat_mostpopular[$i] = $temp;
$temp = $stat_mostpopular_name[$j];
$stat_mostpopular_name[$j] = $stat_mostpopular_name[$i];
$stat_mostpopular_name[$i] = $temp;
$temp = $stat_mostpopular_views[$j];
$stat_mostpopular_views[$j] = $stat_mostpopular_views[$i];
$stat_mostpopular_views[$i] = $temp;
$temp = $stat_mostpopular_owner[$j];
$stat_mostpopular_owner[$j] = $stat_mostpopular_owner[$i];
$stat_mostpopular_owner[$i] = $temp;
$temp = $stat_mostpopular_id[$j];
$stat_mostpopular_id[$j] = $stat_mostpopular_id[$i];
$stat_mostpopular_id[$i] = $temp;
}
}
}
for ($i = 0; $i < $total_forums_stat; $i++)
{
$weblog_id = $weblog_data_stat[$i]['forum_id'];
$stat_entries[$i] = $weblog_data_stat[$i]['forum_topics'];
$stat_entries_name[$i] = $weblog_data_stat[$i]['forum_name'];
$stat_entries_owner[$i] = $weblog_owner_data_stat[$i]['username'];
$stat_entries_id[$i] = $weblog_data_stat[$i]['forum_id'];
$stat_newest[$i] = $weblog_data_stat[$i]['forum_views'];
$stat_newest_name[$i] = $weblog_data_stat[$i]['forum_name'];
$stat_newest_owner[$i] = $weblog_owner_data_stat[$i]['username'];
$stat_newest_id[$i] = $weblog_data_stat[$i]['forum_id'];
}
//
// Insertion Sort
//
// Most number of Entries
$numSorted = 1;
$index = 0;
while ($numSorted < $total_forums_stat)
{
$temp1 = $stat_entries[$numSorted];
$temp2 = $stat_entries_name[$numSorted];
$temp3 = $stat_entries_owner[$numSorted];
$temp4 = $stat_entries_id[$numSorted];
for ( $index = $numSorted; $index > 0; $index-- )
{
if ($temp1 > $stat_entries[$index-1])
{
$stat_entries[$index] = $stat_entries[$index-1];
$stat_entries_name[$index] = $stat_entries_name[$index-1];
$stat_entries_owner[$index] = $stat_entries_owner[$index-1];
$stat_entries_id[$index] = $stat_entries_id[$index-1];
}
else
{
break;
}
}
$stat_entries[$index] = $temp1;
$stat_entries_name[$index] = $temp2;
$stat_entries_owner[$index] = $temp3;
$stat_entries_id[$index] = $temp4;
$numSorted++;
}
/* // Most Popular
$numSorted = 1;
$index = 0;
while ($numSorted < $total_forums_stat)
{
$temp1 = $stat_mostpopular[$numSorted];
$temp2 = $stat_mostpopular_name[$numSorted];
$temp3 = $stat_mostpopular_owner[$numSorted];
$temp4 = $stat_mostpopular_id[$numSorted];
for ( $index = $numSorted; $index > 0; $index-- )
{
if ($temp1 < $stat_mostpopular[$index-1])
{
$stat_mostpopular[$index] = $stat_mostpopular[$index-1];
$stat_mostpopular_name[$index] = $stat_mostpopular_name[$index-1];
$stat_mostpopular_owner[$index] = $stat_mostpopular_owner[$index-1];
$stat_mostpopular_id[$index] = $stat_mostpopular_id[$index-1];
}
else
{
break;
}
}
$stat_mostpopular[$index] = $temp1;
$stat_mostpopular_name[$index] = $temp2;
$stat_mostpopular_owner[$index] = $temp3;
$stat_mostpopular_id[$index] = $temp4;
$numSorted++;
}
*/
/* // Last Updated
$numSorted = 1;
$index = 0;
while ($numSorted < $total_forums_stat)
{
$temp1 = $stat_lastupdated[$numSorted];
$temp2 = $stat_lastupdated_name[$numSorted];
$temp3 = $stat_lastupdated_owner[$numSorted];
$temp4 = $stat_lastupdated_id[$numSorted];
for ( $index = $numSorted; $index > 0; $index-- )
{
if ($temp1 > $stat_lastupdated[$index-1])
{
$stat_lastupdated[$index] = $stat_lastupdated[$index-1];
$stat_lastupdated_name[$index] = $stat_lastupdated_name[$index-1];
$stat_lastupdated_owner[$index] = $stat_lastupdated_owner[$index-1];
$stat_lastupdated_id[$index] = $stat_lastupdated_id[$index-1];
}
else
{
break;
}
}
$stat_lastupdated[$index] = $temp1;
$stat_lastupdated_name[$index] = $temp2;
$stat_lastupdated_owner[$index] = $temp3;
$stat_lastupdated_id[$index] = $temp4;
$numSorted++;
}
*/
// Newest Weblog
$numSorted = 1;
$index = 0;
while ($numSorted < $total_forums_stat)
{
$temp1 = $stat_newest[$numSorted];
$temp2 = $stat_newest_name[$numSorted];
$temp3 = $stat_newest_owner[$numSorted];
$temp4 = $stat_newest_id[$numSorted];
for ( $index = $numSorted; $index > 0; $index-- )
{
if ($temp1 > $stat_newest[$index-1])
{
$stat_newest[$index] = $stat_newest[$index-1];
$stat_newest_name[$index] = $stat_newest_name[$index-1];
$stat_newest_owner[$index] = $stat_newest_owner[$index-1];
$stat_newest_id[$index] = $stat_newest_id[$index-1];
}
else
{
break;
}
}
$stat_newest[$index] = $temp1;
$stat_newest_name[$index] = $temp2;
$stat_newest_owner[$index] = $temp3;
$stat_newest_id[$index] = $temp4;
$numSorted++;
}
//
// Output all the statistics
//
for ($i = 0; $i < 15; $i++)
{
//$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];
$row_class = ( !($i % 2) ) ? altrow1 : altrow2;
if ( $stat_lastupdated[$i] )
{
$template->assign_block_vars('stats.lastupdatedrow', array(
'NAME' => '<a href="' . append_sid("weblog_entry.$phpEx?" . POST_ENTRY_URL . "=$stat_lastupdated_id[$i]") . '" class="nav">' . $stat_lastupdated_name[$i] . '</a>',
'OWNER' => $stat_lastupdated_owner[$i],
'DATE' => create_date($board_config['default_dateformat'], $stat_lastupdated[$i], $board_config['board_timezone']),
'CLASS' => $row_class)
);
}
else
{
$template->assign_block_vars('stats.lastupdatedrow', array(
'NAME' => '&nbsp;',
'OWNER' => '&nbsp;',
'DATE' => '&nbsp;',
'CLASS' => $row_class)
);
}
if ( $stat_newest[$i] )
{
$template->assign_block_vars('stats.newestrow', array(
'NAME' => '<a href="' . append_sid("weblog.$phpEx?" . POST_WEBLOG_URL . "=$stat_newest_id[$i]") . '" class="nav">' . $stat_newest_name[$i] . '</a>',
'OWNER' => $stat_newest_owner[$i],
//'DATE' => create_date($board_config['default_dateformat'], $stat_newest[$i], $board_config['board_timezone']),
'VIEWS' => $stat_newest[$i],
'CLASS' => $row_class)
);
}
else
{
$template->assign_block_vars('stats.newestrow', array(
'NAME' => '&nbsp;',
'OWNER' => '&nbsp;',
'DATE' => '&nbsp;',
'CLASS' => $row_class)
);
}
if ( $stat_entries[$i] )
{
$template->assign_block_vars('stats.mostentriesrow', array(
'NAME' => '<a href="' . append_sid("weblog.$phpEx?" . POST_WEBLOG_URL . "=$stat_entries_id[$i]") . '" class="nav">' . $stat_entries_name[$i] . '</a>',
'OWNER' => $stat_entries_owner[$i],
'ENTRIES' => $stat_entries[$i],
'CLASS' => $row_class)
);
}
else
{
$template->assign_block_vars('stats.mostentriesrow', array(
'NAME' => '&nbsp;',
'OWNER' => '&nbsp;',
'ENTRIES' => '&nbsp;',
'CLASS' => $row_class)
);
}
if ( $stat_mostpopular[$i] )
{
$template->assign_block_vars('stats.mostpopularrow', array(
'NAME' => '<a href="' . append_sid("weblog_entry.$phpEx?" . POST_ENTRY_URL . "=$stat_mostpopular_id[$i]") . '" class="nav">' . $stat_mostpopular_name[$i] . '</a>',
'OWNER' => $stat_mostpopular_owner[$i],
'VISITS' => $stat_mostpopular_views[$i],
'CLASS' => $row_class)
);
}
else
{
$template->assign_block_vars('stats.mostpopularrow', array(
'NAME' => '&nbsp;',
'OWNER' => '&nbsp;',
'VISITS' => '&nbsp;',
'CLASS' => $row_class)
);
}
}
}
//
// Weblog Listing Code
//
$num_weblogs = array(1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 100);
$select_num_weblogs = '<select name="numweblogs">';
for($i = 0; $i < count($num_weblogs); $i++)
{
$selected = ($count == $num_weblogs[$i]) ? ' selected="selected"' : '';
$select_num_weblogs .= '<option value="' . $num_weblogs[$i] . '"' . $selected . '>' . $num_weblogs[$i] . '</option>';
}
$select_num_weblogs .= '</select>';
$sort_method = array(1, 2, 3, 4);
$sort_method_text = array($lang['Weblog_post_time'], $lang['Weblog_started'], $lang['Weblog_forum_name'], $lang['Weblog_username']);
$select_sort = '<select name="sortmethod">';
for($i = 0; $i < count($sort_method); $i++)
{
$selected = ($sort == $sort_method[$i]) ? ' selected="selected"' : '';
$select_sort .= '<option value="' . $sort_method[$i] . '"' . $selected . '>' . $sort_method_text[$i] . '</option>';
}
$select_sort .= '</select>';
$sort_order = array('desc', 'asc');
$sort_order_text = array($lang['Weblog_descending'], $lang['Weblog_ascending']);
$select_asc_desc = '<select name="sortorder">';
for($i = 0; $i < count($sort_order); $i++)
{
$selected = ($order == $sort_order[$i]) ? ' selected="selected"' : '';
$select_asc_desc .= '<option value="' . $sort_order[$i] . '"' . $selected . '>' . $sort_order_text[$i] . '</option>';
}
$select_asc_desc .= '</select>';
switch ( $order )
{
case 'desc':
$asc_desc = 'desc';
break;
default:
$asc_desc = '';
break;
}
switch ( $sort )
{
case 1:
$sort = 'p.post_time';
break;
case 2:
$sort = 'u.weblog_start_date';
break;
case 3:
$sort = 'f.forum_name';
break;
case 4:
$sort = 'u.username';
break;
default:
$sort = 'p.post_time';
break;
}
//
// Find which forums are visible for this user
//
$is_auth_ary = array();
$is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata, $weblog_data);
//
// Get Weblog Data
//
$sql = "SELECT f.*, p.post_time, p.post_username, u.*
FROM (( " . CATEGORIES_TABLE . " c
INNER JOIN " . FORUMS_TABLE . " f ON f.cat_id = c.cat_id
INNER JOIN " . USERS_TABLE . " u2 ON u2.user_weblog = f.forum_id
LEFT JOIN " . POSTS_TABLE . " p ON p.post_id = f.forum_last_post_id )
LEFT JOIN " . USERS_TABLE . " u ON u.user_id = p.poster_id )
WHERE c.cat_allow_weblogs = 1
AND u.weblog_visible <> 0
ORDER BY " . $sort . " " . $order . "
LIMIT " . $start . ", " . $count;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query forums information', '', __LINE__, __FILE__, $sql);
}
while( $row = $db->sql_fetchrow($result) )
{
$weblog_data[] = $row;
}
$total_forums = count($weblog_data);
$template->assign_vars(array(
'PAGINATION' => generate_pagination("weblogs.$phpEx?count=$count&sort=$sort&order=$order", $total_forums_stat, $count, $start))
);
$weblog_owner_data = array();
$topic_data = array();
for ($i = 0; $i < $total_forums; $i++)
{
$weblog_id = $weblog_data[$i]['forum_id'];
//
// Get Weblog Owner Data
//
$sql = "SELECT u.user_avatar_type, u.user_allowavatar, u.user_avatar, u.user_id, u.username
FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g, " . USERS_TABLE . " u
WHERE aa.forum_id = $weblog_id
AND aa.auth_mod = " . TRUE . "
AND g.group_single_user = 1
AND ug.group_id = aa.group_id
AND g.group_id = aa.group_id
AND u.user_id = ug.user_id
ORDER BY aa.forum_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query forum moderator information', '', __LINE__, __FILE__, $sql);
}
while( $row = $db->sql_fetchrow($result) )
{
$weblog_owner_data[$i] = $row;
}
$access_level = 0;
if ( $userdata['session_logged_in'] )
{
$access_level++;
$group_id = intval($weblog_owner_data[$i]['weblog_group']);
//
// Get user information for this group
//
$sql = "SELECT ug.group_id, ug.user_id, ug.user_pending
FROM " . USER_GROUP_TABLE . " ug
WHERE ug.group_id = $group_id
AND ug.user_id = " . $userdata['user_id'] . "
ORDER BY ug.user_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Error getting user list for group', '', __LINE__, __FILE__, $sql);
}
$group_members = $db->sql_fetchrowset($result);
if ( count($group_members) == 1 || $userdata['user_level'] == ADMIN )
$access_level++;
if ( $weblog_owner_data[$i]['user_id'] == $userdata['user_id'] || $userdata['user_level'] == ADMIN )
$access_level++;
}
else
{
$lang['view_post_blog']='';
$new_posts_blog['total']='';
}
//
// Get Topic Data
//
$sql = "SELECT f.forum_id, t.forum_id, t.topic_time, t.topic_mood, t.topic_currently1, t.topic_currently2, t.topic_time, t.topic_id
FROM " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f, " . POSTS_TABLE . " p
WHERE t.forum_id = $weblog_id
AND t.forum_id = f.forum_id
AND t.topic_auth <= " . $access_level . "
ORDER BY f.forum_id LIMIT 15";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query forums information', '', __LINE__, __FILE__, $sql);
}
while( $row = $db->sql_fetchrow($result) )
{
$topic_data[$i] = $row;
}
$avatar_img[$i] = '';
if ( $weblog_owner_data[$i]['user_avatar_type'] && $weblog_owner_data[$i]['user_allowavatar'] )
{
switch( $weblog_owner_data[$i]['user_avatar_type'] )
{
case USER_AVATAR_UPLOAD:
$avatar_img[$i] = ( $board_config['allow_avatar_upload'] ) ? '<img src="' . $board_config['avatar_path'] . '/' . $weblog_owner_data[$i]['user_avatar'] . '" alt="" border="0" />' : '';
break;
case USER_AVATAR_REMOTE:
$avatar_img[$i] = ( $board_config['allow_avatar_remote'] ) ? '<img src="' . $weblog_owner_data[$i]['user_avatar'] . '" alt="" border="0" />' : '';
break;
case USER_AVATAR_GALLERY:
$avatar_img[$i] = ( $board_config['allow_avatar_local'] ) ? '<img src="' . $board_config['avatar_gallery_path'] . '/' . $weblog_owner_data[$i]['user_avatar'] . '" alt="" border="0" />' : '';
break;
}
}
}
switch ( $sort )
{
case 'f.cat_id, f.forum_id':
$sort = 1;
break;
case 'f.forum_name':
$sort = 2;
break;
case 'u.username':
$sort = 3;
break;
default:
$sort = 0;
break;
}
if ( !$count )
$count = 15;
if ( !$start )
$start = 0;
$template->assign_vars(array(
'FORUM_IMG' => $images['forum'],
'FORUM_NEW_IMG' => $images['forum_new'],
'FORUM_LOCKED_IMG' => $images['forum_locked'],
'S_SELECT_PERPAGE' => $select_num_weblogs,
'S_SELECT_SORT' => $select_sort,
'S_SELECT_ASC_DESC' => $select_asc_desc,
'S_WEBLOG_SORT_ACTION' => append_sid("weblogs.$phpEx?count=$count&sort=$sort&order=$order&start=$start"),
'L_WEBLOG_STATS' => $lang['Weblog_stats'],
'L_WEBLOG_LAST_UPDATED' => $lang['Weblog_last_updated'],
'L_WEBLOG_DATE' => $lang['Weblog_date'],
//'L_WEBLOG_NEWEST' => $lang['Weblog_newest'],
'L_WEBLOG_POPULAR_AUTHORS' => $lang['Weblog_popular_authors'],
'L_WEBLOG_MOST_ENTRIES' => $lang['Weblog_most_entries'],
'L_WEBLOG_MOST_POPULAR' => $lang['Weblog_most_popular'],
'L_WEBLOG_NAME' => $lang['Weblog_name'],
'L_WEBLOG_NUMBER' => $lang['Weblog_number'],
'L_WEBLOG_OWNER' => $lang['Weblog_owner2'],
'L_WEBLOG_VISITS' => $lang['Weblog_visits'],
'L_WEBLOG_VISITS' => $lang['Weblog_visits'],
'L_PERPAGE' => $lang['Weblog_per_page'],
'L_GO' => $lang['Weblog_go'],
'L_SORT' => $lang['Weblog_sort'],
'MOD_VERSION' => $mod_version,
'L_VIEW_POST_BLOG' => $lang['view_post_blog'], // Godwin
'ROOT_PATH' => $phpbb_root_path, // Godwin
'POST_BLOG' => $new_posts_blog['total'], // Godwin
'L_LASTPOST' => $lang['Last_Post'],
'L_WEBLOGS' => $lang['Weblogs'],
'L_WEBLOG' => $lang['Weblog'],
'L_LASTENTRY' => $lang['Weblog_last_entry'],
'L_LATESTMOOD' => $lang['Weblog_latest_mood'],
'L_LASTSEEN' => $lang['Weblog_last_seen'],
'L_VIEW' => $lang['View'])
);
//
// Start output of page
//
define('IN_WEBLOGS', true); //added by isaac for blog_header
$page_title = $lang['Weblog_Index'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$template->set_filenames(array(
'body' => 'weblog_index_body.tpl')
);
//
// Okay, let's build the index
//
for($i = 0; $i < $total_categories; $i++)
{
$cat_id = $category_rows[$i]['cat_id'];
//
// Should we display this category/forum set?
//
$display_forums = false;
for($j = 0; $j < $total_forums; $j++)
{
if ( $weblog_data[$j]['cat_id'] == $cat_id )
{
$display_forums = true;
}
}
//
// Yes, we should, so first dump out the category
// title, then, if appropriate the forum list
//
if ( $display_forums )
{
$template->assign_block_vars('catrow', array(
'CAT_ID' => $cat_id,
'CAT_DESC' => $category_rows[$i]['cat_title'],
)
);
for($j = 0; $j < $total_forums; $j++)
{
if ( $weblog_data[$j]['cat_id'] == $cat_id )
{
$weblog_id = $weblog_data[$j]['forum_id'];
if ( $weblog_data[$j]['forum_status'] == FORUM_LOCKED )
{
$folder_image = $images['forum_locked'];
$folder_alt = $lang['Weblog_locked'];
}
else
{
$unread_topics = false;
if ( $userdata['session_logged_in'] )
{
if ( !empty($new_topic_data[$weblog_id]) )
{
$forum_last_post_time = 0;
while( list($check_topic_id, $check_post_time) = @each($new_topic_data[$weblog_id]) )
{
if ( empty($tracking_topics[$check_topic_id]) )
{
$unread_topics = true;
$forum_last_post_time = max($check_post_time, $forum_last_post_time);
}
else
{
if ( $tracking_topics[$check_topic_id] < $check_post_time )
{
$unread_topics = true;
$forum_last_post_time = max($check_post_time, $forum_last_post_time);
}
}
}
if ( !empty($tracking_forums[$weblog_id]) )
{
if ( $tracking_forums[$weblog_id] > $forum_last_post_time )
{
$unread_topics = false;
}
}
if ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all']) )
{
if ( $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all'] > $forum_last_post_time )
{
$unread_topics = false;
}
}
}
}
$folder_image = ( $unread_topics ) ? $images['forum_new'] : $images['forum'];
$folder_alt = ( $unread_topics ) ? $lang['New_posts'] : $lang['No_new_posts'];
}
$mood = $topic_data[$j]['topic_mood'] - 1;
if ( $mood_data[$mood]['mood'] != '(none)' && $mood_data[$mood]['mood'] != '' && $mood > 0 )
{
$icon = '<img src="images/weblogs/' . $mood_data[$mood]['image_url'] . '" alt=' . $mood_data[$mood]['mood'] . ' border="0"> ' . $mood_data[$mood]['mood'];
}
else
{
$icon = '(none)';
}
$currently1 = $topic_data[$j]['topic_currently1'] - 1;
if ( $currently_data[$currently1]['currently'] != '(none)' && $currently_data[$currently1]['currently'] != '' && $currently1 > 0 )
{
$last_seen = '<img src="images/weblogs/' . $currently_data[$currently1]['image_url'] . '" border="0">&nbsp;' . $currently_data[$currently1]['currently'] . ' ' . $topic_data[$j]['topic_currently2'];
}
else
{
$last_seen = $currently_data[$currently1]['currently'];
}
$newest_post_img = '';
if( $userdata['session_logged_in'] )
{
if( $topic_data[$j]['post_time'] > $userdata['user_lastvisit'] )
{
if( !empty($tracking_topics) || !empty($tracking_forums) || isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all']) )
{
$unread_topics = true;
$entry_id[$i] = $topic_data[$i]['topic_id'];
if( !empty($tracking_topics[$entry_id[$j]]) )
{
if( $tracking_topics[$entry_id[$j]] >= $topic_data[$j]['post_time'] )
{
$unread_topics = false;
}
}
if( !empty($tracking_forums[$weblog_id]) )
{
if( $tracking_forums[$weblog_id] >= $topic_data[$j]['post_time'] )
{
$unread_topics = false;
}
}
if( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all']) )
{
if( $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all'] >= $post_time[$j] )
{
$unread_topics = false;
}
}
if( $unread_topics )
{
$newest_post_img = '<a href="' . append_sid("weblog_entry.$phpEx?" . POST_ENTRY_URL . "=$entry_id[$j]") . '"><img src="' . $images['icon_newest_reply'] . '" alt="' . $lang['View_newest_post'] . '" title="' . $lang['View_newest_post'] . '" border="0" /></a> ';
}
}
else
{
$newest_post_img = '<a href="' . append_sid("weblog_entry.$phpEx?" . POST_ENTRY_URL . "=$entry_id[$j]") . '"><img src="' . $images['icon_newest_reply'] . '" alt="' . $lang['View_newest_post'] . '" title="' . $lang['View_newest_post'] . '" border="0" /></a> ';
}
}
}
$posts = $weblog_data[$j]['forum_posts'];
$topics = $weblog_data[$j]['forum_topics'];
if ( $weblog_data[$j]['forum_last_post_id'] )
{
$last_post_time = create_date($board_config['default_dateformat'], $weblog_data[$j]['post_time'], $board_config['board_timezone']);
//
// MOD - TODAY AT - BEGIN
//
if ( $board_config['time_today'] < $weblog_data[$j]['post_time'])
{
$last_post = sprintf($lang['Today_at'], create_date($board_config['default_timeformat'], $weblog_data[$j]['post_time'], $board_config['board_timezone'])) . '';
}
else if ( $board_config['time_yesterday'] < $weblog_data[$j]['post_time'])
{
$last_post = sprintf($lang['Yesterday_at'], create_date($board_config['default_timeformat'], $weblog_data[$j]['post_time'], $board_config['board_timezone'])) . '';
}
else
{
$last_post = $last_post_time;
}
// MOD - TODAY AT - END
$last_post .= $newest_post_img;
}
else
{
$last_post = $lang['No_Posts'];
}
if ( $weblog_data[$j]['forum_last_post_id'] )
{
$last_entry_time = create_date($board_config['default_dateformat'], $topic_data[$j]['topic_time'], $board_config['board_timezone']);
//
// MOD - TODAY AT - BEGIN
//
if ( $board_config['time_today'] < $topic_data[$j]['topic_time'])
{
$last_entry = sprintf($lang['Today_at'], create_date($board_config['default_timeformat'], $topic_data[$j]['topic_time'], $board_config['board_timezone'])) . '';
}
else if ( $board_config['time_yesterday'] < $topic_data[$j]['topic_time'])
{
$last_entry = sprintf($lang['Yesterday_at'], create_date($board_config['default_timeformat'], $topic_data[$j]['topic_time'], $board_config['board_timezone'])) . '';
}
else
{
$last_entry = $last_entry_time;
}
// MOD - TODAY AT - END
}
else
{
$last_entry = $lang['Weblog_no_entries'];
}
if ( file_exists("weblogs/face_" . $weblog_owner_data[$j]['user_id'] . ".cfg") )
$file1 = file("weblogs/face_" . $weblog_owner_data[$j]['user_id'] . ".cfg");
$weblog_face = '';
for ($k=0;$k<count($file1);$k++)
{
$weblog_face .= $file1[$k];
}
// I'll take care of parsing myself!
$weblog_face = str_replace('{catrow.forumrow.FORUM_NAME}', $weblog_data[$j]['forum_name'], $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.AVATAR_IMG}', $avatar_img[$j], $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.USERNAME}', $weblog_owner_data[$j]['username'], $weblog_face);
if ( $is_auth_ary[$weblog_id]['auth_read'] )
{
$weblog_face = str_replace('{catrow.forumrow.FORUM_DESC}', $weblog_data[$j]['forum_desc'], $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.POSTS}', $weblog_data[$j]['forum_posts'], $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.TOPICS}', $weblog_data[$j]['forum_topics'], $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.ICON}', $icon, $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.LAST_POST}', $last_post, $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.LAST_ENTRY}', $last_entry, $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.LAST_SEEN}', $last_seen, $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.WEBLOG_DESC}', $weblog_data[$j]['forum_desc'], $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.WEBLOG_POSTS}', $weblog_data[$j]['forum_posts'], $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.WEBLOG_ENTRIES}', $weblog_data[$j]['forum_topics'], $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.U_PAST}', append_sid("weblog.$phpEx?" . POST_WEBLOG_URL . '=' . $weblog_data[$j]['forum_id']), $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.U_VIEWFORUM}', append_sid("weblog.$phpEx?" . POST_WEBLOG_URL . "=$weblog_id"), $weblog_face);
$weblog_face = str_replace('{L_WEBLOG}', $lang['Weblog'], $weblog_face);
$weblog_face = str_replace('{L_WEBLOG_DESC}', $lang['Weblog_Description'], $weblog_face);
$weblog_face = str_replace('{L_LASTENTRY}', $lang['Weblog_last_entry'], $weblog_face);
$weblog_face = str_replace('{L_LASTPOST}', $lang['Weblog_last_post'], $weblog_face);
$weblog_face = str_replace('{L_LATESTMOOD}', $lang['Weblog_latest_mood'], $weblog_face);
$weblog_face = str_replace('{L_LASTSEEN}', $lang['Weblog_last_seen'], $weblog_face);
$weblog_face = str_replace('{L_VIEW}', $lang['View'], $weblog_face);
}
else
{
$weblog_face = str_replace('{catrow.forumrow.POSTS}', '', $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.TOPICS}', '', $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.ICON}', '-', $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.LAST_POST}', '-', $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.LAST_ENTRY}', '-', $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.LAST_SEEN}', '-', $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.WEBLOG_DESC}', $lang['Weblog_not_allowed'], $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.WEBLOG_POSTS}', '-', $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.WEBLOG_ENTRIES}', '-', $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.U_PAST}', 'weblogs.' . $phpEx, $weblog_face);
$weblog_face = str_replace('{catrow.forumrow.U_VIEWFORUM}', '', $weblog_face);
$weblog_face = str_replace('{L_WEBLOG}', $lang['Weblog'], $weblog_face);
$weblog_face = str_replace('{L_WEBLOG_DESC}', $lang['Weblog_Description'], $weblog_face);
$weblog_face = str_replace('{L_LASTENTRY}', $lang['Weblog_last_entry'], $weblog_face);
$weblog_face = str_replace('{L_LASTPOST}', $lang['Weblog_last_post'], $weblog_face);
$weblog_face = str_replace('{L_LATESTMOOD}', $lang['Weblog_latest_mood'], $weblog_face);
$weblog_face = str_replace('{L_LASTSEEN}', $lang['Weblog_last_seen'], $weblog_face);
$weblog_face = str_replace('{L_VIEW}', $lang['View'], $weblog_face);
}
$template->assign_block_vars('catrow.forumrow', array(
'WEBLOG_FACE' => $weblog_face)
);
}
}
}
} // for ... categories
}// if ... total_categories
else
{
message_die(GENERAL_MESSAGE, $lang['No_weblogs']);
}
//
// Generate the page
//
$template->pparse('body');
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?>