XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
ModuleEditAction.class.php
1<?php
10
11if (!defined('XOOPS_ROOT_PATH')) {
12 exit();
13}
14
15require_once XOOPS_MODULE_PATH . '/legacy/class/AbstractEditAction.class.php';
16require_once XOOPS_MODULE_PATH . '/legacy/admin/forms/ModuleEditForm.class.php';
17
19{
20
21 public $mReadGroups = [];
22 public $mAdminGroups = [];
23
24 public function _getId()
25 {
26 return isset($_REQUEST['mid']) ? xoops_getrequest('mid') : 0;
27 }
28
29 public function isEnableCreate()
30 {
31 return false;
32 }
33
34 public function &_getHandler()
35 {
36 $handler =& xoops_gethandler('module');
37 return $handler;
38 }
39
40 public function _setupActionForm()
41 {
42 $this->mActionForm =new Legacy_ModuleEditForm();
43 $this->mActionForm->prepare();
44 }
45
46 public function _isEditable()
47 {
48 if (is_object($this->mObject)) {
49 return (1 == $this->mObject->get('isactive'));
50 } else {
51 return false;
52 }
53 }
54
55 public function getDefaultView(&$controller, &$xoopsUser)
56 {
57 if (!$this->_isEditable()) {
58 return LEGACY_FRAME_VIEW_ERROR;
59 }
60 if (null == $this->mObject) {
61 return LEGACY_FRAME_VIEW_ERROR;
62 }
63
64 $this->mActionForm->load($this->mObject);
65 return LEGACY_FRAME_VIEW_INPUT;
66 }
67
68 public function execute(&$controller, &$xoopsUser)
69 {
70 if (!$this->_isEditable()) {
71 return LEGACY_FRAME_VIEW_ERROR;
72 }
73
74 $ret = parent::execute($controller, $xoopsUser);
75
76 if (LEGACY_FRAME_VIEW_SUCCESS == $ret) {
77 $handler =& xoops_gethandler('group');
78 $permHandler =& xoops_gethandler('groupperm');
79
80 foreach ($this->mActionForm->get('read_groupid') as $readgroupid) {
81 $this->mReadGroups[] =& $handler->get($readgroupid);
82 }
83 foreach ($this->mActionForm->get('admin_groupid') as $admingroupid) {
84 $this->mAdminGroups[] =& $handler->get($admingroupid);
85 }
86
87 //
88 // Insert group permissions.
89 //
90 $currentReadGroupid = [];
91 foreach ($this->mReadGroups as $readgroup) {
92 $currentReadGroupid[] = $readgroup->get('groupid');
93 }
94 $currentAdminGroupid = [];
95 foreach ($this->mAdminGroups as $admingroup) {
96 $currentAdminGroupid[] = $admingroup->get('groupid');
97 }
98 //readperm
99 $criteria =new CriteriaCompo();
100 $criteria->add(new Criteria('gperm_modid', 1));
101 $criteria->add(new Criteria('gperm_itemid', $this->mObject->get('mid')));
102 $criteria->add(new Criteria('gperm_name', 'module_read'));
103
104 $gpermArr =& $permHandler->getObjects($criteria);
105 foreach ($gpermArr as $gperm) {
106 if (!in_array($gperm->get('gperm_groupid'), $currentReadGroupid)) {
107 if (!$permHandler->delete($gperm)) {
108 return LEGACY_FRAME_VIEW_ERROR;
109 }
110 }
111 }
112
113 foreach ($this->mReadGroups as $readgroup) {
114 $insertFlag = true;
115 foreach ($gpermArr as $gperm) {
116 if ($gperm->get('gperm_groupid') == $readgroup->get('groupid')) {
117 $insertFlag = false;
118 }
119 }
120
121 if ($insertFlag) {
122 $gperm =& $permHandler->create();
123 $gperm->set('gperm_modid', 1);
124 $gperm->set('gperm_groupid', $readgroup->get('groupid'));
125 $gperm->set('gperm_itemid', $this->mObject->get('mid'));
126 $gperm->set('gperm_name', 'module_read');
127 if (!$permHandler->insert($gperm)) {
128 return LEGACY_FRAME_VIEW_ERROR;
129 }
130 }
131 }
132 //admin perm
133 $criteria =new CriteriaCompo();
134 $criteria->add(new Criteria('gperm_modid', 1));
135 $criteria->add(new Criteria('gperm_itemid', $this->mObject->get('mid')));
136 $criteria->add(new Criteria('gperm_name', 'module_admin'));
137
138 $gpermArr =& $permHandler->getObjects($criteria);
139 foreach ($gpermArr as $gperm) {
140 if (!in_array($gperm->get('gperm_groupid'), $currentAdminGroupid)) {
141 if (!$permHandler->delete($gperm)) {
142 return LEGACY_FRAME_VIEW_ERROR;
143 }
144 }
145 }
146
147 foreach ($this->mAdminGroups as $admingroup) {
148 $insertFlag = true;
149 foreach ($gpermArr as $gperm) {
150 if ($gperm->get('gperm_groupid') == $admingroup->get('groupid')) {
151 $insertFlag = false;
152 }
153 }
154
155 if ($insertFlag) {
156 $gperm =& $permHandler->create();
157 $gperm->set('gperm_modid', 1);
158 $gperm->set('gperm_groupid', $admingroup->get('groupid'));
159 $gperm->set('gperm_itemid', $this->mObject->get('mid'));
160 $gperm->set('gperm_name', 'module_admin');
161 if (!$permHandler->insert($gperm)) {
162 return LEGACY_FRAME_VIEW_ERROR;
163 }
164 }
165 }
166
167 //module_cache
168 $confighandler =& xoops_gethandler('config');
169 $criteria =new CriteriaCompo();
170 $criteria->add(new Criteria('conf_name', 'module_cache'));
171 $criteria->add(new Criteria('conf_catid', XOOPS_CONF));
172 $configObjects =& $confighandler->getConfigs($criteria);
173 if (is_object($configObjects[0])) {
174 $oldvalue = $configObjects[0]->get('conf_value');
175 $t_arr = !empty($oldvalue) ? unserialize($oldvalue) : [];
176 if (is_array($t_arr)) {
177 $t_arr[$this->mObject->get('mid')] = $this->mActionForm->get('module_cache');
178 $configObjects[0]->set('conf_value', serialize($t_arr));
179 if (!$confighandler->insertConfig($configObjects[0])) {
180 return LEGACY_FRAME_VIEW_ERROR;
181 }
182 }//is_array
183 else {
184 return LEGACY_FRAME_VIEW_ERROR;
185 }
186 }//is_object
187 else {
188 return LEGACY_FRAME_VIEW_ERROR;
189 }
190 }
191
192 return $ret;
193 }
194
195 public function executeViewInput(&$controller, &$xoopsUser, &$render)
196 {
197 $this->mObject->loadInfo($this->mObject->getShow('dirname'));
198 $render->setTemplateName('module_edit.html');
199 $render->setAttribute('actionForm', $this->mActionForm);
200 $render->setAttribute('object', $this->mObject);
201
202 $handler =& xoops_gethandler('groupperm');
203 $grouphandler =& xoops_gethandler('group');
204 $groupArr =& $grouphandler->getObjects();
205 $render->setAttribute('groupArr', $groupArr);
206
207 $criteria =new CriteriaCompo();
208 $criteria->add(new Criteria('gperm_modid', 1));
209 $criteria->add(new Criteria('gperm_itemid', $this->mObject->get('mid')));
210 $criteria->add(new Criteria('gperm_name', 'module_read'));
211 $gpermReadArr =& $handler->getObjects($criteria);
212 $readgroupid = [];
213 foreach ($gpermReadArr as $gpermRead) {
214 $readgroupid[] = $gpermRead->get('gperm_groupid');
215 }
216 $render->setAttribute('readgroupidArr', $readgroupid);
217
218 $criteria =new CriteriaCompo();
219 $criteria->add(new Criteria('gperm_modid', 1));
220 $criteria->add(new Criteria('gperm_itemid', $this->mObject->get('mid')));
221 $criteria->add(new Criteria('gperm_name', 'module_admin'));
222 $gpermAdminArr =& $handler->getObjects($criteria);
223 $admingroupid = [];
224 foreach ($gpermAdminArr as $gpermAdmin) {
225 $admingroupid[] = $gpermAdmin->get('gperm_groupid');
226 }
227 $render->setAttribute('admingroupidArr', $admingroupid);
228 //for modulecache
229 $cachehandler =& xoops_gethandler('cachetime');
230 $cachetimeArr =& $cachehandler->getObjects();
231 $render->setAttribute('cachetimeArr', $cachetimeArr);
232 }
233
234
235 public function executeViewSuccess(&$controller, &$xoopsUser, &$render)
236 {
237 $controller->executeForward('./index.php?action=ModuleList');
238 }
239
240 public function executeViewError(&$controller, &$xoopsUser, &$render)
241 {
242 $controller->executeRedirect('./index.php?action=ModuleList', 1, _MD_LEGACY_ERROR_DBUPDATE_FAILED);
243 }
244
245 public function executeViewCancel(&$controller, &$xoopsUser, &$render)
246 {
247 $controller->executeForward('./index.php?action=ModuleList');
248 }
249}