[ Index ] |
PHP Cross Reference of MyBB 1.8.38 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * MyBB 1.8 4 * Copyright 2014 MyBB Group, All Rights Reserved 5 * 6 * Website: http://www.mybb.com 7 * License: http://www.mybb.com/about/license 8 * 9 */ 10 11 define("IN_MYBB", 1); 12 define('THIS_SCRIPT', 'printthread.php'); 13 14 $templatelist = "printthread,printthread_post,printthread_nav,forumdisplay_password_wrongpass,forumdisplay_password,printthread_multipage,printthread_multipage_page,printthread_multipage_page_current"; 15 16 require_once "./global.php"; 17 require_once MYBB_ROOT."inc/functions_post.php"; 18 require_once MYBB_ROOT."inc/class_parser.php"; 19 $parser = new postParser; 20 21 // Load global language phrases 22 $lang->load("printthread"); 23 24 $plugins->run_hooks("printthread_start"); 25 26 $thread = get_thread($mybb->get_input('tid', MyBB::INPUT_INT)); 27 28 if(!$thread || $thread['visible'] == -1) 29 { 30 error($lang->error_invalidthread); 31 } 32 33 $plugins->run_hooks("printthread_start"); 34 35 $thread['threadprefix'] = $thread['displaystyle'] = ''; 36 if($thread['prefix']) 37 { 38 $threadprefix = build_prefixes($thread['prefix']); 39 if(!empty($threadprefix)) 40 { 41 $thread['threadprefix'] = $threadprefix['prefix']; 42 $thread['displaystyle'] = $threadprefix['displaystyle']; 43 } 44 } 45 46 $thread['subject'] = htmlspecialchars_uni($parser->parse_badwords($thread['subject'])); 47 48 $fid = $thread['fid']; 49 $tid = $thread['tid']; 50 51 // Is the currently logged in user a moderator of this forum? 52 $ismod = is_moderator($fid); 53 54 // Make sure we are looking at a real thread here. 55 if(($thread['visible'] != 1 && $ismod == false) || ($thread['visible'] > 1 && $ismod == true)) 56 { 57 error($lang->error_invalidthread); 58 } 59 60 // Get forum info 61 $forum = get_forum($fid); 62 if(!$forum) 63 { 64 error($lang->error_invalidforum); 65 } 66 67 $breadcrumb = makeprintablenav(); 68 69 $parentsexp = explode(",", $forum['parentlist']); 70 $numparents = count($parentsexp); 71 $tdepth = "-"; 72 for($i = 0; $i < $numparents; ++$i) 73 { 74 $tdepth .= "-"; 75 } 76 $forumpermissions = forum_permissions($forum['fid']); 77 78 if($forum['type'] != "f") 79 { 80 error($lang->error_invalidforum); 81 } 82 if($forumpermissions['canview'] == 0 || $forumpermissions['canviewthreads'] == 0 || (isset($forumpermissions['canonlyviewownthreads']) && $forumpermissions['canonlyviewownthreads'] != 0 && $thread['uid'] != $mybb->user['uid'])) 83 { 84 error_no_permission(); 85 } 86 87 // Check if this forum is password protected and we have a valid password 88 check_forum_password($forum['fid']); 89 90 $page = $mybb->get_input('page', MyBB::INPUT_INT); 91 92 // Paginate this thread 93 if(!$mybb->settings['postsperpage'] || (int)$mybb->settings['postsperpage'] < 1) 94 { 95 $mybb->settings['postsperpage'] = 20; 96 } 97 $perpage = $mybb->settings['postsperpage']; 98 $postcount = (int)$thread['replies']+1; 99 $pages = ceil($postcount/$perpage); 100 101 if($page > $pages) 102 { 103 $page = 1; 104 } 105 if($page > 0) 106 { 107 $start = ($page-1) * $perpage; 108 } 109 else 110 { 111 $start = 0; 112 $page = 1; 113 } 114 115 if($postcount > $perpage) 116 { 117 $multipage = printthread_multipage($postcount, $perpage, $page, "printthread.php?tid={$tid}"); 118 } 119 else 120 { 121 $multipage = ''; 122 } 123 124 $thread['threadlink'] = get_thread_link($tid); 125 126 $postrows = ''; 127 if(is_moderator($forum['fid'], "canviewunapprove")) 128 { 129 $visible = "AND (p.visible='0' OR p.visible='1')"; 130 } 131 else 132 { 133 $visible = "AND p.visible='1'"; 134 } 135 136 $postrow_cache = $attachcache = array(); 137 138 $query = $db->query(" 139 SELECT u.*, u.username AS userusername, p.* 140 FROM ".TABLE_PREFIX."posts p 141 LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=p.uid) 142 WHERE p.tid='$tid' {$visible} 143 ORDER BY p.dateline, p.pid 144 LIMIT {$start}, {$perpage} 145 "); 146 147 while($postrow = $db->fetch_array($query)) 148 { 149 $postrow_cache[$postrow['pid']] = $postrow; 150 } 151 152 $postrow_cache = array_filter($postrow_cache); 153 154 $pids = implode("','", array_keys($postrow_cache)); 155 156 // Get the attachments for all posst. 157 if($mybb->settings['enableattachments']) 158 { 159 $queryAttachments = $db->simple_select("attachments", "*", "pid IN ('{$pids}')"); 160 161 while($attachment = $db->fetch_array($queryAttachments)) 162 { 163 $attachcache[$attachment['pid']][$attachment['aid']] = $attachment; 164 } 165 } 166 167 foreach($postrow_cache as $postrow) 168 { 169 $parser_options = array( 170 "allow_html" => $forum['allowhtml'], 171 "allow_mycode" => $forum['allowmycode'], 172 "allow_smilies" => $forum['allowsmilies'], 173 "allow_imgcode" => $forum['allowimgcode'], 174 "allow_videocode" => $forum['allowvideocode'], 175 "me_username" => $postrow['username'], 176 "shorten_urls" => 0, 177 "filter_badwords" => 1 178 ); 179 if($postrow['smilieoff'] == 1) 180 { 181 $parser_options['allow_smilies'] = 0; 182 } 183 184 if($mybb->user['uid'] != 0 && $mybb->user['showimages'] != 1 || $mybb->settings['guestimages'] != 1 && $mybb->user['uid'] == 0) 185 { 186 $parser_options['allow_imgcode'] = 0; 187 } 188 189 if($mybb->user['uid'] != 0 && $mybb->user['showvideos'] != 1 || $mybb->settings['guestvideos'] != 1 && $mybb->user['uid'] == 0) 190 { 191 $parser_options['allow_videocode'] = 0; 192 } 193 194 if($postrow['userusername']) 195 { 196 $postrow['username'] = $postrow['userusername']; 197 } 198 $postrow['username'] = htmlspecialchars_uni($postrow['username']); 199 $postrow['subject'] = htmlspecialchars_uni($parser->parse_badwords($postrow['subject'])); 200 $postrow['date'] = my_date($mybb->settings['dateformat'], $postrow['dateline'], null, 0); 201 $postrow['profilelink'] = build_profile_link($postrow['username'], $postrow['uid']); 202 203 $postrow['message'] = $parser->parse_message($postrow['message'], $parser_options); 204 205 if($mybb->settings['enableattachments'] == 1 && !empty($attachcache[$postrow['pid']]) && $thread['attachmentcount'] > 0 || is_moderator($fid, 'caneditposts')) 206 { 207 get_post_attachments($postrow['pid'], $postrow); 208 } 209 210 $plugins->run_hooks("printthread_post"); 211 eval("\$postrows .= \"".$templates->get("printthread_post")."\";"); 212 } 213 214 $plugins->run_hooks("printthread_end"); 215 216 eval("\$printable = \"".$templates->get("printthread")."\";"); 217 output_page($printable); 218 219 /** 220 * @param int $pid 221 * @param string $depth 222 * 223 * @return string 224 */ 225 function makeprintablenav($pid=0, $depth="--") 226 { 227 global $mybb, $db, $pforumcache, $fid, $forum, $lang, $templates; 228 if(!is_array($pforumcache)) 229 { 230 $parlist = build_parent_list($fid, "fid", "OR", $forum['parentlist']); 231 $query = $db->simple_select("forums", "name, fid, pid", "$parlist", array('order_by' => 'pid, disporder')); 232 while($forumnav = $db->fetch_array($query)) 233 { 234 $pforumcache[$forumnav['pid']][$forumnav['fid']] = $forumnav; 235 } 236 unset($forumnav); 237 } 238 $forums = ''; 239 if(is_array($pforumcache[$pid])) 240 { 241 foreach($pforumcache[$pid] as $key => $forumnav) 242 { 243 $forumnav['link'] = get_forum_link($forumnav['fid']); 244 eval("\$forums .= \"".$templates->get("printthread_nav")."\";"); 245 if(!empty($pforumcache[$forumnav['fid']])) 246 { 247 $newdepth = $depth."-"; 248 $forums .= makeprintablenav($forumnav['fid'], $newdepth); 249 } 250 } 251 } 252 return $forums; 253 } 254 255 /** 256 * Output multipage navigation. 257 * 258 * @param int $count The total number of items. 259 * @param int $perpage The items per page. 260 * @param int $current_page The current page. 261 * @param string $url The URL base. 262 * 263 * @return string 264 */ 265 function printthread_multipage($count, $perpage, $current_page, $url) 266 { 267 global $lang, $templates; 268 $multipage = ""; 269 if($count > $perpage) 270 { 271 $pages = $count / $perpage; 272 $pages = ceil($pages); 273 274 $mppage = null; 275 for($page = 1; $page <= $pages; ++$page) 276 { 277 if($page == $current_page) 278 { 279 eval("\$mppage .= \"".$templates->get("printthread_multipage_page_current")."\";"); 280 } 281 else 282 { 283 eval("\$mppage .= \"".$templates->get("printthread_multipage_page")."\";"); 284 } 285 } 286 287 eval("\$multipage = \"".$templates->get("printthread_multipage")."\";"); 288 } 289 return $multipage; 290 } 291
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
2005 - 2021 © MyBB.de | Alle Rechte vorbehalten! | Sponsor: netcup | Cross-referenced by PHPXref |