XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
UserListAction.class.php
1<?php
7
8if (!defined('XOOPS_ROOT_PATH')) {
9 exit();
10}
11
12require_once XOOPS_MODULE_PATH . '/user/class/AbstractListAction.class.php';
13require_once XOOPS_MODULE_PATH . '/user/admin/forms/UserFilterForm.class.php';
14require_once XOOPS_MODULE_PATH . '/user/admin/forms/UserListForm.class.php';
15
17{
18 public $mUserObjects = [];
19 public $mActionForm = null;
20 public $mpageArr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 0];
21 private $mAvatarWidth;
22 private $mAvatarHeight;
23 private $mAvatarMaxfilesize;
24
25 public function prepare(&$controller, &$xoopsUser, $moduleConfig)
26 {
27 $this->mActionForm =new User_UserListForm();
28 $this->mActionForm->prepare();
29 // Since XCL 2.3.x @gigamaster added avatar info
30 $this->mAvatarWidth = $moduleConfig['avatar_width'];
31 $this->mAvatarHeight = $moduleConfig['avatar_height'];
32 $this->mAvatarMaxfilesize = $moduleConfig['avatar_maxsize'];
33 }
34
35 public function &_getHandler()
36 {
37 $handler =& xoops_getmodulehandler('users');
38 return $handler;
39 }
40
41 public function &_getPageNavi()
42 {
43 $navi =new XCube_PageNavigator($this->_getBaseUrl(), XCUBE_PAGENAVI_START | XCUBE_PAGENAVI_PERPAGE);
44
45 $root =& XCube_Root::getSingleton();
46 $perpage = $root->mContext->mRequest->getRequest($navi->mPrefix.'perpage');
47
48 if (isset($perpage) && 0 == (int)$perpage) {
49 $navi->setPerpage(0);
50 }
51 return $navi;
52 }
53
54 public function &_getFilterForm()
55 {
56 $filter =new User_UserFilterForm($this->_getPageNavi(), $this->_getHandler());
57 return $filter;
58 }
59
60 public function _getBaseUrl()
61 {
62 return './index.php?action=UserList';
63 }
64
65 public function executeViewIndex(&$controller, &$xoopsUser, &$render)
66 {
67 $render->setTemplateName('user_list.html');
68 $render->setAttribute('objects', $this->mObjects);
69 $render->setAttribute('pageNavi', $this->mFilter->mNavi);
70 $render->setAttribute('actionForm', $this->mActionForm);
71 $render->setAttribute('filterForm', $this->mFilter);
72 $render->setAttribute('pageArr', $this->mpageArr);
73
74 $member_handler =& $this->_getHandler();
75 $active_total = $member_handler->getCount(new Criteria('level', 0, '>'));
76 $inactive_total = $member_handler->getCount(new Criteria('level', 0));
77 $render->setAttribute('activeUserTotal', $active_total);
78 $render->setAttribute('inactiveUserTotal', $inactive_total);
79 $render->setAttribute('UserTotal', $active_total+$inactive_total);
80
81 // Since XCL 2.3.x @gigamaster added avatar info
82 $render->setAttribute('avatar_width', $this->mAvatarWidth);
83 $render->setAttribute('avatar_height', $this->mAvatarHeight);
84 $render->setAttribute('avatar_maxsize', $this->mAvatarMaxfilesize);
85 }
86
87 public function execute(&$controller, &$xoopsUser)
88 {
89 $form_cancel = $controller->mRoot->mContext->mRequest->getRequest('_form_control_cancel');
90 if (null != $form_cancel) {
91 return USER_FRAME_VIEW_CANCEL;
92 }
93
94 $this->mActionForm->fetch();
95 $this->mActionForm->validate();
96
97 if ($this->mActionForm->hasError()) {
98 return $this->_processConfirm($controller, $xoopsUser);
99 } else {
100 return $this->_processSave($controller, $xoopsUser);
101 }
102 }
103
104 public function _processConfirm(&$controller, &$xoopsUser)
105 {
106 $levelArr = $this->mActionForm->get('level');
107 $userHandler =& xoops_getmodulehandler('users');
108 //
109 // Do mapping.
110 //
111 foreach (array_keys($levelArr) as $uid) {
112 $user =& $userHandler->get($uid);
113 if (is_object($user)) {
114 $this->mUserObjects[$uid] =& $user;
115 }
116 unset($user);
117 }
118
119 return USER_FRAME_VIEW_INPUT;
120 }
121
122 public function _processSave(&$controller, &$xoopsUser)
123 {
124 $levelArr = $this->mActionForm->get('level');
125 $userHandler =& xoops_gethandler('user');
126
127 foreach (array_keys($levelArr) as $uid) {
128 if (1 != $uid) {
129 $user =& $userHandler->get($uid);
130 if (is_object($user)) {
131 $olddata['level'] = $user->get('level');
132 $olddata['posts'] = $user->get('posts');
133 $newdata['level'] = $this->mActionForm->get('level', $uid);
134 $newdata['posts'] = $this->mActionForm->get('posts', $uid);
135 if (count(array_diff_assoc($olddata, $newdata)) > 0) {
136 $user->set('level', $this->mActionForm->get('level', $uid));
137 $user->set('posts', $this->mActionForm->get('posts', $uid));
138 if (!$userHandler->insert($user)) {
139 return USER_FRAME_VIEW_ERROR;
140 }
141 }//count if
142 }//object if
143 }//if
144 }//foreach
145
146 foreach (array_keys($levelArr) as $uid) {
147 if ((1 == $this->mActionForm->get('delete', $uid)) && (1 != $uid)) {
148 $user =& $userHandler->get($uid);
149 if (is_object($user)) {
150 XCube_DelegateUtils::call('Legacy.Admin.Event.UserDelete', new XCube_Ref($user));
151 $memberhandler =& xoops_gethandler('member');
152 if ($memberhandler->delete($user)) {
153 XCube_DelegateUtils::call('Legacy.Admin.Event.UserDelete.Success', new XCube_Ref($user));
154 } else {
155 XCube_DelegateUtils::call('Legacy.Admin.Event.UserDelete.Fail', new XCube_Ref($user));
156 return USER_FRAME_VIEW_ERROR;
157 }
158 }//object
159 }//delete == 1
160 }//foreach
161
162 return USER_FRAME_VIEW_SUCCESS;
163 }
164
171 public function executeViewInput(&$controller, &$xoopsUser, &$render)
172 {
173 $render->setTemplateName('user_list_confirm.html');
174 $render->setAttribute('userObjects', $this->mUserObjects);
175 $render->setAttribute('actionForm', $this->mActionForm);
176
177 //
178 // To support a template writer, this sends the list of mid that
179 // actionForm kept.
180 //
181 $t_arr = $this->mActionForm->get('level');
182 $render->setAttribute('uids', array_keys($t_arr));
183 }
184
185// @todo @gigamaster Check change $render to $renderer
186 public function executeViewSuccess(&$controller, &$xoopsUser, &$renderer)
187 {
188 $controller->executeForward('./index.php?action=UserList');
189 }
190
191 public function executeViewError(&$controller, &$xoopsUser, &$renderer)
192 {
193 $controller->executeRedirect('./index.php?action=UserList', 1, _MD_USER_ERROR_DBUPDATE_FAILED);
194 }
195
196 public function executeViewCancel(&$controller, &$xoopsUser, &$renderer)
197 {
198 $controller->executeForward('./index.php?action=UserList');
199 }
200}
executeViewInput(&$controller, &$xoopsUser, &$render)