17if (!defined(
'XOOPS_ROOT_PATH')) {
20require_once XOOPS_ROOT_PATH.
'/kernel/user.php';
21require_once XOOPS_ROOT_PATH.
'/kernel/group.php';
29class XoopsMemberHandler
76 $ret =& $this->_gHandler->create();
87 $ret =& $this->_uHandler->create();
99 $ret =& $this->_gHandler->get($id);
111 if (!isset($this->_members[$id])) {
112 $this->_members[$id] =& $this->_uHandler->get($id);
114 return $this->_members[$id];
122 $users =& $this->
getUsers(
new Criteria(
'email', $myts->addSlashes($email)));
124 if (!is_array($users)) {
126 } elseif (count($users) > 0) {
127 $returnUser = is_object($users[0]) ? $users[0] :
null;
138 public function delete(&$object)
155 $this->_gHandler->delete($group);
156 $this->_mHandler->deleteAll(
new Criteria(
'groupid', $group->getVar(
'groupid')));
168 $this->_uHandler->delete($user);
169 $this->_mHandler->deleteAll(
new Criteria(
'uid', $user->getVar(
'uid')));
182 return $this->_gHandler->insert($group);
195 return $this->_uHandler->insert($user, $force);
205 public function &
getGroups($criteria =
null, $id_as_key =
false)
207 $groups =& $this->_gHandler->getObjects($criteria, $id_as_key);
218 public function &
getUsers($criteria =
null, $id_as_key =
false)
220 $users =& $this->_uHandler->getObjects($criteria, $id_as_key);
232 $groups =& $this->_gHandler->getObjects($criteria,
true);
234 foreach (array_keys($groups) as $i) {
235 $ret[$i] = $groups[$i]->getVar(
'name');
248 return $this->_uHandler->getUnames($criteria,
true);
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);
280 $user_ids = [$user_id];
294 $criteria->add(
new Criteria(
'groupid', $group_id));
296 foreach ($user_ids as $uid) {
297 $criteria2->add(
new Criteria(
'uid', $uid),
'OR');
299 $criteria->add($criteria2);
300 return $this->_mHandler->deleteAll($criteria);
313 public function &
getUsersByGroup($group_id, $asobject =
false, $limit = 0, $start = 0)
315 $user_ids =& $this->_mHandler->getUsersByGroup($group_id, $limit, $start);
320 foreach ($user_ids as $u_id) {
321 $user =& $this->
getUser($u_id);
322 if (is_object($user)) {
341 $user_ids =& $this->_mHandler->getUsersByNoGroup($group_id, $limit, $start);
346 foreach ($user_ids as $u_id) {
347 $user =& $this->
getUser($u_id);
348 if (is_object($user)) {
366 $group_ids =& $this->_mHandler->getGroupsByUser($user_id);
371 foreach ($group_ids as $g_id) {
388 if (is_callable(
'User_Utils::passwordVerify')) {
389 $user = $this->_uHandler->getObjects($criteria,
false);
390 if ($user && 1 === (is_countable($user) ? count($user) : 0)) {
398 if (is_callable(
'User_Utils::encryptPassword')) {
401 $criteria->add(
new Criteria(
'pass', md5($pwd)));
403 $user = $this->_uHandler->getObjects($criteria,
false);
405 if (!$user || 1 != (is_countable($user) ? count($user) : 0)) {
422 $criteria->add(
new Criteria(
'pass', $md5pwd));
423 $user =& $this->_uHandler->getObjects($criteria,
false);
424 if (!$user || 1 != (is_countable($user) ? count($user) : 0)) {
439 return $this->_uHandler->getCount($criteria);
450 return $this->_mHandler->getCount(
new Criteria(
'groupid', $group_id));
460 $groupid = (int)$group_id;
461 $usersTable = $this->_mHandler->db->prefix(
'users');
462 $linkTable = $this->_mHandler->db->prefix(
'groups_users_link');
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';
469 $result = $this->_mHandler->db->query($sql);
474 $count = $this->_mHandler->db->getRowsNum($result);
489 $user->setVar($fieldName, $fieldValue);
503 return $this->_uHandler->updateAll($fieldName, $fieldValue, $criteria);
514 if (0 != $user->getVar(
'level')) {
517 $user->setVar(
'level', 1);
518 return $this->_uHandler->insert($user,
true);
static passwordVerify($password, $hash)
static encryptPassword($password)
removeUsersFromGroup($group_id, $user_ids=[])
insertUser(&$user, $force=false)
& getGroupsByUser($user_id, $asobject=false)
& loginUserMd5($uname, $md5pwd)
& loginUser($uname, $pwd)
removeUserFromGroup($group_id, $user_id)
getUserCount($criteria=null)
updateUserByField(&$user, $fieldName, $fieldValue)
& getUsersByGroup($group_id, $asobject=false, $limit=0, $start=0)
& getUsers($criteria=null, $id_as_key=false)
updateUsersByField($fieldName, $fieldValue, $criteria=null)
& getUsersByNoGroup($group_id, $asobject=false, $limit=0, $start=0)
getUserList($criteria=null)
getUserCountByNoGroup($group_id)
& getGroups($criteria=null, $id_as_key=false)
addUserToGroup($group_id, $user_id)
getUserCountByGroup($group_id)
& getGroupList($criteria=null)