-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathuserinfo.php
95 lines (81 loc) · 2.85 KB
/
userinfo.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
$cache_time = 10;
$OJ_CACHE_SHARE = false;
require_once('./include/cache_start.php');
require_once('./include/db_info.inc.php');
require_once('./include/setlang.php');
require_once("./include/const.inc.php");
require_once("./include/my_func.inc.php");
if (isset($OJ_OI_MODE) && $OJ_OI_MODE) {
header("location:index.php");
exit();
}
// check user
$user = $_GET['user'];
if (!is_valid_user_name($user)) {
echo "No such User!";
exit(0);
}
$view_title = $user . "@" . $OJ_NAME;
$sql = "SELECT `school`,`email`,`nick` FROM `users` WHERE `user_id`=?";
$result = pdo_query($sql, $user);
$row_cnt = count($result);
if ($row_cnt == 0) {
$view_errors = "No such User!";
require "template/$OJ_TEMPLATE/error.php";
exit(0);
}
$row = $result[0];
$school = $row['school'];
$email = $row['email'];
$nick = $row['nick'];
// count solved
$sql = "SELECT count(DISTINCT problem_id) as `ac` FROM `solution` WHERE `user_id`=? AND `result`=4";
$result = pdo_query($sql, $user);
$row = $result[0];
$AC = $row['ac'];
// count submission
$sql = "SELECT count(solution_id) as `Submit` FROM `solution` WHERE `user_id`=? and problem_id>0";
$result = pdo_query($sql, $user);
$row = $result[0];
$Submit = $row['Submit'];
// update solved
$sql = "UPDATE `users` SET `solved`='" . strval($AC) . "',`submit`='" . strval($Submit) . "' WHERE `user_id`=?";
$result = pdo_query($sql, $user);
$sql = "SELECT count(*) as `Rank` FROM `users` WHERE `solved`>?";
$result = pdo_query($sql, $AC);
$row = $result[0];
$Rank = intval($row[0]) + 1;
$view_userinfo = array();
if (isset($_SESSION[$OJ_NAME . '_' . 'administrator'])) {
$sql = "SELECT user_id,password,ip,`time` FROM `loginlog` WHERE `user_id`=? order by `time` desc LIMIT 0,10";
$view_userinfo = pdo_query($sql, $user);
echo "</table>";
}
$sql = "SELECT result,count(1) FROM solution WHERE `user_id`=? AND result>=4 group by result order by result";
$result = pdo_query($sql, $user);
$view_userstat = array();
$i = 0;
foreach ($result as $row) {
$view_userstat[$i++] = $row;
}
$sql = "SELECT UNIX_TIMESTAMP(date(in_date))*1000 md,count(1) c FROM `solution` where `user_id`=? group by md order by md desc ";
$result = pdo_query($sql, $user);//mysql_escape_string($sql));
$chart_data_all = array();
//echo $sql;
foreach ($result as $row) {
$chart_data_all[$row['md']] = $row['c'];
}
$sql = "SELECT UNIX_TIMESTAMP(date(in_date))*1000 md,count(1) c FROM `solution` where `user_id`=? and result=4 group by md order by md desc ";
$result = pdo_query($sql, $user);//mysql_escape_string($sql));
$chart_data_ac = array();
//echo $sql;
foreach ($result as $row) {
$chart_data_ac[$row['md']] = $row['c'];
}
/////////////////////////Template
require "template/$OJ_TEMPLATE/userinfo.php";
require "oj-footer.php";
/////////////////////////Common foot
if (file_exists('./include/cache_end.php'))
require_once('./include/cache_end.php');