/** * 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; }
/** * Creates cache settings * @return void */ public static function createCacheSettings() { self::$cacheArr = array(); $cacheDoc = new Uni_Data_XDOMDocument(); $cacheDoc->preserveWhiteSpace = FALSE; $cacheDoc->formatOutput = TRUE; $ds = DIRECTORY_SEPARATOR; $cacheSettingsPath = CACHE_DIR . $ds . 'cache.settings'; $cacheModel = Fox::getModel('core/cache'); $collection = $cacheModel->getCollection(); $root = $cacheDoc->createElement('cache'); foreach ($collection as $row) { self::$cacheArr[$row['cache_code']] = $row['status']; $cData = $cacheDoc->createCDATASection(''); $cData->appendData($row['status']); $entry = $cacheDoc->createElement('entry'); $entry->setAttribute('key', $row['cache_code']); $root->appendChild($entry); $entry->appendChild($cData); } $cacheDoc->appendChild($root); $cacheDoc->save($cacheSettingsPath); }
/** * Writes xml data to cache file * * @param array $dataArray */ public function writeData($dataArray) { $filePath = $this->getReportsFilePath(); $xDom = new Uni_Data_XDOMDocument(); $xDom->preserveWhiteSpace = FALSE; $xDom->formatOutput = TRUE; $root = $xDom->createElement('root'); foreach ($dataArray as $key => $value) { $info = $xDom->createElement('record'); foreach ($value as $name => $values) { if ($name == 'value') { $info->setAttribute('date', $values); } else { $detail = $xDom->createElement($name, $values); $info->appendChild($detail); } } $root->appendChild($info); } $xDom->appendChild($root); $xDom->save($filePath); }