22 public $mUserObjects = [];
23 public $mActionForm =
null;
24 public $mpageArr = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, 90, 100, 0];
25 public $mExtraURL =
'';
27 public function prepare(&$controller, &$xoopsUser, $moduleConfig)
30 $this->mActionForm->prepare();
33 public function &_getHandler()
35 $handler =& xoops_getmodulehandler(
'users_search');
39 public function &_getFilterForm()
45 public function &_getPageNavi()
47 $navi =
new XCube_PageNavigator($this->_getBaseUrl(), XCUBE_PAGENAVI_START | XCUBE_PAGENAVI_PERPAGE);
48 if (isset($_REQUEST[$navi->mPrefix.
'perpage']) && 0 == (
int)$_REQUEST[$navi->mPrefix .
'perpage']) {
54 public function _getBaseUrl()
56 return './index.php?action=UserSearchList';
59 public function execute(&$controller, &$xoopsUser)
62 if (!isset($_REQUEST[
'batchjob'])) {
63 return $this->getDefaultView($controller, $xoopsUser);
67 $this->mFilter =& $this->_getFilterForm();
68 $this->mFilter->fetch();
70 if (
null != xoops_getrequest(
'_form_control_cancel')) {
71 return USER_FRAME_VIEW_CANCEL;
74 $this->mActionForm->fetch();
75 $this->mActionForm->validate();
77 if ($this->mActionForm->hasError()) {
78 return $this->_processConfirm($controller, $xoopsUser);
80 return $this->_processSave($controller, $xoopsUser);
84 public function executeViewIndex(&$controller, &$xoopsUser, &$render)
86 $controller->mRoot->mDelegateManager->add(
'Legacy.Event.Explaceholder.Get.UserPagenaviOtherUrl',
'User_UserSearchListAction::renderOtherUrlControl');
87 $controller->mRoot->mDelegateManager->add(
'Legacy.Event.Explaceholder.Get.UserSearchPagenaviHidden',
'User_UserSearchListAction::renderHiddenControl');
89 $render->setTemplateName(
'user_search_list.html');
90 $render->setAttribute(
'objects', $this->mObjects);
91 $render->setAttribute(
'pageNavi', $this->mFilter->mNavi);
92 $render->setAttribute(
'actionForm', $this->mActionForm);
93 $render->setAttribute(
'filterForm', $this->mFilter);
94 $render->setAttribute(
'pageArr', $this->mpageArr);
97 public function _processConfirm(&$controller, &$xoopsUser)
99 $levelArr = $this->mActionForm->get(
'level');
100 $userHandler =& xoops_getmodulehandler(
'users');
104 foreach (array_keys($levelArr) as $uid) {
105 $user =& $userHandler->get($uid);
106 if (is_object($user)) {
107 $this->mUserObjects[$uid] =& $user;
112 return USER_FRAME_VIEW_INPUT;
115 public function _processSave(&$controller, &$xoopsUser)
117 $levelArr = $this->mActionForm->get(
'level');
118 $userHandler =& xoops_gethandler(
'user');
120 foreach (array_keys($levelArr) as $uid) {
122 $user =& $userHandler->get($uid);
123 if (is_object($user)) {
124 $olddata[
'level'] = $user->get(
'level');
125 $olddata[
'posts'] = $user->get(
'posts');
126 $newdata[
'level'] = $this->mActionForm->get(
'level', $uid);
127 $newdata[
'posts'] = $this->mActionForm->get(
'posts', $uid);
128 if (count(array_diff_assoc($olddata, $newdata)) > 0) {
129 $user->set(
'level', $this->mActionForm->get(
'level', $uid));
130 $user->set(
'posts', $this->mActionForm->get(
'posts', $uid));
131 if (!$userHandler->insert($user)) {
132 return USER_FRAME_VIEW_ERROR;
139 foreach (array_keys($levelArr) as $uid) {
140 if ((1 == $this->mActionForm->get(
'delete', $uid)) && (1 != $uid)) {
141 $user =& $userHandler->get($uid);
142 if (is_object($user)) {
143 XCube_DelegateUtils::call(
'Legacy.Admin.Event.UserDelete',
new XCube_Ref($user));
144 $memberhandler =& xoops_gethandler(
'member');
145 if ($memberhandler->delete($user)) {
146 XCube_DelegateUtils::call(
'Legacy.Admin.Event.UserDelete.Success',
new XCube_Ref($user));
148 XCube_DelegateUtils::call(
'Legacy.Admin.Event.UserDelete.Fail',
new XCube_Ref($user));
149 return USER_FRAME_VIEW_ERROR;
155 return USER_FRAME_VIEW_SUCCESS;
166 $render->setTemplateName(
'user_search_list_confirm.html');
167 $render->setAttribute(
'userObjects', $this->mUserObjects);
168 $render->setAttribute(
'actionForm', $this->mActionForm);
174 $t_arr = $this->mActionForm->get(
'level');
175 $render->setAttribute(
'uids', array_keys($t_arr));
177 $controller->mRoot->mDelegateManager->add(
'Legacy.Event.Explaceholder.Get.UserSearchPagenaviHidden',
'User_UserSearchListAction::renderHiddenControl');
178 $render->setAttribute(
'pageNavi', $this->mFilter->mNavi);
182 public function executeViewSuccess(&$controller, &$xoopsUser, &$renderer)
184 $controller->executeForward(
'./index.php?action=UserSearchList'.$this->getExtraURL());
187 public function executeViewError(&$controller, &$xoopsUser, &$renderer)
189 $controller->executeRedirect(
'./index.php?action=UserSearchList'.$this->getExtraURL(), 1, _MD_USER_ERROR_DBUPDATE_FAILED);
192 public function executeViewCancel(&$controller, &$xoopsUser, &$renderer)
194 $controller->executeForward(
'./index.php?action=UserSearchList'.$this->getExtraURL());
198 public function getExtraURL()
201 if ((is_countable($this->mFilter->mNavi->mExtra) ? count($this->mFilter->mNavi->mExtra) : 0) > 0) {
203 foreach ($this->mFilter->mNavi->mExtra as $key => $value) {
204 $t_arr[] = $key .
'=' . urlencode($value);
206 $extraurl =
'&' . implode(
'&', $t_arr);
211 public static function renderOtherUrlControl(&$buf, $params)
213 if (isset($params[
'pagenavi']) && is_object($params[
'pagenavi'])) {
214 $navi =& $params[
'pagenavi'];
215 $url = $params[
'url'];
216 if ((is_countable($navi->mExtra) ? count($navi->mExtra) : 0) > 0) {
219 foreach ($navi->mExtra as $key => $value) {
220 $t_arr[] = $key .
'=' . urlencode($value);
223 if (0 == count($t_arr)) {
228 if (
false !== strpos($url,
'?')) {
229 $buf = $url .
'&' . implode(
'&', $t_arr);
231 $buf = $url .
'?' . implode(
'&', $t_arr);
237 public static function renderHiddenControl(&$buf, $params)
239 if (isset($params[
'pagenavi']) && is_object($params[
'pagenavi'])) {
240 $navi =& $params[
'pagenavi'];
241 $mask = isset($params[
'mask']) ? explode(
'+', $params[
'mask']) : [];
242 foreach ($navi->mExtra as $key => $value) {
243 if (!in_array($key, $mask)) {
244 $value = htmlspecialchars($value, ENT_QUOTES);
245 $buf .=
"<input type=\"hidden\" name=\"{$key}\" value=\"{$value}\" />";