/[LeafOK_CVS]/fenglin/manage/score_calculate.php
ViewVC logotype

Contents of /fenglin/manage/score_calculate.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (show annotations)
Wed Apr 23 05:13:57 2025 UTC (10 months, 3 weeks ago) by sysadm
Branch: MAIN
Changes since 1.2: +1 -1 lines
Refine deprecated PHP short tags

1 <?php
2 if (isset($_SERVER["argv"]) && strrpos($_SERVER["argv"][0], "/") !== false)
3 {
4 chdir(substr($_SERVER["argv"][0], 0, strrpos($_SERVER["argv"][0], "/")));
5 }
6
7 require_once "../lib/common.inc.php";
8 require_once "../lib/db_open.inc.php";
9
10 if (!isset($_SERVER["argc"]))
11 {
12 require_once "../bbs/session_init.inc.php";
13
14 force_login();
15 }
16
17 $result_set = array(
18 "return" => array(
19 "code" => 0,
20 "message" => "",
21 "errorFields" => array(),
22 )
23 );
24
25 header("Content-Type:application/json; charset=utf-8");
26
27 if (!(isset($_SESSION["BBS_priv"]) && $_SESSION["BBS_priv"]->checklevel(P_ADMIN_M | P_ADMIN_S))
28 && !isset($_SERVER["argc"]))
29 {
30 $result_set["return"]["code"] = -1;
31 $result_set["return"]["message"] = "没有权限";
32
33 mysqli_close($db_conn);
34 exit(json_encode($result_set));
35 }
36
37 // Begin transaction
38 $rs = mysqli_query($db_conn, "SET autocommit=0");
39 if ($rs == false)
40 {
41 $result_set["return"]["code"] = -2;
42 $result_set["return"]["message"] = "Mysqli error: " . mysqli_error($db_conn);
43
44 mysqli_close($db_conn);
45 exit(json_encode($result_set));
46 }
47
48 $rs = mysqli_query($db_conn, "BEGIN");
49 if ($rs == false)
50 {
51 $result_set["return"]["code"] = -2;
52 $result_set["return"]["message"] = "Mysqli error: " . mysqli_error($db_conn);
53
54 mysqli_close($db_conn);
55 exit(json_encode($result_set));
56 }
57
58 $sql = "SELECT user_list.UID, exp FROM user_list
59 INNER JOIN user_pubinfo ON user_list.UID = user_pubinfo.UID
60 WHERE enable";
61
62 $rs = mysqli_query($db_conn, $sql);
63 if ($rs == false)
64 {
65 $result_set["return"]["code"] = -2;
66 $result_set["return"]["message"] = "Query exp error: " . mysqli_error($db_conn);
67
68 mysqli_close($db_conn);
69 exit(json_encode($result_set));
70 }
71
72 while ($row = mysqli_fetch_array($rs))
73 {
74 $sql = "SELECT last_exp, exp_left FROM user_score WHERE UID = " .
75 $row["UID"] . " FOR UPDATE";
76
77 $rs_score = mysqli_query($db_conn, $sql);
78 if ($rs_score == false)
79 {
80 $result_set["return"]["code"] = -2;
81 $result_set["return"]["message"] = "Query score error: " . mysqli_error($db_conn);
82
83 mysqli_close($db_conn);
84 exit(json_encode($result_set));
85 }
86
87 if ($row_score = mysqli_fetch_array($rs_score))
88 {
89 $exp_left = $row["exp"] - $row_score["last_exp"] + $row_score["exp_left"];
90
91 $sql = "UPDATE user_score SET last_exp = " . $row["exp"] .
92 " WHERE UID = " . $row["UID"];
93
94 $ret = mysqli_query($db_conn, $sql);
95 if ($ret == false)
96 {
97 $result_set["return"]["code"] = -2;
98 $result_set["return"]["message"] = "Update score error: " . mysqli_error($db_conn);
99
100 mysqli_close($db_conn);
101 exit(json_encode($result_set));
102 }
103 }
104 else
105 {
106 $exp_left = $row["exp"];
107
108 $sql = "INSERT INTO user_score(UID, last_exp) VALUES(" .
109 $row["UID"] . ", " . $row["exp"] . ")";
110
111 $ret = mysqli_query($db_conn, $sql);
112 if ($ret == false)
113 {
114 $result_set["return"]["code"] = -2;
115 $result_set["return"]["message"] = "Insert score error: " . mysqli_error($db_conn);
116
117 mysqli_close($db_conn);
118 exit(json_encode($result_set));
119 }
120 }
121
122 mysqli_free_result($rs_score);
123
124 $score_change = intdiv($exp_left, $BBS_exp_score_rate);
125 $exp_left %= $BBS_exp_score_rate;
126
127 if ($score_change != 0)
128 {
129 $sql = "UPDATE user_score SET score = score + ($score_change), exp_left = $exp_left
130 WHERE UID = " . $row["UID"];
131
132 $ret = mysqli_query($db_conn, $sql);
133 if ($ret == false)
134 {
135 $result_set["return"]["code"] = -2;
136 $result_set["return"]["message"] = "Update score error: " . mysqli_error($db_conn);
137
138 mysqli_close($db_conn);
139 exit(json_encode($result_set));
140 }
141
142 $sql = "INSERT INTO user_score_log(UID, score_change, reason, dt)
143 VALUES(" . $row["UID"] . ", $score_change, '积分计算', NOW())";
144 $ret = mysqli_query($db_conn, $sql);
145 if ($ret == false)
146 {
147 $result_set["return"]["code"] = -2;
148 $result_set["return"]["message"] = "Add log error: " . mysqli_error($db_conn);
149
150 mysqli_close($db_conn);
151 exit(json_encode($result_set));
152 }
153 }
154 }
155
156 mysqli_free_result($rs);
157
158 // Commit transaction
159 $rs = mysqli_query($db_conn, "COMMIT");
160 if ($rs == false)
161 {
162 $result_set["return"]["code"] = -2;
163 $result_set["return"]["message"] = "Mysqli error: " . mysqli_error($db_conn);
164
165 mysqli_close($db_conn);
166 exit(json_encode($result_set));
167 }
168
169 mysqli_close($db_conn);
170 exit(json_encode($result_set));
171 ?>

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