2004-02-02 23:34:39 +00:00
< ? php
2005-01-12 13:39:05 +00:00
$cvs_version_tracker [] = " \$ Id $ " ; //Generated automatically - do not edit
2004-02-02 23:34:39 +00:00
require_once ( '../inc/db.inc' );
2005-05-04 08:46:46 +00:00
require_once ( '../inc/db_forum.inc' );
2004-02-02 23:34:39 +00:00
require_once ( '../inc/sanitize_html.inc' );
2004-05-24 03:40:38 +00:00
require_once ( '../inc/time.inc' );
2005-01-18 13:00:38 +00:00
require_once ( '../inc/forum_moderators.inc' );
2004-02-02 23:34:39 +00:00
2004-09-04 23:37:49 +00:00
define ( 'AVATAR_WIDTH' , 100 );
define ( 'AVATAR_HEIGHT' , 100 );
2005-01-18 13:00:38 +00:00
$special_user_bitfield [ 0 ] = " Forum moderator " ;
$special_user_bitfield [ 1 ] = " Project administrator " ;
$special_user_bitfield [ 2 ] = " Project developer " ;
$special_user_bitfield [ 3 ] = " Project tester " ;
$special_user_bitfield [ 4 ] = " Volunteer developer " ;
$special_user_bitfield [ 5 ] = " Volunteer tester " ;
$special_user_bitfield [ 6 ] = " Project scientist " ;
2004-09-04 23:37:49 +00:00
define ( 'ST_NEW_TIME' , 1209600 ); //3600*24*14 - 14 days
define ( 'ST_NEW' , 'New member' );
2005-01-18 13:00:38 +00:00
define ( 'MAXIMUM_EDIT_TIME' , 3600 ); //Maximally allow edits of forums posts up till one hour after posting.
2004-09-04 23:37:49 +00:00
define ( 'FORUM_OPEN_LINK_IN_NEW_WINDOW' , 1 );
2004-09-05 19:26:27 +00:00
define ( 'MAX_FORUM_LOGGING_TIME' , 604800 ); //3600*24*7 - 7 days
2004-02-02 23:34:39 +00:00
define ( 'NO_CONTROLS' , 0 );
define ( 'FORUM_CONTROLS' , 1 );
define ( 'HELPDESK_CONTROLS' , 2 );
define ( " EXCERPT_LENGTH " , " 120 " );
2005-04-20 20:56:58 +00:00
define ( 'NEW_IMAGE' , 'img/unread_post.png' );
define ( 'NEW_IMAGE_STICKY' , 'img/unread_sticky.png' );
define ( 'STICKY_IMAGE' , 'img/sticky_post.png' );
2004-10-10 03:04:29 +00:00
define ( 'NEW_IMAGE_HEIGHT' , '15' );
2005-04-20 20:56:58 +00:00
define ( 'EMPHASIZE_IMAGE' , 'img/emphasized_post.png' );
2004-10-25 22:04:15 +00:00
define ( 'EMPHASIZE_IMAGE_HEIGHT' , '15' );
2005-04-20 20:56:58 +00:00
define ( 'FILTER_IMAGE' , 'img/filtered_post.png' );
2004-12-18 18:13:46 +00:00
define ( 'FILTER_IMAGE_HEIGHT' , '15' );
2005-04-30 09:04:00 +00:00
define ( 'RATE_POSITIVE_IMAGE' , 'img/rate_positive.png' );
define ( 'RATE_POSITIVE_IMAGE_HEIGHT' , '9' );
define ( 'RATE_NEGATIVE_IMAGE' , 'img/rate_negative.png' );
define ( 'RATE_NEGATIVE_IMAGE_HEIGHT' , '9' );
2004-02-02 23:34:39 +00:00
define ( 'SOLUTION' , 'This answered my question' );
define ( 'SUFFERER' , 'I also have this question' );
define ( 'OFF_TOPIC' , 'Off-topic' );
2004-10-25 22:04:15 +00:00
define ( 'DEFAULT_LOW_RATING_THRESHOLD' , - 25 );
define ( 'DEFAULT_HIGH_RATING_THRESHOLD' , 5 );
2004-02-02 23:34:39 +00:00
$forum_sort_styles [ 'modified-new' ] = " Most recent post first " ;
$forum_sort_styles [ 'modified-old' ] = " Least recent post first " ;
//$forum_sort_styles['activity-most'] = "Most recent activity first";
$forum_sort_styles [ 'views-most' ] = " Most views first " ;
$forum_sort_styles [ 'replies-most' ] = " Most posts first " ;
2004-09-04 23:37:49 +00:00
$thread_sort_styles [ 'timestamp' ] = " Newest first " ;
$thread_sort_styles [ 'timestamp_asc' ] = " Oldest first " ;
$thread_sort_styles [ 'score' ] = " Highest rated first " ;
2004-02-02 23:34:39 +00:00
$faq_sort_styles [ 'create_time' ] = " Most recent question first " ;
$faq_sort_styles [ 'timestamp' ] = " Most recent answer first " ;
2004-03-26 18:37:46 +00:00
$faq_sort_styles [ 'activity' ] = " Most frequently asked first " ;
2004-02-02 23:34:39 +00:00
$answer_sort_styles [ 'score' ] = " Highest score first " ;
$answer_sort_styles [ 'timestamp' ] = " Most recent first " ;
2004-09-04 23:37:49 +00:00
$answer_sort_styles [ 'timestamp_asc' ] = " Oldest first " ;
2004-02-02 23:34:39 +00:00
$thread_filter_styles [ '2' ] = " \" Very helpful \" " ;
$thread_filter_styles [ '1' ] = " At least \" helpful \" " ;
$thread_filter_styles [ '0' ] = " At least \" neutral \" " ;
$thread_filter_styles [ '-1' ] = " At least \" unhelpful \" " ;
$thread_filter_styles [ '-2' ] = " All posts " ;
$post_ratings [ '2' ] = " Very helpful (+2) " ;
$post_ratings [ '1' ] = " Helpful (+1) " ;
$post_ratings [ '0' ] = " Neutral " ;
2004-12-28 05:25:44 +00:00
$post_ratings [ '-1' ] = " Not helpful (-1) " ;
2004-02-02 23:34:39 +00:00
$post_ratings [ '-2' ] = " Off topic (-2) " ;
2005-01-09 21:52:22 +00:00
// process a user-supplied title to remove HTML stuff
//
function cleanup_title ( $title ) {
$x = trim ( htmlspecialchars ( strip_tags ( $title )));
2005-01-14 19:45:43 +00:00
$x = stripslashes ( $x ); // clean up funky old titles in DB
2005-01-09 21:52:22 +00:00
if ( strlen ( $x ) == 0 ) return " (no title) " ;
else return $x ;
}
2005-01-18 13:00:38 +00:00
/* Check if user has special user bit enabled */
function isSpecialUser ( $user , $specialbit ){
return ( substr ( $user -> special_user , $specialbit , 1 ) == 1 );
}
2004-10-25 22:04:15 +00:00
function getHasRated ( $user , $postid ){
2005-04-20 20:56:58 +00:00
return ( strstr ( $user -> rated_posts , " | " . $postid ));
2004-10-25 22:04:15 +00:00
}
2005-05-04 08:46:46 +00:00
2004-10-25 22:04:15 +00:00
2004-09-04 23:37:49 +00:00
function getSortStyle ( $user , $place ){
2004-09-05 19:26:27 +00:00
if ( $user -> id != " " ){
2004-10-10 03:04:29 +00:00
list ( $forum , $thread , $faq , $answer ) = explode ( " | " , $user -> sorting );
2004-09-05 19:26:27 +00:00
} else {
list ( $forum , $thread , $faq , $answer ) = explode ( " | " , $_COOKIE [ 'sorting' ]);
}
2004-09-04 23:37:49 +00:00
return $$place ;
}
2004-03-26 22:56:45 +00:00
2005-01-18 19:56:18 +00:00
// display functions
2004-02-02 23:34:39 +00:00
function show_posts ( $thread , $sort_style , $filter , $show_controls = true , $do_coloring = true , $is_helpdesk = false ) {
global $logged_in_user ;
$n = 1 ;
if ( $show_controls && ! $is_helpdesk ) {
$controls = FORUM_CONTROLS ;
} else if ( $show_controls && $is_helpdesk ) {
$controls = HELPDESK_CONTROLS ;
} else {
$controls = NO_CONTROLS ;
}
2005-01-18 13:00:38 +00:00
if ( isSpecialUser ( $logged_in_user , 0 )){ // If logged in user is moderator
$show_hidden_posts = true ; // let him see all posts - including hidden ones
} else {
$show_hidden_posts = false ;
}
$posts = getPosts ( $thread -> id , - 1 , - 1 , $sort_style , $show_hidden_posts );
2004-09-04 23:37:49 +00:00
$logged_in_user = getThreadLastVisited ( $logged_in_user , $thread );
setThreadLastVisited ( $logged_in_user , $thread );
2005-01-09 21:52:22 +00:00
2004-02-02 23:34:39 +00:00
$firstPost = getFirstPost ( $thread -> id );
if ( $is_helpdesk ) {
if ( $firstPost ) {
2005-01-07 18:27:06 +00:00
show_post ( $firstPost , $thread , $logged_in_user , $n , $controls , true , $filter );
2004-10-10 03:04:29 +00:00
if ( $firstPost -> timestamp > $logged_in_user -> thread_last_visited ){
$first_unread_post = $firstPost ;
}
2004-02-02 23:34:39 +00:00
}
}
while ( $post = mysql_fetch_object ( $posts )) {
2004-10-25 22:04:15 +00:00
if ( ! $is_helpdesk || ( $is_helpdesk && $post -> id != $firstPost -> id )) {
show_post ( $post , $thread , $logged_in_user , $n , $controls , false , $filter );
if ( $do_coloring ) $n = ( $n + 1 ) % 2 ;
if (( $post -> timestamp > $logged_in_user -> thread_last_visited ) && (( $post -> timestamp < $first_unread_post -> timestamp ) || $first_unread_post -> timestamp == 0 )){
$first_unread_post = $post ;
2004-02-02 23:34:39 +00:00
}
}
}
2005-01-09 21:52:22 +00:00
2004-10-10 03:04:29 +00:00
if ( $logged_in_user -> jump_to_unread ){
if ( $first_unread_post -> id != " " ){
echo " <script>function jumpToUnread() { location.href='# " . $first_unread_post -> id . " ';}</script> " ;
} else {
echo " <script>function jumpToUnread() { };</script> " ;
}
}
2004-02-02 23:34:39 +00:00
}
2004-10-25 22:04:15 +00:00
function show_post ( $post , $thread , $logged_in_user , $n , $controls = FORUM_CONTROLS , $separate = false , $filter = true ) {
2004-02-02 23:34:39 +00:00
$user = lookup_user_id ( $post -> user );
2004-09-04 23:37:49 +00:00
$user = getForumPreferences ( $user );
2005-05-08 01:26:02 +00:00
$user -> has_avatar = ( $user -> avatar != " " );
2005-01-06 11:47:44 +00:00
//If the user that made this post is on the list of people to ignore, change thresholds to be more strict
if ( in_array ( $user -> id , explode ( " | " , $logged_in_user -> ignorelist ))){
2005-01-09 21:52:22 +00:00
$user_is_on_ignorelist = true ;
$rated_below_threshold = ( $logged_in_user -> high_rating_threshold > ( $post -> score * $post -> votes ));
$rated_above_threshold = ( $logged_in_user -> high_rating_threshold + abs ( $logged_in_user -> low_rating_threshold ) < ( $post -> score * $post -> votes ));
} else { //Use normal threshold values
2005-01-06 11:47:44 +00:00
$rated_below_threshold = ( $logged_in_user -> low_rating_threshold > ( $post -> score * $post -> votes ));
2005-01-09 21:52:22 +00:00
$rated_above_threshold = ( $logged_in_user -> high_rating_threshold < ( $post -> score * $post -> votes ));
2005-01-06 11:47:44 +00:00
}
2004-02-02 23:34:39 +00:00
$can_edit = $logged_in_user && $user -> id == $logged_in_user -> id ;
echo "
2004-09-04 23:37:49 +00:00
< tr class = \ " row $n\ " valign = \ " top \" >
2005-05-05 06:21:45 +00:00
< td > \n\t\t < div class = \ " authorcol \" >
2004-09-04 23:37:49 +00:00
< a name = \ " $post->id\ " ></ a >
2004-02-02 23:34:39 +00:00
" ;
2004-02-24 04:05:13 +00:00
echo user_links ( $user , URL_BASE );
2005-02-08 21:20:00 +00:00
echo " <br> " ;
2005-01-18 13:00:38 +00:00
global $special_user_bitfield ;
2004-10-10 03:04:29 +00:00
if ( $user -> special_user ) { //If this user is somehow special
2005-04-27 15:13:44 +00:00
$keys = array_keys ( $special_user_bitfield );
2005-01-18 13:00:38 +00:00
for ( $i = 0 ; $i < sizeof ( $special_user_bitfield ); $i ++ ){
2005-04-27 15:13:44 +00:00
if ( isSpecialUser ( $user , $keys [ $i ])) $fstatus .= $special_user_bitfield [ $keys [ $i ]] . " <br> " ;
2005-01-18 13:00:38 +00:00
}
2004-09-04 23:37:49 +00:00
} else {
2005-01-26 07:09:14 +00:00
if ( $user -> create_time > time () - ST_NEW_TIME ) $fstatus = ST_NEW . " <br> " ;
2004-10-10 03:04:29 +00:00
/*...*/
2004-09-04 23:37:49 +00:00
}
2005-02-08 21:20:00 +00:00
if ( $fstatus ) echo " <font size= \" -2 \" > $fstatus </font> " ;
2004-12-21 23:06:31 +00:00
2005-01-18 13:00:38 +00:00
echo " <font size=-2> " ;
2004-10-25 22:04:15 +00:00
if ( ! $filter || ! $rated_below_threshold ){
2005-01-09 21:52:22 +00:00
if ( $user -> has_avatar and $logged_in_user -> hide_avatars != 1 ) {
echo " <img width= \" " . AVATAR_WIDTH . " \" height= \" " . AVATAR_HEIGHT . " \" src= \" " . $user -> avatar . " \" alt= \" Avatar \" ><br> " ;
}
2005-01-14 19:45:43 +00:00
echo " Joined: " , gmdate ( 'M j, Y' , $user -> create_time ), " <br>Posts: $user->posts <br> " ;
2004-10-25 22:04:15 +00:00
}
2005-01-14 19:45:43 +00:00
// circumvent various forms of identity spoofing
// by displaying the user id of the poster.
// its cheap, easy, and doesn't require any additional database calls.
echo " ID: $user->id <br> " ;
2005-05-11 03:50:01 +00:00
printf ( " Credit: %.0f<br> " , $user -> total_credit );
printf ( " RAC: %.1f<br> " , $user -> expavg_credit );
2005-01-14 19:45:43 +00:00
2005-05-05 06:21:45 +00:00
echo " </font></div></td> \n \t \t <td>
2004-02-02 23:34:39 +00:00
" ;
if ( $controls == FORUM_CONTROLS || $controls == HELPDESK_CONTROLS ) {
2004-05-30 21:47:11 +00:00
echo " <form action= \" forum_rate.php?post= " , $post -> id , " \" method= \" post \" > " ;
2004-02-02 23:34:39 +00:00
}
2005-01-09 21:52:22 +00:00
2004-02-02 23:34:39 +00:00
echo "
2004-12-18 18:13:46 +00:00
< table width = \ " 100% \" cellpadding=0 cellspacing=0 border=0>
2004-05-30 21:47:11 +00:00
< tr valign = top >
2005-01-18 13:00:38 +00:00
< td align = left style = \ " border:0px \" ><font size=-2> " ;
2004-09-04 23:37:49 +00:00
if ( $post -> timestamp > $logged_in_user -> thread_last_visited ){
2004-10-10 03:04:29 +00:00
echo " <img src= \" " . NEW_IMAGE . " \" alt= \" Unread post \" height= \" " . NEW_IMAGE_HEIGHT . " \" > " ;
2004-09-04 23:37:49 +00:00
}
2004-10-25 22:04:15 +00:00
if ( $rated_above_threshold ){
echo " <img src= \" " . EMPHASIZE_IMAGE . " \" alt= \" ! \" height= \" " . EMPHASIZE_IMAGE_HEIGHT . " \" > " ;
}
2005-01-09 21:52:22 +00:00
2005-05-10 13:19:39 +00:00
echo " <a href= \" # $post->id\ " > Message $post -> id </ a > - " ;
2005-01-18 13:00:38 +00:00
if ( $post -> hidden ) echo " <font color=red>[deleted] </font> " ;
2005-01-09 21:52:22 +00:00
echo "
2005-05-10 13:19:39 +00:00
Posted " , pretty_time_str( $post->timestamp );
2004-02-02 23:34:39 +00:00
;
2004-12-18 18:13:46 +00:00
if ( $post -> parent_post ) echo " - in response to <a href= \" # $post->parent_post\ " > Message ID $post -> parent_post </ a >. " ;
if ( $can_edit && $controls != NO_CONTROLS ) echo " <a href= \" forum_edit.php?id= $post->id\ " > [ Edit this post ] </ a > " ;
2005-01-18 13:00:38 +00:00
if ( isSpecialUser ( $logged_in_user , 0 )) show_post_moderation_links ( $post ); //If user is moderator, show links
2004-02-02 23:34:39 +00:00
if ( $post -> modified ) echo " <br>Last modified: " , pretty_time_Str ( $post -> modified );
2004-10-25 22:04:15 +00:00
if ( $rated_below_threshold && $filter ){
2005-01-09 21:52:22 +00:00
if ( $user_is_on_ignorelist ) $andtext = " and the user is on your ignore list " ;
echo " <br>This post has been filtered (rating: " . ( $post -> score * $post -> votes ) . " ) $andtext , press <a href= \" ?id= " . $thread -> id . " &filter=false# " . $post -> id . " \" >here</a> to view this thread without filtering " ;
2004-10-25 22:04:15 +00:00
}
2004-12-18 18:13:46 +00:00
echo " \n </font></td> \n " ;
2004-02-02 23:34:39 +00:00
if ( $controls == FORUM_CONTROLS ) {
2005-01-09 21:52:22 +00:00
//no special controls in forum
2004-02-02 23:34:39 +00:00
} else if ( $controls == HELPDESK_CONTROLS && $separate ) {
echo "
2005-01-18 19:56:18 +00:00
< td align = right style = \ " border:0px \" >
2004-05-30 21:47:11 +00:00
< input type = submit name = submit value = \ " " , SUFFERER , " \" >
2004-02-02 23:34:39 +00:00
</ td >
" ;
} else if ( $controls == HELPDESK_CONTROLS && ! $separate ) {
echo "
2005-01-18 19:56:18 +00:00
< td align = right style = \ " border:0px \" >
< input type = submit name = submit value = \ " " , SOLUTION , " \" >
< input type = submit name = submit value = \ " " , OFF_TOPIC , " \" >
2004-02-02 23:34:39 +00:00
</ td >
" ;
}
echo " </tr> \n </table> \n " ;
if ( $controls == FORUM_CONTROLS || $controls == HELPDESK_CONTROLS ) {
echo " </form> " ;
}
2004-09-04 23:37:49 +00:00
2005-01-09 21:52:22 +00:00
//If either filtering is turned off of this post is not below the threshold
if ( ! $filter || ! $rated_below_threshold ){
2004-10-25 22:04:15 +00:00
$posttext = nl2br ( stripslashes ( $post -> content ));
if ( $post -> signature && ! $logged_in_user -> hide_signatures ){ //If the creator of this post has a signature and
$posttext .= nl2br ( " \n " . stripslashes ( $user -> signature )); //wants it to be shown for this post AND the logged in
} //user has signatures enabled: show it
2005-01-09 21:52:22 +00:00
2004-10-25 22:04:15 +00:00
if ( $logged_in_user -> images_as_links == 1 ){
$posttext = image_as_link ( $posttext );
}
if ( $logged_in_user -> link_popup == 1 ){
$posttext = externalize_links ( $posttext );
}
echo " <p> " , $posttext , " </p> " ;
2004-12-18 18:13:46 +00:00
echo " <table width= \" 100% \" cellspacing=0 cellpadding=0>
2004-10-25 22:04:15 +00:00
< tr valign = \ " bottom \" >
2004-12-18 18:13:46 +00:00
< td style = \ " border:0px; \" ><font size=-2><i>ID: " , $post -> id ;
2004-10-25 22:04:15 +00:00
if ( $controls == HELPDESK_CONTROLS && $separate ) {
2004-12-18 18:13:46 +00:00
echo " </i></font></td> " ;
2004-10-25 22:04:15 +00:00
} else if ( $controls == HELPDESK_CONTROLS && ! $separate ) {
2005-01-07 18:27:06 +00:00
echo " / Score: " , round (( $post -> score * $post -> votes ), 0 ), " </i></font></td> " ;
2004-10-25 22:04:15 +00:00
} else {
2005-04-30 09:04:00 +00:00
echo " / Rating: " , round ( intval (( $post -> score * $post -> votes ) + 0.01 ), 0 ), " </i> - rate: <a href= \" forum_rate.php?post= " . $post -> id . " &choice=p \" ><img src= \" " . RATE_POSITIVE_IMAGE . " \" alt= \" + \" height= \" " . RATE_POSITIVE_IMAGE_HEIGHT . " \" border=0></a> / <a href= \" forum_rate.php?post= " . $post -> id . " &choice=n \" ><img src= \" " . RATE_NEGATIVE_IMAGE . " \" alt= \" - \" height= \" " . RATE_NEGATIVE_IMAGE_HEIGHT . " \" border=0></a></font></td> " ;
2004-10-25 22:04:15 +00:00
}
2005-01-09 21:52:22 +00:00
2004-10-25 22:04:15 +00:00
if ( $controls == FORUM_CONTROLS ) {
2005-01-18 19:56:18 +00:00
echo " <td align=right style= \" border:0px \" >[<a href= \" forum_reply.php?thread= " . $thread -> id . " &post= " . $post -> id . " #input \" >Reply to this post</a>]</td> " ;
2004-10-25 22:04:15 +00:00
} else if ( $controls == HELPDESK_CONTROLS && ! $separate ) {
2005-01-18 19:56:18 +00:00
echo " <td align=right style= \" border:0px \" >[<a href= \" forum_reply.php?thread= " . $thread -> id . " &post= " . $post -> id . " &helpdesk=1#input \" >Reply to this answer</a>]</td> " ;
2004-10-25 22:04:15 +00:00
}
2005-01-09 21:52:22 +00:00
echo " </tr></table> " ;
2004-02-02 23:34:39 +00:00
}
2004-10-25 22:04:15 +00:00
echo " </td></tr> " ;
2004-02-02 23:34:39 +00:00
if ( $separate ) {
echo "
</ table >
< br >< br >
2004-05-30 21:47:11 +00:00
< table border = 0 cellpadding = 5 cellspacing = 0 width = 100 %>
2004-02-02 23:34:39 +00:00
< tr >
2004-05-30 21:47:11 +00:00
< th > Author </ th >
2004-02-02 23:34:39 +00:00
< th > Answers </ th >
" ;
}
}
2005-01-18 19:56:18 +00:00
// utility functions
2004-02-02 23:34:39 +00:00
2004-09-04 23:37:49 +00:00
function externalize_links ( $text ){
$i = 0 ; $linkpos = true ;
2004-10-10 03:04:29 +00:00
while ( true ){ //Find a link
2004-09-04 23:37:49 +00:00
$linkpos = strpos ( $text , " <a " , $i );
2004-10-10 03:04:29 +00:00
if ( $linkpos === false ) break ;
2004-10-12 18:05:38 +00:00
$out .= substr ( $text , $i , $linkpos - $i ) . " <a target= \" _new \" " ; //Replace with target='_new'
2004-10-10 03:04:29 +00:00
$i = $linkpos + 3 ;
2004-09-04 23:37:49 +00:00
}
$out .= substr ( $text , $i );
return $out ;
}
function image_as_link ( $text ){
/* This function depends on sanitized HTML - always use KSES or equivalent before using this */
2005-05-08 01:26:02 +00:00
// Build some regex (should be a *lot* faster)
$pattern = '@<img src=([^>]+)>@si' ; // Gives us the URL in ${1}...
$replacement = '<a href=${1}>[Image Link]</a>' ; // Turns that URL into a hyperlink
$text = preg_replace ( $pattern , $replacement , $text );
return $text ;
2004-09-04 23:37:49 +00:00
}
2005-01-09 21:52:22 +00:00
2005-05-08 01:26:02 +00:00
function cleanTextBox ( $content ) {
/* Cleans the contents of a post for dropping in a text box
* Currently I 'm only replacing <' s and > ' s with the proper HTML entities
* ... are there others we should handle ? & itself is being escaped somewhere
* else , probably by the slash stuff in the calling function .
*/
$answer = preg_replace ( '/</' , '&lt;' , preg_replace ( '/>/' , '&gt;' , $content ));
return $answer ;
}
2004-09-04 23:37:49 +00:00
2005-01-18 19:56:18 +00:00
function start_forum_table ( $headings ) {
start_table ();
echo " <tr> " ;
2004-02-02 23:34:39 +00:00
2005-01-18 19:56:18 +00:00
for ( $i = 0 ; $i < count ( $headings ); $i ++ ) {
$title = $headings [ $i ];
echo " <th class=heading> $title </th> " ;
2004-02-02 23:34:39 +00:00
}
echo " </tr> \n " ;
}
function end_forum_table () {
2004-12-18 18:13:46 +00:00
echo " </table> \n " ;
2004-02-02 23:34:39 +00:00
}
// generate a "select" element from an array of values
//
2004-09-04 23:37:49 +00:00
function select_from_array ( $name , $array , $selection ) {
$out = " <select name= \" $name\ " > " ;
2004-02-02 23:34:39 +00:00
foreach ( $array as $key => $value ) {
2004-09-04 23:37:49 +00:00
$out .= " <option " ;
2004-02-02 23:34:39 +00:00
if ( $key == $selection ) {
2004-09-04 23:37:49 +00:00
$out .= " selected " ;
2004-02-02 23:34:39 +00:00
}
2004-09-04 23:37:49 +00:00
$out .= " value= \" " . $key . " \" > " . $value . " </option> " ;
2004-02-02 23:34:39 +00:00
}
2004-09-04 23:37:49 +00:00
$out .= " </select> " ;
return $out ;
}
function show_select_from_array ( $name , $array , $selection ) {
echo select_from_array ( $name , $array , $selection );
2004-02-02 23:34:39 +00:00
}
function show_forum_title ( $forum = NULL , $thread = NULL , $helpdesk = false ) {
echo " <p> \n " ;
if ( ! $forum && ! $thread ) {
echo " <p class= \" title \" > " ;
if ( $helpdesk ) {
echo " Questions and problems</p> " ;
} else {
echo " Message boards</p> " ;
}
} else if ( $forum && ! $thread ) {
echo " <span class=title> " ;
if ( $helpdesk ) {
2004-12-18 18:13:46 +00:00
echo " <a href= \" forum_help_desk.php \" > " , " Questions and problems</a> : " ;
2004-02-02 23:34:39 +00:00
} else {
2004-12-18 18:13:46 +00:00
echo " <a href= \" forum_index.php \" > " , " Message boards</a> : " ;
2004-02-02 23:34:39 +00:00
}
echo $forum -> title ;
echo " </span><br> " ;
} else if ( $forum && $thread ) {
echo " <span class=title> " ;
if ( $helpdesk ) {
2004-12-18 18:13:46 +00:00
echo " <a href= \" forum_help_desk.php \" > " , " Questions and problems</a> : " ;
2004-02-02 23:34:39 +00:00
} else {
2004-12-18 18:13:46 +00:00
echo " <a href= \" forum_index.php \" > " , " Message boards</a> : " ;
2004-02-02 23:34:39 +00:00
}
2004-12-18 18:13:46 +00:00
echo " <a href= \" forum_forum.php?id= $forum->id\ " > " , $forum->title , " </ a > : " ;
2005-01-09 21:52:22 +00:00
echo cleanup_title ( $thread -> title );
2004-02-02 23:34:39 +00:00
echo " </span><br> " ;
} else {
echo " Invalid input to show_forum_title<br> " ;
}
echo " </p> \n " ;
}
// show a thread with its context (e.g. for search results)
//
function show_thread ( $thread , $n ) {
$forum = getForum ( $thread -> forum );
$category = getCategory ( $forum -> category );
$first_post = getFirstPost ( $thread -> id );
2005-01-09 21:52:22 +00:00
$title = cleanup_title ( $thread -> title );
2004-02-02 23:34:39 +00:00
$where = $category -> is_helpdesk ? " Questions and answers " : " Message boards " ;
2004-05-31 19:15:23 +00:00
$top_url = $category -> is_helpdesk ? " forum_help_desk.php " : " forum_index.php " ;
2004-02-02 23:34:39 +00:00
$excerpt = sub_sentence ( stripslashes ( $first_post -> content ), ' ' , EXCERPT_LENGTH , true );
$posted = time_diff_str ( $thread -> create_time , time ());
$last = time_diff_str ( $thread -> timestamp , time ());
$m = $n % 2 ;
echo "
2004-12-18 18:13:46 +00:00
< tr class = \ " row $m\ " >
< td >< font size = \ " -2 \" >
2004-02-02 23:34:39 +00:00
$n ) Posted $posted
< br >
Last response $last
</ td >
< td valign = top >
2004-12-18 18:13:46 +00:00
< a href = \ " $top_url\ " > $where </ a > : $category -> name :
< a href = \ " forum_forum.php?id= $forum->id\ " > $forum -> title </ a > :
< a href = \ " forum_thread.php?id= $thread->id\ " > $title </ a >
2004-02-02 23:34:39 +00:00
< br >
2004-12-18 18:13:46 +00:00
< font size = \ " -2 \" > $excerpt </font>
2004-02-02 23:34:39 +00:00
</ td >
</ tr >
" ;
}
// show a post with its context (e.g. for search results)
//
function show_post2 ( $post , $n ) {
$thread = getThread ( $post -> thread );
$forum = getForum ( $thread -> forum );
$category = getCategory ( $forum -> category );
$where = $category -> is_helpdesk ? " Questions and answers " : " Message boards " ;
2004-05-31 19:15:23 +00:00
$top_url = $category -> is_helpdesk ? " forum_help_desk.php " : " forum_index.php " ;
2004-02-02 23:34:39 +00:00
$content = nl2br ( stripslashes ( $post -> content ));
$when = time_diff_str ( $post -> timestamp , time ());
$user = lookup_user_id ( $post -> user );
2005-01-09 21:52:22 +00:00
$title = cleanup_title ( $thread -> title );
2004-02-02 23:34:39 +00:00
$m = $n % 2 ;
2005-01-23 10:05:15 +00:00
if ( $post -> hidden ) {
$deleted_text = array ( " Obscene " , " Flame/Hate " , " Commercial spam " ); //Todo: factor this array out, it is also used elsewhere
$deleted = " <br><font color=red>[Deleted " .
" by a moderator as " . $deleted_text [ $post -> hidden - 1 ] .
" ] </font> " ;
} else {
$deleted = " " ;
};
2004-02-02 23:34:39 +00:00
echo "
< tr class = row $m >
< td >
2004-12-18 18:13:46 +00:00
$n ) < a href = \ " $top_url\ " > $where </ a > : $category -> name :
< a href = \ " forum_forum.php?id= $forum->id\ " > $forum -> title </ a > :
< a href = \ " forum_thread.php?id= $thread->id\ " > $title </ a >
2004-02-02 23:34:39 +00:00
< br >
2005-01-23 10:05:15 +00:00
Posted $when by $user -> name $deleted
2004-02-02 23:34:39 +00:00
< hr >
$content
</ td >
</ tr >
" ;
}
2004-05-24 03:40:38 +00:00
function show_forum_summary ( $forum ) {
$x = time_diff_str ( $forum -> timestamp , time ());
echo "
2005-01-18 19:56:18 +00:00
< tr class = row1 >
< td >
< b >
< a href = forum_forum . php ? id = $forum -> id > " , $forum->title ,
" </a></b>
2004-11-14 17:49:16 +00:00
< br >< font size =- 2 > " , $forum->description , "
2004-05-24 03:40:38 +00:00
</ td >
< td > " , $forum->threads , " </ td >
< td > " , $forum->posts , " </ td >
< td > " , $x , " </ td >
</ tr >
" ;
}
2005-02-16 00:24:53 +00:00
function post_warning () {
return " <br><br><font size=-2>
Do not use obscene language
or threaten other participants ;
we may delete such messages .</ font >
" ;
}
2004-02-02 23:34:39 +00:00
?>