/**
  * 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");
	}
Beispiel #3
0
 /**
  * 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;
     }
 }