XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
GroupMemberAction.class.php
1<?php
7
8if (!defined('XOOPS_ROOT_PATH')) {
9 exit();
10}
11
12require_once XOOPS_ROOT_PATH . '/core/XCube_PageNavigator.class.php';
13require_once XOOPS_MODULE_PATH . '/user/admin/forms/GroupMemberEditForm.class.php';
14
15if (!defined('USER_GROUPMEMBER_DEFAULT_PERPAGE')) {
16 define('USER_GROUPMEMBER_DEFAULT_PERPAGE', 10);
17}
18
19/***
20 * @internal
21 * This function keeps difficult problems that this depens on the column's
22 * block of X2 theme format.
23 */
24class User_GroupMemberAction extends User_Action
25{
31 public $mGroup = null;
32
36 public $mUsers = [];
37 public $mPageNavi = null;
38
42 public $mNoUsers = [];
43 public $mNoPageNavi = null;
44
45 public $mActionForm = null;
46
47 public function prepare(&$controller, &$xoopsUser, $moduleConfig)
48 {
49 //
50 // TODO Because this action has two form, we should prepare two action forms.
51 //
52 $this->mActionForm =new User_GroupMemberEditForm();
53 $this->mActionForm->prepare();
54 }
55
56 public function getDefaultView(&$controller, &$xoopsUser)
57 {
58 $this->_loadGroup();
59 if (!is_object($this->mGroup)) {
60 return USER_FRAME_VIEW_ERROR;
61 }
62
63 $memberHandler =& xoops_gethandler('member');
64 $groupid = $this->mGroup->getVar('groupid');
65
66 //
67 // Get member list
68 //
69 $total = $memberHandler->getUserCountByGroup($groupid);
70
71 $this->mPageNavi =new XCube_PageNavigator('./index.php?action=GroupMember', XCUBE_PAGENAVI_START | XCUBE_PAGENAVI_PERPAGE); // TODO get controller->getUrl() ?
72 $this->mPageNavi->setTotalItems($total);
73 $this->mPageNavi->addExtra('groupid', $groupid);
74 $this->mPageNavi->setPerpage(USER_GROUPMEMBER_DEFAULT_PERPAGE);
75
76 $this->mPageNavi->fetch();
77
78 $this->mUsers =& $memberHandler->getUsersByGroup($groupid, true, $this->mPageNavi->getPerpage(), $this->mPageNavi->getStart());
79
80 //
81 // Get no member list
82 //
83 $total = $memberHandler->getUserCountByNoGroup($groupid);
84
85 $this->mNoPageNavi=new XCube_PageNavigator('./index.php?action=GroupMember', XCUBE_PAGENAVI_START | XCUBE_PAGENAVI_PERPAGE); // TODO get controller->getUrl() ?
86 $this->mNoPageNavi->setTotalItems($total);
87 $this->mNoPageNavi->addExtra('groupid', $groupid);
88 $this->mNoPageNavi->setPrefix('no');
89 $this->mNoPageNavi->setPerpage(USER_GROUPMEMBER_DEFAULT_PERPAGE);
90
91 $this->mNoPageNavi->fetch();
92
93 $this->mNoUsers =& $memberHandler->getUsersByNoGroup($groupid, true, $this->mNoPageNavi->getPerpage(), $this->mNoPageNavi->getStart());
94
95 return USER_FRAME_VIEW_INDEX;
96 }
97
98 public function execute(&$controller, &$xoopsUser)
99 {
100 $this->_loadGroup();
101 if (!is_object($this->mGroup)) {
102 return USER_FRAME_VIEW_ERROR;
103 }
104
105 $this->mActionForm->fetch();
106 $this->mActionForm->validate();
107
108 if ($this->mActionForm->hasError()) {
109 return $this->getDefaultView($controller, $xoopsUser);
110 }
111
112 $memberHandler =& xoops_gethandler('member');
113 $userHandler =& xoops_getmodulehandler('users');
114
115 foreach ($this->mActionForm->get('uid') as $uid => $value) {
116 $user =& $userHandler->get($uid);
117
118 if (is_object($user)) {
119 if (1 == $value) {
120 $memberHandler->addUserToGroup($this->mGroup->get('groupid'), $uid);
121 } elseif (2 == $value) {
122 $memberHandler->removeUserFromGroup($this->mGroup->get('groupid'), $uid);
123 }
124 }
125 }
126
127 return $this->getDefaultView($controller, $xoopsUser);
128 }
129
130 public function _loadGroup()
131 {
132 if (!is_object($this->mGroup)) {
133 $id = xoops_getrequest('groupid');
134
135 $handler =& xoops_getmodulehandler('groups');
136 $this->mGroup =& $handler->get($id);
137 }
138 }
139
140 public function executeViewIndex(&$controller, &$xoopsUser, &$render)
141 {
142 $render->setTemplateName('group_member.html');
143 $render->setAttribute('group', $this->mGroup);
144
145 $render->setAttribute('users', $this->mUsers);
146 $render->setAttribute('pageNavi', $this->mPageNavi);
147
148 $render->setAttribute('noUsers', $this->mNoUsers);
149 $render->setAttribute('noPageNavi', $this->mNoPageNavi);
150
151 $render->setAttribute('actionForm', $this->mActionForm);
152 }
153}