public function save() { if ($this->lockSystemChanges) { return; } if (!$this->changed) { return; } $xml = new SimpleXMLExtended('<system/>'); $test = $xml->addChild('plugins'); foreach ($this->plugins as $plugin) { $test->addXMLElement($this->SystemXMLConverter->pluginToXML($plugin)); } $test = $xml->addChild('elements'); foreach ($this->elements as $element) { $test->addXMLElement($this->SystemXMLConverter->elementToXML($element)); } $test = $xml->addChild('aspects'); foreach ($this->aspects as $aspect) { $test->addXMLElement($this->SystemXMLConverter->aspectToXML($aspect)); } $test = $xml->addChild('cmsnavitems'); foreach ($this->cmsNavItems as $navItem) { $test->addXMLElement($this->SystemXMLConverter->cmsNavItemToXML($navItem)); } $newContents = $xml->asPrettyXML(); $backup = $this->backupPath . '/system.' . $this->DateFactory->newStorageDate()->format('Y_m_d_His') . '.' . microtime(true) . '.xml'; FileSystemUtils::safeCopy($this->systemXMLFile, $backup); FileSystemUtils::safeFilePutContents($this->systemXMLFile, $newContents); $this->ApplicationContext->clearContextFiles(); $this->changed = false; $this->resetParsed(); }