1: <?php
2: 3: 4: 5:
6:
7: if (!defined('XOOPS_ROOT_PATH')) exit();
8:
9: require_once XOOPS_MODULE_PATH . "/user/class/AbstractListAction.class.php";
10: require_once XOOPS_MODULE_PATH . "/user/admin/forms/UserSearchFilterForm.class.php";
11: require_once XOOPS_MODULE_PATH . "/user/admin/forms/UserSearchListForm.class.php";
12:
13: class User_UserSearchListAction extends User_AbstractListAction
14: {
15: var $mUserObjects = array();
16: var $mActionForm = null;
17: var $mpageArr = array(5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, 90, 100, 0);
18: var $mExtraURL = "";
19:
20: function prepare(&$controller, &$xoopsUser)
21: {
22: $this->mActionForm =new User_UserSearchListForm();
23: $this->mActionForm->prepare();
24: }
25:
26: function &_getHandler()
27: {
28: $handler =& xoops_getmodulehandler('users_search');
29: return $handler;
30: }
31:
32: function &_getFilterForm()
33: {
34: $filter =new User_UserSearchFilterForm($this->_getPageNavi(), $this->_getHandler());
35: return $filter;
36: }
37:
38: function &_getPageNavi()
39: {
40: $navi =new XCube_PageNavigator($this->_getBaseUrl(), XCUBE_PAGENAVI_START | XCUBE_PAGENAVI_PERPAGE);
41: if (isset($_REQUEST[$navi->mPrefix.'perpage']) && intval($_REQUEST[$navi->mPrefix.'perpage']) == 0) {
42: $navi->setPerpage(0);
43: }
44: return $navi;
45: }
46:
47: function _getBaseUrl()
48: {
49: return "./index.php?action=UserSearchList";
50: }
51:
52: function execute(&$controller, &$xoopsUser)
53: {
54:
55: if (!isset($_REQUEST['batchjob'])) {
56: return $this->getDefaultView($controller, $xoopsUser);
57: }
58:
59:
60: $this->mFilter =& $this->_getFilterForm();
61: $this->mFilter->fetch();
62:
63: if (xoops_getrequest('_form_control_cancel') != null) {
64: return USER_FRAME_VIEW_CANCEL;
65: }
66:
67: $this->mActionForm->fetch();
68: $this->mActionForm->validate();
69:
70: if ($this->mActionForm->hasError()) {
71: return $this->_processConfirm($controller, $xoopsUser);
72: }
73: else {
74: return $this->_processSave($controller, $xoopsUser);
75: }
76:
77: }
78:
79: function executeViewIndex(&$controller, &$xoopsUser, &$render)
80: {
81:
82: $controller->mRoot->mDelegateManager->add('Legacy.Event.Explaceholder.Get.UserPagenaviOtherUrl', 'User_UserSearchListAction::renderOtherUrlControl');
83: $controller->mRoot->mDelegateManager->add('Legacy.Event.Explaceholder.Get.UserSearchPagenaviHidden', 'User_UserSearchListAction::renderHiddenControl');
84:
85: $render->setTemplateName("user_search_list.html");
86: $render->setAttribute("objects", $this->mObjects);
87: $render->setAttribute("pageNavi", $this->mFilter->mNavi);
88: $render->setAttribute('actionForm', $this->mActionForm);
89: $render->setAttribute('filterForm', $this->mFilter);
90: $render->setAttribute('pageArr', $this->mpageArr);
91: }
92:
93: function _processConfirm(&$controller,&$xoopsUser)
94: {
95: $levelArr = $this->mActionForm->get('level');
96: $userHandler =& xoops_getmodulehandler('users');
97:
98:
99:
100: foreach (array_keys($levelArr) as $uid) {
101: $user =& $userHandler->get($uid);
102: if (is_object($user)) {
103: $this->mUserObjects[$uid] =& $user;
104: }
105: unset($user);
106: }
107:
108: return USER_FRAME_VIEW_INPUT;
109: }
110:
111: function _processSave(&$controller, &$xoopsUser)
112: {
113: $levelArr = $this->mActionForm->get('level');
114: $userHandler =& xoops_gethandler('user');
115:
116: foreach(array_keys($levelArr) as $uid) {
117: if($uid != 1) {
118: $user =& $userHandler->get($uid);
119: if (is_object($user)) {
120: $olddata['level'] = $user->get('level');
121: $olddata['posts'] = $user->get('posts');
122: $newdata['level'] = $this->mActionForm->get('level', $uid);
123: $newdata['posts'] = $this->mActionForm->get('posts', $uid);
124: if (count(array_diff_assoc($olddata, $newdata)) > 0 ) {
125: $user->set('level', $this->mActionForm->get('level', $uid));
126: $user->set('posts', $this->mActionForm->get('posts', $uid));
127: if (!$userHandler->insert($user)) {
128: return USER_FRAME_VIEW_ERROR;
129: }
130: }
131: }
132: }
133: }
134:
135: foreach(array_keys($levelArr) as $uid) {
136: if(($this->mActionForm->get('delete', $uid) == 1) && ($uid != 1)) {
137: $user =& $userHandler->get($uid);
138: if (is_object($user)) {
139: XCube_DelegateUtils::call('Legacy.Admin.Event.UserDelete', new XCube_Ref($user));
140: $memberhandler =& xoops_gethandler('member');
141: if ($memberhandler->delete($user)) {
142: XCube_DelegateUtils::call('Legacy.Admin.Event.UserDelete.Success', new XCube_Ref($user));
143: }
144: else {
145: XCube_DelegateUtils::call('Legacy.Admin.Event.UserDelete.Fail', new XCube_Ref($user));
146: return USER_FRAME_VIEW_ERROR;
147: }
148: }
149: }
150: }
151:
152: return USER_FRAME_VIEW_SUCCESS;
153:
154: }
155:
156: 157: 158:
159: function executeViewInput(&$controller, &$xoopsUser, &$render)
160: {
161: $render->setTemplateName("user_search_list_confirm.html");
162: $render->setAttribute('userObjects', $this->mUserObjects);
163: $render->setAttribute('actionForm', $this->mActionForm);
164:
165:
166:
167:
168:
169: $t_arr = $this->mActionForm->get('level');
170: $render->setAttribute('uids', array_keys($t_arr));
171:
172: $controller->mRoot->mDelegateManager->add('Legacy.Event.Explaceholder.Get.UserSearchPagenaviHidden', 'User_UserSearchListAction::renderHiddenControl');
173: $render->setAttribute("pageNavi", $this->mFilter->mNavi);
174: }
175:
176:
177: function executeViewSuccess(&$controller,&$xoopsUser,&$renderer)
178: {
179: $controller->executeForward('./index.php?action=UserSearchList'.$this->getExtraURL());
180: }
181:
182: function executeViewError(&$controller, &$xoopsUser, &$renderer)
183: {
184: $controller->executeRedirect('./index.php?action=UserSearchList'.$this->getExtraURL(), 1, _MD_USER_ERROR_DBUPDATE_FAILED);
185: }
186:
187: function executeViewCancel(&$controller,&$xoopsUser,&$renderer)
188: {
189: $controller->executeForward('./index.php?action=UserSearchList'.$this->getExtraURL());
190: }
191:
192:
193: function getExtraURL()
194: {
195: $extraurl = "";
196: if(count($this->mFilter->mNavi->mExtra) > 0) {
197: $t_arr = array();
198: foreach($this->mFilter->mNavi->mExtra as $key => $value) {
199: $t_arr[] = $key . "=" . urlencode($value);
200: }
201: $extraurl = "&" . implode("&", $t_arr);
202: }
203: return $extraurl;
204: }
205:
206: function renderOtherUrlControl(&$buf, $params)
207: {
208: if (isset($params['pagenavi']) && is_object($params['pagenavi'])) {
209: $navi =& $params['pagenavi'];
210: $url = $params['url'];
211: if(count($navi->mExtra) > 0) {
212: $t_arr = array();
213:
214: foreach($navi->mExtra as $key => $value) {
215: $t_arr[] = $key . "=" . urlencode($value);
216: }
217:
218: if (count($t_arr) == 0) {
219: $buf = $url;
220: return;
221: }
222:
223: if (strpos($url,"?")!==false) {
224: $buf = $url . "&" . implode("&", $t_arr);
225: }
226: else {
227: $buf = $url . "?" . implode("&", $t_arr);
228: }
229: }
230: }
231: }
232:
233: function renderHiddenControl(&$buf, $params)
234: {
235: if (isset($params['pagenavi']) && is_object($params['pagenavi'])) {
236: $navi =& $params['pagenavi'];
237: $mask = isset($params['mask']) ? explode('+', $params['mask']) : array();
238: foreach ($navi->mExtra as $key => $value) {
239: if (!in_array($key, $mask)) {
240: $value = htmlspecialchars($value, ENT_QUOTES);
241: $buf .= "<input type=\"hidden\" name=\"${key}\" value=\"${value}\" />";
242: }
243: }
244: }
245: }
246:
247:
248: }
249:
250: ?>
251: