1: <?php
2: 3: 4: 5: 6: 7: 8: 9:
10:
11: if (!defined('XOOPS_ROOT_PATH')) exit();
12:
13: require_once XOOPS_MODULE_PATH . "/legacy/admin/forms/PreferenceEditForm.class.php";
14:
15: define("LEGACY_PEREFERENCE_ID_GENERAL", 1);
16:
17: class Legacy_PreferenceEditAction extends Legacy_Action
18: {
19: var $mPreparedFlag = false;
20:
21: var $mCategory = null;
22: var $mModule = null;
23:
24: var $mObjects = array();
25: var $mActionForm = null;
26:
27: var $mState = null;
28:
29: function prepare(&$controller, &$xoopsUser)
30: {
31: $controller->mRoot->mLanguageManager->loadPageTypeMessageCatalog('comment');
32: $controller->mRoot->mLanguageManager->loadPageTypeMessageCatalog('notification');
33:
34: $this->mState = (xoops_getrequest('confmod_id') > 0) ? new Legacy_ModulePreferenceEditState($this) : new Legacy_PreferenceEditState($this);
35: $this->mState->prepare($controller, $xoopsUser);
36:
37: if ($this->mPreparedFlag) {
38: $handler =& xoops_gethandler('config');
39:
40: $criteria =new CriteriaCompo();
41: $criteria->add(new Criteria('conf_modid', $this->mActionForm->getModuleId()));
42: $criteria->add(new Criteria('conf_catid', $this->mActionForm->getCategoryId()));
43:
44: $this->mObjects =& $handler->getConfigs($criteria);
45: $this->mActionForm->prepare($this->mObjects);
46: }
47: }
48:
49: function getDefaultView(&$controller, &$xoopsUser)
50: {
51: if (!$this->mPreparedFlag) {
52: return LEGACY_FRAME_VIEW_ERROR;
53: }
54:
55: return LEGACY_FRAME_VIEW_INPUT;
56: }
57:
58: function hasPermission(&$controller, &$xoopsUser)
59: {
60: return $this->mState->hasPermission($controller, $xoopsUser);
61: }
62:
63: function execute(&$controller, &$xoopsUser)
64: {
65: if (!$this->mPreparedFlag) {
66: return LEGACY_FRAME_VIEW_ERROR;
67: }
68:
69: if (xoops_getrequest('_form_control_cancel') != null) {
70: return LEGACY_FRAME_VIEW_CANCEL;
71: }
72:
73: $this->mActionForm->fetch();
74: $this->mActionForm->validate();
75:
76: if ($this->mActionForm->hasError()) {
77: return $this->getDefaultView($controller, $xoopsUser);
78: }
79:
80: $this->mActionForm->update($this->mObjects);
81: $handler =& xoops_gethandler('config');
82:
83: foreach (array_keys($this->mObjects) as $key) {
84: if (!$handler->insertConfig($this->mObjects[$key])) {
85: die("ERROR" . $this->mObjects[$key]->get('conf_name'));
86: }
87: }
88:
89: $this->mState->postFilter($this->mObjects, $this->mActionForm);
90:
91: return LEGACY_FRAME_VIEW_SUCCESS;
92: }
93:
94: function executeViewInput(&$controller, &$xoopsUser, &$render)
95: {
96: $render->setTemplateName("preference_edit.html");
97: $render->setAttribute('actionForm', $this->mActionForm);
98: $render->setAttribute('objectArr', $this->mObjects);
99:
100: $render->setAttribute('category', $this->mCategory);
101: $render->setAttribute('module', $this->mModule);
102:
103: $formtypeArr = array();
104: foreach ($this->mObjects as $object) {
105: $formtypeArr[] = $object->get('conf_formtype');
106: }
107: $formtypeArr = array_unique($formtypeArr);
108:
109:
110:
111:
112: if (in_array('timezone', $formtypeArr)) {
113: $handler =& xoops_gethandler('timezone');
114: $timezoneArr =& $handler->getObjects();
115: $render->setAttribute('timezoneArr', $timezoneArr);
116: }
117:
118:
119:
120:
121: if (in_array('group', $formtypeArr)||in_array('group_multi', $formtypeArr)) {
122: $handler =& xoops_gethandler('group');
123: $groupArr =& $handler->getObjects();
124: $render->setAttribute('groupArr', $groupArr);
125: }
126:
127:
128:
129:
130: if (in_array('tplset', $formtypeArr)) {
131: $handler =& xoops_gethandler('tplset');
132: $tplsetArr =& $handler->getObjects();
133: $render->setAttribute('tplsetArr', $tplsetArr);
134: }
135:
136:
137:
138:
139: if (in_array('language', $formtypeArr)) {
140: $languageArr = array();
141: $dirHandler = opendir(XOOPS_ROOT_PATH . "/language/");
142: while ($file = readdir($dirHandler)) {
143: if (is_dir(XOOPS_ROOT_PATH . "/language/" . $file) && preg_match("/^[a-z][0-9a-z_\-]+$/", $file)) {
144: $languageArr[$file] = $file;
145: }
146: }
147: closedir($dirHandler);
148: $render->setAttribute('languageArr', $languageArr);
149: }
150:
151:
152:
153:
154: if (in_array('startpage', $formtypeArr)||in_array('module_cache', $formtypeArr)) {
155: $handler =& xoops_gethandler('module');
156: $criteria =new CriteriaCompo();
157: $criteria->add(new Criteria('hasmain', 1));
158: $criteria->add(new Criteria('isactive', 1));
159: $moduleArr = $handler->getObjects($criteria);
160: $render->setAttribute('moduleArr', $moduleArr);
161: }
162:
163:
164:
165:
166: if (in_array('theme', $formtypeArr)||in_array('theme_multi', $formtypeArr)) {
167: $handler =& xoops_getmodulehandler('theme');
168: $themeArr =& $handler->getObjects();
169: $render->setAttribute('themeArr', $themeArr);
170: }
171:
172:
173:
174:
175: if (in_array('module_cache', $formtypeArr)) {
176: $handler =& xoops_gethandler('cachetime');
177: $cachetimeArr = $handler->getObjects();
178: $render->setAttribute('cachetimeArr', $cachetimeArr);
179: }
180:
181:
182:
183:
184: if (in_array('user', $formtypeArr)||in_array('user_multi', $formtypeArr)) {
185: $handler =& xoops_gethandler('member');
186: $userArr = $handler->getUserList();
187: $render->setAttribute('userArr', $userArr);
188: }
189: }
190:
191: function executeViewSuccess(&$controller, &$xoopsUser, &$render)
192: {
193: $this->mState->executeViewSuccess($controller, $xoopsUser, $render);
194: }
195:
196: function executeViewError(&$controller, &$xoopsUser, &$render)
197: {
198: $controller->executeRedirect("./index.php?action=PreferenceList", 1, _MD_LEGACY_ERROR_DBUPDATE_FAILED);
199: }
200:
201: function executeViewCancel(&$controller, &$xoopsUser, &$render)
202: {
203: $this->mState->executeViewCancel($controller, $xoopsUser, $render);
204: }
205: }
206:
207: class Legacy_AbstractPreferenceEditState
208: {
209: var $_mMaster = null;
210:
211: function Legacy_AbstractPreferenceEditState(&$master)
212: {
213: $this->_mMaster =& $master;
214: }
215:
216: function prepare(&$controller, &$xoopsUser)
217: {
218: }
219:
220: function hasPermission(&$controller, &$xoopsUser)
221: {
222: }
223:
224: function postFilter(&$objectArr, &$actionForm)
225: {
226: }
227:
228: function executeViewSuccess(&$controller, &$xoopsUser, &$render)
229: {
230: }
231:
232: function executeViewCancel(&$controller, &$xoopsUser, &$render)
233: {
234: }
235: }
236:
237: class Legacy_PreferenceEditState extends Legacy_AbstractPreferenceEditState
238: {
239: function prepare(&$controller, &$xoopsUser)
240: {
241: parent::prepare($controller, $xoopsUser);
242:
243: $handler =& xoops_gethandler('configcategory');
244: $this->_mMaster->mCategory =& $handler->get(intval(xoops_getrequest('confcat_id')));
245:
246: if (!is_object($this->_mMaster->mCategory)) {
247: return;
248: }
249:
250: $this->_mMaster->mActionForm =new Legacy_PreferenceEditForm($this->_mMaster->mCategory);
251:
252: $this->_mMaster->mPreparedFlag = true;
253: }
254:
255: function hasPermission(&$controller, &$xoopsUser)
256: {
257: $moduleHandler =& xoops_gethandler('module');
258: $module =& $moduleHandler->getByDirname('legacy');
259:
260: $permHandler =& xoops_gethandler('groupperm');
261: return $permHandler->checkRight('module_admin', $module->get('mid'), $xoopsUser->getGroups());
262: }
263:
264: function postFilter(&$objectArr, &$actionForm)
265: {
266: $themeName = null;
267: $allowedThemes = null;
268: foreach (array_keys($objectArr) as $key) {
269: $name = $objectArr[$key]->get('conf_name');
270: if ($name == 'theme_set') {
271: $themeName = $objectArr[$key]->getConfValueForOutput();
272: }
273: elseif ($name == 'theme_set_allowed') {
274: $allowedThemes = $actionForm->get('theme_set_allowed');
275: }
276: elseif ($name == 'use_mysession') {
277: $useMysession = $actionForm->get('use_mysession');
278: }
279: elseif ($name == 'session_name') {
280: $sessionName = $actionForm->get('session_name');
281: }
282: elseif ($name == 'session_expire') {
283: $sessionExpire = $actionForm->get('session_expire');
284: }
285: }
286:
287: if ($name != null && $allowedThemes != null) {
288: XCube_DelegateUtils::call('Legacy.Event.ThemeSettingChanged', $themeName, $allowedThemes);
289: }
290:
291: if( $this->_mMaster->mCategory->get('confcat_id') == LEGACY_PEREFERENCE_ID_GENERAL) {
292: $root =& XCube_Root::getSingleton();
293: if ($useMysession) {
294: $root->mSession->setParam($sessionName, $sessionExpire);
295: } else {
296: $root->mSession->setParam();
297: }
298: $root->mSession->rename();
299: }
300: }
301:
302: function executeViewSuccess(&$controller, &$xoopsUser, &$render)
303: {
304: $controller->executeForward("./index.php?action=PreferenceList");
305: }
306:
307: function executeViewCancel(&$controller, &$xoopsUser, &$render)
308: {
309: $controller->executeForward("./index.php?action=PreferenceList");
310: }
311: }
312:
313: class Legacy_ModulePreferenceEditState extends Legacy_AbstractPreferenceEditState
314: {
315: function prepare(&$controller, &$xoopsUser)
316: {
317: parent::prepare($controller, $xoopsUser);
318:
319: $handler =& xoops_gethandler('module');
320: $this->_mMaster->mModule =& $handler->get(intval(xoops_getrequest('confmod_id')));
321:
322: if (!(is_object($this->_mMaster->mModule) && $this->_mMaster->mModule->get('isactive') &&
323: ($this->_mMaster->mModule->get('hasconfig') ||
324: $this->_mMaster->mModule->get('hascomments') ||
325: $this->_mMaster->mModule->get('hasnotification')))) {
326:
327: $controller->executeForward(XOOPS_URL . '/admin.php');
328: }
329:
330: $this->_mMaster->mActionForm =new Legacy_ModulePreferenceEditForm($this->_mMaster->mModule);
331:
332:
333:
334:
335: $root =& XCube_Root::getSingleton();
336: $root->mLanguageManager->loadModinfoMessageCatalog($this->_mMaster->mModule->get('dirname'));
337:
338: $this->_mMaster->mPreparedFlag = true;
339: }
340:
341: function hasPermission(&$controller, &$xoopsUser)
342: {
343: $controller->mRoot->mRoleManager->loadRolesByModule($this->_mMaster->mModule);
344: return $controller->mRoot->mContext->mUser->isInRole('Module.' . $this->_mMaster->mModule->get('dirname') . '.Admin');
345: }
346:
347: function executeViewSuccess(&$controller, &$xoopsUser, &$render)
348: {
349: $module = Legacy_Utils::createModule($this->_mMaster->mModule);
350: $controller->executeForward($module->getAdminIndex());
351: }
352:
353: function executeViewCancel(&$controller, &$xoopsUser, &$render)
354: {
355: $module = Legacy_Utils::createModule($this->_mMaster->mModule);
356: $controller->executeForward($module->getAdminIndex());
357: }
358: }
359: ?>
360: