Verzeichnisstruktur phpBB-2.0.0


Veröffentlicht
03.04.2002

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

      (Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

viewforum.php

Zuletzt modifiziert: 09.10.2024, 12:50 - Dateigröße: 22.61 KiB


 001  <?php
 002  /***************************************************************************
 003   *                               viewforum.php
 004   *                            -------------------
 005   *   begin                : Saturday, Feb 13, 2001
 006   *   copyright            : (C) 2001 The phpBB Group
 007   *   email                : support@phpbb.com
 008   *
 009   *   $Id$
 010   *
 011   *
 012   ***************************************************************************/
 013   
 014  /***************************************************************************
 015   *
 016   *   This program is free software; you can redistribute it and/or modify
 017   *   it under the terms of the GNU General Public License as published by
 018   *   the Free Software Foundation; either version 2 of the License, or
 019   *   (at your option) any later version.
 020   *
 021   ***************************************************************************/
 022   
 023  define('IN_PHPBB', true);
 024  $phpbb_root_path = './';
 025  include($phpbb_root_path . 'extension.inc');
 026  include($phpbb_root_path . 'common.'.$phpEx);
 027   
 028  //
 029  // Start initial var setup
 030  //
 031  if ( isset($HTTP_GET_VARS[POST_FORUM_URL]) || isset($HTTP_POST_VARS[POST_FORUM_URL]) )
 032  {
 033      $forum_id = ( isset($HTTP_GET_VARS[POST_FORUM_URL]) ) ? intval($HTTP_GET_VARS[POST_FORUM_URL]) : intval($HTTP_POST_VARS[POST_FORUM_URL]);
 034  }
 035  else if ( isset($HTTP_GET_VARS['forum']))
 036  {
 037      $forum_id = intval($HTTP_GET_VARS['forum']);
 038  }
 039  else
 040  {
 041      $forum_id = '';
 042  }
 043   
 044  $start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
 045  $start = ($start < 0) ? 0 : $start;
 046   
 047  if ( isset($HTTP_GET_VARS['mark']) || isset($HTTP_POST_VARS['mark']) )
 048  {
 049      $mark_read = (isset($HTTP_POST_VARS['mark'])) ? $HTTP_POST_VARS['mark'] : $HTTP_GET_VARS['mark'];
 050  }
 051  else
 052  {
 053      $mark_read = '';
 054  }
 055  //
 056  // End initial var setup
 057  //
 058   
 059  //
 060  // Check if the user has actually sent a forum ID with his/her request
 061  // If not give them a nice error page.
 062  //
 063  if ( !empty($forum_id) )
 064  {
 065      $sql = "SELECT *
 066          FROM " . FORUMS_TABLE . "
 067          WHERE forum_id = $forum_id";
 068      if ( !($result = $db->sql_query($sql)) )
 069      {
 070          message_die(GENERAL_ERROR, 'Could not obtain forums information', '', __LINE__, __FILE__, $sql);
 071      }
 072  }
 073  else
 074  {
 075      message_die(GENERAL_MESSAGE, 'Forum_not_exist');
 076  }
 077   
 078  //
 079  // If the query doesn't return any rows this isn't a valid forum. Inform
 080  // the user.
 081  //
 082  if ( !($forum_row = $db->sql_fetchrow($result)) )
 083  {
 084      message_die(GENERAL_MESSAGE, 'Forum_not_exist');
 085  }
 086   
 087  //
 088  // Start session management
 089  //
 090  $userdata = session_pagestart($user_ip, $forum_id);
 091  init_userprefs($userdata);
 092  //
 093  // End session management
 094  //
 095   
 096  //
 097  // Start auth check
 098  //
 099  $is_auth = array();
 100  $is_auth = auth(AUTH_ALL, $forum_id, $userdata, $forum_row);
 101   
 102  if ( !$is_auth['auth_read'] || !$is_auth['auth_view'] )
 103  {
 104      if ( !$userdata['session_logged_in'] )
 105      {
 106          $redirect = POST_FORUM_URL . "=$forum_id" . ( ( isset($start) ) ? "&start=$start" : '' );
 107          redirect(append_sid("login.$phpEx?redirect=viewforum.$phpEx&$redirect", true));
 108      }
 109      //
 110      // The user is not authed to read this forum ...
 111      //
 112      $message = ( !$is_auth['auth_view'] ) ? $lang['Forum_not_exist'] : sprintf($lang['Sorry_auth_read'], $is_auth['auth_read_type']);
 113   
 114      message_die(GENERAL_MESSAGE, $message);
 115  }
 116  //
 117  // End of auth check
 118  //
 119   
 120  //
 121  // Handle marking posts
 122  //
 123  if ( $mark_read == 'topics' )
 124  {
 125      if ( $userdata['session_logged_in'] )
 126      {
 127          $sql = "SELECT MAX(post_time) AS last_post 
 128              FROM " . POSTS_TABLE . " 
 129              WHERE forum_id = $forum_id";
 130          if ( !($result = $db->sql_query($sql)) )
 131          {
 132              message_die(GENERAL_ERROR, 'Could not obtain forums information', '', __LINE__, __FILE__, $sql);
 133          }
 134   
 135          if ( $row = $db->sql_fetchrow($result) )
 136          {
 137              $tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array();
 138              $tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array();
 139   
 140              if ( ( count($tracking_forums) + count($tracking_topics) ) >= 150 && empty($tracking_forums[$forum_id]) )
 141              {
 142                  asort($tracking_forums);
 143                  unset($tracking_forums[key($tracking_forums)]);
 144              }
 145   
 146              if ( $row['last_post'] > $userdata['user_lastvisit'] )
 147              {
 148                  $tracking_forums[$forum_id] = time();
 149   
 150                  setcookie($board_config['cookie_name'] . '_f', serialize($tracking_forums), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
 151              }
 152          }
 153   
 154          $template->assign_vars(array(
 155              'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id") . '">')
 156          );
 157      }
 158   
 159      $message = $lang['Topics_marked_read'] . '<br /><br />' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id") . '">', '</a> ');
 160      message_die(GENERAL_MESSAGE, $message);
 161  }
 162  //
 163  // End handle marking posts
 164  //
 165   
 166  $tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : '';
 167  $tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : '';
 168   
 169  //
 170  // Do the forum Prune
 171  //
 172  if ( $is_auth['auth_mod'] && $board_config['prune_enable'] )
 173  {
 174      if ( $forum_row['prune_next'] < time() && $forum_row['prune_enable'] )
 175      {
 176          include($phpbb_root_path . 'includes/prune.'.$phpEx);
 177          require($phpbb_root_path . 'includes/functions_admin.'.$phpEx);
 178          auto_prune($forum_id);
 179      }
 180  }
 181  //
 182  // End of forum prune
 183  //
 184   
 185  //
 186  // Obtain list of moderators of each forum
 187  // First users, then groups ... broken into two queries
 188  //
 189  $sql = "SELECT u.user_id, u.username 
 190      FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g, " . USERS_TABLE . " u
 191      WHERE aa.forum_id = $forum_id 
 192          AND aa.auth_mod = " . TRUE . " 
 193          AND g.group_single_user = 1
 194          AND ug.group_id = aa.group_id 
 195          AND g.group_id = aa.group_id 
 196          AND u.user_id = ug.user_id 
 197      GROUP BY u.user_id, u.username  
 198      ORDER BY u.user_id";
 199  if ( !($result = $db->sql_query($sql)) )
 200  {
 201      message_die(GENERAL_ERROR, 'Could not query forum moderator information', '', __LINE__, __FILE__, $sql);
 202  }
 203   
 204  $moderators = array();
 205  while( $row = $db->sql_fetchrow($result) )
 206  {
 207      $moderators[] = '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . "=" . $row['user_id']) . '">' . $row['username'] . '</a>';
 208  }
 209   
 210  $sql = "SELECT g.group_id, g.group_name 
 211      FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g 
 212      WHERE aa.forum_id = $forum_id
 213          AND aa.auth_mod = " . TRUE . " 
 214          AND g.group_single_user = 0
 215          AND g.group_type <> ". GROUP_HIDDEN ."
 216          AND ug.group_id = aa.group_id 
 217          AND g.group_id = aa.group_id 
 218      GROUP BY g.group_id, g.group_name  
 219      ORDER BY g.group_id";
 220  if ( !($result = $db->sql_query($sql)) )
 221  {
 222      message_die(GENERAL_ERROR, 'Could not query forum moderator information', '', __LINE__, __FILE__, $sql);
 223  }
 224   
 225  while( $row = $db->sql_fetchrow($result) )
 226  {
 227      $moderators[] = '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $row['group_id']) . '">' . $row['group_name'] . '</a>';
 228  }
 229      
 230  $l_moderators = ( count($moderators) == 1 ) ? $lang['Moderator'] : $lang['Moderators'];
 231  $forum_moderators = ( count($moderators) ) ? implode(', ', $moderators) : $lang['None'];
 232  unset($moderators);
 233   
 234  //
 235  // Generate a 'Show topics in previous x days' select box. If the topicsdays var is sent
 236  // then get it's value, find the number of topics with dates newer than it (to properly
 237  // handle pagination) and alter the main query
 238  //
 239  $previous_days = array(0, 1, 7, 14, 30, 90, 180, 364);
 240  $previous_days_text = array($lang['All_Topics'], $lang['1_Day'], $lang['7_Days'], $lang['2_Weeks'], $lang['1_Month'], $lang['3_Months'], $lang['6_Months'], $lang['1_Year']);
 241   
 242  if ( !empty($HTTP_POST_VARS['topicdays']) || !empty($HTTP_GET_VARS['topicdays']) )
 243  {
 244      $topic_days = ( !empty($HTTP_POST_VARS['topicdays']) ) ? intval($HTTP_POST_VARS['topicdays']) : intval($HTTP_GET_VARS['topicdays']);
 245      $min_topic_time = time() - ($topic_days * 86400);
 246   
 247      $sql = "SELECT COUNT(t.topic_id) AS forum_topics 
 248          FROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p 
 249          WHERE t.forum_id = $forum_id 
 250              AND p.post_id = t.topic_last_post_id
 251              AND p.post_time >= $min_topic_time"; 
 252   
 253      if ( !($result = $db->sql_query($sql)) )
 254      {
 255          message_die(GENERAL_ERROR, 'Could not obtain limited topics count information', '', __LINE__, __FILE__, $sql);
 256      }
 257      $row = $db->sql_fetchrow($result);
 258   
 259      $topics_count = ( $row['forum_topics'] ) ? $row['forum_topics'] : 1;
 260      $limit_topics_time = "AND p.post_time >= $min_topic_time";
 261   
 262      if ( !empty($HTTP_POST_VARS['topicdays']) )
 263      {
 264          $start = 0;
 265      }
 266  }
 267  else
 268  {
 269      $topics_count = ( $forum_row['forum_topics'] ) ? $forum_row['forum_topics'] : 1;
 270   
 271      $limit_topics_time = '';
 272      $topic_days = 0;
 273  }
 274   
 275  $select_topic_days = '<select name="topicdays">';
 276  for($i = 0; $i < count($previous_days); $i++)
 277  {
 278      $selected = ($topic_days == $previous_days[$i]) ? ' selected="selected"' : '';
 279      $select_topic_days .= '<option value="' . $previous_days[$i] . '"' . $selected . '>' . $previous_days_text[$i] . '</option>';
 280  }
 281  $select_topic_days .= '</select>';
 282   
 283   
 284  //
 285  // All announcement data, this keeps announcements
 286  // on each viewforum page ...
 287  //
 288  $sql = "SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_time, p.post_username
 289      FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . POSTS_TABLE . " p, " . USERS_TABLE . " u2
 290      WHERE t.forum_id = $forum_id 
 291          AND t.topic_poster = u.user_id
 292          AND p.post_id = t.topic_last_post_id
 293          AND p.poster_id = u2.user_id
 294          AND t.topic_type = " . POST_ANNOUNCE . " 
 295      ORDER BY t.topic_last_post_id DESC ";
 296  if ( !($result = $db->sql_query($sql)) )
 297  {
 298     message_die(GENERAL_ERROR, 'Could not obtain topic information', '', __LINE__, __FILE__, $sql);
 299  }
 300   
 301  $topic_rowset = array();
 302  $total_announcements = 0;
 303  while( $row = $db->sql_fetchrow($result) )
 304  {
 305      $topic_rowset[] = $row;
 306      $total_announcements++;
 307  }
 308   
 309  $db->sql_freeresult($result);
 310   
 311  //
 312  // Grab all the basic data (all topics except announcements)
 313  // for this forum
 314  //
 315  $sql = "SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time 
 316      FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . POSTS_TABLE . " p, " . POSTS_TABLE . " p2, " . USERS_TABLE . " u2
 317      WHERE t.forum_id = $forum_id
 318          AND t.topic_poster = u.user_id
 319          AND p.post_id = t.topic_first_post_id
 320          AND p2.post_id = t.topic_last_post_id
 321          AND u2.user_id = p2.poster_id 
 322          AND t.topic_type <> " . POST_ANNOUNCE . " 
 323          $limit_topics_time
 324      ORDER BY t.topic_type DESC, t.topic_last_post_id DESC 
 325      LIMIT $start, ".$board_config['topics_per_page'];
 326  if ( !($result = $db->sql_query($sql)) )
 327  {
 328     message_die(GENERAL_ERROR, 'Could not obtain topic information', '', __LINE__, __FILE__, $sql);
 329  }
 330   
 331  $total_topics = 0;
 332  while( $row = $db->sql_fetchrow($result) )
 333  {
 334      $topic_rowset[] = $row;
 335      $total_topics++;
 336  }
 337   
 338  $db->sql_freeresult($result);
 339   
 340  //
 341  // Total topics ...
 342  //
 343  $total_topics += $total_announcements;
 344   
 345  //
 346  // Define censored word matches
 347  //
 348  $orig_word = array();
 349  $replacement_word = array();
 350  obtain_word_list($orig_word, $replacement_word);
 351   
 352  //
 353  // Post URL generation for templating vars
 354  //
 355  $template->assign_vars(array(
 356      'L_DISPLAY_TOPICS' => $lang['Display_topics'],
 357   
 358      'U_POST_NEW_TOPIC' => append_sid("posting.$phpEx?mode=newtopic&amp;" . POST_FORUM_URL . "=$forum_id"),
 359   
 360      'S_SELECT_TOPIC_DAYS' => $select_topic_days,
 361      'S_POST_DAYS_ACTION' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=" . $forum_id . "&amp;start=$start"))
 362  );
 363   
 364  //
 365  // User authorisation levels output
 366  //
 367  $s_auth_can = ( ( $is_auth['auth_post'] ) ? $lang['Rules_post_can'] : $lang['Rules_post_cannot'] ) . '<br />';
 368  $s_auth_can .= ( ( $is_auth['auth_reply'] ) ? $lang['Rules_reply_can'] : $lang['Rules_reply_cannot'] ) . '<br />';
 369  $s_auth_can .= ( ( $is_auth['auth_edit'] ) ? $lang['Rules_edit_can'] : $lang['Rules_edit_cannot'] ) . '<br />';
 370  $s_auth_can .= ( ( $is_auth['auth_delete'] ) ? $lang['Rules_delete_can'] : $lang['Rules_delete_cannot'] ) . '<br />';
 371  $s_auth_can .= ( ( $is_auth['auth_vote'] ) ? $lang['Rules_vote_can'] : $lang['Rules_vote_cannot'] ) . '<br />';
 372   
 373  if ( $is_auth['auth_mod'] )
 374  {
 375      $s_auth_can .= sprintf($lang['Rules_moderate'], '<a href="' . append_sid("modcp.$phpEx?" . POST_FORUM_URL . "=$forum_id&amp;start=" . $start . "&amp;p_sid=" . $userdata['priv_session_id']) . '">', '</a>');
 376  }
 377   
 378  //
 379  // Mozilla navigation bar
 380  //
 381  $nav_links['up'] = array(
 382      'url' => append_sid('index.'.$phpEx),
 383      'title' => sprintf($lang['Forum_Index'], $board_config['sitename'])
 384  );
 385   
 386  //
 387  // Dump out the page header and load viewforum template
 388  //
 389  define('SHOW_ONLINE', true);
 390  $page_title = $lang['View_forum'] . ' - ' . $forum_row['forum_name'];
 391  include($phpbb_root_path . 'includes/page_header.'.$phpEx);
 392   
 393  $template->set_filenames(array(
 394      'body' => 'viewforum_body.tpl')
 395  );
 396  make_jumpbox('viewforum.'.$phpEx);
 397   
 398  $template->assign_vars(array(
 399      'FORUM_ID' => $forum_id,
 400      'FORUM_NAME' => $forum_row['forum_name'],
 401      'MODERATORS' => $forum_moderators,
 402      'POST_IMG' => ( $forum_row['forum_status'] == FORUM_LOCKED ) ? $images['post_locked'] : $images['post_new'],
 403   
 404      'FOLDER_IMG' => $images['folder'],
 405      'FOLDER_NEW_IMG' => $images['folder_new'],
 406      'FOLDER_HOT_IMG' => $images['folder_hot'],
 407      'FOLDER_HOT_NEW_IMG' => $images['folder_hot_new'],
 408      'FOLDER_LOCKED_IMG' => $images['folder_locked'],
 409      'FOLDER_LOCKED_NEW_IMG' => $images['folder_locked_new'],
 410      'FOLDER_STICKY_IMG' => $images['folder_sticky'],
 411      'FOLDER_STICKY_NEW_IMG' => $images['folder_sticky_new'],
 412      'FOLDER_ANNOUNCE_IMG' => $images['folder_announce'],
 413      'FOLDER_ANNOUNCE_NEW_IMG' => $images['folder_announce_new'],
 414   
 415      'L_TOPICS' => $lang['Topics'],
 416      'L_REPLIES' => $lang['Replies'],
 417      'L_VIEWS' => $lang['Views'],
 418      'L_POSTS' => $lang['Posts'],
 419      'L_LASTPOST' => $lang['Last_Post'], 
 420      'L_MODERATOR' => $l_moderators, 
 421      'L_MARK_TOPICS_READ' => $lang['Mark_all_topics'], 
 422      'L_POST_NEW_TOPIC' => ( $forum_row['forum_status'] == FORUM_LOCKED ) ? $lang['Forum_locked'] : $lang['Post_new_topic'], 
 423      'L_NO_NEW_POSTS' => $lang['No_new_posts'],
 424      'L_NEW_POSTS' => $lang['New_posts'],
 425      'L_NO_NEW_POSTS_LOCKED' => $lang['No_new_posts_locked'], 
 426      'L_NEW_POSTS_LOCKED' => $lang['New_posts_locked'], 
 427      'L_NO_NEW_POSTS_HOT' => $lang['No_new_posts_hot'],
 428      'L_NEW_POSTS_HOT' => $lang['New_posts_hot'],
 429      'L_ANNOUNCEMENT' => $lang['Post_Announcement'], 
 430      'L_STICKY' => $lang['Post_Sticky'], 
 431      'L_POSTED' => $lang['Posted'],
 432      'L_JOINED' => $lang['Joined'],
 433      'L_AUTHOR' => $lang['Author'],
 434   
 435      'S_AUTH_LIST' => $s_auth_can, 
 436   
 437      'U_VIEW_FORUM' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL ."=$forum_id"),
 438   
 439      'U_MARK_READ' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id&amp;mark=topics"))
 440  );
 441  //
 442  // End header
 443  //
 444   
 445  //
 446  // Okay, lets dump out the page ...
 447  //
 448  if( $total_topics )
 449  {
 450      for($i = 0; $i < $total_topics; $i++)
 451      {
 452          $topic_id = $topic_rowset[$i]['topic_id'];
 453   
 454          $topic_title = ( count($orig_word) ) ? preg_replace($orig_word, $replacement_word, $topic_rowset[$i]['topic_title']) : $topic_rowset[$i]['topic_title'];
 455   
 456          $replies = $topic_rowset[$i]['topic_replies'];
 457   
 458          $topic_type = $topic_rowset[$i]['topic_type'];
 459   
 460          if( $topic_type == POST_ANNOUNCE )
 461          {
 462              $topic_type = $lang['Topic_Announcement'] . ' ';
 463          }
 464          else if( $topic_type == POST_STICKY )
 465          {
 466              $topic_type = $lang['Topic_Sticky'] . ' ';
 467          }
 468          else
 469          {
 470              $topic_type = '';        
 471          }
 472   
 473          if( $topic_rowset[$i]['topic_vote'] )
 474          {
 475              $topic_type .= $lang['Topic_Poll'] . ' ';
 476          }
 477          
 478          if( $topic_rowset[$i]['topic_status'] == TOPIC_MOVED )
 479          {
 480              $topic_type = $lang['Topic_Moved'] . ' ';
 481              $topic_id = $topic_rowset[$i]['topic_moved_id'];
 482   
 483              $folder_image =  $images['folder'];
 484              $folder_alt = $lang['Topics_Moved'];
 485              $newest_post_img = '';
 486          }
 487          else
 488          {
 489              if( $topic_rowset[$i]['topic_type'] == POST_ANNOUNCE )
 490              {
 491                  $folder = $images['folder_announce'];
 492                  $folder_new = $images['folder_announce_new'];
 493              }
 494              else if( $topic_rowset[$i]['topic_type'] == POST_STICKY )
 495              {
 496                  $folder = $images['folder_sticky'];
 497                  $folder_new = $images['folder_sticky_new'];
 498              }
 499              else if( $topic_rowset[$i]['topic_status'] == TOPIC_LOCKED )
 500              {
 501                  $folder = $images['folder_locked'];
 502                  $folder_new = $images['folder_locked_new'];
 503              }
 504              else
 505              {
 506                  if($replies >= $board_config['hot_threshold'])
 507                  {
 508                      $folder = $images['folder_hot'];
 509                      $folder_new = $images['folder_hot_new'];
 510                  }
 511                  else
 512                  {
 513                      $folder = $images['folder'];
 514                      $folder_new = $images['folder_new'];
 515                  }
 516              }
 517   
 518              $newest_post_img = '';
 519              if( $userdata['session_logged_in'] )
 520              {
 521                  if( $topic_rowset[$i]['post_time'] > $userdata['user_lastvisit'] ) 
 522                  {
 523                      if( !empty($tracking_topics) || !empty($tracking_forums) || isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all']) )
 524                      {
 525                          $unread_topics = true;
 526   
 527                          if( !empty($tracking_topics[$topic_id]) )
 528                          {
 529                              if( $tracking_topics[$topic_id] >= $topic_rowset[$i]['post_time'] )
 530                              {
 531                                  $unread_topics = false;
 532                              }
 533                          }
 534   
 535                          if( !empty($tracking_forums[$forum_id]) )
 536                          {
 537                              if( $tracking_forums[$forum_id] >= $topic_rowset[$i]['post_time'] )
 538                              {
 539                                  $unread_topics = false;
 540                              }
 541                          }
 542   
 543                          if( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all']) )
 544                          {
 545                              if( $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all'] >= $topic_rowset[$i]['post_time'] )
 546                              {
 547                                  $unread_topics = false;
 548                              }
 549                          }
 550   
 551                          if( $unread_topics )
 552                          {
 553                              $folder_image = $folder_new;
 554                              $folder_alt = $lang['New_posts'];
 555   
 556                              $newest_post_img = '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id&amp;view=newest") . '"><img src="' . $images['icon_newest_reply'] . '" alt="' . $lang['View_newest_post'] . '" title="' . $lang['View_newest_post'] . '" border="0" /></a> ';
 557                          }
 558                          else
 559                          {
 560                              $folder_image = $folder;
 561                              $folder_alt = ( $topic_rowset[$i]['topic_status'] == TOPIC_LOCKED ) ? $lang['Topic_locked'] : $lang['No_new_posts'];
 562   
 563                              $newest_post_img = '';
 564                          }
 565                      }
 566                      else
 567                      {
 568                          $folder_image = $folder_new;
 569                          $folder_alt = ( $topic_rowset[$i]['topic_status'] == TOPIC_LOCKED ) ? $lang['Topic_locked'] : $lang['New_posts'];
 570   
 571                          $newest_post_img = '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id&amp;view=newest") . '"><img src="' . $images['icon_newest_reply'] . '" alt="' . $lang['View_newest_post'] . '" title="' . $lang['View_newest_post'] . '" border="0" /></a> ';
 572                      }
 573                  }
 574                  else 
 575                  {
 576                      $folder_image = $folder;
 577                      $folder_alt = ( $topic_rowset[$i]['topic_status'] == TOPIC_LOCKED ) ? $lang['Topic_locked'] : $lang['No_new_posts'];
 578   
 579                      $newest_post_img = '';
 580                  }
 581              }
 582              else
 583              {
 584                  $folder_image = $folder;
 585                  $folder_alt = ( $topic_rowset[$i]['topic_status'] == TOPIC_LOCKED ) ? $lang['Topic_locked'] : $lang['No_new_posts'];
 586   
 587                  $newest_post_img = '';
 588              }
 589          }
 590   
 591          if( ( $replies + 1 ) > $board_config['posts_per_page'] )
 592          {
 593              $total_pages = ceil( ( $replies + 1 ) / $board_config['posts_per_page'] );
 594              $goto_page = ' [ <img src="' . $images['icon_gotopost'] . '" alt="' . $lang['Goto_page'] . '" title="' . $lang['Goto_page'] . '" />' . $lang['Goto_page'] . ': ';
 595   
 596              $times = 1;
 597              for($j = 0; $j < $replies + 1; $j += $board_config['posts_per_page'])
 598              {
 599                  $goto_page .= '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=" . $topic_id . "&amp;start=$j") . '">' . $times . '</a>';
 600                  if( $times == 1 && $total_pages > 4 )
 601                  {
 602                      $goto_page .= ' ... ';
 603                      $times = $total_pages - 3;
 604                      $j += ( $total_pages - 4 ) * $board_config['posts_per_page'];
 605                  }
 606                  else if ( $times < $total_pages )
 607                  {
 608                      $goto_page .= ', ';
 609                  }
 610                  $times++;
 611              }
 612              $goto_page .= ' ] ';
 613          }
 614          else
 615          {
 616              $goto_page = '';
 617          }
 618          
 619          $view_topic_url = append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id");
 620   
 621          $topic_author = ( $topic_rowset[$i]['user_id'] != ANONYMOUS ) ? '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . '=' . $topic_rowset[$i]['user_id']) . '">' : '';
 622          $topic_author .= ( $topic_rowset[$i]['user_id'] != ANONYMOUS ) ? $topic_rowset[$i]['username'] : ( ( $topic_rowset[$i]['post_username'] != '' ) ? $topic_rowset[$i]['post_username'] : $lang['Guest'] );
 623   
 624          $topic_author .= ( $topic_rowset[$i]['user_id'] != ANONYMOUS ) ? '</a>' : '';
 625   
 626          $first_post_time = create_date($board_config['default_dateformat'], $topic_rowset[$i]['topic_time'], $board_config['board_timezone']);
 627   
 628          $last_post_time = create_date($board_config['default_dateformat'], $topic_rowset[$i]['post_time'], $board_config['board_timezone']);
 629   
 630          $last_post_author = ( $topic_rowset[$i]['id2'] == ANONYMOUS ) ? ( ($topic_rowset[$i]['post_username2'] != '' ) ? $topic_rowset[$i]['post_username2'] . ' ' : $lang['Guest'] . ' ' ) : '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . '='  . $topic_rowset[$i]['id2']) . '">' . $topic_rowset[$i]['user2'] . '</a>';
 631   
 632          $last_post_url = '<a href="' . append_sid("viewtopic.$phpEx?"  . POST_POST_URL . '=' . $topic_rowset[$i]['topic_last_post_id']) . '#' . $topic_rowset[$i]['topic_last_post_id'] . '"><img src="' . $images['icon_latest_reply'] . '" alt="' . $lang['View_latest_post'] . '" title="' . $lang['View_latest_post'] . '" border="0" /></a>';
 633   
 634          $views = $topic_rowset[$i]['topic_views'];
 635          
 636          $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
 637          $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];
 638   
 639          $template->assign_block_vars('topicrow', array(
 640              'ROW_COLOR' => $row_color,
 641              'ROW_CLASS' => $row_class,
 642              'FORUM_ID' => $forum_id,
 643              'TOPIC_ID' => $topic_id,
 644              'TOPIC_FOLDER_IMG' => $folder_image, 
 645              'TOPIC_AUTHOR' => $topic_author, 
 646              'GOTO_PAGE' => $goto_page,
 647              'REPLIES' => $replies,
 648              'NEWEST_POST_IMG' => $newest_post_img, 
 649              'TOPIC_TITLE' => $topic_title,
 650              'TOPIC_TYPE' => $topic_type,
 651              'VIEWS' => $views,
 652              'FIRST_POST_TIME' => $first_post_time, 
 653              'LAST_POST_TIME' => $last_post_time, 
 654              'LAST_POST_AUTHOR' => $last_post_author, 
 655              'LAST_POST_IMG' => $last_post_url, 
 656   
 657              'L_TOPIC_FOLDER_ALT' => $folder_alt, 
 658   
 659              'U_VIEW_TOPIC' => $view_topic_url)
 660          );
 661      }
 662   
 663      $topics_count -= $total_announcements;
 664   
 665      $template->assign_vars(array(
 666          'PAGINATION' => generate_pagination("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id&amp;topicdays=$topic_days", $topics_count, $board_config['topics_per_page'], $start),
 667          'PAGE_NUMBER' => sprintf($lang['Page_of'], ( floor( $start / $board_config['topics_per_page'] ) + 1 ), ceil( $topics_count / $board_config['topics_per_page'] )), 
 668   
 669          'L_GOTO_PAGE' => $lang['Goto_page'])
 670      );
 671  }
 672  else
 673  {
 674      //
 675      // No topics
 676      //
 677      $no_topics_msg = ( $forum_row['forum_status'] == FORUM_LOCKED ) ? $lang['Forum_locked'] : $lang['No_topics_post_one'];
 678      $template->assign_vars(array(
 679          'L_NO_TOPICS' => $no_topics_msg)
 680      );
 681   
 682      $template->assign_block_vars('switch_no_topics', array() );
 683   
 684  }
 685   
 686  //
 687  // Parse the page and print
 688  //
 689  $template->pparse('body');
 690   
 691  //
 692  // Page footer
 693  //
 694  include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
 695   
 696  ?>