XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
BlockEditAction.class.php
1<?php
11
12if (!defined('XOOPS_ROOT_PATH')) {
13 exit();
14}
15
16require_once XOOPS_MODULE_PATH . '/legacy/class/AbstractEditAction.class.php';
17require_once XOOPS_MODULE_PATH . '/legacy/admin/forms/BlockEditForm.class.php';
18
20{
24 public $_mOptionForm = null;
25
26 public function _getId()
27 {
28 return isset($_REQUEST['bid']) ? xoops_getrequest('bid') : 0;
29 }
30
31 public function prepare(&$controller, &$xoopsUser)
32 {
33 parent::prepare($controller, $xoopsUser);
34 if (is_object($this->mObject)) {
35 $handler =& xoops_gethandler('module');
36 $module =& $handler->get($this->mObject->get('mid'));
37 if (is_object($module)) {
38 $controller->mRoot->mLanguageManager->loadModinfoMessageCatalog($module->get('dirname'));
39 $controller->mRoot->mLanguageManager->loadModuleAdminMessageCatalog($module->get('dirname'));
40 }
41 }
42 }
43
44 public function isEnableCreate()
45 {
46 return false;
47 }
48
49 public function &_getHandler()
50 {
51 $handler =& xoops_getmodulehandler('newblocks');
52 return $handler;
53 }
54
55 public function _setupActionForm()
56 {
57 $this->mActionForm =new Legacy_BlockEditForm();
58 $this->mActionForm->prepare();
59 }
60
67 public function _isEditable()
68 {
69 if (is_object($this->mObject)) {
70 return (1 == $this->mObject->get('visible'));
71 }
72
73 return false;
74 }
75
76 public function getDefaultView(&$controller, &$xoopsUser)
77 {
78 if (!$this->_isEditable()) {
79 return LEGACY_FRAME_VIEW_ERROR;
80 }
81
82 $this->mObject->loadGroup();
83 $this->mObject->loadBmodule();
84
85 return parent::getDefaultView($controller, $xoopsUser);
86 }
87
88 public function execute(&$controller, &$xoopsUser)
89 {
90 if (!$this->_isEditable()) {
91 return LEGACY_FRAME_VIEW_ERROR;
92 }
93
94 $ret = parent::execute($controller, $xoopsUser);
95
96 if (LEGACY_FRAME_VIEW_SUCCESS == $ret) {
97 //
98 // Reset block_module_link.
99 //
100 $handler =& xoops_getmodulehandler('block_module_link', 'legacy');
101 $handler->deleteAll(new Criteria('block_id', $this->mObject->get('bid')));
102 foreach ($this->mObject->mBmodule as $bmodule) {
103 //
104 // If object is new, $bmodule isn't set bid yet.
105 //
106 $bmodule->set('block_id', $this->mObject->get('bid'));
107 $handler->insert($bmodule);
108 }
109
110 //
111 // Insert group permissions.
112 //
113 $currentGroupid = [];
114 foreach ($this->mObject->mGroup as $group) {
115 $currentGroupid[] = $group->get('groupid');
116 }
117
118 $permHandler =& xoops_gethandler('groupperm');
119 $criteria =new CriteriaCompo();
120 $criteria->add(new Criteria('gperm_modid', 1));
121 $criteria->add(new Criteria('gperm_itemid', $this->mObject->get('bid')));
122 $criteria->add(new Criteria('gperm_name', 'block_read'));
123
124 $gpermArr =& $permHandler->getObjects($criteria);
125 foreach ($gpermArr as $gperm) {
126 if (!in_array($gperm->get('gperm_groupid'), $currentGroupid, true)) {
127 $permHandler->delete($gperm);
128 }
129 }
130
131 foreach ($this->mObject->mGroup as $group) {
132 $insertFlag = true;
133 foreach ($gpermArr as $gperm) {
134 if ($gperm->get('gperm_groupid') === $group->get('groupid')) {
135 $insertFlag = false;
136 }
137 }
138
139 if ($insertFlag) {
140 $gperm =& $permHandler->create();
141 $gperm->set('gperm_modid', 1);
142 $gperm->set('gperm_groupid', $group->get('groupid'));
143 $gperm->set('gperm_itemid', $this->mObject->get('bid'));
144 $gperm->set('gperm_name', 'block_read');
145
146 $permHandler->insert($gperm);
147 }
148 }
149 }
150
151 return $ret;
152 }
153
154 public function executeViewInput(&$controller, &$xoopsUser, &$render)
155 {
156 $moduleArr = [];
157 $render->setTemplateName('block_edit.html');
158 $render->setAttribute('actionForm', $this->mActionForm);
159
160 //
161 // lazy loading
162 //
163 $this->mObject->loadModule();
164
165 $render->setAttribute('object', $this->mObject);
166
167 //
168 // Build active modules list and set.
169 //
170 $handler =& xoops_gethandler('module');
171 $moduleArr[0] =& $handler->create();
172 $moduleArr[0]->set('mid', -1);
173 $moduleArr[0]->set('name', _AD_LEGACY_LANG_TOPPAGE);
174
175 $moduleArr[1] =& $handler->create();
176 $moduleArr[1]->set('mid', 0);
177 $moduleArr[1]->set('name', _AD_LEGACY_LANG_ALL_MODULES);
178
179 $criteria =new CriteriaCompo();
180 $criteria->add(new Criteria('hasmain', 1));
181 $criteria->add(new Criteria('isactive', 1));
182
183 $t_Arr =& $handler->getObjects($criteria);
184 $moduleArr = array_merge($moduleArr, $t_Arr);
185 $render->setAttribute('moduleArr', $moduleArr);
186
187 $handler =& xoops_getmodulehandler('columnside');
188 $columnSideArr =& $handler->getObjects();
189 $render->setAttribute('columnSideArr', $columnSideArr);
190
191 $handler =& xoops_gethandler('group');
192 $groupArr =& $handler->getObjects();
193 $render->setAttribute('groupArr', $groupArr);
194
195 //
196 // Build cachetime list and set.
197 //
198 $handler =& xoops_gethandler('cachetime');
199 $cachetimeArr =& $handler->getObjects();
200 $render->setAttribute('cachetimeArr', $cachetimeArr);
201
202 //
203 // Get html of option form rendered.
204 //
205 $this->_mOptionForm = $this->_getOptionForm();
206 $render->setAttribute('hasVisibleOptionForm', $this->_hasVisibleOptionForm());
207 $render->setAttribute('optionForm', $this->_mOptionForm);
208 }
209
216 public function _hasVisibleOptionForm()
217 {
218 $block =& Legacy_Utils::createBlockProcedure($this->mObject);
219 return $block->_hasVisibleOptionForm();
220 }
221
225 public function _getOptionForm()
226 {
227 $block =& Legacy_Utils::createBlockProcedure($this->mObject);
228 return $block->getOptionForm();
229 }
230
231 public function executeViewSuccess(&$controller, &$xoopsUser, &$render)
232 {
233 // $controller->executeForward('./index.php?action=BlockList');
234 // TODO @gigamaster save changes update button
235 if(xoops_getrequest('_form_control_save_edit')){
236 $controller->executeForward("./index.php?action=CustomBlockEdit&bid=".xoops_getrequest('bid'));
237 } else {
238 $controller->executeForward("./index.php?action=BlockList");
239 }
240 }
241
242 public function executeViewError(&$controller, &$xoopsUser, &$render)
243 {
244 $controller->executeRedirect('./index.php?action=BlockList', 1, _MD_LEGACY_ERROR_DBUPDATE_FAILED);
245 }
246
247 public function executeViewCancel(&$controller, &$xoopsUser, &$render)
248 {
249 $controller->executeForward('./index.php?action=BlockList');
250 }
251}