XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
member.php
1<?php
15
16
17if (!defined('XOOPS_ROOT_PATH')) {
18 exit();
19}
20require_once XOOPS_ROOT_PATH.'/kernel/user.php';
21require_once XOOPS_ROOT_PATH.'/kernel/group.php';
22
28
29class XoopsMemberHandler
30{
31
36 public $_gHandler;
37
41 public $_uHandler;
42
46 public $_mHandler;
47
51 public $_members = [];
53
58 public function __construct(&$db)
59 {
60 $this->_gHandler =new XoopsGroupHandler($db);
61 $this->_uHandler =new XoopsUserHandler($db);
62 $this->_mHandler =new XoopsMembershipHandler($db);
63 }
64 public function XoopsMemberHandler(&$db)
65 {
66 return self::__construct($db);
67 }
68
74 public function &createGroup()
75 {
76 $ret =& $this->_gHandler->create();
77 return $ret;
78 }
79
85 public function &createUser()
86 {
87 $ret =& $this->_uHandler->create();
88 return $ret;
89 }
90
97 public function &getGroup($id)
98 {
99 $ret =& $this->_gHandler->get($id);
100 return $ret;
101 }
102
109 public function &getUser($id)
110 {
111 if (!isset($this->_members[$id])) {
112 $this->_members[$id] =& $this->_uHandler->get($id);
113 }
114 return $this->_members[$id];
115 }
116
117 public function &getUserByEmail($email)
118 {
119 $returnUser = null;
120
122 $users =& $this->getUsers(new Criteria('email', $myts->addSlashes($email)));
123
124 if (!is_array($users)) {
125 $returnUser=null;
126 } elseif (count($users) > 0) {
127 $returnUser = is_object($users[0]) ? $users[0] : null;
128 }
129
130 return $returnUser;
131 }
132
138 public function delete(&$object)
139 {
140 if ($object instanceof \XoopsUser) {
141 return $this->deleteUser($object);
142 } elseif ($object instanceof \XoopsGroup) {
143 return $this->deleteGroup($object);
144 }
145 }
146
153 public function deleteGroup(&$group)
154 {
155 $this->_gHandler->delete($group);
156 $this->_mHandler->deleteAll(new Criteria('groupid', $group->getVar('groupid')));
157 return true;
158 }
159
166 public function deleteUser(&$user)
167 {
168 $this->_uHandler->delete($user);
169 $this->_mHandler->deleteAll(new Criteria('uid', $user->getVar('uid')));
170 return true;
171 }
172
180 public function insertGroup(&$group)
181 {
182 return $this->_gHandler->insert($group);
183 }
184
193 public function insertUser(&$user, $force = false)
194 {
195 return $this->_uHandler->insert($user, $force);
196 }
197
205 public function &getGroups($criteria = null, $id_as_key = false)
206 {
207 $groups =& $this->_gHandler->getObjects($criteria, $id_as_key);
208 return $groups;
209 }
210
218 public function &getUsers($criteria = null, $id_as_key = false)
219 {
220 $users =& $this->_uHandler->getObjects($criteria, $id_as_key);
221 return $users;
222 }
223
230 public function &getGroupList($criteria = null)
231 {
232 $groups =& $this->_gHandler->getObjects($criteria, true);
233 $ret = [];
234 foreach (array_keys($groups) as $i) {
235 $ret[$i] = $groups[$i]->getVar('name');
236 }
237 return $ret;
238 }
239
246 public function getUserList($criteria = null)
247 {
248 return $this->_uHandler->getUnames($criteria, true);
249 }
250
258 public function addUserToGroup($group_id, $user_id)
259 {
260 $group_ids =& $this->getGroupsByUser($user_id);
261 if (!in_array($group_id, $group_ids)) {
262 $mship =& $this->_mHandler->create();
263 $mship->setVar('groupid', $group_id);
264 $mship->setVar('uid', $user_id);
265 return $this->_mHandler->insert($mship);
266 }
267
268 return true;
269 }
270
271
278 public function removeUserFromGroup($group_id, $user_id)
279 {
280 $user_ids = [$user_id];
281 return $this->removeUsersFromGroup($group_id, $user_ids);
282 }
283
291 public function removeUsersFromGroup($group_id, $user_ids = [])
292 {
293 $criteria = new CriteriaCompo();
294 $criteria->add(new Criteria('groupid', $group_id));
295 $criteria2 = new CriteriaCompo();
296 foreach ($user_ids as $uid) {
297 $criteria2->add(new Criteria('uid', $uid), 'OR');
298 }
299 $criteria->add($criteria2);
300 return $this->_mHandler->deleteAll($criteria);
301 }
302
313 public function &getUsersByGroup($group_id, $asobject = false, $limit = 0, $start = 0)
314 {
315 $user_ids =& $this->_mHandler->getUsersByGroup($group_id, $limit, $start);
316 if (!$asobject) {
317 return $user_ids;
318 } else {
319 $ret = [];
320 foreach ($user_ids as $u_id) {
321 $user =& $this->getUser($u_id);
322 if (is_object($user)) {
323 $ret[] =& $user;
324 }
325 unset($user);
326 }
327 return $ret;
328 }
329 }
330
339 public function &getUsersByNoGroup($group_id, $asobject = false, $limit = 0, $start = 0)
340 {
341 $user_ids =& $this->_mHandler->getUsersByNoGroup($group_id, $limit, $start);
342 if (!$asobject) {
343 return $user_ids;
344 } else {
345 $ret = [];
346 foreach ($user_ids as $u_id) {
347 $user =& $this->getUser($u_id);
348 if (is_object($user)) {
349 $ret[] =& $user;
350 }
351 unset($user);
352 }
353 return $ret;
354 }
355 }
356
364 public function &getGroupsByUser($user_id, $asobject = false)
365 {
366 $group_ids =& $this->_mHandler->getGroupsByUser($user_id);
367 if (!$asobject) {
368 return $group_ids;
369 } else {
370 $ret = [];
371 foreach ($group_ids as $g_id) {
372 $ret[] =& $this->getGroup($g_id);
373 }
374 return $ret;
375 }
376 }
377
385 public function &loginUser($uname, $pwd)
386 {
387 $criteria = new CriteriaCompo(new Criteria('uname', $uname));
388 if (is_callable('User_Utils::passwordVerify')) {
389 $user = $this->_uHandler->getObjects($criteria, false);
390 if ($user && 1 === (is_countable($user) ? count($user) : 0)) {
391 if (!User_Utils::passwordVerify($pwd, $user[0]->get('pass'))) {
392 $user = [];
393 }
394 } else {
395 $user = [];
396 }
397 } else {
398 if (is_callable('User_Utils::encryptPassword')) {
399 $criteria->add(new Criteria('pass', User_Utils::encryptPassword($pwd)));
400 } else {
401 $criteria->add(new Criteria('pass', md5($pwd)));
402 }
403 $user = $this->_uHandler->getObjects($criteria, false);
404 }
405 if (!$user || 1 != (is_countable($user) ? count($user) : 0)) {
406 $ret = false;
407 return $ret;
408 }
409 return $user[0];
410 }
411
419 public function &loginUserMd5($uname, $md5pwd)
420 {
421 $criteria = new CriteriaCompo(new Criteria('uname', $uname));
422 $criteria->add(new Criteria('pass', $md5pwd));
423 $user =& $this->_uHandler->getObjects($criteria, false);
424 if (!$user || 1 != (is_countable($user) ? count($user) : 0)) {
425 $ret = false;
426 return $ret;
427 }
428 return $user[0];
429 }
430
437 public function getUserCount($criteria = null)
438 {
439 return $this->_uHandler->getCount($criteria);
440 }
441
448 public function getUserCountByGroup($group_id)
449 {
450 return $this->_mHandler->getCount(new Criteria('groupid', $group_id));
451 }
452
458 public function getUserCountByNoGroup($group_id)
459 {
460 $groupid = (int)$group_id;
461 $usersTable = $this->_mHandler->db->prefix('users');
462 $linkTable = $this->_mHandler->db->prefix('groups_users_link');
463
464 $sql = "SELECT count(*) FROM {$usersTable} u LEFT JOIN {$linkTable} g ON u.uid=g.uid," .
465 "{$usersTable} u2 LEFT JOIN {$linkTable} g2 ON u2.uid=g2.uid AND g2.groupid={$groupid} " .
466 "WHERE (g.groupid != {$groupid} OR g.groupid IS NULL) " .
467 "AND (g2.groupid = {$groupid} OR g2.groupid IS NULL) " . 'AND u.uid = u2.uid AND g2.uid IS NULL GROUP BY u.uid';
468
469 $result = $this->_mHandler->db->query($sql);
470 if (!$result) {
471 return 0;
472 }
473
474 $count = $this->_mHandler->db->getRowsNum($result);
475
476 return $count;
477 }
478
487 public function updateUserByField(&$user, $fieldName, $fieldValue)
488 {
489 $user->setVar($fieldName, $fieldValue);
490 return $this->insertUser($user);
491 }
492
501 public function updateUsersByField($fieldName, $fieldValue, $criteria = null)
502 {
503 return $this->_uHandler->updateAll($fieldName, $fieldValue, $criteria);
504 }
505
512 public function activateUser(&$user)
513 {
514 if (0 != $user->getVar('level')) {
515 return true;
516 }
517 $user->setVar('level', 1);
518 return $this->_uHandler->insert($user, true);
519 }
520}
static passwordVerify($password, $hash)
static encryptPassword($password)
removeUsersFromGroup($group_id, $user_ids=[])
Definition member.php:291
insertUser(&$user, $force=false)
Definition member.php:193
& getGroupsByUser($user_id, $asobject=false)
Definition member.php:364
& loginUserMd5($uname, $md5pwd)
Definition member.php:419
& loginUser($uname, $pwd)
Definition member.php:385
& getUserByEmail($email)
Definition member.php:117
removeUserFromGroup($group_id, $user_id)
Definition member.php:278
activateUser(&$user)
Definition member.php:512
getUserCount($criteria=null)
Definition member.php:437
insertGroup(&$group)
Definition member.php:180
deleteUser(&$user)
Definition member.php:166
updateUserByField(&$user, $fieldName, $fieldValue)
Definition member.php:487
& getUsersByGroup($group_id, $asobject=false, $limit=0, $start=0)
Definition member.php:313
& getUsers($criteria=null, $id_as_key=false)
Definition member.php:218
deleteGroup(&$group)
Definition member.php:153
updateUsersByField($fieldName, $fieldValue, $criteria=null)
Definition member.php:501
& getUsersByNoGroup($group_id, $asobject=false, $limit=0, $start=0)
Definition member.php:339
getUserList($criteria=null)
Definition member.php:246
getUserCountByNoGroup($group_id)
Definition member.php:458
& getGroups($criteria=null, $id_as_key=false)
Definition member.php:205
addUserToGroup($group_id, $user_id)
Definition member.php:258
getUserCountByGroup($group_id)
Definition member.php:448
& getGroupList($criteria=null)
Definition member.php:230