2001-02-17 08:37:32 +00:00
< ? php
2001-03-07 06:53:39 +00:00
/***************************************************************************
2001-07-06 17:47:10 +00:00
* viewtopic . php
2001-03-07 06:53:39 +00:00
* -------------------
* begin : Saturday , Feb 13 , 2001
* copyright : ( C ) 2001 The phpBB Group
* email : support @ phpbb . com
*
* $Id $
*
***************************************************************************/
2001-09-07 22:56:50 +00:00
/***************************************************************************
*
* 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 .
*
***************************************************************************/
2001-08-30 22:07:08 +00:00
2002-03-18 13:35:43 +00:00
define ( 'IN_PHPBB' , true );
2002-03-22 23:17:06 +00:00
$phpbb_root_path = './' ;
2001-07-13 16:14:37 +00:00
include ( $phpbb_root_path . 'extension.inc' );
include ( $phpbb_root_path . 'common.' . $phpEx );
include ( $phpbb_root_path . 'includes/bbcode.' . $phpEx );
2001-03-04 04:17:02 +00:00
2003-02-26 00:37:43 +00:00
// Initial var setup
2003-02-27 14:27:21 +00:00
$forum_id = ( isset ( $_GET [ 'f' ])) ? max ( intval ( $_GET [ 'f' ]), 0 ) : 0 ;
$topic_id = ( isset ( $_GET [ 't' ])) ? max ( intval ( $_GET [ 't' ]), 0 ) : 0 ;
$post_id = ( isset ( $_GET [ 'p' ])) ? max ( intval ( $_GET [ 'p' ]), 0 ) : 0 ;
$start = ( isset ( $_GET [ 'start' ])) ? max ( intval ( $_GET [ 'start' ]), 0 ) : 0 ;
2001-10-16 01:00:47 +00:00
2003-02-27 14:27:21 +00:00
// Do we need to check for specific allowed keys here? So long as
// parameters are not directly used in SQL I'm tempted to say
// if someone wishes to screw their view up by entering unknown data
// good luck to them :D
$sort_days = ( ! empty ( $_REQUEST [ 'st' ])) ? max ( intval ( $_REQUEST [ 'st' ]), 0 ) : 0 ;
2003-02-28 01:13:08 +00:00
$sort_key = ( ! empty ( $_REQUEST [ 'sk' ])) ? htmlspecialchars ( $_REQUEST [ 'sk' ]) : 't' ;
$sort_dir = ( ! empty ( $_REQUEST [ 'sd' ])) ? htmlspecialchars ( $_REQUEST [ 'sd' ]) : 'a' ;
2003-02-26 00:37:43 +00:00
// Do we have a topic or post id?
2002-10-31 13:47:00 +00:00
if ( empty ( $topic_id ) && empty ( $post_id ))
2001-08-09 22:21:55 +00:00
{
2003-02-26 00:37:43 +00:00
trigger_error ( 'NO_TOPIC' );
2001-08-09 22:21:55 +00:00
}
2003-02-26 00:37:43 +00:00
2002-11-01 21:35:41 +00:00
// Start session management
$user -> start ();
2003-01-22 16:46:44 +00:00
2003-03-13 00:40:28 +00:00
// Configure style, language, etc.
$user -> setup ( false , $forum_style );
$auth -> acl ( $user -> data );
2003-01-22 16:46:44 +00:00
2002-10-31 13:41:28 +00:00
// Find topic id if user requested a newer or older topic
2002-10-09 19:50:48 +00:00
if ( isset ( $_GET [ 'view' ]) && empty ( $post_id ))
2001-05-16 00:49:06 +00:00
{
2003-01-08 22:23:51 +00:00
if ( $_GET [ 'view' ] == 'newest' )
2001-09-26 22:12:38 +00:00
{
2002-11-19 18:55:23 +00:00
if ( $user -> session_id )
2001-09-26 22:12:38 +00:00
{
2002-11-19 18:55:23 +00:00
$sql = " SELECT p.post_id
FROM " . POSTS_TABLE . " p , " . SESSIONS_TABLE . " s , " . USERS_TABLE . " u
WHERE s . session_id = '$user->session_id'
2003-02-26 00:37:43 +00:00
AND u . user_id = s . session_user_id
AND p . topic_id = $topic_id
2003-03-25 00:05:28 +00:00
" . (( $auth->acl_get ('m_approve', $forum_id )) ? '' : 'AND p.post_approved = 1') . "
2002-11-19 18:55:23 +00:00
AND p . post_time >= u . user_lastvisit
2003-01-22 16:46:44 +00:00
ORDER BY p . post_time ASC " ;
$result = $db -> sql_query_limit ( $sql , 1 );
2002-11-19 18:55:23 +00:00
if ( ! ( $row = $db -> sql_fetchrow ( $result )))
2001-09-26 22:12:38 +00:00
{
2002-11-19 18:55:23 +00:00
trigger_error ( 'No_new_posts_last_visit' );
2001-09-26 22:12:38 +00:00
}
2002-11-19 18:55:23 +00:00
2003-02-26 00:37:43 +00:00
redirect ( " viewtopic. $phpEx $SID &p= " . $row [ 'post_id' ] . " # " . $row [ 'post_id' ]);
2001-09-26 22:12:38 +00:00
}
2002-03-31 00:06:34 +00:00
2003-03-06 01:08:00 +00:00
redirect ( " index. $phpEx $SID " );
2001-09-26 22:12:38 +00:00
}
2002-10-31 13:47:00 +00:00
else if ( $_GET [ 'view' ] == 'next' || $_GET [ 'view' ] == 'previous' )
2001-05-16 00:49:06 +00:00
{
2002-11-18 21:04:45 +00:00
$sql_condition = ( $_GET [ 'view' ] == 'next' ) ? '>' : '<' ;
$sql_ordering = ( $_GET [ 'view' ] == 'next' ) ? 'ASC' : 'DESC' ;
2001-05-16 00:56:59 +00:00
2002-03-20 15:04:21 +00:00
$sql = " SELECT t.topic_id
2002-08-17 22:08:34 +00:00
FROM " . TOPICS_TABLE . " t , " . TOPICS_TABLE . " t2
2002-03-20 15:04:21 +00:00
WHERE t2 . topic_id = $topic_id
AND t . forum_id = t2 . forum_id
2002-08-17 22:08:34 +00:00
AND t . topic_last_post_time $sql_condition t2 . topic_last_post_time
2003-01-22 16:46:44 +00:00
ORDER BY t . topic_last_post_time $sql_ordering " ;
$result = $db -> sql_query_limit ( $sql , 1 );
2001-08-02 08:36:38 +00:00
2002-10-31 13:47:00 +00:00
if ( ! ( $row = $db -> sql_fetchrow ( $result )))
2001-07-05 17:39:38 +00:00
{
2003-02-26 00:37:43 +00:00
$message = ( $_GET [ 'view' ] == 'next' ) ? 'NO_NEWER_TOPICS' : 'NO_OLDER_TOPICS' ;
2002-11-01 12:23:08 +00:00
trigger_error ( $message );
2001-07-05 17:39:38 +00:00
}
else
{
2002-03-20 15:04:21 +00:00
$topic_id = $row [ 'topic_id' ];
2001-07-05 17:39:38 +00:00
}
2001-05-16 00:49:06 +00:00
}
}
2001-07-05 17:39:38 +00:00
2003-01-22 16:46:44 +00:00
2002-11-19 18:55:23 +00:00
// Look at this query ... perhaps a re-think? Perhaps store topic ids rather
// than last/first post ids and have a redirect at the top of this page
// for latest post, newest post for a given topic_id?
2001-07-05 17:39:38 +00:00
// This rather complex gaggle of code handles querying for topics but
// also allows for direct linking to a post (and the calculation of which
// page the post is on and the correct display of viewtopic)
2002-11-01 12:23:08 +00:00
$join_sql_table = ( ! $post_id ) ? '' : ', ' . POSTS_TABLE . ' p, ' . POSTS_TABLE . ' p2 ' ;
2003-03-13 00:40:28 +00:00
if ( ! $post_id )
{
$join_sql = " t.topic_id = $topic_id " ;
}
else
{
2003-03-25 00:05:28 +00:00
if ( $auth -> acl_get ( 'm_approve' , $forum_id ))
2003-03-13 00:40:28 +00:00
{
$join_sql = ( ! $post_id ) ? " t.topic_id = $topic_id " : " p.post_id = $post_id AND t.topic_id = p.topic_id AND p2.topic_id = p.topic_id AND p2.post_id <= $post_id " ;
}
else
{
$join_sql = ( ! $post_id ) ? " t.topic_id = $topic_id " : " p.post_id = $post_id AND p.post_approved = 1 AND t.topic_id = p.topic_id AND p2.topic_id = p.topic_id AND p2.post_approved = 1 AND p2.post_id <= $post_id " ;
}
}
2002-11-05 04:50:55 +00:00
$extra_fields = ( ! $post_id ) ? '' : " , COUNT(p2.post_id) AS prev_posts " ;
2002-11-19 18:55:23 +00:00
$order_sql = ( ! $post_id ) ? '' : " GROUP BY p.post_id, t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, t.topic_type, f.forum_name, f.forum_desc, f.forum_parents, f.parent_id, f.left_id, f.right_id, f.forum_status, f.forum_id, f.forum_style ORDER BY p.post_id ASC " ;
2001-05-27 22:08:47 +00:00
2002-11-05 04:50:55 +00:00
if ( $user -> data [ 'user_id' ] != ANONYMOUS )
{
switch ( SQL_LAYER )
{
case 'oracle' :
2003-02-27 15:58:07 +00:00
// TODO
break ;
2002-11-05 04:50:55 +00:00
default :
$extra_fields .= ', tw.notify_status' ;
2003-02-26 00:37:43 +00:00
$join_sql_table .= ' LEFT JOIN ' . TOPICS_WATCH_TABLE . ' tw ON tw.user_id = ' . $user -> data [ 'user_id' ] . '
AND t . topic_id = tw . topic_id ' ;
2002-11-05 04:50:55 +00:00
}
}
2003-02-27 15:58:07 +00:00
// Join to forum table on topic forum_id unless topic forum_id is zero
// whereupon we join on the forum_id passed as a parameter ... this
// is done so navigation, forum name, etc. remain consistent with where
// user clicked to view a global topic
2002-11-19 18:55:23 +00:00
$sql = " SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, t.topic_type, t.poll_start, t.poll_length, t.poll_title, f.forum_name, f.forum_desc, f.forum_parents, f.parent_id, f.left_id, f.right_id, f.forum_status, f.forum_id, f.forum_style " . $extra_fields . "
2002-08-15 15:45:22 +00:00
FROM " . TOPICS_TABLE . " t , " . FORUMS_TABLE . " f " . $join_sql_table . "
2001-10-16 13:10:09 +00:00
WHERE $join_sql
2003-02-27 15:58:07 +00:00
AND ( f . forum_id = t . forum_id
OR ( t . forum_id = 0 AND
f . forum_id = $forum_id )
)
2001-10-16 13:10:09 +00:00
$order_sql " ;
2002-07-14 14:45:26 +00:00
$result = $db -> sql_query ( $sql );
2001-05-27 22:08:47 +00:00
2003-01-22 20:16:18 +00:00
if ( ! $topic_data = $db -> sql_fetchrow ( $result ))
2001-03-04 04:17:02 +00:00
{
2003-02-26 00:37:43 +00:00
trigger_error ( 'NO_TOPIC' );
2001-03-04 04:17:02 +00:00
}
2003-01-22 20:16:18 +00:00
extract ( $topic_data );
2003-02-27 14:27:21 +00:00
2002-11-19 18:55:23 +00:00
2001-05-30 20:21:42 +00:00
// Start auth check
2003-03-25 00:05:28 +00:00
if ( ! $auth -> acl_get ( 'f_read' , $forum_id ))
2001-05-30 20:21:42 +00:00
{
2003-03-17 00:53:38 +00:00
if ( $user -> data [ 'user_id' ] != ANONYMOUS )
2002-02-11 02:16:28 +00:00
{
2003-03-17 00:53:38 +00:00
trigger_error ( $user -> lang [ 'SORRY_AUTH_READ' ]);
2002-02-11 02:16:28 +00:00
}
2003-03-17 00:53:38 +00:00
login_box ( preg_replace ( '#.*?([a-z]+?\.' . $phpEx . '.*?)$#i' , '\1' , htmlspecialchars ( $_SERVER [ 'REQUEST_URI' ])), '' , $user -> lang [ 'LOGIN_VIEWFORUM' ]);
2001-05-30 20:21:42 +00:00
}
2002-11-19 18:55:23 +00:00
2003-02-26 00:37:43 +00:00
// What is start equal to?
2002-10-31 13:41:28 +00:00
if ( ! empty ( $post_id ))
2002-02-11 02:16:28 +00:00
{
2002-10-30 00:57:27 +00:00
$start = floor (( $prev_posts - 1 ) / $config [ 'posts_per_page' ]) * $config [ 'posts_per_page' ];
2002-02-11 02:16:28 +00:00
}
2003-02-26 00:37:43 +00:00
// Are we watching this topic?
2002-07-14 14:45:26 +00:00
$s_watching_topic = '' ;
$s_watching_topic_img = '' ;
2002-11-05 04:50:55 +00:00
watch_topic_forum ( 'topic' , $s_watching_topic , $s_watching_topic_img , $user -> data [ 'user_id' ], $topic_id , $notify_status );
2002-07-14 14:45:26 +00:00
2003-01-08 22:23:51 +00:00
2002-07-14 14:45:26 +00:00
// Post ordering options
2003-02-26 00:37:43 +00:00
$limit_days = array ( 0 => $user -> lang [ 'ALL_POSTS' ], 1 => $user -> lang [ '1_DAY' ], 7 => $user -> lang [ '7_DAYS' ], 14 => $user -> lang [ '2_WEEKS' ], 30 => $user -> lang [ '1_MONTH' ], 90 => $user -> lang [ '3_MONTHS' ], 180 => $user -> lang [ '6_MONTHS' ], 364 => $user -> lang [ '1_YEAR' ]);
2003-01-08 22:23:51 +00:00
$sort_by_text = array ( 'a' => $user -> lang [ 'AUTHOR' ], 't' => $user -> lang [ 'POST_TIME' ], 's' => $user -> lang [ 'SUBJECT' ]);
2003-02-27 03:41:34 +00:00
$sort_by_sql = array ( 'a' => 'u.username' , 't' => 'p.post_id' , 's' => 'p.post_subject' );
2003-02-26 00:37:43 +00:00
2003-02-27 14:27:21 +00:00
$s_limit_days = $s_sort_key = $s_sort_dir = '' ;
gen_sort_selects ( $limit_days , $sort_by_text , $sort_days , $sort_key , $sort_dir , $s_limit_days , $s_sort_key , $s_sort_dir );
2001-08-14 00:29:39 +00:00
2003-02-27 14:27:21 +00:00
// Obtain correct post count and ordering SQL if user has
// requested anything different
2003-02-27 03:41:34 +00:00
if ( $sort_days )
2002-07-14 14:45:26 +00:00
{
2003-02-27 03:41:34 +00:00
$min_post_time = time () - ( $sort_days * 86400 );
$sql = ' SELECT COUNT ( post_id ) AS num_posts
FROM ' . POSTS_TABLE . "
WHERE topic_id = $topic_id
AND post_time >= $min_post_time
2003-03-25 00:05:28 +00:00
" . (( $auth->acl_get ('m_approve', $forum_id )) ? '' : 'AND p.post_approved = 1');
2003-02-27 03:41:34 +00:00
$result = $db -> sql_query ( $sql );
$start = 0 ;
$total_posts = ( $row = $db -> sql_fetchrow ( $result )) ? $row [ 'num_posts' ] : 0 ;
$limit_posts_time = " AND p.post_time >= $min_post_time " ;
2001-08-14 00:29:39 +00:00
}
2003-02-27 15:58:07 +00:00
else
{
$total_posts = $topic_replies + 1 ;
$limit_posts_time = '' ;
}
2003-02-27 03:41:34 +00:00
2003-02-27 14:27:21 +00:00
// Select the sort order
$sort_order = $sort_by_sql [ $sort_key ] . ' ' . (( $sort_dir == 'd' ) ? 'DESC' : 'ASC' );
2003-01-08 22:23:51 +00:00
2003-02-26 00:37:43 +00:00
// Cache this? ... it is after all doing a simple data grab
2003-03-05 00:50:03 +00:00
$sql = " SELECT *
FROM " . RANKS_TABLE . "
ORDER BY rank_special , rank_min DESC " ;
2003-02-26 00:37:43 +00:00
$result = $db -> sql_query ( $sql , 120 );
2002-03-19 00:43:19 +00:00
$ranksrow = array ();
2002-10-31 13:41:28 +00:00
while ( $row = $db -> sql_fetchrow ( $result ))
2002-03-19 00:43:19 +00:00
{
$ranksrow [] = $row ;
}
$db -> sql_freeresult ( $result );
2001-03-04 04:17:02 +00:00
2002-07-14 14:45:26 +00:00
2003-01-22 16:46:44 +00:00
// Grab icons
$icons = array ();
obtain_icons ( $icons );
2002-07-14 14:45:26 +00:00
2002-11-19 18:55:23 +00:00
// Was a highlight request part of the URI?
2002-11-21 22:46:12 +00:00
$highlight_match = $highlight = '' ;
2003-02-27 14:27:21 +00:00
if ( isset ( $_GET [ 'hilit' ]))
2002-01-09 23:35:41 +00:00
{
// Split words and phrases
2003-02-27 14:27:21 +00:00
$words = explode ( ' ' , trim ( htmlspecialchars ( urldecode ( $_GET [ 'hilit' ]))));
2002-01-09 23:35:41 +00:00
2002-10-31 13:41:28 +00:00
foreach ( $words as $word )
2002-01-09 23:35:41 +00:00
{
2002-10-31 13:41:28 +00:00
if ( trim ( $word ) != '' )
2002-01-09 23:35:41 +00:00
{
2003-03-08 22:10:24 +00:00
$highlight_match .= (( $highlight_match != '' ) ? '|' : '' ) . str_replace ( '*' , '\w*?' , preg_quote ( $word , '#' ));
2002-01-09 23:35:41 +00:00
}
}
2002-10-31 13:41:28 +00:00
unset ( $words );
2002-11-21 22:46:12 +00:00
2003-02-27 14:27:21 +00:00
$highlight = urlencode ( $_GET [ 'hilit' ]);
2002-01-09 23:35:41 +00:00
}
2003-01-22 16:46:44 +00:00
2003-02-26 00:37:43 +00:00
// Forum rules listing
2002-07-14 14:45:26 +00:00
$s_forum_rules = '' ;
2003-02-26 00:37:43 +00:00
gen_forum_rules ( 'topic' , $forum_id );
// Quick mod tools
2002-07-17 14:56:12 +00:00
$topic_mod = '' ;
2003-03-25 00:05:28 +00:00
$topic_mod .= ( $auth -> acl_get ( 'm_lock' , $forum_id )) ? (( intval ( $topic_status ) == ITEM_UNLOCKED ) ? '<option value="lock">' . $user -> lang [ 'LOCK_TOPIC' ] . '</option>' : '<option value="unlock">' . $user -> lang [ 'UNLOCK_TOPIC' ] . '</option>' ) : '' ;
$topic_mod .= ( $auth -> acl_get ( 'm_delete' , $forum_id )) ? '<option value="delete">' . $user -> lang [ 'DELETE_TOPIC' ] . '</option>' : '' ;
$topic_mod .= ( $auth -> acl_get ( 'm_move' , $forum_id )) ? '<option value="move">' . $user -> lang [ 'MOVE_TOPIC' ] . '</option>' : '' ;
$topic_mod .= ( $auth -> acl_get ( 'm_split' , $forum_id )) ? '<option value="split">' . $user -> lang [ 'SPLIT_TOPIC' ] . '</option>' : '' ;
$topic_mod .= ( $auth -> acl_get ( 'm_merge' , $forum_id )) ? '<option value="merge">' . $user -> lang [ 'MERGE_TOPIC' ] . '</option>' : '' ;
$topic_mod .= (( $topic_type != POST_ANNOUNCE ) && $auth -> acl_get ( 'f_announce' , $forum_id )) ? '<option value="set_announce">' . $user -> lang [ 'CHANGE_TOPIC_TYPE' ] . $user -> lang [ 'POST_ANNOUNCEMENT' ] . '</option>' : '' ;
$topic_mod .= (( $topic_type != POST_STICKY ) && $auth -> acl_get ( 'f_sticky' , 'a_' , $forum_id )) ? '<option value="set_sticky">' . $user -> lang [ 'CHANGE_TOPIC_TYPE' ] . $user -> lang [ 'POST_STICKY' ] . '</option>' : '' ;
$topic_mod .= (( $topic_type != POST_NORMAL ) && $auth -> acl_get ( 'm_' , $forum_id )) ? '<option value="set_normal">' . $user -> lang [ 'CHANGE_TOPIC_TYPE' ] . $user -> lang [ 'POST_NORMAL' ] . '</option>' : '' ;
2002-07-14 14:45:26 +00:00
2003-02-26 00:37:43 +00:00
2002-07-14 14:45:26 +00:00
// If we've got a hightlight set pass it on to pagination.
2003-02-27 14:27:21 +00:00
$pagination_url = " viewtopic. $phpEx $SID &t= $topic_id &st= $sort_days &sk= $sort_key &sd= $sort_dir " . (( $highlight_match ) ? " &hilit= $highlight " : '' );
2003-02-27 03:41:34 +00:00
$pagination = generate_pagination ( $pagination_url , $total_posts , $config [ 'posts_per_page' ], $start );
2002-07-14 14:45:26 +00:00
2003-02-26 00:37:43 +00:00
// Post, reply and other URL generation for templating vars
2002-10-28 00:08:18 +00:00
$new_topic_url = 'posting.' . $phpEx . $SID . '&mode=post&f=' . $forum_id ;
2002-07-14 14:45:26 +00:00
$reply_topic_url = 'posting.' . $phpEx . $SID . '&mode=reply&f=' . $forum_id . '&t=' . $topic_id ;
$view_forum_url = 'viewforum.' . $phpEx . $SID . '&f=' . $forum_id ;
$view_prev_topic_url = 'viewtopic.' . $phpEx . $SID . '&f=' . $forum_id . '&t=' . $topic_id . '&view=previous' ;
$view_next_topic_url = 'viewtopic.' . $phpEx . $SID . '&f=' . $forum_id . '&t=' . $topic_id . '&view=next' ;
2001-11-26 12:09:37 +00:00
2003-02-26 00:37:43 +00:00
// Post/reply images
$reply_img = ( $forum_status == ITEM_LOCKED || $topic_status == ITEM_LOCKED ) ? $user -> img ( 'reply_locked' , $user -> lang [ 'TOPIC_LOCKED' ]) : $user -> img ( 'reply_new' , $user -> lang [ 'REPLY_TO_TOPIC' ]);
$post_img = ( $forum_status == ITEM_LOCKED ) ? $user -> img ( 'post_locked' , $user -> lang [ 'FORUM_LOCKED' ]) : $user -> img ( 'post_new' , $user -> lang [ 'POST_NEW_TOPIC' ]);
2003-01-22 16:46:44 +00:00
2002-01-12 17:00:32 +00:00
// Set a cookie for this topic
2003-02-26 00:37:43 +00:00
/* if ( $user -> data [ 'user_id' ] != ANONYMOUS )
2001-12-05 00:20:56 +00:00
{
2002-11-01 12:23:08 +00:00
$mark_topics = ( isset ( $_COOKIE [ $config [ 'cookie_name' ] . '_t' ])) ? unserialize ( stripslashes ( $_COOKIE [ $config [ 'cookie_name' ] . '_t' ])) : array ();
2002-01-12 17:00:32 +00:00
2002-08-22 13:58:35 +00:00
$mark_topics [ $forum_id ][ $topic_id ] = 0 ;
2002-10-30 00:57:27 +00:00
setcookie ( $config [ 'cookie_name' ] . '_t' , serialize ( $mark_topics ), 0 , $config [ 'cookie_path' ], $config [ 'cookie_domain' ], $config [ 'cookie_secure' ]);
2003-02-26 00:37:43 +00:00
} */
2003-01-21 15:58:32 +00:00
// Grab censored words
$censors = array ();
obtain_word_list ( $censors );
2002-01-12 17:00:32 +00:00
2002-10-31 13:41:28 +00:00
// Replace naughty words in title
2003-01-21 15:58:32 +00:00
if ( sizeof ( $censors ))
2002-01-12 17:00:32 +00:00
{
2003-01-21 15:58:32 +00:00
$topic_title = preg_replace ( $censors [ 'match' ], $censors [ 'replace' ], $topic_title );
2002-01-12 17:00:32 +00:00
}
2003-01-21 15:58:32 +00:00
2003-01-22 20:16:18 +00:00
// Navigation links
generate_forum_nav ( $topic_data );
2003-01-22 16:46:44 +00:00
2002-11-19 18:55:23 +00:00
// Moderators
$forum_moderators = array ();
get_moderators ( $forum_moderators , $forum_id );
2003-01-08 22:23:51 +00:00
2003-01-21 15:58:32 +00:00
// This is only used for print view so ...
2003-02-26 00:37:43 +00:00
$server_path = (( $config [ 'cookie_secure' ]) ? 'https://' : 'http://' ) . trim ( $config [ 'server_name' ]) . (( $config [ 'server_port' ] <> 80 ) ? ':' . trim ( $config [ 'server_port' ]) . '/' : '/' ) . trim ( $config [ 'script_path' ]) . '/' ;
2003-01-21 15:58:32 +00:00
2002-01-12 17:00:32 +00:00
// Send vars to template
2001-05-27 22:08:47 +00:00
$template -> assign_vars ( array (
2002-10-28 00:08:18 +00:00
'FORUM_ID' => $forum_id ,
'FORUM_NAME' => $forum_name ,
2002-11-19 18:55:23 +00:00
'FORUM_DESC' => strip_tags ( $forum_desc ),
2002-10-28 00:08:18 +00:00
'TOPIC_ID' => $topic_id ,
'TOPIC_TITLE' => $topic_title ,
2003-03-20 01:26:47 +00:00
'PAGINATION' => ( isset ( $_GET [ 'view' ]) && $_GET [ 'view' ] == 'print' ) ? '' : $pagination ,
'PAGE_NUMBER' => ( isset ( $_GET [ 'view' ]) && $_GET [ 'view' ] == 'print' ) ? '' : on_page ( $total_posts , $config [ 'posts_per_page' ], $start ),
2003-03-25 00:05:28 +00:00
'TOTAL_POSTS' => ( $total_posts == 1 ) ? $user -> lang [ 'VIEW_TOPIC_POST' ] : sprintf ( $user -> lang [ 'VIEW_TOPIC_POSTS' ], $total_posts ),
'MCP' => ( $auth -> acl_get ( 'm_' , $forum_id )) ? sprintf ( $user -> lang [ 'MCP' ], " <a href= \" mcp. $phpEx ?sid= " . $user -> session_id . " &t= $topic_id &start= $start &sort_days= $sort_days &sort_key= $sort_key &sort_dir= $sort_dir &posts_per_page= " . $config [ 'posts_per_page' ] . '">' , '</a>' ) : '' ,
2003-01-30 15:54:27 +00:00
'MODERATORS' => ( sizeof ( $forum_moderators [ $forum_id ])) ? implode ( ', ' , $forum_moderators [ $forum_id ]) : $user -> lang [ 'NONE' ],
2002-10-28 00:08:18 +00:00
'POST_IMG' => $post_img ,
2002-03-31 00:06:34 +00:00
'REPLY_IMG' => $reply_img ,
2002-03-22 23:17:06 +00:00
2003-03-13 00:40:28 +00:00
'REPORTED_IMG' => $user -> img ( 'item_reported' , 'POST_BEEN_REPORTED' ),
'UNAPPROVED_IMG' => $user -> img ( 'item_unapproved' , 'POST_NOT_BEEN_APPROVED' ),
2002-10-28 00:08:18 +00:00
'S_TOPIC_LINK' => 't' ,
2003-02-26 00:37:43 +00:00
'S_SELECT_SORT_DIR' => $s_sort_dir ,
'S_SELECT_SORT_KEY' => $s_sort_key ,
'S_SELECT_SORT_DAYS' => $s_limit_days ,
2002-10-28 00:08:18 +00:00
'S_TOPIC_ACTION' => " viewtopic. $phpEx $SID &t= " . $topic_id . " &start= $start " ,
2003-02-26 00:37:43 +00:00
'S_TOPIC_MOD' => ( $topic_mod != '' ) ? '<select name="mode">' . $topic_mod . '</select>' : '' ,
2003-02-06 00:24:04 +00:00
'S_MOD_ACTION' => " mcp. $phpEx ?sid= " . $user -> session_id . " &t= $topic_id &quickmod=1 " ,
2003-03-06 01:08:00 +00:00
2003-02-28 14:35:35 +00:00
'S_WATCH_TOPIC' => $s_watching_topic ,
2003-03-25 00:05:28 +00:00
'S_SHOW_SEARCHBOX' => ( $auth -> acl_get ( 'f_search' , 'a_' , $forum_id )) ? true : false ,
2003-02-28 14:35:35 +00:00
'S_SEARCHBOX_ACTION' => " search. $phpEx $SID &f= $forum_id " ,
2002-10-28 00:08:18 +00:00
2002-11-20 23:07:01 +00:00
'U_TOPIC' => $server_path . 'viewtopic.' . $phpEx . '?t=' . $topic_id ,
'U_FORUM' => $server_path ,
2003-01-21 15:58:32 +00:00
2003-02-27 03:41:34 +00:00
'U_VIEW_TOPIC' => " viewtopic. $phpEx $SID &t= $topic_id &start= $start &sort_days= $sort_days &sort_key= $sort_key &sort_dir= $sort_dir &highlight= $highlight " ,
2002-10-28 00:08:18 +00:00
'U_VIEW_FORUM' => $view_forum_url ,
'U_VIEW_OLDER_TOPIC' => $view_prev_topic_url ,
'U_VIEW_NEWER_TOPIC' => $view_next_topic_url ,
2003-02-27 03:41:34 +00:00
'U_PRINT_TOPIC' => " viewtopic. $phpEx $SID &t= $topic_id &start= $start &sort_days= $sort_days &sort_key= $sort_key &sort_dir= $sort_dir &highlight= $highlight &view=print " ,
2002-10-28 00:08:18 +00:00
'U_POST_NEW_TOPIC' => $new_topic_url ,
'U_POST_REPLY_TOPIC' => $reply_topic_url )
2001-07-06 00:03:51 +00:00
);
2001-05-03 22:10:23 +00:00
2003-01-21 15:58:32 +00:00
2002-08-15 15:45:22 +00:00
// Does this topic contain a poll?
2002-10-30 00:57:27 +00:00
if ( ! empty ( $poll_start ))
2001-09-06 00:29:07 +00:00
{
2002-10-30 00:57:27 +00:00
$sql = " SELECT *
FROM " . POLL_OPTIONS_TABLE . "
WHERE topic_id = $topic_id
ORDER BY poll_option_id " ;
2002-07-14 14:45:26 +00:00
$result = $db -> sql_query ( $sql );
2001-09-06 00:29:07 +00:00
2002-11-01 12:23:08 +00:00
while ( $row = $db -> sql_fetchrow ( $result ))
2001-09-06 00:29:07 +00:00
{
2002-10-30 00:57:27 +00:00
$poll_info [] = $row ;
}
$db -> sql_freeresult ( $result );
2002-07-14 14:45:26 +00:00
2002-10-30 00:57:27 +00:00
$sql = " SELECT poll_option_id
FROM " . POLL_VOTES_TABLE . "
WHERE topic_id = $topic_id
AND vote_user_id = " . $user->data ['user_id'];
$result = $db -> sql_query ( $sql );
2001-09-06 00:29:07 +00:00
2002-10-30 00:57:27 +00:00
$voted_id = ( $row = $db -> sql_fetchrow ( $result )) ? $row [ 'poll_option_id' ] : false ;
$db -> sql_freeresult ( $result );
2002-02-12 22:57:03 +00:00
2003-03-25 00:05:28 +00:00
$display_results = ( $voted_id || ( $poll_length != 0 && $poll_start + $poll_length < time ()) || $_GET [ 'vote' ] == 'viewresult' || ! $auth -> acl_get ( 'f_vote' , 'a_' , $forum_id ) || $topic_status == ITEM_LOCKED || $forum_status == ITEM_LOCKED ) ? true : false ;
2001-09-06 00:29:07 +00:00
2002-10-30 00:57:27 +00:00
$poll_total = 0 ;
foreach ( $poll_info as $poll_option )
{
$poll_total += $poll_option [ 'poll_option_total' ];
}
2002-07-14 14:45:26 +00:00
2002-10-30 00:57:27 +00:00
foreach ( $poll_info as $poll_option )
{
2003-01-21 15:58:32 +00:00
$poll_option [ 'poll_option_text' ] = ( sizeof ( $censors )) ? preg_replace ( $censors [ 'match' ], $censors [ 'replace' ], $poll_option [ 'poll_option_text' ]) : $poll_option [ 'poll_option_text' ];
2002-11-18 21:04:45 +00:00
$option_pct = ( $poll_total > 0 ) ? $poll_option [ 'poll_option_total' ] / $poll_total : 0 ;
2002-10-30 00:57:27 +00:00
$option_pct_txt = sprintf ( " %.1d%% " , ( $option_pct * 100 ));
$template -> assign_block_vars ( 'poll_option' , array (
'POLL_OPTION_ID' => $poll_option [ 'poll_option_id' ],
'POLL_OPTION_CAPTION' => $poll_option [ 'poll_option_text' ],
'POLL_OPTION_RESULT' => $poll_option [ 'poll_option_total' ],
'POLL_OPTION_PERCENT' => $vote_percent ,
'POLL_OPTION_IMG' => $user -> img ( 'poll_center' , $option_pct_txt , round ( $option_pct * $user -> theme [ 'poll_length' ]), true ))
);
}
2001-09-07 22:56:50 +00:00
2003-01-21 15:58:32 +00:00
$poll_title = ( sizeof ( $censors )) ? preg_replace ( $censors [ 'match' ], $censors [ 'replace' ], $poll_title ) : $poll_title ;
2001-09-06 00:29:07 +00:00
2002-10-30 00:57:27 +00:00
$template -> assign_vars ( array (
'POLL_QUESTION' => $poll_title ,
'TOTAL_VOTES' => $poll_total ,
'POLL_LEFT_CAP_IMG' => $user -> img ( 'poll_left' ),
'POLL_RIGHT_CAP_IMG' => $user -> img ( 'poll_right' ),
2001-09-06 00:29:07 +00:00
2002-10-31 13:41:28 +00:00
'S_HAS_POLL_OPTIONS' => ! $display_results ,
'S_HAS_POLL_DISPLAY' => $display_results ,
2003-01-21 15:58:32 +00:00
'S_POLL_ACTION' => " viewtopic. $phpEx $SID &t= $topic_id &postdays= $post_days &postorder= $poster_order " ,
2002-02-12 22:57:03 +00:00
2002-10-30 00:57:27 +00:00
'L_SUBMIT_VOTE' => $user -> lang [ 'Submit_vote' ],
'L_VIEW_RESULTS' => $user -> lang [ 'View_results' ],
'L_TOTAL_VOTES' => $user -> lang [ 'Total_votes' ],
2001-09-07 22:56:50 +00:00
2003-02-27 03:41:34 +00:00
'U_VIEW_RESULTS' => " viewtopic. $phpEx $SID &t= $topic_id &sort_days= $sort_days &sort_key= $sort_key &sort_dir= $sort_dir &vote=viewresult " )
2002-10-30 00:57:27 +00:00
);
2001-09-06 00:29:07 +00:00
}
2003-01-08 22:23:51 +00:00
2002-07-14 14:45:26 +00:00
// Container for user details, only process once
2003-01-08 22:23:51 +00:00
$user_cache = $attach_list = array ();
2003-02-26 00:37:43 +00:00
$force_encoding = '' ;
2002-11-01 12:23:08 +00:00
$i = 0 ;
2001-05-24 20:10:34 +00:00
2002-07-17 20:57:31 +00:00
// Go ahead and pull all data for this topic
2003-02-26 00:37:43 +00:00
$sql = " SELECT u.username, u.user_id, u.user_posts, u.user_from, u.user_karma, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_regdate, u.user_msnm, u.user_viewemail, u.user_rank, u.user_sig, u.user_avatar, u.user_avatar_type, p.*
FROM " . POSTS_TABLE . " p , " . USERS_TABLE . " u
2002-08-15 15:45:22 +00:00
WHERE p . topic_id = $topic_id
2003-03-25 00:05:28 +00:00
" . (( $auth->acl_get ('m_approve', $forum_id )) ? '' : 'AND p.post_approved = 1') . "
2002-08-17 22:08:34 +00:00
$limit_posts_time
2002-07-17 20:57:31 +00:00
AND u . user_id = p . poster_id
2003-01-22 16:46:44 +00:00
ORDER BY $sort_order " ;
2003-03-20 01:26:47 +00:00
$result = ( isset ( $_GET [ 'view' ]) && $_GET [ 'view' ] == 'print' ) ? $db -> sql_query ( $sql ) : $db -> sql_query_limit ( $sql , intval ( $config [ 'posts_per_page' ]), $start );
2003-02-27 03:41:34 +00:00
2002-10-31 13:41:28 +00:00
if ( $row = $db -> sql_fetchrow ( $result ))
2001-03-04 04:17:02 +00:00
{
2002-07-17 20:57:31 +00:00
do
{
$poster_id = $row [ 'user_id' ];
2003-02-26 00:37:43 +00:00
$poster = ( $poster_id == ANONYMOUS ) ? $user -> lang [ 'GUEST' ] : $row [ 'username' ];
2003-01-08 22:23:51 +00:00
2003-02-26 00:37:43 +00:00
// Three situations can prevent a post being display:
// i) The posters karma is below the minimum of the user
// ii) The poster is on the users ignore list
// iii) The post was made in a codepage different from the users
2003-01-08 22:23:51 +00:00
if ( $row [ 'user_karma' ] < $user -> data [ 'user_min_karma' ] && ( empty ( $_GET [ 'view' ]) || $_GET [ 'view' ] != 'karma' || $post_id != $row [ 'post_id' ]))
{
$template -> assign_block_vars ( 'postrow' , array (
'S_BELOW_MIN_KARMA' => true ,
'S_ROW_COUNT' => $i ++ ,
2001-06-11 00:43:15 +00:00
2003-02-26 00:37:43 +00:00
'L_IGNORE_POST' => sprintf ( $user -> lang [ 'POST_BELOW_KARMA' ], $poster , intval ( $row [ 'user_karma' ]), '<a href="viewtopic.' . $phpEx . $SID . '&p=' . $row [ 'post_id' ] . '&view=karma#' . $row [ 'post_id' ] . '">' , '</a>' ))
2003-01-08 22:23:51 +00:00
);
2001-06-11 00:43:15 +00:00
2003-01-08 22:23:51 +00:00
continue ;
}
2003-02-26 00:37:43 +00:00
else if ( $row [ 'post_encoding' ] != $user -> lang [ 'ENCODING' ])
{
if ( ! empty ( $_GET [ 'view' ]) && $_GET [ 'view' ] == 'encoding' && $post_id == $row [ 'post_id' ])
{
$force_encoding = $row [ 'post_encoding' ];
}
else
{
$template -> assign_block_vars ( 'postrow' , array (
'S_WRONG_ENCODING' => true ,
'S_ROW_COUNT' => $i ++ ,
'L_IGNORE_POST' => sprintf ( $user -> lang [ 'POST_ENCODING' ], $poster , '<a href="viewtopic.' . $phpEx . $SID . '&p=' . $row [ 'post_id' ] . '&view=encoding#' . $row [ 'post_id' ] . '">' , '</a>' ))
);
continue ;
}
}
2003-01-08 22:23:51 +00:00
2003-02-26 00:37:43 +00:00
// Display the post - Cache this
$poster_posts = ( $row [ 'user_id' ] != ANONYMOUS ) ? $user -> lang [ 'POSTS' ] . ': ' . $row [ 'user_posts' ] : '' ;
2003-01-08 22:23:51 +00:00
2001-06-11 00:43:15 +00:00
2003-02-26 00:37:43 +00:00
// Cache this
$poster_from = ( $row [ 'user_from' ] && $row [ 'user_id' ] != ANONYMOUS ) ? $user -> lang [ 'LOCATION' ] . ': ' . $row [ 'user_from' ] : '' ;
if ( ! isset ( $user_cache [ $poster_id ][ 'joined' ]) && $poster_id != ANONYMOUS )
2002-07-17 20:57:31 +00:00
{
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'joined' ] = ( $row [ 'user_id' ]) ? $user -> lang [ 'JOINED' ] . ': ' . $user -> format_date ( $row [ 'user_regdate' ], $user -> lang [ 'DATE_FORMAT' ]) : '' ;
2002-07-17 20:57:31 +00:00
}
2001-06-11 00:43:15 +00:00
2003-02-26 00:37:43 +00:00
2003-01-08 22:23:51 +00:00
if ( isset ( $user_cache [ $poster_id ][ 'avatar' ]))
2002-07-17 14:56:12 +00:00
{
2002-11-01 12:23:08 +00:00
if ( $row [ 'user_avatar_type' ] && $poster_id && $row [ 'user_allowavatar' ])
2002-07-17 14:56:12 +00:00
{
2002-11-01 12:23:08 +00:00
switch ( $row [ 'user_avatar_type' ])
2002-07-17 20:57:31 +00:00
{
case USER_AVATAR_UPLOAD :
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'avatar' ] = ( $config [ 'allow_avatar_upload' ]) ? '<img src="' . $config [ 'avatar_path' ] . '/' . $row [ 'user_avatar' ] . '" width="' . $row [ 'user_avatar_width' ] . '" height="' . $row [ 'user_avatar_height' ] . '" border="0" alt="" />' : '' ;
2002-07-17 20:57:31 +00:00
break ;
2003-02-27 14:27:21 +00:00
2002-07-17 20:57:31 +00:00
case USER_AVATAR_REMOTE :
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'avatar' ] = ( $config [ 'allow_avatar_remote' ]) ? '<img src="' . $row [ 'user_avatar' ] . '" width="' . $row [ 'user_avatar_width' ] . '" height="' . $row [ 'user_avatar_height' ] . '" border="0" alt="" />' : '' ;
2002-07-17 20:57:31 +00:00
break ;
2003-02-27 14:27:21 +00:00
2002-07-17 20:57:31 +00:00
case USER_AVATAR_GALLERY :
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'avatar' ] = ( $config [ 'allow_avatar_local' ]) ? '<img src="' . $config [ 'avatar_gallery_path' ] . '/' . $row [ 'user_avatar' ] . '" width="' . $row [ 'user_avatar_width' ] . '" height="' . $row [ 'user_avatar_height' ] . '" border="0" alt="" />' : '' ;
2002-07-17 20:57:31 +00:00
break ;
}
}
else
{
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'avatar' ] = '' ;
2002-07-17 14:56:12 +00:00
}
}
2001-06-11 00:43:15 +00:00
2003-01-21 15:58:32 +00:00
2003-03-05 00:50:03 +00:00
// Set poster rank
if ( ! isset ( $user_cache [ $poster_id ][ 'rank_title' ]) && $poster_id != ANONYMOUS )
2001-04-02 14:36:36 +00:00
{
2003-03-05 00:50:03 +00:00
foreach ( $ranksrow as $rank )
2001-04-02 14:36:36 +00:00
{
2003-03-05 00:50:03 +00:00
if ( empty ( $row [ 'user_rank' ]) && $row [ 'user_posts' ] >= $rank [ 'rank_min' ])
2002-07-14 14:45:26 +00:00
{
2003-03-05 00:50:03 +00:00
$user_cache [ $poster_id ][ 'rank_title' ] = $rank [ 'rank_title' ];
$user_cache [ $poster_id ][ 'rank_image' ] = ( ! empty ( $rank [ 'rank_image' ])) ? '<img src="' . $rank [ 'rank_image' ] . '" border="0" alt="' . $user_cache [ $poster_id ][ 'rank_title' ] . '" title="' . $user_cache [ $poster_id ][ 'rank_title' ] . '" /><br />' : '' ;
break ;
2002-07-14 14:45:26 +00:00
}
2003-03-05 00:50:03 +00:00
if ( ! empty ( $rank [ 'rank_special' ]) && $row [ 'user_rank' ] == $rank [ 'rank_id' ])
2002-07-14 14:45:26 +00:00
{
2003-03-05 00:50:03 +00:00
$user_cache [ $poster_id ][ 'rank_title' ] = $rank [ 'rank_title' ];
$user_cache [ $poster_id ][ 'rank_image' ] = ( ! empty ( $rank [ 'rank_image' ])) ? '<img src="' . $rank [ 'rank_image' ] . '" border="0" alt="' . $user_cache [ $poster_id ][ 'rank_title' ] . '" title="' . $user_cache [ $poster_id ][ 'rank_title' ] . '" /><br />' : '' ;
break ;
2002-07-14 14:45:26 +00:00
}
2001-05-13 16:02:30 +00:00
}
2001-04-02 14:36:36 +00:00
}
2003-01-21 15:58:32 +00:00
2002-07-17 20:57:31 +00:00
// Handle anon users posting with usernames
2003-02-26 00:37:43 +00:00
if ( $poster_id == ANONYMOUS && $row [ 'post_username' ] != '' )
2002-07-17 20:57:31 +00:00
{
$poster = $row [ 'post_username' ];
2003-02-26 00:37:43 +00:00
$user_cache [ $poster_id ][ 'rank_title' ] = $user -> lang [ 'GUEST' ];
$user_cache [ $poster_id ][ 'rank_image' ] = '' ;
2002-07-17 20:57:31 +00:00
}
2001-06-11 00:58:08 +00:00
2003-01-21 15:58:32 +00:00
2003-02-26 00:37:43 +00:00
// Cache various user specific data ... so we don't have to recompute
// this each time the same user appears on this page
if ( ! isset ( $user_cache [ $poster_id ][ 'profile' ]) && $poster_id != ANONYMOUS )
2002-08-15 15:45:22 +00:00
{
2003-03-05 00:50:03 +00:00
$temp_url = " memberlist. $phpEx $SID &mode=viewprofile&u= $poster_id " ;
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'profile_img' ] = '<a href="' . $temp_url . '">' . $user -> img ( 'icon_profile' , $user -> lang [ 'READ_PROFILE' ]) . '</a>' ;
$user_cache [ $poster_id ][ 'profile' ] = '<a href="' . $temp_url . '">' . $user -> lang [ 'READ_PROFILE' ] . '</a>' ;
2001-06-11 00:43:15 +00:00
2003-02-26 00:37:43 +00:00
$temp_url = " ucp. $phpEx $SID &mode=message&action=send&u= $poster_id " ;
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'pm_img' ] = '<a href="' . $temp_url . '">' . $user -> img ( 'icon_pm' , $user -> lang [ 'SEND_PRIVATE_MESSAGE' ]) . '</a>' ;
$user_cache [ $poster_id ][ 'pm' ] = '<a href="' . $temp_url . '">' . $user -> lang [ 'SEND_PRIVATE_MESSAGE' ] . '</a>' ;
2001-07-05 17:39:38 +00:00
2003-01-08 22:23:51 +00:00
if ( ! empty ( $row [ 'user_viewemail' ]) || $auth -> acl_gets ( 'm_' , 'a_' , $forum_id ))
2002-07-17 20:57:31 +00:00
{
2002-11-21 15:40:21 +00:00
$email_uri = ( $config [ 'board_email_form' ] && $config [ 'email_enable' ]) ? " ucp. $phpEx $SID &mode=email&u= " . $poster_id : 'mailto:' . $row [ 'user_email' ];
2002-07-17 20:57:31 +00:00
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'email_img' ] = '<a href="' . $email_uri . '">' . $user -> img ( 'icon_email' , $user -> lang [ 'SEND_EMAIL' ]) . '</a>' ;
$user_cache [ $poster_id ][ 'email' ] = '<a href="' . $email_uri . '">' . $user -> lang [ 'SEND_EMAIL' ] . '</a>' ;
2002-07-17 20:57:31 +00:00
}
else
{
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'email_img' ] = '' ;
$user_cache [ $poster_id ][ 'email' ] = '' ;
2002-07-17 20:57:31 +00:00
}
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'www_img' ] = ( $row [ 'user_website' ]) ? '<a href="' . $row [ 'user_website' ] . '" target="_userwww">' . $user -> img ( 'icon_www' , $user -> lang [ 'VISIT_WEBSITE' ]) . '</a>' : '' ;
$user_cache [ $poster_id ][ 'www' ] = ( $row [ 'user_website' ]) ? '<a href="' . $row [ 'user_website' ] . '" target="_userwww">' . $user -> lang [ 'VISIT_WEBSITE' ] . '</a>' : '' ;
2002-07-17 20:57:31 +00:00
2002-11-01 12:23:08 +00:00
if ( ! empty ( $row [ 'user_icq' ]))
2002-07-17 20:57:31 +00:00
{
2003-02-27 14:27:21 +00:00
$user_cache [ $poster_id ][ 'icq_status_img' ] = '<a href="http://wwp.icq.com/' . $row [ 'user_icq' ] . '#pager"><img src="http://web.icq.com/whitepages/online?icq=' . $row [ 'user_icq' ] . '&img=5" width="18" height="18" border="0" /></a>' ;
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'icq_img' ] = '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row [ 'user_icq' ] . '">' . $user -> img ( 'icon_icq' , $user -> lang [ 'ICQ' ]) . '</a>' ;
$user_cache [ $poster_id ][ 'icq' ] = '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row [ 'user_icq' ] . '">' . $user -> lang [ 'ICQ' ] . '</a>' ;
2002-07-17 20:57:31 +00:00
}
else
{
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'icq_status_img' ] = '' ;
$user_cache [ $poster_id ][ 'icq_img' ] = '' ;
$user_cache [ $poster_id ][ 'icq' ] = '' ;
2002-07-17 20:57:31 +00:00
}
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'aim_img' ] = ( $row [ 'user_aim' ]) ? '<a href="aim:goim?screenname=' . $row [ 'user_aim' ] . '&message=Hello+Are+you+there?">' . $user -> img ( 'icon_aim' , $user -> lang [ 'AIM' ]) . '</a>' : '' ;
$user_cache [ $poster_id ][ 'aim' ] = ( $row [ 'user_aim' ]) ? '<a href="aim:goim?screenname=' . $row [ 'user_aim' ] . '&message=Hello+Are+you+there?">' . $user -> lang [ 'AIM' ] . '</a>' : '' ;
2002-07-17 20:57:31 +00:00
2003-03-05 00:50:03 +00:00
$temp_url = " memberlist. $phpEx $SID &mode=viewprofile&u= $poster_id " ;
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'msn_img' ] = ( $row [ 'user_msnm' ]) ? '<a href="' . $temp_url . '">' . $user -> img ( 'icon_msnm' , $user -> lang [ 'MSNM' ]) . '</a>' : '' ;
$user_cache [ $poster_id ][ 'msn' ] = ( $row [ 'user_msnm' ]) ? '<a href="' . $temp_url . '">' . $user -> lang [ 'MSNM' ] . '</a>' : '' ;
2002-07-17 20:57:31 +00:00
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'yim_img' ] = ( $row [ 'user_yim' ]) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row [ 'user_yim' ] . '&.src=pg">' . $user -> img ( 'icon_yim' , $user -> lang [ 'YIM' ]) . '</a>' : '' ;
$user_cache [ $poster_id ][ 'yim' ] = ( $row [ 'user_yim' ]) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row [ 'user_yim' ] . '&.src=pg">' . $user -> lang [ 'YIM' ] . '</a>' : '' ;
2002-07-17 20:57:31 +00:00
2002-11-01 12:23:08 +00:00
if ( $auth -> acl_get ( 'f_search' , $forum_id ))
2002-07-17 20:57:31 +00:00
{
$temp_url = 'search.' . $phpEx . $SID . '&search_author=' . urlencode ( $row [ 'username' ]) . '"&showresults=posts' ;
2003-01-08 22:23:51 +00:00
$search_img = '<a href="' . $temp_url . '">' . $user -> img ( 'icon_search' , $user -> lang [ 'SEARCH_USER_POSTS' ]) . '</a>' ;
$search = '<a href="' . $temp_url . '">' . $user -> lang [ 'SEARCH_USER_POSTS' ] . '</a>' ;
2002-07-17 20:57:31 +00:00
}
else
{
$search_img = '' ;
$search = '' ;
}
2001-11-15 18:38:23 +00:00
}
2002-11-01 12:23:08 +00:00
else if ( ! $poster_id )
2001-11-15 18:38:23 +00:00
{
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'profile_img' ] = '' ;
$user_cache [ $poster_id ][ 'profile' ] = '' ;
$user_cache [ $poster_id ][ 'pm_img' ] = '' ;
$user_cache [ $poster_id ][ 'pm' ] = '' ;
$user_cache [ $poster_id ][ 'email_img' ] = '' ;
$user_cache [ $poster_id ][ 'email' ] = '' ;
$user_cache [ $poster_id ][ 'www_img' ] = '' ;
$user_cache [ $poster_id ][ 'www' ] = '' ;
$user_cache [ $poster_id ][ 'icq_status_img' ] = '' ;
$user_cache [ $poster_id ][ 'icq_img' ] = '' ;
$user_cache [ $poster_id ][ 'icq' ] = '' ;
$user_cache [ $poster_id ][ 'aim_img' ] = '' ;
$user_cache [ $poster_id ][ 'aim' ] = '' ;
$user_cache [ $poster_id ][ 'msn_img' ] = '' ;
$user_cache [ $poster_id ][ 'msn' ] = '' ;
$user_cache [ $poster_id ][ 'search_img' ] = '' ;
$user_cache [ $poster_id ][ 'search' ] = '' ;
2001-11-15 18:38:23 +00:00
}
2003-01-21 15:58:32 +00:00
2002-07-17 20:57:31 +00:00
// Non-user specific images/text
$temp_url = 'posting.' . $phpEx . $SID . '&mode=quote&p=' . $row [ 'post_id' ];
2003-01-08 22:23:51 +00:00
$quote_img = '<a href="' . $temp_url . '">' . $user -> img ( 'icon_quote' , $user -> lang [ 'REPLY_WITH_QUOTE' ]) . '</a>' ;
$quote = '<a href="' . $temp_url . '">' . $user -> lang [ 'REPLY_WITH_QUOTE' ] . '</a>' ;
2001-06-11 00:43:15 +00:00
2003-03-25 00:05:28 +00:00
if (( $user -> data [ 'user_id' ] == $poster_id && $auth -> acl_get ( 'f_edit' , $forum_id )) || $auth -> acl_get ( 'm_edit' , $forum_id ))
2001-07-09 23:31:33 +00:00
{
2002-10-30 18:59:09 +00:00
$temp_url = " posting. $phpEx $SID &mode=edit&f= " . $row [ 'forum_id' ] . " &p= " . $row [ 'post_id' ];
2003-01-08 22:23:51 +00:00
$edit_img = '<a href="' . $temp_url . '">' . $user -> img ( 'icon_edit' , $user -> lang [ 'EDIT_DELETE_POST' ]) . '</a>' ;
$edit = '<a href="' . $temp_url . '">' . $user -> lang [ 'EDIT_DELETE_POST' ] . '</a>' ;
2001-07-09 23:31:33 +00:00
}
else
{
2002-07-17 20:57:31 +00:00
$edit_img = '' ;
$edit = '' ;
2001-07-09 23:31:33 +00:00
}
2001-06-11 00:43:15 +00:00
2003-03-25 00:05:28 +00:00
if ( $auth -> acl_get ( 'm_ip' , $forum_id ))
2002-07-17 14:56:12 +00:00
{
2003-01-20 05:12:38 +00:00
$temp_url = " mcp. $phpEx ?sid= " . $user -> session_id . " &mode=ip&p= " . $row [ 'post_id' ] . " &t= " . $topic_id ;
2003-01-08 22:23:51 +00:00
$ip_img = '<a href="' . $temp_url . '">' . $user -> img ( 'icon_ip' , $user -> lang [ 'VIEW_IP' ]) . '</a>' ;
$ip = '<a href="' . $temp_url . '">' . $user -> lang [ 'VIEW_IP' ] . '</a>' ;
2002-07-17 14:56:12 +00:00
}
else
{
2002-07-17 20:57:31 +00:00
$ip_img = '' ;
$ip = '' ;
2002-07-17 14:56:12 +00:00
}
2001-07-09 23:31:33 +00:00
2003-03-25 00:05:28 +00:00
if (( $user -> data [ 'user_id' ] == $poster_id && $auth -> acl_get ( 'f_delete' , $forum_id ) && $forum_topic_data [ 'topic_last_post_id' ] == $row [ 'post_id' ]) || $auth -> acl_get ( 'm_delete' , $forum_id ))
2001-09-06 00:29:07 +00:00
{
2002-07-17 20:57:31 +00:00
$temp_url = " posting. $phpEx $SID &mode=delete&p= " . $row [ 'post_id' ];
2003-01-08 22:23:51 +00:00
$delpost_img = '<a href="' . $temp_url . '">' . $user -> img ( 'icon_delete' , $user -> lang [ 'DELETE_POST' ]) . '</a>' ;
$delpost = '<a href="' . $temp_url . '">' . $user -> lang [ 'DELETE_POST' ] . '</a>' ;
2002-07-17 20:57:31 +00:00
}
else
{
$delpost_img = '' ;
$delpost = '' ;
2001-07-15 15:45:09 +00:00
}
2002-07-14 14:45:26 +00:00
2003-01-21 15:58:32 +00:00
2003-01-08 22:23:51 +00:00
// Does post have an attachment? If so, add it to the list
if ( $row [ 'post_attach' ])
{
$attach_list [] = $post_id ;
}
2003-01-21 15:58:32 +00:00
2002-07-17 20:57:31 +00:00
// Parse the message and subject
2002-10-31 13:41:28 +00:00
$post_subject = ( $row [ 'post_subject' ] != '' ) ? $row [ 'post_subject' ] : '' ;
2002-07-17 20:57:31 +00:00
$message = $row [ 'post_text' ];
$bbcode_uid = $row [ 'bbcode_uid' ];
2003-01-21 15:58:32 +00:00
2002-07-17 20:57:31 +00:00
// If the board has HTML off but the post has HTML
// on then we process it, else leave it alone
2002-10-31 13:47:00 +00:00
if ( ! $auth -> acl_get ( 'f_html' , $forum_id ))
2002-07-17 20:57:31 +00:00
{
2002-10-31 13:47:00 +00:00
if ( $row [ 'enable_html' ] && $auth -> acl_get ( 'f_bbcode' , $forum_id ))
2002-07-17 20:57:31 +00:00
{
$message = preg_replace ( '#(<)([\/]?.*?)(>)#is' , " < \\ 2> " , $message );
}
}
2001-12-14 02:41:33 +00:00
2003-01-21 15:58:32 +00:00
// Second parse bbcode here
2002-03-31 00:06:34 +00:00
2003-01-22 16:46:44 +00:00
2002-11-01 12:23:08 +00:00
// If we allow users to disable display of emoticons
// we'll need an appropriate check and preg_replace here
2003-01-29 19:03:58 +00:00
$message = ( empty ( $row [ 'enable_smilies' ]) || empty ( $config [ 'allow_smilies' ])) ? preg_replace ( '#<!\-\- s(.*?) \-\-><img src="\{SMILE_PATH\}\/.*? \/><!\-\- s\1 \-\->#' , '\1' , $message ) : str_replace ( '<img src="{SMILE_PATH}' , '<img src="' . $config [ 'smilies_path' ], $message );
2002-11-01 12:23:08 +00:00
2003-01-22 16:46:44 +00:00
2002-07-17 20:57:31 +00:00
// Highlight active words (primarily for search)
2002-11-01 12:23:08 +00:00
if ( $highlight_match )
2002-07-17 20:57:31 +00:00
{
2002-10-31 13:41:28 +00:00
// This was shamelessly 'borrowed' from volker at multiartstudio dot de
// via php.net's annotated manual
2002-11-01 12:23:08 +00:00
$message = str_replace ( '\"' , '"' , substr ( preg_replace ( '#(\>(((?>([^><]+|(?R)))*)\<))#se' , " preg_replace('# \ b( " . $highlight_match . " ) \ b#i', '<span class= \" hilit \" > \\ \\ 1</span>', ' \\ 0') " , '>' . $message . '<' ), 1 , - 1 ));
2002-10-31 13:47:00 +00:00
}
2002-11-01 12:23:08 +00:00
2003-01-22 16:46:44 +00:00
2002-11-01 12:23:08 +00:00
// Replace naughty words such as farty pants
2003-01-21 15:58:32 +00:00
if ( sizeof ( $censors ))
2002-07-17 20:57:31 +00:00
{
2003-01-21 15:58:32 +00:00
$post_subject = preg_replace ( $censors [ 'match' ], $censors [ 'replace' ], $post_subject );
$message = str_replace ( '\"' , '"' , substr ( preg_replace ( '#(\>(((?>([^><]+|(?R)))*)\<))#se' , " preg_replace( \$ censors['match'], \$ censors['replace'], ' \\ 0') " , '>' . $message . '<' ), 1 , - 1 ));
2002-03-31 00:06:34 +00:00
}
2002-07-17 20:57:31 +00:00
2003-01-22 16:46:44 +00:00
2002-07-17 20:57:31 +00:00
$message = nl2br ( $message );
2001-07-15 15:45:09 +00:00
2003-01-22 16:46:44 +00:00
2002-07-17 20:57:31 +00:00
// Editing information
2002-11-01 12:23:08 +00:00
if ( intval ( $row [ 'post_edit_count' ]))
2002-07-17 20:57:31 +00:00
{
2002-11-01 12:23:08 +00:00
$l_edit_time_total = ( intval ( $row [ 'post_edit_count' ]) == 1 ) ? $user -> lang [ 'Edited_time_total' ] : $user -> lang [ 'Edited_times_total' ];
2002-08-15 15:45:22 +00:00
2002-10-08 20:11:59 +00:00
$l_edited_by = '<br /><br />' . sprintf ( $l_edit_time_total , $poster , $user -> format_date ( $row [ 'post_edit_time' ]), $row [ 'post_edit_count' ]);
2002-07-17 20:57:31 +00:00
}
else
{
$l_edited_by = '' ;
}
2001-08-15 16:00:57 +00:00
2003-01-22 16:46:44 +00:00
2002-07-17 20:57:31 +00:00
// Signature
2003-01-08 22:23:51 +00:00
if ( ! isset ( $user_cache [ $poster_id ][ 'sig' ]))
2002-07-17 20:57:31 +00:00
{
2002-11-01 12:23:08 +00:00
$user_sig = ( $row [ 'enable_sig' ] && $row [ 'user_sig' ] != '' && $config [ 'allow_sig' ]) ? $row [ 'user_sig' ] : '' ;
2001-12-20 22:02:38 +00:00
2003-03-25 00:05:28 +00:00
if ( $user_sig != '' && $auth -> acl_get ( 'f_sigs' , $forum_id ))
2002-07-17 20:57:31 +00:00
{
2002-11-01 12:23:08 +00:00
if ( ! $auth -> acl_get ( 'f_html' , $forum_id ) && $user -> data [ 'user_allowhtml' ])
2002-07-17 20:57:31 +00:00
{
$user_sig = preg_replace ( '#(<)([\/]?.*?)(>)#is' , " < \\ 2> " , $user_sig );
}
2001-07-15 15:45:09 +00:00
2003-01-21 15:58:32 +00:00
$user_cache [ $poster_id ][ 'sig' ] = ( empty ( $row [ 'user_allowsmile' ]) || empty ( $config [ 'enable_smilies' ])) ? preg_replace ( '#<!\-\- s(.*?) \-\-><img src="\{SMILE_PATH\}\/.*? \/><!\-\- s\1 \-\->#' , '\1' , $user_cache [ $poster_id ][ 'sig' ]) : str_replace ( '<img src="{SMILE_PATH}' , '<img src="' . $config [ 'smilies_path' ], $user_cache [ $poster_id ][ 'sig' ]);
2002-07-17 14:56:12 +00:00
2003-01-22 16:46:44 +00:00
if ( count ( $censors ))
2002-07-17 20:57:31 +00:00
{
2003-01-22 16:46:44 +00:00
$user_sig = str_replace ( '\"' , '"' , substr ( preg_replace ( '#(\>(((?>([^><]+|(?R)))*)\<))#se' , " preg_replace( \$ censors['match'], \$ censors['replace'], ' \\ 0') " , '>' . $user_sig . '<' ), 1 , - 1 ));
2002-07-17 20:57:31 +00:00
}
2002-07-17 14:56:12 +00:00
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'sig' ] = '<br />_________________<br />' . nl2br ( $user_cache [ $poster_id ][ 'sig' ]);
2002-07-17 14:56:12 +00:00
}
2002-07-17 20:57:31 +00:00
else
2002-07-17 14:56:12 +00:00
{
2003-01-08 22:23:51 +00:00
$user_cache [ $poster_id ][ 'sig' ] = '' ;
2002-07-17 14:56:12 +00:00
}
}
2003-01-22 16:46:44 +00:00
2002-07-17 20:57:31 +00:00
// Define the little post icon
2002-10-31 13:41:28 +00:00
$mini_post_img = ( $row [ 'post_time' ] > $user -> data [ 'user_lastvisit' ] && $row [ 'post_time' ] > $topic_last_read ) ? $user -> img ( 'goto_post_new' , $user -> lang [ 'New_post' ]) : $user -> img ( 'goto_post' , $user -> lang [ 'Post' ]);
2002-07-17 20:57:31 +00:00
2002-11-05 07:03:14 +00:00
// Little post link and anchor name
$mini_post_url = 'viewtopic.' . $phpEx . $SID . '&p=' . $row [ 'post_id' ] . '#' . $row [ 'post_id' ];
$u_post_id = ( ! empty ( $newest_post_id ) && $newest_post_id == $row [ 'post_id' ]) ? 'newest' : $row [ 'post_id' ];
2003-01-22 16:46:44 +00:00
2002-10-31 13:41:28 +00:00
// Dump vars into template
2002-07-17 20:57:31 +00:00
$template -> assign_block_vars ( 'postrow' , array (
2002-10-28 00:08:18 +00:00
'POSTER_NAME' => $poster ,
2003-01-08 22:23:51 +00:00
'POSTER_RANK' => $user_cache [ $poster_id ][ 'rank_title' ],
'RANK_IMAGE' => $user_cache [ $poster_id ][ 'rank_image' ],
'POSTER_JOINED' => $user_cache [ $poster_id ][ 'joined' ],
2002-10-28 00:08:18 +00:00
'POSTER_POSTS' => $poster_posts ,
'POSTER_FROM' => $poster_from ,
2003-01-08 22:23:51 +00:00
'POSTER_AVATAR' => $user_cache [ $poster_id ][ 'avatar' ],
2002-10-28 00:08:18 +00:00
'POST_DATE' => $user -> format_date ( $row [ 'post_time' ]),
2002-07-17 20:57:31 +00:00
2002-10-28 00:08:18 +00:00
'POST_SUBJECT' => $post_subject ,
'MESSAGE' => $message ,
2003-01-08 22:23:51 +00:00
'SIGNATURE' => $user_cache [ $poster_id ][ 'sig' ],
2002-10-28 00:08:18 +00:00
'EDITED_MESSAGE' => $l_edited_by ,
2002-07-17 20:57:31 +00:00
2003-03-25 00:05:28 +00:00
'RATING' => $rating ,
2003-01-21 15:58:32 +00:00
2002-08-15 15:45:22 +00:00
'MINI_POST_IMG' => $mini_post_img ,
2002-10-28 00:08:18 +00:00
'EDIT_IMG' => $edit_img ,
'EDIT' => $edit ,
'QUOTE_IMG' => $quote_img ,
'QUOTE' => $quote ,
'IP_IMG' => $ip_img ,
'IP' => $ip ,
'DELETE_IMG' => $delpost_img ,
'DELETE' => $delpost ,
2003-01-08 22:23:51 +00:00
'PROFILE_IMG' => $user_cache [ $poster_id ][ 'profile_img' ],
'PROFILE' => $user_cache [ $poster_id ][ 'profile' ],
'SEARCH_IMG' => $user_cache [ $poster_id ][ 'search_img' ],
'SEARCH' => $user_cache [ $poster_id ][ 'search' ],
'PM_IMG' => $user_cache [ $poster_id ][ 'pm_img' ],
'PM' => $user_cache [ $poster_id ][ 'pm' ],
'EMAIL_IMG' => $user_cache [ $poster_id ][ 'email_img' ],
'EMAIL' => $user_cache [ $poster_id ][ 'email' ],
'WWW_IMG' => $user_cache [ $poster_id ][ 'www_img' ],
'WWW' => $user_cache [ $poster_id ][ 'www' ],
'ICQ_STATUS_IMG' => $user_cache [ $poster_id ][ 'icq_status_img' ],
'ICQ_IMG' => $user_cache [ $poster_id ][ 'icq_img' ],
'ICQ' => $user_cache [ $poster_id ][ 'icq' ],
'AIM_IMG' => $user_cache [ $poster_id ][ 'aim_img' ],
'AIM' => $user_cache [ $poster_id ][ 'aim' ],
'MSN_IMG' => $user_cache [ $poster_id ][ 'msn_img' ],
'MSN' => $user_cache [ $poster_id ][ 'msn' ],
'YIM_IMG' => $user_cache [ $poster_id ][ 'yim_img' ],
'YIM' => $user_cache [ $poster_id ][ 'yim' ],
2002-07-17 20:57:31 +00:00
2003-03-25 00:05:28 +00:00
'S_POST_REPORTED' => ( $row [ 'post_reported' ] && $auth -> acl_gets ( 'm_' , $forum_id )) ? TRUE : FALSE ,
2003-03-06 01:08:00 +00:00
'U_REPORT' => " report. $phpEx $SID &p= " . $row [ 'post_id' ],
'U_MCP_REPORT' => " mcp. $phpEx $SID &mode=post_details&p= " . $row [ 'post_id' ],
// no img yet as I could not get the subSilver to work with PSP - Ashe
'REPORT_IMG' => $user -> img ( 'icon_report' , $user -> lang [ 'REPORT_TO_ADMIN' ]),
2003-02-26 00:37:43 +00:00
'POST_ICON' => ( ! empty ( $row [ 'icon_id' ])) ? '<img src="' . $config [ 'icons_path' ] . '/' . $icons [ $row [ 'icon_id' ]][ 'img' ] . '" width="' . $icons [ $row [ 'icon_id' ]][ 'width' ] . '" height="' . $icons [ $row [ 'icon_id' ]][ 'height' ] . '" alt="" title="" />' : '' ,
2003-01-22 16:46:44 +00:00
'L_MINI_POST_ALT' => $mini_post_alt ,
2002-07-17 20:57:31 +00:00
2003-01-22 16:46:44 +00:00
'S_ROW_COUNT' => $i ++ ,
2003-03-13 00:40:28 +00:00
2003-03-13 01:04:53 +00:00
'S_POST_UNAPPROVED' => ( $row [ 'post_approved' ]) ? FALSE : TRUE ,
2003-03-13 00:40:28 +00:00
'U_MCP_APPROVE' => " mcp. $phpEx $SID &mode=approve&p= " . $row [ 'post_id' ],
2002-07-17 20:57:31 +00:00
2002-10-28 00:08:18 +00:00
'U_MINI_POST' => $mini_post_url ,
2002-11-05 07:03:14 +00:00
'U_POST_ID' => $u_post_id
));
2002-07-17 20:57:31 +00:00
}
2002-10-31 13:41:28 +00:00
while ( $row = $db -> sql_fetchrow ( $result ));
2003-01-21 15:58:32 +00:00
unset ( $user_cache );
2002-07-17 20:57:31 +00:00
}
else
{
2003-02-26 00:37:43 +00:00
trigger_error ( $user -> lang [ 'NO_TOPIC' ]);
2001-03-04 04:17:02 +00:00
}
2001-03-05 01:40:39 +00:00
2003-01-08 22:23:51 +00:00
// If we have attachments, grab them ... based on Acyd Burns 2.0.x Mod
if ( sizeof ( $attach_list ))
{
$sql = " SELECT a.post_id, d.*
FROM " . ATTACHMENTS_TABLE . " a , " . ATTACHMENTS_DESC_TABLE . " d
WHERE a . post_id IN ( " . implode(', ', $attach_list ) . " )
AND a . attach_id = d . attach_id
ORDER BY d . filetime " . $display_order ;
$result = $db -> sql_query ( $sql );
if ( $db -> sql_fetchrow ( $result ))
{
$template -> assign_vars ( array (
'L_POSTED_ATTACHMENTS' => $lang [ 'Posted_attachments' ],
'L_KILOBYTE' => $lang [ 'KB' ])
);
$i = 0 ;
do
{
}
while ( $db -> sql_fetchrow ( $result ));
}
else
{
// No attachments exist, but post table thinks they do
// so go ahead and reset post_attach flags
$sql = " UPDATE " . POSTS_TABLE . "
SET post_attach = 0
WHERE post_id IN ( " . implode(', ', $attach_list ) . " ) " ;
$db -> sql_query ( $sql );
}
$db -> sql_freeresult ( $result );
}
2003-02-26 00:37:43 +00:00
2003-01-08 22:23:51 +00:00
// Mark topics read
2002-11-27 13:24:46 +00:00
markread ( 'topic' , $forum_id , $topic_id , $forum_topic_data [ 'topic_last_post_id' ]);
2003-02-26 00:37:43 +00:00
2003-01-08 22:23:51 +00:00
// Update the topic view counter
$sql = " UPDATE " . TOPICS_TABLE . "
SET topic_views = topic_views + 1
WHERE topic_id = $topic_id " ;
$db -> sql_query ( $sql );
2003-02-26 00:37:43 +00:00
// Mozilla navigation bar
$nav_links [ 'prev' ] = array (
'url' => $view_prev_topic_url ,
'title' => $user -> lang [ 'View_previous_topic' ]
);
$nav_links [ 'next' ] = array (
'url' => $view_next_topic_url ,
'title' => $user -> lang [ 'View_next_topic' ]
);
$nav_links [ 'up' ] = array (
'url' => $view_forum_url ,
'title' => $forum_name
);
// Change encoding if appropriate
if ( $force_encoding != '' )
{
$user -> lang [ 'ENCODING' ] = $force_encoding ;
}
2002-10-31 13:41:28 +00:00
// Output the page
$page_title = $user -> lang [ 'View_topic' ] . ' - ' . $topic_title ;
include ( $phpbb_root_path . 'includes/page_header.' . $phpEx );
$template -> set_filenames ( array (
2002-11-20 23:07:01 +00:00
'body' => ( isset ( $_GET [ 'view' ]) && $_GET [ 'view' ] == 'print' ) ? 'viewtopic_print.html' : 'viewtopic_body.html' )
2002-10-31 13:41:28 +00:00
);
make_jumpbox ( 'viewforum.' . $phpEx , $forum_id );
2001-07-13 16:14:37 +00:00
include ( $phpbb_root_path . 'includes/page_tail.' . $phpEx );
2001-02-17 08:37:32 +00:00
2003-01-08 22:23:51 +00:00
?>