1: <?php
2: 3: 4: 5:
6:
7: if (!defined('XOOPS_ROOT_PATH')) exit();
8:
9: require_once XOOPS_MODULE_PATH . "/user/class/AbstractFilterForm.class.php";
10: require_once XOOPS_MODULE_PATH . "/user/admin/forms/UserSearchForm.class.php";
11:
12: define('USER_SORT_KEY_UID', 1);
13: define('USER_SORT_KEY_NAME', 2);
14: define('USER_SORT_KEY_UNAME', 3);
15: define('USER_SORT_KEY_EMAIL', 4);
16: define('USER_SORT_KEY_URL', 5);
17: define('USER_SORT_KEY_USER_AVATAR', 6);
18: define('USER_SORT_KEY_USER_REGDATE', 7);
19: define('USER_SORT_KEY_USER_ICQ', 8);
20: define('USER_SORT_KEY_USER_FROM', 9);
21: define('USER_SORT_KEY_USER_SIG', 10);
22: define('USER_SORT_KEY_USER_VIEWEMAIL', 11);
23: define('USER_SORT_KEY_ACTKEY', 12);
24: define('USER_SORT_KEY_USER_AIM', 13);
25: define('USER_SORT_KEY_USER_YIM', 14);
26: define('USER_SORT_KEY_USER_MSNM', 15);
27: define('USER_SORT_KEY_PASS', 16);
28: define('USER_SORT_KEY_POSTS', 17);
29: define('USER_SORT_KEY_ATTACHSIG', 18);
30: define('USER_SORT_KEY_RANK', 19);
31: define('USER_SORT_KEY_LEVEL', 20);
32: define('USER_SORT_KEY_THEME', 21);
33: define('USER_SORT_KEY_TIMEZONE_OFFSET', 22);
34: define('USER_SORT_KEY_LAST_LOGIN', 23);
35: define('USER_SORT_KEY_UMODE', 24);
36: define('USER_SORT_KEY_UORDER', 25);
37: define('USER_SORT_KEY_NOTIFY_METHOD', 26);
38: define('USER_SORT_KEY_NOTIFY_MODE', 27);
39: define('USER_SORT_KEY_USER_OCC', 28);
40: define('USER_SORT_KEY_BIO', 29);
41: define('USER_SORT_KEY_USER_INTREST', 30);
42: define('USER_SORT_KEY_USER_MAILOK', 31);
43: define('USER_SORT_KEY_MAXVALUE', 31);
44:
45: define('USER_SORT_KEY_DEFAULT', USER_SORT_KEY_UID);
46:
47: class User_UserSearchFilterForm extends User_AbstractFilterForm
48: {
49: var $mSortKeys = array(
50: USER_SORT_KEY_UID => 'u.uid',
51: USER_SORT_KEY_NAME => 'u.name',
52: USER_SORT_KEY_UNAME => 'u.uname',
53: USER_SORT_KEY_EMAIL => 'u.email',
54: USER_SORT_KEY_URL => 'u.url',
55: USER_SORT_KEY_USER_AVATAR => 'u.user_avatar',
56: USER_SORT_KEY_USER_REGDATE => 'u.user_regdate',
57: USER_SORT_KEY_USER_ICQ => 'u.user_icq',
58: USER_SORT_KEY_USER_FROM => 'u.user_from',
59: USER_SORT_KEY_USER_SIG => 'u.user_sig',
60: USER_SORT_KEY_USER_VIEWEMAIL => 'u.user_viewemail',
61: USER_SORT_KEY_ACTKEY => 'u.actkey',
62: USER_SORT_KEY_USER_AIM => 'u.user_aim',
63: USER_SORT_KEY_USER_YIM => 'u.user_yim',
64: USER_SORT_KEY_USER_MSNM => 'u.user_msnm',
65: USER_SORT_KEY_PASS => 'u.pass',
66: USER_SORT_KEY_POSTS => 'u.posts',
67: USER_SORT_KEY_ATTACHSIG => 'u.attachsig',
68: USER_SORT_KEY_RANK => 'u.rank',
69: USER_SORT_KEY_LEVEL => 'u.level',
70: USER_SORT_KEY_THEME => 'u.theme',
71: USER_SORT_KEY_TIMEZONE_OFFSET => 'u.timezone_offset',
72: USER_SORT_KEY_LAST_LOGIN => 'u.last_login',
73: USER_SORT_KEY_UMODE => 'u.umode',
74: USER_SORT_KEY_UORDER => 'u.uorder',
75: USER_SORT_KEY_NOTIFY_METHOD => 'u.notify_method',
76: USER_SORT_KEY_NOTIFY_MODE => 'u.notify_mode',
77: USER_SORT_KEY_USER_OCC => 'u.user_occ',
78: USER_SORT_KEY_BIO => 'u.bio',
79: USER_SORT_KEY_USER_INTREST => 'u.user_intrest',
80: USER_SORT_KEY_USER_MAILOK => 'u.user_mailok'
81: );
82:
83: var $_mMatchFields = array ("uname", "name", "email", "user_icq", "user_aim", "user_yim", "user_msnm",
84: "url", "user_from", "user_occ", "user_intrest");
85:
86: function getDefaultSortKey()
87: {
88: return USER_SORT_KEY_DEFAULT;
89: }
90:
91: function fetch()
92: {
93: parent::fetch();
94:
95: $form =new User_UserSearchForm();
96: $form->prepare();
97:
98: $form->fetch();
99: $form->validate();
100:
101: if ($form->hasError()) {
102: return;
103: }
104:
105: $root =& XCube_Root::getSingleton();
106:
107: foreach ($this->_mMatchFields as $field) {
108: if (strlen($form->get($field)) > 0) {
109: $this->mNavi->addExtra($field, $form->get($field));
110:
111: $user_field_match = $root->mContext->mRequest->getRequest('user_'.$field.'_match');
112: $field_match = $root->mContext->mRequest->getRequest($field.'_match');
113: if( isset($user_field_match) || isset($field_match) ){
114: $formvalue = 0;
115: if (isset($user_field_match)){
116: $formvalue = intval($form->get('user_'.$field.'_match')) ;
117: $this->mNavi->addExtra('user_'.$field.'_match', $formvalue);
118: }
119: elseif(isset($field_match)){
120: $formvalue = intval($form->get($field.'_match')) ;
121: $this->mNavi->addExtra($field.'_match', $formvalue);
122: }
123: switch ($formvalue) {
124: case XOOPS_MATCH_START:
125: $this->_mCriteria->add(new Criteria('u.' . $field, $form->get($field) . '%', 'LIKE'));
126: break;
127: case XOOPS_MATCH_END:
128: $this->_mCriteria->add(new Criteria('u.' . $field, '%' . $form->get($field), 'LIKE'));
129: break;
130: case XOOPS_MATCH_EQUAL:
131: $this->_mCriteria->add(new Criteria('u.' . $field, $form->get($field)));
132: break;
133: case XOOPS_MATCH_CONTAIN:
134: $this->_mCriteria->add(new Criteria('u.' . $field, '%' . $form->get($field) . '%', 'LIKE'));
135: break;
136: }
137: }
138: else {
139: $this->_mCriteria->add(new Criteria('u.' . $field, '%' . $form->get($field) . '%', 'LIKE'));
140: }
141: }
142: }
143:
144: $this->mNavi->addExtra('mail_condition', $form->get('mail_condition'));
145: switch ($form->get('mail_condition')) {
146: case 1:
147: $this->_mCriteria->add(new Criteria('u.user_mailok', 1));
148: break;
149:
150: case 2:
151: $this->_mCriteria->add(new Criteria('u.user_mailok', 0));
152: break;
153: }
154:
155: $this->mNavi->addExtra('user_level', $form->get('user_level'));
156: switch ($form->get('user_level')) {
157: case 1:
158: $this->_mCriteria->add(new Criteria('u.level', 0, '>'));
159: break;
160:
161: case 2:
162: $this->_mCriteria->add(new Criteria('u.level', 0));
163: break;
164: }
165:
166: if (strlen($form->get('over_posts')) > 0) {
167: $this->mNavi->addExtra('over_posts', $form->get('over_posts'));
168: $this->_mCriteria->add(new Criteria('u.posts', $form->get('over_posts'), '>='));
169: }
170:
171: if (strlen($form->get('under_posts')) > 0) {
172: $this->mNavi->addExtra('under_posts', $form->get('under_posts'));
173: $this->_mCriteria->add(new Criteria('u.posts', $form->get('under_posts'), '<='));
174: }
175:
176: if (strlen($form->get('lastlog_more')) > 0) {
177: $this->mNavi->addExtra('lastlog_more', $form->get('lastlog_more'));
178: $time = time() - $form->get('lastlog_more') * 86400;
179: $this->_mCriteria->add(new Criteria('u.last_login', $time, '<='));
180: }
181:
182: if (strlen($form->get('lastlog_less')) > 0) {
183: $this->mNavi->addExtra('lastlog_less', $form->get('lastlog_less'));
184: $time = time() - $form->get('lastlog_less') * 86400;
185: $this->_mCriteria->add(new Criteria('u.last_login', $time, '>='));
186: }
187:
188: if (strlen($form->get('regdate_more')) > 0) {
189: $this->mNavi->addExtra('regdate_more', $form->get('regdate_more'));
190: $time = time() - $form->get('regdate_more') * 86400;
191: $this->_mCriteria->add(new Criteria('u.user_regdate', $time, '<='));
192: }
193:
194: if (strlen($form->get('regdate_less')) > 0) {
195: $this->mNavi->addExtra('regdate_less', $form->get('regdate_less'));
196: $time = time() - $form->get('regdate_less') * 86400;
197: $this->_mCriteria->add(new Criteria('u.user_regdate', $time, '>='));
198: }
199:
200: $groups = $form->get('groups');
201: if (count($groups) > 0) {
202: $g_criteria =new CriteriaCompo();
203: foreach($groups as $gid) {
204: $g_criteria->add(new Criteria('g.groupid', $gid), $condition='OR');
205: $this->mNavi->addExtra('groups[' . $gid . ']', $gid);
206: }
207: $this->_mCriteria->add($g_criteria);
208: }
209:
210: $this->_mCriteria->addSort($this->getSort(), $this->getOrder());
211: }
212: }
213:
214: ?>
215: