-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathUserManager.class.php
executable file
·118 lines (107 loc) · 3.4 KB
/
UserManager.class.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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
require_once('util4p/util.php');
require_once('util4p/CRObject.class.php');
require_once('util4p/SQLBuilder.class.php');
require_once('util4p/MysqlPDO.class.php');
require_once('util4p/Validator.class.php');
class UserManager
{
/**/
public static function add(CRObject $user)
{
$username = $user->get('username');
$email = $user->get('email');
$password = $user->get('password');
$role = $user->get('role');
if (!Validator::isEmail($email)) {
return false;
}
$key_values = array(
'username' => '?', 'email' => '?', 'password' => '?', 'role' => '?', 'reg_time' => '?', 'reg_ip' => '?'
);
$builder = new SQLBuilder();
$builder->insert('qa_user', $key_values);
$sql = $builder->build();
$params = array(
$username, $email, $password, $role, time(), ip2long(cr_get_client_ip(false))
);
return (new MysqlPDO())->execute($sql, $params);
}
/**/
public static function update(CRObject $user)
{
$username = $user->get('username');
$email = $user->get('email');
$email_verified = $user->getInt('email_verified');
$password = $user->get('password');
$role = $user->get('role');
if (!Validator::isEmail($email)) {
return false;
}
$key_values = array(
'email' => '?', 'email_verified' => '?', 'password' => '?', 'role' => '?'
);
$where_arr = array('username' => '?');
$builder = new SQLBuilder();
$builder->update('qa_user', $key_values);
$builder->where($where_arr);
$sql = $builder->build();
$params = array($email, $email_verified, $password, $role, $username);
return (new MysqlPDO())->execute($sql, $params);
}
/**/
public static function getByUsername($username)
{
$selected_rows = array();
$where_arr = array('username' => '?');
$builder = new SQLBuilder();
$builder->select('qa_user', $selected_rows);
$builder->where($where_arr);
$sql = $builder->build();
$params = array($username);
$users = (new MysqlPDO())->executeQuery($sql, $params);
return $users !== null && count($users) === 1 ? $users[0] : null;
}
/**/
public static function getByEmail($email)
{
$selected_rows = array();
$where_arr = array('email' => '?');
$builder = new SQLBuilder();
$builder->select('qa_user', $selected_rows);
$builder->where($where_arr);
$sql = $builder->build();
$params = array($email);
$users = (new MysqlPDO())->executeQuery($sql, $params);
return $users !== null && count($users) === 1 ? $users[0] : null;
}
/**/
public static function gets(CRObject $rule)
{
$offset = $rule->getInt('offset', 0);
$limit = $rule->getInt('limit', -1);
$selected_rows = array('username', 'email', 'email_verified', 'role', 'reg_time', 'reg_ip');
$where_arr = array();
$builder = new SQLBuilder();
$builder->select('qa_user', $selected_rows);
$builder->where($where_arr);
$builder->limit($offset, $limit);
$sql = $builder->build();
$params = array();
$users = (new MysqlPDO())->executeQuery($sql, $params);
return $users;
}
/**/
public static function getCount(CRObject $rule)
{
$selected_rows = array('COUNT(1) AS `count`');
$where_arr = array();
$builder = new SQLBuilder();
$builder->select('qa_user', $selected_rows);
$builder->where($where_arr);
$sql = $builder->build();
$params = array();
$res = (new MysqlPDO())->executeQuery($sql, $params);
return $res !== null ? intval($res[0]['count']) : 0;
}
}