--- fenglin/bbs/section_setting.php 2025/04/09 04:10:57 1.3 +++ fenglin/bbs/section_setting.php 2025/04/29 11:55:32 1.11 @@ -1,5 +1,6 @@ - $sid, + "cid" => $row["CID"], + "sname" => $row["sname"], + "title" => $row["title"], + "exp_get" => $row["exp_get"], + "recommend" => $row["recommend"], + "read_user_level" => $row["read_user_level"], + "write_user_level" => $row["write_user_level"], "announcement" => $row["announcement"], "comment" => $row["comment"], "ex_update" => $row["ex_update"], + "sort_order" => $row["sort_order"], + "class_sections" => array(), "section_hierachy" => array(), "masters" => array(), ); @@ -87,63 +97,50 @@ } mysqli_free_result($rs); - // Load section list - $sql = "SELECT SID, section_config.CID, section_config.title AS s_title, section_class.title AS c_title - FROM section_config INNER JOIN section_class ON section_config.CID = section_class.CID - WHERE section_class.enable AND section_config.enable - ORDER BY section_class.sort_order, section_config.sort_order"; + // Load sections in current class + $sql = "SELECT SID, title, sort_order FROM section_config WHERE CID = " . + $result_set["data"]["cid"] . " AND enable ORDER BY sort_order"; $rs = mysqli_query($db_conn, $sql); if ($rs == false) { $result_set["return"]["code"] = -2; - $result_set["return"]["message"] = "Query section error: " . mysqli_error($db_conn); + $result_set["return"]["message"] = "Query section list error: " . mysqli_error($db_conn); mysqli_close($db_conn); exit(json_encode($result_set)); } - $last_cid = -1; - $last_c_title = ""; - $section_list = array(); while ($row = mysqli_fetch_array($rs)) { - if ($row["CID"] != $last_cid) - { - if (count($section_list) > 0) - { - array_push($result_set["data"]["section_hierachy"], array( - "cid" => $last_cid, - "title" => $last_c_title, - "sections" => $section_list, - )); - - $section_list = array(); - } - - $last_cid = $row["CID"]; - $last_c_title = $row["c_title"]; - } + array_push($result_set["data"]["class_sections"], array( + "sid" => $row["SID"], + "title" => $row["title"], + "sort_order" => $row["sort_order"], + )); + } + mysqli_free_result($rs); - if ($_SESSION["BBS_priv"]->checkpriv($row["SID"], S_POST | S_MAN_S)) + // Load section list + $ret = load_section_list($result_set["data"]["section_hierachy"], + function (array $section, array $filter_param) : bool { - array_push($section_list, array( - "sid" => $row["SID"], - "title" => $row["s_title"], - )); - } - } + return $_SESSION["BBS_priv"]->checkpriv($section["SID"], S_POST | S_MAN_S); + }, + function (array $section, array $filter_param) : mixed + { + return null; + }, + $db_conn); - if (count($section_list) > 0) - { - array_push($result_set["data"]["section_hierachy"], array( - "cid" => $last_cid, - "title" => $last_c_title, - "sections" => $section_list, - )); - } + if ($ret == false) + { + $result_set["return"]["code"] = -2; + $result_set["return"]["message"] = "Query section error: " . mysqli_error($db_conn); - mysqli_free_result($rs); + mysqli_close($db_conn); + exit(json_encode($result_set)); + } mysqli_close($db_conn); @@ -154,4 +151,3 @@ exit(json_encode($result_set)); // Output data in Json } include $theme_view_file; -?>