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/UserFilterForm.class.php";
11: require_once XOOPS_MODULE_PATH . "/user/admin/forms/UserListForm.class.php";
12:
13: class User_UserListAction 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:
19: function prepare(&$controller, &$xoopsUser)
20: {
21: $this->mActionForm =new User_UserListForm();
22: $this->mActionForm->prepare();
23: }
24:
25: function &_getHandler()
26: {
27: $handler =& xoops_getmodulehandler('users');
28: return $handler;
29: }
30:
31: function &_getPageNavi()
32: {
33: $navi =new XCube_PageNavigator($this->_getBaseUrl(), XCUBE_PAGENAVI_START | XCUBE_PAGENAVI_PERPAGE);
34:
35: $root =& XCube_Root::getSingleton();
36: $perpage = $root->mContext->mRequest->getRequest($navi->mPrefix.'perpage');
37:
38: if (isset($perpage) && intval($perpage) == 0) {
39: $navi->setPerpage(0);
40: }
41: return $navi;
42: }
43:
44: function &_getFilterForm()
45: {
46: $filter =new User_UserFilterForm($this->_getPageNavi(), $this->_getHandler());
47: return $filter;
48: }
49:
50: function _getBaseUrl()
51: {
52: return "./index.php?action=UserList";
53: }
54:
55: function executeViewIndex(&$controller, &$xoopsUser, &$render)
56: {
57: $render->setTemplateName("user_list.html");
58: $render->setAttribute("objects", $this->mObjects);
59: $render->setAttribute("pageNavi", $this->mFilter->mNavi);
60: $render->setAttribute('actionForm', $this->mActionForm);
61: $render->setAttribute('filterForm', $this->mFilter);
62: $render->setAttribute('pageArr', $this->mpageArr);
63:
64: $member_handler =& $this->_getHandler();
65: $active_total = $member_handler->getCount(new Criteria('level', 0, '>'));
66: $inactive_total = $member_handler->getCount(new Criteria('level', 0));
67: $render->setAttribute('activeUserTotal', $active_total);
68: $render->setAttribute('inactiveUserTotal', $inactive_total);
69: $render->setAttribute('UserTotal', $active_total+$inactive_total);
70: }
71:
72: function execute(&$controller, &$xoopsUser)
73: {
74: $form_cancel = $controller->mRoot->mContext->mRequest->getRequest('_form_control_cancel');
75: if ($form_cancel != null) {
76: return USER_FRAME_VIEW_CANCEL;
77: }
78:
79: $this->mActionForm->fetch();
80: $this->mActionForm->validate();
81:
82: if ($this->mActionForm->hasError()) {
83: return $this->_processConfirm($controller, $xoopsUser);
84: }
85: else {
86: return $this->_processSave($controller, $xoopsUser);
87: }
88: }
89:
90: function _processConfirm(&$controller,&$xoopsUser)
91: {
92: $levelArr = $this->mActionForm->get('level');
93: $userHandler =& xoops_getmodulehandler('users');
94:
95:
96:
97: foreach (array_keys($levelArr) as $uid) {
98: $user =& $userHandler->get($uid);
99: if (is_object($user)) {
100: $this->mUserObjects[$uid] =& $user;
101: }
102: unset($user);
103: }
104:
105: return USER_FRAME_VIEW_INPUT;
106: }
107:
108: function _processSave(&$controller, &$xoopsUser)
109: {
110: $levelArr = $this->mActionForm->get('level');
111: $userHandler =& xoops_gethandler('user');
112:
113: foreach(array_keys($levelArr) as $uid) {
114: if($uid != 1) {
115: $user =& $userHandler->get($uid);
116: if (is_object($user)) {
117: $olddata['level'] = $user->get('level');
118: $olddata['posts'] = $user->get('posts');
119: $newdata['level'] = $this->mActionForm->get('level', $uid);
120: $newdata['posts'] = $this->mActionForm->get('posts', $uid);
121: if (count(array_diff_assoc($olddata, $newdata)) > 0 ) {
122: $user->set('level', $this->mActionForm->get('level', $uid));
123: $user->set('posts', $this->mActionForm->get('posts', $uid));
124: if (!$userHandler->insert($user)) {
125: return USER_FRAME_VIEW_ERROR;
126: }
127: }
128: }
129: }
130: }
131:
132: foreach(array_keys($levelArr) as $uid) {
133: if(($this->mActionForm->get('delete', $uid) == 1) && ($uid != 1)) {
134: $user =& $userHandler->get($uid);
135: if (is_object($user)) {
136: XCube_DelegateUtils::call('Legacy.Admin.Event.UserDelete', new XCube_Ref($user));
137: $memberhandler =& xoops_gethandler('member');
138: if ($memberhandler->delete($user)) {
139: XCube_DelegateUtils::call('Legacy.Admin.Event.UserDelete.Success', new XCube_Ref($user));
140: }
141: else {
142: XCube_DelegateUtils::call('Legacy.Admin.Event.UserDelete.Fail', new XCube_Ref($user));
143: return USER_FRAME_VIEW_ERROR;
144: }
145: }
146: }
147: }
148:
149: return USER_FRAME_VIEW_SUCCESS;
150:
151: }
152:
153: 154: 155:
156: function executeViewInput(&$controller, &$xoopsUser, &$render)
157: {
158: $render->setTemplateName("user_list_confirm.html");
159: $render->setAttribute('userObjects', $this->mUserObjects);
160: $render->setAttribute('actionForm', $this->mActionForm);
161:
162:
163:
164:
165:
166: $t_arr = $this->mActionForm->get('level');
167: $render->setAttribute('uids', array_keys($t_arr));
168: }
169:
170:
171: function executeViewSuccess(&$controller,&$xoopsUser,&$renderer)
172: {
173: $controller->executeForward('./index.php?action=UserList');
174: }
175:
176: function executeViewError(&$controller, &$xoopsUser, &$renderer)
177: {
178: $controller->executeRedirect('./index.php?action=UserList', 1, _MD_USER_ERROR_DBUPDATE_FAILED);
179: }
180:
181: function executeViewCancel(&$controller,&$xoopsUser,&$renderer)
182: {
183: $controller->executeForward('./index.php?action=UserList');
184: }
185:
186:
187:
188: }
189:
190: ?>
191: