_configFile = Prado::getPathOfNamespace($path, '.xml'); $this->_restoreKeys(); } public function getValidationKey() { if (!$this->_configFile) { return parent::getValidationKey(); } if (!$this->_validationKey) { $this->_storeKeys($this->_encryptionKey, $this->generateRandomKey()); } return $this->_validationKey; } public function setValidationKey($key) { parent::setValidationKey($key); if ($this->_configFile) { $this->_storeKeys($this->_encryptionKey, $key); } } public function getEncryptionKey() { if (!$this->_configFile) { return parent::getEncryptionKey(); } if (!$this->_encryptionKey) { $this->_storeKeys($this->generateRandomKey(), $this->_validationKey); } return $this->_encryptionKey; } public function setEncryptionKey($key) { parent::setEncryptionKey($key); if ($this->_configFile) { $this->_storeKeys($key, $this->_validationKey); } } private function _restoreKeys() { if ($this->_configFile) { try { $xml = new TXmlDocument(); $xml->loadFromFile($this->_configFile); foreach ($xml->getELementsByTagName('key') as $key) { $this->{'_' . $key->Attributes['for'] . 'Key'} = $key->Value; } } catch (TIOException $e) {} } } private function _storeKeys($encryptionKey, $validationKey) { $this->_encryptionKey = $encryptionKey; $this->_validationKey = $validationKey; if ($this->_configFile) { $xml = new TXmlDocument(); $xml->TagName = 'keys'; $encElement = new TXmlElement('key'); $encElement->Attributes['for'] = 'encryption'; $encElement->Value = $this->_encryptionKey; $xml->Elements[] = $encElement; $valElement = new TXmlElement('key'); $valElement->Attributes['for'] = 'validation'; $valElement->Value = $this->_validationKey; $xml->Elements[] = $valElement; @chmod($this->_configFile, 0600); $xml->saveToFile($this->_configFile); chmod($this->_configFile, 0400); } } } ?>