1: <?php
2:
3: if (!defined('XOOPS_ROOT_PATH')) exit();
4:
5: class UserUsersObject extends XoopsSimpleObject
6: {
7:
8:
9:
10: var $Groups = array();
11: var $_mGroupsLoadedFlag = false;
12:
13: var $_mRankLoadedFlag = false;
14: var $mRank;
15:
16: function UserUsersObject()
17: {
18: static $initVars;
19: if (isset($initVars)) {
20: $this->mVars = $initVars;
21: return;
22: }
23: $this->initVar('uid', XOBJ_DTYPE_INT, 0, true);
24: $this->initVar('name', XOBJ_DTYPE_STRING, '', false, 60);
25: $this->initVar('uname', XOBJ_DTYPE_STRING, '', true, 25);
26: $this->initVar('email', XOBJ_DTYPE_STRING, '', true, 60);
27: $this->initVar('url', XOBJ_DTYPE_STRING, '', false, 100);
28: $this->initVar('user_avatar', XOBJ_DTYPE_STRING, 'blank.gif', false, 30);
29: $this->initVar('user_regdate', XOBJ_DTYPE_INT, time(), true);
30: $this->initVar('user_icq', XOBJ_DTYPE_STRING, '', false, 15);
31: $this->initVar('user_from', XOBJ_DTYPE_STRING, '', false, 100);
32: $this->initVar('user_sig', XOBJ_DTYPE_TEXT, '', false);
33: $this->initVar('user_viewemail', XOBJ_DTYPE_BOOL, '0', false);
34: $this->initVar('actkey', XOBJ_DTYPE_STRING, '', false, 8);
35: $this->initVar('user_aim', XOBJ_DTYPE_STRING, '', false, 18);
36: $this->initVar('user_yim', XOBJ_DTYPE_STRING, '', false, 25);
37: $this->initVar('user_msnm', XOBJ_DTYPE_STRING, '', false, 100);
38: $this->initVar('pass', XOBJ_DTYPE_STRING, '', false, 32);
39: $this->initVar('posts', XOBJ_DTYPE_INT, '0', false);
40: $this->initVar('attachsig', XOBJ_DTYPE_BOOL, '0', false);
41: $this->initVar('rank', XOBJ_DTYPE_INT, '0', false);
42: $this->initVar('level', XOBJ_DTYPE_INT, '1', false);
43: $this->initVar('theme', XOBJ_DTYPE_STRING, '', false, 100);
44: $this->initVar('timezone_offset', XOBJ_DTYPE_FLOAT, '0.0', false);
45: $this->initVar('last_login', XOBJ_DTYPE_INT, '0', false);
46: $this->initVar('umode', XOBJ_DTYPE_STRING, '', false, 10);
47: $this->initVar('uorder', XOBJ_DTYPE_BOOL, '0', false);
48: $this->initVar('notify_method', XOBJ_DTYPE_INT, '1', false);
49: $this->initVar('notify_mode', XOBJ_DTYPE_INT, '0', false);
50: $this->initVar('user_occ', XOBJ_DTYPE_STRING, '', false, 100);
51: $this->initVar('bio', XOBJ_DTYPE_TEXT, '', false);
52: $this->initVar('user_intrest', XOBJ_DTYPE_STRING, '', false, 150);
53: $this->initVar('user_mailok', XOBJ_DTYPE_BOOL, '1', false);
54: $initVars=$this->mVars;
55: }
56:
57: function getGroups()
58: {
59: return $this->Groups;
60: }
61:
62: function getNumGroups()
63: {
64: $this->_loadGroups();
65: return count($this->Groups);
66: }
67:
68:
69:
70:
71: function _loadGroups()
72: {
73: if (!$this->_mGroupsLoadedFlag) {
74: $handler =& xoops_getmodulehandler('groups_users_link', 'user');
75: $links =& $handler->getObjects(new Criteria('uid', $this->get('uid')));
76: foreach ($links as $link) {
77: $this->Groups[] = $link->get('groupid');
78: }
79: }
80:
81: $this->_mGroupsLoadedFlag = true;
82: }
83:
84:
85: function _loadRank()
86: {
87: if (!$this->_mRankLoadedFlag) {
88: $t_rank = xoops_getrank($this->get('rank'), $this->get('posts'));
89: $rank_id = $t_rank['id'];
90:
91: $handler =& xoops_getmodulehandler('ranks');
92: $this->mRank =& $handler->get($rank_id);
93:
94: $this->_mRankLoadedFlag = true;
95: }
96: }
97:
98: function getRank()
99: {
100: if (!$this->_mRankLoadedFlag)
101: $this->_loadRank();
102:
103: return $this->mRank;
104: }
105: }
106:
107: class UserUsersHandler extends XoopsObjectGenericHandler
108: {
109: var $mTable = "users";
110: var $mPrimary = "uid";
111: var $mClass = "UserUsersObject";
112:
113: function &get($id)
114: {
115: $obj =& parent::get($id);
116:
117: if (is_object($obj)) {
118: $obj->_loadGroups();
119: }
120:
121: return $obj;
122: }
123:
124: function &getObjects($criteria = null, $limit = null, $start = null, $id_as_key = false)
125: {
126: $objects =& parent::getObjects($criteria, $limit, $start, $id_as_key);
127:
128: if (count($objects)) {
129: foreach (array_keys($objects) as $key) {
130: $objects[$key]->_loadGroups();
131: }
132: }
133:
134: return $objects;
135: }
136:
137: 138: 139: 140: 141: 142:
143: function &getUids($criteria = null, $limit = null, $start = null, $id_as_key = false)
144: {
145: $ret = array();
146:
147: $sql = "SELECT uid FROM " . $this->mTable;
148:
149: $limit = 0;
150: $start = 0;
151:
152: if($criteria !== null && is_a($criteria, 'CriteriaElement')) {
153: $where = $this->_makeCriteria4sql($criteria);
154:
155: if (trim($where)) {
156: $sql .= " WHERE " . $where;
157: }
158:
159: $sorts = array();
160: foreach ($criteria->getSorts() as $sort) {
161: $sorts[] = $sort['sort'] . ' ' . $sort['order'];
162: }
163: if ($criteria->getSort() != '') {
164: $sql .= " ORDER BY " . implode(',', $sorts);
165: }
166:
167: $limit=$criteria->getLimit();
168: $start=$criteria->getStart();
169: }
170:
171: $result = $this->db->query($sql, $limit, $start);
172: if (!$result) {
173: return $ret;
174: }
175:
176: while ($row = $this->db->fetchArray($result)) {
177: $ret[] = $row['uid'];
178: }
179:
180: return $ret;
181: }
182:
183: function insert(&$user, $force = false)
184: {
185: if (parent::insert($user, $force)) {
186: $flag = true;
187:
188: $user->_loadGroups();
189:
190: $handler =& xoops_getmodulehandler('groups_users_link', 'user');
191: $oldLinkArr =& $handler->getObjects(new Criteria('uid', $user->get('uid')), $force);
192:
193:
194:
195:
196: $oldGroupidArr = array();
197: foreach (array_keys($oldLinkArr) as $key) {
198: $oldGroupidArr[] = $oldLinkArr[$key]->get('groupid');
199: if (!in_array($oldLinkArr[$key]->get('groupid'), $user->Groups)) {
200: $handler->delete($oldLinkArr[$key], $force);
201: }
202: }
203:
204: foreach ($user->Groups as $gid) {
205: if (!in_array($gid, $oldGroupidArr)) {
206: $link =& $handler->create();
207:
208: $link->set('groupid', $gid);
209: $link->set('uid', $user->get('uid'));
210:
211: $flag &= $handler->insert($link, $force);
212:
213: unset($link);
214: }
215: }
216:
217: return $flag;
218: }
219:
220: return false;
221: }
222: }
223:
224: ?>
225: