function forum(&$forum) { global $_G; $lastvisit = $_G['member']['lastvisit']; if (!$forum['viewperm'] || $forum['viewperm'] && forumperm($forum['viewperm']) || !empty($forum['allowview']) || isset($forum['users']) && strstr($forum['users'], "\t{$_G['uid']}\t")) { $forum['permission'] = 2; } elseif (!$_G['setting']['hideprivate']) { $forum['permission'] = 1; } else { return FALSE; } if ($forum['icon']) { $forum['icon'] = get_forumimg($forum['icon']); $forum['icon'] = '<a href="forum.php?mod=forumdisplay&fid=' . $forum['fid'] . '"><img src="' . $forum['icon'] . '" align="left" alt="" /></a>'; } $lastpost = array(0, 0, '', ''); $forum['lastpost'] = is_string($forum['lastpost']) ? explode("\t", $forum['lastpost']) : $forum['lastpost']; $forum['lastpost'] = count($forum['lastpost']) != 4 ? $lastpost : $forum['lastpost']; list($lastpost['tid'], $lastpost['subject'], $lastpost['dateline'], $lastpost['author']) = $forum['lastpost']; $thisforumlastvisit = array(); if ($_G['cookie']['forum_lastvisit']) { preg_match("/D\\_" . $forum['fid'] . "\\_(\\d+)/", $_G['cookie']['forum_lastvisit'], $thisforumlastvisit); } $forum['folder'] = ($thisforumlastvisit && $thisforumlastvisit[1] > $lastvisit ? $thisforumlastvisit[1] : $lastvisit) < $lastpost['dateline'] ? ' class="new"' : ''; if ($lastpost['tid']) { $lastpost['dateline'] = dgmdate($lastpost['dateline'], 'u'); $lastpost['authorusername'] = $lastpost['author']; if ($lastpost['author']) { $lastpost['author'] = '<a href="home.php?mod=space&username='******'author']) . '">' . $lastpost['author'] . '</a>'; } $forum['lastpost'] = $lastpost; } else { $forum['lastpost'] = $lastpost['authorusername'] = ''; } $forum['moderators'] = moddisplay($forum['moderators'], $_G['setting']['moddisplay'], !empty($forum['inheritedmod'])); if (isset($forum['subforums'])) { $forum['subforums'] = implode(', ', $forum['subforums']); } return TRUE; }
function forum(&$forum) { global $_DCOOKIE, $timestamp, $timeformat, $dateformat, $discuz_uid, $groupid, $lastvisit, $moddisplay, $timeoffset, $hideprivate, $onlinehold; if (!$forum['viewperm'] || $forum['viewperm'] && forumperm($forum['viewperm']) || !empty($forum['allowview']) || isset($forum['users']) && strstr($forum['users'], "\t{$discuz_uid}\t")) { $forum['permission'] = 2; } elseif (!$hideprivate) { $forum['permission'] = 1; } else { return FALSE; } if ($forum['icon']) { if (strstr($forum['icon'], ',')) { $flash = explode(",", $forum['icon']); $forum['icon'] = "<a href=\"forumdisplay.php?fid={$forum['fid']}\"><embed style=\"float:left; margin-right: 10px\" src=\"" . trim($flash[0]) . "\" width=\"" . trim($flash[1]) . "\" height=\"" . trim($flash[2]) . "\" type=\"application/x-shockwave-flash\" align=\"left\"></embed></a>"; } else { $forum['icon'] = "<a href=\"forumdisplay.php?fid={$forum['fid']}\"><img style=\"float:left; margin-right: 10px\" src=\"{$forum['icon']}\" align=\"left\" alt=\"\" border=\"0\" /></a>"; } } $lastpost = array('tid' => 0, 'dateline' => 0, 'subject' => '', 'author' => ''); list($lastpost['tid'], $lastpost['subject'], $lastpost['dateline'], $lastpost['author']) = is_array($forum['lastpost']) ? $forum['lastpost'] : explode("\t", $forum['lastpost']); $forum['folder'] = (isset($_DCOOKIE['fid' . $forum['fid']]) && $_DCOOKIE['fid' . $forum['fid']] > $lastvisit ? $_DCOOKIE['fid' . $forum['fid']] : $lastvisit) < $lastpost['dateline'] ? ' class="new"' : ''; if ($lastpost['tid']) { $lastpost['dateline'] = dgmdate("{$dateformat} {$timeformat}", $lastpost['dateline'] + $timeoffset * 3600); $lastpost['authorusername'] = $lastpost['author']; if ($lastpost['author']) { $lastpost['author'] = '<a href="space.php?username='******'author']) . '">' . $lastpost['author'] . '</a>'; } $forum['lastpost'] = $lastpost; } else { $forum['lastpost'] = $lastpost['authorusername'] = ''; } $forum['moderators'] = moddisplay($forum['moderators'], $moddisplay, !empty($forum['inheritedmod'])); if (isset($forum['subforums'])) { $forum['subforums'] = implode(', ', $forum['subforums']); } return TRUE; }
if ($forum['type'] != 'group') { $threads += $forum['threads']; $posts += $forum['posts']; $todayposts += $forum['todayposts']; if (forum($forum)) { $forum['orderid'] = $catlist[$forum['fup']]['forumscount']++; $forum['subforums'] = ''; $forumlist[$forum['fid']] = $forum; $catlist[$forum['fup']]['forums'][] = $forum['fid']; $fids .= ',' . $forum['fid']; } } else { $forum['collapseimg'] = 'collapsed_no.gif'; $collapse['category_' . $forum['fid']] = ''; if ($forum['moderators']) { $forum['moderators'] = moddisplay($forum['moderators'], 'flat'); } $forum['forumscount'] = 0; $forum['forumcolumns'] = 0; $catlist[$forum['fid']] = $forum; $navigation = '» ' . $forum['name']; $navtitle = strip_tags($forum['name']) . ' - '; } } $query = $db->query("SELECT fid, fup, name, threads, posts, todayposts FROM {$tablepre}forums WHERE status='1' AND fup IN ({$fids}) AND type='sub' ORDER BY displayorder"); while ($forum = $db->fetch_array($query)) { if ($subforumsindex && $forumlist[$forum['fup']]['permission'] == 2) { $forumlist[$forum['fup']]['subforums'] .= '<a href="forumdisplay.php?fid=' . $forum['fid'] . '"><u>' . $forum['name'] . '</u></a> '; } $forumlist[$forum['fup']]['threads'] += $forum['threads']; $forumlist[$forum['fup']]['posts'] += $forum['posts'];
$forum['modrecommend'] = $forum['modrecommend'] ? unserialize($forum['modrecommend']) : array(); if ($forum['modrecommend'] && $forum['modrecommend']['open']) { $forum['recommendlist'] = recommendupdate($fid, $forum['modrecommend']); } if ($forum['recommendlist']) { if (empty($_COOKIE['discuz_collapse']) || strpos($_COOKIE['discuz_collapse'], 'recommendlist') === FALSE) { $collapse['recommendlist'] = ''; $collapse['recommendlist_link'] = 'display: none'; } else { $collapse['recommendlist'] = 'display: none'; $collapse['recommendlist_link'] = ''; } } $toptablewidth = $forum['rules'] && $forum['recommendlist'] ? '50%' : '100%'; $forum['typemodels'] = $forum['typemodels'] ? unserialize($forum['typemodels']) : array(); $moderatedby = moddisplay($forum['moderators'], 'forumdisplay'); $highlight = empty($highlight) ? '' : htmlspecialchars($highlight); if ($forum['autoclose']) { $closedby = $forum['autoclose'] > 0 ? 'dateline' : 'lastpost'; $forum['autoclose'] = abs($forum['autoclose']) * 86400; } $subexists = 0; foreach ($_DCACHE['forums'] as $sub) { if ($sub['type'] == 'sub' && $sub['fup'] == $fid && (!$hideprivate || !$sub['viewperm'] || forumperm($sub['viewperm']) || strstr($sub['users'], "\t{$discuz_uid}\t"))) { $subexists = 1; $sublist = array(); $sql = $accessmasks ? "SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, ff.description, ff.moderators, ff.icon, ff.viewperm, a.allowview FROM {$tablepre}forums f\r\n\t\t\t\t\t\tLEFT JOIN {$tablepre}forumfields ff ON ff.fid=f.fid\r\n\t\t\t\t\t\tLEFT JOIN {$tablepre}access a ON a.uid='{$discuz_uid}' AND a.fid=f.fid\r\n\t\t\t\t\t\tWHERE fup='{$fid}' AND status>0 AND type='sub' ORDER BY f.displayorder" : "SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, ff.description, ff.moderators, ff.icon, ff.viewperm FROM {$tablepre}forums f\r\n\t\t\t\t\t\tLEFT JOIN {$tablepre}forumfields ff USING(fid)\r\n\t\t\t\t\t\tWHERE f.fup='{$fid}' AND f.status>0 AND f.type='sub' ORDER BY f.displayorder"; $query = $db->query($sql); while ($sub = $db->fetch_array($query)) { if (forum($sub)) { $sub['orderid'] = count($sublist);
} if (!empty($_G['forum']['threadsorts']['defaultshow']) && empty($_G['gp_sortid']) && empty($_G['gp_sortall'])) { $_G['gp_sortid'] = $_G['forum']['threadsorts']['defaultshow']; $_G['gp_filter'] = 'sortid'; $_SERVER['QUERY_STRING'] = $_SERVER['QUERY_STRING'] ? $_SERVER['QUERY_STRING'] . '&sortid=' . $_G['gp_sortid'] : 'sortid=' . $_G['gp_sortid']; $filterurladd = '&filter=sort'; } $_G['gp_sortid'] = $_G['gp_sortid'] ? $_G['gp_sortid'] : $_G['gp_searchsortid']; if (isset($_G['gp_sortid']) && $_G['forum']['threadsorts']['types'][$_G['gp_sortid']]) { $searchsortoption = $sortoptionarray[$_G['gp_sortid']]; $quicksearchlist = quicksearch($searchsortoption); $_G['forum_optionlist'] = $_G['cache']['threadsort_option_' . $_G['gp_sortid']]; $forum_optionlist = getsortedoptionlist(); } } $moderatedby = $_G['forum']['status'] != 3 ? moddisplay($_G['forum']['moderators'], 'forumdisplay') : ''; $_G['gp_highlight'] = empty($_G['gp_highlight']) ? '' : htmlspecialchars($_G['gp_highlight']); if ($_G['forum']['autoclose']) { $closedby = $_G['forum']['autoclose'] > 0 ? 'dateline' : 'lastpost'; $_G['forum']['autoclose'] = abs($_G['forum']['autoclose']) * 86400; } $subexists = 0; foreach ($_G['cache']['forums'] as $sub) { if ($sub['type'] == 'sub' && $sub['fup'] == $_G['fid'] && (!$_G['setting']['hideprivate'] || !$sub['viewperm'] || forumperm($sub['viewperm']) || strstr($sub['users'], "\t{$_G['uid']}\t"))) { if (!$sub['status']) { continue; } $subexists = 1; $sublist = array(); $sql = !empty($_G['member']['accessmasks']) ? "SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, f.domain, ff.description, ff.moderators, ff.icon, ff.viewperm, ff.extra, ff.redirect, a.allowview FROM " . DB::table('forum_forum') . " f\r\n\t\t\t\t\t\tLEFT JOIN " . DB::table('forum_forumfield') . " ff ON ff.fid=f.fid\r\n\t\t\t\t\t\tLEFT JOIN " . DB::table('forum_access') . " a ON a.uid='{$_G['uid']}' AND a.fid=f.fid\r\n\t\t\t\t\t\tWHERE fup='{$_G['fid']}' AND status>'0' AND type='sub' ORDER BY f.displayorder" : "SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, f.domain, ff.description, ff.moderators, ff.icon, ff.viewperm, ff.extra, ff.redirect FROM " . DB::table('forum_forum') . " f\r\n\t\t\t\t\t\tLEFT JOIN " . DB::table('forum_forumfield') . " ff USING(fid)\r\n\t\t\t\t\t\tWHERE f.fup='{$_G['fid']}' AND f.status>'0' AND f.type='sub' ORDER BY f.displayorder"; $query = DB::query($sql);
public function forum_display($fid, $topicInstance) { if (!file_exists('../../data/attachment/appbyme')) { $url = file_exists('../manage/App.xml') ? join("", file('../manage/App.xml')) : array(); } else { $url = file_exists('../../data/attachment/appbyme/App.xml') ? join("", file('../../data/attachment/appbyme/App.xml')) : array(); } $result = $topicInstance->xml_to_array($url); if (empty($result['board']['fid'])) { $gid = intval(getgpc('gid')); $catlist = $forumlist = $sublist = $forumname = $collapse = $favforumlist = array(); if (!$gid) { $forums = C::t('forum_forum')->fetch_all_by_status(1); $fids = array(); foreach ($forums as $forum) { $fids[$forum['fid']] = $forum['fid']; } $forum_access = array(); if (!empty($_G['member']['accessmasks'])) { $forum_access = C::t('forum_access')->fetch_all_by_fid_uid($fids, $_G['uid']); } $forum_fields = C::t('forum_forumfield')->fetch_all($fids); foreach ($forums as $forum) { if ($forum_fields[$forum['fid']]['fid']) { $forum = array_merge($forum, $forum_fields[$forum['fid']]); } if ($forum_access['fid']) { $forum = array_merge($forum, $forum_access[$forum['fid']]); } $forumname[$forum['fid']] = strip_tags($forum['name']); $forum['extra'] = empty($forum['extra']) ? array() : dunserialize($forum['extra']); if (!is_array($forum['extra'])) { $forum['extra'] = array(); } if ($forum['type'] != 'group') { $threads += $forum['threads']; $posts += $forum['posts']; $todayposts += $forum['todayposts']; if ($forum['type'] == 'forum' && isset($catlist[$forum['fup']])) { if (forum($forum)) { $catlist[$forum['fup']]['forums'][] = $forum['fid']; $forum['orderid'] = $catlist[$forum['fup']]['forumscount']++; $forum['subforums'] = ''; $forumlist[$forum['fid']] = $forum; } } elseif (isset($forumlist[$forum['fup']])) { $forumlist[$forum['fup']]['threads'] += $forum['threads']; $forumlist[$forum['fup']]['posts'] += $forum['posts']; $forumlist[$forum['fup']]['todayposts'] += $forum['todayposts']; if ($_G['setting']['subforumsindex'] && $forumlist[$forum['fup']]['permission'] == 2 && !($forumlist[$forum['fup']]['simple'] & 16) || $forumlist[$forum['fup']]['simple'] & 8) { $forumurl = !empty($forum['domain']) && !empty($_G['setting']['domain']['root']['forum']) ? 'http://' . $forum['domain'] . '.' . $_G['setting']['domain']['root']['forum'] : 'forum.php?mod=forumdisplay&fid=' . $forum['fid']; $forumlist[$forum['fup']]['subforums'] .= (empty($forumlist[$forum['fup']]['subforums']) ? '' : ', ') . '<a href="' . $forumurl . '" ' . (!empty($forum['extra']['namecolor']) ? ' style="color: ' . $forum['extra']['namecolor'] . ';"' : '') . '>' . $forum['name'] . '</a>'; } } } else { if ($forum['moderators']) { $forum['moderators'] = moddisplay($forum['moderators'], 'flat'); } $forum['forumscount'] = 0; $catlist[$forum['fid']] = $forum; } } } else { $gquery = C::t('forum_forum')->fetch_all_info_by_fids($gid); $query = C::t('forum_forum')->fetch_all_info_by_fids(0, 1, 0, $gid, 1, 0, 0, 'forum'); if (!empty($_G['member']['accessmasks'])) { $fids = array_keys($query); $accesslist = C::t('forum_access')->fetch_all_by_fid_uid($fids, $_G['uid']); foreach ($query as $key => $val) { $query[$key]['allowview'] = $accesslist[$key]; } } $query = array_merge($gquery, $query); $fids = array(); foreach ($query as $forum) { $forum['extra'] = dunserialize($forum['extra']); if (!is_array($forum['extra'])) { $forum['extra'] = array(); } if ($forum['type'] != 'group') { $threads += $forum['threads']; $posts += $forum['posts']; $todayposts += $forum['todayposts']; if (forum($forum)) { $forum['orderid'] = $catlist[$forum['fup']]['forumscount']++; $forum['subforums'] = ''; $forumlist[$forum['fid']] = $forum; $catlist[$forum['fup']]['forums'][] = $forum['fid']; $fids[] = $forum['fid']; } } else { $forum['collapseimg'] = 'collapsed_no.gif'; $collapse['category_' . $forum['fid']] = ''; if ($forum['moderators']) { $forum['moderators'] = moddisplay($forum['moderators'], 'flat'); } $catlist[$forum['fid']] = $forum; $navigation = '<em>›</em> ' . $forum['name']; $navtitle_g = strip_tags($forum['name']); } } unset($forum_access, $forum_fields); if ($catlist) { foreach ($catlist as $key => $var) { $catlist[$key]['forumcolumns'] = $var['catforumcolumns']; if ($var['forumscount'] && $var['catforumcolumns']) { $catlist[$key]['forumcolwidth'] = floor(100 / $var['catforumcolumns']) - 0.1 . '%'; $catlist[$key]['endrows'] = ''; if ($colspan = $var['forumscount'] % $var['catforumcolumns']) { while ($var['catforumcolumns'] - $colspan > 0) { $catlist[$key]['endrows'] .= '<td> </td>'; $colspan++; } $catlist[$key]['endrows'] .= '</tr>'; } } } unset($catid, $category); } $query = C::t('forum_forum')->fetch_all_subforum_by_fup($fids); foreach ($query as $forum) { if ($_G['setting']['subforumsindex'] && $forumlist[$forum['fup']]['permission'] == 2) { $forumurl = !empty($forum['domain']) && !empty($_G['setting']['domain']['root']['forum']) ? 'http://' . $forum['domain'] . '.' . $_G['setting']['domain']['root']['forum'] : 'forum.php?mod=forumdisplay&fid=' . $forum['fid']; $forumlist[$forum['fup']]['subforums'] .= '<a href="' . $forumurl . '"><u>' . $forum['name'] . '</u></a> '; } $forumlist[$forum['fup']]['threads'] += $forum['threads']; $forumlist[$forum['fup']]['posts'] += $forum['posts']; $forumlist[$forum['fup']]['todayposts'] += $forum['todayposts']; } } foreach ($forumlist as $key => $val) { $tids[] = $key; } $tids = implode(',', $tids); $tids = empty($tids) ? 0 : $tids; } else { if (count($result[board]['fid']) == 1) { $arr[] = $result[board]['fid'][0]; } else { foreach ($result[board]['fid'] as $key => $val) { $arr[] = $val[0]; } } $tids = implode(',', $arr); $tids = rtrim($tids, ','); } return $tids; }