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