public function init() { global $yakbb; $yakbb->loadLanguageFile("viewboard"); // Get and validate board ID $this->boardid = intval($_GET["board"]); // Force integer value if ($this->boardid == 0) { $yakbb->error(2, "invalid_board_id"); } // Need to check if board is in the database and load data if so. $yakbb->db->query("\r\n\t\t\tSELECT\r\n\t\t\t\t*\r\n\t\t\tFROM\r\n\t\t\t\tyakbb_boards\r\n\t\t\tWHERE\r\n\t\t\t\tid='" . $this->boardid . "'\r\n\t\t\tLIMIT\r\n\t\t\t\t1\r\n\t\t"); if ($yakbb->db->numRows() == 0) { $yakbb->error(2, "board_doesnt_exist"); } $this->bdata = $yakbb->db->fetch(); // Check some permissions $perms = boardPermissions($this->boardid); if ($perms["view"] == false) { $yakbb->error(2, "perms_cant_view_board"); } // Calculate pagination and then load threads $showpagination = false; $totalpages = 1; if ($this->bdata["threads"] > 0) { // Don't load threads if no posts/threads. We'll still load announcements // Load pagination $currentpage = isset($_GET["page"]) && intval($_GET["page"]) > 0 ? intval($_GET["page"]) : 1; if ($this->bdata["threads"] > $yakbb->config["threads_per_page"]) { $showpagination = true; $totalpages = ceil($this->bdata["threads"] / $yakbb->config["threads_per_page"]); if ($currentpage > $totalpages) { $yakbb->error(2, "viewboard_page_doesnt_exist"); } } else { $totalpages = 1; } $yakbb->db->query("\r\n\t\t\t\tSELECT\r\n\t\t\t\t\tt.*,\r\n\t\t\t\t\tu.username, u.displayname, u.group,\r\n\t\t\t\t\tlpu.username AS lpusername, lpu.displayname AS lpdisplay, lpu.group AS lpgroup\r\n\t\t\t\tFROM\r\n\t\t\t\t\tyakbb_threads t\r\n\t\t\t\tLEFT JOIN\r\n\t\t\t\t\tyakbb_users u\r\n\t\t\t\t\tON (u.id = t.creatorid)\r\n\t\t\t\tLEFT JOIN\r\n\t\t\t\t\tyakbb_users lpu\r\n\t\t\t\t\tON (u.id = lastpostuser)\r\n\t\t\t\tWHERE\r\n\t\t\t\t\tt.parentid = '" . $this->boardid . "'\r\n\t\t\t\tORDER BY\r\n\t\t\t\t\tt.lastposttime DESC,\r\n\t\t\t\t\tt.id DESC\r\n\t\t\t\tLIMIT\r\n\t\t\t\t\t" . ($currentpage - 1) * $yakbb->config["threads_per_page"] . ", " . $yakbb->config["threads_per_page"] . "\r\n\t\t\t"); $this->threads = array(); while ($t = $yakbb->db->fetch()) { $t["url"] = url_thread($t["id"], $t["name"]); $t["link"] = link_thread($t["id"], $t["name"]); $t["starterlink"] = link_user($t["creatorid"], $t["username"], $t["displayname"], $t["group"]); $t["lpuserlink"] = link_user($t["lastpostuser"], $t["lpusername"], $t["lpdisplay"], $t["lpgroup"]); $t["lpdate"] = makeDate($t["lastposttime"]); $this->threads[] = $t; } } // Template stuff $yakbb->smarty->assign("showpagination", $showpagination); $yakbb->smarty->assign("totalpages", $totalpages); $yakbb->smarty->assign("boardid", $this->boardid); $yakbb->smarty->assign("page_title", $this->bdata["name"]); $yakbb->smarty->assign("threads", $this->threads); $yakbb->loadTemplate("viewboard.tpl"); }
public function init() { global $yakbb; $yakbb->loadLanguageFile("viewthread"); // Get and validate thread ID $this->threadid = intval($_GET["thread"]); // Force integer value if ($this->threadid == 0) { $yakbb->error(2, "invalid_thread_id"); } // Need to check if thread is in the database and load data if so. $yakbb->db->query("\r\n\t\t\tSELECT\r\n\t\t\t\t*\r\n\t\t\tFROM\r\n\t\t\t\tyakbb_threads\r\n\t\t\tWHERE\r\n\t\t\t\tid='" . $this->threadid . "'\r\n\t\t\tLIMIT\r\n\t\t\t\t1\r\n\t\t"); if ($yakbb->db->numRows() == 0) { $yakbb->error(2, "thread_doesnt_exist"); } $this->tdata = $yakbb->db->fetch(); // Check some permissions $perms = boardPermissions($this->tdata["parentid"]); if ($perms["view"] == false) { $yakbb->error(2, "perms_cant_view_board"); } // Load posts $yakbb->db->query("\r\n\t\t\tSELECT\r\n\t\t\t\tp.id AS postid, p.*,\r\n\t\t\t\tu.*\r\n\t\t\tFROM\r\n\t\t\t\tyakbb_posts p\r\n\t\t\tLEFT JOIN\r\n\t\t\t\tyakbb_users u\r\n\t\t\t\tON (p.userid = u.id)\r\n\t\t\tWHERE\r\n\t\t\t\tp.threadid='" . $this->threadid . "'\r\n\t\t\tORDER BY\r\n\t\t\t\tp.timestamp ASC\r\n\t\t\tLIMIT\r\n\t\t\t\t15\r\n\t\t"); $this->posts = array(); while ($p = $yakbb->db->fetch()) { $p["userlink"] = link_user($p["userid"], $p["username"], $p["displayname"], $p["group"]); $p["message"] = $yakbb->parser->parse($p["message"]); $this->posts[] = $p; } // Raise view count if not thread creator if ($this->tdata["creatorid"] == $yakbb->user["id"]) { $yakbb->db->query("\r\n\t\t\t\tUPDATE\r\n\t\t\t\t\tyakbb_threads\r\n\t\t\t\tSET\r\n\t\t\t\t\tviews=views+1\r\n\t\t\t\tWHERE\r\n\t\t\t\t\tid = '" . $this->threadid . "'\r\n\t\t\t\tLIMIT\r\n\t\t\t\t\t1\r\n\t\t\t"); } // Template stuff $yakbb->smarty->assign("viewcount", $this->tdata["views"] + 1); $yakbb->smarty->assign("threadid", $this->threadid); $yakbb->smarty->assign("page_title", $this->tdata["name"]); $yakbb->smarty->assign("posts", $this->posts); $yakbb->loadTemplate("viewthread.tpl"); }
private function loadBoards() { global $yakbb; // Assemble category ids list $catids = array(0 => 0); // Can view null category always foreach ($this->cats as $k => $v) { $catsids[] = $v["id"]; } $boards = $yakbb->db->query("\r\n\t\t\tSELECT\r\n\t\t\t\tb.*,\r\n\t\t\t\tv.id AS viewid,\r\n\t\t\t\tu.username AS lpusername, u.displayname AS lpdisplay, u.group AS lpgroup,\r\n\t\t\t\tt.name AS lpthreadname\r\n\t\t\tFROM\r\n\t\t\t\tyakbb_boards b\r\n\t\t\tLEFT JOIN\r\n\t\t\t\tyakbb_boards_views v\r\n\t\t\t\tON (b.id = v.boardid AND v.userid = '" . $yakbb->user["id"] . "')\r\n\t\t\tLEFT JOIN\r\n\t\t\t\tyakbb_users u\r\n\t\t\t\tON (u.id = b.lastpostuserid)\r\n\t\t\tLEFT JOIN\r\n\t\t\t\tyakbb_threads t\r\n\t\t\t\tON (t.id = b.lastpostthreadid)\r\n\t\t\tWHERE\r\n\t\t\t\tb.parenttype = 'c'\r\n\t\t\t\tAND b.hidden = '0'\r\n\t\t\t\tAND b.parentid IN (" . implode($catsids, ",") . ")\r\n\t\t\tORDER BY\r\n\t\t\t\tb.parentorder ASC\r\n\t\t"); while ($b = $yakbb->db->fetch()) { $bperms = unserialize($b["permissions"]); if (!isset($bperms[$yakbb->user["group"]]) || $bperms[$yakbb->user["group"]]["view"] == false) { continue; } $b["link"] = link_board($b["id"], $b["name"]); $b["url"] = url_board($b["id"], $b["name"]); $b["permissions"] = $bperms[$yakbb->user["group"]]; $b["lpdate"] = makeDate($b["lastposttime"]); $b["lplink"] = link_thread($b["lastpostthreadid"], $b["lpthreadname"]); $b["lpuserlink"] = link_user($b["lastpostuserid"], $b["lpusername"], $b["lpdisplay"], $b["lpgroup"]); $this->cats[$b["parentid"]]["boards"][] = $b; } }