'LAN_FORUM_0039', 'FORLAN_12' => 'LAN_FORUM_0040', 'FORLAN_13' => 'LAN_FORUM_0040', 'FORLAN_14' => 'LAN_FORUM_0040', 'FORLAN_16' => 'LAN_FORUM_1012', 'FORLAN_17' => 'LAN_FORUM_1013', 'FORLAN_18' => 'LAN_FORUM_1014', 'LAN_435' => 'LAN_DELETE', 'LAN_401' => 'LAN_FORUM_4011', 'LAN_398' => 'LAN_FORUM_4012', 'LAN_399' => 'LAN_FORUM_4013', 'LAN_400' => 'LAN_FORUM_4014', 'LAN_402' => 'LAN_FORUM_5019', ); e107::getLanguage()->bcDefs($bcDefs); } define('NAVIGATION_ACTIVE', 'forum'); class forum_viewforum_front { function __construct() { $this->init(); } /** * @param $FORUM_VIEW_START * @param $urlparms * @param $doNothing * @return array */ function init() { // todo - remove all these globals. global $FORUM_VIEW_START, $urlparms, $doNothing; global $sc, $FORUM_VIEW_FORUM, $FORUM_VIEW_FORUM_STICKY, $FORUM_VIEW_FORUM_ANNOUNCE; global $FORUM_VIEW_FORUM, $FORUM_VIEW_FORUM_STICKY, $FORUM_VIEW_FORUM_ANNOUNCE, $FORUM_VIEW_END, $FORUM_VIEW_END_CONTAINER, $FORUM_VIEW_SUB_START, $FORUM_VIEW_SUB, $FORUM_VIEW_SUB_END, $FORUM_IMPORTANT_ROW, $FORUM_NORMAL_ROW; global $forum_info, $FORUM_CRUMB, $forumInfo, $forumId; global $forum; $sql = e107::getDb(); $tp = e107::getParser(); $ns = e107::getRender(); $pref = e107::getPref(); if(!e_QUERY && empty($_GET)) { if(E107_DEBUG_LEVEL > 0) { echo __FILE__ . ' Line: ' . __LINE__; return null; } $url = e107::url('forum', 'index', null, ['mode' => 'full']); e107::getRedirect()->go($url); //header('Location:'.e107::getUrl()->create('forum/forum/main', array(), 'full=1&encode=0')); return null; } if(!empty($_GET['sef'])) { if($newID = $sql->retrieve('forum', 'forum_id', "forum_sef= '" . $tp->toDB($_GET['sef']) . "' LIMIT 1")) { $_REQUEST['id'] = $newID; } } require_once(e_PLUGIN . 'forum/forum_class.php'); $forum = new e107forum; //$view = 25; $view = $forum->prefs->get('threadspage', 25); if(!$view) { $view = 25; } $page = (varset($_GET['p']) ? $_GET['p'] : 1); $threadFrom = ($page - 1) * $view; $sc = e107::getScBatch('viewforum', 'forum'); $forumId = (int) varset($_REQUEST['id']); if(!$forumId && e_QUERY) // BC Fix for old links. { list($id, $from) = explode(".", e_QUERY); $forumId = intval($id); $threadFrom = intval($from); unset($id, $from); } if(!$forum->checkPerm($forumId, 'view')) { $url = e107::url('forum', 'index', null, ['mode' => 'full']); /* if(E107_DEBUG_LEVEL > 0) { print_a($_REQUEST); print_a($_GET); echo __FILE__ . ' Line: ' . __LINE__; echo " forumId: " . $forumId; exit; } */ e107::getRedirect()->go($url); return null; } $forumInfo = $forum->forumGet($forumId); e107::canonical('forum', 'forum', $forumInfo); $forumSCvars = array(); //----$threadsViewed = $forum->threadGetUserViewed(); if(empty($FORUM_VIEW_START)) { if(THEME_LEGACY !== true) { $FORUM_VIEWFORUM_TEMPLATE = e107::getTemplate('forum', 'forum_viewforum'); $GLOBALS['FORUM_VIEWFORUM_TEMPLATE'] = $FORUM_VIEWFORUM_TEMPLATE; } else { if(file_exists(THEME . 'templates/forum/forum_viewforum_template.php')) { require_once(THEME . 'templates/forum/forum_viewforum_template.php'); } elseif(file_exists(THEME . 'forum_viewforum_template.php')) //v1.x { require_once(THEME . 'forum_viewforum_template.php'); } elseif(file_exists(THEME . 'forum_template.php')) //v1.x { require_once(THEME . 'forum_template.php'); } else { require_once(e_PLUGIN . 'forum/templates/forum_viewforum_template.php'); } } } if(!empty($FORUM_VIEWFORUM_TEMPLATE) && is_array($FORUM_VIEWFORUM_TEMPLATE) && THEME_LEGACY !== true) // New v2.x bootstrap Template. { $FORUM_VIEW_CAPTION = $FORUM_VIEWFORUM_TEMPLATE['caption']; $FORUM_VIEW_START_CONTAINER = $FORUM_VIEWFORUM_TEMPLATE['start']; $FORUM_VIEW_START = $FORUM_VIEWFORUM_TEMPLATE['header']; $FORUM_VIEW_FORUM = $FORUM_VIEWFORUM_TEMPLATE['item']; $FORUM_VIEW_FORUM_STICKY = $FORUM_VIEWFORUM_TEMPLATE['item-sticky']; $FORUM_VIEW_FORUM_ANNOUNCE = $FORUM_VIEWFORUM_TEMPLATE['item-announce']; $FORUM_VIEW_END = $FORUM_VIEWFORUM_TEMPLATE['footer']; $FORUM_VIEW_END_CONTAINER = $FORUM_VIEWFORUM_TEMPLATE['end']; $FORUM_VIEW_SUB_START = $FORUM_VIEWFORUM_TEMPLATE['sub-header']; $FORUM_VIEW_SUB = $FORUM_VIEWFORUM_TEMPLATE['sub-item']; $FORUM_VIEW_SUB_END = $FORUM_VIEWFORUM_TEMPLATE['sub-footer']; $FORUM_IMPORTANT_ROW = $FORUM_VIEWFORUM_TEMPLATE['divider-important']; $FORUM_NORMAL_ROW = $FORUM_VIEWFORUM_TEMPLATE['divider-normal']; $FORUM_CRUMB = $FORUM_VIEWFORUM_TEMPLATE['forum-crumb']; } $forumInfo['forum_name'] = $tp->toHTML($forumInfo['forum_name'], true, 'no_hook, emotes_off'); $forumInfo['forum_description'] = $tp->toHTML($forumInfo['forum_description'], true, 'no_hook'); $_forum_name = (substr($forumInfo['forum_name'], 0, 1) == '*' ? substr($forumInfo['forum_name'], 1) : $forumInfo['forum_name']); e107::title($_forum_name . ' / ' . LAN_FORUM_1001); // define('e_PAGETITLE', $_forum_name . ' / ' . LAN_FORUM_1001); // SEO - meta description (auto) if(!empty($forumInfo['forum_description'])) { define("META_DESCRIPTION", $tp->text_truncate( str_replace( //array('"', "'"), '', strip_tags($tp->toHTML($forumInfo['forum_description'])) array('"', "'"), '', $tp->toText($forumInfo['forum_description']) ), 250, '...')); } $moderatorUserIds = $forum->getModeratorUserIdsByForumId($forumId); define('MODERATOR', (USER && in_array(USERID, $moderatorUserIds) || getperms('0'))); if(MODERATOR) { if($_POST) { require_once(e_PLUGIN . 'forum/forum_mod.php'); $forumSCvars['message'] = forum_thread_moderate($_POST); } } if(e_AJAX_REQUEST && MODERATOR) // see javascript above. { $forum->ajaxModerate(); } if(varset($pref['track_online'])) { $member_users = $sql->count('online', '(*)', "WHERE online_location LIKE('" . $tp->filter(e_REQUEST_URI, 'url') . "%') AND online_user_id != 0"); $guest_users = $sql->count('online', '(*)', "WHERE online_location LIKE('" . $tp->filter(e_REQUEST_URI, 'url') . "%') AND online_user_id = 0"); $users = $member_users + $guest_users; } else { $users = 0; $member_users = 0; $guest_users = 0; } require_once(HEADERF); $text = ''; // TODO - message batch shortcode /*-- if ($message) { //$ns->tablerender('', $message, array('forum_viewforum', 'msg')); //e107::getMessage()->add($thread->message); $fVars->MESSAGE = $message; } --*/ $threadCount = (int) $forumInfo['forum_threads']; if($threadCount > $view) { $pages = ceil($threadCount / $view); } else { $pages = false; } if($pages) { if(strpos($FORUM_VIEW_START, 'THREADPAGES') !== false || strpos($FORUM_VIEW_END, 'THREADPAGES') !== false) { // issue #3087 url need to be decoded first (because the [FROM] get's encoded in url()) // and to encode the full url to not loose the id param when being used in the $forumSCvars['parms'] $url = rawurlencode(rawurldecode(e107::url('forum', 'forum', $forumInfo, array('query' => array('p' => '[FROM]'))))); $forumSCvars['parms'] = "total={$pages}&type=page¤t={$page}&url=" . $url . "&caption=off"; unset($urlparms); } } if($forum->checkPerm($forumId, 'thread')) //new thread access only. { $forumSCvars['ntUrl'] = e107::url('forum', 'post') . "?f=nt&id=" . $forumId; } //XXX What is this? if(!empty($forumInfo['forum_name']) && (substr($forumInfo['forum_name'], 0, 1) == '*')) { $forum_info['forum_name'] = substr($forum_info['forum_name'], 1); $container_only = true; } else { $container_only = false; } if(!empty($forum_info['sub_parent']) && (substr($forum_info['sub_parent'], 0, 1) == '*')) { $forum_info['sub_parent'] = substr($forum_info['sub_parent'], 1); } //----$forum->set_crumb(true, '', $fVars); // set $BREADCRUMB (and $BACKLINK) //-- Function eventually to be reworked (move full function to shortcode file, or make a new breadcrumb function, like in downloads, maybe?) $forum->set_crumb(true, '', $forumSCvars); // set $BREADCRUMB (and $BACKLINK) $modUser = array(); $modArray = $forum->forumGetMods(); foreach($modArray as $user) { $modUser[] = "" . $user['user_name'] . ""; } $forumSCvars['forum_name'] = $forumInfo['forum_name']; $forumSCvars['forum_description'] = $forumInfo['forum_description']; $forumSCvars['forum_image'] = $forumInfo['forum_image']; $forumSCvars['modUser'] = $modUser; $forumSCvars['track_online'] = varset($pref['track_online']); $sticky_threads = 0; $stuck = false; $reg_threads = 0; $unstuck = false; $threadFilter = null; if(!empty($_GET['srch'])) { $threadFilter = "t.thread_name LIKE '%" . $tp->filter($_GET['srch'], 'w') . "%'"; } $threadList = $forum->forumGetThreads($forumId, $threadFrom, $view, $threadFilter); $forumSCvars['forum_parent'] = $forumInfo['forum_parent']; $forum_view_forum = ''; if(count($threadList)) { foreach($threadList as $thread_info) { if($thread_info['thread_options']) { $thread_info['thread_options'] = unserialize($thread_info['thread_options']); } else { $thread_info['thread_options'] = array(); } if($thread_info['thread_sticky']) { $sticky_threads++; } if($sticky_threads > 0 && !$stuck && $forum->prefs->get('hilightsticky')) { if(!empty($FORUM_IMPORTANT_ROW)) { $forum_view_forum .= $FORUM_IMPORTANT_ROW; } else { $forum_view_forum .= " " . LAN_FORUM_1006 . ""; } $stuck = true; } if(!$thread_info['thread_sticky']) { $reg_threads++; } if($reg_threads === 1) // Removed as not needed in new template. && !$unstuck && $stuck { if(THEME_LEGACY === true && ($stuck === false || $unstuck === true)) { $doNothing; // do nothing. } elseif(!empty($FORUM_NORMAL_ROW)) { $forum_view_forum .= $FORUM_NORMAL_ROW; } else { $forum_view_forum .= " " . LAN_FORUM_1007 . ""; } $unstuck = true; } $forum_view_forum .= $this->parse_thread($thread_info); } } else { $forum_view_forum .= deftrue('BOOTSTRAP') ? "
" . LAN_FORUM_1008 . "
" : "" . LAN_FORUM_1008 . ""; } //--$fVars->FORUMJUMP = forumjump(); //--$fVars->TOPLINK = "".LAN_GO.''; // FIXME - TOPLINK not used anymore? if($container_only) { $FORUM_VIEW_START = ($FORUM_VIEW_START_CONTAINER ? $FORUM_VIEW_START_CONTAINER : $FORUM_VIEW_START); $FORUM_VIEW_END = ($FORUM_VIEW_END_CONTAINER ? $FORUM_VIEW_END_CONTAINER : $FORUM_VIEW_END); $forum_view_forum = ''; } $sc->setVars($forumSCvars); $forum_view_start = $tp->parseTemplate($FORUM_VIEW_START_CONTAINER . $FORUM_VIEW_START, true, $sc); $forum_view_forum = $tp->parseTemplate($forum_view_forum, true, $sc); $forum_view_end = $tp->parseTemplate($FORUM_VIEW_END . $FORUM_VIEW_END_CONTAINER, true, $sc); if($forum->prefs->get('enclose')) { // $forum_view_subs???? $caption = varset($FORUM_VIEW_CAPTION) ? $tp->parseTemplate($FORUM_VIEW_CAPTION, true, $sc) : $forum->prefs->get('title'); $ns->tablerender($caption, $forum_view_start . /*$forum_view_subs.*/ $forum_view_forum . $forum_view_end, 'forum-viewforum'); } else { echo $forum_view_start . $forum_view_forum . $forum_view_end; } echo ""; return array($forum_info, $FORUM_CRUMB, $forumSCvars, $FORUM_VIEW_CAPTION); } function parse_thread($thread_info) { // TODO Remove globals. global $sc, $FORUM_VIEW_FORUM, $FORUM_VIEW_FORUM_STICKY, $FORUM_VIEW_FORUM_ANNOUNCE; $tp = e107::getParser(); $sc->setVars($thread_info); switch($thread_info['thread_sticky']) { case 1: $_TEMPLATE = ($FORUM_VIEW_FORUM_STICKY ? $FORUM_VIEW_FORUM_STICKY : $FORUM_VIEW_FORUM); break; case 2: $_TEMPLATE = ($FORUM_VIEW_FORUM_ANNOUNCE ? $FORUM_VIEW_FORUM_ANNOUNCE : $FORUM_VIEW_FORUM); break; default: $_TEMPLATE = $FORUM_VIEW_FORUM; break; } if(substr($_TEMPLATE, 0, 4) == '') // Inject id into table row. //XXX Find a better way to do this without placing in template. . { $threadId = $thread_info['thread_id']; $_TEMPLATE = "" . substr($_TEMPLATE, 4); } return $tp->parseTemplate($_TEMPLATE, true, $sc); } /* function forumjump() { global $forum; $jumpList = $forum->forumGetAllowed('view'); $text = "

" . LAN_FORUM_1017 . ":

"; return $text; } */ /* function newthreadjump($url) { global $forum; $jumpList = $forum->forumGetAllowed('view'); $text = '
' . LAN_FORUM_1018 . '
'; return $text; } */ } //list($forum_info, $FORUM_CRUMB, $forumSCvars, $FORUM_VIEW_CAPTION) = init(); new forum_viewforum_front(); require_once(FOOTERF);