[ Index ]
 

Code source de GeekLog 1.4.1

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/public_html/ -> article.php (source)

   1  <?php
   2  
   3  /* Reminder: always indent with 4 spaces (no tabs). */
   4  // +---------------------------------------------------------------------------+
   5  // | Geeklog 1.4                                                               |
   6  // +---------------------------------------------------------------------------+
   7  // | article.php                                                               |
   8  // |                                                                           |
   9  // | Shows articles in various formats.                                        |
  10  // +---------------------------------------------------------------------------+
  11  // | Copyright (C) 2000-2006 by the following authors:                         |
  12  // |                                                                           |
  13  // | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
  14  // |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
  15  // |          Dirk Haun         - dirk AT haun-online DOT de                   |
  16  // |          Vincent Furia     - vinny01 AT users DOT sourceforge DOT net     |
  17  // +---------------------------------------------------------------------------+
  18  // |                                                                           |
  19  // | This program is free software; you can redistribute it and/or             |
  20  // | modify it under the terms of the GNU General Public License               |
  21  // | as published by the Free Software Foundation; either version 2            |
  22  // | of the License, or (at your option) any later version.                    |
  23  // |                                                                           |
  24  // | This program is distributed in the hope that it will be useful,           |
  25  // | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
  26  // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
  27  // | GNU General Public License for more details.                              |
  28  // |                                                                           |
  29  // | You should have received a copy of the GNU General Public License         |
  30  // | along with this program; if not, write to the Free Software Foundation,   |
  31  // | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
  32  // |                                                                           |
  33  // +---------------------------------------------------------------------------+
  34  //
  35  // $Id: article.php,v 1.84 2006/12/02 16:39:14 dhaun Exp $
  36  
  37  /**
  38  * This page is responsible for showing a single article in different modes which
  39  * may, or may not, include the comments attached
  40  *
  41  * @author   Jason Whittenburg
  42  * @author   Tony Bibbbs <tony@tonybibbs.com>
  43  * @author   Vincent Furia <vinny01 AT users DOT sourceforge DOT net>
  44  */
  45  
  46  /**
  47  * Geeklog common function library
  48  */
  49  require_once  ('lib-common.php');
  50  require_once ($_CONF['path_system'] . 'lib-story.php');
  51  if ($_CONF['trackback_enabled']) {
  52      require_once ($_CONF['path_system'] . 'lib-trackback.php');
  53  }
  54  
  55  // Uncomment the line below if you need to debug the HTTP variables being passed
  56  // to the script.  This will sometimes cause errors but it will allow you to see
  57  // the data being passed in a POST operation
  58  
  59  // echo COM_debug($_POST);
  60  
  61  // MAIN
  62  $display = '';
  63  
  64  $order = '';
  65  $query = '';
  66  $reply = '';
  67  if (isset ($_POST['mode'])) {
  68      $story = COM_applyFilter ($_POST['story']);
  69      $mode = COM_applyFilter ($_POST['mode']);
  70      if (isset ($_POST['order'])) {
  71          $order = COM_applyFilter ($_POST['order']);
  72      }
  73      if (isset ($_POST['query'])) {
  74          $query = COM_applyFilter ($_POST['query']);
  75      }
  76      if (isset ($_POST['reply'])) {
  77          $reply = COM_applyFilter ($_POST['reply']);
  78      }
  79  } else {
  80      COM_setArgNames (array ('story', 'mode'));
  81      $story = COM_applyFilter (COM_getArgument ('story'));
  82      $mode = COM_applyFilter (COM_getArgument ('mode'));
  83      if (isset ($_GET['order'])) {
  84          $order = COM_applyFilter ($_GET['order']);
  85      }
  86      if (isset ($_GET['query'])) {
  87          $query = COM_applyFilter ($_GET['query']);
  88      }
  89      if (isset ($_GET['reply'])) {
  90          $reply = COM_applyFilter ($_GET['reply']);
  91      }
  92  }
  93  
  94  if (empty ($story)) {
  95      echo COM_refresh ($_CONF['site_url'] . '/index.php');
  96      exit();
  97  }
  98  if ((strcasecmp ($order, 'ASC') != 0) && (strcasecmp ($order, 'DESC') != 0)) {
  99      $order = '';
 100  }
 101  
 102  $result = DB_query("SELECT COUNT(*) AS count FROM {$_TABLES['stories']} WHERE sid = '$story'" . COM_getPermSql ('AND'));
 103  $A = DB_fetchArray($result);
 104  $sql = array();
 105  if ($A['count'] > 0) {
 106      $sql['mysql'] = "SELECT STRAIGHT_JOIN s.*, UNIX_TIMESTAMP(s.date) AS day, "
 107       . "u.username, u.fullname, u.photo, u.email, t.topic, t.imageurl "
 108       . "FROM {$_TABLES['stories']} AS s, {$_TABLES['users']} AS u, {$_TABLES['topics']} AS t "
 109       . "WHERE (s.uid = u.uid) AND (s.tid = t.tid) AND (sid = '$story')";
 110  
 111       $sql['mssql'] = "SELECT STRAIGHT_JOIN s.sid, s.uid, s.draft_flag, s.tid, s.date, s.title, CAST(s.introtext AS text) AS introtext, CAST(s.bodytext AS text) AS bodytext, s.hits, s.numemails, s.comments, s.trackbacks, s.related, s.featured, s.show_topic_icon, s.commentcode, s.trackbackcode, s.statuscode, s.expire, s.postmode, s.frontpage, s.in_transit, s.owner_id, s.group_id, s.perm_owner, s.perm_group, s.perm_members, s.perm_anon, s.advanced_editor_mode, "
 112       . " UNIX_TIMESTAMP(s.date) AS day, "
 113       . "u.username, u.fullname, u.photo, u.email, t.topic, t.imageurl "
 114       . "FROM {$_TABLES['stories']} AS s, {$_TABLES['users']} AS u, {$_TABLES['topics']} AS t "
 115       . "WHERE (s.uid = u.uid) AND (s.tid = t.tid) AND (sid = '$story')";
 116  
 117      $result = DB_query ($sql);
 118      $A = DB_fetchArray ($result);
 119  
 120      $access = SEC_hasAccess ($A['owner_id'], $A['group_id'],
 121              $A['perm_owner'], $A['perm_group'], $A['perm_members'],
 122              $A['perm_anon']);
 123      if (($access == 0) OR !SEC_hasTopicAccess ($A['tid']) OR
 124          (($A['draft_flag'] == 1) AND !SEC_hasRights ('story.edit'))) {
 125          $display .= COM_siteHeader ('menu', $LANG_ACCESS['accessdenied'])
 126                   . COM_startBlock ($LANG_ACCESS['accessdenied'], '',
 127                             COM_getBlockTemplate ('_msg_block', 'header'))
 128                   . $LANG_ACCESS['storydenialmsg']
 129                   . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'))
 130                   . COM_siteFooter ();
 131      } elseif (($mode == 'print') && ($_CONF['hideprintericon'] == 0)) {
 132          $story_template = new Template ($_CONF['path_layout'] . 'article');
 133          $story_template->set_file ('article', 'printable.thtml');
 134          $story_template->set_var ('page_title',
 135                  $_CONF['site_name'] . ': ' . stripslashes ($A['title'])); 
 136          $story_template->set_var ('story_title', stripslashes ($A['title']));
 137          if (empty ($LANG_CHARSET)) {
 138              $charset = $_CONF['default_charset'];
 139              if (empty( $charset)) {
 140                  $charset = 'iso-8859-1';
 141              }
 142          } else {
 143              $charset = $LANG_CHARSET;
 144          }
 145          header ('Content-Type: text/html; charset='. $charset);
 146          $curtime = COM_getUserDateTimeFormat ($A['day']);
 147          $story_template->set_var ('story_date', $curtime[0]);
 148  
 149          if ($_CONF['contributedbyline'] == 1) {
 150              $story_template->set_var ('lang_contributedby', $LANG01[1]);
 151              $authorname = COM_getDisplayName ($A['uid']);
 152              $story_template->set_var ('author', $authorname);
 153              $story_template->set_var ('story_author', $authorname);
 154              $story_template->set_var ('story_author_username', $A['username']);
 155          }
 156  
 157          if ($A['postmode'] == 'plaintext') {
 158              $A['introtext'] = nl2br ($A['introtext']);
 159              $A['bodytext'] = nl2br ($A['bodytext']);
 160          }
 161          $story_template->set_var ('story_introtext',
 162                  PLG_replaceTags (stripslashes ($A['introtext'])));
 163          $story_template->set_var ('story_bodytext',
 164                  PLG_replaceTags (stripslashes ($A['bodytext'])));
 165  
 166          $story_template->set_var ('site_url', $_CONF['site_url']);
 167          $story_template->set_var ('layout_url', $_CONF['layout_url']);
 168          $story_template->set_var ('site_name', $_CONF['site_name']);
 169          $story_template->set_var ('site_slogan', $_CONF['site_slogan']);
 170          $story_template->set_var ('story_id', $A['sid']);
 171          $articleUrl = COM_buildUrl ($_CONF['site_url']
 172                                      . '/article.php?story=' . $A['sid']);
 173          if ($A['commentcode'] >= 0) {
 174              $commentsUrl = $articleUrl . '#comments';
 175              $comments = $A['comments'];
 176              $numComments = COM_numberFormat ($comments);
 177              $story_template->set_var ('story_comments', $numComments);
 178              $story_template->set_var ('comments_url', $commentsUrl);
 179              $story_template->set_var ('comments_text',
 180                      $numComments . ' ' . $LANG01[3]);
 181              $story_template->set_var ('comments_count', $numComments);
 182              $story_template->set_var ('lang_comments', $LANG01[3]);
 183              $story_template->set_var ('comments_with_count',
 184                      sprintf ($LANG01[121], $numComments));
 185  
 186              if ($comments > 0) {
 187                  $story_template->set_var ('start_comments_anchortag',
 188                          '<a href="' . $commentsUrl . '">');
 189                  $story_template->set_var ('end_comments_anchortag', '</a>');
 190              }
 191          }
 192          $story_template->set_var ('lang_full_article', $LANG08[33]);
 193          $story_template->set_var ('article_url', $articleUrl);
 194          $story_template->parse ('output', 'article');
 195          $display = $story_template->finish ($story_template->get_var('output'));
 196      } else {
 197          // Set page title
 198          $pagetitle = stripslashes (str_replace ('$', '&#36;', $A['title']));
 199  
 200          $rdf = '';
 201          if ($A['trackbackcode'] == 0) {
 202              if ($_CONF['trackback_enabled']) {
 203                  $permalink = COM_buildUrl ($_CONF['site_url']
 204                                             . '/article.php?story=' . $story);
 205                  $trackbackurl = TRB_makeTrackbackUrl ($story);
 206                  $rdf = '<!--' . LB
 207                       . TRB_trackbackRdf ($permalink, $A['title'], $trackbackurl)
 208                       . LB . '-->' . LB;
 209              }
 210              if ($_CONF['pingback_enabled']) {
 211                  header ('X-Pingback: ' . $_CONF['site_url'] . '/pingback.php');
 212              }
 213          }
 214          $display .= COM_siteHeader ('menu', $pagetitle, $rdf);
 215          
 216          if (isset ($_GET['msg'])) {
 217              $display .= COM_showMessage (COM_applyFilter ($_GET['msg'], true));
 218          }
 219  
 220          DB_query ("UPDATE {$_TABLES['stories']} SET hits = hits + 1 WHERE (sid = '$story') AND (date <= NOW()) AND (draft_flag = 0)");
 221  
 222          // Display whats related
 223  
 224          $story_template = new Template($_CONF['path_layout'] . 'article');
 225          $story_template->set_file('article','article.thtml');
 226  
 227          $story_template->set_var('site_url', $_CONF['site_url']);
 228          $story_template->set_var('layout_url', $_CONF['layout_url']);
 229          $story_template->set_var('story_id', $story);
 230          $story_options = array ();
 231          if (($_CONF['hideemailicon'] == 0) && (!empty ($_USER['username']) ||
 232                  (($_CONF['loginrequired'] == 0) &&
 233                   ($_CONF['emailstoryloginrequired'] == 0)))) {
 234              $emailUrl = $_CONF['site_url'] . '/profiles.php?sid=' . $story
 235                        . '&amp;what=emailstory';
 236              $story_options[] = '<a href="' . $emailUrl . '">' . $LANG11[2]
 237                               . '</a>';
 238              $story_template->set_var ('email_story_url', $emailUrl);
 239              $story_template->set_var ('lang_email_story', $LANG11[2]);
 240              $story_template->set_var ('lang_email_story_alt', $LANG01[64]);
 241          }
 242          $printUrl = COM_buildUrl ($_CONF['site_url']
 243                  . '/article.php?story=' . $story .  '&amp;mode=print');
 244          if ($_CONF['hideprintericon'] == 0) {
 245              $story_options[] = '<a href="' . $printUrl . '">' . $LANG11[3]
 246                               . '</a>';
 247              $story_template->set_var ('print_story_url', $printUrl);
 248              $story_template->set_var ('lang_print_story', $LANG11[3]);
 249              $story_template->set_var ('lang_print_story_alt', $LANG01[65]);
 250          }
 251          if ($_CONF['pdf_enabled'] == 1) {
 252              $pdfUrl = $_CONF['site_url']
 253                      . '/pdfgenerator.php?pageType=2&amp;pageData='
 254                      . urlencode ($printUrl);
 255              $story_options[] = '<a href="' . $pdfUrl . '">' . $LANG11[5]
 256                               . '</a>';
 257              $story_template->set_var ('pdf_story_url', $printUrl);
 258              $story_template->set_var ('lang_pdf_story', $LANG11[5]);
 259          }
 260          $related = STORY_whatsRelated ($A['related'], $A['uid'], $A['tid']);
 261          if (!empty ($related)) {
 262              $related = COM_startBlock ($LANG11[1], '',
 263                  COM_getBlockTemplate ('whats_related_block', 'header'))
 264                  . $related
 265                  . COM_endBlock (COM_getBlockTemplate ('whats_related_block',
 266                      'footer'));
 267          }
 268          if (count ($story_options) > 0) {
 269              $optionsblock = COM_startBlock ($LANG11[4], '',
 270                      COM_getBlockTemplate ('story_options_block', 'header'))
 271                  . COM_makeList ($story_options, 'list-story-options')
 272                  . COM_endBlock (COM_getBlockTemplate ('story_options_block',
 273                      'footer'));
 274          } else {
 275              $optionsblock = '';
 276          }
 277          $story_template->set_var ('whats_related', $related);
 278          $story_template->set_var ('story_options', $optionsblock);
 279          $story_template->set_var ('whats_related_story_options',
 280                                    $related . $optionsblock);
 281  
 282          $story_template->set_var ('formatted_article',
 283                                    STORY_renderArticle ($A, 'n', '', $query));
 284  
 285          // display comments or not?
 286          if ( (is_numeric($mode)) and ($_CONF['allow_page_breaks'] == 1) )
 287          {
 288              $story_page = $mode;
 289              $mode = '';
 290              if( $story_page <= 0 ) {
 291                  $story_page = 1;
 292              }
 293              $article_arr = explode( '[page_break]', $A['bodytext']);
 294              $conf = $_CONF['page_break_comments'];
 295              if  (
 296                   ($conf == 'all') or
 297                   ( ($conf =='first') and ($story_page == 1) ) or
 298                   ( ($conf == 'last') and (count($article_arr) == ($story_page)) )
 299                  ) {
 300                  $show_comments = true;
 301              } else {
 302                  $show_comments = false;
 303              }
 304          } else {
 305              $show_comments = true;
 306          }
 307  
 308          // Display the comments, if there are any ..
 309          if (($A['commentcode'] >= 0) and $show_comments) {
 310              $delete_option = (SEC_hasRights('story.edit') && ($access == 3)
 311                               ? true : false);
 312              require_once ( $_CONF['path_system'] . 'lib-comment.php' );
 313              $story_template->set_var ('commentbar',
 314                      CMT_userComments ($story, $A['title'], 'article',
 315                                        $order, $mode, 0, $page, false, $delete_option));
 316          }
 317          if ($_CONF['trackback_enabled'] && ($A['trackbackcode'] >= 0) &&
 318                  $show_comments) {
 319              if (SEC_hasRights ('story.ping')) {
 320                  if (($A['draft_flag'] == 0) && ($A['day'] < time ())) {
 321                      $url = $_CONF['site_admin_url']
 322                           . '/trackback.php?mode=sendall&amp;id=' . $A['sid'];
 323                      $story_template->set_var ('send_trackback_link', '<a href="'
 324                           . $url . '">' . $LANG_TRB['send_trackback'] . '</a>');
 325                      $story_template->set_var ('send_trackback_url', $url);
 326                      $story_template->set_var ('lang_send_trackback_text',
 327                                                $LANG_TRB['send_trackback']);
 328                  }
 329              }
 330  
 331              $permalink = COM_buildUrl ($_CONF['site_url']
 332                                         . '/article.php?story=' . $story);
 333              $story_template->set_var ('trackback',
 334                      TRB_renderTrackbackComments ($story, 'article',
 335                                                   $A['title'], $permalink));
 336          } else {
 337              $story_template->set_var ('trackback', '');
 338          }
 339          $display .= $story_template->finish ($story_template->parse ('output', 'article'));
 340          $display .= COM_siteFooter ();
 341      }
 342  } else {
 343      $display .= COM_refresh($_CONF['site_url'] . '/index.php');
 344  }
 345  
 346  echo $display;
 347  
 348  ?>


Généré le : Wed Nov 21 12:27:40 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics