[ Index ]
 

Code source de Phorum 5.1.25

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/ -> read.php (source)

   1  <?php
   2  
   3  ////////////////////////////////////////////////////////////////////////////////
   4  //                                                                            //
   5  //   Copyright (C) 2006  Phorum Development Team                              //
   6  //   http://www.phorum.org                                                    //
   7  //                                                                            //
   8  //   This program is free software. You can redistribute it and/or modify     //
   9  //   it under the terms of either the current Phorum License (viewable at     //
  10  //   phorum.org) or the Phorum License that was distributed with this file    //
  11  //                                                                            //
  12  //   This program is distributed in the hope that it will be useful,          //
  13  //   but WITHOUT ANY WARRANTY, without even the implied warranty of           //
  14  //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                     //
  15  //                                                                            //
  16  //   You should have received a copy of the Phorum License                    //
  17  //   along with this program.                                                 //
  18  ////////////////////////////////////////////////////////////////////////////////
  19  define('phorum_page','read');
  20  
  21  include_once ("./common.php");
  22  include_once ("./include/email_functions.php");
  23  include_once ("./include/format_functions.php");
  24  
  25  
  26  // set all our URL's ... we need these earlier
  27  phorum_build_common_urls();
  28  
  29  // checking read-permissions
  30  if(!phorum_check_read_common()) {
  31    return;
  32  }
  33  
  34  // somehow we got to a folder
  35  if(empty($PHORUM["forum_id"]) || $PHORUM["folder_flag"]){
  36      $dest_url = phorum_get_url(PHORUM_INDEX_URL, $PHORUM["forum_id"]);
  37      phorum_redirect_by_url($dest_url);
  38      exit();
  39  }
  40  
  41  if ($PHORUM["DATA"]["LOGGEDIN"]) { // reading newflags in
  42      $PHORUM['user']['newinfo']=phorum_db_newflag_get_flags();
  43  }
  44  
  45  $PHORUM["DATA"]["MODERATOR"] = phorum_user_access_allowed(PHORUM_USER_ALLOW_MODERATE_MESSAGES);
  46  
  47  if($PHORUM["DATA"]["MODERATOR"]) {
  48          // find out how many forums this user can moderate
  49          $forums=phorum_db_get_forums(0,-1,$PHORUM['vroot']);
  50  
  51          $modforums=0;
  52          foreach($forums as $id=>$forum){
  53                  if($forum["folder_flag"]==0 && phorum_user_moderate_allowed($id)){
  54                     $modforums++;
  55                  }
  56          }
  57          if($modforums > 1) {
  58                  $build_move_url=true;
  59          } else {
  60                  $build_move_url=false;
  61          }
  62  }
  63  
  64  // setup some stuff based on the url passed
  65  if(empty($PHORUM["args"][1])) {
  66      phorum_redirect_by_url(phorum_get_url(PHORUM_LIST_URL));
  67      exit();
  68  } elseif(empty($PHORUM["args"][2])) {
  69      $thread = (int)$PHORUM["args"][1];
  70      $message_id = (int)$PHORUM["args"][1];
  71  } else{
  72      if(!is_numeric($PHORUM["args"][2])) {
  73          $dest_url="";
  74          $newervar=(int)$PHORUM["args"][1];
  75  
  76          switch($PHORUM["args"][2]) {
  77              case "newer":
  78                  $thread = phorum_db_get_newer_thread($newervar);
  79                  break;
  80              case "older":
  81                  $thread = phorum_db_get_older_thread($newervar);
  82                  break;
  83              case "markthreadread":
  84                  // thread needs to be in $thread for the redirection
  85                  $thread = (int)$PHORUM["args"][1];
  86                  $thread_message=phorum_db_get_message($thread,'message_id');
  87  
  88                  $mids=array();
  89                  foreach($thread_message['meta']['message_ids'] as $mid) {
  90                      if(!isset($PHORUM['user']['newinfo'][$mid]) && $mid > $PHORUM['user']['newinfo']['min_id']) {
  91                          $mids[]=$mid;
  92                      }
  93                  }
  94  
  95                  $msg_count=count($mids);
  96  
  97                  // any messages left to update newinfo with?
  98                  if($msg_count > 0){
  99                      phorum_db_newflag_add_read($mids);
 100                      unset($mids);
 101                  }
 102                  break;
 103              case "gotonewpost":
 104                  // thread needs to be in $thread for the redirection
 105                  $thread = (int)$PHORUM["args"][1];
 106                  $thread_message=phorum_db_get_message($thread,'message_id');
 107                  $message_ids=$thread_message['meta']['message_ids'];
 108  
 109                  foreach($message_ids as $mkey => $mid) {
 110                      // if already read, remove it from message-array
 111                      if(isset($PHORUM['user']['newinfo'][$mid]) || $mid <= $PHORUM['user']['newinfo']['min_id']) {
 112                          unset($message_ids[$mkey]);
 113                      }
 114  
 115                  }
 116  
 117                  // it could happen that they are all read
 118                  if(count($message_ids)) {
 119                      asort($message_ids,SORT_NUMERIC); // make sure they are sorted
 120  
 121  
 122                      $new_message=array_shift($message_ids); // get the first element
 123  
 124                      if(!$PHORUM['threaded_read']) { // get new page
 125                          $new_page=ceil(phorum_db_get_message_index($thread,$new_message)/$PHORUM['read_length']);
 126                          $dest_url=phorum_get_url(PHORUM_READ_URL,$thread,$new_message,"page=$new_page");
 127                      } else { // for threaded
 128                          $dest_url=phorum_get_url(PHORUM_READ_URL,$thread,$new_message);
 129                      }
 130                  } else {
 131                      // lets go back to the index if they are all read
 132                      $dest_url=phorum_get_url(PHORUM_LIST_URL);
 133                  }
 134  
 135                  break;
 136  
 137  
 138          }
 139  
 140          if(empty($dest_url)) {
 141              if($thread > 0) {
 142                  $dest_url = phorum_get_url(PHORUM_READ_URL, $thread);
 143              } else{
 144                  // we are either at the top or the bottom, go back to the list.
 145                  $dest_url = phorum_get_url(PHORUM_LIST_URL);
 146              }
 147          }
 148  
 149          phorum_redirect_by_url($dest_url);
 150          exit();
 151      }
 152  
 153      $thread = (int)$PHORUM["args"][1];
 154      $message_id = (int)$PHORUM["args"][2];
 155  }
 156  
 157  // determining the page if page isn't given and message_id != thread
 158  $page=0;
 159  if(!$PHORUM["threaded_read"]) {
 160      if(isset($PHORUM['args']['page']) && is_numeric($PHORUM["args"]["page"]) && $PHORUM["args"]["page"] > 0) {
 161                  $page=(int)$PHORUM["args"]["page"];
 162      } elseif($message_id != $thread) {
 163                  $page=ceil(phorum_db_get_message_index($thread,$message_id)/$PHORUM['read_length']);
 164      } else {
 165                  $page=1;
 166      }
 167      if(empty($page)) {
 168          $page=1;
 169      }
 170  }
 171  
 172  // Get the thread
 173  $data = phorum_db_get_messages($thread,$page);
 174  
 175  
 176  if(!empty($data) && isset($data[$thread]) && isset($data[$message_id])) {
 177  
 178      $fetch_user_ids = $data['users'];
 179      unset($data['users']);
 180  
 181      // remove the unneeded message bodies in threaded view
 182      // to avoid unnecessary formatting of bodies
 183      if ($PHORUM["threaded_read"] &&
 184          !(isset($PHORUM['TMP']['all_bodies_in_threaded_read']) &&
 185           !empty($PHORUM['TMP']['all_bodies_in_threaded_read']) ) ) {
 186  
 187              $remove_threaded_bodies=1;
 188              // the flag is used in the foreach-loop later on
 189      } else {
 190              $remove_threaded_bodies=0;
 191      }
 192  
 193      // build URL's that apply only here.
 194      if($PHORUM["float_to_top"]) {
 195          $PHORUM["DATA"]["URL"]["OLDERTHREAD"] = phorum_get_url(PHORUM_READ_URL, $data[$thread]["modifystamp"], "older");
 196          $PHORUM["DATA"]["URL"]["NEWERTHREAD"] = phorum_get_url(PHORUM_READ_URL, $data[$thread]["modifystamp"], "newer");
 197      } else{
 198          $PHORUM["DATA"]["URL"]["OLDERTHREAD"] = phorum_get_url(PHORUM_READ_URL, $thread, "older");
 199          $PHORUM["DATA"]["URL"]["NEWERTHREAD"] = phorum_get_url(PHORUM_READ_URL, $thread, "newer");
 200      }
 201  
 202      $PHORUM["DATA"]["URL"]["MARKTHREADREAD"] = phorum_get_url(PHORUM_READ_URL, $thread, "markthreadread");
 203      $PHORUM["DATA"]["POST"]["thread"] = $thread;
 204      $PHORUM["DATA"]["POST"]["parentid"] = $message_id;
 205      $PHORUM["DATA"]["POST"]["subject"] = $data[$message_id]["subject"];
 206  
 207      $thread_is_closed = (bool)$data[$thread]["closed"];
 208      $thread_is_announcement = ($data[$thread]["sort"]==PHORUM_SORT_ANNOUNCEMENT)?1:0;
 209  
 210      // we might have more messages for mods
 211      if($PHORUM["DATA"]["MODERATOR"] && isset($data[$thread]["meta"]["message_ids_moderator"])) {
 212          $threadnum=count($data[$thread]['meta']['message_ids_moderator']);
 213      } else {
 214          $threadnum=$data[$thread]['thread_count'];
 215      }
 216  
 217      if(!$PHORUM["threaded_read"] && $threadnum > $PHORUM["read_length"]){
 218          $pages=ceil($threadnum/$PHORUM["read_length"]);
 219  
 220          if($pages<=11){
 221              $page_start=1;
 222          } elseif($pages-$page<5) {
 223              $page_start=$pages-10;
 224          } elseif($pages>11 && $page>6){
 225              $page_start=$page-5;
 226          } else {
 227              $page_start=1;
 228          }
 229  
 230          for($x=0;$x<11 && $x<$pages;$x++){
 231              $pageno=$x+$page_start;
 232              $PHORUM["DATA"]["PAGES"][] = array(
 233              "pageno"=>$pageno,
 234              "url"=>phorum_get_url(PHORUM_READ_URL, $thread, "page=$pageno")
 235              );
 236          }
 237  
 238          $PHORUM["DATA"]["CURRENTPAGE"]=$page;
 239          $PHORUM["DATA"]["TOTALPAGES"]=$pages;
 240  
 241          if($page_start>1){
 242              $PHORUM["DATA"]["URL"]["FIRSTPAGE"]=phorum_get_url(PHORUM_READ_URL, $thread, "page=1");
 243          }
 244  
 245          if($pageno<$pages){
 246              $PHORUM["DATA"]["URL"]["LASTPAGE"]=phorum_get_url(PHORUM_READ_URL, $thread, "page=$pages");
 247          }
 248  
 249          if($pages>$page){
 250              $nextpage=$page+1;
 251              $PHORUM["DATA"]["URL"]["NEXTPAGE"]=phorum_get_url(PHORUM_READ_URL, $thread, "page=$nextpage");
 252          }
 253          if($page>1){
 254              $prevpage=$page-1;
 255              $PHORUM["DATA"]["URL"]["PREVPAGE"]=phorum_get_url(PHORUM_READ_URL, $thread, "page=$prevpage");
 256          }
 257      }
 258  
 259      // fetch_user_ids filled from phorum_db_get_messages
 260      if(isset($fetch_user_ids) && count($fetch_user_ids)){
 261          $user_info=phorum_user_get($fetch_user_ids, false);
 262          // hook to modify user info
 263          $user_info = phorum_hook("read_user_info", $user_info);
 264      }
 265  
 266      // URLS which are common for the thread
 267      if($PHORUM["DATA"]["MODERATOR"]) {
 268          if($build_move_url) {
 269                  $URLS["move_url"] = phorum_get_url(PHORUM_MODERATION_URL, PHORUM_MOVE_THREAD, $thread);
 270          }
 271          $URLS["merge_url"] = phorum_get_url(PHORUM_MODERATION_URL, PHORUM_MERGE_THREAD, $thread);
 272          $URLS["close_url"] = phorum_get_url(PHORUM_MODERATION_URL, PHORUM_CLOSE_THREAD, $thread);
 273          $URLS["reopen_url"] = phorum_get_url(PHORUM_MODERATION_URL, PHORUM_REOPEN_THREAD, $thread);
 274      }
 275  
 276  
 277  
 278  
 279      // main loop for template setup
 280      $read_messages=array(); // needed for newinfo
 281      foreach($data as $key => $row) {
 282  
 283          // should we remove the bodies in threaded view
 284          if($remove_threaded_bodies) {
 285              if ($row["message_id"] != $message_id) {
 286                  unset($row["body"]); // strip body
 287              }
 288          }
 289  
 290          // assign user data to the row
 291          if($row["user_id"] && isset($user_info[$row["user_id"]])){
 292              $row["user"]=$user_info[$row["user_id"]];
 293              unset($row["user"]["password"]);
 294              unset($row["user"]["password_tmp"]);
 295          }
 296          if(!$PHORUM["threaded_read"] && $PHORUM["DATA"]["LOGGEDIN"] && $row['message_id'] > $PHORUM['user']['newinfo']['min_id'] && !isset($PHORUM['user']['newinfo'][$row['message_id']])) { // set this message as read
 297              $read_messages[] = array("id"=>$row['message_id'],"forum"=>$row['forum_id']);
 298          }
 299          // is the message unapproved?
 300          $row["is_unapproved"] = ($row['status'] < 0) ? 1 : 0;
 301  
 302          // all stuff that makes only sense for moderators or admin
 303          if($PHORUM["DATA"]["MODERATOR"]) {
 304  
 305              $row["delete_url1"] = phorum_get_url(PHORUM_MODERATION_URL, PHORUM_DELETE_MESSAGE, $row["message_id"]);
 306              $row["delete_url2"] = phorum_get_url(PHORUM_MODERATION_URL, PHORUM_DELETE_TREE, $row["message_id"]);
 307              $row["edit_url"]=phorum_get_url(PHORUM_POSTING_URL, "moderation", $row["message_id"]);
 308              $row["split_url"]=phorum_get_url(PHORUM_MODERATION_URL, PHORUM_SPLIT_THREAD, $row["message_id"]);
 309              if($row['is_unapproved']) {
 310                $row["approve_url"]=phorum_get_url(PHORUM_MODERATION_URL, PHORUM_APPROVE_MESSAGE, $row["message_id"]);
 311              } else {
 312                $row["hide_url"]=phorum_get_url(PHORUM_MODERATION_URL, PHORUM_HIDE_POST, $row["message_id"]);
 313              }
 314              if($build_move_url) {
 315                  $row["move_url"] = $URLS["move_url"];
 316              }
 317              $row["merge_url"] = $URLS["merge_url"];
 318              $row["close_url"] = $URLS["close_url"];
 319              $row["reopen_url"] = $URLS["reopen_url"];
 320          }
 321  
 322          // allow editing only if logged in, allowed for forum, the thread is open,
 323          // its the same user, and its within the time restriction
 324          if($PHORUM["user"]["user_id"]==$row["user_id"] && phorum_user_access_allowed(PHORUM_USER_ALLOW_EDIT) &&
 325              !$thread_is_closed &&($PHORUM["user_edit_timelimit"] == 0 || $row["datestamp"] + ($PHORUM["user_edit_timelimit"] * 60) >= time())) {
 326              $row["edit"]=1;
 327              if($PHORUM["DATA"]["MODERATOR"]) {
 328                  $row["edituser_url"]=$row["edit_url"];
 329              } else {
 330                  $row["edituser_url"]=phorum_get_url(PHORUM_POSTING_URL, "edit", $row["message_id"]);
 331              }
 332          }
 333  
 334          // this stuff is used in threaded and non threaded.
 335          $row["short_datestamp"] = phorum_date($PHORUM["short_date"], $row["datestamp"]);
 336          $row["datestamp"] = phorum_date($PHORUM["long_date"], $row["datestamp"]);
 337          $row["url"] = phorum_get_url(PHORUM_READ_URL, $row["thread"], $row["message_id"]);
 338          $row["reply_url"] = phorum_get_url(PHORUM_REPLY_URL, $row["thread"], $row["message_id"]);
 339          $row["quote_url"] = phorum_get_url(PHORUM_REPLY_URL, $row["thread"], $row["message_id"], "quote=1");
 340          $row["report_url"] = phorum_get_url(PHORUM_REPORT_URL, $row["message_id"]);
 341          $row["follow_url"] = phorum_get_url(PHORUM_FOLLOW_URL, $row["thread"]);
 342  
 343          // can only send private replies if the author is a registered user
 344          if ($PHORUM["enable_pm"] && $row["user_id"]) {
 345              $row["private_reply_url"] = phorum_get_url(PHORUM_PM_URL, "page=send", "message_id=".$row["message_id"]);
 346          } else {
 347              $row["private_reply_url"] = false;
 348          }
 349  
 350          // check if its the first message in the thread
 351          if($row["message_id"] == $row["thread"]) {
 352              $row["threadstart"] = true;
 353          } else{
 354              $row["threadstart"] = false;
 355          }
 356  
 357          // should we show the signature?
 358          if(isset($row['body'])) {
 359              if(isset($row["user"]["signature"])
 360                 && isset($row['meta']['show_signature']) && $row['meta']['show_signature']==1){
 361  
 362                     $phorum_sig=trim($row["user"]["signature"]);
 363                     if(!empty($phorum_sig)){
 364                         $row["body"].="\n\n$phorum_sig";
 365                     }
 366              }
 367  
 368              // add the edited-message to a post if its edited
 369              if(isset($row['meta']['edit_count']) && $row['meta']['edit_count'] > 0) {
 370                  $editmessage = str_replace ("%count%", $row['meta']['edit_count'], $PHORUM["DATA"]["LANG"]["EditedMessage"]);
 371                  $editmessage = str_replace ("%lastedit%", phorum_date($PHORUM["short_date"],$row['meta']['edit_date']),  $editmessage);
 372                  $editmessage = str_replace ("%lastuser%", $row['meta']['edit_username'],  $editmessage);
 373                  $row["body"].="\n\n\n\n$editmessage";
 374              }
 375          }
 376  
 377  
 378          if(!empty($row["user_id"])) {
 379              $row["profile_url"] = phorum_get_url(PHORUM_PROFILE_URL, $row["user_id"]);
 380              // we don't normally put HTML in this code, but this makes it easier on template builders
 381              $row["linked_author"] = "<a href=\"".$row["profile_url"]."\">".htmlspecialchars($row["author"])."</a>";
 382          } elseif(!empty($row["email"])) {
 383              $row["email_url"] = phorum_html_encode("mailto:$row[email]");
 384              // we don't normally put HTML in this code, but this makes it easier on template builders
 385              $row["linked_author"] = "<a href=\"".$row["email_url"]."\">".htmlspecialchars($row["author"])."</a>";
 386          } else {
 387              $row["linked_author"] = htmlspecialchars($row["author"]);
 388          }
 389  
 390          // mask host if not a moderator
 391          if(empty($PHORUM["user"]["admin"]) && (empty($PHORUM["DATA"]["MODERATOR"]) || !PHORUM_MOD_IP_VIEW)){
 392              if($PHORUM["display_ip_address"]){
 393                  if($row["moderator_post"]){
 394                      $row["ip"]=$PHORUM["DATA"]["LANG"]["Moderator"];
 395                  } elseif(is_numeric(str_replace(".", "", $row["ip"]))){
 396                      $row["ip"]=substr($row["ip"],0,strrpos($row["ip"],'.')).'.---';
 397                  } else {
 398                      $row["ip"]="---".strstr($row["ip"], ".");
 399                  }
 400  
 401              } else {
 402                  $row["ip"]=$PHORUM["DATA"]["LANG"]["IPLogged"];
 403              }
 404          }
 405  
 406          if($PHORUM["max_attachments"]>0 && isset($row["meta"]["attachments"])){
 407              $PHORUM["DATA"]["ATTACHMENTS"]=true;
 408              $row["attachments"]=$row["meta"]["attachments"];
 409              // unset($row["meta"]["attachments"]);
 410              foreach($row["attachments"] as $key=>$file){
 411                  $row["attachments"][$key]["size"]=phorum_filesize($file["size"]);
 412                  $row["attachments"][$key]["name"]=htmlentities($file['name'], ENT_COMPAT, $PHORUM["DATA"]["CHARSET"]); // clear all special chars from name to avoid XSS
 413                  $row["attachments"][$key]["url"]=phorum_get_url(PHORUM_FILE_URL, "file={$file['file_id']}");
 414              }
 415          }
 416  
 417          // newflag, if its NOT in newinfo AND newer than min_id, then its a new message
 418          $row["new"]="";
 419          if ($PHORUM["DATA"]["LOGGEDIN"]){
 420              if (!isset($PHORUM['user']['newinfo'][$row['message_id']]) && $row['message_id'] > $PHORUM['user']['newinfo']['min_id']) {
 421                  $row["new"]= $PHORUM["DATA"]["LANG"]["newflag"];
 422              }
 423          }
 424  
 425          $messages[$row["message_id"]]=$row;
 426      }
 427  
 428      if($PHORUM["threaded_read"]) {
 429          // don't move this up.  We want it to be conditional.
 430          include_once ("./include/thread_sort.php");
 431  
 432          // run read-threads mods
 433          $messages = phorum_hook("readthreads", $messages);
 434  
 435          $messages = phorum_sort_threads($messages);
 436  
 437          if($PHORUM["DATA"]["LOGGEDIN"] && !isset($PHORUM['user']['newinfo'][$message_id]) && $message_id > $PHORUM['user']['newinfo']['min_id']) {
 438              $read_messages[] = array("id"=>$message_id,"forum"=>$messages[$message_id]['forum_id']);
 439          }
 440  
 441          // we have to loop again and create the urls for the Next and Previous links.
 442          foreach($messages as $key => $row) {
 443  
 444              if($PHORUM["count_views"]) {  // show viewcount if enabled
 445                    if($PHORUM["count_views"] == 2) { // viewcount as column
 446                        $PHORUM["DATA"]["VIEWCOUNT_COLUMN"]=true;
 447                        $messages[$key]["viewcount"]=$row['viewcount'];
 448                    } else { // viewcount added to the subject
 449                        $messages[$key]["subject"]=$row["subject"]." ({$row['viewcount']} {$PHORUM['DATA']['LANG']['Views']})";
 450                    }
 451              }
 452  
 453  
 454              $messages[$key]["next_url"] = $PHORUM["DATA"]["URL"]["NEWERTHREAD"];
 455              if(empty($last_key)) {
 456                  $messages[$key]["prev_url"] = $PHORUM["DATA"]["URL"]["OLDERTHREAD"];
 457              } else{
 458                  $messages[$key]["prev_url"] = phorum_get_url(PHORUM_READ_URL, $row["thread"], $last_key);
 459                  $messages[$last_key]["next_url"] = phorum_get_url(PHORUM_READ_URL, $row["thread"], $row["message_id"]);
 460              }
 461  
 462              $last_key = $key;
 463          }
 464      }
 465  
 466      // run read mods
 467      $messages = phorum_hook("read", $messages);
 468  
 469      // increment viewcount if enabled
 470      if($PHORUM['count_views'] && (empty($PHORUM["status"]) || $PHORUM["status"]=="normal")) {
 471          phorum_db_viewcount_inc($message_id);
 472      }
 473  
 474      // format messages
 475      $messages = phorum_format_messages($messages);
 476  
 477      // set up the data
 478      $PHORUM["DATA"]["MESSAGE"] = $messages[$message_id];
 479  
 480      // we need to remove the thread-starter from the data if we are not on the first page
 481      $threadsubject = $messages[$thread]["subject"];
 482      if($page > 1)
 483          unset($messages[$thread]);
 484  
 485      $PHORUM["DATA"]["MESSAGES"] = $messages;
 486  
 487  
 488      // alter the HTML_TITLE
 489      if(!empty($PHORUM["DATA"]["HTML_TITLE"])){
 490          $PHORUM["DATA"]["HTML_TITLE"].=htmlentities(PHORUM_SEPARATOR, ENT_COMPAT, $PHORUM["DATA"]["CHARSET"] );;
 491      }
 492      // No htmlentities() needed. The subject is already escaped.
 493      // Strip HTML tags from the HTML title. There might be HTML in
 494      // here, because of modules adding images and formatting.
 495      $PHORUM["DATA"]["HTML_TITLE"] .= trim(strip_tags($PHORUM["threaded_read"] ? $PHORUM["DATA"]["MESSAGE"]["subject"] : $threadsubject));
 496  
 497      // include the correct template
 498  
 499      include phorum_get_template("header");
 500      phorum_hook("after_header");
 501  
 502      if($PHORUM["threaded_read"]) {
 503          include phorum_get_template("read_threads");
 504      } else{
 505          include phorum_get_template("read");
 506      }
 507      if($PHORUM["DATA"]["LOGGEDIN"]) { // setting read messages really read
 508          if(count($read_messages)) {
 509              phorum_db_newflag_add_read($read_messages);
 510          }
 511      }
 512  
 513      // An anchor so clicking on a reply button can let the browser
 514      // jump to the editor or the closed thread message.
 515      if(isset($PHORUM["reply_on_read_page"]) && $PHORUM["reply_on_read_page"]) {
 516          print '<a name="REPLY"></a>';
 517      }
 518  
 519      // Never show the reply box if the message is closed.
 520      if($thread_is_closed) {
 521  
 522          // Closed announcements have their own specific message.
 523          $key = $thread_is_announcement ? "ThreadAnnouncement" : "ThreadClosed";
 524          $PHORUM["DATA"]["MESSAGE"]=$PHORUM["DATA"]["LANG"][$key];
 525          include phorum_get_template("message");
 526  
 527      } elseif (isset($PHORUM["reply_on_read_page"]) && $PHORUM["reply_on_read_page"]) {
 528  
 529          // Prepare the arguments for the posting.php script.
 530          $goto_mode = "reply";
 531          if (isset($PHORUM["args"]["quote"]) && $PHORUM["args"]["quote"]) {
 532              $goto_mode = "quote";
 533          }
 534  
 535          $PHORUM["postingargs"] = array(
 536              1 => $goto_mode,
 537              2 => $message_id,
 538              "as_include" => true
 539          );
 540  
 541          include ("./posting.php");
 542      }
 543  
 544      phorum_hook("before_footer");
 545      include phorum_get_template("footer");
 546  
 547  
 548  } elseif($toforum=phorum_check_moved_message($thread)) { // is it a moved thread?
 549  
 550      $PHORUM["DATA"]["MESSAGE"]=$PHORUM["DATA"]["LANG"]["MovedMessage"];
 551      $PHORUM['DATA']["URL"]["REDIRECT"]=phorum_get_url(PHORUM_FOREIGN_READ_URL, $toforum, $thread);
 552      $PHORUM['DATA']["BACKMSG"]=$PHORUM["DATA"]["LANG"]["MovedMessageTo"];
 553  
 554      $PHORUM["DATA"]["HTML_TITLE"] = htmlentities( $PHORUM["DATA"]["HTML_TITLE"], ENT_COMPAT, $PHORUM["DATA"]["CHARSET"] );
 555      // have to include the header here for the Redirect
 556      include phorum_get_template("header");
 557      phorum_hook("after_header");
 558      include phorum_get_template("message");
 559      phorum_hook("before_footer");
 560      include phorum_get_template("footer");
 561  
 562  } else { // message not found
 563      $PHORUM["DATA"]["ERROR"]=$PHORUM["DATA"]["LANG"]["MessageNotFound"];
 564      $PHORUM['DATA']["URL"]["REDIRECT"]=$PHORUM["DATA"]["URL"]["TOP"];
 565      $PHORUM['DATA']["BACKMSG"]=$PHORUM["DATA"]["LANG"]["BackToList"];
 566  
 567      $PHORUM["DATA"]["HTML_TITLE"] = htmlentities( $PHORUM["DATA"]["HTML_TITLE"], ENT_COMPAT, $PHORUM["DATA"]["CHARSET"] );
 568      // have to include the header here for the Redirect
 569      include phorum_get_template("header");
 570      phorum_hook("after_header");
 571      include phorum_get_template("message");
 572      phorum_hook("before_footer");
 573      include phorum_get_template("footer");
 574  }
 575  
 576  // find out if the given thread has been moved to another forum
 577  function phorum_check_moved_message($thread) {
 578      $forum_id=$GLOBALS['PHORUM']['forum_id'];
 579      $message=phorum_db_get_message($thread,'message_id',true);
 580  
 581      if(!empty($message) && $message['forum_id'] != $forum_id) {
 582          $ret=$message['forum_id'];
 583      } else {
 584          $ret=false;
 585      }
 586      return $ret;
 587  }
 588  
 589  ?>


Généré le : Thu Nov 29 12:22:27 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics