22 public $mPreparedFlag =
false;
24 public $mCategory =
null;
25 public $mModule =
null;
27 public $mObjects = [];
28 public $mActionForm =
null;
30 public $mState =
null;
32 public function prepare(&$controller, &$xoopsUser)
34 $controller->mRoot->mLanguageManager->loadPageTypeMessageCatalog(
'comment');
35 $controller->mRoot->mLanguageManager->loadPageTypeMessageCatalog(
'notification');
38 $this->mState->prepare($controller, $xoopsUser);
40 if ($this->mPreparedFlag) {
41 $handler =& xoops_gethandler(
'config');
44 $criteria->add(
new Criteria(
'conf_modid', $this->mActionForm->getModuleId()));
45 $criteria->add(
new Criteria(
'conf_catid', $this->mActionForm->getCategoryId()));
47 $this->mObjects =& $handler->getConfigs($criteria);
48 $this->mActionForm->prepare($this->mObjects);
52 public function getDefaultView(&$controller, &$xoopsUser)
54 if (!$this->mPreparedFlag) {
55 return LEGACY_FRAME_VIEW_ERROR;
58 return LEGACY_FRAME_VIEW_INPUT;
61 public function hasPermission(&$controller, &$xoopsUser)
63 return $this->mState->hasPermission($controller, $xoopsUser);
66 public function execute(&$controller, &$xoopsUser)
68 if (!$this->mPreparedFlag) {
69 return LEGACY_FRAME_VIEW_ERROR;
72 if (
null !== xoops_getrequest(
'_form_control_cancel')) {
73 return LEGACY_FRAME_VIEW_CANCEL;
76 $this->mActionForm->fetch();
77 $this->mActionForm->validate();
79 if ($this->mActionForm->hasError()) {
80 return $this->getDefaultView($controller, $xoopsUser);
83 $this->mActionForm->update($this->mObjects);
84 $handler =& xoops_gethandler(
'config');
86 foreach (array_keys($this->mObjects) as $key) {
87 if (!$handler->insertConfig($this->mObjects[$key])) {
88 die(
'ERROR' . $this->mObjects[$key]->
get(
'conf_name'));
92 $this->mState->postFilter($this->mObjects, $this->mActionForm);
94 return LEGACY_FRAME_VIEW_SUCCESS;
97 public function executeViewInput(&$controller, &$xoopsUser, &$render)
99 $render->setTemplateName(
'preference_edit.html');
100 $render->setAttribute(
'actionForm', $this->mActionForm);
101 $render->setAttribute(
'objectArr', $this->mObjects);
103 $render->setAttribute(
'category', $this->mCategory);
104 $render->setAttribute(
'module', $this->mModule);
106 $render->setAttribute(
'mcrypt_enabled', extension_loaded(
'mcrypt'));
109 foreach ($this->mObjects as $object) {
110 $formtypeArr[] = $object->get(
'conf_formtype');
112 $formtypeArr = array_unique($formtypeArr);
117 if (in_array(
'timezone', $formtypeArr)) {
118 $handler =& xoops_gethandler(
'timezone');
119 $timezoneArr =& $handler->getObjects();
120 $render->setAttribute(
'timezoneArr', $timezoneArr);
126 if (in_array(
'group', $formtypeArr)||in_array(
'group_multi', $formtypeArr)||in_array(
'group_checkbox', $formtypeArr)) {
127 $handler =& xoops_gethandler(
'group');
128 $groupArr =& $handler->getObjects();
129 $render->setAttribute(
'groupArr', $groupArr);
135 if (in_array(
'tplset', $formtypeArr)) {
136 $handler =& xoops_gethandler(
'tplset');
137 $tplsetArr =& $handler->getObjects();
138 $render->setAttribute(
'tplsetArr', $tplsetArr);
144 if (in_array(
'language', $formtypeArr)) {
146 $dirHandler = opendir(XOOPS_ROOT_PATH .
'/language/');
147 while ($file = readdir($dirHandler)) {
148 if (is_dir(XOOPS_ROOT_PATH .
'/language/' . $file) && preg_match(
"/^[a-z][0-9a-z_\-]+$/", $file)) {
149 $languageArr[$file] = $file;
152 closedir($dirHandler);
153 $render->setAttribute(
'languageArr', $languageArr);
159 if (in_array(
'startpage', $formtypeArr)||in_array(
'module_cache', $formtypeArr)) {
160 $handler =& xoops_gethandler(
'module');
162 $criteria->add(
new Criteria(
'hasmain', 1));
163 $criteria->add(
new Criteria(
'isactive', 1));
164 $moduleArr = $handler->getObjects($criteria);
165 $render->setAttribute(
'moduleArr', $moduleArr);
171 if (in_array(
'theme', $formtypeArr)||in_array(
'theme_multi', $formtypeArr)) {
172 $handler =& xoops_getmodulehandler(
'theme');
173 $themeArr =& $handler->getObjects();
174 $render->setAttribute(
'themeArr', $themeArr);
180 if (in_array(
'module_cache', $formtypeArr)) {
181 $handler =& xoops_gethandler(
'cachetime');
182 $cachetimeArr = $handler->getObjects();
183 $render->setAttribute(
'cachetimeArr', $cachetimeArr);
189 if (in_array(
'user', $formtypeArr)||in_array(
'user_multi', $formtypeArr)) {
190 $handler =& xoops_gethandler(
'member');
191 $userArr = $handler->getUserList();
192 $render->setAttribute(
'userArr', $userArr);
196 public function executeViewSuccess(&$controller, &$xoopsUser, &$render)
198 $this->mState->executeViewSuccess($controller, $xoopsUser, $render);
201 public function executeViewError(&$controller, &$xoopsUser, &$render)
203 $controller->executeRedirect(
'./index.php?action=PreferenceList', 1, _MD_LEGACY_ERROR_DBUPDATE_FAILED);
206 public function executeViewCancel(&$controller, &$xoopsUser, &$render)
208 $this->mState->executeViewCancel($controller, $xoopsUser, $render);
212class Legacy_AbstractPreferenceEditState
214 public $_mMaster =
null;
216 public function Legacy_AbstractPreferenceEditState(&$master)
218 self::__construct($master);
221 public function __construct(&$master)
223 $this->_mMaster =& $master;
226 public function prepare(&$controller, &$xoopsUser)
230 public function hasPermission(&$controller, &$xoopsUser)
234 public function postFilter(&$objectArr, &$actionForm)
238 public function executeViewSuccess(&$controller, &$xoopsUser, &$render)
242 public function executeViewCancel(&$controller, &$xoopsUser, &$render)
249 public function prepare(&$controller, &$xoopsUser)
251 parent::prepare($controller, $xoopsUser);
253 $handler =& xoops_gethandler(
'configcategory');
254 $this->_mMaster->mCategory =& $handler->get((
int)xoops_getrequest(
'confcat_id'));
256 if (!is_object($this->_mMaster->mCategory)) {
262 $this->_mMaster->mPreparedFlag =
true;
265 public function hasPermission(&$controller, &$xoopsUser)
267 $moduleHandler =& xoops_gethandler(
'module');
268 $module =& $moduleHandler->getByDirname(
'legacy');
270 $permHandler =& xoops_gethandler(
'groupperm');
271 return $permHandler->checkRight(
'module_admin', $module->get(
'mid'), $xoopsUser->getGroups());
274 public function postFilter(&$objectArr, &$actionForm)
277 $useMysession =
null;
279 $sessionExpire =
null;
281 $allowedThemes =
null;
282 foreach (array_keys($objectArr) as $key) {
283 $name = $objectArr[$key]->get(
'conf_name');
284 if (
'theme_set' === $name) {
285 $themeName = $objectArr[$key]->getConfValueForOutput();
286 } elseif (
'theme_set_allowed' === $name) {
287 $allowedThemes = $actionForm->get(
'theme_set_allowed');
288 } elseif (
'use_mysession' === $name) {
289 $useMysession = $actionForm->get(
'use_mysession');
290 } elseif (
'session_name' === $name) {
291 $sessionName = $actionForm->get(
'session_name');
292 } elseif (
'session_expire' === $name) {
293 $sessionExpire = $actionForm->get(
'session_expire');
297 if (
null !== $name &&
null !== $allowedThemes) {
298 XCube_DelegateUtils::call(
'Legacy.Event.ThemeSettingChanged', $themeName, $allowedThemes);
301 if (LEGACY_PREFERENCE_ID_GENERAL == $this->_mMaster->mCategory->get(
'confcat_id'))
303 $root =& XCube_Root::getSingleton();
305 $root->mSession->setParam($sessionName, $sessionExpire);
307 $root->mSession->setParam();
309 $root->mSession->rename();
313 public function executeViewSuccess(&$controller, &$xoopsUser, &$render)
315 $controller->executeForward(
'./index.php?action=PreferenceList');
318 public function executeViewCancel(&$controller, &$xoopsUser, &$render)
320 $controller->executeForward(
'./index.php?action=PreferenceList');
326 public function prepare(&$controller, &$xoopsUser)
328 parent::prepare($controller, $xoopsUser);
330 $handler =& xoops_gethandler(
'module');
331 $this->_mMaster->mModule =& $handler->get((
int)xoops_getrequest(
'confmod_id'));
333 if (!(is_object($this->_mMaster->mModule) && $this->_mMaster->mModule->get(
'isactive') &&
334 ($this->_mMaster->mModule->get(
'hasconfig') ||
335 $this->_mMaster->mModule->get(
'hascomments') ||
336 $this->_mMaster->mModule->get(
'hasnotification')))) {
338 $controller->executeForward(XOOPS_URL .
'/admin.php');
346 $root =& XCube_Root::getSingleton();
347 $root->mLanguageManager->loadModinfoMessageCatalog($this->_mMaster->mModule->get(
'dirname'));
349 $this->_mMaster->mPreparedFlag =
true;
352 public function hasPermission(&$controller, &$xoopsUser)
354 $controller->mRoot->mRoleManager->loadRolesByModule($this->_mMaster->mModule);
355 return $controller->mRoot->mContext->mUser->isInRole(
'Module.' . $this->_mMaster->mModule->get(
'dirname') .
'.Admin');
358 public function executeViewSuccess(&$controller, &$xoopsUser, &$render)
360 $module = Legacy_Utils::createModule($this->_mMaster->mModule);
361 XCube_DelegateUtils::call(
'Legacy.Admin.Event.ModulePreference.' . ucfirst($this->_mMaster->mModule->get(
'dirname')) .
'.Success',
new XCube_Ref($module),
new XCube_Ref($this->_mMaster->mModule));
362 XCube_DelegateUtils::call(
'Legacy.Admin.Event.ModulePreference.Success',
new XCube_Ref($module),
new XCube_Ref($this->_mMaster->mModule));
363 $controller->executeForward($module->getAdminIndex());
366 public function executeViewCancel(&$controller, &$xoopsUser, &$render)
368 $module = Legacy_Utils::createModule($this->_mMaster->mModule);
369 $controller->executeForward($module->getAdminIndex());