21 public $mReadGroups = [];
22 public $mAdminGroups = [];
24 public function _getId()
26 return isset($_REQUEST[
'mid']) ? xoops_getrequest(
'mid') : 0;
29 public function isEnableCreate()
34 public function &_getHandler()
36 $handler =& xoops_gethandler(
'module');
40 public function _setupActionForm()
43 $this->mActionForm->prepare();
46 public function _isEditable()
48 if (is_object($this->mObject)) {
49 return (1 == $this->mObject->get(
'isactive'));
55 public function getDefaultView(&$controller, &$xoopsUser)
57 if (!$this->_isEditable()) {
58 return LEGACY_FRAME_VIEW_ERROR;
60 if (
null == $this->mObject) {
61 return LEGACY_FRAME_VIEW_ERROR;
64 $this->mActionForm->load($this->mObject);
65 return LEGACY_FRAME_VIEW_INPUT;
68 public function execute(&$controller, &$xoopsUser)
70 if (!$this->_isEditable()) {
71 return LEGACY_FRAME_VIEW_ERROR;
74 $ret = parent::execute($controller, $xoopsUser);
76 if (LEGACY_FRAME_VIEW_SUCCESS == $ret) {
77 $handler =& xoops_gethandler(
'group');
78 $permHandler =& xoops_gethandler(
'groupperm');
80 foreach ($this->mActionForm->get(
'read_groupid') as $readgroupid) {
81 $this->mReadGroups[] =& $handler->get($readgroupid);
83 foreach ($this->mActionForm->get(
'admin_groupid') as $admingroupid) {
84 $this->mAdminGroups[] =& $handler->get($admingroupid);
90 $currentReadGroupid = [];
91 foreach ($this->mReadGroups as $readgroup) {
92 $currentReadGroupid[] = $readgroup->get(
'groupid');
94 $currentAdminGroupid = [];
95 foreach ($this->mAdminGroups as $admingroup) {
96 $currentAdminGroupid[] = $admingroup->get(
'groupid');
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'));
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;
113 foreach ($this->mReadGroups as $readgroup) {
115 foreach ($gpermArr as $gperm) {
116 if ($gperm->get(
'gperm_groupid') == $readgroup->get(
'groupid')) {
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;
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'));
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;
147 foreach ($this->mAdminGroups as $admingroup) {
149 foreach ($gpermArr as $gperm) {
150 if ($gperm->get(
'gperm_groupid') == $admingroup->get(
'groupid')) {
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;
168 $confighandler =& xoops_gethandler(
'config');
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;
184 return LEGACY_FRAME_VIEW_ERROR;
188 return LEGACY_FRAME_VIEW_ERROR;
195 public function executeViewInput(&$controller, &$xoopsUser, &$render)
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);
202 $handler =& xoops_gethandler(
'groupperm');
203 $grouphandler =& xoops_gethandler(
'group');
204 $groupArr =& $grouphandler->getObjects();
205 $render->setAttribute(
'groupArr', $groupArr);
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);
213 foreach ($gpermReadArr as $gpermRead) {
214 $readgroupid[] = $gpermRead->get(
'gperm_groupid');
216 $render->setAttribute(
'readgroupidArr', $readgroupid);
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);
224 foreach ($gpermAdminArr as $gpermAdmin) {
225 $admingroupid[] = $gpermAdmin->get(
'gperm_groupid');
227 $render->setAttribute(
'admingroupidArr', $admingroupid);
229 $cachehandler =& xoops_gethandler(
'cachetime');
230 $cachetimeArr =& $cachehandler->getObjects();
231 $render->setAttribute(
'cachetimeArr', $cachetimeArr);
235 public function executeViewSuccess(&$controller, &$xoopsUser, &$render)
237 $controller->executeForward(
'./index.php?action=ModuleList');
240 public function executeViewError(&$controller, &$xoopsUser, &$render)
242 $controller->executeRedirect(
'./index.php?action=ModuleList', 1, _MD_LEGACY_ERROR_DBUPDATE_FAILED);
245 public function executeViewCancel(&$controller, &$xoopsUser, &$render)
247 $controller->executeForward(
'./index.php?action=ModuleList');