13 public $_mGroupsLoadedFlag =
false;
15 public $_mRankLoadedFlag =
false;
18 public function UserUsersObject()
23 public function __construct()
26 if (isset($initVars)) {
27 $this->mVars = $initVars;
30 $this->initVar(
'uid', XOBJ_DTYPE_INT, 0,
true);
31 $this->initVar(
'name', XOBJ_DTYPE_STRING,
'',
false, 60);
32 $this->initVar(
'uname', XOBJ_DTYPE_STRING,
'',
true, 25);
33 $this->initVar(
'email', XOBJ_DTYPE_STRING,
'',
true, 60);
34 $this->initVar(
'url', XOBJ_DTYPE_STRING,
'',
false, 100);
35 $this->initVar(
'user_avatar', XOBJ_DTYPE_STRING,
'blank.gif',
false, 30);
36 $this->initVar(
'user_regdate', XOBJ_DTYPE_INT, time(),
true);
37 $this->initVar(
'user_icq', XOBJ_DTYPE_STRING,
'',
false, 15);
38 $this->initVar(
'user_from', XOBJ_DTYPE_STRING,
'',
false, 100);
39 $this->initVar(
'user_sig', XOBJ_DTYPE_TEXT,
'',
false);
40 $this->initVar(
'user_viewemail', XOBJ_DTYPE_BOOL,
'0',
false);
41 $this->initVar(
'actkey', XOBJ_DTYPE_STRING,
'',
false, 8);
42 $this->initVar(
'user_aim', XOBJ_DTYPE_STRING,
'',
false, 18);
43 $this->initVar(
'user_yim', XOBJ_DTYPE_STRING,
'',
false, 25);
44 $this->initVar(
'user_msnm', XOBJ_DTYPE_STRING,
'',
false, 100);
45 $this->initVar(
'pass', XOBJ_DTYPE_STRING,
'',
false, 191);
46 $this->initVar(
'posts', XOBJ_DTYPE_INT,
'0',
false);
47 $this->initVar(
'attachsig', XOBJ_DTYPE_BOOL,
'0',
false);
48 $this->initVar(
'rank', XOBJ_DTYPE_INT,
'0',
false);
49 $this->initVar(
'level', XOBJ_DTYPE_INT,
'1',
false);
50 $this->initVar(
'theme', XOBJ_DTYPE_STRING,
'',
false, 100);
51 $this->initVar(
'timezone_offset', XOBJ_DTYPE_FLOAT,
'0.0',
false);
52 $this->initVar(
'last_login', XOBJ_DTYPE_INT,
'0',
false);
53 $this->initVar(
'umode', XOBJ_DTYPE_STRING,
'',
false, 10);
54 $this->initVar(
'uorder', XOBJ_DTYPE_BOOL,
'0',
false);
55 $this->initVar(
'notify_method', XOBJ_DTYPE_INT,
'1',
false);
56 $this->initVar(
'notify_mode', XOBJ_DTYPE_INT,
'0',
false);
57 $this->initVar(
'user_occ', XOBJ_DTYPE_STRING,
'',
false, 100);
58 $this->initVar(
'bio', XOBJ_DTYPE_TEXT,
'',
false);
59 $this->initVar(
'user_intrest', XOBJ_DTYPE_STRING,
'',
false, 150);
60 $this->initVar(
'user_mailok', XOBJ_DTYPE_BOOL,
'1',
false);
61 $initVars = $this->mVars;
64 public function getGroups()
69 public function getNumGroups()
72 return count($this->Groups);
78 public function _loadGroups()
80 if (!$this->_mGroupsLoadedFlag) {
81 $handler = &xoops_getmodulehandler(
'groups_users_link',
'user');
82 $links = &$handler->getObjects(
new Criteria(
'uid', $this->
get(
'uid')));
83 foreach ($links as $link) {
84 $this->Groups[] = $link->get(
'groupid');
88 $this->_mGroupsLoadedFlag =
true;
92 public function _loadRank()
94 if (!$this->_mRankLoadedFlag) {
95 $t_rank = xoops_getrank($this->
get(
'rank'), $this->
get(
'posts'));
96 $rank_id = $t_rank[
'id'];
98 $handler = &xoops_getmodulehandler(
'ranks');
99 $this->mRank = &$handler->get($rank_id);
101 $this->_mRankLoadedFlag =
true;
105 public function getRank()
107 if (!$this->_mRankLoadedFlag) {
117 public $mTable =
'users';
118 public $mPrimary =
'uid';
119 public $mClass =
'UserUsersObject';
121 public function &
get($id)
123 $obj = &parent::get($id);
125 if (is_object($obj)) {
132 public function &
getObjects($criteria =
null, $limit =
null, $start =
null, $id_as_key =
false)
134 $objects = &parent::getObjects($criteria, $limit, $start, $id_as_key);
136 if (is_countable($objects) ? count($objects) : 0) {
137 foreach (array_keys($objects) as $key) {
138 $objects[$key]->_loadGroups();
155 public function &
getUids($criteria =
null, $limit =
null, $start =
null, $id_as_key =
false)
159 $sql =
'SELECT uid FROM ' . $this->mTable;
165 $where = $this->_makeCriteria4sql($criteria);
168 $sql .=
' WHERE ' . $where;
172 foreach ($criteria->getSorts() as $sort) {
173 $sorts[] = $sort[
'sort'] .
' ' . $sort[
'order'];
175 if (
'' != $criteria->getSort()) {
176 $sql .=
' ORDER BY ' . implode(
',', $sorts);
179 $limit = $criteria->getLimit();
180 $start = $criteria->getStart();
183 $result = $this->db->query($sql, $limit, $start);
188 while ($row = $this->db->fetchArray($result)) {
189 $ret[] = $row[
'uid'];
195 public function insert(&$user, $force =
false)
198 if (!defined(
'XCUBE_CORE_USER_PASS_LEN_FIXED') && is_callable(
'User_Utils::checkUsersPassColumnLength')) {
202 if (parent::insert($user, $force)) {
205 $user->_loadGroups();
207 $handler = &xoops_getmodulehandler(
'groups_users_link',
'user');
208 $oldLinkArr = &$handler->getObjects(
new Criteria(
'uid', $user->get(
'uid')), $force);
214 foreach (array_keys($oldLinkArr) as $key) {
215 $oldGroupidArr[] = $oldLinkArr[$key]->get(
'groupid');
216 if (!in_array($oldLinkArr[$key]->
get(
'groupid'), $user->Groups)) {
217 $handler->delete($oldLinkArr[$key], $force);
221 foreach ($user->Groups as $gid) {
222 if (!in_array($gid, $oldGroupidArr)) {
223 $link = &$handler->create();
225 $link->set(
'groupid', $gid);
226 $link->set(
'uid', $user->get(
'uid'));
228 $flag = &$handler->insert($link, $force);