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

Annotation of /fenglin/manage/score_calculate.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Mon Apr 14 02:12:12 2025 UTC (11 months ago) by sysadm
Branch: MAIN
Rename bbs_score_calculation to score_calculation

1 sysadm 1.1 <?
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 = " . $row["UID"];
75    
76     $rs_score = mysqli_query($db_conn, $sql);
77     if ($rs_score == false)
78     {
79     $result_set["return"]["code"] = -2;
80     $result_set["return"]["message"] = "Query score error: " . mysqli_error($db_conn);
81    
82     mysqli_close($db_conn);
83     exit(json_encode($result_set));
84     }
85    
86     if ($row_score = mysqli_fetch_array($rs_score))
87     {
88     $exp_left = $row["exp"] - $row_score["last_exp"] + $row_score["exp_left"];
89    
90     $sql = "UPDATE user_score SET last_exp = " . $row["exp"] .
91     " WHERE UID = " . $row["UID"];
92    
93     $ret = mysqli_query($db_conn, $sql);
94     if ($ret == false)
95     {
96     $result_set["return"]["code"] = -2;
97     $result_set["return"]["message"] = "Update score error: " . mysqli_error($db_conn);
98    
99     mysqli_close($db_conn);
100     exit(json_encode($result_set));
101     }
102     }
103     else
104     {
105     $exp_left = $row["exp"];
106    
107     $sql = "INSERT INTO user_score(UID, last_exp) VALUES(" .
108     $row["UID"] . ", " . $row["exp"] . ")";
109    
110     $ret = mysqli_query($db_conn, $sql);
111     if ($ret == false)
112     {
113     $result_set["return"]["code"] = -2;
114     $result_set["return"]["message"] = "Insert score error: " . mysqli_error($db_conn);
115    
116     mysqli_close($db_conn);
117     exit(json_encode($result_set));
118     }
119     }
120    
121     mysqli_free_result($rs_score);
122    
123     $score_change = intdiv($exp_left, $BBS_exp_score_rate);
124     $exp_left %= $BBS_exp_score_rate;
125    
126     if ($score_change != 0)
127     {
128     $sql = "UPDATE user_score SET score = score + ($score_change), exp_left = $exp_left
129     WHERE UID = " . $row["UID"];
130    
131     $ret = mysqli_query($db_conn, $sql);
132     if ($ret == false)
133     {
134     $result_set["return"]["code"] = -2;
135     $result_set["return"]["message"] = "Update score error: " . mysqli_error($db_conn);
136    
137     mysqli_close($db_conn);
138     exit(json_encode($result_set));
139     }
140    
141     $sql = "INSERT INTO user_score_log(UID, score_change, reason, dt)
142     VALUES(" . $row["UID"] . ", $score_change, '积分计算', NOW())";
143     $ret = mysqli_query($db_conn, $sql);
144     if ($ret == false)
145     {
146     $result_set["return"]["code"] = -2;
147     $result_set["return"]["message"] = "Add log error: " . mysqli_error($db_conn);
148    
149     mysqli_close($db_conn);
150     exit(json_encode($result_set));
151     }
152     }
153     }
154    
155     mysqli_free_result($rs);
156    
157     // Commit transaction
158     $rs = mysqli_query($db_conn, "COMMIT");
159     if ($rs == false)
160     {
161     $result_set["return"]["code"] = -2;
162     $result_set["return"]["message"] = "Mysqli error: " . mysqli_error($db_conn);
163    
164     mysqli_close($db_conn);
165     exit(json_encode($result_set));
166     }
167    
168     mysqli_close($db_conn);
169     exit(json_encode($result_set));
170     ?>

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