diff options
Diffstat (limited to 'buildscripts/phing/classes/phing/filters/XincludeFilter.php')
-rw-r--r-- | buildscripts/phing/classes/phing/filters/XincludeFilter.php | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/buildscripts/phing/classes/phing/filters/XincludeFilter.php b/buildscripts/phing/classes/phing/filters/XincludeFilter.php deleted file mode 100644 index e2b3cd00..00000000 --- a/buildscripts/phing/classes/phing/filters/XincludeFilter.php +++ /dev/null @@ -1,176 +0,0 @@ -<?php - -/* - * $Id: 6c47e03d52cf26c183b05e347dac83735dd8c8dd $ - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This software consists of voluntary contributions made by many individuals - * and is licensed under the LGPL. For more information please see - * <http://phing.info>. - */ - -include_once 'phing/filters/BaseParamFilterReader.php'; -include_once 'phing/filters/ChainableReader.php'; - -/** - * Applies Xinclude parsing to incoming text. - * - * Uses PHP DOM XML support - * - * @author Bill Karwin <bill@karwin.com> - * @version $Id: 6c47e03d52cf26c183b05e347dac83735dd8c8dd $ - * @see FilterReader - * @package phing.filters - */ -class XincludeFilter extends BaseParamFilterReader implements ChainableReader { - - private $basedir = null; - - /** - * @var bool - */ - private $processed = false; - - /** - * Whether to resolve entities. - * - * @var bool - * - * @since 2.4 - */ - private $resolveExternals = false; - - /** - * Whether to resolve entities. - * - * @param $resolveExternals - * - * @since 2.4 - */ - public function setResolveExternals($resolveExternals) - { - $this->resolveExternals = (bool)$resolveExternals; - } - - /** - * @return bool - * - * @since 2.4 - */ - public function getResolveExternals() - { - return $this->resolveExternals; - } - - public function setBasedir(PhingFile $dir) - { - $this->basedir = $dir; - } - - public function getBasedir() - { - return $this->basedir; - } - - /** - * Reads stream, applies XSLT and returns resulting stream. - * @return string transformed buffer. - * @throws BuildException - if XSLT support missing, if error in xslt processing - */ - function read($len = null) { - - if (!class_exists('DomDocument')) { - throw new BuildException("Could not find the DomDocument class. Make sure PHP has been compiled/configured to support DOM XML."); - } - - if ($this->processed === true) { - return -1; // EOF - } - - // Read XML - $_xml = null; - while ( ($data = $this->in->read($len)) !== -1 ) - $_xml .= $data; - - if ($_xml === null ) { // EOF? - return -1; - } - - if (empty($_xml)) { - $this->log("XML file is empty!", Project::MSG_WARN); - return ''; - } - - $this->log("Transforming XML " . $this->in->getResource() . " using Xinclude ", Project::MSG_VERBOSE); - - $out = ''; - try { - $out = $this->process($_xml); - $this->processed = true; - } catch (IOException $e) { - throw new BuildException($e); - } - - return $out; - } - - /** - * Try to process the Xinclude transformation - * - * @param string XML to process. - * - * @throws BuildException On errors - */ - protected function process($xml) { - - if ($this->basedir) { - $cwd = getcwd(); - chdir($this->basedir); - } - - // Create and setup document. - $xmlDom = new DomDocument(); - $xmlDom->resolveExternals = $this->resolveExternals; - - $xmlDom->loadXML($xml); - - $xmlDom->xinclude(); - - if ($this->basedir) { - chdir($cwd); - } - - return $xmlDom->saveXML(); - } - - /** - * Creates a new XincludeFilter using the passed in - * Reader for instantiation. - * - * @param Reader A Reader object providing the underlying stream. - * Must not be <code>null</code>. - * - * @return Reader A new filter based on this configuration, but filtering - * the specified reader - */ - function chain(Reader $reader) { - $newFilter = new XincludeFilter($reader); - $newFilter->setProject($this->getProject()); - $newFilter->setBasedir($this->getBasedir()); - return $newFilter; - } - -} - - |