Forum topic index module
| > Module written by Matt Mecham
| > Date started: 14th February 2002
|
| > Module Version Number: 1.0.0
+--------------------------------------------------------------------------
*/
$idx = new Forums;
class Forums {
var $output = "";
var $base_url = "";
var $html = "";
var $moderator = array();
var $forum = array();
var $mods = array();
var $show_dots = "";
var $nav_extra = "";
var $read_array = array();
var $board_html = "";
var $sub_output = "";
var $pinned_print = 0;
var $new_posts = 0;
//+----------------------------------------------------------------
//
// Our constructor, load words, load skin, get DB forum/cat data
//
//+----------------------------------------------------------------
function Forums()
{
global $ibforums, $DB, $std, $print, $skin_universal;
//+------------------------------------------
// Are we doing anything with "site jump?"
//+------------------------------------------
switch( $ibforums->input['f'] )
{
case 'sj_home':
$std->boink_it($ibforums->base_url."act=idx");
break;
case 'sj_search':
$std->boink_it($ibforums->base_url."act=Search");
break;
case 'sj_help':
$std->boink_it($ibforums->base_url."act=Help");
break;
default:
$ibforums->input['f'] = intval($ibforums->input['f']);
break;
}
$ibforums->lang = $std->load_words($ibforums->lang, 'lang_forum', $ibforums->lang_id);
$this->html = $std->load_template('skin_forum');
//+------------------------------------------
// Get the forum info based on the forum ID,
// and get the category name, ID, etc.
//+------------------------------------------
$DB->query("SELECT f.*, c.id as cat_id, c.name as cat_name
FROM ibf_forums f
LEFT JOIN ibf_categories c ON (c.id=f.category)
WHERE f.id=".$ibforums->input['f']);
$this->forum = $DB->fetch_row();
//----------------------------------------
// Error out if we can not find the forum
//----------------------------------------
if (!$this->forum['id'])
{
$std->Error( array( LEVEL => 1, MSG => 'is_broken_link') );
}
//----------------------------------------
// Is it a redirect forum?
//----------------------------------------
if ( $this->forum['redirect_on'] and $this->forum['redirect_url'] )
{
// Update hits:
$DB->query("UPDATE ibf_forums SET redirect_hits=redirect_hits+1 WHERE id=".$this->forum['id']);
// Boink!
$std->boink_it( $this->forum['redirect_url'] );
// Game over man!
}
//----------------------------------------
// If this is a sub forum, we need to get
// the cat details, and parent details
//----------------------------------------
if ($this->forum['parent_id'] > 0)
{
$DB->query("SELECT f.id as forum_id, f.name as forum_name, c.id, c.name FROM ibf_forums f, ibf_categories c WHERE f.id='".$this->forum['parent_id']."' AND c.id=f.category");
$row = $DB->fetch_row();
$this->forum['cat_id'] = $row['id'];
$this->forum['cat_name'] = $row['name'];
$this->nav_extra = "{$row['forum_name']}";
}
//--------------------------------------------------------------------------------
//--------------------------------------------------------------------------------
$this->base_url = $ibforums->base_url;
$this->forum['FORUM_JUMP'] = $std->build_forum_jump();
// Are we viewing the forum, or viewing the forum rules?
if ($ibforums->input['act'] == 'SR')
{
$this->show_rules();
}
else
{
if ($this->forum['subwrap'] == 1)
{
$this->show_subforums();
if ($this->forum['sub_can_post'])
{
$this->show_forum();
}
else
{
// No forum to show, just use the HTML in $this->sub_output
// or there will be no HTML to use in the str_replace!
$this->output = $this->sub_output;
$this->sub_output = "";
}
}
else
{
$this->show_forum();
}
}
//+----------------------------------------------------------------
// Print it
//+----------------------------------------------------------------
if ($this->sub_output != "")
{
$this->output = str_replace( "", $this->sub_output, $this->output );
}
if ($ibforums->member['id'] > 0)
{
$this->output = str_replace( "", $this->html->show_sub_link($this->forum['id']), $this->output );
}
if ( $ibforums->member['g_is_supmod'] OR $ibforums->member['is_mod'] )
{
if ( $this->forum['has_mod_posts'] )
{
$this->output = str_replace( "", $this->html->show_mod_link($this->forum['id']), $this->output );
}
}
$print->add_output($this->output);
$print->do_output( array( 'TITLE' => $ibforums->vars['board_name']." -> ".$this->forum['name'],
'JS' => 0,
'NAV' => array(
"{$this->forum['cat_name']}",
$this->nav_extra,
"{$this->forum['name']}",
),
) );
}
//+----------------------------------------------------------------
// Display any sub forums
//+----------------------------------------------------------------
function show_subforums() {
global $std, $DB, $ibforums;
$ibforums->lang = $std->load_words($ibforums->lang, 'lang_boards', $ibforums->lang_id);
$this->board_html = $std->load_template('skin_boards');
$fid = $ibforums->input['f'];
$DB->query("SELECT f.*, m.member_name as mod_name, m.member_id as mod_id, m.is_group, m.group_id, m.group_name, m.mid
FROM ibf_forums f
LEFT JOIN ibf_moderators m ON (f.id=m.forum_id)
WHERE parent_id='$fid'
ORDER BY position");
if ( ! $DB->get_num_rows() )
{
return "";
}
while ( $r = $DB->fetch_row() )
{
$this->forums[ $r['id'] ] = $r;
if ($r['mod_id'] != "")
{
$this->mods[ $r['id'] ][ $r['mid'] ] = array( 'name' => $r['mod_name'],
'id' => $r['mod_id'],
'isg' => $r['is_group'],
'gname'=> $r['group_name'],
'gid' => $r['group_id'],
);
}
}
foreach( $this->forums as $data )
{
$temp_html .= $this->process_forum($data['id'], $data);
}
if ($temp_html != "")
{
$this->sub_output .= $this->board_html->subheader();
$this->sub_output .= $temp_html;
$this->sub_output .= $this->board_html->end_this_cat();
}
else
{
return $this->sub_output;
}
unset($temp_html);
$this->sub_output .= $this->board_html->end_all_cats();
}
function process_forum($forum_id="", $forum_data="")
{
global $std, $ibforums;
//--------------------------------------
// Check permissions...
//--------------------------------------
if ( $std->check_perms($forum_data['read_perms']) != TRUE )
{
return "";
}
//--------------------------------------
// Redirect only forum?
//--------------------------------------
if ( $forum_data['redirect_on'] )
{
// Simply return with the redirect information
if ( $forum_data['redirect_loc'] != "" )
{
$forum_data['redirect_target'] = " target='".$forum_data['redirect_loc']."' ";
}
$forum_data['redirect_hits'] = $std->do_number_format($forum_data['redirect_hits']);
return $this->board_html->forum_redirect_row($forum_data);
}
$forum_data['img_new_post'] = $std->forum_new_posts($forum_data);
if ( $forum_data['img_new_post'] == '<{C_ON}>' )
{
$forum_data['img_new_post'] = $this->board_html->forum_img_with_link($forum_data['img_new_post'], $forum_data['id']);
}
$forum_data['last_post'] = $std->get_date($forum_data['last_post'], 'LONG');
$forum_data['last_topic'] = $ibforums->lang['f_none'];
if (isset($forum_data['last_title']) and $forum_data['last_id'])
{
$forum_data['last_title'] = strip_tags($forum_data['last_title']);
$forum_data['last_title'] = str_replace( "!" , "!", $forum_data['last_title'] );
$forum_data['last_title'] = str_replace( """, "\"", $forum_data['last_title'] );
if (strlen($forum_data['last_title']) > 30)
{
$forum_data['last_title'] = substr($forum_data['last_title'],0,27) . "...";
$forum_data['last_title'] = preg_replace( '/&(#(\d+;?)?)?\.\.\.$/', '...', $forum_data['last_title'] );
}
else
{
$forum_data['last_title'] = preg_replace( '/&(#(\d+?)?)?$/', '', $forum_data['last_title'] );
}
if ($forum_data['password'] != "")
{
$forum_data['last_topic'] = $ibforums->lang['f_protected'];
}
else
{
$forum_data['last_unread'] = $this->board_html->forumrow_lastunread_link($forum_data['id'], $forum_data['last_id']);
$forum_data['last_topic'] = "{$forum_data['last_title']}";
}
}
if ( isset($forum_data['last_poster_name']))
{
$forum_data['last_poster'] = $forum_data['last_poster_id'] ? "{$forum_data['last_poster_name']}"
: $forum_data['last_poster_name'];
}
else
{
$forum_data['last_poster'] = $ibforums->lang['f_none'];
}
//---------------------------------
// Moderators
//---------------------------------
$forum_data['moderator'] = "";
if (isset($this->mods[ $forum_data['id'] ] ) )
{
$forum_data['moderator'] = $ibforums->lang['forum_leader'].' ';
if (is_array($this->mods[ $forum_data['id'] ]) )
{
foreach ($this->mods[ $forum_data['id'] ] as $moderator)
{
if ($moderator['isg'] == 1)
{
$forum_data['moderator'] .= "{$moderator['gname']}, ";
}
else
{
$forum_data['moderator'] .= "{$moderator['name']}, ";
}
}
$forum_data['moderator'] = preg_replace( "!,\s+$!", "", $forum_data['moderator'] );
}
else
{
if ($moderator['isg'] == 1)
{
$forum_data['moderator'] .= "{$this->mods[$forum_data['id']]['gname']}, ";
}
else
{
$forum_data['moderator'] .= "{$this->mods[$forum_data['id']]['name']}";
}
}
}
$forum_data['posts'] = $std->do_number_format($forum_data['posts']);
$forum_data['topics'] = $std->do_number_format($forum_data['topics']);
return $this->board_html->ForumRow($forum_data);
}
//+----------------------------------------------------------------
//
// Show the forum rules on a separate page
//
//+----------------------------------------------------------------
function show_rules()
{
global $DB, $ibforums, $std, $print;
//+--------------------------------------------
// Do we have permission to view these rules?
//+--------------------------------------------
$bad_entry = $this->check_access();
if ($bad_entry == 1)
{
$std->Error( array( 'LEVEL' => 1, 'MSG' => 'no_view_topic') );
}
if ( $this->forum['rules_title'] )
{
$rules['title'] = $this->forum['rules_title'];
$rules['body'] = $this->forum['rules_text'];
$rules['fid'] = $this->forum['id'];
$this->output .= $this->html->show_rules($rules);
$print->add_output("$this->output");
$print->do_output( array( 'TITLE' => $ibforums->vars['board_name']." -> ".$this->forum['name'],
'JS' => 0,
'NAV' => array(
"{$this->forum['cat_name']}",
$this->forum['name']
),
) );
}
else
{
$std->Error( array( 'LEVEL' => 1, 'MSG' => 'no_view_topic') );
}
}
//+----------------------------------------------------------------
//
// Forum view check for authentication
//
//+----------------------------------------------------------------
function show_forum()
{
global $ibforums;
// are we checking for user authentication via the log in form
// for a private forum w/password protection?
$ibforums->input['L'] == 1 ? $this->authenticate_user() : $this->render_forum();
}
//+----------------------------------------------------------------
//
// Authenicate the log in for a password protected forum
//
//+----------------------------------------------------------------
function authenticate_user() {
global $std, $ibforums, $print;
if ($ibforums->input['f_password'] == "")
{
$std->Error( array( 'LEVEL' => 1, 'MSG' => 'pass_blank' ) );
}
if ($ibforums->input['f_password'] != $this->forum['password'])
{
$std->Error( array( 'LEVEL' => 1, 'MSG' => 'wrong_pass' ) );
}
$std->my_setcookie( "iBForum".$this->forum['id'], $ibforums->input['f_password'] );
$print->redirect_screen( $ibforums->lang['logged_in'] , "showforum=".$this->forum['id'] );
}
//+----------------------------------------------------------------------------------
function check_access() {
global $ibforums, $std, $HTTP_COOKIE_VARS;
$return = 1;
if ( $std->check_perms($this->forum['read_perms']) == TRUE )
{
$return = 0;
}
// Do we have permission to even see the password page?
if ($return == 0)
{
if ($this->forum['password'])
{
if ($HTTP_COOKIE_VARS[ $ibforums->vars['cookie_id'].'iBForum'.$this->forum['id'] ] == $this->forum['password'])
{
$return = 0;
}
else
{
$this->forum_login();
}
}
}
return $return;
}
//+----------------------------------------------------------------------------------
function forum_login() {
global $ibforums, $std, $DB, $HTTP_COOKIE_VARS, $print;
if (empty($ibforums->member['id']))
{
$std->Error( array( 'LEVEL' => 1, 'MSG' => 'no_guests' ) );
}
$this->output = $this->html->Forum_log_in( $this->forum['id'] );
$print->add_output("$this->output");
$print->do_output( array( 'TITLE' => $ibforums->vars['board_name']." -> ".$this->forum['name'],
'JS' => 0,
'NAV' => array(
"{$this->forum['cat_name']}",
"{$this->forum['name']}",
),
) );
}
//+----------------------------------------------------------------
//
// Main render forum engine
//
//+----------------------------------------------------------------
function render_forum()
{
global $ibforums, $DB, $std, $print, $skin_universal,$HTTP_COOKIE_VARS;
$bad_entry = $this->check_access();
if ($bad_entry == 1)
{
if ($this->forum['subwrap'] == 1)
{
// Dont' show an error as we may have sub forums up top
// Instead, copy the sub forum ouput to the main output
// and return gracefully
$this->output = $this->sub_output;
$this->sub_output = "";
return TRUE;
}
else
{
$std->Error( array( LEVEL => 1, MSG => 'no_permission') );
}
}
if ( $read = $std->my_getcookie('topicsread') )
{
$this->read_array = unserialize(stripslashes($read));
}
$ibforums->input['last_visit'] = $ibforums->forum_read[ $ibforums->input['f'] ] > $ibforums->input['last_visit']
? $ibforums->forum_read[ $ibforums->input['f'] ] : $ibforums->input['last_visit'];
$prune_value = $std->select_var( array(
1 => $ibforums->input['prune_day'],
2 => $this->forum['prune'] ,
3 => '100' )
);
$sort_key = $std->select_var( array(
1 => $ibforums->input['sort_key'],
2 => $this->forum['sort_key'] ,
3 => 'last_post' )
);
$sort_by = $std->select_var( array(
1 => $ibforums->input['sort_by'],
2 => $this->forum['sort_order'] ,
3 => 'Z-A' )
);
$First = $std->select_var( array(
1 => intval($ibforums->input['st']),
2 => 0 )
);
// Figure out sort order, day cut off, etc
$Prune = $prune_value != 100 ? (time() - ($prune_value * 60 * 60 * 24)) : 0;
$sort_keys = array( 'last_post' => 'sort_by_date',
'title' => 'sort_by_topic',
'starter_name' => 'sort_by_poster',
'posts' => 'sort_by_replies',
'views' => 'sort_by_views',
'start_date' => 'sort_by_start',
'last_poster_name' => 'sort_by_last_poster',
);
$prune_by_day = array( '1' => 'show_today',
'5' => 'show_5_days',
'7' => 'show_7_days',
'10' => 'show_10_days',
'15' => 'show_15_days',
'20' => 'show_20_days',
'25' => 'show_25_days',
'30' => 'show_30_days',
'60' => 'show_60_days',
'90' => 'show_90_days',
'100' => 'show_all',
);
$sort_by_keys = array( 'Z-A' => 'descending_order',
'A-Z' => 'ascending_order',
);
//+----------------------------------------------------------------
// check for any form funny business by wanna-be hackers
//+----------------------------------------------------------------
if ( (!isset($sort_keys[$sort_key])) or (!isset($prune_by_day[$prune_value])) or (!isset($sort_by_keys[$sort_by])) )
{
$std->Error( array( LEVEL=> 5, MSG =>'incorrect_use') );
}
$r_sort_by = $sort_by == 'A-Z' ? 'ASC' : 'DESC';
//+----------------------------------------------------------------
// Query the database to see how many topics there are in the forum
//+----------------------------------------------------------------
$DB->query("SELECT COUNT(tid) as max FROM ibf_topics WHERE forum_id=".$this->forum['id']." and approved=1 and (pinned=1 or last_post > $Prune)");
$total_possible = $DB->fetch_row();
//+----------------------------------------------------------------
// Generate the forum page span links
//+----------------------------------------------------------------
$this->forum['SHOW_PAGES']
= $std->build_pagelinks( array( 'TOTAL_POSS' => $total_possible['max'],
'PER_PAGE' => $ibforums->vars['display_max_topics'],
'CUR_ST_VAL' => $ibforums->input['st'],
'L_SINGLE' => $ibforums->lang['single_page_forum'],
'BASE_URL' => $this->base_url."showforum=".$this->forum['id']."&prune_day=$prune_value&sort_by=$sort_by&sort_key=$sort_key",
)
);
//+----------------------------------------------------------------
// Do we have any rules to show?
//+----------------------------------------------------------------
$this->output .= $std->print_forum_rules($this->forum);
//+----------------------------------------------------------------
// Generate the poll button
//+----------------------------------------------------------------
$this->forum['POLL_BUTTON'] = $this->forum['allow_poll']
? "<{A_POLL}>"
: '';
//+----------------------------------------------------------------
// Start printing the page
//+----------------------------------------------------------------
$this->output .= $this->html->PageTop($this->forum);
//+----------------------------------------------------------------
// Do we have any topics to show?
//+----------------------------------------------------------------
if ($total_possible['max'] < 1)
{
$this->output .= $this->html->show_no_matches();
}
$total_topics_printed = 0;
if ( ($ibforums->vars['show_user_posted'] == 1) and ($ibforums->member['id']) )
{
$query = "SELECT DISTINCT(ibf_posts.author_id), ibf_topics.* FROM ibf_topics
LEFT JOIN ibf_posts ON
(ibf_topics.tid=ibf_posts.topic_id AND ibf_posts.author_id=".$ibforums->member['id'].")
WHERE ibf_topics.forum_id=".$this->forum['id']."
and ibf_topics.approved=1
and (ibf_topics.pinned=1 or ibf_topics.last_post > $Prune)";
}
else
{
$query = "SELECT * from ibf_topics WHERE forum_id=".$this->forum['id']." and approved=1 and (last_post > $Prune OR pinned=1)";
}
//+----------------------------------------------------------------
// Do we have permission to view other posters topics?
//+----------------------------------------------------------------
if (!$ibforums->member['g_other_topics'])
{
$query .= " and starter_id='".$ibforums->member['id']."'";
}
//+----------------------------------------------------------------
// Finish off the query
//+----------------------------------------------------------------
$First = $First ? $First : 0;
$query .= " ORDER BY pinned DESC, $sort_key $r_sort_by LIMIT $First,".$ibforums->vars['display_max_topics'];
$DB->query($query);
//+----------------------------------------------------------------
// Grab the rest of the topics and print them
//+----------------------------------------------------------------
while ( $topic = $DB->fetch_row() )
{
$this->output .= $this->render_entry( $topic );
$total_topics_printed++;
}
//+----------------------------------------------------------------
// Finish off the rest of the page
//+----------------------------------------------------------------
$ibforums->lang['showing_text'] = preg_replace( "/<#MATCHED_TOPICS#>/", $total_topics_printed , $ibforums->lang['showing_text'] );
$ibforums->lang['showing_text'] = preg_replace( "/<#TOTAL_TOPICS#>/" , $total_possible['max'] , $ibforums->lang['showing_text'] );
$sort_key_html = "" , $ibforums->lang['sort_text'] );
$this->output .= $this->html->TableEnd($this->forum);
//+----------------------------------------------------------------
// If all the new topics have been read in this forum..
//+----------------------------------------------------------------
if ($this->new_posts < 1)
{
$ibforums->forum_read[ $this->forum['id'] ] = time();
$std->hdl_forum_read_cookie('set');
}
//+----------------------------------------------------------------
// Process users active in this forum
//+----------------------------------------------------------------
if ($ibforums->vars['no_au_forum'] != 1)
{
//+-----------------------------------------
// Get the users
//+-----------------------------------------
$cut_off = ($ibforums->vars['au_cutoff'] != "") ? $ibforums->vars['au_cutoff'] * 60 : 900;
$time = time() - $cut_off;
$DB->query("SELECT s.member_id, s.member_name, s.login_type, s.location, g.suffix, g.prefix, g.g_perm_id, t.forum_id, m.org_perm_id
FROM ibf_sessions s
LEFT JOIN ibf_groups g ON (g.g_id=s.member_group)
LEFT JOIN ibf_topics t ON (t.tid=s.in_topic)
LEFT JOIN ibf_members m on (s.member_id=m.id)
WHERE (s.in_forum={$this->forum['id']} OR t.forum_id={$this->forum['id']})
AND s.running_time > $time
ORDER BY s.running_time DESC");
//+-----------------------------------------
// Cache all printed members so we don't double print them
//+-----------------------------------------
$cached = array();
$active = array( 'guests' => 0, 'anon' => 0, 'members' => 0, 'names' => "");
while ($result = $DB->fetch_row() )
{
$result['g_perm_id'] = $result['org_perm_id'] ? $result['org_perm_id'] : $result['g_perm_id'];
if ( $this->forum['read_perms'] != '*' )
{
if ( $result['g_perm_id'] )
{
if ( ! preg_match("/(^|,)(".str_replace( ",", '|', $result['g_perm_id'] ).")(,|$)/", $this->forum['read_perms'] ) )
{
continue;
}
}
else
{
continue;
}
}
if ($result['member_id'] == 0)
{
$active['guests']++;
}
else
{
if (empty( $cached[ $result['member_id'] ] ) )
{
$cached[ $result['member_id'] ] = 1;
if ($result['login_type'] == 1)
{
if ( ($ibforums->member['mgroup'] == $ibforums->vars['admin_group']) and ($ibforums->vars['disable_admin_anon'] != 1) )
{
$active['names'] .= "{$result['prefix']}{$result['member_name']}{$result['suffix']}*, ";
$active['anon']++;
}
else
{
$active['anon']++;
}
}
else
{
$active['members']++;
$active['names'] .= "{$result['prefix']}{$result['member_name']}{$result['suffix']}, ";
}
}
}
}
$active['names'] = preg_replace( "/,\s+$/", "" , $active['names'] );
$ibforums->lang['active_users_title'] = sprintf( $ibforums->lang['active_users_title'] , ($active['members'] + $active['guests'] + $active['anon'] ) );
$ibforums->lang['active_users_detail'] = sprintf( $ibforums->lang['active_users_detail'] , $active['guests'],$active['anon'] );
$ibforums->lang['active_users_members'] = sprintf( $ibforums->lang['active_users_members'], $active['members'] );
$this->output = str_replace( "", $this->html->forum_active_users($active), $this->output );
}
return TRUE;
}
//+----------------------------------------------------------------
//
// Crunches the data into pwetty html
//
//+----------------------------------------------------------------
function render_entry($topic) {
global $DB, $std, $ibforums;
$topic['last_text'] = $ibforums->lang['last_post_by'];
$topic['last_poster'] = ($topic['last_poster_id'] != 0)
? "{$topic['last_poster_name']}"
: "-".$topic['last_poster_name']."-";
$topic['starter'] = ($topic['starter_id'] != 0)
? "{$topic['starter_name']}"
: "-".$topic['starter_name']."-";
if ($topic['poll_state'])
{
$topic['prefix'] = $ibforums->vars['pre_polls'].' ';
}
if ( ($ibforums->member['id']) and ($topic['author_id']) )
{
$show_dots = 1;
}
$topic['folder_img'] = $std->folder_icon($topic, $show_dots, $this->read_array[$topic['tid']]);
$topic['topic_icon'] = $topic['icon_id'] ? '
'
: ' ';
$topic['start_date'] = $std->get_date( $topic['start_date'], 'LONG' );
$pages = 1;
if ($topic['posts'])
{
if ( (($topic['posts'] + 1) % $ibforums->vars['display_max_posts']) == 0 )
{
$pages = ($topic['posts'] + 1) / $ibforums->vars['display_max_posts'];
}
else
{
$number = ( ($topic['posts'] + 1) / $ibforums->vars['display_max_posts'] );
$pages = ceil( $number);
}
}
if ($pages > 1)
{
$topic['PAGES'] = "({$ibforums->lang['topic_sp_pages']} ";
for ($i = 0 ; $i < $pages ; ++$i ) {
$real_no = $i * $ibforums->vars['display_max_posts'];
$page_no = $i + 1;
if ($page_no == 4) {
$topic['PAGES'] .= "vars['display_max_posts'] . "'>...$pages ";
break;
} else {
$topic['PAGES'] .= "$page_no ";
}
}
$topic['PAGES'] .= ")";
}
//------------------------------------------------
// Format some numbers
//------------------------------------------------
if ($topic['posts'] < 0) $topic['posts'] = 0;
$topic['posts'] = $std->do_number_format($topic['posts']);
$topic['views'] = $std->do_number_format($topic['views']);
//------------------------------------------------
// Last time stuff...
//------------------------------------------------
$last_time = $this->read_array[ $topic['tid'] ] > $ibforums->input['last_visit'] ? $this->read_array[ $topic['tid'] ] : $ibforums->input['last_visit'];
if ($last_time && ($topic['last_post'] > $last_time))
{
$this->new_posts++;
$topic['go_new_post'] = "<{NEW_POST}>";
}
else
{
$topic['go_new_post'] = "";
}
$topic['last_post'] = $std->get_date( $topic['last_post'], 'SHORT' );
//+----------------------------------------------------------------
if ($topic['state'] == 'link')
{
$t_array = explode("&", $topic['moved_to']);
$topic['tid'] = $t_array[0];
$topic['forum_id'] = $t_array[1];
$topic['title'] = $topic['title'];
$topic['views'] = '--';
$topic['posts'] = '--';
$topic['prefix'] = $ibforums->vars['pre_moved']." ";
$topic['go_new_post'] = "";
}
else
{
$topic['posts'] = $this->html->who_link($topic['tid'], $topic['posts']);
}
$p_start = "";
$p_end = "";
if ($topic['pinned'] == 1)
{
$topic['prefix'] = $ibforums->vars['pre_pinned'];
$topic['topic_icon'] = "<{B_PIN}>";
if ($this->pinned_print == 0)
{
// we've a pinned topic, but we've not printed the pinned
// starter row, so..
$p_start = $this->html->render_pinned_start();
$this->pinned_print = 1;
}
return $p_start . $this->html->render_pinned_row( $topic );
}
else
{
// This is not a pinned topic, so lets check to see if we've
// printed the footer yet.
if ($this->pinned_print == 1)
{
// Nope, so..
$p_end = $this->html->render_pinned_end();
$this->pinned_print = 0;
}
return $p_end . $this->html->RenderRow( $topic );
}
}
//+----------------------------------------------------------------
//
// Returns the last action date
//
//+----------------------------------------------------------------
function get_last_date($topic) {
global $ibforums, $std;
return $std->get_date( $topic['last_post'], 'SHORT' );
}
}
?>