/[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.7 - (show annotations)
Tue Apr 29 11:55:32 2025 UTC (10 months, 2 weeks ago) by sysadm
Branch: MAIN
CVS Tags: HEAD
Changes since 1.6: +0 -1 lines
Remove redundant PHP closing tag

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

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