function BoardSelect($board = 0) { global $config, $my, $tpl, $db, $gpc, $lang, $scache, $plugins; $found = false; $sub_cache = array(); $sub_cache_last = array(); $cat_cache = array(); $mod_cache = array(); $forum_cache = array(); $categories_obj = $scache->load('categories'); $cat_cache = $categories_obj->get(); $memberdata_obj = $scache->load('memberdata'); $memberdata = $memberdata_obj->get(); $index_moderators = $scache->load('index_moderators'); $mod_cache = $index_moderators->get(); ($code = $plugins->load('forums_query')) ? eval($code) : null; // Fetch Forums $result = $db->query("SELECT \n \tc.id, c.name, c.desc, c.opt, c.optvalue, c.bid, c.topics, c.replys, c.cid, c.last_topic, c.invisible, \n \tt.topic as btopic, t.id as btopic_id, t.last as bdate, u.name AS uname, t.last_name AS bname\n FROM {$db->pre}cat AS c\n LEFT JOIN {$db->pre}topics AS t ON c.last_topic=t.id \n LEFT JOIN {$db->pre}user AS u ON t.last_name=u.id \n ORDER BY c.cid, c.c_order, c.id", __LINE__, __FILE__); if ($db->num_rows($result) == 0) { $errormsg = array('There are currently no boards to show. Pleas visit the <a href="admin.php' . SID2URL_1 . '">Admin Control Panel</a> and create some forums.'); $errorurl = ''; $tpl->globalvars(compact("errorurl", "errormsg")); echo $tpl->parse('main/error'); return $found; } while ($row = $db->fetch_assoc($result)) { $gpc->prepare($row['name']); $gpc->prepare($row['btopic']); $gpc->prepare($row['uname']); $gpc->prepare($row['bname']); // Caching for Subforums if ($row['bid'] > 0) { $sub_cache[$row['bid']][] = $row; $sub_cache_last[$row['id']] = $row; } // Caching the Forums if ($row['bid'] == $board) { $forum_cache[$row['cid']][] = $row; } ($code = $plugins->load('forums_caching')) ? eval($code) : null; } // Work with the chached data! foreach ($cat_cache as $cat) { $forums = array(); if (isset($forum_cache[$cat['id']]) == false) { continue; } foreach ($forum_cache[$cat['id']] as $forum) { $found = true; $forum['new'] = false; $forum['show'] = true; $forum['mbdate'] = $forum['bdate']; // Subforendaten vererben (Letzter Beitrag, Markierung) if (isset($sub_cache[$forum['id']])) { $substats = SubStats($forum['topics'], $forum['replys'], $forum['id'], $sub_cache); $forum['topics'] = $substats[0]; $forum['replys'] = $substats[1]; $bids = $substats[2]; } $last = $forum['last_topic']; $last_date = $forum['bdate']; if (isset($sub_cache[$forum['id']])) { foreach ($bids as $bidf) { $sub = $sub_cache_last[$bidf]; if ($last_date < $sub['bdate']) { $last = $sub['id']; $last_date = $sub['bdate']; } } } $forum['lname'] = is_id($forum['bname']) ? $forum['uname'] : $forum['bname']; if ($last != $forum['last_topic']) { $forum['id2'] = $last; $forum['last_topic'] = $sub_cache_last[$forum['id2']]['last_topic']; $forum['btopic_id'] = $sub_cache_last[$forum['id2']]['btopic_id']; $forum['btopic'] = $sub_cache_last[$forum['id2']]['btopic']; $forum['bdate'] = $sub_cache_last[$forum['id2']]['bdate']; if (!isset($sub_cache_last[$forum['id2']]['lname'])) { $forum['lname'] = is_id($sub_cache_last[$forum['id2']]['bname']) ? $sub_cache_last[$forum['id2']]['uname'] : $sub_cache_last[$forum['id2']]['bname']; } else { $forum['lname'] = $sub_cache_last[$forum['id2']]['lname']; } } else { $forum['id2'] = $forum['id']; } $id = array_search(trim($forum['lname']), $memberdata); if (is_id($id)) { $forum['lname'] = array($forum['lname'], $id); } else { $forum['lname'] = array($forum['lname'], 0); } if ($forum['btopic_id']) { $forum['tid'] = $forum['btopic_id']; } else { $forum['tid'] = $forum['last_topic']; } // Rechte und Gelesensystem if ($forum['opt'] != 're') { if (!check_forumperm($forum)) { if ($forum['invisible'] == 1) { $forum['show'] = false; } $forum['foldimg'] = $tpl->img('cat_locked'); $forum['topics'] = '-'; $forum['replys'] = '-'; $forum['btopic'] = false; } else { if (isset($my->mark['f'][$forum['id']]) && $my->mark['f'][$forum['id']] > $forum['bdate'] || $forum['bdate'] < $my->clv || $forum['topics'] < 1) { $forum['foldimg'] = $tpl->img('cat_open'); } else { $forum['foldimg'] = $tpl->img('cat_red'); $forum['new'] = true; } if ($forum['btopic']) { if (strxlen($forum['btopic']) >= 40) { $forum['btopic'] = substr($forum['btopic'], 0, 40); $forum['btopic'] .= "..."; } $forum['bdate'] = str_date($lang->phrase('dformat1'), times($forum['bdate'])); } } } $forum['topics'] = numbers($forum['topics']); $forum['replys'] = numbers($forum['replys']); // Moderatoren $forum['mod'] = array(); if (isset($mod_cache[$forum['id']])) { $anz2 = count($mod_cache[$forum['id']]); for ($i = 0; $i < $anz2; $i++) { if ($anz2 != $i + 1) { $mod_cache[$forum['id']][$i]['sep'] = ', '; } else { $mod_cache[$forum['id']][$i]['sep'] = ''; } $forum['mod'][] = $mod_cache[$forum['id']][$i]; } } // Unterforen $forum['sub'] = array(); if ($config['showsubfs']) { if (isset($sub_cache[$forum['id']])) { $anz2 = count($sub_cache[$forum['id']]); $sub = array(); for ($i = 0; $i < $anz2; $i++) { $show = true; $sub_cache[$forum['id']][$i]['new'] = false; if ($sub_cache[$forum['id']][$i]['opt'] != 're') { if (!check_forumperm($sub_cache[$forum['id']][$i])) { if ($sub_cache[$forum['id']][$i]['invisible'] == 1) { $show = false; } else { $sub_cache[$forum['id']][$i]['foldimg'] = $tpl->img('subcat_locked'); } } else { if (isset($my->mark['f'][$sub_cache[$forum['id']][$i]['id']]) && $my->mark['f'][$sub_cache[$forum['id']][$i]['id']] > $sub_cache[$forum['id']][$i]['bdate'] || $sub_cache[$forum['id']][$i]['bdate'] < $my->clv || $sub_cache[$forum['id']][$i]['topics'] < 1) { $sub_cache[$forum['id']][$i]['foldimg'] = $tpl->img('subcat_open'); } else { $sub_cache[$forum['id']][$i]['foldimg'] = $tpl->img('subcat_red'); $sub_cache[$forum['id']][$i]['new'] = true; } } } else { $sub_cache[$forum['id']][$i]['foldimg'] = $tpl->img('subcat_redirect'); } if ($show == true) { $forum['sub'][] = $sub_cache[$forum['id']][$i]; } } } } ($code = $plugins->load('forums_entry_prepared')) ? eval($code) : null; if ($forum['show'] == true) { $forums[] = $forum; } } if (count($forums) > 0) { $tpl->globalvars(compact("cat", "forums")); ($code = $plugins->load('forums_prepared')) ? eval($code) : null; echo $tpl->parse("categories"); } } return $found; }
function BoardSelect($board = 0) { global $config, $my, $tpl, $db, $gpc, $lang, $scache, $plugins, $slog; $found = false; $sub_cache = $forum_cache = $last_cache = $forums = $cat = array(); $categories_obj = $scache->load('categories'); $cat_cache = $categories_obj->get(); $memberdata_obj = $scache->load('memberdata'); $memberdata = $memberdata_obj->get(); $index_moderators = $scache->load('index_moderators'); $mod_cache = $index_moderators->get(); $prefix_obj = $scache->load('prefix'); $prefix = $prefix_obj->get(); ($code = $plugins->load('forums_query')) ? eval($code) : null; // Fetch Forums $result = $db->query("\n\tSELECT\n\t\tf.id, f.name, f.description, f.opt, f.optvalue, f.parent, f.topics, f.replies, f.last_topic, f.invisible,\n\t\tt.topic as l_topic, t.prefix AS l_prefix, t.id as l_tid, t.last as l_date, u.name AS l_uname, t.last_name AS l_name, f.id AS l_bid\n\tFROM {$db->pre}forums AS f\n\t\tLEFT JOIN {$db->pre}topics AS t ON f.last_topic=t.id\n\t\tLEFT JOIN {$db->pre}user AS u ON t.last_name=u.id\n\tORDER BY f.parent, f.position\n\t"); $keys = array('l_prefix' => null, 'l_topic_full' => null, 'l_topic' => null, 'l_tid' => null, 'l_date' => null, 'l_uname' => null, 'l_name' => null, 'l_bid' => null); while ($row = $db->fetch_assoc($result)) { $row['name'] = $gpc->prepare($row['name']); $row['l_uname'] = $gpc->prepare($row['l_uname']); $row['l_name'] = $gpc->prepare($row['l_name']); $row['bid'] = $cat_cache[$row['parent']]['parent']; // Caching for Subforums if (!empty($row['bid'])) { $sub_cache[$row['bid']][] = $row; } // Caching the Forums if ($row['bid'] == $board) { $forum_cache[$row['parent']][] = $row; } $last_cache[$row['id']] = $row; ($code = $plugins->load('forums_caching')) ? eval($code) : null; } $cats = array(); $hidden = 0; // Work with the chached data! foreach ($cat_cache as $cat) { $cat['forums'] = array(); if (isset($forum_cache[$cat['id']]) == false) { continue; } foreach ($forum_cache[$cat['id']] as $forum) { $found = true; $forum['new'] = false; $forum['show'] = true; // Subforendaten vererben (Letzter Beitrag, Markierung) if (isset($sub_cache[$forum['id']])) { $substats = SubStats($forum['topics'], $forum['replies'], $forum['id'], $sub_cache); $forum['topics'] = $substats[0]; $forum['replies'] = $substats[1]; } // Letzter Beitrag $last = $last_cache[$forum['id']]; if (isset($sub_cache[$forum['id']])) { foreach ($substats[2] as $last_bid) { $sub = $last_cache[$last_bid]; if ($last['l_date'] < $sub['l_date'] && check_forumperm($sub)) { $last = $sub; } } } $forum = array_merge($forum, array_intersect_key($last, $keys)); if (is_id($forum['l_name']) && isset($memberdata[$forum['l_name']])) { $forum['l_name'] = array($forum['l_uname'], $forum['l_name']); } else { $forum['l_name'] = array($forum['l_name'], 0); } // Rechte und Gelesensystem if ($forum['opt'] != 're') { if (!check_forumperm($forum)) { if ($forum['invisible'] != 0) { $forum['show'] = false; } $forum['foldimg'] = $tpl->img('cat_locked'); $forum['state'] = BOARD_STATE_LOCKED; $forum['topics'] = '-'; $forum['replies'] = '-'; $forum['l_topic'] = false; $forum['l_topic_full'] = ''; } else { if ($slog->isForumRead($forum['id'], $forum['l_date']) || $forum['topics'] < 1) { $forum['foldimg'] = $tpl->img('cat_open'); $forum['state'] = BOARD_STATE_OLD; } else { $forum['foldimg'] = $tpl->img('cat_red'); $forum['state'] = BOARD_STATE_NEW; $forum['new'] = true; } if (!empty($forum['l_topic'])) { if (isset($prefix[$forum['id']][$forum['l_prefix']]) && $forum['l_prefix'] > 0) { $lang->assign('prefix', $prefix[$forum['id']][$forum['l_prefix']]['value']); $forum['l_prefix'] = $lang->phrase('showtopic_prefix_title'); } else { $forum['l_prefix'] = ''; } if (strxlen($forum['l_topic']) > $config['lasttopic_chars']) { $forum['l_topic_full'] = $forum['l_prefix'] . $forum['l_topic']; $forum['l_topic'] = subxstr($forum['l_topic'], 0, $config['lasttopic_chars']); $forum['l_topic'] .= "..."; } else { $forum['l_topic_full'] = ''; } $forum['l_date'] = str_date($lang->phrase('dformat1'), times($forum['l_date'])); } } } $forum['topics'] = numbers($forum['topics']); $forum['replies'] = numbers($forum['replies']); // Moderatoren $forum['mod'] = array(); if (isset($mod_cache[$forum['id']])) { $anz2 = count($mod_cache[$forum['id']]); for ($i = 0; $i < $anz2; $i++) { if ($anz2 != $i + 1) { $mod_cache[$forum['id']][$i]['sep'] = ', '; } else { $mod_cache[$forum['id']][$i]['sep'] = ''; } $forum['mod'][] = $mod_cache[$forum['id']][$i]; } } // Unterforen $forum['sub'] = array(); if ($config['showsubfs']) { if (isset($sub_cache[$forum['id']])) { $anz2 = count($sub_cache[$forum['id']]); $sub = array(); for ($i = 0; $i < $anz2; $i++) { $show = true; $sub_cache[$forum['id']][$i]['new'] = false; if ($sub_cache[$forum['id']][$i]['opt'] != 're') { if (!check_forumperm($sub_cache[$forum['id']][$i])) { if ($sub_cache[$forum['id']][$i]['invisible'] != 0) { $show = false; } else { $sub_cache[$forum['id']][$i]['foldimg'] = $tpl->img('subcat_locked'); $sub_cache[$forum['id']][$i]['state'] = BOARD_STATE_LOCKED; } } else { if ($slog->isForumRead($sub_cache[$forum['id']][$i]['id'], $sub_cache[$forum['id']][$i]['l_date']) || $sub_cache[$forum['id']][$i]['topics'] < 1) { $sub_cache[$forum['id']][$i]['foldimg'] = $tpl->img('subcat_open'); $sub_cache[$forum['id']][$i]['state'] = BOARD_STATE_OLD; } else { $sub_cache[$forum['id']][$i]['foldimg'] = $tpl->img('subcat_red'); $sub_cache[$forum['id']][$i]['state'] = BOARD_STATE_NEW; $sub_cache[$forum['id']][$i]['new'] = true; } } } else { $sub_cache[$forum['id']][$i]['foldimg'] = $tpl->img('subcat_redirect'); $sub_cache[$forum['id']][$i]['state'] = BOARD_STATE_WWW; } if ($show == true) { $forum['sub'][] = $sub_cache[$forum['id']][$i]; } } } } ($code = $plugins->load('forums_entry_prepared')) ? eval($code) : null; if ($forum['show'] == true) { $cat['forums'][] = $forum; } elseif ($forum['invisible'] != 2) { $hidden++; } } if (count($cat['forums']) > 0) { $cats[] = $cat; } } ($code = $plugins->load('forums_prepared')) ? eval($code) : null; $error_state = count($cats) == 0 && $board == 0; if (count($cats) > 0 || $error_state) { $tpl->globalvars(compact("cats", "board", "hidden", "error_state")); echo $tpl->parse("categories"); } // Else: This is a forum without sub forums (that should be displayed) return $found; }
function BoardSelect($board = 0) { global $config, $my, $tpl, $db, $gpc, $lang, $scache, $plugins; $found = false; $sub_cache = $forum_cache = $last_cache = array(); $categories_obj = $scache->load('categories'); $cat_cache = $categories_obj->get(); $memberdata_obj = $scache->load('memberdata'); $memberdata = $memberdata_obj->get(); $index_moderators = $scache->load('index_moderators'); $mod_cache = $index_moderators->get(); ($code = $plugins->load('forums_query')) ? eval($code) : null; // Fetch Forums $result = $db->query("\n\tSELECT\n \tf.id, f.name, f.description, f.opt, f.optvalue, f.parent, f.topics, f.replies, f.last_topic, f.invisible,\n \tt.topic as l_topic, t.id as l_tid, t.last as l_date, u.name AS l_uname, t.last_name AS l_name, f.id AS l_bid\n FROM {$db->pre}forums AS f\n LEFT JOIN {$db->pre}topics AS t ON f.last_topic=t.id\n LEFT JOIN {$db->pre}user AS u ON t.last_name=u.id\n ORDER BY f.parent, f.position\n\t", __LINE__, __FILE__); $keys = array('l_topic' => null, 'l_tid' => null, 'l_date' => null, 'l_uname' => null, 'l_name' => null, 'l_bid' => null); if ($db->num_rows($result) == 0) { $errormsg = array('There are currently no boards to show. Pleas visit the <a href="admin.php' . SID2URL_1 . '">Admin Control Panel</a> and create some forums.'); $errorurl = $js_errorurl = ''; $tpl->globalvars(compact("js_errorurl", "errorurl", "errormsg")); echo $tpl->parse('main/error'); return $found; } while ($row = $db->fetch_assoc($result)) { $row['name'] = $gpc->prepare($row['name']); $row['l_uname'] = $gpc->prepare($row['l_uname']); $row['l_name'] = $gpc->prepare($row['l_name']); $row['bid'] = $cat_cache[$row['parent']]['parent']; // Caching for Subforums if (!empty($row['bid'])) { $sub_cache[$row['bid']][] = $row; } // Caching the Forums if ($row['bid'] == $board) { $forum_cache[$row['parent']][] = $row; } $last_cache[$row['id']] = $row; ($code = $plugins->load('forums_caching')) ? eval($code) : null; } // Work with the chached data! foreach ($cat_cache as $cat) { $forums = array(); if (isset($forum_cache[$cat['id']]) == false) { continue; } foreach ($forum_cache[$cat['id']] as $forum) { $found = true; $forum['new'] = false; $forum['show'] = true; // Subforendaten vererben (Letzter Beitrag, Markierung) if (isset($sub_cache[$forum['id']])) { $substats = SubStats($forum['topics'], $forum['replies'], $forum['id'], $sub_cache); $forum['topics'] = $substats[0]; $forum['replies'] = $substats[1]; } // Letzter Beitrag $last = $last_cache[$forum['id']]; if (isset($sub_cache[$forum['id']])) { foreach ($substats[2] as $last_bid) { $sub = $last_cache[$last_bid]; if ($last['l_date'] < $sub['l_date'] && check_forumperm($sub)) { $last = $sub; } } } $forum = array_merge($forum, array_intersect_key($last, $keys)); if (is_id($forum['l_name']) && isset($memberdata[$forum['l_name']])) { $forum['l_name'] = array($forum['l_uname'], $forum['l_name']); } else { $forum['l_name'] = array($forum['l_name'], 0); } // Rechte und Gelesensystem if ($forum['opt'] != 're') { if (!check_forumperm($forum)) { if ($forum['invisible'] != 0) { $forum['show'] = false; } $forum['foldimg'] = $tpl->img('cat_locked'); $forum['topics'] = '-'; $forum['replies'] = '-'; $forum['l_topic'] = false; } else { if (isset($my->mark['f'][$forum['id']]) && $my->mark['f'][$forum['id']] > $forum['l_date'] || $forum['l_date'] < $my->clv || $forum['topics'] < 1) { $forum['foldimg'] = $tpl->img('cat_open'); } else { $forum['foldimg'] = $tpl->img('cat_red'); $forum['new'] = true; } if (!empty($forum['l_topic'])) { if (strxlen($forum['l_topic']) > $config['lasttopic_chars']) { $forum['l_topic'] = substr($forum['l_topic'], 0, $config['lasttopic_chars']); $forum['l_topic'] .= "..."; } $forum['l_topic'] = $gpc->prepare($forum['l_topic']); $forum['l_date'] = str_date($lang->phrase('dformat1'), times($forum['l_date'])); } } } $forum['topics'] = numbers($forum['topics']); $forum['replies'] = numbers($forum['replies']); // Moderatoren $forum['mod'] = array(); if (isset($mod_cache[$forum['id']])) { $anz2 = count($mod_cache[$forum['id']]); for ($i = 0; $i < $anz2; $i++) { if ($anz2 != $i + 1) { $mod_cache[$forum['id']][$i]['sep'] = ', '; } else { $mod_cache[$forum['id']][$i]['sep'] = ''; } $forum['mod'][] = $mod_cache[$forum['id']][$i]; } } // Unterforen $forum['sub'] = array(); if ($config['showsubfs']) { if (isset($sub_cache[$forum['id']])) { $anz2 = count($sub_cache[$forum['id']]); $sub = array(); for ($i = 0; $i < $anz2; $i++) { $show = true; $sub_cache[$forum['id']][$i]['new'] = false; if ($sub_cache[$forum['id']][$i]['opt'] != 're') { if (!check_forumperm($sub_cache[$forum['id']][$i])) { if ($sub_cache[$forum['id']][$i]['invisible'] != 0) { $show = false; } else { $sub_cache[$forum['id']][$i]['foldimg'] = $tpl->img('subcat_locked'); } } else { if (isset($my->mark['f'][$sub_cache[$forum['id']][$i]['id']]) && $my->mark['f'][$sub_cache[$forum['id']][$i]['id']] > $sub_cache[$forum['id']][$i]['l_date'] || $sub_cache[$forum['id']][$i]['l_date'] < $my->clv || $sub_cache[$forum['id']][$i]['topics'] < 1) { $sub_cache[$forum['id']][$i]['foldimg'] = $tpl->img('subcat_open'); } else { $sub_cache[$forum['id']][$i]['foldimg'] = $tpl->img('subcat_red'); $sub_cache[$forum['id']][$i]['new'] = true; } } } else { $sub_cache[$forum['id']][$i]['foldimg'] = $tpl->img('subcat_redirect'); } if ($show == true) { $forum['sub'][] = $sub_cache[$forum['id']][$i]; } } } } ($code = $plugins->load('forums_entry_prepared')) ? eval($code) : null; if ($forum['show'] == true) { $forums[] = $forum; } } if (count($forums) > 0) { $tpl->globalvars(compact("cat", "forums")); ($code = $plugins->load('forums_prepared')) ? eval($code) : null; echo $tpl->parse("categories"); } } return $found; }