[ Index ] |
|
Code source de GeekLog 1.4.1 |
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 ('$', '$', $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 . '&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 . '&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&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&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 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Wed Nov 21 12:27:40 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |