1: <?php
2: 3: 4: 5:
6:
7: if (!defined('XOOPS_ROOT_PATH')) exit();
8:
9: require_once XOOPS_ROOT_PATH . "/core/XCube_ActionForm.class.php";
10:
11: 12: 13: 14: 15: 16:
17: class User_UserAdminEditForm extends XCube_ActionForm
18: {
19: var $_mIsNew;
20:
21: function getTokenName()
22: {
23: return "module.user.UserAdminEditForm.Token" . $this->get('uid');
24: }
25:
26: function prepare()
27: {
28:
29:
30:
31: $this->mFormProperties['uid'] =new XCube_IntProperty('uid');
32: $this->mFormProperties['name'] =new XCube_StringProperty('name');
33: $this->mFormProperties['uname'] =new XCube_StringProperty('uname');
34: $this->mFormProperties['email'] =new XCube_StringProperty('email');
35: $this->mFormProperties['url'] =new XCube_StringProperty('url');
36: $this->mFormProperties['user_icq'] =new XCube_StringProperty('user_icq');
37: $this->mFormProperties['user_from'] =new XCube_StringProperty('user_from');
38: $this->mFormProperties['user_sig'] =new XCube_TextProperty('user_sig');
39: $this->mFormProperties['user_viewemail'] =new XCube_IntProperty('user_viewemail');
40: $this->mFormProperties['user_aim'] =new XCube_StringProperty('user_aim');
41: $this->mFormProperties['user_yim'] =new XCube_StringProperty('user_yim');
42: $this->mFormProperties['user_msnm'] =new XCube_StringProperty('user_msnm');
43: $this->mFormProperties['pass'] =new XCube_StringProperty('pass');
44: $this->mFormProperties['vpass'] =new XCube_StringProperty('vpass');
45: $this->mFormProperties['posts'] =new XCube_IntProperty('posts');
46: $this->mFormProperties['attachsig'] =new XCube_IntProperty('attachsig');
47: $this->mFormProperties['rank'] =new XCube_IntProperty('rank');
48: $this->mFormProperties['level'] =new XCube_IntProperty('level');
49: $this->mFormProperties['timezone_offset'] =new XCube_FloatProperty('timezone_offset');
50: $this->mFormProperties['umode'] =new XCube_StringProperty('umode');
51: $this->mFormProperties['uorder'] =new XCube_IntProperty('uorder');
52: $this->mFormProperties['notify_method'] =new XCube_IntProperty('notify_method');
53: $this->mFormProperties['notify_mode'] =new XCube_IntProperty('notify_mode');
54: $this->mFormProperties['user_occ'] =new XCube_StringProperty('user_occ');
55: $this->mFormProperties['bio'] =new XCube_TextProperty('bio');
56: $this->mFormProperties['user_intrest'] =new XCube_StringProperty('user_intrest');
57: $this->mFormProperties['user_mailok'] =new XCube_IntProperty('user_mailok');
58: $this->mFormProperties['groups'] =new XCube_IntArrayProperty('groups');
59:
60:
61:
62:
63: $this->mFieldProperties['uid'] =new XCube_FieldProperty($this);
64: $this->mFieldProperties['uid']->setDependsByArray(array('required'));
65: $this->mFieldProperties['uid']->addMessage('required', _MD_USER_ERROR_REQUIRED, _MD_USER_LANG_UID);
66:
67: $this->mFieldProperties['name'] =new XCube_FieldProperty($this);
68: $this->mFieldProperties['name']->setDependsByArray(array('maxlength'));
69: $this->mFieldProperties['name']->addMessage('maxlength', _MD_USER_ERROR_MAXLENGTH, _MD_USER_LANG_NAME, '60');
70: $this->mFieldProperties['name']->addVar('maxlength', 60);
71:
72: $this->mFieldProperties['uname'] =new XCube_FieldProperty($this);
73: $this->mFieldProperties['uname']->setDependsByArray(array('required','maxlength'));
74: $this->mFieldProperties['uname']->addMessage('required', _MD_USER_ERROR_REQUIRED, _MD_USER_LANG_UNAME, '25');
75: $this->mFieldProperties['uname']->addMessage('maxlength', _MD_USER_ERROR_MAXLENGTH, _MD_USER_LANG_UNAME, '25');
76: $this->mFieldProperties['uname']->addVar('maxlength', 25);
77:
78: $this->mFieldProperties['email'] =new XCube_FieldProperty($this);
79: $this->mFieldProperties['email']->addMessage('required', _MD_USER_ERROR_REQUIRED, _MD_USER_LANG_EMAIL, '60');
80: $this->mFieldProperties['email']->setDependsByArray(array('required', 'maxlength', 'email'));
81: $this->mFieldProperties['email']->addMessage('maxlength', _MD_USER_ERROR_MAXLENGTH, _MD_USER_LANG_EMAIL, '60');
82: $this->mFieldProperties['email']->addVar('maxlength', 60);
83: $this->mFieldProperties['email']->addMessage('email', _MD_USER_ERROR_EMAIL, _MD_USER_LANG_EMAIL);
84:
85: $this->mFieldProperties['url'] =new XCube_FieldProperty($this);
86: $this->mFieldProperties['url']->setDependsByArray(array('maxlength'));
87: $this->mFieldProperties['url']->addMessage('maxlength', _MD_USER_ERROR_MAXLENGTH, _MD_USER_LANG_URL, '100');
88: $this->mFieldProperties['url']->addVar('maxlength', 100);
89:
90: $this->mFieldProperties['user_icq'] =new XCube_FieldProperty($this);
91: $this->mFieldProperties['user_icq']->setDependsByArray(array('maxlength'));
92: $this->mFieldProperties['user_icq']->addMessage('maxlength', _MD_USER_ERROR_MAXLENGTH, _MD_USER_LANG_USER_ICQ, '15');
93: $this->mFieldProperties['user_icq']->addVar('maxlength', 15);
94:
95: $this->mFieldProperties['user_from'] =new XCube_FieldProperty($this);
96: $this->mFieldProperties['user_from']->setDependsByArray(array('maxlength'));
97: $this->mFieldProperties['user_from']->addMessage('maxlength', _MD_USER_ERROR_MAXLENGTH, _MD_USER_LANG_USER_FROM, '100');
98: $this->mFieldProperties['user_from']->addVar('maxlength', 100);
99:
100: $this->mFieldProperties['user_aim'] =new XCube_FieldProperty($this);
101: $this->mFieldProperties['user_aim']->setDependsByArray(array('maxlength'));
102: $this->mFieldProperties['user_aim']->addMessage('maxlength', _MD_USER_ERROR_MAXLENGTH, _MD_USER_LANG_USER_AIM, '18');
103: $this->mFieldProperties['user_aim']->addVar('maxlength', 18);
104:
105: $this->mFieldProperties['user_yim'] =new XCube_FieldProperty($this);
106: $this->mFieldProperties['user_yim']->setDependsByArray(array('maxlength'));
107: $this->mFieldProperties['user_yim']->addMessage('maxlength', _MD_USER_ERROR_MAXLENGTH, _MD_USER_LANG_USER_YIM, '25');
108: $this->mFieldProperties['user_yim']->addVar('maxlength', 25);
109:
110: $this->mFieldProperties['user_msnm'] =new XCube_FieldProperty($this);
111: $this->mFieldProperties['user_msnm']->setDependsByArray(array('maxlength'));
112: $this->mFieldProperties['user_msnm']->addMessage('maxlength', _MD_USER_ERROR_MAXLENGTH, _MD_USER_LANG_USER_MSNM, '100');
113: $this->mFieldProperties['user_msnm']->addVar('maxlength', 100);
114:
115: $this->mFieldProperties['pass'] =new XCube_FieldProperty($this);
116: $this->mFieldProperties['pass']->setDependsByArray(array('maxlength'));
117: $this->mFieldProperties['pass']->addMessage('maxlength', _MD_USER_ERROR_MAXLENGTH, _MD_USER_LANG_PASS, '32');
118: $this->mFieldProperties['pass']->addVar('maxlength', 32);
119:
120: $this->mFieldProperties['vpass'] =new XCube_FieldProperty($this);
121: $this->mFieldProperties['vpass']->setDependsByArray(array('maxlength'));
122: $this->mFieldProperties['vpass']->addMessage('maxlength', _MD_USER_ERROR_MAXLENGTH, _MD_USER_LANG_PASS, '32');
123: $this->mFieldProperties['vpass']->addVar('maxlength', 32);
124:
125: $this->mFieldProperties['posts'] =new XCube_FieldProperty($this);
126: $this->mFieldProperties['posts']->setDependsByArray(array('required'));
127: $this->mFieldProperties['posts']->addMessage('required', _MD_USER_ERROR_REQUIRED, _MD_USER_LANG_POSTS);
128:
129: $this->mFieldProperties['rank'] =new XCube_FieldProperty($this);
130: $this->mFieldProperties['rank']->setDependsByArray(array('required'));
131: $this->mFieldProperties['rank']->addMessage('required', _MD_USER_ERROR_REQUIRED, _AD_USER_LANG_RANK);
132:
133: $this->mFieldProperties['level'] =new XCube_FieldProperty($this);
134: $this->mFieldProperties['level']->setDependsByArray(array('required'));
135: $this->mFieldProperties['level']->addMessage('required', _MD_USER_ERROR_REQUIRED, _MD_USER_LANG_LEVEL);
136:
137: $this->mFieldProperties['timezone_offset'] =new XCube_FieldProperty($this);
138: $this->mFieldProperties['timezone_offset']->setDependsByArray(array('required'));
139: $this->mFieldProperties['timezone_offset']->addMessage('required', _MD_USER_ERROR_REQUIRED, _MD_USER_LANG_TIMEZONE_OFFSET);
140:
141: $this->mFieldProperties['umode'] =new XCube_FieldProperty($this);
142: $this->mFieldProperties['umode']->setDependsByArray(array('required'));
143: $this->mFieldProperties['umode']->addMessage('required', _MD_USER_ERROR_REQUIRED, _MD_USER_LANG_UMODE);
144:
145: $this->mFieldProperties['uorder'] =new XCube_FieldProperty($this);
146: $this->mFieldProperties['uorder']->setDependsByArray(array('required','intRange'));
147: $this->mFieldProperties['uorder']->addMessage('required', _MD_USER_ERROR_REQUIRED, _MD_USER_LANG_UORDER);
148: $this->mFieldProperties['uorder']->addMessage('intRange', _MD_USER_ERROR_INJURY, _MD_USER_LANG_UORDER);
149: $this->mFieldProperties['uorder']->addVar('min', 0);
150: $this->mFieldProperties['uorder']->addVar('max', 1);
151:
152: $this->mFieldProperties['notify_method'] =new XCube_FieldProperty($this);
153: $this->mFieldProperties['notify_method']->setDependsByArray(array('required','intRange'));
154: $this->mFieldProperties['notify_method']->addMessage('required', _MD_USER_ERROR_REQUIRED, _MD_USER_LANG_NOTIFY_METHOD);
155: $this->mFieldProperties['notify_method']->addMessage('intRange', _MD_USER_ERROR_INJURY, _MD_USER_LANG_NOTIFY_METHOD);
156: $this->mFieldProperties['notify_method']->addVar('min', 0);
157: $this->mFieldProperties['notify_method']->addVar('max', 2);
158:
159: $this->mFieldProperties['notify_mode'] =new XCube_FieldProperty($this);
160: $this->mFieldProperties['notify_mode']->setDependsByArray(array('required','intRange'));
161: $this->mFieldProperties['notify_mode']->addMessage('required', _MD_USER_ERROR_REQUIRED, _MD_USER_LANG_NOTIFY_MODE);
162: $this->mFieldProperties['notify_mode']->addMessage('intRange', _MD_USER_ERROR_INJURY, _MD_USER_LANG_NOTIFY_MODE);
163: $this->mFieldProperties['notify_mode']->addVar('min', 0);
164: $this->mFieldProperties['notify_mode']->addVar('max', 2);
165:
166: $this->mFieldProperties['user_occ'] =new XCube_FieldProperty($this);
167: $this->mFieldProperties['user_occ']->setDependsByArray(array('maxlength'));
168: $this->mFieldProperties['user_occ']->addMessage('maxlength', _MD_USER_ERROR_MAXLENGTH, _MD_USER_LANG_USER_OCC, '100');
169: $this->mFieldProperties['user_occ']->addVar('maxlength', 100);
170:
171: $this->mFieldProperties['user_intrest'] =new XCube_FieldProperty($this);
172: $this->mFieldProperties['user_intrest']->setDependsByArray(array('maxlength'));
173: $this->mFieldProperties['user_intrest']->addMessage('maxlength', _MD_USER_ERROR_MAXLENGTH, _MD_USER_LANG_USER_INTREST, '150');
174: $this->mFieldProperties['user_intrest']->addVar('maxlength', 150);
175:
176:
177: XCube_DelegateUtils::call('Legacy_Profile.SetupActionForm', $this);
178: }
179:
180: function validateUname()
181: {
182: if ($this->get('uname') != null) {
183: $handler =& xoops_gethandler('user');
184: $criteria =new CriteriaCompo(new Criteria('uname', $this->get('uname')));
185: if ($this->get('uid')) {
186: $criteria->add(new Criteria('uid', $this->get('uid'), '<>'));
187: }
188: if ($handler->getCount($criteria) > 0) {
189: $this->addErrorMessage(_AD_USER_ERROR_UNAME_NO_UNIQUE);
190: }
191: }
192: }
193:
194: function validateEmail()
195: {
196: if (strlen($this->get('email')) > 0) {
197:
198:
199:
200: $userHandler=&xoops_gethandler('user');
201: $criteria =new CriteriaCompo(new Criteria('email', $this->get('email')));
202: if ($this->get('uid') > 0) {
203: $criteria->add(new Criteria('uid', $this->get('uid'), '<>'));
204: }
205: if ($userHandler->getCount($criteria) > 0) {
206: $this->addErrorMessage(_MD_USER_ERROR_EMAILTAKEN);
207: }
208: }
209: }
210:
211: function validateUrl()
212: {
213: $t_url = $this->get('url');
214: if (strlen($t_url) > 0) {
215: if (!preg_match('/^https?(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/', $t_url)) {
216: $this->addErrorMessage(XCube_Utils::formatMessage(_MD_USER_ERROR_INJURY, _MD_USER_LANG_URL));
217: }
218: }
219: }
220:
221: function validateGroups()
222: {
223: $groupHandler =& xoops_gethandler('group');
224: foreach ($this->get('groups') as $gid) {
225: $group =& $groupHandler->get($gid);
226: if (!is_object($group)) {
227: $this->addErrorMessage(_AD_USER_ERROR_GROUP_VALUE);
228: }
229: }
230: }
231:
232: 233: 234: 235: 236:
237: function validatePass()
238: {
239: if (strlen($this->get('pass'))) {
240: if ($this->get('pass') != $this->get('vpass')) {
241: $this->addErrorMessage(_MD_USER_ERROR_PASSWORD);
242: $this->set('pass', '');
243: $this->set('vpass', '');
244: }
245: }
246: elseif($this->_mIsNew) {
247: $this->addErrorMessage(XCube_Utils::formatMessage(_MD_USER_ERROR_REQUIRED, _MD_USER_LANG_PASS));
248: }
249: }
250:
251: function validateRank()
252: {
253: $t_rank = $this->get('rank');
254:
255: if ($t_rank > 0) {
256: $handler =& xoops_getmodulehandler('ranks', 'user');
257: $rank =& $handler->get($t_rank);
258:
259: if (!is_object($rank)) {
260: $this->addErrorMessage(XCube_Utils::formatMessage(_MD_USER_ERROR_INJURY, _AD_USER_LANG_RANK));
261: }
262: elseif ($rank->get('rank_special') != 1) {
263: $this->addErrorMessage(XCube_Utils::formatMessage(_MD_USER_ERROR_INJURY, _AD_USER_LANG_RANK));
264: }
265: }
266: }
267:
268: function validateUmode()
269: {
270: if (!in_array($this->get('umode'), array('nest', 'flat', 'thread'))) {
271: $this->addErrorMessage(_AD_USER_ERROR_UMODE);
272: }
273: }
274:
275: function load(&$obj)
276: {
277: $this->set('uid', $obj->get('uid'));
278: $this->set('name', $obj->get('name'));
279: $this->set('uname', $obj->get('uname'));
280: $this->set('email', $obj->get('email'));
281: $this->set('url', $obj->get('url'));
282: $this->set('user_icq', $obj->get('user_icq'));
283: $this->set('user_from', $obj->get('user_from'));
284: $this->set('user_sig', $obj->get('user_sig'));
285: $this->set('user_viewemail', $obj->get('user_viewemail'));
286: $this->set('user_aim', $obj->get('user_aim'));
287: $this->set('user_yim', $obj->get('user_yim'));
288: $this->set('user_msnm', $obj->get('user_msnm'));
289:
290: $this->set('posts', $obj->get('posts'));
291: $this->set('attachsig', $obj->get('attachsig'));
292: $this->set('rank', $obj->get('rank'));
293: $this->set('level', $obj->get('level'));
294: $this->set('timezone_offset', $obj->get('timezone_offset'));
295: $this->set('umode', $obj->get('umode'));
296: $this->set('uorder', $obj->get('uorder'));
297: $this->set('notify_method', $obj->get('notify_method'));
298: $this->set('notify_mode', $obj->get('notify_mode'));
299: $this->set('user_occ', $obj->get('user_occ'));
300: $this->set('bio', $obj->get('bio'));
301: $this->set('user_intrest', $obj->get('user_intrest'));
302: $this->set('user_mailok', $obj->get('user_mailok'));
303:
304: $this->_mIsNew = $obj->isNew();
305:
306: $groups = $obj->getGroups();
307:
308: if ($this->_mIsNew) {
309: $this->set('groups', 0, XOOPS_GROUP_USERS);
310: }
311: else {
312: $i = 0;
313: foreach ($groups as $gid) {
314: $this->set('groups', $i++, $gid);
315: }
316: }
317:
318:
319: XCube_DelegateUtils::call('Legacy_Profile.LoadActionForm', $this);
320: }
321:
322: function update(&$obj)
323: {
324: $obj->set('uid', $this->get('uid'));
325: $obj->set('name', $this->get('name'));
326: $obj->set('uname', $this->get('uname'));
327: $obj->set('email', $this->get('email'));
328: $obj->set('url', $this->get('url'));
329: $obj->set('user_icq', $this->get('user_icq'));
330: $obj->set('user_from', $this->get('user_from'));
331: $obj->set('user_sig', $this->get('user_sig'));
332: $obj->set('user_viewemail', $this->get('user_viewemail'));
333: $obj->set('user_aim', $this->get('user_aim'));
334: $obj->set('user_yim', $this->get('user_yim'));
335: $obj->set('user_msnm', $this->get('user_msnm'));
336:
337: if (strlen($this->get('pass'))) {
338: $obj->set('pass', md5($this->get('pass')));
339: }
340:
341: $obj->set('posts', $this->get('posts'));
342: $obj->set('attachsig', $this->get('attachsig'));
343: $obj->set('rank', $this->get('rank'));
344: $obj->set('level', $this->get('level'));
345: $obj->set('timezone_offset', $this->get('timezone_offset'));
346: $obj->set('umode', $this->get('umode'));
347: $obj->set('uorder', $this->get('uorder'));
348: $obj->set('notify_method', $this->get('notify_method'));
349: $obj->set('notify_mode', $this->get('notify_mode'));
350: $obj->set('user_occ', $this->get('user_occ'));
351: $obj->set('bio', $this->get('bio'));
352: $obj->set('user_intrest', $this->get('user_intrest'));
353: $obj->set('user_mailok', $this->get('user_mailok'));
354:
355: $obj->Groups = array();
356: $groups = $this->get('groups');
357:
358: foreach ($groups as $gid) {
359: $obj->Groups[] = $gid;
360: }
361: }
362: }
363:
364: ?>
365: