/** * Get requested DB driver. * By default XML configured driver is return. * @param string $type * @return Driver */ public static function getDriver($type = null) { if (!self::$instance) { $config = XMLLoader::load(DB_FILE); if ($type == null) { $type = $config->driver; } $driver = $type . DRIVER; self::$instance = new $driver($config); } return self::$instance; }
public function load() { $XMLFilename = $this->getXMLFilename(); // Can't read the file? nothing to load... if (!is_readable($XMLFilename)) { throw new Exception('Unable to open XML Metafile [' . $XMLFilename . '] for reading.'); } // Start the load procedure. $this->setFilename($XMLFilename); $this->setRootName($this->_type); if (!parent::load()) { throw new Exception('Parsing of XML Metafile [' . $XMLFilename . '] failed, not valid XML.'); } if (strtolower($this->getRootDOM()->getAttribute("name")) != strtolower($this->_name)) { throw new Exception('Name mismatch in XML Metafile [' . $XMLFilename . '], defined name does not match expected name.'); } $this->_version = $this->getRootDOM()->getAttribute("version"); }
/** * Save or get the package XML for this theme. This is useful for the * packager * * @param boolean $minified * @param string $filename */ public function savePackageXML($minified = true, $filename = false) { // Instantiate a new XML Loader object and get it ready to use. $dom = new \XMLLoader(); $dom->setRootName('package'); $dom->load(); // Populate the root attributes for this theme package. $dom->getRootDOM()->setAttribute('type', 'theme'); $dom->getRootDOM()->setAttribute('name', $this->getName()); $dom->getRootDOM()->setAttribute('version', $this->getVersion()); // Declare the packager $dom->createElement('packager[version="' . \Core::GetComponent()->getVersion() . '"]'); /* // Themes don't have any provide directives. // Copy over any provide directives. foreach ($this->_xmlloader->getRootDOM()->getElementsByTagName('provides') as $u) { $newu = $dom->getDOM()->importNode($u); $dom->getRootDOM()->appendChild($newu); } $dom->getElement('/provides[type="component"][name="' . strtolower($this->getName()) . '"][version="' . $this->getVersion() . '"]'); */ /* // Themes don't have any requrie directives. // Copy over any requires directives. foreach ($this->_xmlloader->getRootDOM()->getElementsByTagName('requires') as $u) { $newu = $dom->getDOM()->importNode($u); $dom->getRootDOM()->appendChild($newu); } */ // Copy over any upgrade directives. // This one can be useful for an existing installation to see if this // package can provide a valid upgrade path. foreach ($this->_xmlloader->getRootDOM()->getElementsByTagName('upgrade') as $u) { $newu = $dom->getDOM()->importNode($u); $dom->getRootDOM()->appendChild($newu); } // Tack on description $desc = $this->_xmlloader->getElement('/description', false); if ($desc) { $newd = $dom->getDOM()->importNode($desc); $newd->nodeValue = $desc->nodeValue; $dom->getRootDOM()->appendChild($newd); } $out = $minified ? $dom->asMinifiedXML() : $dom->asPrettyXML(); if ($filename) { file_put_contents($filename, $out); } else { return $out; } }