/** * Load module settings data * * @param boolean $forceCreate * @return array */ public static function loadPreferences($forceCreate = FALSE) { if (!$forceCreate && !empty(self::$preferences)) { self::$preferences; } $ds = DIRECTORY_SEPARATOR; $preferenceFilePath = CACHE_DIR . $ds . Fox_Core_Model_Cache::CACHE_CODE_PREFERENCE; $fileName = 'preference.xml'; self::$preferences = array(); $xDom = new Uni_Data_XDOMDocument(); $cacheSettings = Uni_Core_CacheManager::loadCacheSettings(); $isCacheEnabled = isset($cacheSettings[Fox_Core_Model_Cache::CACHE_CODE_PREFERENCE]) ? $cacheSettings[Fox_Core_Model_Cache::CACHE_CODE_PREFERENCE] : FALSE; if ($forceCreate || !$isCacheEnabled || !file_exists($preferenceFilePath . $ds . $fileName)) { if (!file_exists($preferenceFilePath)) { if (!@mkdir($preferenceFilePath, 0777, TRUE)) { throw new Exception('"' . $preferenceFilePath . '" not found'); } } $xDom->preserveWhiteSpace = false; $xDom->formatOutput = true; $preferenceModel = Fox::getModel('core/preference'); $collection = $preferenceModel->getCollection(); $root = $xDom->createElement('preferences'); foreach ($collection as $preference) { self::$preferences[$preference['name']] = $preference['value']; $cData = $xDom->createCDATASection(''); $cData->appendData($preference['value']); $entry = $xDom->createElement('entry'); $entry->setAttribute('key', $preference['name']); $root->appendChild($entry); $entry->appendChild($cData); } $xDom->appendChild($root); $doc = $xDom->save($preferenceFilePath . $ds . $fileName); @chmod($preferenceFilePath, 0777); } else { $xDom->load($preferenceFilePath . $ds . $fileName); if ($xDom->documentElement->hasChildNodes()) { $nodeList = $xDom->documentElement->childNodes; foreach ($nodeList as $n) { if ($n->nodeType == XML_ELEMENT_NODE && ($key = $n->getAttribute('key'))) { self::$preferences[$key] = $n->nodeValue; } } } } unset($xDom); return self::$preferences; }
/** * Save action */ function saveAction() { if ($this->getRequest()->isPost()) { try { $data = $this->getRequest()->getPost(); // Uni_Core_ModuleManager::runSqlUpgrade('News', 'Fox', 'core'); // exit; Uni_Core_ModuleManager::installModules(); Uni_Core_ModuleManager::updateModuleStatus($data); Uni_Core_Preferences::loadPreferences(TRUE); Uni_Core_CacheManager::clearLayoutCache(); Uni_Core_CacheManager::clearModuleCache(); Fox::getHelper('core/message')->setInfo('Modules successfully saved.'); } catch (Exception $e) { Fox::getHelper('core/message')->setError($e->getMessage()); } } $this->sendRedirect('*/*/'); }
/** * Bulk status update action */ public function groupStatusAction() { try { $model = Fox::getModel('core/cache'); $codes = $this->getGroupActionIds($model); $totalIds = count($codes); $updateType = ''; $dependentParams = $this->getRequest()->getParam('dependents', array()); if (isset($dependentParams['status'])) { if ($dependentParams['status'] == Fox_Core_Model_Cache::STATUS_CLEAR) { $updateType = 'cleared'; if (in_array(Fox_Core_Model_Cache::CACHE_CODE_PREFERENCE, $codes)) { Uni_Core_Preferences::loadPreferences(TRUE); Fox::initializePreferences(); } if (in_array(Fox_Core_Model_Cache::CACHE_CODE_LAYOUT, $codes)) { Uni_Core_CacheManager::clearLayoutCache(); } } else { if ($dependentParams['status'] == Fox_Core_Model_Cache::STATUS_ENABLED) { $updateType = 'enabled'; } else { if ($dependentParams['status'] == Fox_Core_Model_Cache::STATUS_DISABLED) { $updateType = 'disabled'; } } $cacheCodes = '\'' . implode('\',\'', $codes) . '\''; $model->update(array('status' => $dependentParams['status']), 'cache_code IN (' . $cacheCodes . ')'); } Uni_Core_CacheManager::createCacheSettings(); Fox::getHelper('core/message')->setInfo('Total ' . $totalIds . ' cache(s) successfully ' . $updateType . '.'); } } catch (Exception $e) { Fox::getHelper('core/message')->setError($e->getMessage()); } echo Zend_Json_Encoder::encode(array('redirect' => Fox::getUrl('*/*/'))); }
/** * Clear cache */ protected function clearCache() { Uni_Core_Preferences::loadPreferences(TRUE); Fox::initializePreferences(); Uni_Core_CacheManager::clearLayoutCache(); }
/** * Loads application settings */ public static function initializePreferences() { if (Uni_Core_Installer::isInstalled()) { self::$preferences = Uni_Core_Preferences::loadPreferences(); } }
/** * Save action */ public function saveAction() { if ($this->getRequest()->isPost()) { $data = $this->getRequest()->getPost(); $preferenceModel = Fox::getModel('core/preference'); $preferenceModel->getAdapter()->beginTransaction(); try { if (!empty($_FILES)) { $path = Fox::getUploadDirectoryPath() . DIRECTORY_SEPARATOR . Fox_Core_Model_Preference::CORE_UPLOAD_FOLDER; if (!file_exists($path)) { if (!@mkdir($path, 0777, TRUE)) { throw new Exception('uploads directory was not found.'); } @chmod($path, 0777); } foreach ($_FILES as $mainKey => $value) { if (is_array($value) && isset($value['name']) || isset($value['tmp_name'])) { $i = 0; foreach ($value as $section => $field) { foreach ($field as $key => $fieldValue) { if ($section == 'name') { foreach ($fieldValue as $fieldName => $fileField) { $fieldKey = $mainKey . '/' . $key . '/' . $fieldName; $preferenceModel->load($fieldKey, 'name'); if (isset($_FILES[$mainKey]) && isset($_FILES[$mainKey]['name']) && isset($_FILES[$mainKey]['name'][$key]) && isset($_FILES[$mainKey]['name'][$key][$fieldName])) { $fileName = $_FILES[$mainKey]['name'][$key][$fieldName]; if (($pos = strrpos($fileName, '.')) > -1) { if (file_exists($path . DIRECTORY_SEPARATOR . $preferenceModel->getValue())) { @unlink($path . DIRECTORY_SEPARATOR . $preferenceModel->getValue()); } $ext = substr($fileName, $pos + 1); $fileName = 'FILE-' . time() . $i++ . '.' . $ext; $filePath = $path . DIRECTORY_SEPARATOR . $fileName; move_uploaded_file($_FILES[$mainKey]['tmp_name'][$key][$fieldName], $filePath); @chmod($filePath, 0777); $preferenceModel->setName($fieldKey); $preferenceModel->setValue($fileName); $preferenceModel->save(); $preferenceModel->unsetData(); } } } } } } } } } foreach ($data as $mainKey => $value) { if (is_array($value)) { foreach ($value as $section => $field) { foreach ($field as $key => $fieldValue) { $fieldKey = $mainKey . '/' . $section . '/' . $key; $preferenceModel->load($fieldKey, 'name'); $preferenceModel->setName($fieldKey); if (is_array($fieldValue)) { $val = implode(',', $fieldValue); } else { $val = $fieldValue; } $preferenceModel->setValue($val); $preferenceModel->save(); $preferenceModel->unsetData(); } } } } $preferenceModel->getAdapter()->commit(); Uni_Core_Preferences::loadPreferences(TRUE); Fox::initializePreferences(); Fox::getHelper('core/message')->setInfo('Data was successfully saved.'); } catch (Exception $e) { Fox::getModel('core/session')->setFormData($data); Fox::getHelper('core/message')->setError($e->getMessage()); $preferenceModel->getAdapter()->rollback(); $this->sendRedirect('*/*/edit', array('item' => $mainKey)); } } if (isset($mainKey)) { $this->sendRedirect('*/*/edit', array('item' => $mainKey)); } else { $this->sendRedirect('*/*/'); } }