/[LeafOK_CVS]/fenglin/bbs/section_master_service.php
ViewVC logotype

Contents of /fenglin/bbs/section_master_service.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (show annotations)
Wed Apr 9 04:49:28 2025 UTC (11 months, 1 week ago) by sysadm
Branch: MAIN
Changes since 1.1: +25 -20 lines
Refine

1 <?
2 require_once "../lib/db_open.inc.php";
3 require_once "../lib/str_process.inc.php";
4 require_once "./session_init.inc.php";
5 require_once "./check_sub.inc.php";
6
7 $data = json_decode(file_get_contents("php://input"), true);
8
9 $sid = (isset($data["sid"]) ? intval($data["sid"]) : 0);
10 $op = (isset($data["op"]) ? intval($data["op"]) : 0);
11 $username = (isset($data["username"]) ? trim($data["username"]) : "");
12 $type = (isset($data["type"]) && $data["type"] == "1" ? 1 : 0);
13
14 $result_set = array(
15 "return" => array(
16 "code" => 0,
17 "message" => "",
18 "errorFields" => array(),
19 )
20 );
21
22 header("Content-Type:application/json; charset=utf-8");
23
24 // Validate input data
25 if (!preg_match("/^[A-Za-z][A-Za-z0-9]{2,11}$/", $username))
26 {
27 $result_set["return"]["code"] = -1;
28 array_push($result_set["return"]["errorFields"], array(
29 "id" => "username",
30 "errMsg" => "用户名不符合格式要求",
31 ));
32 }
33
34 if ($result_set["return"]["code"] != 0)
35 {
36 mysqli_close($db_conn);
37 exit(json_encode($result_set));
38 }
39
40 if (!$_SESSION["BBS_priv"]->checkpriv($sid, S_MAN_M)
41 || ($type == 1 && (!$_SESSION["BBS_priv"]->checkpriv($sid, S_ADMIN))))
42 {
43 $result_set["return"]["code"] = -1;
44 array_push($result_set["return"]["errorFields"], array(
45 "id" => "master",
46 "errMsg" => "没有权限",
47 ));
48
49 mysqli_close($db_conn);
50 exit(json_encode($result_set));
51 }
52
53 // Begin transaction
54 $rs = mysqli_query($db_conn, "SET autocommit=0");
55 if ($rs == false)
56 {
57 $result_set["return"]["code"] = -2;
58 $result_set["return"]["message"] = "Mysqli error: " . mysqli_error($db_conn);
59
60 mysqli_close($db_conn);
61 exit(json_encode($result_set));
62 }
63
64 $rs = mysqli_query($db_conn, "BEGIN");
65 if ($rs == false)
66 {
67 $result_set["return"]["code"] = -2;
68 $result_set["return"]["message"] = "Mysqli error: " . mysqli_error($db_conn);
69
70 mysqli_close($db_conn);
71 exit(json_encode($result_set));
72 }
73
74 // Check user status
75 $sql = "SELECT UID FROM user_list WHERE username = '$username' AND verified";
76
77 $rs = mysqli_query($db_conn, $sql);
78 if ($rs == false)
79 {
80 $result_set["return"]["code"] = -2;
81 $result_set["return"]["message"] = "Query user error: " . mysqli_error($db_conn);
82
83 mysqli_close($db_conn);
84 exit(json_encode($result_set));
85 }
86
87 if ($row = mysqli_fetch_array($rs))
88 {
89 $uid = $row["UID"];
90 }
91 else
92 {
93 $result_set["return"]["code"] = -1;
94 array_push($result_set["return"]["errorFields"], array(
95 "id" => "username",
96 "errMsg" => "用户不存在或尚未验证",
97 ));
98
99 mysqli_close($db_conn);
100 exit(json_encode($result_set));
101 }
102 mysqli_free_result($rs);
103
104 // Check section status
105 $sql = "SELECT SID FROM section_config INNER JOIN section_class
106 WHERE SID = $sid AND section_config.enable AND section_class.enable";
107
108 $rs = mysqli_query($db_conn, $sql);
109 if ($rs == false)
110 {
111 $result_set["return"]["code"] = -2;
112 $result_set["return"]["message"] = "Query section master error: " . mysqli_error($db_conn);
113
114 mysqli_close($db_conn);
115 exit(json_encode($result_set));
116 }
117
118 if (mysqli_num_rows($rs) == 0)
119 {
120 $result_set["return"]["code"] = -1;
121 array_push($result_set["return"]["errorFields"], array(
122 "id" => "master",
123 "errMsg" => "版块不存在",
124 ));
125
126 mysqli_close($db_conn);
127 exit(json_encode($result_set));
128 }
129 mysqli_free_result($rs);
130
131 // Check existing section master
132 $has_major = false;
133 $user_found = false;
134 $user_type = 0;
135
136 $sql = "SELECT UID, major FROM section_master
137 WHERE SID = $sid AND enable AND (NOW() BETWEEN begin_dt AND end_dt)";
138
139 $rs = mysqli_query($db_conn, $sql);
140 if ($rs == false)
141 {
142 $result_set["return"]["code"] = -2;
143 $result_set["return"]["message"] = "Query section master error: " . mysqli_error($db_conn);
144
145 mysqli_close($db_conn);
146 exit(json_encode($result_set));
147 }
148
149 while ($row = mysqli_fetch_array($rs))
150 {
151 if ($uid == $row["UID"])
152 {
153 $user_found = true;
154 $user_type = $row["major"];
155 }
156
157 if (!$has_major && $row["major"])
158 {
159 $has_major = true;
160 }
161 }
162 mysqli_free_result($rs);
163
164 if ($user_found && $op == 1)
165 {
166 $result_set["return"]["code"] = -1;
167 array_push($result_set["return"]["errorFields"], array(
168 "id" => "master",
169 "errMsg" => "用户已经是版主",
170 ));
171
172 mysqli_close($db_conn);
173 exit(json_encode($result_set));
174 }
175
176 if ($op == 2 || $op == 3)
177 {
178 if (!$user_found)
179 {
180 $result_set["return"]["code"] = -1;
181 array_push($result_set["return"]["errorFields"], array(
182 "id" => "master",
183 "errMsg" => "未找到记录",
184 ));
185
186 mysqli_close($db_conn);
187 exit(json_encode($result_set));
188 }
189
190 if ($user_type == 1 && (!$_SESSION["BBS_priv"]->checkpriv($sid, S_ADMIN)))
191 {
192 $result_set["return"]["code"] = -1;
193 array_push($result_set["return"]["errorFields"], array(
194 "id" => "master",
195 "errMsg" => "没有管理员权限",
196 ));
197
198 mysqli_close($db_conn);
199 exit(json_encode($result_set));
200 }
201 }
202
203 switch($op)
204 {
205 case 1: // Appoint
206 if ($type == 1 && $has_major)
207 {
208 $result_set["return"]["code"] = -1;
209 array_push($result_set["return"]["errorFields"], array(
210 "id" => "master",
211 "errMsg" => "只能有一位正版主",
212 ));
213
214 mysqli_close($db_conn);
215 exit(json_encode($result_set));
216 }
217
218 $sql = "INSERT INTO section_master(UID, SID, begin_dt, end_dt, enable, major)
219 VALUES($uid, $sid, NOW(), ADDDATE(NOW(), INTERVAL 6 MONTH), 1, $type)";
220
221 $rs = mysqli_query($db_conn, $sql);
222 if ($rs == false)
223 {
224 $result_set["return"]["code"] = -2;
225 $result_set["return"]["message"] = "Add section master error: " . mysqli_error($db_conn);
226
227 mysqli_close($db_conn);
228 exit(json_encode($result_set));
229 }
230
231 break; // case 1: Appoint
232 case 2: // Dismiss
233 $sql = "UPDATE section_master SET enable = 0, end_dt = NOW()
234 WHERE UID = $uid AND SID = $sid AND enable
235 AND (NOW() BETWEEN begin_dt AND end_dt)";
236
237 $rs = mysqli_query($db_conn, $sql);
238 if ($rs == false)
239 {
240 $result_set["return"]["code"] = -2;
241 $result_set["return"]["message"] = "Update section master error: " . mysqli_error($db_conn);
242
243 mysqli_close($db_conn);
244 exit(json_encode($result_set));
245 }
246
247 break; // case 2: Dismiss
248 case 3: // Renew
249 $sql = "UPDATE section_master SET end_dt = ADDDATE(end_dt, INTERVAL 6 MONTH)
250 WHERE UID = $uid AND SID = $sid AND enable
251 AND (NOW() BETWEEN begin_dt AND end_dt)";
252
253 $rs = mysqli_query($db_conn, $sql);
254 if ($rs == false)
255 {
256 $result_set["return"]["code"] = -2;
257 $result_set["return"]["message"] = "Update section master error: " . mysqli_error($db_conn);
258
259 mysqli_close($db_conn);
260 exit(json_encode($result_set));
261 }
262
263 break; // case 3 : Renew
264 default: // Invalid Op
265 $result_set["return"]["code"] = -1;
266 array_push($result_set["return"]["errorFields"], array(
267 "id" => "master",
268 "errMsg" => "非法操作",
269 ));
270
271 mysqli_close($db_conn);
272 exit(json_encode($result_set));
273
274 break; // default: Invalid Op
275 }
276
277 // Commit transaction
278 $rs = mysqli_query($db_conn, "COMMIT");
279 if ($rs == false)
280 {
281 $result_set["return"]["code"] = -2;
282 $result_set["return"]["message"] = "Mysqli error: " . mysqli_error($db_conn);
283
284 mysqli_close($db_conn);
285 exit(json_encode($result_set));
286 }
287
288 mysqli_close($db_conn);
289 exit(json_encode($result_set));
290 ?>

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1