--- fenglin/bbs/list.php 2025/04/11 12:58:45 1.2 +++ fenglin/bbs/list.php 2025/04/12 05:02:55 1.3 @@ -1,514 +1,305 @@ -checkpriv($sid, S_LIST)) -{ - force_login(); - - echo ("您无权访问该版块!"); - exit(); -} - -switch($sort) -{ - case "topic": - $sort_sql = "sub_dt DESC"; //sub_dt - break; - case "reply": - $sort_sql = "last_reply_dt DESC"; - break; - case "hot": - $sort_sql = "(view_count + reply_count) DESC"; - break; - default: - echo ("不支持的排序方式!"); - exit(); -} - -$sql = "SELECT section_config.sname, section_config.title AS s_title, - section_config.announcement, section_class.title AS c_title, section_class.cname - FROM section_config INNER JOIN section_class ON section_config.CID = section_class.CID - WHERE section_config.SID = $sid AND section_config.enable AND section_class.enable"; - -$rs = mysqli_query($db_conn, $sql); -if ($rs == false) -{ - echo("数据查询错误:" . mysqli_error($db_conn)); - exit(); -} - -if($row = mysqli_fetch_array($rs)) -{ - $class_title = $row["c_title"]; - $class_name = $row["cname"]; - $section_name = $row["sname"]; - $section_title = $row["s_title"]; - $announcement = $row["announcement"]; -} -else -{ - echo("版块不存在!"); - exit(); -} - -mysqli_free_result($rs); - -$search_topic = mysqli_real_escape_string($db_conn, $search_text); - -$sql = "SELECT count(*) AS article_count FROM bbs WHERE SID = $sid AND visible AND " . - ($reply ? "" : " TID = 0 AND ") . - ($ex ? " excerption AND " : "") . - " title LIKE '%" . $search_topic . "%'"; - -$rs = mysqli_query($db_conn, $sql); -if ($rs == false) -{ - echo("数据查询错误:" . mysqli_error($db_conn)); - exit(); -} - -$toa = 0; -if ($row = mysqli_fetch_array($rs)) -{ - $toa = $row["article_count"]; -} - -mysqli_free_result($rs); - -if (!in_array($rpp, $BBS_list_rpp_options)) -{ - $rpp = $BBS_list_rpp_options[0]; -} - -$page_total = ceil($toa / $rpp); -if ($page > $page_total) -{ - $page = $page_total; -} - -if ($page <= 0) -{ - $page = 1; -} - -if ($_SESSION["BBS_uid"] > 0 && time() - $_SESSION["BBS_last_msg_check"] >= $BBS_check_msg_interval) -{ - $_SESSION["BBS_new_msg"] = check_new_msg($_SESSION["BBS_uid"], $db_conn); - $_SESSION["BBS_last_msg_check"] = time(); -} -?> - - - -<? echo $section_title . "——" . ($ex ? "文摘区" : "讨论区"); ?> - - - - - - - - -
- - - - - -
- >>>>>> - - - [登录] - 0) - { -?> - [条新消息] - - 欢迎回来  - [退出] - -
- - - - - - - - - - - - - - - - - - - - - -
本版版主 - - " width="12" height="11" alt="">   - -
本版公告 - -
-checkpriv($sid, S_POST)) -{ -?> - 发帖  - -   - 精华区  -   -
- - - - - - - - -
状态标题作者回复/人气最后更新 | 回复人
-
-\n"); - -$visited_aid_list = array(); - -if ($_SESSION["BBS_uid"] > 0) -{ - $aid_list = "-1"; + $search_topic = mysqli_real_escape_string($db_conn, $search_text); + + $sql = "SELECT count(*) AS article_count FROM bbs WHERE SID = $sid AND visible AND " . + ($reply ? "" : " TID = 0 AND ") . + ($ex ? " excerption AND " : "") . + " title LIKE '%" . $search_topic . "%'"; + + $rs = mysqli_query($db_conn, $sql); + if ($rs == false) + { + $result_set["return"]["code"] = -2; + $result_set["return"]["message"] = "Query data error: " . mysqli_error($db_conn); + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } + + $toa = 0; + if ($row = mysqli_fetch_array($rs)) + { + $toa = $row["article_count"]; + } + mysqli_free_result($rs); + + if (!in_array($rpp, $BBS_list_rpp_options)) + { + $rpp = $BBS_list_rpp_options[0]; + } + + $page_total = ceil($toa / $rpp); + if ($page > $page_total) + { + $page = $page_total; + } + + if ($page <= 0) + { + $page = 1; + } + + if ($_SESSION["BBS_uid"] > 0 && time() - $_SESSION["BBS_last_msg_check"] >= $BBS_check_msg_interval) + { + $_SESSION["BBS_new_msg"] = check_new_msg($_SESSION["BBS_uid"], $db_conn); + $_SESSION["BBS_last_msg_check"] = time(); + } + + $section_select_options = section_list_gen($db_conn); + + // Fill up result data + $result_set["data"] = array( + "redir" => $redir, + "sid" => $sid, + "ex" => $ex, + "reply" => $reply, + "use_nick" => $use_nick, + "sort" => $sort, + "search_text" => $search_text, + "page" => $page, + "rpp" => $rpp, + "page_total" => $page_total, + + "class_title" => $class_title, + "class_name" => $class_name, + "section_name" => $section_name, + "section_title" => $section_title, + "announcement" => $announcement, + "section_masters" => array(), + + "section_select_options" => $section_select_options, + + "articles" => array(), + ); + + // Query section master + $sql = "SELECT user_list.UID, user_list.username, section_master.major FROM section_master + INNER JOIN user_list ON section_master.UID = user_list.UID + WHERE SID = $sid AND section_master.enable AND (NOW() BETWEEN begin_dt AND end_dt) + ORDER BY major DESC"; + + $rs = mysqli_query($db_conn, $sql); + if ($rs == false) + { + $result_set["return"]["code"] = -2; + $result_set["return"]["message"] = "Query section master error: " . mysqli_error($db_conn); + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } while ($row = mysqli_fetch_array($rs)) { - if ((new DateTimeImmutable("-" . $BBS_new_article_period . " day")) < (new DateTimeImmutable($row["sub_dt"]))) - { - $aid_list .= (", " . $row["AID"]); - } - else - { - array_push($visited_aid_list, $row["AID"]); - } + array_push($result_set["data"]["section_masters"], array( + "uid" => $row["UID"], + "username" => $row["username"], + "major" => $row["major"], + )); + } + mysqli_free_result($rs); + + // Query articles + $sql = "SELECT * FROM bbs WHERE SID = $sid AND visible AND ". + ($reply ? "" : " TID = 0 AND ") . + ($ex ? " excerption AND " : "") . + " title LIKE '%" . $search_topic . "%'". + " ORDER BY ontop DESC, ". + ($reply ? "sub_dt DESC" : $sort_sql). + " LIMIT " . (($page - 1) * $rpp) . ", $rpp"; + + $rs = mysqli_query($db_conn, $sql); + if ($rs == false) + { + $result_set["return"]["code"] = -2; + $result_set["return"]["message"] = "Query article list error: " . mysqli_error($db_conn); + + mysqli_close($db_conn); + exit(json_encode($result_set)); } - - mysqli_data_seek($rs, 0); - if ($aid_list != "-1") + $visited_aid_list = array(); + + if ($_SESSION["BBS_uid"] > 0) { - $sql = "SELECT AID FROM view_article_log WHERE AID IN ($aid_list) AND UID = " . $_SESSION["BBS_uid"]; + $aid_list = "-1"; - $rs_view = mysqli_query($db_conn, $sql); - if ($rs_view == false) + while ($row = mysqli_fetch_array($rs)) { - echo "文章查看记录查询错误:" . mysqli_error($db_conn); - exit(); + if ((new DateTimeImmutable("-" . $BBS_new_article_period . " day")) < (new DateTimeImmutable($row["sub_dt"]))) + { + $aid_list .= (", " . $row["AID"]); + } + else + { + array_push($visited_aid_list, $row["AID"]); + } } - - while ($row_view = mysqli_fetch_array($rs_view)) + + mysqli_data_seek($rs, 0); + + if ($aid_list != "-1") { - array_push($visited_aid_list, $row_view["AID"]); + $sql = "SELECT AID FROM view_article_log WHERE AID IN ($aid_list) AND UID = " . $_SESSION["BBS_uid"]; + + $rs_view = mysqli_query($db_conn, $sql); + if ($rs_view == false) + { + $result_set["return"]["code"] = -2; + $result_set["return"]["message"] = "Query view_article_log error: " . mysqli_error($db_conn); + + mysqli_close($db_conn); + exit(json_encode($result_set)); + } + + while ($row_view = mysqli_fetch_array($rs_view)) + { + array_push($visited_aid_list, $row_view["AID"]); + } + + mysqli_free_result($rs_view); } - - mysqli_free_result($rs_view); } -} -while ($row = mysqli_fetch_array($rs)) -{ - $length = $row["length"]; - $sub_dt = (new DateTimeImmutable($row["sub_dt"]))->setTimezone($_SESSION["BBS_user_tz"])->format("Y-m-d H:i"); - $last_reply_dt = (new DateTimeImmutable($row["last_reply_dt"]))->setTimezone($_SESSION["BBS_user_tz"])->format("Y-m-d H:i"); - $visited = (($_SESSION["BBS_uid"] > 0 && in_array($row["AID"], $visited_aid_list)) ? 1 : 0); - $status = ($row["ontop"] ? "B" : ($row["gen_ex"] ? "G" : ($row["excerption"] ? "M" : ($row["reply_count"] < 10 ? "N" : "H")))); - $status = ($visited ? strtolower($status) : strtoupper($status)); - - echo ("show_article(" . - $row["TID"] . ", " . //tid - $row["AID"] . ", " . //aid - "'" . split_line(htmlspecialchars($row["title"], ENT_QUOTES | ENT_HTML401, 'UTF-8'), "", 42, 2, "
") . "', " . //title - "$ex, " . //ex - "'$status', " . //status - "'" . $sub_dt . "', " . //sub_dt - "'$length', " . //length - $row["icon"] . ", " . //icon - $row["UID"] . ", " . //uid - "'" . htmlspecialchars($row["username"], ENT_QUOTES | ENT_HTML401, 'UTF-8') . "', " . //username - "'" . htmlspecialchars($row["nickname"], ENT_QUOTES | ENT_HTML401, 'UTF-8') . "', " . //nickname - $row["reply_count"] . ", " . //reply_count - $row["view_count"] . ", " . //view_count - $row["transship"] . ", " . //transship - $row["lock"] . ", " . //lock - "'" . $last_reply_dt . "', " . //last_reply_dt - $row["last_reply_UID"] . ", " . //last_reply_uid - "'" . htmlspecialchars($row["last_reply_username"], ENT_QUOTES | ENT_HTML401, 'UTF-8') . "', " . //last_reply_username - "'" . htmlspecialchars($row["last_reply_nickname"], ENT_QUOTES | ENT_HTML401, 'UTF-8') . "', " . //last_reply_nickname - "0, " . //visible_mode - $use_nick . //use_nick - ");\n"); -} + while ($row = mysqli_fetch_array($rs)) + { + array_push($result_set["data"]["articles"], array( + "aid" => $row["AID"], + "tid" => $row["TID"], + "title" => $row["title"], + "sub_dt" => (new DateTimeImmutable($row["sub_dt"]))->setTimezone($_SESSION["BBS_user_tz"]), + "length" => $row["length"], + "icon" => $row["icon"], + "uid" => $row["UID"], + "username" => $row["username"], + "nickname" => $row["nickname"], + "reply_count" => $row["reply_count"], + "view_count" => $row["view_count"], + "transship" => $row["transship"], + "lock" => $row["lock"], + "ontop" => $row["ontop"], + "excerption" => $row["excerption"], + "gen_ex" => $row["gen_ex"], + "last_reply_dt" => (new DateTimeImmutable($row["last_reply_dt"]))->setTimezone($_SESSION["BBS_user_tz"]), + "last_reply_uid" => $row["last_reply_UID"], + "last_reply_username" => $row["last_reply_username"], + "last_reply_nickname" => $row["last_reply_nickname"], + "visited" => (($_SESSION["BBS_uid"] > 0 && in_array($row["AID"], $visited_aid_list)) ? 1 : 0), + )); + } + mysqli_free_result($rs); -mysqli_free_result($rs); + mysqli_close($db_conn); -echo ("\n"); -?> - - - - - - - - - - - - -
- - - - - - 每页篇 - 1) -{ -?> - 9 - 7 - -9 7 - - 第/页 - - 8 - : - -8 : - - - 查找文章 - - 高级  - -
- -
-
-
- - - -