Пример #1
0
 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");
 }
Пример #2
0
 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");
 }
Пример #3
0
 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;
     }
 }