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

Annotation of /fenglin/bbs/section_master_service.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Wed Apr 9 04:11:19 2025 UTC (11 months, 1 week ago) by sysadm
Branch: MAIN
Add section master operation

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

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