1 | <?php |
||
20 | trait Group { |
||
21 | /** |
||
22 | * Add user's groups |
||
23 | * |
||
24 | * @param int|int[] $group Group id |
||
25 | * @param false|int $user If not specified - current user assumed |
||
26 | * |
||
27 | * @return bool |
||
28 | */ |
||
29 | function add_groups ($group, $user = false) { |
||
40 | /** |
||
41 | * Get user's groups |
||
42 | * |
||
43 | * @param false|int $user If not specified - current user assumed |
||
44 | * |
||
45 | * @return false|int[] |
||
46 | */ |
||
47 | 4 | function get_groups ($user = false) { |
|
66 | /** |
||
67 | * Set user's groups |
||
68 | * |
||
69 | * @param int[] $groups |
||
70 | * @param false|int $user |
||
71 | * |
||
72 | * @return bool |
||
73 | */ |
||
74 | 2 | function set_groups ($groups, $user = false) { |
|
75 | 2 | $user = (int)$user ?: $this->id; |
|
76 | 2 | if (!$user) { |
|
77 | return false; |
||
78 | } |
||
79 | 2 | if (!$groups) { |
|
80 | 2 | return (bool)$this->db_prime()->q( |
|
81 | "DELETE FROM `[prefix]users_groups` |
||
82 | WHERE |
||
83 | 2 | `id` ='$user'" |
|
84 | ); |
||
85 | } |
||
86 | 2 | $groups = _int($groups); |
|
87 | 2 | $groups_imploded = implode(', ', $groups); |
|
88 | 2 | $return = $this->db_prime()->q( |
|
89 | "DELETE FROM `[prefix]users_groups` |
||
90 | WHERE |
||
91 | 2 | `id` = '$user' AND |
|
92 | 2 | `group` NOT IN ($groups_imploded)" |
|
93 | ); |
||
94 | 2 | unset($groups_imploded); |
|
95 | 2 | $insert_update = []; |
|
96 | 2 | foreach ($groups as $priority => $group) { |
|
97 | 2 | $insert_update[] = [$group, $priority]; |
|
98 | } |
||
99 | $return = |
||
100 | 2 | $return && |
|
101 | 2 | $this->db_prime()->insert( |
|
102 | "REPLACE INTO `[prefix]users_groups` |
||
103 | ( |
||
104 | `id`, |
||
105 | `group`, |
||
106 | `priority` |
||
107 | ) VALUES ( |
||
108 | 2 | '$user', |
|
109 | '%d', |
||
110 | '%d' |
||
111 | 2 | )", |
|
112 | $insert_update |
||
113 | ); |
||
114 | 2 | unset($insert_update); |
|
115 | 2 | $Cache = $this->cache; |
|
116 | unset( |
||
117 | 2 | $Cache->{"groups/$user"}, |
|
118 | 2 | $Cache->{"permissions/$user"} |
|
119 | ); |
||
120 | 2 | return $return; |
|
121 | } |
||
122 | /** |
||
123 | * Delete user's groups |
||
124 | * |
||
125 | * @param int|int[] $group Group id |
||
126 | * @param false|int $user If not specified - current user assumed |
||
127 | * |
||
128 | * @return bool |
||
129 | */ |
||
130 | function del_groups ($group, $user = false) { |
||
141 | } |
||
142 |