To copy all "user" properties, you will also have to call
- * {@link #copyInheritedProperties copyInheritedProperties}.
- *
- * @param Project $other the project to copy the properties to. Must not be null.
- * @return void
- * @since phing 2.0
- */
- public function copyUserProperties(Project $other) {
- foreach($this->userProperties as $arg => $value) {
- if (isset($this->inheritedProperties[$arg])) {
- continue;
- }
- $other->setUserProperty($arg, $value);
- }
- }
-
- /**
- * Copies all user properties that have not been set on the
- * command line or a GUI tool from this instance to the Project
- * instance given as the argument.
- *
- *
To copy all "user" properties, you will also have to call
- * {@link #copyUserProperties copyUserProperties}.
.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Reads the first n lines of a stream.
- * (Default is first 10 lines.)
- *
- * Example:
- *
- * Or:
- *
- *
- *
- *
- * @author Yannick Lecaillez
- * @author hans lellelid, hans@velum.net
- * @version $Revision: 1.6 $ $Date: 2007-12-20 07:44:58 -0800 (Thu, 20 Dec 2007) $
- * @access public
- * @see FilterReader
- * @package phing.filters
- */
-class HeadFilter extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * Parameter name for the number of lines to be returned.
- */
- const LINES_KEY = "lines";
-
- /**
- * Number of lines currently read in.
- * @var integer
- */
- private $_linesRead = 0;
-
- /**
- * Number of lines to be returned in the filtered stream.
- * @var integer
- */
- private $_lines = 10;
-
- /**
- * Returns first n lines of stream.
- * @return the resulting stream, or -1
- * if the end of the resulting stream has been reached
- *
- * @exception IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
-
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- // note, if buffer contains fewer lines than
- // $this->_lines this code will not work.
-
- if($this->_linesRead < $this->_lines) {
-
- $buffer = $this->in->read($len);
-
- if($buffer === -1) {
- return -1;
- }
-
- // now grab first X lines from buffer
-
- $lines = explode("\n", $buffer);
-
- $linesCount = count($lines);
-
- // must account for possibility that the num lines requested could
- // involve more than one buffer read.
- $len = ($linesCount > $this->_lines ? $this->_lines - $this->_linesRead : $linesCount);
- $filtered_buffer = implode("\n", array_slice($lines, 0, $len) );
- $this->_linesRead += $len;
-
- return $filtered_buffer;
-
- }
-
- return -1; // EOF, since the file is "finished" as far as subsequent filters are concerned.
- }
-
- /**
- * Sets the number of lines to be returned in the filtered stream.
- *
- * @param integer $lines the number of lines to be returned in the filtered stream.
- */
- function setLines($lines) {
- $this->_lines = (int) $lines;
- }
-
- /**
- * Returns the number of lines to be returned in the filtered stream.
- *
- * @return integer The number of lines to be returned in the filtered stream.
- */
- function getLines() {
- return $this->_lines;
- }
-
- /**
- * Creates a new HeadFilter using the passed in
- * Reader for instantiation.
- *
- * @param object A Reader object providing the underlying stream.
- * Must not be null.
- *
- * @return object A new filter based on this configuration, but filtering
- * the specified reader.
- */
- function chain(Reader $reader) {
- $newFilter = new HeadFilter($reader);
- $newFilter->setLines($this->getLines());
- $newFilter->setInitialized(true);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /**
- * Scans the parameters list for the "lines" parameter and uses
- * it to set the number of lines to be returned in the filtered stream.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i = 0, $_i=count($params) ; $i < $_i; $i++) {
- if ( self::LINES_KEY == $params[$i]->getName() ) {
- $this->_lines = (int) $params[$i]->getValue();
- break;
- }
- }
- }
- }
-}
-
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/LineContains.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/LineContains.php
deleted file mode 100644
index d970c62b03..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/LineContains.php
+++ /dev/null
@@ -1,258 +0,0 @@
-.
- */
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/BaseFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Filter which includes only those lines that contain all the user-specified
- * strings.
- *
- * Example:
- *
- *
- *
- *
- *
- *
- * Or:
- *
- *
- *
- *
- *
- *
- * This will include only those lines that contain foo and
- * bar.
- *
- * @author Yannick Lecaillez
- * @author Hans Lellelid
- * @version $Revision: 1.11 $
- * @see PhingFilterReader
- * @package phing.filters
-*/
-class LineContains extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * The parameter name for the string to match on.
- * @var string
- */
- const CONTAINS_KEY = "contains";
-
- /**
- * Array of Contains objects.
- * @var array
- */
- private $_contains = array();
-
- /**
- * [Deprecated]
- * @var string
- */
- private $_line = null;
-
- /**
- * Returns all lines in a buffer that contain specified strings.
- * @return mixed buffer, -1 on EOF
- */
- function read($len = null) {
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- $buffer = $this->in->read($len);
-
- if ($buffer === -1) {
- return -1;
- }
-
- $lines = explode("\n", $buffer);
- $matched = array();
- $containsSize = count($this->_contains);
-
- foreach($lines as $line) {
- for($i = 0 ; $i < $containsSize ; $i++) {
- $containsStr = $this->_contains[$i]->getValue();
- if ( strstr($line, $containsStr) === false ) {
- $line = null;
- break;
- }
- }
- if($line !== null) {
- $matched[] = $line;
- }
- }
- $filtered_buffer = implode("\n", $matched);
- return $filtered_buffer;
- }
-
- /**
- * [Deprecated. For reference only, used to be read() method.]
- * Returns the next character in the filtered stream, only including
- * lines from the original stream which contain all of the specified words.
- *
- * @return the next character in the resulting stream, or -1
- * if the end of the resulting stream has been reached
- *
- * @exception IOException if the underlying stream throws an IOException
- * during reading
- */
- function readChar() {
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- $ch = -1;
-
- if ( $this->_line !== null ) {
- $ch = substr($this->_line, 0, 1);
- if ( strlen($this->_line) === 1 )
- $this->_line = null;
- else
- $this->_line = substr($this->_line, 1);
- } else {
- $this->_line = $this->readLine();
- if ( $this->_line === null ) {
- $ch = -1;
- } else {
- $containsSize = count($this->_contains);
- for($i = 0 ; $i < $containsSize ; $i++) {
- $containsStr = $this->_contains[$i]->getValue();
- if ( strstr($this->_line, $containsStr) === false ) {
- $this->_line = null;
- break;
- }
- }
- return $this->readChar();
- }
- }
-
- return $ch;
- }
-
- /**
- * Adds a nested element.
- *
- * @return Contains The contains element added.
- * Must not be null.
- */
- function createContains() {
- $num = array_push($this->_contains, new Contains());
- return $this->_contains[$num-1];
- }
-
- /**
- * Sets the array of words which must be contained within a line read
- * from the original stream in order for it to match this filter.
- *
- * @param array $contains An array of words which must be contained
- * within a line in order for it to match in this filter.
- * Must not be null.
- */
- function setContains($contains) {
- // type check, error must never occur, bad code of it does
- if ( !is_array($contains) ) {
- throw new Exception("Excpected array got something else");
- }
-
- $this->_contains = $contains;
- }
-
- /**
- * Returns the vector of words which must be contained within a line read
- * from the original stream in order for it to match this filter.
- *
- * @return array The array of words which must be contained within a line read
- * from the original stream in order for it to match this filter. The
- * returned object is "live" - in other words, changes made to the
- * returned object are mirrored in the filter.
- */
- function getContains() {
- return $this->_contains;
- }
-
- /**
- * Creates a new LineContains using the passed in
- * Reader for instantiation.
- *
- * @param object A Reader object providing the underlying stream.
- * Must not be null.
- *
- * @return object A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new LineContains($reader);
- $newFilter->setContains($this->getContains());
- $newFilter->setInitialized(true);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /**
- * Parses the parameters to add user-defined contains strings.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- foreach($params as $param) {
- if ( self::CONTAINS_KEY == $param->getType() ) {
- $cont = new Contains();
- $cont->setValue($param->getValue());
- array_push($this->_contains, $cont);
- break; // because we only support a single contains
- }
- }
- }
- }
-}
-
-/**
- * Holds a contains element.
- */
-class Contains {
-
- /**
- * @var string
- */
- private $_value;
-
- /**
- * Set 'contains' value.
- * @param string $contains
- */
- function setValue($contains) {
- $this->_value = (string) $contains;
- }
-
- /**
- * Returns 'contains' value.
- * @return string
- */
- function getValue() {
- return $this->_value;
- }
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/LineContainsRegexp.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/LineContainsRegexp.php
deleted file mode 100644
index ff64f6cfeb..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/LineContainsRegexp.php
+++ /dev/null
@@ -1,179 +0,0 @@
-.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/types/RegularExpression.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Filter which includes only those lines that contain the user-specified
- * regular expression matching strings.
- *
- * Example:
- *
- *
- *
- *
- * Or:
- *
- *
- *
- *
- *
- * This will fetch all those lines that contain the pattern foo
- *
- * @author Yannick Lecaillez
- * @author Hans Lellelid
- * @version $Revision: 1.8 $
- * @see FilterReader
- * @package phing.filters
- */
-class LineContainsRegexp extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * Parameter name for regular expression.
- * @var string
- */
- const REGEXP_KEY = "regexp";
-
- /**
- * Regular expressions that are applied against lines.
- * @var array
- */
- private $_regexps = array();
-
- /**
- * Returns all lines in a buffer that contain specified strings.
- * @return mixed buffer, -1 on EOF
- */
- function read($len = null) {
-
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- $buffer = $this->in->read($len);
-
- if ($buffer === -1) {
- return -1;
- }
-
- $lines = explode("\n", $buffer);
- $matched = array();
-
- $regexpsSize = count($this->_regexps);
- foreach($lines as $line) {
- for($i = 0 ; $i<$regexpsSize ; $i++) {
- $regexp = $this->_regexps[$i];
- $re = $regexp->getRegexp($this->getProject());
- $matches = $re->matches($line);
- if ( !$matches ) {
- $line = null;
- break;
- }
- }
- if($line !== null) {
- $matched[] = $line;
- }
- }
- $filtered_buffer = implode("\n", $matched);
- return $filtered_buffer;
- }
-
- /**
- * Adds a regexp element.
- *
- * @return object regExp The regexp element added.
- */
- function createRegexp() {
- $num = array_push($this->_regexps, new RegularExpression());
- return $this->_regexps[$num-1];
- }
-
- /**
- * Sets the vector of regular expressions which must be contained within
- * a line read from the original stream in order for it to match this
- * filter.
- *
- * @param regexps An array of regular expressions which must be contained
- * within a line in order for it to match in this filter. Must not be
- * null.
- */
- function setRegexps($regexps) {
- // type check, error must never occur, bad code of it does
- if ( !is_array($regexps) ) {
- throw new Exception("Excpected an 'array', got something else");
- }
- $this->_regexps = $regexps;
- }
-
- /**
- * Returns the array of regular expressions which must be contained within
- * a line read from the original stream in order for it to match this
- * filter.
- *
- * @return array The array of regular expressions which must be contained within
- * a line read from the original stream in order for it to match this
- * filter. The returned object is "live" - in other words, changes made to
- * the returned object are mirrored in the filter.
- */
- function getRegexps() {
- return $this->_regexps;
- }
-
- /**
- * Creates a new LineContainsRegExp using the passed in
- * Reader for instantiation.
- *
- * @param object A Reader object providing the underlying stream.
- * Must not be null.
- *
- * @return object A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new LineContainsRegExp($reader);
- $newFilter->setRegexps($this->getRegexps());
- $newFilter->setInitialized(true);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /**
- * Parses parameters to add user defined regular expressions.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i = 0 ; $igetType() ) {
- $pattern = $params[$i]->getValue();
- $regexp = new RegularExpression();
- $regexp->setPattern($pattern);
- array_push($this->_regexps, $regexp);
- }
- }
- }
- }
-}
-
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/PrefixLines.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/PrefixLines.php
deleted file mode 100644
index 57190df252..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/PrefixLines.php
+++ /dev/null
@@ -1,142 +0,0 @@
-.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Attaches a prefix to every line.
- *
- * Example:
- *
- *
- * Or:
- *
- *
- *
- *
- *
- * @author Yannick Lecaillez
- * @author hans lellelid, hans@velum.net
- * @version $Revision: 1.6 $ $Date: 2007-12-20 07:44:58 -0800 (Thu, 20 Dec 2007) $
- * @access public
- * @see FilterReader
- * @package phing.filters
-*/
-class PrefixLines extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * Parameter name for the prefix.
- * @var string
- */
- const PREFIX_KEY = "lines";
-
- /**
- * The prefix to be used.
- * @var string
- */
- private $_prefix = null;
-
- /**
- * Adds a prefix to each line of input stream and returns resulting stream.
- *
- * @return mixed buffer, -1 on EOF
- */
- function read($len = null) {
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- $buffer = $this->in->read($len);
-
- if ($buffer === -1) {
- return -1;
- }
-
- $lines = explode("\n", $buffer);
- $filtered = array();
-
- foreach($lines as $line) {
- $line = $this->_prefix . $line;
- $filtered[] = $line;
- }
-
- $filtered_buffer = implode("\n", $filtered);
- return $filtered_buffer;
- }
-
- /**
- * Sets the prefix to add at the start of each input line.
- *
- * @param string $prefix The prefix to add at the start of each input line.
- * May be null, in which case no prefix
- * is added.
- */
- function setPrefix($prefix) {
- $this->_prefix = (string) $prefix;
- }
-
- /**
- * Returns the prefix which will be added at the start of each input line.
- *
- * @return string The prefix which will be added at the start of each input line
- */
- function getPrefix() {
- return $this->_prefix;
- }
-
- /**
- * Creates a new PrefixLines filter using the passed in
- * Reader for instantiation.
- *
- * @param object A Reader object providing the underlying stream.
- * Must not be null.
- *
- * @return object A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new PrefixLines($reader);
- $newFilter->setPrefix($this->getPrefix());
- $newFilter->setInitialized(true);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /**
- * Initializes the prefix if it is available from the parameters.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i = 0, $_i=count($params) ; $i < $_i ; $i++) {
- if ( self::PREFIX_KEY == $params[$i]->getName() ) {
- $this->_prefix = (string) $params[$i]->getValue();
- break;
- }
- }
- }
- }
-}
-
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/ReplaceRegexp.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/ReplaceRegexp.php
deleted file mode 100644
index 0756e01dda..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/ReplaceRegexp.php
+++ /dev/null
@@ -1,129 +0,0 @@
-.
-*/
-
-require_once 'phing/filters/BaseFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-include_once 'phing/types/RegularExpression.php';
-
-/**
- * Performs a regexp find/replace on stream.
- *
- * Example:
- *
- *
- *
- *
- *
- *
- *
- * @author Hans Lellelid
- * @version $Revision: 1.5 $
- * @package phing.filters
- */
-class ReplaceRegexp extends BaseFilterReader implements ChainableReader {
-
- /**
- * @var array RegularExpression[]
- */
- private $regexps = array();
-
- /**
- * Creator method handles nested tags.
- * @return RegularExpression
- */
- function createRegexp() {
- $num = array_push($this->regexps, new RegularExpression());
- return $this->regexps[$num-1];
- }
-
- /**
- * Sets the current regexps.
- * (Used when, e.g., cloning/chaining the method.)
- * @param array RegularExpression[]
- */
- function setRegexps($regexps) {
- $this->regexps = $regexps;
- }
-
- /**
- * Gets the current regexps.
- * (Used when, e.g., cloning/chaining the method.)
- * @return array RegularExpression[]
- */
- function getRegexps() {
- return $this->regexps;
- }
-
- /**
- * Returns the filtered stream.
- * The original stream is first read in fully, and the regex replace is performed.
- *
- * @param int $len Required $len for Reader compliance.
- *
- * @return mixed The filtered stream, or -1 if the end of the resulting stream has been reached.
- *
- * @exception IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
-
- $buffer = $this->in->read($len);
-
- if($buffer === -1) {
- return -1;
- }
-
- // perform regex replace here ...
- foreach($this->regexps as $exptype) {
- $regexp = $exptype->getRegexp($this->project);
- try {
- $buffer = $regexp->replace($buffer);
- $this->log("Performing regexp replace: /".$regexp->getPattern()."/".$regexp->getReplace()."/g".($regexp->getIgnoreCase() ? 'i' : ''), Project::MSG_VERBOSE);
- } catch (Exception $e) {
- // perhaps mismatch in params (e.g. no replace or pattern specified)
- $this->log("Error performing regexp replace: " . $e->getMessage(), Project::MSG_WARN);
- }
- }
-
- return $buffer;
- }
-
- /**
- * Creates a new ReplaceRegExp filter using the passed in
- * Reader for instantiation.
- *
- * @param Reader $reader A Reader object providing the underlying stream.
- * Must not be null.
- *
- * @return ReplaceRegExp A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new ReplaceRegExp($reader);
- $newFilter->setProject($this->getProject());
- $newFilter->setRegexps($this->getRegexps());
- return $newFilter;
- }
-
-}
-
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/ReplaceTokens.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/ReplaceTokens.php
deleted file mode 100644
index 3687b47729..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/ReplaceTokens.php
+++ /dev/null
@@ -1,415 +0,0 @@
-.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/types/TokenSource.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/*
- * Replaces tokens in the original input with user-supplied values.
- *
- * Example:
- *
- *
;
- *
- *
- *
- * Or:
- *
- *
- *
- *
- *
- *
- *
- * @author Yannick Lecaillez
- * @author hans lellelid, hans@velum.net
- * @version $Revision: 1.14 $ $Date: 2007-12-20 07:44:58 -0800 (Thu, 20 Dec 2007) $
- * @access public
- * @see BaseParamFilterReader
- * @package phing.filters
- */
-class ReplaceTokens extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * Default "begin token" character.
- * @var string
- */
- const DEFAULT_BEGIN_TOKEN = "@";
-
- /**
- * Default "end token" character.
- * @var string
- */
- const DEFAULT_END_TOKEN = "@";
-
- /**
- * [Deprecated] Data that must be read from, if not null.
- * @var string
- */
- private $_queuedData = null;
-
- /**
- * Array to hold the replacee-replacer pairs (String to String).
- * @var array
- */
- private $_tokens = array();
-
- /**
- * Array to hold the token sources that make tokens from
- * different sources available
- * @var array
- */
- private $_tokensources = array();
-
- /**
- * Array holding all tokens given directly to the Filter and
- * those passed via a TokenSource.
- * @var array
- */
- private $_alltokens = null;
-
- /**
- * Character marking the beginning of a token.
- * @var string
- */
- private $_beginToken = "@"; // self::DEFAULT_BEGIN_TOKEN;
-
- /**
- * Character marking the end of a token.
- * @var string
- */
- private $_endToken = "@"; //self::DEFAULT_END_TOKEN;
-
- /**
- * Performs lookup on key and returns appropriate replacement string.
- * @param array $matches Array of 1 el containing key to search for.
- * @return string Text with which to replace key or value of key if none is found.
- * @access private
- */
- private function replaceTokenCallback($matches) {
-
- $key = $matches[1];
-
- /* Get tokens from tokensource and merge them with the
- * tokens given directly via build file. This should be
- * done a bit more elegantly
- */
- if ($this->_alltokens === null) {
- $this->_alltokens = array();
-
- $count = count($this->_tokensources);
- for ($i = 0; $i < $count; $i++) {
- $source = $this->_tokensources[$i];
- $this->_alltokens = array_merge($this->_alltokens, $source->getTokens());
- }
-
-
- $this->_alltokens = array_merge($this->_tokens, $this->_alltokens);
- }
-
- $tokens = $this->_alltokens;
-
- $replaceWith = null;
- $count = count($tokens);
-
- for ($i = 0; $i < $count; $i++) {
- if ($tokens[$i]->getKey() === $key) {
- $replaceWith = $tokens[$i]->getValue();
- }
- }
-
- if ($replaceWith === null) {
- $replaceWith = $this->_beginToken . $key . $this->_endToken;
- $this->log("No token defined for key \"".$this->_beginToken . $key . $this->_endToken."\"");
- } else {
- $this->log("Replaced \"".$this->_beginToken . $key . $this->_endToken ."\" with \"".$replaceWith."\"");
- }
-
- return $replaceWith;
- }
-
- /**
- * Returns stream with tokens having been replaced with appropriate values.
- * If a replacement value is not found for a token, the token is left in the stream.
- *
- * @return mixed filtered stream, -1 on EOF.
- */
- function read($len = null) {
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- // read from next filter up the chain
- $buffer = $this->in->read($len);
-
- if($buffer === -1) {
- return -1;
- }
-
- // filter buffer
- $buffer = preg_replace_callback(
- "/".preg_quote($this->_beginToken)."([\w\.\-:]+?)".preg_quote($this->_endToken)."/",
- array($this, 'replaceTokenCallback'), $buffer);
-
- return $buffer;
- }
-
- /**
- * Sets the "begin token" character.
- *
- * @param string $beginToken the character used to denote the beginning of a token.
- */
- function setBeginToken($beginToken) {
- $this->_beginToken = (string) $beginToken;
- }
-
- /**
- * Returns the "begin token" character.
- *
- * @return string The character used to denote the beginning of a token.
- */
- function getBeginToken() {
- return $this->_beginToken;
- }
-
- /**
- * Sets the "end token" character.
- *
- * @param string $endToken the character used to denote the end of a token
- */
- function setEndToken($endToken) {
- $this->_endToken = (string) $endToken;
- }
-
- /**
- * Returns the "end token" character.
- *
- * @return the character used to denote the beginning of a token
- */
- function getEndToken() {
- return $this->_endToken;
- }
-
- /**
- * Adds a token element to the map of tokens to replace.
- *
- * @return object The token added to the map of replacements.
- * Must not be null.
- */
- function createToken() {
- $num = array_push($this->_tokens, new Token());
- return $this->_tokens[$num-1];
- }
-
- /**
- * Adds a token source to the sources of this filter.
- *
- * @return object A Reference to the source just added.
- */
- function createTokensource() {
- $num = array_push($this->_tokensources, new TokenSource());
- return $this->_tokensources[$num-1];
- }
-
- /**
- * Sets the map of tokens to replace.
- * ; used by ReplaceTokens::chain()
- *
- * @param array A map (String->String) of token keys to replacement
- * values. Must not be null.
- */
- function setTokens($tokens) {
- // type check, error must never occur, bad code of it does
- if ( !is_array($tokens) ) {
- throw new Exception("Excpected 'array', got something else");
- }
-
- $this->_tokens = $tokens;
- }
-
- /**
- * Returns the map of tokens which will be replaced.
- * ; used by ReplaceTokens::chain()
- *
- * @return array A map (String->String) of token keys to replacement values.
- */
- function getTokens() {
- return $this->_tokens;
- }
-
- /**
- * Sets the tokensources to use; used by ReplaceTokens::chain()
- *
- * @param array An array of token sources.
- */
- function setTokensources($sources) {
- // type check
- if ( !is_array($sources)) {
- throw new Exception("Exspected 'array', got something else");
- }
- $this->_tokensources = $sources;
- }
-
- /**
- * Returns the token sources used by this filter; used by ReplaceTokens::chain()
- *
- * @return array
- */
- function getTokensources() {
- return $this->_tokensources;
- }
-
- /**
- * Creates a new ReplaceTokens using the passed in
- * Reader for instantiation.
- *
- * @param object A Reader object providing the underlying stream.
- * Must not be null.
- *
- * @return object A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new ReplaceTokens($reader);
- $newFilter->setProject($this->getProject());
- $newFilter->setBeginToken($this->getBeginToken());
- $newFilter->setEndToken($this->getEndToken());
- $newFilter->setTokens($this->getTokens());
- $newFilter->setTokensources($this->getTokensources());
- $newFilter->setInitialized(true);
- return $newFilter;
- }
-
- /**
- * Initializes tokens and loads the replacee-replacer hashtable.
- * This method is only called when this filter is used through
- * a tag in build file.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i = 0 ; $igetType();
- if ( $type === "tokenchar" ) {
- $name = $params[$i]->getName();
- if ( $name === "begintoken" ) {
- $this->_beginToken = substr($params[$i]->getValue(), 0, 1);
- } else if ( $name === "endtoken" ) {
- $this->_endToken = substr($params[$i]->getValue(), 0, 1);
- }
- } else if ( $type === "token" ) {
- $name = $params[$i]->getName();
- $value = $params[$i]->getValue();
-
- $tok = new Token();
- $tok->setKey($name);
- $tok->setValue($value);
-
- array_push($this->_tokens, $tok);
- } else if ( $type === "tokensource" ) {
- // Store data from nested tags in local array
- $arr = array(); $subparams = $params[$i]->getParams();
- $count = count($subparams);
- for ($i = 0; $i < $count; $i++) {
- $arr[$subparams[$i]->getName()] = $subparams[$i]->getValue();
- }
-
- // Create TokenSource
- $tokensource = new TokenSource();
- if (isset($arr["classname"]))
- $tokensource->setClassname($arr["classname"]);
-
- // Copy other parameters 1:1 to freshly created TokenSource
- foreach ($arr as $key => $value) {
- if (strtolower($key) === "classname")
- continue;
- $param = $tokensource->createParam();
- $param->setName($key);
- $param->setValue($value);
- }
-
- $this->_tokensources[] = $tokensource;
- }
- }
- }
- }
- }
-}
-
-/**
- * Holds a token.
- */
-class Token {
-
- /**
- * Token key.
- * @var string
- */
- private $_key;
-
- /**
- * Token value.
- * @var string
- */
- private $_value;
-
- /**
- * Sets the token key.
- *
- * @param string $key The key for this token. Must not be null.
- */
- function setKey($key) {
- $this->_key = (string) $key;
- }
-
- /**
- * Sets the token value.
- *
- * @param string $value The value for this token. Must not be null.
- */
- function setValue($value) {
- $this->_value = (string) $value;
- }
-
- /**
- * Returns the key for this token.
- *
- * @return string The key for this token.
- */
- function getKey() {
- return $this->_key;
- }
-
- /**
- * Returns the value for this token.
- *
- * @return string The value for this token.
- */
- function getValue() {
- return $this->_value;
- }
-}
-
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripLineBreaks.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripLineBreaks.php
deleted file mode 100644
index 8caf73d7d3..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripLineBreaks.php
+++ /dev/null
@@ -1,148 +0,0 @@
-.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Filter to flatten the stream to a single line.
- *
- * Example:
- *
- *
- *
- * Or:
- *
- *
- *
- * @author Yannick Lecaillez
- * @author hans lellelid, hans@velum.net
- * @version $Revision: 1.8 $ $Date: 2007-12-20 07:44:58 -0800 (Thu, 20 Dec 2007) $
- * @access public
- * @see BaseParamFilterReader
- * @package phing.filters
- */
-class StripLineBreaks extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * Default line-breaking characters.
- * @var string
- */
- const DEFAULT_LINE_BREAKS = "\r\n";
-
- /**
- * Parameter name for the line-breaking characters parameter.
- * @var string
- */
- const LINES_BREAKS_KEY = "linebreaks";
-
- /**
- * The characters that are recognized as line breaks.
- * @var string
- */
- private $_lineBreaks = "\r\n"; // self::DEFAULT_LINE_BREAKS;
-
- /**
- * Returns the filtered stream, only including
- * characters not in the set of line-breaking characters.
- *
- * @return mixed the resulting stream, or -1
- * if the end of the resulting stream has been reached.
- *
- * @exception IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- $buffer = $this->in->read($len);
- if($buffer === -1) {
- return -1;
- }
-
- $buffer = preg_replace("/[".$this->_lineBreaks."]/", '', $buffer);
-
- return $buffer;
- }
-
- /**
- * Sets the line-breaking characters.
- *
- * @param string $lineBreaks A String containing all the characters to be
- * considered as line-breaking.
- */
- function setLineBreaks($lineBreaks) {
- $this->_lineBreaks = (string) $lineBreaks;
- }
-
- /**
- * Gets the line-breaking characters.
- *
- * @return string A String containing all the characters that are considered as line-breaking.
- */
- function getLineBreaks() {
- return $this->_lineBreaks;
- }
-
- /**
- * Creates a new StripLineBreaks using the passed in
- * Reader for instantiation.
- *
- * @param object A Reader object providing the underlying stream.
- * Must not be null.
- *
- * @return object A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new StripLineBreaks($reader);
- $newFilter->setLineBreaks($this->getLineBreaks());
- $newFilter->setInitialized(true);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /**
- * Parses the parameters to set the line-breaking characters.
- */
- private function _initialize() {
- $userDefinedLineBreaks = null;
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i = 0 ; $igetName() ) {
- $userDefinedLineBreaks = $params[$i]->getValue();
- break;
- }
- }
- }
-
- if ( $userDefinedLineBreaks !== null ) {
- $this->_lineBreaks = $userDefinedLineBreaks;
- }
- }
-}
-
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripLineComments.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripLineComments.php
deleted file mode 100644
index d93068428a..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripLineComments.php
+++ /dev/null
@@ -1,205 +0,0 @@
-.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/*
- * This filter strips line comments.
- *
- * Example:
- *
- *
- *
- *
- *
- *
- *
- *
- *
- * Or:
- *
- *
- *
- *
- *
- *
- *
- *
- *
- * @author Yannick Lecaillez
- * @author hans lellelid, hans@velum.net
- * @version $Revision: 1.8 $ $Date: 2007-12-20 07:44:58 -0800 (Thu, 20 Dec 2007) $
- * @access public
- * @see BaseParamFilterReader
- * @package phing.filters
- */
-class StripLineComments extends BaseParamFilterReader implements ChainableReader {
-
- /** Parameter name for the comment prefix. */
- const COMMENTS_KEY = "comment";
-
- /** Array that holds the comment prefixes. */
- private $_comments = array();
-
- /**
- * Returns stream only including
- * lines from the original stream which don't start with any of the
- * specified comment prefixes.
- *
- * @return mixed the resulting stream, or -1
- * if the end of the resulting stream has been reached.
- *
- * @throws IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
-
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- $buffer = $this->in->read($len);
-
- if ($buffer === -1) {
- return -1;
- }
-
- $lines = explode("\n", $buffer);
- $filtered = array();
-
- $commentsSize = count($this->_comments);
-
- foreach($lines as $line) {
- for($i = 0; $i < $commentsSize; $i++) {
- $comment = $this->_comments[$i]->getValue();
- if ( StringHelper::startsWith($comment, ltrim($line)) ) {
- $line = null;
- break;
- }
- }
- if ($line !== null) {
- $filtered[] = $line;
- }
- }
-
- $filtered_buffer = implode("\n", $filtered);
- return $filtered_buffer;
- }
-
- /*
- * Adds a comment element to the list of prefixes.
- *
- * @return comment The comment element added to the
- * list of comment prefixes to strip.
- */
- function createComment() {
- $num = array_push($this->_comments, new Comment());
- return $this->_comments[$num-1];
- }
-
- /*
- * Sets the list of comment prefixes to strip.
- *
- * @param comments A list of strings, each of which is a prefix
- * for a comment line. Must not be null.
- */
- function setComments($lineBreaks) {
- if (!is_array($lineBreaks)) {
- throw new Exception("Excpected 'array', got something else");
- }
- $this->_comments = $lineBreaks;
- }
-
- /*
- * Returns the list of comment prefixes to strip.
- *
- * @return array The list of comment prefixes to strip.
- */
- function getComments() {
- return $this->_comments;
- }
-
- /*
- * Creates a new StripLineComments using the passed in
- * Reader for instantiation.
- *
- * @param reader A Reader object providing the underlying stream.
- * Must not be null.
- *
- * @return a new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new StripLineComments($reader);
- $newFilter->setComments($this->getComments());
- $newFilter->setInitialized(true);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /*
- * Parses the parameters to set the comment prefixes.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i = 0 ; $igetType() ) {
- $comment = new Comment();
- $comment->setValue($params[$i]->getValue());
- array_push($this->_comments, $comment);
- }
- }
- }
- }
-}
-
-/*
- * The class that holds a comment representation.
-*/
-class Comment {
-
- /** The prefix for a line comment. */
- private $_value;
-
- /*
- * Sets the prefix for this type of line comment.
- *
- * @param string $value The prefix for a line comment of this type.
- * Must not be null.
- */
- function setValue($value) {
- $this->_value = (string) $value;
- }
-
- /*
- * Returns the prefix for this type of line comment.
- *
- * @return string The prefix for this type of line comment.
- */
- function getValue() {
- return $this->_value;
- }
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripPhpComments.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripPhpComments.php
deleted file mode 100644
index d4a81f8276..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripPhpComments.php
+++ /dev/null
@@ -1,188 +0,0 @@
-.
-*/
-
-include_once 'phing/filters/BaseFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * This is a Php comment and string stripper reader that filters
- * those lexical tokens out for purposes of simple Php parsing.
- * (if you have more complex Php parsing needs, use a real lexer).
- * Since this class heavily relies on the single char read function,
- * you are reccomended to make it work on top of a buffered reader.
- *
- * @author Yannick Lecaillez
- * @author hans lellelid, hans@velum.net
- * @version $Revision: 1.6 $ $Date: 2007-12-20 07:44:58 -0800 (Thu, 20 Dec 2007) $
- * @access public
- * @see FilterReader
- * @package phing.filters
- */
-class StripPhpComments extends BaseFilterReader implements ChainableReader {
- /**
- * The read-ahead character, used for effectively pushing a single
- * character back. -1 indicates that no character is in the buffer.
- */
- private $_readAheadCh = -1;
-
- /**
- * Whether or not the parser is currently in the middle of a string
- * literal.
- * @var boolean
- */
- private $_inString = false;
-
- /**
- * Returns the stream without Php comments.
- *
- * @return the resulting stream, or -1
- * if the end of the resulting stream has been reached
- *
- * @throws IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
-
- $buffer = $this->in->read($len);
- if($buffer === -1) {
- return -1;
- }
-
- // This regex replace /* */ and // style comments
- $buffer = preg_replace('/\/\*[^*]*\*+([^\/*][^*]*\*+)*\/|\/\/[^\n]*|("(\\\\.|[^"\\\\])*"|\'(\\\\.|[^\'\\\\])*\'|.[^\/"\'\\\\]*)/s', "$2", $buffer);
-
- // The regex above is not identical to, but is based on the expression below:
- //
- // created by Jeffrey Friedl
- // and later modified by Fred Curtis.
- // s{
- // /\* ## Start of /* ... */ comment
- // [^*]*\*+ ## Non-* followed by 1-or-more *'s
- // (
- // [^/*][^*]*\*+
- // )* ## 0-or-more things which don't start with /
- // ## but do end with '*'
- // / ## End of /* ... */ comment
- //
- // | ## OR various things which aren't comments:
- //
- // (
- // " ## Start of " ... " string
- // (
- // \\. ## Escaped char
- // | ## OR
- // [^"\\] ## Non "\
- // )*
- // " ## End of " ... " string
- //
- // | ## OR
- //
- // ' ## Start of ' ... ' string
- // (
- // \\. ## Escaped char
- // | ## OR
- // [^'\\] ## Non '\
- // )*
- // ' ## End of ' ... ' string
- //
- // | ## OR
- //
- // . ## Anything other char
- // [^/"'\\]* ## Chars which doesn't start a comment, string or escape
- // )
- // }{$2}gxs;
-
- return $buffer;
- }
-
-
- /*
- * Returns the next character in the filtered stream, not including
- * Php comments.
- *
- * @return the next character in the resulting stream, or -1
- * if the end of the resulting stream has been reached
- *
- * @throws IOException if the underlying stream throws an IOException
- * during reading
- * @deprecated
- */
- function readChar() {
- $ch = -1;
-
- if ( $this->_readAheadCh !== -1 ) {
- $ch = $this->_readAheadCh;
- $this->_readAheadCh = -1;
- } else {
- $ch = $this->in->readChar();
- if ( $ch === "\"" ) {
- $this->_inString = !$this->_inString;
- } else {
- if ( !$this->_inString ) {
- if ( $ch === "/" ) {
- $ch = $this->in->readChar();
- if ( $ch === "/" ) {
- while ( $ch !== "\n" && $ch !== -1 ) {
- $ch = $this->in->readChar();
- }
- } else if ( $ch === "*" ) {
- while ( $ch !== -1 ) {
- $ch = $this->in->readChar();
- while ( $ch === "*" && $ch !== -1 ) {
- $ch = $this->in->readChar();
- }
-
- if ( $ch === "/" ) {
- $ch = $this->readChar();
- echo "$ch\n";
- break;
- }
- }
- } else {
- $this->_readAheadCh = $ch;
- $ch = "/";
- }
- }
- }
- }
- }
-
- return $ch;
- }
-
- /**
- * Creates a new StripPhpComments using the passed in
- * Reader for instantiation.
- *
- * @param reader A Reader object providing the underlying stream.
- * Must not be null.
- *
- * @return a new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new StripPhpComments($reader);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripWhitespace.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripWhitespace.php
deleted file mode 100644
index a45df0f2d1..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripWhitespace.php
+++ /dev/null
@@ -1,95 +0,0 @@
-.
-*/
-
-include_once 'phing/filters/BaseFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Strips whitespace from [php] files using PHP stripwhitespace() method.
- *
- * @author Hans Lellelid, hans@velum.net
- * @version $Revision$ $Date$
- * @see FilterReader
- * @package phing.filters
- * @todo -c use new PHP functions to perform this instead of regex.
- */
-class StripWhitespace extends BaseFilterReader implements ChainableReader {
-
- private $processed = false;
-
- /**
- * Returns the stream without Php comments and whitespace.
- *
- * @return the resulting stream, or -1
- * if the end of the resulting stream has been reached
- *
- * @throws IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
-
- if ($this->processed === true) {
- return -1; // EOF
- }
-
- // Read XML
- $php = null;
- while ( ($buffer = $this->in->read($len)) !== -1 ) {
- $php .= $buffer;
- }
-
- if ($php === null ) { // EOF?
- return -1;
- }
-
- if(empty($php)) {
- $this->log("PHP file is empty!", Project::MSG_WARN);
- return ''; // return empty string, don't attempt to strip whitespace
- }
-
- // write buffer to a temporary file, since php_strip_whitespace() needs a filename
- $file = new PhingFile(tempnam(PhingFile::getTempDir(), 'stripwhitespace'));
- file_put_contents($file->getAbsolutePath(), $php);
- $output = php_strip_whitespace($file->getAbsolutePath());
- unlink($file->getAbsolutePath());
-
- $this->processed = true;
-
- return $output;
- }
-
- /**
- * Creates a new StripWhitespace using the passed in
- * Reader for instantiation.
- *
- * @param reader A Reader object providing the underlying stream.
- * Must not be null.
- *
- * @return a new filter based on this configuration, but filtering
- * the specified reader
- */
- public function chain(Reader $reader) {
- $newFilter = new StripWhitespace($reader);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TabToSpaces.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TabToSpaces.php
deleted file mode 100644
index f2f5c5ed3f..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TabToSpaces.php
+++ /dev/null
@@ -1,144 +0,0 @@
-.
-*/
-
-require_once 'phing/filters/BaseParamFilterReader.php';
-require_once 'phing/filters/ChainableReader.php';
-
-/**
- * Converts tabs to spaces.
- *
- * Example:
- *
- *
- *
- * Or:
- *
- *
- *
- *
- *
- * @author Yannick Lecaillez
- * @author Hans Lellelid
- * @version $Revision: 1.9 $
- * @see BaseParamFilterReader
- * @package phing.filters
- */
-class TabToSpaces extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * The default tab length.
- * @var int
- */
- const DEFAULT_TAB_LENGTH = 8;
-
- /**
- * Parameter name for the length of a tab.
- * @var string
- */
- const TAB_LENGTH_KEY = "tablength";
-
- /**
- * Tab length in this filter.
- * @var int
- */
- private $tabLength = 8; //self::DEFAULT_TAB_LENGTH;
-
- /**
- * Returns stream after converting tabs to the specified number of spaces.
- *
- * @return the resulting stream, or -1
- * if the end of the resulting stream has been reached
- *
- * @exception IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
-
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- $buffer = $this->in->read($len);
-
- if($buffer === -1) {
- return -1;
- }
-
- $buffer = str_replace("\t", str_repeat(' ', $this->tabLength), $buffer);
-
- return $buffer;
- }
-
- /**
- * Sets the tab length.
- *
- * @param int $tabLength The number of spaces to be used when converting a tab.
- */
- function setTablength($tabLength) {
- $this->tabLength = (int) $tabLength;
- }
-
- /**
- * Returns the tab length.
- *
- * @return int The number of spaces used when converting a tab
- */
- function getTablength() {
- return $this->tabLength;
- }
-
- /**
- * Creates a new TabsToSpaces using the passed in
- * Reader for instantiation.
- *
- * @param Reader $reader A Reader object providing the underlying stream.
- * Must not be null.
- *
- * @return Reader A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new TabToSpaces($reader);
- $newFilter->setTablength($this->getTablength());
- $newFilter->setInitialized(true);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /**
- * Parses the parameters to set the tab length.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i = 0 ; $igetName()) {
- $this->tabLength = $params[$i]->getValue();
- break;
- }
- }
- }
- }
-}
-
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TailFilter.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TailFilter.php
deleted file mode 100644
index 9f2a670429..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TailFilter.php
+++ /dev/null
@@ -1,157 +0,0 @@
-.
-*/
-
-require_once 'phing/filters/BaseParamFilterReader.php';
-
-/**
- * Reads the last n lines of a stream. (Default is last10 lines.)
- *
- * Example:
- *
- *
- *
- * @author Hans Lellelid
- * @version $Revision: 1.2 $ $Date: 2006-09-14 13:19:08 -0700 (Thu, 14 Sep 2006) $
- * @package phing.filters
- */
-class TidyFilter extends BaseParamFilterReader implements ChainableReader {
-
- /** @var string Encoding of resulting document. */
- private $encoding = 'utf8';
-
- /** @var array Parameter[] */
- private $configParameters = array();
-
- /**
- * Set the encoding for resulting (X)HTML document.
- * @param string $v
- */
- public function setEncoding($v) {
- $this->encoding = $v;
- }
-
- /**
- * Sets the config params.
- * @param array Parameter[]
- * @see chain()
- */
- public function setConfigParameters($params)
- {
- $this->configParameters = $params;
- }
-
- /**
- * Adds a element (which is a Parameter).
- * @return Parameter
- */
- public function createConfig() {
- $num = array_push($this->configParameters, new Parameter());
- return $this->configParameters[$num-1];
- }
-
- /**
- * Converts the Parameter objects being used to store configuration into a simle assoc array.
- * @return array
- */
- private function getDistilledConfig() {
- $config = array();
- foreach($this->configParameters as $p) {
- $config[$p->getName()] = $p->getValue();
- }
- return $config;
- }
-
- /**
- * Reads input and returns Tidy-filtered output.
- *
- * @return the resulting stream, or -1 if the end of the resulting stream has been reached
- *
- * @throws IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
-
- if (!class_exists('Tidy')) {
- throw new BuildException("You must enable the 'tidy' extension in your PHP configuration in order to use the Tidy filter.");
- }
-
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- $buffer = $this->in->read($len);
- if($buffer === -1) {
- return -1;
- }
-
- $config = $this->getDistilledConfig();
-
- $tidy = new Tidy();
- $tidy->parseString($buffer, $config, $this->encoding);
- $tidy->cleanRepair();
-
- return tidy_get_output($tidy);
-
- }
-
-
- /**
- * Creates a new TidyFilter using the passed in Reader for instantiation.
- *
- * @param reader A Reader object providing the underlying stream.
- * Must not be null.
- *
- * @return a new filter based on this configuration, but filtering
- * the specified reader
- */
- public function chain(Reader $reader) {
- $newFilter = new TidyFilter($reader);
- $newFilter->setConfigParameters($this->configParameters);
- $newFilter->setEncoding($this->encoding);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /**
- * Initializes any parameters (e.g. config options).
- * This method is only called when this filter is used through a tag in build file.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ($params) {
- foreach($params as $param) {
- if ($param->getType() == "config") {
- $this->configParameters[] = $param;
- } else {
-
- if ($param->getName() == "encoding") {
- $this->setEncoding($param->getValue());
- }
-
- }
-
- }
- }
- }
-
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TranslateGettext.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TranslateGettext.php
deleted file mode 100644
index 635cbb0ea0..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TranslateGettext.php
+++ /dev/null
@@ -1,285 +0,0 @@
-.
-*/
-
-require_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Replaces gettext("message id") and _("message id") with the translated string.
- *
- * Gettext is great for creating multi-lingual sites, but in some cases (e.g. for
- * performance reasons) you may wish to replace the gettext calls with the translations
- * of the strings; that's what this task is for. Note that this is similar to
- * ReplaceTokens, but both the find and the replace aspect is more complicated -- hence
- * this is a separate, stand-alone filter.
- *
- *
- * Example:
- *
- *
- *
- *
- * @author Hans Lellelid
- * @version $Revision: 1.11 $ $Date: 2007-12-20 07:44:58 -0800 (Thu, 20 Dec 2007) $
- * @access public
- * @see BaseFilterReader
- * @package phing.filters
- */
-class TranslateGettext extends BaseParamFilterReader implements ChainableReader {
-
- // constants for specifying keys to expect
- // when this is called using
- const DOMAIN_KEY = "domain";
- const DIR_KEY = "dir";
- const LOCALE_KEY = "locale";
-
- /** The domain to use */
- private $domain = 'messages';
-
- /** The dir containing LC_MESSAGES */
- private $dir;
-
- /** The locale to use */
- private $locale;
-
- /** The system locale before it was changed for this filter. */
- private $storedLocale;
-
- /**
- * Set the text domain to use.
- * The text domain must correspond to the name of the compiled .mo files.
- * E.g. "messages" ==> $dir/LC_MESSAGES/messages.mo
- * "mydomain" ==> $dir/LC_MESSAGES/mydomain.mo
- * @param string $domain
- */
- function setDomain($domain) {
- $this->domain = $domain;
- }
-
- /**
- * Get the current domain.
- * @return string
- */
- function getDomain() {
- return $this->domain;
- }
-
- /**
- * Sets the root locale directory.
- * @param PhingFile $dir
- */
- function setDir(PhingFile $dir) {
- $this->dir = $dir;
- }
-
- /**
- * Gets the root locale directory.
- * @return PhingFile
- */
- function getDir() {
- return $this->dir;
- }
-
- /**
- * Sets the locale to use for translation.
- * Note that for gettext() to work, you have to make sure this locale
- * is specific enough for your system (e.g. some systems may allow an 'en' locale,
- * but others will require 'en_US', etc.).
- * @param string $locale
- */
- function setLocale($locale) {
- $this->locale = $locale;
- }
-
- /**
- * Gets the locale to use for translation.
- * @return string
- */
- function getLocale() {
- return $this->locale;
- }
-
- /**
- * Make sure that required attributes are set.
- * @throws BuldException - if any required attribs aren't set.
- */
- protected function checkAttributes() {
- if (!$this->domain || !$this->locale || !$this->dir) {
- throw new BuildException("You must specify values for domain, locale, and dir attributes.");
- }
- }
-
- /**
- * Initialize the gettext/locale environment.
- * This method will change some env vars and locale settings; the
- * restoreEnvironment should put them all back :)
- *
- * @return void
- * @throws BuildException - if locale cannot be set.
- * @see restoreEnvironment()
- */
- protected function initEnvironment() {
- $this->storedLocale = getenv("LANG");
-
- $this->log("Setting locale to " . $this->locale, Project::MSG_DEBUG);
- putenv("LANG=".$this->locale);
- $ret = setlocale(LC_ALL, $this->locale);
- if ($ret === false) {
- $msg = "Could not set locale to " . $this->locale
- . ". You may need to use fully qualified name"
- . " (e.g. en_US instead of en).";
- throw new BuildException($msg);
- }
-
- $this->log("Binding domain '".$this->domain."' to " . $this->dir, Project::MSG_DEBUG);
- bindtextdomain($this->domain, $this->dir->getAbsolutePath());
- textdomain($this->domain);
- }
-
- /**
- * Restores environment settings and locale.
- * This does _not_ restore any gettext-specific settings
- * (e.g. textdomain()).
- *
- * @return void
- */
- protected function restoreEnvironment() {
- putenv("LANG=".$this->storedLocale);
- setlocale(LC_ALL, $this->storedLocale);
- }
-
- /**
- * Performs gettext translation of msgid and returns translated text.
- *
- * This function simply wraps gettext() call, but provides ability to log
- * string replacements. (alternative would be using preg_replace with /e which
- * would probably be faster, but no ability to debug/log.)
- *
- * @param array $matches Array of matches; we're interested in $matches[2].
- * @return string Translated text
- */
- private function xlateStringCallback($matches) {
- $charbefore = $matches[1];
- $msgid = $matches[2];
- $translated = gettext($msgid);
- $this->log("Translating \"$msgid\" => \"$translated\"", Project::MSG_DEBUG);
- return $charbefore . '"' . $translated . '"';
- }
-
- /**
- * Returns the filtered stream.
- * The original stream is first read in fully, and then translation is performed.
- *
- * @return mixed the filtered stream, or -1 if the end of the resulting stream has been reached.
- *
- * @throws IOException - if the underlying stream throws an IOException during reading
- * @throws BuildException - if the correct params are not supplied
- */
- function read($len = null) {
-
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- // Make sure correct params/attribs have been set
- $this->checkAttributes();
-
- $buffer = $this->in->read($len);
- if($buffer === -1) {
- return -1;
- }
-
- // Setup the locale/gettext environment
- $this->initEnvironment();
-
-
- // replace any occurrences of _("") or gettext("") with
- // the translated value.
- //
- // ([^\w]|^)_\("((\\"|[^"])*)"\)
- // --$1--- -----$2----
- // ---$3-- [match escaped quotes or any char that's not a quote]
- //
- // also match gettext() -- same as above
-
- $buffer = preg_replace_callback('/([^\w]|^)_\("((\\\"|[^"])*)"\)/', array($this, 'xlateStringCallback'), $buffer);
- $buffer = preg_replace_callback('/([^\w]|^)gettext\("((\\\"|[^"])*)"\)/', array($this, 'xlateStringCallback'), $buffer);
-
- // Check to see if there are any _('') calls and flag an error
-
- // Check to see if there are any unmatched gettext() calls -- and flag an error
-
- $matches = array();
- if (preg_match('/([^\w]|^)(gettext\([^\)]+\))/', $buffer, $matches)) {
- $this->log("Unable to perform translation on: " . $matches[2], Project::MSG_WARN);
- }
-
- $this->restoreEnvironment();
-
- return $buffer;
- }
-
- /**
- * Creates a new TranslateGettext filter using the passed in
- * Reader for instantiation.
- *
- * @param Reader $reader A Reader object providing the underlying stream.
- * Must not be null.
- *
- * @return TranslateGettext A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new TranslateGettext($reader);
- $newFilter->setProject($this->getProject());
- $newFilter->setDomain($this->getDomain());
- $newFilter->setLocale($this->getLocale());
- $newFilter->setDir($this->getDir());
- return $newFilter;
- }
-
- /**
- * Parses the parameters if this filter is being used in "generic" mode.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- foreach($params as $param) {
- switch($param->getType()) {
- case self::DOMAIN_KEY:
- $this->setDomain($param->getValue());
- break;
- case self::DIR_KEY:
- $this->setDir($this->project->resolveFile($param->getValue()));
- break;
-
- case self::LOCALE_KEY:
- $this->setLocale($param->getValue());
- break;
- } // switch
- }
- } // if params !== null
- }
-}
-
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/XincludeFilter.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/XincludeFilter.php
deleted file mode 100644
index cd56f1a2be..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/XincludeFilter.php
+++ /dev/null
@@ -1,137 +0,0 @@
-.
- */
-
-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
- * @version $Revision: 1.16 $
- * @see FilterReader
- * @package phing.filters
- */
-class XincludeFilter extends BaseParamFilterReader implements ChainableReader {
-
- private $basedir = null;
-
- 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);
- }
-
- $xmlDom = new DomDocument();
- $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 null.
- *
- * @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;
- }
-
-}
-
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/XsltFilter.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/XsltFilter.php
deleted file mode 100644
index 5d05d62ade..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/XsltFilter.php
+++ /dev/null
@@ -1,341 +0,0 @@
-.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Applies XSL stylesheet to incoming text.
- *
- * Uses PHP XSLT support (libxslt).
- *
- * @author Hans Lellelid
- * @author Yannick Lecaillez
- * @author Andreas Aderhold
- * @version $Revision$
- * @see FilterReader
- * @package phing.filters
- */
-class XsltFilter extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * Path to XSL stylesheet.
- * @var string
- */
- private $xslFile = null;
-
- /**
- * Whether XML file has been transformed.
- * @var boolean
- */
- private $processed = false;
-
- /**
- * XSLT Params.
- * @var array
- */
- private $xsltParams = array();
-
- /**
- * Whether to use loadHTML() to parse the input XML file.
- */
- private $html = false;
-
- /**
- * Create new XSLT Param object, to handle the nested element.
- * @return XSLTParam
- */
- function createParam() {
- $num = array_push($this->xsltParams, new XSLTParam());
- return $this->xsltParams[$num-1];
- }
-
- /**
- * Sets the XSLT params for this class.
- * This is used to "clone" this class, in the chain() method.
- * @param array $params
- */
- function setParams($params) {
- $this->xsltParams = $params;
- }
-
- /**
- * Returns the XSLT params set for this class.
- * This is used to "clone" this class, in the chain() method.
- * @return array
- */
- function getParams() {
- return $this->xsltParams;
- }
-
- /**
- * Set the XSLT stylesheet.
- * @param mixed $file PhingFile object or path.
- */
- function setStyle(PhingFile $file) {
- $this->xslFile = $file;
- }
-
- /**
- * Whether to use HTML parser for the XML.
- * This is supported in libxml2 -- Yay!
- * @return boolean
- */
- function getHtml() {
- return $this->html;
- }
-
- /**
- * Whether to use HTML parser for XML.
- * @param boolean $b
- */
- function setHtml($b) {
- $this->html = (boolean) $b;
- }
-
- /**
- * Get the path to XSLT stylesheet.
- * @return mixed XSLT stylesheet path.
- */
- function getStyle() {
- return $this->xslFile;
- }
-
- /**
- * 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('XSLTProcessor')) {
- throw new BuildException("Could not find the XSLTProcessor class. Make sure PHP has been compiled/configured to support XSLT.");
- }
-
- if ($this->processed === true) {
- return -1; // EOF
- }
-
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- // 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 ''; // return empty string, don't attempt to apply XSLT
- }
-
- // Read XSLT
- $_xsl = null;
- $xslFr = new FileReader($this->xslFile);
- $xslFr->readInto($_xsl);
-
- $this->log("Tranforming XML " . $this->in->getResource() . " using style " . $this->xslFile->getPath(), Project::MSG_VERBOSE);
-
- $out = '';
- try {
- $out = $this->process($_xml, $_xsl);
- $this->processed = true;
- } catch (IOException $e) {
- throw new BuildException($e);
- }
-
- return $out;
- }
-
- // {{{ method _ProcessXsltTransformation($xml, $xslt) throws BuildException
- /**
- * Try to process the XSLT transformation
- *
- * @param string XML to process.
- * @param string XSLT sheet to use for the processing.
- *
- * @throws BuildException On XSLT errors
- */
- protected function process($xml, $xsl) {
-
- $processor = new XSLTProcessor();
-
- $xmlDom = new DOMDocument();
- $xslDom = new DOMDocument();
-
- if ($this->html) {
- $xmlDom->loadHTML($xml);
- } else {
- $xmlDom->loadXML($xml);
- }
-
- $xslDom->loadxml($xsl);
-
- $processor->importStylesheet($xslDom);
-
- // ignoring param "type" attrib, because
- // we're only supporting direct XSL params right now
- foreach($this->xsltParams as $param) {
- $this->log("Setting XSLT param: " . $param->getName() . "=>" . $param->getExpression(), Project::MSG_DEBUG);
- $processor->setParameter(null, $param->getName(), $param->getExpression());
- }
-
- $errorlevel = error_reporting();
- error_reporting($errorlevel & ~E_WARNING);
- @$result = $processor->transformToXML($xmlDom);
- error_reporting($errorlevel);
-
- if (false === $result) {
- //$errno = xslt_errno($processor);
- //$err = xslt_error($processor);
- throw new BuildException("XSLT Error");
- } else {
- return $result;
- }
- }
-
- /**
- * Creates a new XsltFilter using the passed in
- * Reader for instantiation.
- *
- * @param Reader A Reader object providing the underlying stream.
- * Must not be null.
- *
- * @return Reader A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new XsltFilter($reader);
- $newFilter->setProject($this->getProject());
- $newFilter->setStyle($this->getStyle());
- $newFilter->setInitialized(true);
- $newFilter->setParams($this->getParams());
- $newFilter->setHtml($this->getHtml());
- return $newFilter;
- }
-
- /**
- * Parses the parameters to get stylesheet path.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i = 0, $_i=count($params) ; $i < $_i; $i++) {
- if ( $params[$i]->getType() === null ) {
- if ($params[$i]->getName() === "style") {
- $this->setStyle($params[$i]->getValue());
- }
- } elseif ($params[$i]->getType() == "param") {
- $xp = new XSLTParam();
- $xp->setName($params[$i]->getName());
- $xp->setExpression($params[$i]->getValue());
- $this->xsltParams[] = $xp;
- }
- }
- }
- }
-
-}
-
-
-/**
- * Class that holds an XSLT parameter.
- */
-class XSLTParam {
-
- private $name;
-
- private $expr;
-
- /**
- * Sets param name.
- * @param string $name
- */
- public function setName($name) {
- $this->name = $name;
- }
-
- /**
- * Get param name.
- * @return string
- */
- public function getName() {
- return $this->name;
- }
-
- /**
- * Sets expression value (alias to the setExpression()) method.
- *
- * @param string $v
- * @see setExpression()
- */
- public function setValue($v)
- {
- $this->setExpression($v);
- }
-
- /**
- * Gets expression value (alias to the getExpression()) method.
- *
- * @param string $v
- * @see getExpression()
- */
- public function getValue()
- {
- return $this->getExpression();
- }
-
- /**
- * Sets expression value.
- * @param string $expr
- */
- public function setExpression($expr) {
- $this->expr = $expr;
- }
-
- /**
- * Sets expression to dynamic register slot.
- * @param RegisterSlot $expr
- */
- public function setListeningExpression(RegisterSlot $expr) {
- $this->expr = $expr;
- }
-
- /**
- * Returns expression value -- performs lookup if expr is registerslot.
- * @return string
- */
- public function getExpression() {
- if ($this->expr instanceof RegisterSlot) {
- return $this->expr->getValue();
- } else {
- return $this->expr;
- }
- }
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/util/ChainReaderHelper.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/util/ChainReaderHelper.php
deleted file mode 100644
index 7b6a9139d0..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/util/ChainReaderHelper.php
+++ /dev/null
@@ -1,183 +0,0 @@
-.
-*/
-
-include_once 'phing/Project.php';
-include_once 'phing/filters/BaseFilterReader.php';
-include_once 'phing/types/PhingFilterReader.php';
-include_once 'phing/types/FilterChain.php';
-include_once 'phing/types/Parameter.php';
-include_once 'phing/util/FileUtils.php';
-include_once 'phing/util/StringHelper.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Process a FilterReader chain.
- *
- * Here, the interesting method is 'getAssembledReader'.
- * The purpose of this one is to create a simple Reader object which
- * apply all filters on another primary Reader object.
- *
- * For example : In copyFile (phing.util.FileUtils) the primary Reader
- * is a FileReader object (more accuratly, a BufferedReader) previously
- * setted for the source file to copy. So, consider this filterchain :
- *
- *
- *
- *
- *
- *
- *
- *
- *
- * getAssembledReader will return a Reader object wich read on each
- * of these filters. Something like this : ('->' = 'which read data from') :
- *
- * [TABTOSPACES] -> [LINECONTAINS] -> [STRIPPHPCOMMENTS] -> [FILEREADER]
- * (primary reader)
- *
- * So, getAssembledReader will return the TABTOSPACES Reader object. Then
- * each read done with this Reader object will follow this path.
- *
- * Hope this explanation is clear :)
- *
- * TODO: Implement the classPath feature.
- *
- * @author Yannick Lecaillez
- * @version $Revision: 1.8 $ $Date: 2007-12-20 07:44:58 -0800 (Thu, 20 Dec 2007) $
- * @access public
- * @package phing.filters.util
-*/
-class ChainReaderHelper {
-
- /** Primary reader to wich the reader chain is to be attached */
- private $primaryReader = null;
-
- /** The site of the buffer to be used. */
- private $bufferSize = 8192;
-
- /** Chain of filters */
- private $filterChains = array();
-
- /** The Phing project */
- private $project;
-
- /*
- * Sets the primary reader
- */
- function setPrimaryReader(Reader $reader) {
- $this->primaryReader = $reader;
- }
-
- /*
- * Set the project to work with
- */
- function setProject(Project $project) {
- $this->project = $project;
- }
-
- /*
- * Get the project
- */
- function getProject() {
- return $this->project;
- }
-
- /*
- * Sets the buffer size to be used. Defaults to 8192,
- * if this method is not invoked.
- */
- function setBufferSize($size) {
- $this->bufferSize = $size;
- }
-
- /*
- * Sets the collection of filter reader sets
- */
- function setFilterChains(&$fchain) {
- $this->filterChains = &$fchain;
- }
-
- /*
- * Assemble the reader
- */
- function getAssembledReader() {
-
- $instream = $this->primaryReader;
- $filterReadersCount = count($this->filterChains);
- $finalFilters = array();
-
- // Collect all filter readers of all filter chains used ...
- for($i = 0 ; $i<$filterReadersCount ; $i++) {
- $filterchain = &$this->filterChains[$i];
- $filterReaders = $filterchain->getFilterReaders();
- $readerCount = count($filterReaders);
- for($j = 0 ; $j<$readerCount ; $j++) {
- $finalFilters[] = $filterReaders[$j];
- }
- }
-
- // ... then chain the filter readers.
- $filtersCount = count($finalFilters);
- if ( $filtersCount > 0 ) {
- for($i = 0 ; $i<$filtersCount ; $i++) {
- $filter = $finalFilters[$i];
-
- if ( $filter instanceof PhingFilterReader ) {
-
- // This filter reader is an external class.
- $className = $filter->getClassName();
- $classpath = $filter->getClasspath();
- $project = $filter->getProject();
-
- if ( $className !== null ) {
- $cls = Phing::import($className, $classpath);
- $impl = new $cls();
- }
-
- if ( !($impl instanceof FilterReader) ) {
- throw new Exception($className." does not extend phing.system.io.FilterReader");
- }
-
- $impl->setReader($instream); // chain
- $impl->setProject($this->getProject()); // what about $project above ?
-
- if ( $impl instanceof Parameterizable ) {
- $impl->setParameters($filter->getParams());
- }
-
- $instream = $impl; // now that it's been chained
-
- } elseif (($filter instanceof ChainableReader) && ($filter instanceof Reader)) {
- if ( $this->getProject() !== null && ($filter instanceof BaseFilterReader) ) {
- $filter->setProject($this->getProject());
- }
- $instream = $filter->chain($instream);
- } else {
- throw new Exception("Cannot chain invalid filter: " . get_class($filter));
- }
- }
- }
-
- return $instream;
- }
-
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/util/IniFileTokenReader.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/util/IniFileTokenReader.php
deleted file mode 100644
index 5481012649..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/util/IniFileTokenReader.php
+++ /dev/null
@@ -1,97 +0,0 @@
-.
-*/
-
-include_once 'phing/types/TokenReader.php';
-include_once 'phing/system/io/IOException.php';
-include_once 'phing/filters/ReplaceTokens.php'; // For class Token
-
-/**
- * Class that allows reading tokens from INI files.
- *
- * @author Manuel Holtgewe
- * @version $Revision: 1.7 $
- * @package phing.filters.util
- */
-class IniFileTokenReader extends TokenReader {
-
- /**
- * Holds the path to the INI file that is to be read.
- * @var object Reference to a PhingFile Object representing
- * the path to the INI file.
- */
- private $file = null;
-
- /**
- * @var string Sets the section to load from the INI file.
- * if omitted, all sections are loaded.
- */
- private $section = null;
-
- /**
- * Reads the next token from the INI file
- *
- * @throws IOException On error
- * @return Token
- */
- function readToken() {
- if ($this->file === null) {
- throw new BuildException("No File set for IniFileTokenReader");
- }
-
- static $tokens = null;
- if ($tokens === null) {
- $tokens = array();
- $arr = parse_ini_file($this->file->getAbsolutePath(), true);
- if ($this->section === null) {
- foreach ($arr as $sec_name => $values) {
- foreach($arr[$sec_name] as $key => $value) {
- $tok = new Token;
- $tok->setKey($key);
- $tok->setValue($value);
- $tokens[] = $tok;
- }
- }
- } else if (isset($arr[$this->section])) {
- foreach ($arr[$this->section] as $key => $value) {
- $tok = new Token;
- $tok->setKey($key);
- $tok->setValue($value);
- $tokens[] = $tok;
- }
- }
- }
-
- if (count($tokens) > 0) {
- return array_pop($tokens);
- } else
- return null;
- }
-
- function setFile(PhingFile $file) {
- $this->file = $file;
- }
-
- function setSection($str) {
- $this->section = (string) $str;
- }
-}
-
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/DefaultInputHandler.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/DefaultInputHandler.php
deleted file mode 100644
index a525e50b27..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/DefaultInputHandler.php
+++ /dev/null
@@ -1,81 +0,0 @@
-.
- */
-
-require_once 'phing/input/InputHandler.php';
-include_once 'phing/system/io/ConsoleReader.php';
-
-/**
- * Prompts using print(); reads input from Console.
- *
- * @author Hans Lellelid (Phing)
- * @author Stefan Bodewig (Ant)
- * @version $Revision: 1.6 $
- * @package phing.input
- */
-class DefaultInputHandler implements InputHandler {
-
- /**
- * Prompts and requests input. May loop until a valid input has
- * been entered.
- * @throws BuildException
- */
- public function handleInput(InputRequest $request) {
- $prompt = $this->getPrompt($request);
- $in = new ConsoleReader();
- do {
- print $prompt;
- try {
- $input = $in->readLine();
- if ($input === "" && ($request->getDefaultValue() !== null) ) {
- $input = $request->getDefaultValue();
- }
- $request->setInput($input);
- } catch (Exception $e) {
- throw new BuildException("Failed to read input from Console.", $e);
- }
- } while (!$request->isInputValid());
- }
-
- /**
- * Constructs user prompt from a request.
- *
- *
This implementation adds (choice1,choice2,choice3,...) to the
- * prompt for MultipleChoiceInputRequests.
- *
- * @param $request the request to construct the prompt for.
- * Must not be null.
- */
- protected function getPrompt(InputRequest $request) {
- $prompt = $request->getPrompt();
-
- if ($request instanceof YesNoInputRequest) {
- $prompt .= '(' . implode('/', $request->getChoices()) .')';
- } elseif ($request instanceof MultipleChoiceInputRequest) { // (a,b,c,d)
- $prompt .= '(' . implode(',', $request->getChoices()) . ')';
- }
- if ($request->getDefaultValue() !== null) {
- $prompt .= ' ['.$request->getDefaultValue().']';
- }
- $pchar = $request->getPromptChar();
- return $prompt . ($pchar ? $pchar . ' ' : ' ');
- }
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/InputHandler.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/InputHandler.php
deleted file mode 100644
index 0e746a613a..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/InputHandler.php
+++ /dev/null
@@ -1,45 +0,0 @@
-.
- */
-
-/**
- * Plugin to Phing to handle requests for user input.
- *
- * @author Stefan Bodewig
- * @version $Revision: 1.3 $
- * @package phing.input
- */
-interface InputHandler {
-
- /**
- * Handle the request encapsulated in the argument.
- *
- *
Precondition: the request.getPrompt will return a non-null
- * value.
- *
- *
Postcondition: request.getInput will return a non-null
- * value, request.isInputValid will return true.
- * @return void
- * @throws BuildException
- */
- public function handleInput(InputRequest $request);
-
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/InputRequest.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/InputRequest.php
deleted file mode 100644
index 9cba696054..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/InputRequest.php
+++ /dev/null
@@ -1,107 +0,0 @@
-.
- */
-
-/**
- * Encapsulates an input request.
- *
- * @author Hans Lellelid (Phing)
- * @author Stefan Bodewig (Ant)
- * @version $Revision: 1.4 $
- * @package phing.input
- */
-class InputRequest {
-
- protected $prompt;
- protected $input;
- protected $defaultValue;
- protected $promptChar;
-
- /**
- * @param string $prompt The prompt to show to the user. Must not be null.
- */
- public function __construct($prompt) {
- if ($prompt === null) {
- throw new BuildException("prompt must not be null");
- }
- $this->prompt = $prompt;
- }
-
- /**
- * Retrieves the prompt text.
- */
- public function getPrompt() {
- return $this->prompt;
- }
-
- /**
- * Sets the user provided input.
- */
- public function setInput($input) {
- $this->input = $input;
- }
-
- /**
- * Is the user input valid?
- */
- public function isInputValid() {
- return true;
- }
-
- /**
- * Retrieves the user input.
- */
- public function getInput() {
- return $this->input;
- }
-
- /**
- * Set the default value to use.
- * @param mixed $v
- */
- public function setDefaultValue($v) {
- $this->defaultValue = $v;
- }
-
- /**
- * Return the default value to use.
- * @return mixed
- */
- public function getDefaultValue() {
- return $this->defaultValue;
- }
-
- /**
- * Set the default value to use.
- * @param string $c
- */
- public function setPromptChar($c) {
- $this->promptChar = $c;
- }
-
- /**
- * Return the default value to use.
- * @return string
- */
- public function getPromptChar() {
- return $this->promptChar;
- }
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/MultipleChoiceInputRequest.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/MultipleChoiceInputRequest.php
deleted file mode 100644
index 25e035ebf7..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/MultipleChoiceInputRequest.php
+++ /dev/null
@@ -1,58 +0,0 @@
-.
- */
-
-require_once 'phing/input/InputRequest.php';
-
-/**
- * Encapsulates an input request.
- *
- * @author Stefan Bodewig
- * @version $Revision: 1.5 $
- * @package phing.input
- */
-class MultipleChoiceInputRequest extends InputRequest {
-
- protected $choices = array();
-
- /**
- * @param string $prompt The prompt to show to the user. Must not be null.
- * @param array $choices holds all input values that are allowed.
- * Must not be null.
- */
- public function __construct($prompt, $choices) {
- parent::__construct($prompt);
- $this->choices = $choices;
- }
-
- /**
- * @return The possible values.
- */
- public function getChoices() {
- return $this->choices;
- }
-
- /**
- * @return true if the input is one of the allowed values.
- */
- public function isInputValid() {
- return in_array($this->getInput(), $this->choices); // not strict (?)
- }
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/PropertyFileInputHandler.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/PropertyFileInputHandler.php
deleted file mode 100644
index e588ceadeb..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/PropertyFileInputHandler.php
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2002 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "Ant" and "Apache Software
- * Foundation" must not be used to endorse or promote products derived
- * from this software without prior written permission. For written
- * permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- * nor may "Apache" appear in their names without prior written
- * permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 APACHE SOFTWARE FOUNDATION OR
- * ITS 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 on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
-package org.apache.tools.ant.input;
-
-import org.apache.tools.ant.BuildException;
-
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.Properties;
-
-/**
- * Reads input from a property file, the file name is read from the
- * system property ant.input.properties, the prompt is the key for input.
- *
- * @author Stefan Bodewig
- * @version $Revision: 1.1 $
- * @since Ant 1.5
- */
-public class PropertyFileInputHandler implements InputHandler {
- private Properties props = null;
-
- /**
- * Name of the system property we expect to hold the file name.
- */
- public static final String FILE_NAME_KEY = "ant.input.properties";
-
- /**
- * Empty no-arg constructor.
- */
- public PropertyFileInputHandler() {
- }
-
- /**
- * Picks up the input from a property, using the prompt as the
- * name of the property.
- *
- * @exception BuildException if no property of that name can be found.
- */
- public void handleInput(InputRequest request) throws BuildException {
- readProps();
-
- Object o = props.get(request.getPrompt());
- if (o == null) {
- throw new BuildException("Unable to find input for \'"
- + request.getPrompt()+"\'");
- }
- request.setInput(o.toString());
- if (!request.isInputValid()) {
- throw new BuildException("Found invalid input " + o
- + " for \'" + request.getPrompt() + "\'");
- }
- }
-
- /**
- * Reads the properties file if it hasn't already been read.
- */
- private synchronized void readProps() throws BuildException {
- if (props == null) {
- String propsFile = System.getProperty(FILE_NAME_KEY);
- if (propsFile == null) {
- throw new BuildException("System property "
- + FILE_NAME_KEY
- + " for PropertyFileInputHandler not"
- + " set");
- }
-
- props = new Properties();
-
- try {
- props.load(new FileInputStream(propsFile));
- } catch (IOException e) {
- throw new BuildException("Couldn't load " + propsFile, e);
- }
- }
- }
-
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/YesNoInputRequest.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/YesNoInputRequest.php
deleted file mode 100644
index d028278aa7..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/YesNoInputRequest.php
+++ /dev/null
@@ -1,47 +0,0 @@
-.
- */
-
-require_once 'phing/input/MultipleChoiceInputRequest.php';
-
-/**
- * Encapsulates an input request that returns a boolean (yes/no).
- *
- * @author Hans Lellelid
- * @version $Revision: 1.4 $
- * @package phing.input
- */
-class YesNoInputRequest extends MultipleChoiceInputRequest {
-
- /**
- * @return true if the input is one of the allowed values.
- */
- public function isInputValid() {
- return StringHelper::isBoolean($this->input);
- }
-
- /**
- * Converts input to boolean.
- * @return boolean
- */
- public function getInput() {
- return StringHelper::booleanValue($this->input);
- }
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/lib/Capsule.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/lib/Capsule.php
deleted file mode 100644
index d6deded5cf..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/lib/Capsule.php
+++ /dev/null
@@ -1,266 +0,0 @@
-
- * @version $Revision: 1.9 $ $Date: 2006-09-14 13:19:08 -0700 (Thu, 14 Sep 2006) $
- */
-class Capsule {
-
- /**
- * Look for templates here (if relative path provided).
- * @var string
- */
- protected $templatePath;
-
- /**
- * Where should output files be written?
- * (This is named inconsistently to be compatible w/ Texen.)
- * @var string
- */
- protected $outputDirectory;
-
- /**
- * The variables that can be used by the templates.
- * @var array Hash of variables.
- */
- public $vars = array();
-
- /**
- * Has template been initialized.
- */
- protected $initialized = false;
-
- /**
- * Stores the pre-parse() include_path.
- * @var string
- */
- private $old_include_path;
-
- function __construct() {
- }
-
- /**
- * Clears one or several or all variables.
- * @param mixed $which String name of var, or array of names.
- * @return void
- */
- function clear($which = null) {
- if ($which === null) {
- $this->vars = array();
- } elseif (is_array($which)) {
- foreach($which as $var) {
- unset($this->vars[$var]);
- }
- } else {
- unset($this->vars[$which]);
- }
- }
-
- /**
- * Set the basepath to use for template lookups.
- * @param string $v
- */
- function setTemplatePath($v) {
- $this->templatePath = rtrim($v, DIRECTORY_SEPARATOR.'/');
- }
-
- /**
- * Get the basepath to use for template lookups.
- * @return string
- */
- function getTemplatePath() {
- return $this->templatePath;
- }
-
- /**
- * Set a basepath to use for output file creation.
- * @param string $v
- */
- function setOutputDirectory($v) {
- $this->outputDirectory = rtrim($v, DIRECTORY_SEPARATOR.'/');
- }
-
- /**
- * Get basepath to use for output file creation.
- * @return string
- */
- function getOutputDirectory() {
- return $this->outputDirectory;
- }
-
- /**
- * Low overhead (no output buffering) method to simply dump template
- * to buffer.
- *
- * @param string $__template
- * @return void
- * @throws Exception - if template cannot be found
- */
- function display($__template) {
-
- // Prepend "private" variable names with $__ in this function
- // to keep namespace conflict potential to a minimum.
-
- // Alias this class to $generator.
- $generator = $this;
-
- if (isset($this->vars['this'])) {
- throw new Exception("Assigning a variable named \$this to a context conflicts with class namespace.");
- }
-
- // extract variables into local namespace
- extract($this->vars);
-
- // prepend template path to include path,
- // so that include "path/relative/to/templates"; can be used within templates
- $__old_inc_path = ini_get('include_path');
- ini_set('include_path', $this->templatePath . PATH_SEPARATOR . $__old_inc_path);
-
- @ini_set('track_errors', true);
- include $__template;
- @ini_restore('track_errors');
-
- // restore the include path
- ini_set('include_path', $__old_inc_path);
-
- if (!empty($php_errormsg)) {
- throw new Exception("Unable to parse template " . $__template . ": " . $php_errormsg);
- }
- }
-
- /**
- * Fetches the results of a tempalte parse and either returns
- * the string or writes results to a specified output file.
- *
- * @param string $template The template filename (relative to templatePath or absolute).
- * @param string $outputFile If specified, contents of template will also be written to this file.
- * @param boolean $append Should output be appended to source file?
- * @return string The "parsed" template output.
- * @throws Exception - if template not found.
- */
- function parse($template, $outputFile = null, $append = false) {
-
- // main work done right here:
- // hopefully this works recursively ... fingers crossed.
- ob_start();
-
- try {
- $this->display($template);
- } catch (Exception $e) {
- ob_end_flush(); // flush the output on error (so we can see up to what point it parsed everything)
- throw $e;
- }
-
- $output = ob_get_contents();
- ob_end_clean();
-
- if ($outputFile !== null) {
- $outputFile = $this->resolvePath($outputFile, $this->outputDirectory);
-
- $flags = null;
- if ($append) $flags = FILE_APPEND;
-
- if (!file_put_contents($outputFile, $output, $flags) && $output != "") {
- throw new Exception("Unable to write output to " . $outputFile);
- }
- }
-
- return $output;
- }
-
- /**
- * This returns a "best guess" path for the given file.
- *
- * @param string $file File name or possibly absolute path.
- * @param string $basepath The basepath that should be prepended if $file is not absolute.
- * @return string "Best guess" path for this file.
- */
- protected function resolvePath($file, $basepath) {
- if ( !($file[0] == DIRECTORY_SEPARATOR || $file[0] == '/')
- // also account for C:\ style path
- && !($file[1] == ':' && ($file[2] == DIRECTORY_SEPARATOR || $file[2] == '/'))) {
- if ($basepath != null) {
- $file = $basepath . DIRECTORY_SEPARATOR . $file;
- }
- }
- return $file;
- }
-
- /**
- * Gets value of specified var or NULL if var has not been put().
- * @param string $name Variable name to retrieve.
- * @return mixed
- */
- function get($name) {
- if (!isset($this->vars[$name])) return null;
- return $this->vars[$name];
- }
-
- /**
- * Merges in passed hash to vars array.
- *
- * Given an array like:
- *
- * array( 'myvar' => 'Hello',
- * 'myvar2' => 'Hello')
- *
- * Resulting template will have access to $myvar and $myvar2.
- *
- * @param array $vars
- * @param boolean $recursiveMerge Should matching keys be recursively merged?
- * @return void
- */
- function putAll($vars, $recursiveMerge = false) {
- if ($recursiveMerge) {
- $this->vars = array_merge_recursive($this->vars, $vars);
- } else {
- $this->vars = array_merge($this->vars, $vars);
- }
- }
-
- /**
- * Adds a variable to the context.
- *
- * Resulting template will have access to ${$name$} variable.
- *
- * @param string $name
- * @param mixed $value
- */
- function put($name, $value) {
- $this->vars[$name] = $value;
- }
-
- /**
- * Put a variable into the context, assigning it by reference.
- * This means that if the template modifies the variable, then it
- * will also be modified in the context.
- *
- * @param $name
- * @param &$value
- */
- function putRef($name, &$value) {
- $this->vars[$name] = &$value;
- }
-
- /**
- * Makes a copy of the value and puts it into the context.
- * This is primarily to force copying (cloning) of objects, rather
- * than the default behavior which is to assign them by reference.
- * @param string $name
- * @param mixed $value
- */
- function putCopy($name, $value) {
- if (is_object($value)) {
- $value = clone $value;
- }
- $this->vars[$name] = $value;
- }
-
-}
\ No newline at end of file
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/lib/Zip.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/lib/Zip.php
deleted file mode 100644
index 088facdb49..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/lib/Zip.php
+++ /dev/null
@@ -1,3590 +0,0 @@
- |
-// +----------------------------------------------------------------------+
-//
-// $Id: Zip.php 325 2007-12-20 15:44:58Z hans $
-
- // ----- Constants
- define( 'ARCHIVE_ZIP_READ_BLOCK_SIZE', 2048 );
-
- // ----- File list separator
- define( 'ARCHIVE_ZIP_SEPARATOR', ',' );
-
- // ----- Optional static temporary directory
- // By default temporary files are generated in the script current
- // path.
- // If defined :
- // - MUST BE terminated by a '/'.
- // - MUST be a valid, already created directory
- // Samples :
- // define( 'ARCHIVE_ZIP_TEMPORARY_DIR', '/temp/' );
- // define( 'ARCHIVE_ZIP_TEMPORARY_DIR', 'C:/Temp/' );
- define( 'ARCHIVE_ZIP_TEMPORARY_DIR', '' );
-
- // ----- Error codes
- define( 'ARCHIVE_ZIP_ERR_NO_ERROR', 0 );
- define( 'ARCHIVE_ZIP_ERR_WRITE_OPEN_FAIL', -1 );
- define( 'ARCHIVE_ZIP_ERR_READ_OPEN_FAIL', -2 );
- define( 'ARCHIVE_ZIP_ERR_INVALID_PARAMETER', -3 );
- define( 'ARCHIVE_ZIP_ERR_MISSING_FILE', -4 );
- define( 'ARCHIVE_ZIP_ERR_FILENAME_TOO_LONG', -5 );
- define( 'ARCHIVE_ZIP_ERR_INVALID_ZIP', -6 );
- define( 'ARCHIVE_ZIP_ERR_BAD_EXTRACTED_FILE', -7 );
- define( 'ARCHIVE_ZIP_ERR_DIR_CREATE_FAIL', -8 );
- define( 'ARCHIVE_ZIP_ERR_BAD_EXTENSION', -9 );
- define( 'ARCHIVE_ZIP_ERR_BAD_FORMAT', -10 );
- define( 'ARCHIVE_ZIP_ERR_DELETE_FILE_FAIL', -11 );
- define( 'ARCHIVE_ZIP_ERR_RENAME_FILE_FAIL', -12 );
- define( 'ARCHIVE_ZIP_ERR_BAD_CHECKSUM', -13 );
- define( 'ARCHIVE_ZIP_ERR_INVALID_ARCHIVE_ZIP', -14 );
- define( 'ARCHIVE_ZIP_ERR_MISSING_OPTION_VALUE', -15 );
- define( 'ARCHIVE_ZIP_ERR_INVALID_PARAM_VALUE', -16 );
-
- // ----- Warning codes
- define( 'ARCHIVE_ZIP_WARN_NO_WARNING', 0 );
- define( 'ARCHIVE_ZIP_WARN_FILE_EXIST', 1 );
-
- // ----- Methods parameters
- define( 'ARCHIVE_ZIP_PARAM_PATH', 'path' );
- define( 'ARCHIVE_ZIP_PARAM_ADD_PATH', 'add_path' );
- define( 'ARCHIVE_ZIP_PARAM_REMOVE_PATH', 'remove_path' );
- define( 'ARCHIVE_ZIP_PARAM_REMOVE_ALL_PATH', 'remove_all_path' );
- define( 'ARCHIVE_ZIP_PARAM_SET_CHMOD', 'set_chmod' );
- define( 'ARCHIVE_ZIP_PARAM_EXTRACT_AS_STRING', 'extract_as_string' );
- define( 'ARCHIVE_ZIP_PARAM_NO_COMPRESSION', 'no_compression' );
- define( 'ARCHIVE_ZIP_PARAM_BY_NAME', 'by_name' );
- define( 'ARCHIVE_ZIP_PARAM_BY_INDEX', 'by_index' );
- define( 'ARCHIVE_ZIP_PARAM_BY_EREG', 'by_ereg' );
- define( 'ARCHIVE_ZIP_PARAM_BY_PREG', 'by_preg' );
-
- define( 'ARCHIVE_ZIP_PARAM_PRE_EXTRACT', 'callback_pre_extract' );
- define( 'ARCHIVE_ZIP_PARAM_POST_EXTRACT', 'callback_post_extract' );
- define( 'ARCHIVE_ZIP_PARAM_PRE_ADD', 'callback_pre_add' );
- define( 'ARCHIVE_ZIP_PARAM_POST_ADD', 'callback_post_add' );
-
-
-
-/**
-* Class for manipulating zip archive files
-*
-* A class which provided common methods to manipulate ZIP formatted
-* archive files.
-* It provides creation, extraction, deletion and add features.
-*
-* @author Vincent Blavet
-* @version $Revision: 1.3 $
-* @package phing.lib
-*/
-class Archive_Zip
-{
- /**
- * The filename of the zip archive.
- *
- * @var string Name of the Zip file
- */
- var $_zipname='';
-
- /**
- * File descriptor of the opened Zip file.
- *
- * @var int Internal zip file descriptor
- */
- var $_zip_fd=0;
-
- /**
- * @var int last error code
- */
- var $_error_code=1;
-
- /**
- * @var string Last error description
- */
- var $_error_string='';
-
- // {{{ constructor
- /**
- * Archive_Zip Class constructor. This flavour of the constructor only
- * declare a new Archive_Zip object, identifying it by the name of the
- * zip file.
- *
- * @param string $p_zipname The name of the zip archive to create
- * @access public
- */
- function __construct($p_zipname)
- {
- if (!extension_loaded('zlib')) {
- throw new Exception("The extension 'zlib' couldn't be found.\n".
- "Please make sure your version of PHP was built ".
- "with 'zlib' support.");
- }
-
- // ----- Set the attributes
- $this->_zipname = $p_zipname;
- $this->_zip_fd = 0;
- }
- // }}}
-
- // {{{ create()
- /**
- * This method creates a Zip Archive with the filename set with
- * the constructor.
- * The files and directories indicated in $p_filelist
- * are added in the archive.
- * When a directory is in the list, the directory and its content is added
- * in the archive.
- * The methods takes a variable list of parameters in $p_params.
- * The supported parameters for this method are :
- * 'add_path' : Add a path to the archived files.
- * 'remove_path' : Remove the specified 'root' path of the archived files.
- * 'remove_all_path' : Remove all the path of the archived files.
- * 'no_compression' : The archived files will not be compressed.
- *
- * @access public
- * @param mixed $p_filelist The list of the files or folders to add.
- * It can be a string with filenames separated
- * by a comma, or an array of filenames.
- * @param mixed $p_params An array of variable parameters and values.
- * @return mixed An array of file description on success,
- * an error code on error
- */
- function create($p_filelist, $p_params=0)
- {
- $this->_errorReset();
-
- // ----- Set default values
- if ($p_params === 0) {
- $p_params = array();
- }
- if ($this->_check_parameters($p_params,
- array('no_compression' => false,
- 'add_path' => "",
- 'remove_path' => "",
- 'remove_all_path' => false)) != 1) {
- return 0;
- }
-
- // ----- Look if the $p_filelist is really an array
- $p_result_list = array();
- if (is_array($p_filelist)) {
- $v_result = $this->_create($p_filelist, $p_result_list, $p_params);
- }
-
- // ----- Look if the $p_filelist is a string
- else if (is_string($p_filelist)) {
- // ----- Create a list with the elements from the string
- $v_list = explode(ARCHIVE_ZIP_SEPARATOR, $p_filelist);
-
- $v_result = $this->_create($v_list, $p_result_list, $p_params);
- }
-
- // ----- Invalid variable
- else {
- $this->_errorLog(ARCHIVE_ZIP_ERR_INVALID_PARAMETER,
- 'Invalid variable type p_filelist');
- $v_result = ARCHIVE_ZIP_ERR_INVALID_PARAMETER;
- }
-
- if ($v_result != 1) {
- return 0;
- }
-
- return $p_result_list;
- }
- // }}}
-
- // {{{ add()
- /**
- * This method add files or directory in an existing Zip Archive.
- * If the Zip Archive does not exist it is created.
- * The files and directories to add are indicated in $p_filelist.
- * When a directory is in the list, the directory and its content is added
- * in the archive.
- * The methods takes a variable list of parameters in $p_params.
- * The supported parameters for this method are :
- * 'add_path' : Add a path to the archived files.
- * 'remove_path' : Remove the specified 'root' path of the archived files.
- * 'remove_all_path' : Remove all the path of the archived files.
- * 'no_compression' : The archived files will not be compressed.
- * 'callback_pre_add' : A callback function that will be called before
- * each entry archiving.
- * 'callback_post_add' : A callback function that will be called after
- * each entry archiving.
- *
- * @access public
- * @param mixed $p_filelist The list of the files or folders to add.
- * It can be a string with filenames separated
- * by a comma, or an array of filenames.
- * @param mixed $p_params An array of variable parameters and values.
- * @return mixed An array of file description on success,
- * 0 on an unrecoverable failure, an error code is logged.
- */
- function add($p_filelist, $p_params=0)
- {
- $this->_errorReset();
-
- // ----- Set default values
- if ($p_params === 0) {
- $p_params = array();
- }
- if ($this->_check_parameters($p_params,
- array ('no_compression' => false,
- 'add_path' => '',
- 'remove_path' => '',
- 'remove_all_path' => false,
- 'callback_pre_add' => '',
- 'callback_post_add' => '')) != 1) {
- return 0;
- }
-
- // ----- Look if the $p_filelist is really an array
- $p_result_list = array();
- if (is_array($p_filelist)) {
- // ----- Call the create fct
- $v_result = $this->_add($p_filelist, $p_result_list, $p_params);
- }
-
- // ----- Look if the $p_filelist is a string
- else if (is_string($p_filelist)) {
- // ----- Create a list with the elements from the string
- $v_list = explode(ARCHIVE_ZIP_SEPARATOR, $p_filelist);
-
- // ----- Call the create fct
- $v_result = $this->_add($v_list, $p_result_list, $p_params);
- }
-
- // ----- Invalid variable
- else {
- $this->_errorLog(ARCHIVE_ZIP_ERR_INVALID_PARAMETER,
- "add() : Invalid variable type p_filelist");
- $v_result = ARCHIVE_ZIP_ERR_INVALID_PARAMETER;
- }
-
- if ($v_result != 1) {
- return 0;
- }
-
- // ----- Return the result list
- return $p_result_list;
- }
- // }}}
-
- // {{{ listContent()
- /**
- * This method gives the names and properties of the files and directories
- * which are present in the zip archive.
- * The properties of each entries in the list are :
- * filename : Name of the file.
- * For create() or add() it's the filename given by the user.
- * For an extract() it's the filename of the extracted file.
- * stored_filename : Name of the file / directory stored in the archive.
- * size : Size of the stored file.
- * compressed_size : Size of the file's data compressed in the archive
- * (without the zip headers overhead)
- * mtime : Last known modification date of the file (UNIX timestamp)
- * comment : Comment associated with the file
- * folder : true | false (indicates if the entry is a folder)
- * index : index of the file in the archive (-1 when not available)
- * status : status of the action on the entry (depending of the action) :
- * Values are :
- * ok : OK !
- * filtered : the file/dir was not extracted (filtered by user)
- * already_a_directory : the file can't be extracted because a
- * directory with the same name already
- * exists
- * write_protected : the file can't be extracted because a file
- * with the same name already exists and is
- * write protected
- * newer_exist : the file was not extracted because a newer
- * file already exists
- * path_creation_fail : the file is not extracted because the
- * folder does not exists and can't be
- * created
- * write_error : the file was not extracted because there was a
- * error while writing the file
- * read_error : the file was not extracted because there was a
- * error while reading the file
- * invalid_header : the file was not extracted because of an
- * archive format error (bad file header)
- * Note that each time a method can continue operating when there
- * is an error on a single file, the error is only logged in the file status.
- *
- * @access public
- * @return mixed An array of file description on success,
- * 0 on an unrecoverable failure, an error code is logged.
- */
- function listContent()
- {
- $this->_errorReset();
-
- // ----- Check archive
- if (!$this->_checkFormat()) {
- return(0);
- }
-
- $v_list = array();
- if ($this->_list($v_list) != 1) {
- unset($v_list);
- return(0);
- }
-
- return $v_list;
- }
- // }}}
-
- // {{{ extract()
- /**
- * This method extract the files and folders which are in the zip archive.
- * It can extract all the archive or a part of the archive by using filter
- * feature (extract by name, by index, by ereg, by preg). The extraction
- * can occur in the current path or an other path.
- * All the advanced features are activated by the use of variable
- * parameters.
- * The return value is an array of entry descriptions which gives
- * information on extracted files (See listContent()).
- * The method may return a success value (an array) even if some files
- * are not correctly extracted (see the file status in listContent()).
- * The supported variable parameters for this method are :
- * 'add_path' : Path where the files and directories are to be extracted
- * 'remove_path' : First part ('root' part) of the memorized path
- * (if similar) to remove while extracting.
- * 'remove_all_path' : Remove all the memorized path while extracting.
- * 'extract_as_string' :
- * 'set_chmod' : After the extraction of the file the indicated mode
- * will be set.
- * 'by_name' : It can be a string with file/dir names separated by ',',
- * or an array of file/dir names to extract from the archive.
- * 'by_index' : A string with range of indexes separated by ',',
- * (sample "1,3-5,12").
- * 'by_ereg' : A regular expression (ereg) that must match the extracted
- * filename.
- * 'by_preg' : A regular expression (preg) that must match the extracted
- * filename.
- * 'callback_pre_extract' : A callback function that will be called before
- * each entry extraction.
- * 'callback_post_extract' : A callback function that will be called after
- * each entry extraction.
- *
- * @access public
- * @param mixed $p_params An array of variable parameters and values.
- * @return mixed An array of file description on success,
- * 0 on an unrecoverable failure, an error code is logged.
- */
- function extract($p_params=0)
- {
-
- $this->_errorReset();
-
- // ----- Check archive
- if (!$this->_checkFormat()) {
- return(0);
- }
-
- // ----- Set default values
- if ($p_params === 0) {
- $p_params = array();
- }
- if ($this->_check_parameters($p_params,
- array ('extract_as_string' => false,
- 'add_path' => '',
- 'remove_path' => '',
- 'remove_all_path' => false,
- 'callback_pre_extract' => '',
- 'callback_post_extract' => '',
- 'set_chmod' => 0,
- 'by_name' => '',
- 'by_index' => '',
- 'by_ereg' => '',
- 'by_preg' => '') ) != 1) {
- return 0;
- }
-
- // ----- Call the extracting fct
- $v_list = array();
- if ($this->_extractByRule($v_list, $p_params) != 1) {
- unset($v_list);
- return(0);
- }
-
- return $v_list;
- }
- // }}}
-
-
- // {{{ delete()
- /**
- * This methods delete archive entries in the zip archive.
- * Notice that at least one filtering rule (set by the variable parameter
- * list) must be set.
- * Also notice that if you delete a folder entry, only the folder entry
- * is deleted, not all the files bellonging to this folder.
- * The supported variable parameters for this method are :
- * 'by_name' : It can be a string with file/dir names separated by ',',
- * or an array of file/dir names to delete from the archive.
- * 'by_index' : A string with range of indexes separated by ',',
- * (sample "1,3-5,12").
- * 'by_ereg' : A regular expression (ereg) that must match the extracted
- * filename.
- * 'by_preg' : A regular expression (preg) that must match the extracted
- * filename.
- *
- * @access public
- * @param mixed $p_params An array of variable parameters and values.
- * @return mixed An array of file description on success,
- * 0 on an unrecoverable failure, an error code is logged.
- */
- function delete($p_params)
- {
- $this->_errorReset();
-
- // ----- Check archive
- if (!$this->_checkFormat()) {
- return(0);
- }
-
- // ----- Set default values
- if ($this->_check_parameters($p_params,
- array ('by_name' => '',
- 'by_index' => '',
- 'by_ereg' => '',
- 'by_preg' => '') ) != 1) {
- return 0;
- }
-
- // ----- Check that at least one rule is set
- if ( ($p_params['by_name'] == '')
- && ($p_params['by_index'] == '')
- && ($p_params['by_ereg'] == '')
- && ($p_params['by_preg'] == '')) {
- $this->_errorLog(ARCHIVE_ZIP_ERR_INVALID_PARAMETER,
- 'At least one filtering rule must'
- .' be set as parameter');
- return 0;
- }
-
- // ----- Call the delete fct
- $v_list = array();
- if ($this->_deleteByRule($v_list, $p_params) != 1) {
- unset($v_list);
- return(0);
- }
-
- return $v_list;
- }
- // }}}
-
- // {{{ properties()
- /**
- * This method gives the global properties of the archive.
- * The properties are :
- * nb : Number of files in the archive
- * comment : Comment associated with the archive file
- * status : not_exist, ok
- *
- * @access public
- * @param mixed $p_params {Description}
- * @return mixed An array with the global properties or 0 on error.
- */
- function properties()
- {
- $this->_errorReset();
-
- // ----- Check archive
- if (!$this->_checkFormat()) {
- return(0);
- }
-
- // ----- Default properties
- $v_prop = array();
- $v_prop['comment'] = '';
- $v_prop['nb'] = 0;
- $v_prop['status'] = 'not_exist';
-
- // ----- Look if file exists
- if (@is_file($this->_zipname)) {
- // ----- Open the zip file
- if (($this->_zip_fd = @fopen($this->_zipname, 'rb')) == 0) {
- $this->_errorLog(ARCHIVE_ZIP_ERR_READ_OPEN_FAIL,
- 'Unable to open archive \''.$this->_zipname
- .'\' in binary read mode');
- return 0;
- }
-
- // ----- Read the central directory informations
- $v_central_dir = array();
- if (($v_result = $this->_readEndCentralDir($v_central_dir)) != 1) {
- return 0;
- }
-
- $this->_closeFd();
-
- // ----- Set the user attributes
- $v_prop['comment'] = $v_central_dir['comment'];
- $v_prop['nb'] = $v_central_dir['entries'];
- $v_prop['status'] = 'ok';
- }
-
- return $v_prop;
- }
- // }}}
-
-
- // {{{ duplicate()
- /**
- * This method creates an archive by copying the content of an other one.
- * If the archive already exist, it is replaced by the new one without
- * any warning.
- *
- * @access public
- * @param mixed $p_archive It can be a valid Archive_Zip object or
- * the filename of a valid zip archive.
- * @return integer 1 on success, 0 on failure.
- */
- function duplicate($p_archive)
- {
- $this->_errorReset();
-
- // ----- Look if the $p_archive is a Archive_Zip object
- if ( (is_object($p_archive))
- && (strtolower(get_class($p_archive)) == 'archive_zip')) {
- $v_result = $this->_duplicate($p_archive->_zipname);
- }
-
- // ----- Look if the $p_archive is a string (so a filename)
- else if (is_string($p_archive)) {
- // ----- Check that $p_archive is a valid zip file
- // TBC : Should also check the archive format
- if (!is_file($p_archive)) {
- $this->_errorLog(ARCHIVE_ZIP_ERR_MISSING_FILE,
- "No file with filename '".$p_archive."'");
- $v_result = ARCHIVE_ZIP_ERR_MISSING_FILE;
- }
- else {
- $v_result = $this->_duplicate($p_archive);
- }
- }
-
- // ----- Invalid variable
- else {
- $this->_errorLog(ARCHIVE_ZIP_ERR_INVALID_PARAMETER,
- "Invalid variable type p_archive_to_add");
- $v_result = ARCHIVE_ZIP_ERR_INVALID_PARAMETER;
- }
-
- return $v_result;
- }
- // }}}
-
- // {{{ merge()
- /**
- * This method merge a valid zip archive at the end of the
- * archive identified by the Archive_Zip object.
- * If the archive ($this) does not exist, the merge becomes a duplicate.
- * If the archive to add does not exist, the merge is a success.
- *
- * @access public
- * @param mixed $p_archive_to_add It can be a valid Archive_Zip object or
- * the filename of a valid zip archive.
- * @return integer 1 on success, 0 on failure.
- */
- function merge($p_archive_to_add)
- {
- $v_result = 1;
- $this->_errorReset();
-
- // ----- Check archive
- if (!$this->_checkFormat()) {
- return(0);
- }
-
- // ----- Look if the $p_archive_to_add is a Archive_Zip object
- if ( (is_object($p_archive_to_add))
- && (strtolower(get_class($p_archive_to_add)) == 'archive_zip')) {
- $v_result = $this->_merge($p_archive_to_add);
- }
-
- // ----- Look if the $p_archive_to_add is a string (so a filename)
- else if (is_string($p_archive_to_add)) {
- // ----- Create a temporary archive
- $v_object_archive = new Archive_Zip($p_archive_to_add);
-
- // ----- Merge the archive
- $v_result = $this->_merge($v_object_archive);
- }
-
- // ----- Invalid variable
- else {
- $this->_errorLog(ARCHIVE_ZIP_ERR_INVALID_PARAMETER,
- "Invalid variable type p_archive_to_add");
- $v_result = ARCHIVE_ZIP_ERR_INVALID_PARAMETER;
- }
-
- return $v_result;
- }
- // }}}
-
- // {{{ errorCode()
- /**
- * Method that gives the lastest error code.
- *
- * @access public
- * @return integer The error code value.
- */
- function errorCode()
- {
- return($this->_error_code);
- }
- // }}}
-
- // {{{ errorName()
- /**
- * This method gives the latest error code name.
- *
- * @access public
- * @param boolean $p_with_code If true, gives the name and the int value.
- * @return string The error name.
- */
- function errorName($p_with_code=false)
- {
- $v_const_list = get_defined_constants();
-
- // ----- Extract error constants from all const.
- for (reset($v_const_list);
- list($v_key, $v_value) = each($v_const_list);) {
- if (substr($v_key, 0, strlen('ARCHIVE_ZIP_ERR_'))
- =='ARCHIVE_ZIP_ERR_') {
- $v_error_list[$v_key] = $v_value;
- }
- }
-
- // ----- Search the name form the code value
- $v_key=array_search($this->_error_code, $v_error_list, true);
- if ($v_key!=false) {
- $v_value = $v_key;
- }
- else {
- $v_value = 'NoName';
- }
-
- if ($p_with_code) {
- return($v_value.' ('.$this->_error_code.')');
- }
- else {
- return($v_value);
- }
- }
- // }}}
-
- // {{{ errorInfo()
- /**
- * This method returns the description associated with the latest error.
- *
- * @access public
- * @param boolean $p_full If set to true gives the description with the
- * error code, the name and the description.
- * If set to false gives only the description
- * and the error code.
- * @return string The error description.
- */
- function errorInfo($p_full=false)
- {
- if ($p_full) {
- return($this->errorName(true)." : ".$this->_error_string);
- }
- else {
- return($this->_error_string." [code ".$this->_error_code."]");
- }
- }
- // }}}
-
-
-// -----------------------------------------------------------------------------
-// ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS *****
-// ***** *****
-// ***** THESES FUNCTIONS MUST NOT BE USED DIRECTLY *****
-// -----------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _checkFormat()
- // Description :
- // This method check that the archive exists and is a valid zip archive.
- // Several level of check exists. (futur)
- // Parameters :
- // $p_level : Level of check. Default 0.
- // 0 : Check the first bytes (magic codes) (default value))
- // 1 : 0 + Check the central directory (futur)
- // 2 : 1 + Check each file header (futur)
- // Return Values :
- // true on success,
- // false on error, the error code is set.
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_checkFormat()
- *
- * { Description }
- *
- * @param integer $p_level
- */
- function _checkFormat($p_level=0)
- {
- $v_result = true;
-
- // ----- Reset the error handler
- $this->_errorReset();
-
- // ----- Look if the file exits
- if (!is_file($this->_zipname)) {
- // ----- Error log
- $this->_errorLog(ARCHIVE_ZIP_ERR_MISSING_FILE,
- "Missing archive file '".$this->_zipname."'");
- return(false);
- }
-
- // ----- Check that the file is readeable
- if (!is_readable($this->_zipname)) {
- // ----- Error log
- $this->_errorLog(ARCHIVE_ZIP_ERR_READ_OPEN_FAIL,
- "Unable to read archive '".$this->_zipname."'");
- return(false);
- }
-
- // ----- Check the magic code
- // TBC
-
- // ----- Check the central header
- // TBC
-
- // ----- Check each file header
- // TBC
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _create()
- // Description :
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_create()
- *
- * { Description }
- *
- */
- function _create($p_list, &$p_result_list, &$p_params)
- {
- $v_result=1;
- $v_list_detail = array();
-
- $p_add_dir = $p_params['add_path'];
- $p_remove_dir = $p_params['remove_path'];
- $p_remove_all_dir = $p_params['remove_all_path'];
-
- // ----- Open the file in write mode
- if (($v_result = $this->_openFd('wb')) != 1)
- {
- // ----- Return
- return $v_result;
- }
-
- // ----- Add the list of files
- $v_result = $this->_addList($p_list, $p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_params);
-
- // ----- Close
- $this->_closeFd();
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _add()
- // Description :
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_add()
- *
- * { Description }
- *
- */
- function _add($p_list, &$p_result_list, &$p_params)
- {
- $v_result=1;
- $v_list_detail = array();
-
- $p_add_dir = $p_params['add_path'];
- $p_remove_dir = $p_params['remove_path'];
- $p_remove_all_dir = $p_params['remove_all_path'];
-
- // ----- Look if the archive exists or is empty and need to be created
- if ((!is_file($this->_zipname)) || (filesize($this->_zipname) == 0)) {
- $v_result = $this->_create($p_list, $p_result_list, $p_params);
- return $v_result;
- }
-
- // ----- Open the zip file
- if (($v_result=$this->_openFd('rb')) != 1) {
- return $v_result;
- }
-
- // ----- Read the central directory informations
- $v_central_dir = array();
- if (($v_result = $this->_readEndCentralDir($v_central_dir)) != 1)
- {
- $this->_closeFd();
- return $v_result;
- }
-
- // ----- Go to beginning of File
- @rewind($this->_zip_fd);
-
- // ----- Creates a temporay file
- $v_zip_temp_name = ARCHIVE_ZIP_TEMPORARY_DIR.uniqid('archive_zip-').'.tmp';
-
- // ----- Open the temporary file in write mode
- if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)
- {
- $this->_closeFd();
-
- $this->_errorLog(ARCHIVE_ZIP_ERR_READ_OPEN_FAIL,
- 'Unable to open temporary file \''
- .$v_zip_temp_name.'\' in binary write mode');
- return Archive_Zip::errorCode();
- }
-
- // ----- Copy the files from the archive to the temporary file
- // TBC : Here I should better append the file and go back to erase the
- // central dir
- $v_size = $v_central_dir['offset'];
- while ($v_size != 0)
- {
- $v_read_size = ($v_size < ARCHIVE_ZIP_READ_BLOCK_SIZE
- ? $v_size : ARCHIVE_ZIP_READ_BLOCK_SIZE);
- $v_buffer = fread($this->_zip_fd, $v_read_size);
- @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Swap the file descriptor
- // Here is a trick : I swap the temporary fd with the zip fd, in order to
- // use the following methods on the temporary fil and not the real archive
- $v_swap = $this->_zip_fd;
- $this->_zip_fd = $v_zip_temp_fd;
- $v_zip_temp_fd = $v_swap;
-
- // ----- Add the files
- $v_header_list = array();
- if (($v_result = $this->_addFileList($p_list, $v_header_list,
- $p_add_dir, $p_remove_dir,
- $p_remove_all_dir, $p_params)) != 1)
- {
- fclose($v_zip_temp_fd);
- $this->_closeFd();
- @unlink($v_zip_temp_name);
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Store the offset of the central dir
- $v_offset = @ftell($this->_zip_fd);
-
- // ----- Copy the block of file headers from the old archive
- $v_size = $v_central_dir['size'];
- while ($v_size != 0)
- {
- $v_read_size = ($v_size < ARCHIVE_ZIP_READ_BLOCK_SIZE
- ? $v_size : ARCHIVE_ZIP_READ_BLOCK_SIZE);
- $v_buffer = @fread($v_zip_temp_fd, $v_read_size);
- @fwrite($this->_zip_fd, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Create the Central Dir files header
- for ($i=0, $v_count=0; $i_writeCentralFileHeader($v_header_list[$i]))!=1) {
- fclose($v_zip_temp_fd);
- $this->_closeFd();
- @unlink($v_zip_temp_name);
-
- // ----- Return
- return $v_result;
- }
- $v_count++;
- }
-
- // ----- Transform the header to a 'usable' info
- $this->_convertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
- }
-
- // ----- Zip file comment
- $v_comment = '';
-
- // ----- Calculate the size of the central header
- $v_size = @ftell($this->_zip_fd)-$v_offset;
-
- // ----- Create the central dir footer
- if (($v_result = $this->_writeCentralHeader($v_count
- +$v_central_dir['entries'],
- $v_size, $v_offset,
- $v_comment)) != 1) {
- // ----- Reset the file list
- unset($v_header_list);
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Swap back the file descriptor
- $v_swap = $this->_zip_fd;
- $this->_zip_fd = $v_zip_temp_fd;
- $v_zip_temp_fd = $v_swap;
-
- // ----- Close
- $this->_closeFd();
-
- // ----- Close the temporary file
- @fclose($v_zip_temp_fd);
-
- // ----- Delete the zip file
- // TBC : I should test the result ...
- @unlink($this->_zipname);
-
- // ----- Rename the temporary file
- // TBC : I should test the result ...
- //@rename($v_zip_temp_name, $this->_zipname);
- $this->_tool_Rename($v_zip_temp_name, $this->_zipname);
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _openFd()
- // Description :
- // Parameters :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_openFd()
- *
- * { Description }
- *
- */
- function _openFd($p_mode)
- {
- $v_result=1;
-
- // ----- Look if already open
- if ($this->_zip_fd != 0)
- {
- $this->_errorLog(ARCHIVE_ZIP_ERR_READ_OPEN_FAIL,
- 'Zip file \''.$this->_zipname.'\' already open');
- return Archive_Zip::errorCode();
- }
-
- // ----- Open the zip file
- if (($this->_zip_fd = @fopen($this->_zipname, $p_mode)) == 0)
- {
- $this->_errorLog(ARCHIVE_ZIP_ERR_READ_OPEN_FAIL,
- 'Unable to open archive \''.$this->_zipname
- .'\' in '.$p_mode.' mode');
- return Archive_Zip::errorCode();
- }
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _closeFd()
- // Description :
- // Parameters :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_closeFd()
- *
- * { Description }
- *
- */
- function _closeFd()
- {
- $v_result=1;
-
- if ($this->_zip_fd != 0)
- @fclose($this->_zip_fd);
- $this->_zip_fd = 0;
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _addList()
- // Description :
- // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is
- // different from the real path of the file. This is usefull if you want to have PclTar
- // running in any directory, and memorize relative path from an other directory.
- // Parameters :
- // $p_list : An array containing the file or directory names to add in the tar
- // $p_result_list : list of added files with their properties (specially the status field)
- // $p_add_dir : Path to add in the filename path archived
- // $p_remove_dir : Path to remove in the filename path archived
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_addList()
- *
- * { Description }
- *
- */
- function _addList($p_list, &$p_result_list,
- $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_params)
- {
- $v_result=1;
-
- // ----- Add the files
- $v_header_list = array();
- if (($v_result = $this->_addFileList($p_list, $v_header_list,
- $p_add_dir, $p_remove_dir,
- $p_remove_all_dir, $p_params)) != 1) {
- return $v_result;
- }
-
- // ----- Store the offset of the central dir
- $v_offset = @ftell($this->_zip_fd);
-
- // ----- Create the Central Dir files header
- for ($i=0,$v_count=0; $i_writeCentralFileHeader($v_header_list[$i])) != 1) {
- return $v_result;
- }
- $v_count++;
- }
-
- // ----- Transform the header to a 'usable' info
- $this->_convertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
- }
-
- // ----- Zip file comment
- $v_comment = '';
-
- // ----- Calculate the size of the central header
- $v_size = @ftell($this->_zip_fd)-$v_offset;
-
- // ----- Create the central dir footer
- if (($v_result = $this->_writeCentralHeader($v_count, $v_size, $v_offset,
- $v_comment)) != 1)
- {
- // ----- Reset the file list
- unset($v_header_list);
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _addFileList()
- // Description :
- // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is
- // different from the real path of the file. This is usefull if you want to
- // run the lib in any directory, and memorize relative path from an other directory.
- // Parameters :
- // $p_list : An array containing the file or directory names to add in the tar
- // $p_result_list : list of added files with their properties (specially the status field)
- // $p_add_dir : Path to add in the filename path archived
- // $p_remove_dir : Path to remove in the filename path archived
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_addFileList()
- *
- * { Description }
- *
- */
- function _addFileList($p_list, &$p_result_list,
- $p_add_dir, $p_remove_dir, $p_remove_all_dir,
- &$p_params)
- {
- $v_result=1;
- $v_header = array();
-
- // ----- Recuperate the current number of elt in list
- $v_nb = sizeof($p_result_list);
-
- // ----- Loop on the files
- for ($j=0; ($j_tool_TranslateWinPath($p_list[$j], false);
-
- // ----- Skip empty file names
- if ($p_filename == "")
- {
- continue;
- }
-
- // ----- Check the filename
- if (!file_exists($p_filename))
- {
- $this->_errorLog(ARCHIVE_ZIP_ERR_MISSING_FILE,
- "File '$p_filename' does not exists");
- return Archive_Zip::errorCode();
- }
-
- // ----- Look if it is a file or a dir with no all pathnre move
- if ((is_file($p_filename)) || ((is_dir($p_filename)) && !$p_remove_all_dir)) {
- // ----- Add the file
- if (($v_result = $this->_addFile($p_filename, $v_header, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_params)) != 1)
- {
- // ----- Return status
- return $v_result;
- }
-
- // ----- Store the file infos
- $p_result_list[$v_nb++] = $v_header;
- }
-
- // ----- Look for directory
- if (is_dir($p_filename))
- {
-
- // ----- Look for path
- if ($p_filename != ".")
- $v_path = $p_filename."/";
- else
- $v_path = "";
-
- // ----- Read the directory for files and sub-directories
- $p_hdir = opendir($p_filename);
- $p_hitem = readdir($p_hdir); // '.' directory
- $p_hitem = readdir($p_hdir); // '..' directory
- while ($p_hitem = readdir($p_hdir))
- {
-
- // ----- Look for a file
- if (is_file($v_path.$p_hitem))
- {
-
- // ----- Add the file
- if (($v_result = $this->_addFile($v_path.$p_hitem, $v_header, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_params)) != 1)
- {
- // ----- Return status
- return $v_result;
- }
-
- // ----- Store the file infos
- $p_result_list[$v_nb++] = $v_header;
- }
-
- // ----- Recursive call to _addFileList()
- else
- {
-
- // ----- Need an array as parameter
- $p_temp_list[0] = $v_path.$p_hitem;
- $v_result = $this->_addFileList($p_temp_list, $p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, $p_params);
-
- // ----- Update the number of elements of the list
- $v_nb = sizeof($p_result_list);
- }
- }
-
- // ----- Free memory for the recursive loop
- unset($p_temp_list);
- unset($p_hdir);
- unset($p_hitem);
- }
- }
-
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _addFile()
- // Description :
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_addFile()
- *
- * { Description }
- *
- */
- function _addFile($p_filename, &$p_header, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_params)
- {
- $v_result=1;
-
- if ($p_filename == "")
- {
- // ----- Error log
- $this->_errorLog(ARCHIVE_ZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)");
-
- // ----- Return
- return Archive_Zip::errorCode();
- }
-
- // ----- Calculate the stored filename
- $v_stored_filename = $p_filename;
-
- // ----- Look for all path to remove
- if ($p_remove_all_dir) {
- $v_stored_filename = basename($p_filename);
- }
- // ----- Look for partial path remove
- else if ($p_remove_dir != "")
- {
- $p_remove_dir = $this->_tool_TranslateWinPath($p_remove_dir, false);
-
- if (substr($p_remove_dir, -1) != '/')
- $p_remove_dir .= "/";
-
- if ((substr($p_filename, 0, 2) == "./") || (substr($p_remove_dir, 0, 2) == "./"))
- {
- if ((substr($p_filename, 0, 2) == "./") && (substr($p_remove_dir, 0, 2) != "./"))
- $p_remove_dir = "./".$p_remove_dir;
- if ((substr($p_filename, 0, 2) != "./") && (substr($p_remove_dir, 0, 2) == "./"))
- $p_remove_dir = substr($p_remove_dir, 2);
- }
-
- $v_compare = $this->_tool_PathInclusion($p_remove_dir, $p_filename);
- if ($v_compare > 0)
-// if (substr($p_filename, 0, strlen($p_remove_dir)) == $p_remove_dir)
- {
-
- if ($v_compare == 2) {
- $v_stored_filename = "";
- }
- else {
- $v_stored_filename = substr($p_filename, strlen($p_remove_dir));
- }
- }
- }
- // ----- Look for path to add
- if ($p_add_dir != "")
- {
- if (substr($p_add_dir, -1) == "/")
- $v_stored_filename = $p_add_dir.$v_stored_filename;
- else
- $v_stored_filename = $p_add_dir."/".$v_stored_filename;
- }
-
- // ----- Filename (reduce the path of stored name)
- $v_stored_filename = $this->_tool_PathReduction($v_stored_filename);
-
-
- /* filename length moved after call-back in release 1.3
- // ----- Check the path length
- if (strlen($v_stored_filename) > 0xFF)
- {
- // ----- Error log
- $this->_errorLog(-5, "Stored file name is too long (max. 255) : '$v_stored_filename'");
-
- // ----- Return
- return Archive_Zip::errorCode();
- }
- */
-
- // ----- Set the file properties
- clearstatcache();
- $p_header['version'] = 20;
- $p_header['version_extracted'] = 10;
- $p_header['flag'] = 0;
- $p_header['compression'] = 0;
- $p_header['mtime'] = filemtime($p_filename);
- $p_header['crc'] = 0;
- $p_header['compressed_size'] = 0;
- $p_header['size'] = filesize($p_filename);
- $p_header['filename_len'] = strlen($p_filename);
- $p_header['extra_len'] = 0;
- $p_header['comment_len'] = 0;
- $p_header['disk'] = 0;
- $p_header['internal'] = 0;
- $p_header['external'] = (is_file($p_filename)?0xFE49FFE0:0x41FF0010);
- $p_header['offset'] = 0;
- $p_header['filename'] = $p_filename;
- $p_header['stored_filename'] = $v_stored_filename;
- $p_header['extra'] = '';
- $p_header['comment'] = '';
- $p_header['status'] = 'ok';
- $p_header['index'] = -1;
-
- // ----- Look for pre-add callback
- if ( (isset($p_params[ARCHIVE_ZIP_PARAM_PRE_ADD]))
- && ($p_params[ARCHIVE_ZIP_PARAM_PRE_ADD] != '')) {
-
- // ----- Generate a local information
- $v_local_header = array();
- $this->_convertHeader2FileInfo($p_header, $v_local_header);
-
- // ----- Call the callback
- // Here I do not use call_user_func() because I need to send a reference to the
- // header.
- eval('$v_result = '.$p_params[ARCHIVE_ZIP_PARAM_PRE_ADD].'(ARCHIVE_ZIP_PARAM_PRE_ADD, $v_local_header);');
- if ($v_result == 0) {
- // ----- Change the file status
- $p_header['status'] = "skipped";
- $v_result = 1;
- }
-
- // ----- Update the informations
- // Only some fields can be modified
- if ($p_header['stored_filename'] != $v_local_header['stored_filename']) {
- $p_header['stored_filename'] = $this->_tool_PathReduction($v_local_header['stored_filename']);
- }
- }
-
- // ----- Look for empty stored filename
- if ($p_header['stored_filename'] == "") {
- $p_header['status'] = "filtered";
- }
-
- // ----- Check the path length
- if (strlen($p_header['stored_filename']) > 0xFF) {
- $p_header['status'] = 'filename_too_long';
- }
-
- // ----- Look if no error, or file not skipped
- if ($p_header['status'] == 'ok') {
-
- // ----- Look for a file
- if (is_file($p_filename))
- {
- // ----- Open the source file
- if (($v_file = @fopen($p_filename, "rb")) == 0) {
- $this->_errorLog(ARCHIVE_ZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode");
- return Archive_Zip::errorCode();
- }
-
- if ($p_params['no_compression']) {
- // ----- Read the file content
- $v_content_compressed = @fread($v_file, $p_header['size']);
-
- // ----- Calculate the CRC
- $p_header['crc'] = crc32($v_content_compressed);
- }
- else {
- // ----- Read the file content
- $v_content = @fread($v_file, $p_header['size']);
-
- // ----- Calculate the CRC
- $p_header['crc'] = crc32($v_content);
-
- // ----- Compress the file
- $v_content_compressed = gzdeflate($v_content);
- }
-
- // ----- Set header parameters
- $p_header['compressed_size'] = strlen($v_content_compressed);
- $p_header['compression'] = 8;
-
- // ----- Call the header generation
- if (($v_result = $this->_writeFileHeader($p_header)) != 1) {
- @fclose($v_file);
- return $v_result;
- }
-
- // ----- Write the compressed content
- $v_binary_data = pack('a'.$p_header['compressed_size'], $v_content_compressed);
- @fwrite($this->_zip_fd, $v_binary_data, $p_header['compressed_size']);
-
- // ----- Close the file
- @fclose($v_file);
- }
-
- // ----- Look for a directory
- else
- {
- // ----- Set the file properties
- $p_header['filename'] .= '/';
- $p_header['filename_len']++;
- $p_header['size'] = 0;
- $p_header['external'] = 0x41FF0010; // Value for a folder : to be checked
-
- // ----- Call the header generation
- if (($v_result = $this->_writeFileHeader($p_header)) != 1)
- {
- return $v_result;
- }
- }
- }
-
- // ----- Look for pre-add callback
- if ( (isset($p_params[ARCHIVE_ZIP_PARAM_POST_ADD]))
- && ($p_params[ARCHIVE_ZIP_PARAM_POST_ADD] != '')) {
-
- // ----- Generate a local information
- $v_local_header = array();
- $this->_convertHeader2FileInfo($p_header, $v_local_header);
-
- // ----- Call the callback
- // Here I do not use call_user_func() because I need to send a reference to the
- // header.
- eval('$v_result = '.$p_params[ARCHIVE_ZIP_PARAM_POST_ADD].'(ARCHIVE_ZIP_PARAM_POST_ADD, $v_local_header);');
- if ($v_result == 0) {
- // ----- Ignored
- $v_result = 1;
- }
-
- // ----- Update the informations
- // Nothing can be modified
- }
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _writeFileHeader()
- // Description :
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_writeFileHeader()
- *
- * { Description }
- *
- */
- function _writeFileHeader(&$p_header)
- {
- $v_result=1;
-
- // TBC
- //for(reset($p_header); $key = key($p_header); next($p_header)) {
- //}
-
- // ----- Store the offset position of the file
- $p_header['offset'] = ftell($this->_zip_fd);
-
- // ----- Transform UNIX mtime to DOS format mdate/mtime
- $v_date = getdate($p_header['mtime']);
- $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;
- $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];
-
- // ----- Packed data
- $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50, $p_header['version'], $p_header['flag'],
- $p_header['compression'], $v_mtime, $v_mdate,
- $p_header['crc'], $p_header['compressed_size'], $p_header['size'],
- strlen($p_header['stored_filename']), $p_header['extra_len']);
-
- // ----- Write the first 148 bytes of the header in the archive
- fputs($this->_zip_fd, $v_binary_data, 30);
-
- // ----- Write the variable fields
- if (strlen($p_header['stored_filename']) != 0)
- {
- fputs($this->_zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename']));
- }
- if ($p_header['extra_len'] != 0)
- {
- fputs($this->_zip_fd, $p_header['extra'], $p_header['extra_len']);
- }
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _writeCentralFileHeader()
- // Description :
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_writeCentralFileHeader()
- *
- * { Description }
- *
- */
- function _writeCentralFileHeader(&$p_header)
- {
- $v_result=1;
-
- // TBC
- //for(reset($p_header); $key = key($p_header); next($p_header)) {
- //}
-
- // ----- Transform UNIX mtime to DOS format mdate/mtime
- $v_date = getdate($p_header['mtime']);
- $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;
- $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];
-
- // ----- Packed data
- $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50, $p_header['version'], $p_header['version_extracted'],
- $p_header['flag'], $p_header['compression'], $v_mtime, $v_mdate, $p_header['crc'],
- $p_header['compressed_size'], $p_header['size'],
- strlen($p_header['stored_filename']), $p_header['extra_len'], $p_header['comment_len'],
- $p_header['disk'], $p_header['internal'], $p_header['external'], $p_header['offset']);
-
- // ----- Write the 42 bytes of the header in the zip file
- fputs($this->_zip_fd, $v_binary_data, 46);
-
- // ----- Write the variable fields
- if (strlen($p_header['stored_filename']) != 0)
- {
- fputs($this->_zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename']));
- }
- if ($p_header['extra_len'] != 0)
- {
- fputs($this->_zip_fd, $p_header['extra'], $p_header['extra_len']);
- }
- if ($p_header['comment_len'] != 0)
- {
- fputs($this->_zip_fd, $p_header['comment'], $p_header['comment_len']);
- }
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _writeCentralHeader()
- // Description :
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_writeCentralHeader()
- *
- * { Description }
- *
- */
- function _writeCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment)
- {
- $v_result=1;
-
- // ----- Packed data
- $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries, $p_nb_entries, $p_size, $p_offset, strlen($p_comment));
-
- // ----- Write the 22 bytes of the header in the zip file
- fputs($this->_zip_fd, $v_binary_data, 22);
-
- // ----- Write the variable fields
- if (strlen($p_comment) != 0)
- {
- fputs($this->_zip_fd, $p_comment, strlen($p_comment));
- }
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _list()
- // Description :
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_list()
- *
- * { Description }
- *
- */
- function _list(&$p_list)
- {
- $v_result=1;
-
- // ----- Open the zip file
- if (($this->_zip_fd = @fopen($this->_zipname, 'rb')) == 0)
- {
- // ----- Error log
- $this->_errorLog(ARCHIVE_ZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->_zipname.'\' in binary read mode');
-
- // ----- Return
- return Archive_Zip::errorCode();
- }
-
- // ----- Read the central directory informations
- $v_central_dir = array();
- if (($v_result = $this->_readEndCentralDir($v_central_dir)) != 1)
- {
- return $v_result;
- }
-
- // ----- Go to beginning of Central Dir
- @rewind($this->_zip_fd);
- if (@fseek($this->_zip_fd, $v_central_dir['offset']))
- {
- // ----- Error log
- $this->_errorLog(ARCHIVE_ZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
-
- // ----- Return
- return Archive_Zip::errorCode();
- }
-
- // ----- Read each entry
- for ($i=0; $i<$v_central_dir['entries']; $i++)
- {
- // ----- Read the file header
- if (($v_result = $this->_readCentralFileHeader($v_header)) != 1)
- {
- return $v_result;
- }
- $v_header['index'] = $i;
-
- // ----- Get the only interesting attributes
- $this->_convertHeader2FileInfo($v_header, $p_list[$i]);
- unset($v_header);
- }
-
- // ----- Close the zip file
- $this->_closeFd();
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _convertHeader2FileInfo()
- // Description :
- // This function takes the file informations from the central directory
- // entries and extract the interesting parameters that will be given back.
- // The resulting file infos are set in the array $p_info
- // $p_info['filename'] : Filename with full path. Given by user (add),
- // extracted in the filesystem (extract).
- // $p_info['stored_filename'] : Stored filename in the archive.
- // $p_info['size'] = Size of the file.
- // $p_info['compressed_size'] = Compressed size of the file.
- // $p_info['mtime'] = Last modification date of the file.
- // $p_info['comment'] = Comment associated with the file.
- // $p_info['folder'] = true/false : indicates if the entry is a folder or not.
- // $p_info['status'] = status of the action on the file.
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_convertHeader2FileInfo()
- *
- * { Description }
- *
- */
- function _convertHeader2FileInfo($p_header, &$p_info)
- {
- $v_result=1;
-
- // ----- Get the interesting attributes
- $p_info['filename'] = $p_header['filename'];
- $p_info['stored_filename'] = $p_header['stored_filename'];
- $p_info['size'] = $p_header['size'];
- $p_info['compressed_size'] = $p_header['compressed_size'];
- $p_info['mtime'] = $p_header['mtime'];
- $p_info['comment'] = $p_header['comment'];
- $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010);
- $p_info['index'] = $p_header['index'];
- $p_info['status'] = $p_header['status'];
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _extractByRule()
- // Description :
- // Extract a file or directory depending of rules (by index, by name, ...)
- // Parameters :
- // $p_file_list : An array where will be placed the properties of each
- // extracted file
- // $p_path : Path to add while writing the extracted files
- // $p_remove_path : Path to remove (from the file memorized path) while writing the
- // extracted files. If the path does not match the file path,
- // the file is extracted with its memorized path.
- // $p_remove_path does not apply to 'list' mode.
- // $p_path and $p_remove_path are commulative.
- // Return Values :
- // 1 on success,0 or less on error (see error code list)
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_extractByRule()
- *
- * { Description }
- *
- */
- function _extractByRule(&$p_file_list, &$p_params)
- {
- $v_result=1;
-
- $p_path = $p_params['add_path'];
- $p_remove_path = $p_params['remove_path'];
- $p_remove_all_path = $p_params['remove_all_path'];
-
- // ----- Check the path
- if (($p_path == "")
- || ((substr($p_path, 0, 1) != "/")
- && (substr($p_path, 0, 3) != "../") && (substr($p_path,1,2)!=":/")))
- $p_path = "./".$p_path;
-
- // ----- Reduce the path last (and duplicated) '/'
- if (($p_path != "./") && ($p_path != "/")) {
- // ----- Look for the path end '/'
- while (substr($p_path, -1) == "/") {
- $p_path = substr($p_path, 0, strlen($p_path)-1);
- }
- }
-
- // ----- Look for path to remove format (should end by /)
- if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/')) {
- $p_remove_path .= '/';
- }
- $p_remove_path_size = strlen($p_remove_path);
-
- // ----- Open the zip file
- if (($v_result = $this->_openFd('rb')) != 1)
- {
- return $v_result;
- }
-
- // ----- Read the central directory informations
- $v_central_dir = array();
- if (($v_result = $this->_readEndCentralDir($v_central_dir)) != 1)
- {
- // ----- Close the zip file
- $this->_closeFd();
-
- return $v_result;
- }
-
- // ----- Start at beginning of Central Dir
- $v_pos_entry = $v_central_dir['offset'];
-
- // ----- Read each entry
- $j_start = 0;
- for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) {
- // ----- Read next Central dir entry
- @rewind($this->_zip_fd);
- if (@fseek($this->_zip_fd, $v_pos_entry)) {
- $this->_closeFd();
-
- $this->_errorLog(ARCHIVE_ZIP_ERR_INVALID_ARCHIVE_ZIP,
- 'Invalid archive size');
-
- return Archive_Zip::errorCode();
- }
-
- // ----- Read the file header
- $v_header = array();
- if (($v_result = $this->_readCentralFileHeader($v_header)) != 1) {
- $this->_closeFd();
-
- return $v_result;
- }
-
- // ----- Store the index
- $v_header['index'] = $i;
-
- // ----- Store the file position
- $v_pos_entry = ftell($this->_zip_fd);
-
- // ----- Look for the specific extract rules
- $v_extract = false;
-
- // ----- Look for extract by name rule
- if ( (isset($p_params[ARCHIVE_ZIP_PARAM_BY_NAME]))
- && ($p_params[ARCHIVE_ZIP_PARAM_BY_NAME] != 0)) {
-
- // ----- Look if the filename is in the list
- for ($j=0;
- ($j strlen($p_params[ARCHIVE_ZIP_PARAM_BY_NAME][$j]))
- && (substr($v_header['stored_filename'], 0, strlen($p_params[ARCHIVE_ZIP_PARAM_BY_NAME][$j])) == $p_params[ARCHIVE_ZIP_PARAM_BY_NAME][$j])) {
- $v_extract = true;
- }
- }
- // ----- Look for a filename
- elseif ($v_header['stored_filename'] == $p_params[ARCHIVE_ZIP_PARAM_BY_NAME][$j]) {
- $v_extract = true;
- }
- }
- }
-
- // ----- Look for extract by ereg rule
- else if ( (isset($p_params[ARCHIVE_ZIP_PARAM_BY_EREG]))
- && ($p_params[ARCHIVE_ZIP_PARAM_BY_EREG] != "")) {
-
- if (ereg($p_params[ARCHIVE_ZIP_PARAM_BY_EREG], $v_header['stored_filename'])) {
- $v_extract = true;
- }
- }
-
- // ----- Look for extract by preg rule
- else if ( (isset($p_params[ARCHIVE_ZIP_PARAM_BY_PREG]))
- && ($p_params[ARCHIVE_ZIP_PARAM_BY_PREG] != "")) {
-
- if (preg_match($p_params[ARCHIVE_ZIP_PARAM_BY_PREG], $v_header['stored_filename'])) {
- $v_extract = true;
- }
- }
-
- // ----- Look for extract by index rule
- else if ( (isset($p_params[ARCHIVE_ZIP_PARAM_BY_INDEX]))
- && ($p_params[ARCHIVE_ZIP_PARAM_BY_INDEX] != 0)) {
-
- // ----- Look if the index is in the list
- for ($j=$j_start; ($j=$p_params[ARCHIVE_ZIP_PARAM_BY_INDEX][$j]['start']) && ($i<=$p_params[ARCHIVE_ZIP_PARAM_BY_INDEX][$j]['end'])) {
- $v_extract = true;
- }
- if ($i>=$p_params[ARCHIVE_ZIP_PARAM_BY_INDEX][$j]['end']) {
- $j_start = $j+1;
- }
-
- if ($p_params[ARCHIVE_ZIP_PARAM_BY_INDEX][$j]['start']>$i) {
- break;
- }
- }
- }
-
- // ----- Look for no rule, which means extract all the archive
- else {
- $v_extract = true;
- }
-
-
- // ----- Look for real extraction
- if ($v_extract)
- {
-
- // ----- Go to the file position
- @rewind($this->_zip_fd);
- if (@fseek($this->_zip_fd, $v_header['offset']))
- {
- // ----- Close the zip file
- $this->_closeFd();
-
- // ----- Error log
- $this->_errorLog(ARCHIVE_ZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
-
- // ----- Return
- return Archive_Zip::errorCode();
- }
-
- // ----- Look for extraction as string
- if ($p_params[ARCHIVE_ZIP_PARAM_EXTRACT_AS_STRING]) {
-
- // ----- Extracting the file
- if (($v_result = $this->_extractFileAsString($v_header, $v_string)) != 1)
- {
- // ----- Close the zip file
- $this->_closeFd();
-
- return $v_result;
- }
-
- // ----- Get the only interesting attributes
- if (($v_result = $this->_convertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1)
- {
- // ----- Close the zip file
- $this->_closeFd();
-
- return $v_result;
- }
-
- // ----- Set the file content
- $p_file_list[$v_nb_extracted]['content'] = $v_string;
-
- // ----- Next extracted file
- $v_nb_extracted++;
- }
- else {
- // ----- Extracting the file
- if (($v_result = $this->_extractFile($v_header, $p_path, $p_remove_path, $p_remove_all_path, $p_params)) != 1)
- {
- // ----- Close the zip file
- $this->_closeFd();
-
- return $v_result;
- }
-
- // ----- Get the only interesting attributes
- if (($v_result = $this->_convertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1)
- {
- // ----- Close the zip file
- $this->_closeFd();
-
- return $v_result;
- }
- }
- }
- }
-
- // ----- Close the zip file
- $this->_closeFd();
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _extractFile()
- // Description :
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_extractFile()
- *
- * { Description }
- *
- */
- function _extractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_params)
- {
- $v_result=1;
-
- // ----- Read the file header
- if (($v_result = $this->_readFileHeader($v_header)) != 1)
- {
- // ----- Return
- return $v_result;
- }
-
-
- // ----- Check that the file header is coherent with $p_entry info
- // TBC
-
- // ----- Look for all path to remove
- if ($p_remove_all_path == true) {
- // ----- Get the basename of the path
- $p_entry['filename'] = basename($p_entry['filename']);
- }
-
- // ----- Look for path to remove
- else if ($p_remove_path != "")
- {
- //if (strcmp($p_remove_path, $p_entry['filename'])==0)
- if ($this->_tool_PathInclusion($p_remove_path, $p_entry['filename']) == 2)
- {
-
- // ----- Change the file status
- $p_entry['status'] = "filtered";
-
- // ----- Return
- return $v_result;
- }
-
- $p_remove_path_size = strlen($p_remove_path);
- if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path)
- {
-
- // ----- Remove the path
- $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size);
-
- }
- }
-
- // ----- Add the path
- if ($p_path != '')
- {
- $p_entry['filename'] = $p_path."/".$p_entry['filename'];
- }
-
- // ----- Look for pre-extract callback
- if ( (isset($p_params[ARCHIVE_ZIP_PARAM_PRE_EXTRACT]))
- && ($p_params[ARCHIVE_ZIP_PARAM_PRE_EXTRACT] != '')) {
-
- // ----- Generate a local information
- $v_local_header = array();
- $this->_convertHeader2FileInfo($p_entry, $v_local_header);
-
- // ----- Call the callback
- // Here I do not use call_user_func() because I need to send a reference to the
- // header.
- eval('$v_result = '.$p_params[ARCHIVE_ZIP_PARAM_PRE_EXTRACT].'(ARCHIVE_ZIP_PARAM_PRE_EXTRACT, $v_local_header);');
- if ($v_result == 0) {
- // ----- Change the file status
- $p_entry['status'] = "skipped";
- $v_result = 1;
- }
-
- // ----- Update the informations
- // Only some fields can be modified
- $p_entry['filename'] = $v_local_header['filename'];
- }
-
- // ----- Trace
-
- // ----- Look if extraction should be done
- if ($p_entry['status'] == 'ok') {
-
- // ----- Look for specific actions while the file exist
- if (file_exists($p_entry['filename']))
- {
-
- // ----- Look if file is a directory
- if (is_dir($p_entry['filename']))
- {
-
- // ----- Change the file status
- $p_entry['status'] = "already_a_directory";
-
- // ----- Return
- //return $v_result;
- }
- // ----- Look if file is write protected
- else if (!is_writeable($p_entry['filename']))
- {
-
- // ----- Change the file status
- $p_entry['status'] = "write_protected";
-
- // ----- Return
- //return $v_result;
- }
-
- // ----- Look if the extracted file is older
- else if (filemtime($p_entry['filename']) > $p_entry['mtime'])
- {
-
- // ----- Change the file status
- $p_entry['status'] = "newer_exist";
-
- // ----- Return
- //return $v_result;
- }
- }
-
- // ----- Check the directory availability and create it if necessary
- else {
- if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/'))
- $v_dir_to_check = $p_entry['filename'];
- else if (!strstr($p_entry['filename'], "/"))
- $v_dir_to_check = "";
- else
- $v_dir_to_check = dirname($p_entry['filename']);
-
- if (($v_result = $this->_dirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) {
-
- // ----- Change the file status
- $p_entry['status'] = "path_creation_fail";
-
- // ----- Return
- //return $v_result;
- $v_result = 1;
- }
- }
- }
-
- // ----- Look if extraction should be done
- if ($p_entry['status'] == 'ok') {
-
- // ----- Do the extraction (if not a folder)
- if (!(($p_entry['external']&0x00000010)==0x00000010))
- {
-
- // ----- Look for not compressed file
- if ($p_entry['compressed_size'] == $p_entry['size'])
- {
-
- // ----- Opening destination file
- if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0)
- {
-
- // ----- Change the file status
- $p_entry['status'] = "write_error";
-
- // ----- Return
- return $v_result;
- }
-
-
- // ----- Read the file by ARCHIVE_ZIP_READ_BLOCK_SIZE octets blocks
- $v_size = $p_entry['compressed_size'];
- while ($v_size != 0)
- {
- $v_read_size = ($v_size < ARCHIVE_ZIP_READ_BLOCK_SIZE ? $v_size : ARCHIVE_ZIP_READ_BLOCK_SIZE);
- $v_buffer = fread($this->_zip_fd, $v_read_size);
- $v_binary_data = pack('a'.$v_read_size, $v_buffer);
- @fwrite($v_dest_file, $v_binary_data, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Closing the destination file
- fclose($v_dest_file);
-
- // ----- Change the file mtime
- touch($p_entry['filename'], $p_entry['mtime']);
- }
- else
- {
- // ----- Trace
-
- // ----- Opening destination file
- if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) {
-
- // ----- Change the file status
- $p_entry['status'] = "write_error";
-
- return $v_result;
- }
-
-
- // ----- Read the compressed file in a buffer (one shot)
- $v_buffer = @fread($this->_zip_fd, $p_entry['compressed_size']);
-
- // ----- Decompress the file
- $v_file_content = gzinflate($v_buffer);
- unset($v_buffer);
-
- // ----- Write the uncompressed data
- @fwrite($v_dest_file, $v_file_content, $p_entry['size']);
- unset($v_file_content);
-
- // ----- Closing the destination file
- @fclose($v_dest_file);
-
- // ----- Change the file mtime
- touch($p_entry['filename'], $p_entry['mtime']);
- }
-
- // ----- Look for chmod option
- if ( (isset($p_params[ARCHIVE_ZIP_PARAM_SET_CHMOD]))
- && ($p_params[ARCHIVE_ZIP_PARAM_SET_CHMOD] != 0)) {
-
- // ----- Change the mode of the file
- chmod($p_entry['filename'], $p_params[ARCHIVE_ZIP_PARAM_SET_CHMOD]);
- }
-
- }
- }
-
- // ----- Look for post-extract callback
- if ( (isset($p_params[ARCHIVE_ZIP_PARAM_POST_EXTRACT]))
- && ($p_params[ARCHIVE_ZIP_PARAM_POST_EXTRACT] != '')) {
-
- // ----- Generate a local information
- $v_local_header = array();
- $this->_convertHeader2FileInfo($p_entry, $v_local_header);
-
- // ----- Call the callback
- // Here I do not use call_user_func() because I need to send a reference to the
- // header.
- eval('$v_result = '.$p_params[ARCHIVE_ZIP_PARAM_POST_EXTRACT].'(ARCHIVE_ZIP_PARAM_POST_EXTRACT, $v_local_header);');
- }
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _extractFileAsString()
- // Description :
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_extractFileAsString()
- *
- * { Description }
- *
- */
- function _extractFileAsString(&$p_entry, &$p_string)
- {
- $v_result=1;
-
- // ----- Read the file header
- $v_header = array();
- if (($v_result = $this->_readFileHeader($v_header)) != 1)
- {
- // ----- Return
- return $v_result;
- }
-
-
- // ----- Check that the file header is coherent with $p_entry info
- // TBC
-
- // ----- Trace
-
- // ----- Do the extraction (if not a folder)
- if (!(($p_entry['external']&0x00000010)==0x00000010))
- {
- // ----- Look for not compressed file
- if ($p_entry['compressed_size'] == $p_entry['size'])
- {
- // ----- Trace
-
- // ----- Reading the file
- $p_string = fread($this->_zip_fd, $p_entry['compressed_size']);
- }
- else
- {
- // ----- Trace
-
- // ----- Reading the file
- $v_data = fread($this->_zip_fd, $p_entry['compressed_size']);
-
- // ----- Decompress the file
- $p_string = gzinflate($v_data);
- }
-
- // ----- Trace
- }
- else {
- // TBC : error : can not extract a folder in a string
- }
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _readFileHeader()
- // Description :
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_readFileHeader()
- *
- * { Description }
- *
- */
- function _readFileHeader(&$p_header)
- {
- $v_result=1;
-
- // ----- Read the 4 bytes signature
- $v_binary_data = @fread($this->_zip_fd, 4);
- $v_data = unpack('Vid', $v_binary_data);
-
- // ----- Check signature
- if ($v_data['id'] != 0x04034b50)
- {
-
- // ----- Error log
- $this->_errorLog(ARCHIVE_ZIP_ERR_BAD_FORMAT, 'Invalid archive structure');
-
- // ----- Return
- return Archive_Zip::errorCode();
- }
-
- // ----- Read the first 42 bytes of the header
- $v_binary_data = fread($this->_zip_fd, 26);
-
- // ----- Look for invalid block size
- if (strlen($v_binary_data) != 26)
- {
- $p_header['filename'] = "";
- $p_header['status'] = "invalid_header";
-
- // ----- Error log
- $this->_errorLog(ARCHIVE_ZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data));
-
- // ----- Return
- return Archive_Zip::errorCode();
- }
-
- // ----- Extract the values
- $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data);
-
- // ----- Get filename
- $p_header['filename'] = fread($this->_zip_fd, $v_data['filename_len']);
-
- // ----- Get extra_fields
- if ($v_data['extra_len'] != 0) {
- $p_header['extra'] = fread($this->_zip_fd, $v_data['extra_len']);
- }
- else {
- $p_header['extra'] = '';
- }
-
- // ----- Extract properties
- $p_header['compression'] = $v_data['compression'];
- $p_header['size'] = $v_data['size'];
- $p_header['compressed_size'] = $v_data['compressed_size'];
- $p_header['crc'] = $v_data['crc'];
- $p_header['flag'] = $v_data['flag'];
-
- // ----- Recuperate date in UNIX format
- $p_header['mdate'] = $v_data['mdate'];
- $p_header['mtime'] = $v_data['mtime'];
- if ($p_header['mdate'] && $p_header['mtime'])
- {
- // ----- Extract time
- $v_hour = ($p_header['mtime'] & 0xF800) >> 11;
- $v_minute = ($p_header['mtime'] & 0x07E0) >> 5;
- $v_seconde = ($p_header['mtime'] & 0x001F)*2;
-
- // ----- Extract date
- $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980;
- $v_month = ($p_header['mdate'] & 0x01E0) >> 5;
- $v_day = $p_header['mdate'] & 0x001F;
-
- // ----- Get UNIX date format
- $p_header['mtime'] = mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
-
- }
- else
- {
- $p_header['mtime'] = time();
- }
-
- // ----- Other informations
-
- // TBC
- //for(reset($v_data); $key = key($v_data); next($v_data)) {
- //}
-
- // ----- Set the stored filename
- $p_header['stored_filename'] = $p_header['filename'];
-
- // ----- Set the status field
- $p_header['status'] = "ok";
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _readCentralFileHeader()
- // Description :
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_readCentralFileHeader()
- *
- * { Description }
- *
- */
- function _readCentralFileHeader(&$p_header)
- {
- $v_result=1;
-
- // ----- Read the 4 bytes signature
- $v_binary_data = @fread($this->_zip_fd, 4);
- $v_data = unpack('Vid', $v_binary_data);
-
- // ----- Check signature
- if ($v_data['id'] != 0x02014b50)
- {
-
- // ----- Error log
- $this->_errorLog(ARCHIVE_ZIP_ERR_BAD_FORMAT, 'Invalid archive structure');
-
- // ----- Return
- return Archive_Zip::errorCode();
- }
-
- // ----- Read the first 42 bytes of the header
- $v_binary_data = fread($this->_zip_fd, 42);
-
- // ----- Look for invalid block size
- if (strlen($v_binary_data) != 42)
- {
- $p_header['filename'] = "";
- $p_header['status'] = "invalid_header";
-
- // ----- Error log
- $this->_errorLog(ARCHIVE_ZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data));
-
- // ----- Return
- return Archive_Zip::errorCode();
- }
-
- // ----- Extract the values
- $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data);
-
- // ----- Get filename
- if ($p_header['filename_len'] != 0)
- $p_header['filename'] = fread($this->_zip_fd, $p_header['filename_len']);
- else
- $p_header['filename'] = '';
-
- // ----- Get extra
- if ($p_header['extra_len'] != 0)
- $p_header['extra'] = fread($this->_zip_fd, $p_header['extra_len']);
- else
- $p_header['extra'] = '';
-
- // ----- Get comment
- if ($p_header['comment_len'] != 0)
- $p_header['comment'] = fread($this->_zip_fd, $p_header['comment_len']);
- else
- $p_header['comment'] = '';
-
- // ----- Extract properties
-
- // ----- Recuperate date in UNIX format
- if ($p_header['mdate'] && $p_header['mtime'])
- {
- // ----- Extract time
- $v_hour = ($p_header['mtime'] & 0xF800) >> 11;
- $v_minute = ($p_header['mtime'] & 0x07E0) >> 5;
- $v_seconde = ($p_header['mtime'] & 0x001F)*2;
-
- // ----- Extract date
- $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980;
- $v_month = ($p_header['mdate'] & 0x01E0) >> 5;
- $v_day = $p_header['mdate'] & 0x001F;
-
- // ----- Get UNIX date format
- $p_header['mtime'] = mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
-
- }
- else
- {
- $p_header['mtime'] = time();
- }
-
- // ----- Set the stored filename
- $p_header['stored_filename'] = $p_header['filename'];
-
- // ----- Set default status to ok
- $p_header['status'] = 'ok';
-
- // ----- Look if it is a directory
- if (substr($p_header['filename'], -1) == '/')
- {
- $p_header['external'] = 0x41FF0010;
- }
-
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _readEndCentralDir()
- // Description :
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_readEndCentralDir()
- *
- * { Description }
- *
- */
- function _readEndCentralDir(&$p_central_dir)
- {
- $v_result=1;
-
- // ----- Go to the end of the zip file
- $v_size = filesize($this->_zipname);
- @fseek($this->_zip_fd, $v_size);
- if (@ftell($this->_zip_fd) != $v_size) {
- $this->_errorLog(ARCHIVE_ZIP_ERR_BAD_FORMAT,
- 'Unable to go to the end of the archive \''
- .$this->_zipname.'\'');
- return Archive_Zip::errorCode();
- }
-
- // ----- First try : look if this is an archive with no commentaries
- // (most of the time)
- // in this case the end of central dir is at 22 bytes of the file end
- $v_found = 0;
- if ($v_size > 26) {
- @fseek($this->_zip_fd, $v_size-22);
- if (($v_pos = @ftell($this->_zip_fd)) != ($v_size-22)) {
- $this->_errorLog(ARCHIVE_ZIP_ERR_BAD_FORMAT,
- 'Unable to seek back to the middle of the archive \''
- .$this->_zipname.'\'');
- return Archive_Zip::errorCode();
- }
-
- // ----- Read for bytes
- $v_binary_data = @fread($this->_zip_fd, 4);
- $v_data = unpack('Vid', $v_binary_data);
-
- // ----- Check signature
- if ($v_data['id'] == 0x06054b50) {
- $v_found = 1;
- }
-
- $v_pos = ftell($this->_zip_fd);
- }
-
- // ----- Go back to the maximum possible size of the Central Dir End Record
- if (!$v_found) {
- $v_maximum_size = 65557; // 0xFFFF + 22;
- if ($v_maximum_size > $v_size)
- $v_maximum_size = $v_size;
- @fseek($this->_zip_fd, $v_size-$v_maximum_size);
- if (@ftell($this->_zip_fd) != ($v_size-$v_maximum_size)) {
- $this->_errorLog(ARCHIVE_ZIP_ERR_BAD_FORMAT,
- 'Unable to seek back to the middle of the archive \''
- .$this->_zipname.'\'');
- return Archive_Zip::errorCode();
- }
-
- // ----- Read byte per byte in order to find the signature
- $v_pos = ftell($this->_zip_fd);
- $v_bytes = 0x00000000;
- while ($v_pos < $v_size) {
- // ----- Read a byte
- $v_byte = @fread($this->_zip_fd, 1);
-
- // ----- Add the byte
- $v_bytes = ($v_bytes << 8) | Ord($v_byte);
-
- // ----- Compare the bytes
- if ($v_bytes == 0x504b0506) {
- $v_pos++;
- break;
- }
-
- $v_pos++;
- }
-
- // ----- Look if not found end of central dir
- if ($v_pos == $v_size) {
- $this->_errorLog(ARCHIVE_ZIP_ERR_BAD_FORMAT,
- "Unable to find End of Central Dir Record signature");
- return Archive_Zip::errorCode();
- }
- }
-
- // ----- Read the first 18 bytes of the header
- $v_binary_data = fread($this->_zip_fd, 18);
-
- // ----- Look for invalid block size
- if (strlen($v_binary_data) != 18) {
- $this->_errorLog(ARCHIVE_ZIP_ERR_BAD_FORMAT,
- "Invalid End of Central Dir Record size : "
- .strlen($v_binary_data));
- return Archive_Zip::errorCode();
- }
-
- // ----- Extract the values
- $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data);
-
- // ----- Check the global size
- if (($v_pos + $v_data['comment_size'] + 18) != $v_size) {
- $this->_errorLog(ARCHIVE_ZIP_ERR_BAD_FORMAT,
- "Fail to find the right signature");
- return Archive_Zip::errorCode();
- }
-
- // ----- Get comment
- if ($v_data['comment_size'] != 0)
- $p_central_dir['comment'] = fread($this->_zip_fd, $v_data['comment_size']);
- else
- $p_central_dir['comment'] = '';
-
- $p_central_dir['entries'] = $v_data['entries'];
- $p_central_dir['disk_entries'] = $v_data['disk_entries'];
- $p_central_dir['offset'] = $v_data['offset'];
- $p_central_dir['size'] = $v_data['size'];
- $p_central_dir['disk'] = $v_data['disk'];
- $p_central_dir['disk_start'] = $v_data['disk_start'];
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _deleteByRule()
- // Description :
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_deleteByRule()
- *
- * { Description }
- *
- */
- function _deleteByRule(&$p_result_list, &$p_params)
- {
- $v_result=1;
- $v_list_detail = array();
-
- // ----- Open the zip file
- if (($v_result=$this->_openFd('rb')) != 1)
- {
- // ----- Return
- return $v_result;
- }
-
- // ----- Read the central directory informations
- $v_central_dir = array();
- if (($v_result = $this->_readEndCentralDir($v_central_dir)) != 1)
- {
- $this->_closeFd();
- return $v_result;
- }
-
- // ----- Go to beginning of File
- @rewind($this->_zip_fd);
-
- // ----- Scan all the files
- // ----- Start at beginning of Central Dir
- $v_pos_entry = $v_central_dir['offset'];
- @rewind($this->_zip_fd);
- if (@fseek($this->_zip_fd, $v_pos_entry)) {
- // ----- Clean
- $this->_closeFd();
-
- $this->_errorLog(ARCHIVE_ZIP_ERR_INVALID_ARCHIVE_ZIP,
- 'Invalid archive size');
- return Archive_Zip::errorCode();
- }
-
- // ----- Read each entry
- $v_header_list = array();
- $j_start = 0;
- for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) {
-
- // ----- Read the file header
- $v_header_list[$v_nb_extracted] = array();
- $v_result
- = $this->_readCentralFileHeader($v_header_list[$v_nb_extracted]);
- if ($v_result != 1) {
- // ----- Clean
- $this->_closeFd();
-
- return $v_result;
- }
-
- // ----- Store the index
- $v_header_list[$v_nb_extracted]['index'] = $i;
-
- // ----- Look for the specific extract rules
- $v_found = false;
-
- // ----- Look for extract by name rule
- if ( (isset($p_params[ARCHIVE_ZIP_PARAM_BY_NAME]))
- && ($p_params[ARCHIVE_ZIP_PARAM_BY_NAME] != 0)) {
-
- // ----- Look if the filename is in the list
- for ($j=0;
- ($j strlen($p_params[ARCHIVE_ZIP_PARAM_BY_NAME][$j]))
- && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_params[ARCHIVE_ZIP_PARAM_BY_NAME][$j])) == $p_params[ARCHIVE_ZIP_PARAM_BY_NAME][$j])) {
- $v_found = true;
- }
- elseif ( (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */
- && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_params[ARCHIVE_ZIP_PARAM_BY_NAME][$j])) {
- $v_found = true;
- }
- }
- // ----- Look for a filename
- elseif ($v_header_list[$v_nb_extracted]['stored_filename']
- == $p_params[ARCHIVE_ZIP_PARAM_BY_NAME][$j]) {
- $v_found = true;
- }
- }
- }
-
- // ----- Look for extract by ereg rule
- else if ( (isset($p_params[ARCHIVE_ZIP_PARAM_BY_EREG]))
- && ($p_params[ARCHIVE_ZIP_PARAM_BY_EREG] != "")) {
-
- if (ereg($p_params[ARCHIVE_ZIP_PARAM_BY_EREG],
- $v_header_list[$v_nb_extracted]['stored_filename'])) {
- $v_found = true;
- }
- }
-
- // ----- Look for extract by preg rule
- else if ( (isset($p_params[ARCHIVE_ZIP_PARAM_BY_PREG]))
- && ($p_params[ARCHIVE_ZIP_PARAM_BY_PREG] != "")) {
-
- if (preg_match($p_params[ARCHIVE_ZIP_PARAM_BY_PREG],
- $v_header_list[$v_nb_extracted]['stored_filename'])) {
- $v_found = true;
- }
- }
-
- // ----- Look for extract by index rule
- else if ( (isset($p_params[ARCHIVE_ZIP_PARAM_BY_INDEX]))
- && ($p_params[ARCHIVE_ZIP_PARAM_BY_INDEX] != 0)) {
-
- // ----- Look if the index is in the list
- for ($j=$j_start;
- ($j=$p_params[ARCHIVE_ZIP_PARAM_BY_INDEX][$j]['start'])
- && ($i<=$p_params[ARCHIVE_ZIP_PARAM_BY_INDEX][$j]['end'])) {
- $v_found = true;
- }
- if ($i>=$p_params[ARCHIVE_ZIP_PARAM_BY_INDEX][$j]['end']) {
- $j_start = $j+1;
- }
-
- if ($p_params[ARCHIVE_ZIP_PARAM_BY_INDEX][$j]['start']>$i) {
- break;
- }
- }
- }
-
- // ----- Look for deletion
- if ($v_found) {
- unset($v_header_list[$v_nb_extracted]);
- }
- else {
- $v_nb_extracted++;
- }
- }
-
- // ----- Look if something need to be deleted
- if ($v_nb_extracted > 0) {
-
- // ----- Creates a temporay file
- $v_zip_temp_name = ARCHIVE_ZIP_TEMPORARY_DIR.uniqid('archive_zip-')
- .'.tmp';
-
- // ----- Creates a temporary zip archive
- $v_temp_zip = new Archive_Zip($v_zip_temp_name);
-
- // ----- Open the temporary zip file in write mode
- if (($v_result = $v_temp_zip->_openFd('wb')) != 1) {
- $this->_closeFd();
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Look which file need to be kept
- for ($i=0; $i_zip_fd);
- if (@fseek($this->_zip_fd, $v_header_list[$i]['offset'])) {
- // ----- Clean
- $this->_closeFd();
- $v_temp_zip->_closeFd();
- @unlink($v_zip_temp_name);
-
- $this->_errorLog(ARCHIVE_ZIP_ERR_INVALID_ARCHIVE_ZIP,
- 'Invalid archive size');
- return Archive_Zip::errorCode();
- }
-
- // ----- Read the file header
- if (($v_result = $this->_readFileHeader($v_header_list[$i])) != 1) {
- // ----- Clean
- $this->_closeFd();
- $v_temp_zip->_closeFd();
- @unlink($v_zip_temp_name);
-
- return $v_result;
- }
-
- // ----- Write the file header
- $v_result = $v_temp_zip->_writeFileHeader($v_header_list[$i]);
- if ($v_result != 1) {
- // ----- Clean
- $this->_closeFd();
- $v_temp_zip->_closeFd();
- @unlink($v_zip_temp_name);
-
- return $v_result;
- }
-
- // ----- Read/write the data block
- $v_result = $this->_tool_CopyBlock($this->_zip_fd,
- $v_temp_zip->_zip_fd,
- $v_header_list[$i]['compressed_size']);
- if ($v_result != 1) {
- // ----- Clean
- $this->_closeFd();
- $v_temp_zip->_closeFd();
- @unlink($v_zip_temp_name);
-
- return $v_result;
- }
- }
-
- // ----- Store the offset of the central dir
- $v_offset = @ftell($v_temp_zip->_zip_fd);
-
- // ----- Re-Create the Central Dir files header
- for ($i=0; $i_writeCentralFileHeader($v_header_list[$i]);
- if ($v_result != 1) {
- // ----- Clean
- $v_temp_zip->_closeFd();
- $this->_closeFd();
- @unlink($v_zip_temp_name);
-
- return $v_result;
- }
-
- // ----- Transform the header to a 'usable' info
- $v_temp_zip->_convertHeader2FileInfo($v_header_list[$i],
- $p_result_list[$i]);
- }
-
-
- // ----- Zip file comment
- $v_comment = '';
-
- // ----- Calculate the size of the central header
- $v_size = @ftell($v_temp_zip->_zip_fd)-$v_offset;
-
- // ----- Create the central dir footer
- $v_result = $v_temp_zip->_writeCentralHeader(sizeof($v_header_list),
- $v_size, $v_offset,
- $v_comment);
- if ($v_result != 1) {
- // ----- Clean
- unset($v_header_list);
- $v_temp_zip->_closeFd();
- $this->_closeFd();
- @unlink($v_zip_temp_name);
-
- return $v_result;
- }
-
- // ----- Close
- $v_temp_zip->_closeFd();
- $this->_closeFd();
-
- // ----- Delete the zip file
- // TBC : I should test the result ...
- @unlink($this->_zipname);
-
- // ----- Rename the temporary file
- // TBC : I should test the result ...
- //@rename($v_zip_temp_name, $this->_zipname);
- $this->_tool_Rename($v_zip_temp_name, $this->_zipname);
-
- // ----- Destroy the temporary archive
- unset($v_temp_zip);
- }
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _dirCheck()
- // Description :
- // Check if a directory exists, if not it creates it and all the parents directory
- // which may be useful.
- // Parameters :
- // $p_dir : Directory path to check.
- // Return Values :
- // 1 : OK
- // -1 : Unable to create directory
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_dirCheck()
- *
- * { Description }
- *
- * @param [type] $p_is_dir
- */
- function _dirCheck($p_dir, $p_is_dir=false)
- {
- $v_result = 1;
-
- // ----- Remove the final '/'
- if (($p_is_dir) && (substr($p_dir, -1)=='/')) {
- $p_dir = substr($p_dir, 0, strlen($p_dir)-1);
- }
-
- // ----- Check the directory availability
- if ((is_dir($p_dir)) || ($p_dir == "")) {
- return 1;
- }
-
- // ----- Extract parent directory
- $p_parent_dir = dirname($p_dir);
-
- // ----- Just a check
- if ($p_parent_dir != $p_dir) {
- // ----- Look for parent directory
- if ($p_parent_dir != "") {
- if (($v_result = $this->_dirCheck($p_parent_dir)) != 1) {
- return $v_result;
- }
- }
- }
-
- // ----- Create the directory
- if (!@mkdir($p_dir, 0777)) {
- $this->_errorLog(ARCHIVE_ZIP_ERR_DIR_CREATE_FAIL,
- "Unable to create directory '$p_dir'");
- return Archive_Zip::errorCode();
- }
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _merge()
- // Description :
- // If $p_archive_to_add does not exist, the function exit with a success result.
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_merge()
- *
- * { Description }
- *
- */
- function _merge(&$p_archive_to_add)
- {
- $v_result=1;
-
- // ----- Look if the archive_to_add exists
- if (!is_file($p_archive_to_add->_zipname)) {
- // ----- Nothing to merge, so merge is a success
- return 1;
- }
-
- // ----- Look if the archive exists
- if (!is_file($this->_zipname)) {
- // ----- Do a duplicate
- $v_result = $this->_duplicate($p_archive_to_add->_zipname);
-
- return $v_result;
- }
-
- // ----- Open the zip file
- if (($v_result=$this->_openFd('rb')) != 1) {
- return $v_result;
- }
-
- // ----- Read the central directory informations
- $v_central_dir = array();
- if (($v_result = $this->_readEndCentralDir($v_central_dir)) != 1) {
- $this->_closeFd();
- return $v_result;
- }
-
- // ----- Go to beginning of File
- @rewind($this->_zip_fd);
-
- // ----- Open the archive_to_add file
- if (($v_result=$p_archive_to_add->_openFd('rb')) != 1) {
- $this->_closeFd();
- return $v_result;
- }
-
- // ----- Read the central directory informations
- $v_central_dir_to_add = array();
- $v_result = $p_archive_to_add->_readEndCentralDir($v_central_dir_to_add);
- if ($v_result != 1) {
- $this->_closeFd();
- $p_archive_to_add->_closeFd();
- return $v_result;
- }
-
- // ----- Go to beginning of File
- @rewind($p_archive_to_add->_zip_fd);
-
- // ----- Creates a temporay file
- $v_zip_temp_name = ARCHIVE_ZIP_TEMPORARY_DIR.uniqid('archive_zip-').'.tmp';
-
- // ----- Open the temporary file in write mode
- if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) {
- $this->_closeFd();
- $p_archive_to_add->_closeFd();
- $this->_errorLog(ARCHIVE_ZIP_ERR_READ_OPEN_FAIL,
- 'Unable to open temporary file \''
- .$v_zip_temp_name.'\' in binary write mode');
- return Archive_Zip::errorCode();
- }
-
- // ----- Copy the files from the archive to the temporary file
- // TBC : Here I should better append the file and go back to erase the
- // central dir
- $v_size = $v_central_dir['offset'];
- while ($v_size != 0) {
- $v_read_size = ($v_size < ARCHIVE_ZIP_READ_BLOCK_SIZE
- ? $v_size : ARCHIVE_ZIP_READ_BLOCK_SIZE);
- $v_buffer = fread($this->_zip_fd, $v_read_size);
- @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Copy the files from the archive_to_add into the temporary file
- $v_size = $v_central_dir_to_add['offset'];
- while ($v_size != 0) {
- $v_read_size = ($v_size < ARCHIVE_ZIP_READ_BLOCK_SIZE
- ? $v_size : ARCHIVE_ZIP_READ_BLOCK_SIZE);
- $v_buffer = fread($p_archive_to_add->_zip_fd, $v_read_size);
- @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Store the offset of the central dir
- $v_offset = @ftell($v_zip_temp_fd);
-
- // ----- Copy the block of file headers from the old archive
- $v_size = $v_central_dir['size'];
- while ($v_size != 0) {
- $v_read_size = ($v_size < ARCHIVE_ZIP_READ_BLOCK_SIZE
- ? $v_size : ARCHIVE_ZIP_READ_BLOCK_SIZE);
- $v_buffer = @fread($this->_zip_fd, $v_read_size);
- @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Copy the block of file headers from the archive_to_add
- $v_size = $v_central_dir_to_add['size'];
- while ($v_size != 0) {
- $v_read_size = ($v_size < ARCHIVE_ZIP_READ_BLOCK_SIZE
- ? $v_size : ARCHIVE_ZIP_READ_BLOCK_SIZE);
- $v_buffer = @fread($p_archive_to_add->_zip_fd, $v_read_size);
- @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Zip file comment
- // TBC : I should merge the two comments
- $v_comment = '';
-
- // ----- Calculate the size of the (new) central header
- $v_size = @ftell($v_zip_temp_fd)-$v_offset;
-
- // ----- Swap the file descriptor
- // Here is a trick : I swap the temporary fd with the zip fd, in order to use
- // the following methods on the temporary fil and not the real archive fd
- $v_swap = $this->_zip_fd;
- $this->_zip_fd = $v_zip_temp_fd;
- $v_zip_temp_fd = $v_swap;
-
- // ----- Create the central dir footer
- if (($v_result = $this->_writeCentralHeader($v_central_dir['entries']
- +$v_central_dir_to_add['entries'],
- $v_size, $v_offset,
- $v_comment)) != 1) {
- $this->_closeFd();
- $p_archive_to_add->_closeFd();
- @fclose($v_zip_temp_fd);
- $this->_zip_fd = null;
-
- // ----- Reset the file list
- unset($v_header_list);
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Swap back the file descriptor
- $v_swap = $this->_zip_fd;
- $this->_zip_fd = $v_zip_temp_fd;
- $v_zip_temp_fd = $v_swap;
-
- // ----- Close
- $this->_closeFd();
- $p_archive_to_add->_closeFd();
-
- // ----- Close the temporary file
- @fclose($v_zip_temp_fd);
-
- // ----- Delete the zip file
- // TBC : I should test the result ...
- @unlink($this->_zipname);
-
- // ----- Rename the temporary file
- // TBC : I should test the result ...
- //@rename($v_zip_temp_name, $this->_zipname);
- $this->_tool_Rename($v_zip_temp_name, $this->_zipname);
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _duplicate()
- // Description :
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_duplicate()
- *
- * { Description }
- *
- */
- function _duplicate($p_archive_filename)
- {
- $v_result=1;
-
- // ----- Look if the $p_archive_filename exists
- if (!is_file($p_archive_filename)) {
-
- // ----- Nothing to duplicate, so duplicate is a success.
- $v_result = 1;
-
- // ----- Return
- return $v_result;
- }
-
- // ----- Open the zip file
- if (($v_result=$this->_openFd('wb')) != 1) {
- // ----- Return
- return $v_result;
- }
-
- // ----- Open the temporary file in write mode
- if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0) {
- $this->_closeFd();
- $this->_errorLog(ARCHIVE_ZIP_ERR_READ_OPEN_FAIL,
- 'Unable to open archive file \''
- .$p_archive_filename.'\' in binary write mode');
- return Archive_Zip::errorCode();
- }
-
- // ----- Copy the files from the archive to the temporary file
- // TBC : Here I should better append the file and go back to erase the
- // central dir
- $v_size = filesize($p_archive_filename);
- while ($v_size != 0) {
- $v_read_size = ($v_size < ARCHIVE_ZIP_READ_BLOCK_SIZE
- ? $v_size : ARCHIVE_ZIP_READ_BLOCK_SIZE);
- $v_buffer = fread($v_zip_temp_fd, $v_read_size);
- @fwrite($this->_zip_fd, $v_buffer, $v_read_size);
- $v_size -= $v_read_size;
- }
-
- // ----- Close
- $this->_closeFd();
-
- // ----- Close the temporary file
- @fclose($v_zip_temp_fd);
-
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- /**
- * Archive_Zip::_check_parameters()
- *
- * { Description }
- *
- * @param integer $p_error_code
- * @param string $p_error_string
- */
- function _check_parameters(&$p_params, $p_default)
- {
-
- // ----- Check that param is an array
- if (!is_array($p_params)) {
- $this->_errorLog(ARCHIVE_ZIP_ERR_INVALID_PARAMETER,
- 'Unsupported parameter, waiting for an array');
- return Archive_Zip::errorCode();
- }
-
- // ----- Check that all the params are valid
- for (reset($p_params); list($v_key, $v_value) = each($p_params); ) {
- if (!isset($p_default[$v_key])) {
- $this->_errorLog(ARCHIVE_ZIP_ERR_INVALID_PARAMETER,
- 'Unsupported parameter with key \''.$v_key.'\'');
-
- return Archive_Zip::errorCode();
- }
- }
-
- // ----- Set the default values
- for (reset($p_default); list($v_key, $v_value) = each($p_default); ) {
- if (!isset($p_params[$v_key])) {
- $p_params[$v_key] = $p_default[$v_key];
- }
- }
-
- // ----- Check specific parameters
- $v_callback_list = array ('callback_pre_add','callback_post_add',
- 'callback_pre_extract','callback_post_extract');
- for ($i=0; $i_errorLog(ARCHIVE_ZIP_ERR_INVALID_PARAM_VALUE,
- "Callback '".$p_params[$v_key]
- ."()' is not an existing function for "
- ."parameter '".$v_key."'");
- return Archive_Zip::errorCode();
- }
- }
- }
-
- return(1);
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _errorLog()
- // Description :
- // Parameters :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_errorLog()
- *
- * { Description }
- *
- * @param integer $p_error_code
- * @param string $p_error_string
- */
- function _errorLog($p_error_code=0, $p_error_string='')
- {
- $this->_error_code = $p_error_code;
- $this->_error_string = $p_error_string;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : _errorReset()
- // Description :
- // Parameters :
- // ---------------------------------------------------------------------------
- /**
- * Archive_Zip::_errorReset()
- *
- * { Description }
- *
- */
- function _errorReset()
- {
- $this->_error_code = 1;
- $this->_error_string = '';
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : $this->_tool_PathReduction()
- // Description :
- // Parameters :
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * _tool_PathReduction()
- *
- * { Description }
- *
- */
- function _tool_PathReduction($p_dir)
- {
- $v_result = "";
-
- // ----- Look for not empty path
- if ($p_dir != "")
- {
- // ----- Explode path by directory names
- $v_list = explode("/", $p_dir);
-
- // ----- Study directories from last to first
- for ($i=sizeof($v_list)-1; $i>=0; $i--)
- {
- // ----- Look for current path
- if ($v_list[$i] == ".")
- {
- // ----- Ignore this directory
- // Should be the first $i=0, but no check is done
- }
- else if ($v_list[$i] == "..")
- {
- // ----- Ignore it and ignore the $i-1
- $i--;
- }
- else if (($v_list[$i] == "") && ($i!=(sizeof($v_list)-1)) && ($i!=0))
- {
- // ----- Ignore only the double '//' in path,
- // but not the first and last '/'
- }
- else
- {
- $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:"");
- }
- }
- }
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : $this->_tool_PathInclusion()
- // Description :
- // This function indicates if the path $p_path is under the $p_dir tree. Or,
- // said in an other way, if the file or sub-dir $p_path is inside the dir
- // $p_dir.
- // The function indicates also if the path is exactly the same as the dir.
- // This function supports path with duplicated '/' like '//', but does not
- // support '.' or '..' statements.
- // Parameters :
- // Return Values :
- // 0 if $p_path is not inside directory $p_dir
- // 1 if $p_path is inside directory $p_dir
- // 2 if $p_path is exactly the same as $p_dir
- // ---------------------------------------------------------------------------
- /**
- * _tool_PathInclusion()
- *
- * { Description }
- *
- */
- function _tool_PathInclusion($p_dir, $p_path)
- {
- $v_result = 1;
-
- // ----- Explode dir and path by directory separator
- $v_list_dir = explode("/", $p_dir);
- $v_list_dir_size = sizeof($v_list_dir);
- $v_list_path = explode("/", $p_path);
- $v_list_path_size = sizeof($v_list_path);
-
- // ----- Study directories paths
- $i = 0;
- $j = 0;
- while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) {
-
- // ----- Look for empty dir (path reduction)
- if ($v_list_dir[$i] == '') {
- $i++;
- continue;
- }
- if ($v_list_path[$j] == '') {
- $j++;
- continue;
- }
-
- // ----- Compare the items
- if ( ($v_list_dir[$i] != $v_list_path[$j])
- && ($v_list_dir[$i] != '')
- && ( $v_list_path[$j] != '')) {
- $v_result = 0;
- }
-
- // ----- Next items
- $i++;
- $j++;
- }
-
- // ----- Look if everything seems to be the same
- if ($v_result) {
- // ----- Skip all the empty items
- while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++;
- while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++;
-
- if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) {
- // ----- There are exactly the same
- $v_result = 2;
- }
- else if ($i < $v_list_dir_size) {
- // ----- The path is shorter than the dir
- $v_result = 0;
- }
- }
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : $this->_tool_CopyBlock()
- // Description :
- // Parameters :
- // $p_mode : read/write compression mode
- // 0 : src & dest normal
- // 1 : src gzip, dest normal
- // 2 : src normal, dest gzip
- // 3 : src & dest gzip
- // Return Values :
- // ---------------------------------------------------------------------------
- /**
- * _tool_CopyBlock()
- *
- * { Description }
- *
- * @param integer $p_mode
- */
- function _tool_CopyBlock($p_src, $p_dest, $p_size, $p_mode=0)
- {
- $v_result = 1;
-
- if ($p_mode==0)
- {
- while ($p_size != 0)
- {
- $v_read_size = ($p_size < ARCHIVE_ZIP_READ_BLOCK_SIZE
- ? $p_size : ARCHIVE_ZIP_READ_BLOCK_SIZE);
- $v_buffer = @fread($p_src, $v_read_size);
- @fwrite($p_dest, $v_buffer, $v_read_size);
- $p_size -= $v_read_size;
- }
- }
- else if ($p_mode==1)
- {
- while ($p_size != 0)
- {
- $v_read_size = ($p_size < ARCHIVE_ZIP_READ_BLOCK_SIZE
- ? $p_size : ARCHIVE_ZIP_READ_BLOCK_SIZE);
- $v_buffer = @gzread($p_src, $v_read_size);
- @fwrite($p_dest, $v_buffer, $v_read_size);
- $p_size -= $v_read_size;
- }
- }
- else if ($p_mode==2)
- {
- while ($p_size != 0)
- {
- $v_read_size = ($p_size < ARCHIVE_ZIP_READ_BLOCK_SIZE
- ? $p_size : ARCHIVE_ZIP_READ_BLOCK_SIZE);
- $v_buffer = @fread($p_src, $v_read_size);
- @gzwrite($p_dest, $v_buffer, $v_read_size);
- $p_size -= $v_read_size;
- }
- }
- else if ($p_mode==3)
- {
- while ($p_size != 0)
- {
- $v_read_size = ($p_size < ARCHIVE_ZIP_READ_BLOCK_SIZE
- ? $p_size : ARCHIVE_ZIP_READ_BLOCK_SIZE);
- $v_buffer = @gzread($p_src, $v_read_size);
- @gzwrite($p_dest, $v_buffer, $v_read_size);
- $p_size -= $v_read_size;
- }
- }
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : $this->_tool_Rename()
- // Description :
- // This function tries to do a simple rename() function. If it fails, it
- // tries to copy the $p_src file in a new $p_dest file and then unlink the
- // first one.
- // Parameters :
- // $p_src : Old filename
- // $p_dest : New filename
- // Return Values :
- // 1 on success, 0 on failure.
- // ---------------------------------------------------------------------------
- /**
- * _tool_Rename()
- *
- * { Description }
- *
- */
- function _tool_Rename($p_src, $p_dest)
- {
- $v_result = 1;
-
- // ----- Try to rename the files
- if (!@rename($p_src, $p_dest)) {
-
- // ----- Try to copy & unlink the src
- if (!@copy($p_src, $p_dest)) {
- $v_result = 0;
- }
- else if (!@unlink($p_src)) {
- $v_result = 0;
- }
- }
-
- // ----- Return
- return $v_result;
- }
- // ---------------------------------------------------------------------------
-
- // ---------------------------------------------------------------------------
- // Function : $this->_tool_TranslateWinPath()
- // Description :
- // Translate windows path by replacing '\' by '/' and optionally removing
- // drive letter.
- // Parameters :
- // $p_path : path to translate.
- // $p_remove_disk_letter : true | false
- // Return Values :
- // The path translated.
- // ---------------------------------------------------------------------------
- /**
- * _tool_TranslateWinPath()
- *
- * { Description }
- *
- * @param [type] $p_remove_disk_letter
- */
- function _tool_TranslateWinPath($p_path, $p_remove_disk_letter=true)
- {
- if (stristr(php_uname(), 'windows')) {
- // ----- Look for potential disk letter
- if ( ($p_remove_disk_letter)
- && (($v_position = strpos($p_path, ':')) != false)) {
- $p_path = substr($p_path, $v_position+1);
- }
- // ----- Change potential windows directory separator
- if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0,1) == '\\')) {
- $p_path = strtr($p_path, '\\', '/');
- }
- }
- return $p_path;
- }
- // ---------------------------------------------------------------------------
-
- }
- // End of class
-
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/AnsiColorLogger.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/AnsiColorLogger.php
deleted file mode 100644
index 02db3330c2..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/AnsiColorLogger.php
+++ /dev/null
@@ -1,234 +0,0 @@
-.
- */
-
-require_once 'phing/listener/DefaultLogger.php';
-include_once 'phing/system/util/Properties.php';
-
-/**
- * Uses ANSI Color Code Sequences to colorize messages
- * sent to the console.
- *
- * If used with the -logfile option, the output file
- * will contain all the necessary escape codes to
- * display the text in colorized mode when displayed
- * in the console using applications like cat, more,
- * etc.
- *
- * This is designed to work on terminals that support ANSI
- * color codes. It works on XTerm, ETerm, Mindterm, etc.
- * It also works on Win9x (with ANSI.SYS loaded.)
- *
- * NOTE:
- * It doesn't work on WinNT's COMMAND.COM even with
- * ANSI.SYS loaded.
- *
- * The default colors used for differentiating
- * the message levels can be changed by editing the
- * phing/listener/defaults.properties file.
- *
- * This file contains 5 key/value pairs:
- * AnsiColorLogger.ERROR_COLOR=2;31
- * AnsiColorLogger.WARNING_COLOR=2;35
- * AnsiColorLogger.INFO_COLOR=2;36
- * AnsiColorLogger.VERBOSE_COLOR=2;32
- * AnsiColorLogger.DEBUG_COLOR=2;34
- *
- * Another option is to pass a system variable named
- * ant.logger.defaults, with value set to the path of
- * the file that contains user defined Ansi Color
- * Codes, to the java command using -D option.
- *
- * To change these colors use the following chart:
- *
- * ANSI COLOR LOGGER CONFIGURATION
- *
- * Format for AnsiColorLogger.*=
- * Attribute;Foreground;Background
- *
- * Attribute is one of the following:
- * 0 -> Reset All Attributes (return to normal mode)
- * 1 -> Bright (Usually turns on BOLD)
- * 2 -> Dim
- * 3 -> Underline
- * 5 -> link
- * 7 -> Reverse
- * 8 -> Hidden
- *
- * Foreground is one of the following:
- * 30 -> Black
- * 31 -> Red
- * 32 -> Green
- * 33 -> Yellow
- * 34 -> Blue
- * 35 -> Magenta
- * 36 -> Cyan
- * 37 -> White
- *
- * Background is one of the following:
- * 40 -> Black
- * 41 -> Red
- * 42 -> Green
- * 43 -> Yellow
- * 44 -> Blue
- * 45 -> Magenta
- * 46 -> Cyan
- * 47 -> White
- *
- * @author Hans Lellelid (Phing)
- * @author Magesh Umasankar (Ant)
- * @package phing.listener
- * @version $Revision$
- */
-class AnsiColorLogger extends DefaultLogger {
-
- const ATTR_NORMAL = 0;
- const ATTR_BRIGHT = 1;
- const ATTR_DIM = 2;
- const ATTR_UNDERLINE = 3;
- const ATTR_BLINK = 5;
- const ATTR_REVERSE = 7;
- const ATTR_HIDDEN = 8;
-
- const FG_BLACK = 30;
- const FG_RED = 31;
- const FG_GREEN = 32;
- const FG_YELLOW = 33;
- const FG_BLUE = 34;
- const FG_MAGENTA = 35;
- const FG_CYAN = 36;
- const FG_WHITE = 37;
-
- const BG_BLACK = 40;
- const BG_RED = 41;
- const BG_GREEN = 42;
- const BG_YELLOW = 44;
- const BG_BLUE = 44;
- const BG_MAGENTA = 45;
- const BG_CYAN = 46;
- const BG_WHITE = 47;
-
- const PREFIX = "\x1b[";
- const SUFFIX = "m";
- const SEPARATOR = ';';
- const END_COLOR = "\x1b[m"; // self::PREFIX . self::SUFFIX;
-
- private $errColor;
- private $warnColor;
- private $infoColor;
- private $verboseColor;
- private $debugColor;
-
- private $colorsSet = false;
-
- /**
- * Construct new AnsiColorLogger
- * Perform initializations that cannot be done in var declarations.
- */
- public function __construct() {
- parent::__construct();
- $this->errColor = self::PREFIX . self::ATTR_DIM . self::SEPARATOR . self::FG_RED . self::SUFFIX;
- $this->warnColor = self::PREFIX . self::ATTR_DIM . self::SEPARATOR . self::FG_MAGENTA . self::SUFFIX;
- $this->infoColor = self::PREFIX . self::ATTR_DIM . self::SEPARATOR . self::FG_CYAN . self::SUFFIX;
- $this->verboseColor = self::PREFIX . self::ATTR_DIM . self::SEPARATOR . self::FG_GREEN . self::SUFFIX;
- $this->debugColor = self::PREFIX . self::ATTR_DIM . self::SEPARATOR . self::FG_BLUE . self::SUFFIX;
- }
-
- /**
- * Set the colors to use from a property file specified by the
- * special ant property ant.logger.defaults
- */
- private final function setColors() {
-
- $userColorFile = Phing::getProperty("phing.logger.defaults");
- $systemColorFile = new PhingFile(Phing::getResourcePath("phing/listener/defaults.properties"));
-
- $in = null;
-
- try {
- $prop = new Properties();
-
- if ($userColorFile !== null) {
- $prop->load($userColorFile);
- } else {
- $prop->load($systemColorFile);
- }
-
- $err = $prop->getProperty("AnsiColorLogger.ERROR_COLOR");
- $warn = $prop->getProperty("AnsiColorLogger.WARNING_COLOR");
- $info = $prop->getProperty("AnsiColorLogger.INFO_COLOR");
- $verbose = $prop->getProperty("AnsiColorLogger.VERBOSE_COLOR");
- $debug = $prop->getProperty("AnsiColorLogger.DEBUG_COLOR");
- if ($err !== null) {
- $this->errColor = self::PREFIX . $err . self::SUFFIX;
- }
- if ($warn !== null) {
- $this->warnColor = self::PREFIX . $warn . self::SUFFIX;
- }
- if ($info !== null) {
- $this->infoColor = self::PREFIX . $info . self::SUFFIX;
- }
- if ($verbose !== null) {
- $this->verboseColor = self::PREFIX . $verbose . self::SUFFIX;
- }
- if ($debug !== null) {
- $this->debugColor = self::PREFIX . $debug . self::SUFFIX;
- }
- } catch (IOException $ioe) {
- //Ignore exception - we will use the defaults.
- }
- }
-
- /**
- * @see DefaultLogger#printMessage
- * @param string $message
- * @param OutputStream $stream
- * @param int $priority
- */
- protected final function printMessage($message, OutputStream $stream, $priority) {
- if ($message !== null) {
-
- if (!$this->colorsSet) {
- $this->setColors();
- $this->colorsSet = true;
- }
-
- switch ($priority) {
- case Project::MSG_ERR:
- $message = $this->errColor . $message . self::END_COLOR;
- break;
- case Project::MSG_WARN:
- $message = $this->warnColor . $message . self::END_COLOR;
- break;
- case Project::MSG_INFO:
- $message = $this->infoColor . $message . self::END_COLOR;
- break;
- case Project::MSG_VERBOSE:
- $message = $this->verboseColor . $message . self::END_COLOR;
- break;
- case Project::MSG_DEBUG:
- $message = $this->debugColor . $message . self::END_COLOR;
- break;
- }
-
- $stream->write($message . PHP_EOL);
- }
- }
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/DefaultLogger.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/DefaultLogger.php
deleted file mode 100644
index b2c13c4552..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/DefaultLogger.php
+++ /dev/null
@@ -1,278 +0,0 @@
-.
- */
-
-require_once 'phing/listener/StreamRequiredBuildLogger.php';
-include_once 'phing/BuildEvent.php';
-
-/**
- * Writes a build event to the console.
- *
- * Currently, it only writes which targets are being executed, and
- * any messages that get logged.
- *
- * @author Andreas Aderhold
- * @copyright � 2001,2002 THYRELL. All rights reserved
- * @version $Revision: 1.11 $ $Date: 2007-11-01 13:11:07 -0700 (Thu, 01 Nov 2007) $
- * @see BuildEvent
- * @package phing.listener
- */
-class DefaultLogger implements StreamRequiredBuildLogger {
-
- /**
- * Size of the left column in output. The default char width is 12.
- * @var int
- */
- const LEFT_COLUMN_SIZE = 12;
-
- /**
- * The message output level that should be used. The default is
- * Project::MSG_VERBOSE.
- * @var int
- */
- protected $msgOutputLevel = Project::MSG_ERR;
-
- /**
- * Time that the build started
- * @var int
- */
- protected $startTime;
-
- /**
- * @var OutputStream Stream to use for standard output.
- */
- protected $out;
-
- /**
- * @var OutputStream Stream to use for error output.
- */
- protected $err;
-
- /**
- * Construct a new default logger.
- */
- public function __construct() {
-
- }
-
- /**
- * Set the msgOutputLevel this logger is to respond to.
- *
- * Only messages with a message level lower than or equal to the given
- * level are output to the log.
- *
- *
Constants for the message levels are in Project.php. The order of
- * the levels, from least to most verbose, is:
- *
- *
- *
Project::MSG_ERR
- *
Project::MSG_WARN
- *
Project::MSG_INFO
- *
Project::MSG_VERBOSE
- *
Project::MSG_DEBUG
- *
- *
- * The default message level for DefaultLogger is Project::MSG_ERR.
- *
- * @param int $level The logging level for the logger.
- * @see BuildLogger#setMessageOutputLevel()
- */
- public function setMessageOutputLevel($level) {
- $this->msgOutputLevel = (int) $level;
- }
-
- /**
- * Sets the output stream.
- * @param OutputStream $output
- * @see BuildLogger#setOutputStream()
- */
- public function setOutputStream(OutputStream $output) {
- $this->out = $output;
- }
-
- /**
- * Sets the error stream.
- * @param OutputStream $err
- * @see BuildLogger#setErrorStream()
- */
- public function setErrorStream(OutputStream $err) {
- $this->err = $err;
- }
-
- /**
- * Sets the start-time when the build started. Used for calculating
- * the build-time.
- *
- * @param object The BuildEvent
- * @access public
- */
- public function buildStarted(BuildEvent $event) {
- $this->startTime = Phing::currentTimeMillis();
- if ($this->msgOutputLevel >= Project::MSG_INFO) {
- $this->printMessage("Buildfile: ".$event->getProject()->getProperty("phing.file"), $this->out, Project::MSG_INFO);
- }
- }
-
- /**
- * Prints whether the build succeeded or failed, and any errors that
- * occured during the build. Also outputs the total build-time.
- *
- * @param object The BuildEvent
- * @see BuildEvent::getException()
- */
- public function buildFinished(BuildEvent $event) {
- $error = $event->getException();
- if ($error === null) {
- $msg = PHP_EOL . $this->getBuildSuccessfulMessage() . PHP_EOL;
- } else {
- $msg = PHP_EOL . $this->getBuildFailedMessage() . PHP_EOL;
- if (Project::MSG_VERBOSE <= $this->msgOutputLevel || !($error instanceof BuildException)) {
- $msg .= $error->__toString().PHP_EOL;
- } else {
- $msg .= $error->getMessage();
- }
- }
- $msg .= PHP_EOL . "Total time: " .self::formatTime(Phing::currentTimeMillis() - $this->startTime) . PHP_EOL;
-
- if ($error === null) {
- $this->printMessage($msg, $this->out, Project::MSG_VERBOSE);
- } else {
- $this->printMessage($msg, $this->err, Project::MSG_ERR);
- }
- }
-
- /**
- * Get the message to return when a build failed.
- * @return string The classic "BUILD FAILED"
- */
- protected function getBuildFailedMessage() {
- return "BUILD FAILED";
- }
-
- /**
- * Get the message to return when a build succeeded.
- * @return string The classic "BUILD FINISHED"
- */
- protected function getBuildSuccessfulMessage() {
- return "BUILD FINISHED";
- }
-
- /**
- * Prints the current target name
- *
- * @param object The BuildEvent
- * @access public
- * @see BuildEvent::getTarget()
- */
- public function targetStarted(BuildEvent $event) {
- if (Project::MSG_INFO <= $this->msgOutputLevel) {
- $msg = PHP_EOL . $event->getProject()->getName() . ' > ' . $event->getTarget()->getName() . ':' . PHP_EOL;
- $this->printMessage($msg, $this->out, $event->getPriority());
- }
- }
-
- /**
- * Fired when a target has finished. We don't need specific action on this
- * event. So the methods are empty.
- *
- * @param object The BuildEvent
- * @see BuildEvent::getException()
- */
- public function targetFinished(BuildEvent $event) {}
-
- /**
- * Fired when a task is started. We don't need specific action on this
- * event. So the methods are empty.
- *
- * @param object The BuildEvent
- * @access public
- * @see BuildEvent::getTask()
- */
- public function taskStarted(BuildEvent $event) {}
-
- /**
- * Fired when a task has finished. We don't need specific action on this
- * event. So the methods are empty.
- *
- * @param object The BuildEvent
- * @access public
- * @see BuildEvent::getException()
- */
- public function taskFinished(BuildEvent $event) {}
-
- /**
- * Print a message to the stdout.
- *
- * @param object The BuildEvent
- * @access public
- * @see BuildEvent::getMessage()
- */
- public function messageLogged(BuildEvent $event) {
- $priority = $event->getPriority();
- if ($priority <= $this->msgOutputLevel) {
- $msg = "";
- if ($event->getTask() !== null) {
- $name = $event->getTask();
- $name = $name->getTaskName();
- $msg = str_pad("[$name] ", self::LEFT_COLUMN_SIZE, " ", STR_PAD_LEFT);
- }
-
- $msg .= $event->getMessage();
-
- if ($priority != Project::MSG_ERR) {
- $this->printMessage($msg, $this->out, $priority);
- } else {
- $this->printMessage($msg, $this->err, $priority);
- }
- }
- }
-
- /**
- * Formats a time micro integer to human readable format.
- *
- * @param integer The time stamp
- * @access private
- */
- public static function formatTime($micros) {
- $seconds = $micros;
- $minutes = $seconds / 60;
- if ($minutes > 1) {
- return sprintf("%1.0f minute%s %0.2f second%s",
- $minutes, ($minutes === 1 ? " " : "s "),
- $seconds - floor($seconds/60) * 60, ($seconds%60 === 1 ? "" : "s"));
- } else {
- return sprintf("%0.4f second%s", $seconds, ($seconds%60 === 1 ? "" : "s"));
- }
- }
-
- /**
- * Prints a message to console.
- *
- * @param string $message The message to print.
- * Should not be null.
- * @param resource $stream The stream to use for message printing.
- * @param int $priority The priority of the message.
- * (Ignored in this implementation.)
- * @return void
- */
- protected function printMessage($message, OutputStream $stream, $priority) {
- $stream->write($message . PHP_EOL);
- }
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/NoBannerLogger.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/NoBannerLogger.php
deleted file mode 100644
index 5c96443fab..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/NoBannerLogger.php
+++ /dev/null
@@ -1,59 +0,0 @@
-.
- */
-
-require_once 'phing/listener/DefaultLogger.php';
-
-/**
- * Extends DefaultLogger to strip out empty targets.
- *
- * @author Andreas Aderhold
- * @copyright � 2001,2002 THYRELL. All rights reserved
- * @version $Revision: 1.4 $ $Date: 2007-08-27 19:17:00 -0700 (Mon, 27 Aug 2007) $
- * @package phing.listener
- */
-class NoBannerLogger extends DefaultLogger {
-
- private $targetName = null;
-
- function targetStarted(BuildEvent $event) {
- $target = $event->getTarget();
- $this->targetName = $target->getName();
- }
-
- function targetFinished(BuildEvent $event) {
- $this->targetName = null;
- }
-
- function messageLogged(BuildEvent $event) {
-
- if ($event->getPriority() > $this->msgOutputLevel || null === $event->getMessage() || trim($event->getMessage() === "")) {
- return;
- }
-
- if ($this->targetName !== null) {
- $msg = PHP_EOL . $event->getProject()->getName() . ' > ' . $this->targetName . ':' . PHP_EOL;
- $this->printMessage($msg, $this->out, $event->getPriority());
- $this->targetName = null;
- }
-
- parent::messageLogged($event);
- }
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/PearLogListener.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/PearLogListener.php
deleted file mode 100644
index 7cf8c71ae6..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/PearLogListener.php
+++ /dev/null
@@ -1,197 +0,0 @@
-.
- */
-
-require_once 'phing/BuildListener.php';
-
-/**
- * Writes build messages to PEAR Log.
- *
- * By default it will log to file in current directory w/ name 'phing.log'. You can customize
- * this behavior by setting properties:
- * - pear.log.type
- * - pear.log.name
- * - pear.log.ident (note that this class changes ident to project name)
- * - pear.log.conf (note that array values are currently unsupported in Phing property files)
- *
- *
- * phing -f build.xml -logger phing.listener.PearLogger -Dpear.log.type=file -Dpear.log.name=/path/to/log.log
- *
- *
- * @author Hans Lellelid
- * @version $Revision: 1.3 $ $Date: 2007-08-27 19:17:00 -0700 (Mon, 27 Aug 2007) $
- * @see BuildEvent
- * @package phing.listener
- */
-class PearLogListener implements BuildListener {
-
- /**
- * Size of the left column in output. The default char width is 12.
- * @var int
- */
- const LEFT_COLUMN_SIZE = 12;
-
- /**
- * Time that the build started
- * @var int
- */
- protected $startTime;
-
- /**
- * Maps Phing Project::MSG_* constants to PEAR_LOG_* constants.
- * @var array
- */
- protected static $levelMap = array( Project::MSG_DEBUG => PEAR_LOG_DEBUG,
- Project::MSG_INFO => PEAR_LOG_INFO,
- Project::MSG_VERBOSE => PEAR_LOG_NOTICE,
- Project::MSG_WARN => PEAR_LOG_WARNING,
- Project::MSG_ERR => PEAR_LOG_ERR
- );
- /**
- * Whether logging has been configured.
- * @var boolean
- */
- protected $logConfigured = false;
-
- /**
- * @var Log PEAR Log object.
- */
- protected $logger;
-
- /**
- * Configure the logger.
- */
- protected function configureLogging() {
-
- $type = Phing::getDefinedProperty('pear.log.type');
- $name = Phing::getDefinedProperty('pear.log.name');
- $ident = Phing::getDefinedProperty('pear.log.ident');
- $conf = Phing::getDefinedProperty('pear.log.conf');
-
- if ($type === null) $type = 'file';
- if ($name === null) $name = 'phing.log';
- if ($ident === null) $ident = 'phing';
- if ($conf === null) $conf = array();
-
- include_once 'Log.php';
- if (!class_exists('Log')) {
- throw new BuildException("Cannot find PEAR Log class for use by PearLogger.");
- }
-
- $this->logger = Log::singleton($type, $name, $ident, $conf, self::$levelMap[$this->msgOutputLevel]);
- }
-
- /**
- * Get the configured PEAR logger to use.
- * This method just ensures that logging has been configured and returns the configured logger.
- * @return Log
- */
- protected function logger() {
- if (!$this->logConfigured) {
- $this->configureLogging();
- }
- return $this->logger;
- }
-
- /**
- * Sets the start-time when the build started. Used for calculating
- * the build-time.
- *
- * @param BuildEvent The BuildEvent
- */
- public function buildStarted(BuildEvent $event) {
- $this->startTime = Phing::currentTimeMillis();
- $this->logger()->setIdent($event->getProject()->getName());
- $this->logger()->info("Starting build with buildfile: ". $event->getProject()->getProperty("phing.file"));
- }
-
- /**
- * Logs whether the build succeeded or failed, and any errors that
- * occured during the build. Also outputs the total build-time.
- *
- * @param BuildEvent The BuildEvent
- * @see BuildEvent::getException()
- */
- public function buildFinished(BuildEvent $event) {
- $error = $event->getException();
- if ($error === null) {
- $msg = "Finished successful build.";
- } else {
- $msg = "Build failed. [reason: " . $error->getMessage() ."]";
- }
- $this->logger()->log($msg . " Total time: " . DefaultLogger::formatTime(Phing::currentTimeMillis() - $this->startTime));
- }
-
- /**
- * Logs the current target name
- *
- * @param BuildEvent The BuildEvent
- * @see BuildEvent::getTarget()
- */
- public function targetStarted(BuildEvent $event) {}
-
- /**
- * Fired when a target has finished. We don't need specific action on this
- * event. So the methods are empty.
- *
- * @param BuildEvent The BuildEvent
- * @access public
- * @see BuildEvent::getException()
- */
- public function targetFinished(BuildEvent $event) {}
-
- /**
- * Fired when a task is started. We don't need specific action on this
- * event. So the methods are empty.
- *
- * @param BuildEvent The BuildEvent
- * @access public
- * @see BuildEvent::getTask()
- */
- public function taskStarted(BuildEvent $event) {}
-
- /**
- * Fired when a task has finished. We don't need specific action on this
- * event. So the methods are empty.
- *
- * @param BuildEvent The BuildEvent
- * @see BuildEvent::getException()
- */
- public function taskFinished(BuildEvent $event) {}
-
- /**
- * Logs a message to the configured PEAR logger.
- *
- * @param BuildEvent The BuildEvent
- * @see BuildEvent::getMessage()
- */
- public function messageLogged(BuildEvent $event) {
- if ($event->getPriority() <= $this->msgOutputLevel) {
- $msg = "";
- if ($event->getTask() !== null) {
- $name = $event->getTask();
- $name = $name->getTaskName();
- $msg = str_pad("[$name] ", self::LEFT_COLUMN_SIZE, " ", STR_PAD_LEFT);
- }
- $msg .= $event->getMessage();
- $this->logger()->log($msg, self::$levelMap[$event->getPriority()]);
- }
- }
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/StreamRequiredBuildLogger.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/StreamRequiredBuildLogger.php
deleted file mode 100644
index f725aa60e0..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/StreamRequiredBuildLogger.php
+++ /dev/null
@@ -1,39 +0,0 @@
-.
- */
-
-require_once 'phing/BuildLogger.php';
-
-/**
- * Interface for build loggers that require that out/err streams be set in order to function.
- *
- * This is just an empty sub-interface to BuildLogger, but is used by Phing to throw
- * graceful errors when classes like phing.listener.DefaultLogger are being used as
- * -listener.
- *
- * @author Hans Lellelid
- * @version $Revision: 1.6 $
- * @see BuildEvent
- * @see Project::addBuildListener()
- * @package phing
- */
-interface StreamRequiredBuildLogger extends BuildLogger {
-
-}
\ No newline at end of file
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/XmlLogger.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/XmlLogger.php
deleted file mode 100644
index cc0f411e79..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/XmlLogger.php
+++ /dev/null
@@ -1,345 +0,0 @@
-.
- */
-
-require_once 'phing/BuildLogger.php';
-require_once 'phing/listener/DefaultLogger.php';
-require_once 'phing/system/util/Timer.php';
-
-/**
- * Generates a file in the current directory with
- * an XML description of what happened during a build.
- * The default filename is "log.xml", but this can be overridden
- * with the property XmlLogger.file.
- *
- * @author Michiel Rook
- * @version $Id: XmlLogger.php 291 2007-11-04 15:23:03Z hans $
- * @package phing.listener
- */
-class XmlLogger implements BuildLogger {
-
- /** XML element name for a build. */
- const BUILD_TAG = "build";
-
- /** XML element name for a target. */
- const TARGET_TAG = "target";
-
- /** XML element name for a task. */
- const TASK_TAG = "task";
-
- /** XML element name for a message. */
- const MESSAGE_TAG = "message";
-
- /** XML attribute name for a name. */
- const NAME_ATTR = "name";
-
- /** XML attribute name for a time. */
- const TIME_ATTR = "time";
-
- /** XML attribute name for a message priority. */
- const PRIORITY_ATTR = "priority";
-
- /** XML attribute name for a file location. */
- const LOCATION_ATTR = "location";
-
- /** XML attribute name for an error description. */
- const ERROR_ATTR = "error";
-
- /** XML element name for a stack trace. */
- const STACKTRACE_TAG = "stacktrace";
-
- /**
- * @var DOMDocument The XML document created by this logger.
- */
- private $doc;
-
- /**
- * @var int Start time for entire build.
- */
- private $buildTimerStart = 0;
-
- /**
- * @var DOMElement Top-level (root) build element
- */
- private $buildElement;
-
- /**
- * @var array DOMElement[] The parent of the element being processed.
- */
- private $elementStack = array();
-
- /**
- * @var array int[] Array of millisecond times for the various elements being processed.
- */
- private $timesStack = array();
-
- /**
- * @var int
- */
- private $msgOutputLevel = Project::MSG_DEBUG;
-
- /**
- * @var OutputStream Stream to use for standard output.
- */
- private $out;
-
- /**
- * @var OutputStream Stream to use for error output.
- */
- private $err;
-
- /**
- * @var string Name of filename to create.
- */
- private $outFilename;
-
- /**
- * Constructs a new BuildListener that logs build events to an XML file.
- */
- public function __construct() {
- $this->doc = new DOMDocument("1.0", "UTF-8");
- $this->doc->formatOutput = true;
- }
-
- /**
- * Fired when the build starts, this builds the top-level element for the
- * document and remembers the time of the start of the build.
- *
- * @param BuildEvent Ignored.
- */
- function buildStarted(BuildEvent $event) {
- $this->buildTimerStart = Phing::currentTimeMillis();
- $this->buildElement = $this->doc->createElement(XmlLogger::BUILD_TAG);
- array_push($this->elementStack, $this->buildElement);
- array_push($this->timesStack, $this->buildTimerStart);
- }
-
- /**
- * Fired when the build finishes, this adds the time taken and any
- * error stacktrace to the build element and writes the document to disk.
- *
- * @param BuildEvent $event An event with any relevant extra information.
- * Will not be null.
- */
- public function buildFinished(BuildEvent $event) {
-
- $elapsedTime = Phing::currentTimeMillis() - $this->buildTimerStart;
-
- $this->buildElement->setAttribute(XmlLogger::TIME_ATTR, DefaultLogger::formatTime($elapsedTime));
-
- if ($event->getException() != null) {
- $this->buildElement->setAttribute(XmlLogger::ERROR_ATTR, $event->getException()->getMessage());
- $errText = $this->doc->createCDATASection($event->getException()->getTraceAsString());
- $stacktrace = $this->doc->createElement(XmlLogger::STACKTRACE_TAG);
- $stacktrace->appendChild($errText);
- $this->buildElement->appendChild($stacktrace);
- }
-
- $this->doc->appendChild($this->buildElement);
-
- $outFilename = $event->getProject()->getProperty("XmlLogger.file");
- if ($outFilename == null) {
- $outFilename = "log.xml";
- }
-
- try {
- $stream = $this->out;
- if ($stream === null) {
- $stream = new FileOutputStream($outFilename);
- }
-
- // Yes, we could just stream->write() but this will eventually be the better
- // way to do this (when we need to worry about charset conversions.
- $writer = new OutputStreamWriter($stream);
- $writer->write($this->doc->saveXML());
- $writer->close();
- } catch (IOException $exc) {
- try {
- $stream->close(); // in case there is a stream open still ...
- } catch (Exception $x) {}
- throw new BuildException("Unable to write log file.", $exc);
- }
-
- // cleanup:remove the buildElement
- $this->buildElement = null;
-
- array_pop($this->elementStack);
- array_pop($this->timesStack);
- }
-
-
- /**
- * Fired when a target starts building, remembers the current time and the name of the target.
- *
- * @param BuildEvent $event An event with any relevant extra information.
- * Will not be null.
- */
- public function targetStarted(BuildEvent $event) {
- $target = $event->getTarget();
-
- $targetElement = $this->doc->createElement(XmlLogger::TARGET_TAG);
- $targetElement->setAttribute(XmlLogger::NAME_ATTR, $target->getName());
-
- array_push($this->timesStack, Phing::currentTimeMillis());
- array_push($this->elementStack, $targetElement);
- }
-
- /**
- * Fired when a target finishes building, this adds the time taken
- * to the appropriate target element in the log.
- *
- * @param BuildEvent $event An event with any relevant extra information.
- * Will not be null.
- */
- public function targetFinished(BuildEvent $event) {
- $targetTimerStart = array_pop($this->timesStack);
- $targetElement = array_pop($this->elementStack);
-
- $elapsedTime = Phing::currentTimeMillis() - $targetTimerStart;
- $targetElement->setAttribute(XmlLogger::TIME_ATTR, DefaultLogger::formatTime($elapsedTime));
-
- $parentElement = $this->elementStack[ count($this->elementStack) - 1 ];
- $parentElement->appendChild($targetElement);
- }
-
- /**
- * Fired when a task starts building, remembers the current time and the name of the task.
- *
- * @param BuildEvent $event An event with any relevant extra information.
- * Will not be null.
- */
- public function taskStarted(BuildEvent $event) {
- $task = $event->getTask();
-
- $taskElement = $this->doc->createElement(XmlLogger::TASK_TAG);
- $taskElement->setAttribute(XmlLogger::NAME_ATTR, $task->getTaskName());
- $taskElement->setAttribute(XmlLogger::LOCATION_ATTR, $task->getLocation()->toString());
-
- array_push($this->timesStack, Phing::currentTimeMillis());
- array_push($this->elementStack, $taskElement);
- }
-
- /**
- * Fired when a task finishes building, this adds the time taken
- * to the appropriate task element in the log.
- *
- * @param BuildEvent $event An event with any relevant extra information.
- * Will not be null.
- */
- public function taskFinished(BuildEvent $event) {
- $taskTimerStart = array_pop($this->timesStack);
- $taskElement = array_pop($this->elementStack);
-
- $elapsedTime = Phing::currentTimeMillis() - $taskTimerStart;
- $taskElement->setAttribute(XmlLogger::TIME_ATTR, DefaultLogger::formatTime($elapsedTime));
-
- $parentElement = $this->elementStack[ count($this->elementStack) - 1 ];
- $parentElement->appendChild($taskElement);
- }
-
- /**
- * Fired when a message is logged, this adds a message element to the
- * most appropriate parent element (task, target or build) and records
- * the priority and text of the message.
- *
- * @param BuildEvent An event with any relevant extra information.
- * Will not be null.
- */
- public function messageLogged(BuildEvent $event)
- {
- $priority = $event->getPriority();
-
- if ($priority > $this->msgOutputLevel) {
- return;
- }
-
- $messageElement = $this->doc->createElement(XmlLogger::MESSAGE_TAG);
-
- switch ($priority) {
- case Project::MSG_ERR:
- $name = "error";
- break;
- case Project::MSG_WARN:
- $name = "warn";
- break;
- case Project::MSG_INFO:
- $name = "info";
- break;
- default:
- $name = "debug";
- break;
- }
-
- $messageElement->setAttribute(XmlLogger::PRIORITY_ATTR, $name);
-
- $messageText = $this->doc->createCDATASection($event->getMessage());
-
- $messageElement->appendChild($messageText);
-
- if (!empty($this->elementStack)) {
- $this->elementStack[count($this->elementStack)-1]->appendChild($messageElement);
- }
- }
-
- /**
- * Set the msgOutputLevel this logger is to respond to.
- *
- * Only messages with a message level lower than or equal to the given
- * level are output to the log.
- *
- *
Constants for the message levels are in Project.php. The order of
- * the levels, from least to most verbose, is:
- *
- *
adding a reference to the target (if id attribute is given)
- *
- *
- * @param string the tag that comes in
- * @param array attributes the tag carries
- * @throws ExpatParseException if attributes are incomplete or invalid
- */
- function init($tag, $attrs) {
- $name = null;
- $depends = "";
- $ifCond = null;
- $unlessCond = null;
- $id = null;
- $description = null;
-
- foreach($attrs as $key => $value) {
- if ($key==="name") {
- $name = (string) $value;
- } else if ($key==="depends") {
- $depends = (string) $value;
- } else if ($key==="if") {
- $ifCond = (string) $value;
- } else if ($key==="unless") {
- $unlessCond = (string) $value;
- } else if ($key==="id") {
- $id = (string) $value;
- } else if ($key==="description") {
- $description = (string)$value;
- } else {
- throw new ExpatParseException("Unexpected attribute '$key'", $this->parser->getLocation());
- }
- }
-
- if ($name === null) {
- throw new ExpatParseException("target element appears without a name attribute", $this->parser->getLocation());
- }
-
- // shorthand
- $project = $this->configurator->project;
-
- $this->target = new Target();
- $this->target->setName($name);
- $this->target->setIf($ifCond);
- $this->target->setUnless($unlessCond);
- $this->target->setDescription($description);
-
- $project->addTarget($name, $this->target);
-
- if ($id !== null && $id !== "") {
- $project->addReference($id, $this->target);
- }
- // take care of dependencies
- if (strlen($depends) > 0) {
- $this->target->setDepends($depends);
- }
-
- }
-
- /**
- * Checks for nested tags within the current one. Creates and calls
- * handlers respectively.
- *
- * @param string the tag that comes in
- * @param array attributes the tag carries
- */
- function startElement($name, $attrs) {
- // shorthands
- $project = $this->configurator->project;
- $types = $project->getDataTypeDefinitions();
-
- if (isset($types[$name])) {
- $th = new DataTypeHandler($this->parser, $this, $this->configurator, $this->target);
- $th->init($name, $attrs);
- } else {
- $tmp = new TaskHandler($this->parser, $this, $this->configurator, $this->target, null, $this->target);
- $tmp->init($name, $attrs);
- }
- }
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/TaskHandler.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/TaskHandler.php
deleted file mode 100644
index 7722952536..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/TaskHandler.php
+++ /dev/null
@@ -1,234 +0,0 @@
-.
- */
-
-include_once 'phing/UnknownElement.php';
-
-/**
- * The task handler class.
- *
- * This class handles the occurance of a tag and it's possible
- * nested tags (datatypes and tasks) that may be unknown off bat and are
- * initialized on the fly.
- *
- * @author Andreas Aderhold
- * @copyright � 2001,2002 THYRELL. All rights reserved
- * @version $Revision: 1.10 $
- * @package phing.parser
- */
-class TaskHandler extends AbstractHandler {
-
- /**
- * Reference to the target object that contains the currently parsed
- * task
- * @var object the target instance
- */
- private $target;
-
- /**
- * Reference to the target object that represents the currently parsed
- * target. This must not necessarily be a target, hence extra variable.
- * @var object the target instance
- */
- private $container;
-
- /**
- * Reference to the task object that represents the currently parsed
- * target.
- * @var Task
- */
- private $task;
-
- /**
- * Wrapper for the parent element, if any. The wrapper for this
- * element will be added to this wrapper as a child.
- * @var RuntimeConfigurable
- */
- private $parentWrapper;
-
- /**
- * Wrapper for this element which takes care of actually configuring
- * the element, if this element is contained within a target.
- * Otherwise the configuration is performed with the configure method.
- * @see ProjectHelper::configure(Object,AttributeList,Project)
- */
- private $wrapper;
-
- /**
- * The phing project configurator object
- * @var ProjectConfigurator
- */
- private $configurator;
-
- /**
- * Constructs a new TaskHandler and sets up everything.
- *
- * @param AbstractSAXParser The ExpatParser object
- * @param object $parentHandler The parent handler that invoked this handler
- * @param ProjectConfigurator $configurator
- * @param TaskContainer $container The container object this task is contained in (null for top-level tasks).
- * @param RuntimeConfigurable $parentWrapper Wrapper for the parent element, if any.
- * @param Target $target The target object this task is contained in (null for top-level tasks).
- */
- function __construct(AbstractSAXParser $parser, $parentHandler, ProjectConfigurator $configurator, $container = null, $parentWrapper = null, $target = null) {
-
- parent::__construct($parser, $parentHandler);
-
- if (($container !== null) && !($container instanceof TaskContainer)) {
- throw new Exception("Argument expected to be a TaskContainer, got something else");
- }
- if (($parentWrapper !== null) && !($parentWrapper instanceof RuntimeConfigurable)) {
- throw new Exception("Argument expected to be a RuntimeConfigurable, got something else.");
- }
- if (($target !== null) && !($target instanceof Target)) {
- throw new Exception("Argument expected to be a Target, got something else");
- }
-
- $this->configurator = $configurator;
- $this->container = $container;
- $this->parentWrapper = $parentWrapper;
- $this->target = $target;
- }
-
- /**
- * Executes initialization actions required to setup the data structures
- * related to the tag.
- *
- * This includes:
- *
- *
creation of the task object
- *
calling the setters for attributes
- *
adding the task to the container object
- *
adding a reference to the task (if id attribute is given)
- *
executing the task if the container is the <project>
- * element
- *
- *
- * @param string $tag The tag that comes in
- * @param array $attrs Attributes the tag carries
- * @throws ExpatParseException if attributes are incomplete or invalid
- */
- function init($tag, $attrs) {
- // shorthands
- try {
- $configurator = $this->configurator;
- $project = $this->configurator->project;
-
- $this->task = $project->createTask($tag);
- } catch (BuildException $be) {
- // swallow here, will be thrown again in
- // UnknownElement->maybeConfigure if the problem persists.
- print("Swallowing exception: ".$be->getMessage() . "\n");
- }
-
- // the task is not known of bat, try to load it on thy fly
- if ($this->task === null) {
- $this->task = new UnknownElement($tag);
- $this->task->setProject($project);
- $this->task->setTaskType($tag);
- $this->task->setTaskName($tag);
- }
-
- // add file position information to the task (from parser)
- // should be used in task exceptions to provide details
- $this->task->setLocation($this->parser->getLocation());
- $configurator->configureId($this->task, $attrs);
-
- if ($this->container) {
- $this->container->addTask($this->task);
- }
-
- // Top level tasks don't have associated targets
- // FIXME: if we do like Ant 1.6 and create an implicitTarget in the projectconfigurator object
- // then we don't need to check for null here ... but there's a lot of stuff that will break if we
- // do that at this point.
- if ($this->target !== null) {
- $this->task->setOwningTarget($this->target);
- $this->task->init();
- $this->wrapper = $this->task->getRuntimeConfigurableWrapper();
- $this->wrapper->setAttributes($attrs);
- /*
- Commenting this out as per thread on Premature configurate of ReuntimeConfigurables
- with Matthias Pigulla: http://phing.tigris.org/servlets/ReadMsg?list=dev&msgNo=251
-
- if ($this->parentWrapper !== null) { // this may not make sense only within this if-block, but it
- // seems to address current use cases adequately
- $this->parentWrapper->addChild($this->wrapper);
- }
- */
- } else {
- $this->task->init();
- $configurator->configure($this->task, $attrs, $project);
- }
- }
-
- /**
- * Executes the task at once if it's directly beneath the tag.
- */
- protected function finished() {
- if ($this->task !== null && $this->target === null && $this->container === null) {
- try {
- $this->task->perform();
- } catch (Exception $e) {
- $this->task->log($e->getMessage(), Project::MSG_ERR);
- throw $e;
- }
- }
- }
-
- /**
- * Handles character data.
- *
- * @param string $data The CDATA that comes in
- */
- function characters($data) {
- if ($this->wrapper === null) {
- $configurator = $this->configurator;
- $project = $this->configurator->project;
- try { // try
- $configurator->addText($project, $this->task, $data);
- } catch (BuildException $exc) {
- throw new ExpatParseException($exc->getMessage(), $this->parser->getLocation());
- }
- } else {
- $this->wrapper->addText($data);
- }
- }
-
- /**
- * Checks for nested tags within the current one. Creates and calls
- * handlers respectively.
- *
- * @param string $name The tag that comes in
- * @param array $attrs Attributes the tag carries
- */
- function startElement($name, $attrs) {
- $project = $this->configurator->project;
- if ($this->task instanceof TaskContainer) {
- //print("TaskHandler::startElement() (TaskContainer) name = $name, attrs = " . implode(",",$attrs) . "\n");
- $th = new TaskHandler($this->parser, $this, $this->configurator, $this->task, $this->wrapper, $this->target);
- $th->init($name, $attrs);
- } else {
- //print("TaskHandler::startElement() name = $name, attrs = " . implode(",",$attrs) . "\n");
- $tmp = new NestedElementHandler($this->parser, $this, $this->configurator, $this->task, $this->wrapper, $this->target);
- $tmp->init($name, $attrs);
- }
- }
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/BufferedReader.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/BufferedReader.php
deleted file mode 100644
index a006208cb3..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/BufferedReader.php
+++ /dev/null
@@ -1,168 +0,0 @@
-.
-*/
-
-include_once 'phing/system/io/Reader.php';
-
-/*
- * Convenience class for reading files.
- *
- * @author Yannick Lecaillez
- * @version $Revision: 1.6 $ $Date: 2007-08-27 19:17:00 -0700 (Mon, 27 Aug 2007) $
- * @access public
- * @see FilterReader
- * @package phing.system.io
-*/
-class BufferedReader extends Reader {
-
- private $bufferSize = 0;
- private $buffer = null;
- private $bufferPos = 0;
-
- /**
- * The Reader we are buffering for.
- */
- private $in;
-
- /**
- *
- * @param object $reader The reader (e.g. FileReader).
- * @param integer $buffsize The size of the buffer we should use for reading files.
- * A large buffer ensures that most files (all scripts?) are parsed in 1 buffer.
- */
- function __construct(Reader $reader, $buffsize = 65536) {
- $this->in = $reader;
- $this->bufferSize = $buffsize;
- }
-
- /**
- * Reads and returns a chunk of data.
- * @param int $len Number of bytes to read. Default is to read configured buffer size number of bytes.
- * @return mixed buffer or -1 if EOF.
- */
- function read($len = null) {
-
- // if $len is specified, we'll use that; otherwise, use the configured buffer size.
- if ($len === null) $len = $this->bufferSize;
-
- if ( ($data = $this->in->read($len)) !== -1 ) {
-
- // not all files end with a newline character, so we also need to check EOF
- if (!$this->in->eof()) {
-
- $notValidPart = strrchr($data, "\n");
- $notValidPartSize = strlen($notValidPart);
-
- if ( $notValidPartSize > 1 ) {
- // Block doesn't finish on a EOL
- // Find the last EOL and forget all following stuff
- $dataSize = strlen($data);
- $validSize = $dataSize - $notValidPartSize + 1;
-
- $data = substr($data, 0, $validSize);
-
- // Rewind to the begining of the forgotten stuff.
- $this->in->skip(-$notValidPartSize+1);
- }
-
- } // if !EOF
- }
- return $data;
- }
-
- function skip($n) {
- return $this->in->skip($n);
- }
-
- function reset() {
- return $this->in->reset();
- }
-
- function close() {
- return $this->in->close();
- }
-
- function open() {
- return $this->in->open();
- }
-
- /**
- * Read a line from input stream.
- */
- function readLine() {
- $line = null;
- while ( ($ch = $this->readChar()) !== -1 ) {
- if ( $ch === "\n" ) {
- break;
- }
- $line .= $ch;
- }
-
- // Warning : Not considering an empty line as an EOF
- if ( $line === null && $ch !== -1 )
- return "";
-
- return $line;
- }
-
- /**
- * Reads a single char from the reader.
- * @return string single char or -1 if EOF.
- */
- function readChar() {
-
- if ( $this->buffer === null ) {
- // Buffer is empty, fill it ...
- $read = $this->in->read($this->bufferSize);
- if ($read === -1) {
- $ch = -1;
- } else {
- $this->buffer = $read;
- return $this->readChar(); // recurse
- }
- } else {
- // Get next buffered char ...
- // handle case where buffer is read-in, but is empty. The next readChar() will return -1 EOF,
- // so we just return empty string (char) at this point. (Probably could also return -1 ...?)
- $ch = ($this->buffer !== "") ? $this->buffer[$this->bufferPos] : '';
- $this->bufferPos++;
- if ( $this->bufferPos >= strlen($this->buffer) ) {
- $this->buffer = null;
- $this->bufferPos = 0;
- }
- }
-
- return $ch;
- }
-
- /**
- * Returns whether eof has been reached in stream.
- * This is important, because filters may want to know if the end of the file (and not just buffer)
- * has been reached.
- * @return boolean
- */
- function eof() {
- return $this->in->eof();
- }
-
- function getResource() {
- return $this->in->getResource();
- }
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/BufferedWriter.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/BufferedWriter.php
deleted file mode 100644
index 999c4bfc3d..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/BufferedWriter.php
+++ /dev/null
@@ -1,71 +0,0 @@
-.
- */
-
-include_once 'phing/system/io/Writer.php';
-
-/**
- * Convenience class for writing files.
- *
- * @author Hans Lellelid
- * @version $Revision: 1.10 $
- * @package phing.system.io
- */
-class BufferedWriter extends Writer {
-
- /**
- * The size of the buffer in kb.
- */
- private $bufferSize = 0;
-
- /**
- * @var Writer The Writer we are buffering output to.
- */
- private $out;
-
- public function __construct(Writer $writer, $buffsize = 8192) {
- $this->out = $writer;
- $this->bufferSize = $buffsize;
- }
-
- public function write($buf, $off = null, $len = null) {
- return $this->out->write($buf, $off, $len);
- }
-
- public function newLine() {
- $this->write(PHP_EOL);
- }
-
- public function getResource() {
- return $this->out->getResource();
- }
-
- public function flush() {
- $this->out->flush();
- }
-
- /**
- * Close attached stream.
- */
- public function close() {
- return $this->out->close();
- }
-
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/ConsoleReader.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/ConsoleReader.php
deleted file mode 100644
index 9b81cc7f86..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/ConsoleReader.php
+++ /dev/null
@@ -1,84 +0,0 @@
-.
- */
-
-include_once 'phing/system/io/Reader.php';
-
-/**
- * Convenience class for reading console input.
- *
- * @author Hans Lellelid
- * @author Matthew Hershberger
- * @version $Revision: 1.4 $
- * @package phing.system.io
- */
-class ConsoleReader extends Reader {
-
- function readLine() {
-
- $out = fgets(STDIN); // note: default maxlen is 1kb
- $out = rtrim($out);
-
- return $out;
- }
-
- /**
- *
- * @param int $len Num chars to read.
- * @return string chars read or -1 if eof.
- */
- function read($len = null) {
-
- $out = fread(STDIN, $len);
-
-
- return $out;
- // FIXME
- // read by chars doesn't work (yet?) with PHP stdin. Maybe
- // this is just a language feature, maybe there's a way to get
- // ability to read chars w/o ?
-
- }
-
- function close() {
- // STDIN is always open
- }
-
- function open() {
- // STDIN is always open
- }
-
- /**
- * Whether eof has been reached with stream.
- * @return boolean
- */
- function eof() {
- return feof(STDIN);
- }
-
- /**
- * Returns path to file we are reading.
- * @return string
- */
- function getResource() {
- return "console";
- }
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileInputStream.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileInputStream.php
deleted file mode 100644
index 1515789848..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileInputStream.php
+++ /dev/null
@@ -1,76 +0,0 @@
-.
- */
-
-require_once 'phing/system/io/InputStream.php';
-require_once 'phing/system/io/PhingFile.php';
-
-/**
- * Input stream subclass for file streams.
- *
- * @package phing.system.io
- */
-class FileInputStream extends InputStream {
-
- /**
- * @var PhingFile The associated file.
- */
- protected $file;
-
- /**
- * Construct a new FileInputStream.
- * @param mixed $file
- * @throws Exception - if invalid argument specified.
- * @throws IOException - if unable to open file.
- */
- public function __construct($file, $append = false) {
- if ($file instanceof PhingFile) {
- $this->file = $file;
- } elseif (is_string($file)) {
- $this->file = new PhingFile($file);
- } else {
- throw new Exception("Invalid argument type for \$file.");
- }
-
- $stream = @fopen($this->file->getAbsolutePath(), "rb");
- if ($stream === false) {
- throw new IOException("Unable to open " . $this->file->__toString() . " for reading: " . $php_errormsg);
- }
-
- parent::__construct($stream);
- }
-
- /**
- * Returns a string representation of the attached file.
- * @return string
- */
- public function __toString() {
- return $this->file->getPath();
- }
-
- /**
- * Mark is supported by FileInputStream.
- * @return boolean TRUE
- */
- public function markSupported() {
- return true;
- }
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileOutputStream.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileOutputStream.php
deleted file mode 100644
index be31804599..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileOutputStream.php
+++ /dev/null
@@ -1,71 +0,0 @@
-.
- */
-
-require_once 'phing/system/io/OutputStream.php';
-require_once 'phing/system/io/PhingFile.php';
-
-/**
- * Output stream subclass for file streams.
- *
- * @package phing.system.io
- */
-class FileOutputStream extends OutputStream {
-
- /**
- * @var PhingFile The associated file.
- */
- protected $file;
-
- /**
- * Construct a new FileOutputStream.
- * @param mixed $file
- * @param boolean $append Whether to append bytes to end of file rather than beginning.
- * @throws Exception - if invalid argument specified.
- * @throws IOException - if unable to open file.
- */
- public function __construct($file, $append = false) {
- if ($file instanceof PhingFile) {
- $this->file = $file;
- } elseif (is_string($file)) {
- $this->file = new PhingFile($file);
- } else {
- throw new Exception("Invalid argument type for \$file.");
- }
- if ($append) {
- $stream = @fopen($this->file->getAbsolutePath(), "ab");
- } else {
- $stream = @fopen($this->file->getAbsolutePath(), "wb");
- }
- if ($stream === false) {
- throw new IOException("Unable to open " . $this->file->__toString() . " for writing: " . $php_errormsg);
- }
- parent::__construct($stream);
- }
-
- /**
- * Returns a string representation of the attached file.
- * @return string
- */
- public function __toString() {
- return $this->file->getPath();
- }
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileReader.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileReader.php
deleted file mode 100644
index 4f8b2cd694..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileReader.php
+++ /dev/null
@@ -1,41 +0,0 @@
-.
- */
-
-require_once 'phing/system/io/InputStreamReader.php';
-require_once 'phing/system/io/FileInputStream.php';
-
-/**
- * Convenience class for reading files.
- * @package phing.system.io
- */
-class FileReader extends InputStreamReader {
-
- /**
- * Construct a new FileReader.
- * @param mixed $file PhingFile or string pathname.
- */
- public function __construct($file) {
- $in = new FileInputStream($file);
- parent::__construct($in);
- }
-
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileSystem.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileSystem.php
deleted file mode 100644
index 8e9c78c6c7..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileSystem.php
+++ /dev/null
@@ -1,686 +0,0 @@
-.
- */
-
-/**
- * This is an abstract class for platform specific filesystem implementations
- * you have to implement each method in the platform specific filesystem implementation
- * classes Your local filesytem implementation must extend this class.
- * You should also use this class as a template to write your local implementation
- * Some native PHP filesystem specific methods are abstracted here as well. Anyway
- * you _must_ always use this methods via a PhingFile object (that by nature uses the
- * *FileSystem drivers to access the real filesystem via this class using natives.
- *
- * FIXME:
- * - Error handling reduced to min fallthrough runtime excetions
- * more precise errorhandling is done by the PhingFile class
- *
- * @author Charlie Killian
- * @author Hans Lellelid
- * @version $Revision: 1.11 $
- * @package phing.system.io
- */
-abstract class FileSystem {
-
- /* properties for simple boolean attributes */
- const BA_EXISTS = 0x01;
- const BA_REGULAR = 0x02;
- const BA_DIRECTORY = 0x04;
- const BA_HIDDEN = 0x08;
-
- /** Instance for getFileSystem() method. */
- private static $fs;
-
- /**
- * Static method to return the FileSystem singelton representing
- * this platform's local filesystem driver.
- * @return FileSystem
- */
- public static function getFileSystem() {
- if (self::$fs === null) {
- switch(Phing::getProperty('host.fstype')) {
- case 'UNIX':
- include_once 'phing/system/io/UnixFileSystem.php';
- self::$fs = new UnixFileSystem();
- break;
- case 'WIN32':
- include_once 'phing/system/io/Win32FileSystem.php';
- self::$fs = new Win32FileSystem();
- break;
- case 'WINNT':
- include_once 'phing/system/io/WinNTFileSystem.php';
- self::$fs = new WinNTFileSystem();
- break;
- default:
- throw new Exception("Host uses unsupported filesystem, unable to proceed");
- }
- }
- return self::$fs;
- }
-
- /* -- Normalization and construction -- */
-
- /**
- * Return the local filesystem's name-separator character.
- */
- abstract function getSeparator();
-
- /**
- * Return the local filesystem's path-separator character.
- */
- abstract function getPathSeparator();
-
- /**
- * Convert the given pathname string to normal form. If the string is
- * already in normal form then it is simply returned.
- */
- abstract function normalize($strPath);
-
- /**
- * Compute the length of this pathname string's prefix. The pathname
- * string must be in normal form.
- */
- abstract function prefixLength($pathname);
-
- /**
- * Resolve the child pathname string against the parent.
- * Both strings must be in normal form, and the result
- * will be a string in normal form.
- */
- abstract function resolve($parent, $child);
-
- /**
- * Resolve the given abstract pathname into absolute form. Invoked by the
- * getAbsolutePath and getCanonicalPath methods in the PhingFile class.
- */
- abstract function resolveFile(PhingFile $f);
-
- /**
- * Return the parent pathname string to be used when the parent-directory
- * argument in one of the two-argument PhingFile constructors is the empty
- * pathname.
- */
- abstract function getDefaultParent();
-
- /**
- * Post-process the given URI path string if necessary. This is used on
- * win32, e.g., to transform "/c:/foo" into "c:/foo". The path string
- * still has slash separators; code in the PhingFile class will translate them
- * after this method returns.
- */
- abstract function fromURIPath($path);
-
- /* -- Path operations -- */
-
- /**
- * Tell whether or not the given abstract pathname is absolute.
- */
- abstract function isAbsolute(PhingFile $f);
-
- /**
- * canonicalize filename by checking on disk
- * @return mixed Canonical path or false if the file doesn't exist.
- */
- function canonicalize($strPath) {
- return @realpath($strPath);
- }
-
- /* -- Attribute accessors -- */
-
- /**
- * Return the simple boolean attributes for the file or directory denoted
- * by the given abstract pathname, or zero if it does not exist or some
- * other I/O error occurs.
- */
- function getBooleanAttributes($f) {
- throw new Exception("SYSTEM ERROR method getBooleanAttributes() not implemented by fs driver");
- }
-
- /**
- * Check whether the file or directory denoted by the given abstract
- * pathname may be accessed by this process. If the second argument is
- * false, then a check for read access is made; if the second
- * argument is true, then a check for write (not read-write)
- * access is made. Return false if access is denied or an I/O error
- * occurs.
- */
- function checkAccess(PhingFile $f, $write = false) {
- // we clear stat cache, its expensive to look up from scratch,
- // but we need to be sure
- @clearstatcache();
-
-
- // Shouldn't this be $f->GetAbsolutePath() ?
- // And why doesn't GetAbsolutePath() work?
-
- $strPath = (string) $f->getPath();
-
- // FIXME
- // if file object does denote a file that yet not existst
- // path rights are checked
- if (!@file_exists($strPath) && !is_dir($strPath)) {
- $strPath = $f->getParent();
- if ($strPath === null || !is_dir($strPath)) {
- $strPath = Phing::getProperty("user.dir");
- }
- //$strPath = dirname($strPath);
- }
-
- if (!$write) {
- return (boolean) @is_readable($strPath);
- } else {
- return (boolean) @is_writable($strPath);
- }
- }
-
- /**
- * Whether file can be deleted.
- * @param PhingFile $f
- * @return boolean
- */
- function canDelete(PhingFile $f)
- {
- clearstatcache();
- $dir = dirname($f->getAbsolutePath());
- return (bool) @is_writable($dir);
- }
-
- /**
- * Return the time at which the file or directory denoted by the given
- * abstract pathname was last modified, or zero if it does not exist or
- * some other I/O error occurs.
- */
- function getLastModifiedTime(PhingFile $f) {
-
- if (!$f->exists()) {
- return 0;
- }
-
- @clearstatcache();
- $strPath = (string) $f->getPath();
- $mtime = @filemtime($strPath);
- if (false === $mtime) {
- // FAILED. Log and return err.
- $msg = "FileSystem::Filemtime() FAILED. Cannot can not get modified time of $strPath. $php_errormsg";
- throw new Exception($msg);
- } else {
- return (int) $mtime;
- }
- }
-
- /**
- * Return the length in bytes of the file denoted by the given abstract
- * pathname, or zero if it does not exist, is a directory, or some other
- * I/O error occurs.
- */
- function getLength(PhingFile $f) {
- $strPath = (string) $f->getAbsolutePath();
- $fs = filesize((string) $strPath);
- if ($fs !== false) {
- return $fs;
- } else {
- $msg = "FileSystem::Read() FAILED. Cannot get filesize of $strPath. $php_errormsg";
- throw new Exception($msg);
- }
- }
-
- /* -- File operations -- */
-
- /**
- * Create a new empty file with the given pathname. Return
- * true if the file was created and false if a
- * file or directory with the given pathname already exists. Throw an
- * IOException if an I/O error occurs.
- *
- * @param string Path of the file to be created.
- *
- * @throws IOException
- */
- function createNewFile($strPathname) {
- if (@file_exists($strPathname))
- return false;
-
- // Create new file
- $fp = @fopen($strPathname, "w");
- if ($fp === false) {
- throw new IOException("The file \"$strPathname\" could not be created");
- }
- @fclose($fp);
- return true;
- }
-
- /**
- * Delete the file or directory denoted by the given abstract pathname,
- * returning true if and only if the operation succeeds.
- */
- function delete(PhingFile $f) {
- if ($f->isDirectory()) {
- return $this->rmdir($f->getPath());
- } else {
- return $this->unlink($f->getPath());
- }
- }
-
- /**
- * Arrange for the file or directory denoted by the given abstract
- * pathname to be deleted when Phing::shutdown is called, returning
- * true if and only if the operation succeeds.
- */
- function deleteOnExit($f) {
- throw new Exception("deleteOnExit() not implemented by local fs driver");
- }
-
- /**
- * List the elements of the directory denoted by the given abstract
- * pathname. Return an array of strings naming the elements of the
- * directory if successful; otherwise, return null.
- */
- function listDir(PhingFile $f) {
- $strPath = (string) $f->getAbsolutePath();
- $d = @dir($strPath);
- if (!$d) {
- return null;
- }
- $list = array();
- while($entry = $d->read()) {
- if ($entry != "." && $entry != "..") {
- array_push($list, $entry);
- }
- }
- $d->close();
- unset($d);
- return $list;
- }
-
- /**
- * Create a new directory denoted by the given abstract pathname,
- * returning true if and only if the operation succeeds.
- */
- function createDirectory(&$f) {
- return @mkdir($f->getAbsolutePath(),0755);
- }
-
- /**
- * Rename the file or directory denoted by the first abstract pathname to
- * the second abstract pathname, returning true if and only if
- * the operation succeeds.
- *
- * @param PhingFile $f1 abstract source file
- * @param PhingFile $f2 abstract destination file
- * @return void
- * @throws Exception if rename cannot be performed
- */
- function rename(PhingFile $f1, PhingFile $f2) {
- // get the canonical paths of the file to rename
- $src = $f1->getAbsolutePath();
- $dest = $f2->getAbsolutePath();
- if (false === @rename($src, $dest)) {
- $msg = "Rename FAILED. Cannot rename $src to $dest. $php_errormsg";
- throw new Exception($msg);
- }
- }
-
- /**
- * Set the last-modified time of the file or directory denoted by the
- * given abstract pathname returning true if and only if the
- * operation succeeds.
- * @return void
- * @throws Exception
- */
- function setLastModifiedTime(PhingFile $f, $time) {
- $path = $f->getPath();
- $success = @touch($path, $time);
- if (!$success) {
- throw new Exception("Could not touch '" . $path . "' due to: $php_errormsg");
- }
- }
-
- /**
- * Mark the file or directory denoted by the given abstract pathname as
- * read-only, returning true if and only if the operation
- * succeeds.
- */
- function setReadOnly($f) {
- throw new Exception("setReadonle() not implemented by local fs driver");
- }
-
- /* -- Filesystem interface -- */
-
- /**
- * List the available filesystem roots, return array of PhingFile objects
- */
- function listRoots() {
- throw new Exception("SYSTEM ERROR [listRoots() not implemented by local fs driver]");
- }
-
- /* -- Basic infrastructure -- */
-
- /**
- * Compare two abstract pathnames lexicographically.
- */
- function compare($f1, $f2) {
- throw new Exception("SYSTEM ERROR [compare() not implemented by local fs driver]");
- }
-
- /**
- * Copy a file.
- *
- * @param PhingFile $src Source path and name file to copy.
- * @param PhingFile $dest Destination path and name of new file.
- *
- * @return void
- * @throws Exception if file cannot be copied.
- */
- function copy(PhingFile $src, PhingFile $dest) {
- global $php_errormsg;
- $srcPath = $src->getAbsolutePath();
- $destPath = $dest->getAbsolutePath();
-
- if (false === @copy($srcPath, $destPath)) { // Copy FAILED. Log and return err.
- // Add error from php to end of log message. $php_errormsg.
- $msg = "FileSystem::copy() FAILED. Cannot copy $srcPath to $destPath. $php_errormsg";
- throw new Exception($msg);
- }
-
- try {
- $dest->setMode($src->getMode());
- } catch(Exception $exc) {
- // [MA] does chmod returns an error on systems that do not support it ?
- // eat it up for now.
- }
- }
-
- /**
- * Change the ownership on a file or directory.
- *
- * @param string $pathname Path and name of file or directory.
- * @param string $user The user name or number of the file or directory. See http://us.php.net/chown
- *
- * @return void
- * @throws Exception if operation failed.
- */
- function chown($pathname, $user) {
- if (false === @chown($pathname, $user)) {// FAILED.
- $msg = "FileSystem::chown() FAILED. Cannot chown $pathname. User $user." . (isset($php_errormsg) ? ' ' . $php_errormsg : "");
- throw new Exception($msg);
- }
- }
-
- /**
- * Change the permissions on a file or directory.
- *
- * @param pathname String. Path and name of file or directory.
- * @param mode Int. The mode (permissions) of the file or
- * directory. If using octal add leading 0. eg. 0777.
- * Mode is affected by the umask system setting.
- *
- * @return void
- * @throws Exception if operation failed.
- */
- function chmod($pathname, $mode) {
- $str_mode = decoct($mode); // Show octal in messages.
- if (false === @chmod($pathname, $mode)) {// FAILED.
- $msg = "FileSystem::chmod() FAILED. Cannot chmod $pathname. Mode $str_mode." . (isset($php_errormsg) ? ' ' . $php_errormsg : "");
- throw new Exception($msg);
- }
- }
-
- /**
- * Locks a file and throws an Exception if this is not possible.
- * @return void
- * @throws Exception
- */
- function lock(PhingFile $f) {
- $filename = $f->getPath();
- $fp = @fopen($filename, "w");
- $result = @flock($fp, LOCK_EX);
- @fclose($fp);
- if (!$result) {
- throw new Exception("Could not lock file '$filename'");
- }
- }
-
- /**
- * Unlocks a file and throws an IO Error if this is not possible.
- *
- * @throws Exception
- * @return void
- */
- function unlock(PhingFile $f) {
- $filename = $f->getPath();
- $fp = @fopen($filename, "w");
- $result = @flock($fp, LOCK_UN);
- fclose($fp);
- if (!$result) {
- throw new Exception("Could not unlock file '$filename'");
- }
- }
-
- /**
- * Delete a file.
- *
- * @param file String. Path and/or name of file to delete.
- *
- * @return void
- * @throws Exception - if an error is encountered.
- */
- function unlink($file) {
- global $php_errormsg;
- if (false === @unlink($file)) {
- $msg = "FileSystem::unlink() FAILED. Cannot unlink '$file'. $php_errormsg";
- throw new Exception($msg);
- }
- }
-
- /**
- * Symbolically link a file to another name.
- *
- * Currently symlink is not implemented on Windows. Don't use if the application is to be portable.
- *
- * @param string $target Path and/or name of file to link.
- * @param string $link Path and/or name of link to be created.
- * @return void
- */
- function symlink($target, $link) {
-
- // If Windows OS then symlink() will report it is not supported in
- // the build. Use this error instead of checking for Windows as the OS.
-
- if (false === @symlink($target, $link)) {
- // Add error from php to end of log message. $php_errormsg.
- $msg = "FileSystem::Symlink() FAILED. Cannot symlink '$target' to '$link'. $php_errormsg";
- throw new Exception($msg);
- }
-
- }
-
- /**
- * Set the modification and access time on a file to the present time.
- *
- * @param string $file Path and/or name of file to touch.
- * @param int $time
- * @return void
- */
- function touch($file, $time = null) {
- global $php_errormsg;
-
- if (null === $time) {
- $error = @touch($file);
- } else {
- $error = @touch($file, $time);
- }
-
- if (false === $error) { // FAILED.
- // Add error from php to end of log message. $php_errormsg.
- $msg = "FileSystem::touch() FAILED. Cannot touch '$file'. $php_errormsg";
- throw new Exception($msg);
- }
- }
-
- /**
- * Delete an empty directory OR a directory and all of its contents.
- *
- * @param dir String. Path and/or name of directory to delete.
- * @param children Boolean. False: don't delete directory contents.
- * True: delete directory contents.
- *
- * @return void
- */
- function rmdir($dir, $children = false) {
- global $php_errormsg;
-
- // If children=FALSE only delete dir if empty.
- if (false === $children) {
-
- if (false === @rmdir($dir)) { // FAILED.
- // Add error from php to end of log message. $php_errormsg.
- $msg = "FileSystem::rmdir() FAILED. Cannot rmdir $dir. $php_errormsg";
- throw new Exception($msg);
- }
-
- } else { // delete contents and dir.
-
- $handle = @opendir($dir);
-
- if (false === $handle) { // Error.
-
- $msg = "FileSystem::rmdir() FAILED. Cannot opendir() $dir. $php_errormsg";
- throw new Exception($msg);
-
- } else { // Read from handle.
-
- // Don't error on readdir().
- while (false !== ($entry = @readdir($handle))) {
-
- if ($entry != '.' && $entry != '..') {
-
- // Only add / if it isn't already the last char.
- // This ONLY serves the purpose of making the Logger
- // output look nice:)
-
- if (strpos(strrev($dir), DIRECTORY_SEPARATOR) === 0) {// there is a /
- $next_entry = $dir . $entry;
- } else { // no /
- $next_entry = $dir . DIRECTORY_SEPARATOR . $entry;
- }
-
- // NOTE: As of php 4.1.1 is_dir doesn't return FALSE it
- // returns 0. So use == not ===.
-
- // Don't error on is_dir()
- if (false == @is_dir($next_entry)) { // Is file.
-
- try {
- self::unlink($next_entry); // Delete.
- } catch (Exception $e) {
- $msg = "FileSystem::Rmdir() FAILED. Cannot FileSystem::Unlink() $next_entry. ". $e->getMessage();
- throw new Exception($msg);
- }
-
- } else { // Is directory.
-
- try {
- self::rmdir($next_entry, true); // Delete
- } catch (Exception $e) {
- $msg = "FileSystem::rmdir() FAILED. Cannot FileSystem::rmdir() $next_entry. ". $e->getMessage();
- throw new Exception($msg);
- }
-
- } // end is_dir else
- } // end .. if
- } // end while
- } // end handle if
-
- // Don't error on closedir()
- @closedir($handle);
-
- if (false === @rmdir($dir)) { // FAILED.
- // Add error from php to end of log message. $php_errormsg.
- $msg = "FileSystem::rmdir() FAILED. Cannot rmdir $dir. $php_errormsg";
- throw new Exception($msg);
- }
-
- }
-
- }
-
- /**
- * Set the umask for file and directory creation.
- *
- * @param mode Int. Permissions ususally in ocatal. Use leading 0 for
- * octal. Number between 0 and 0777.
- *
- * @return void
- * @throws Exception if there is an error performing operation.
- */
- function umask($mode) {
- global $php_errormsg;
-
- // CONSIDERME:
- // Throw a warning if mode is 0. PHP converts illegal octal numbers to
- // 0 so 0 might not be what the user intended.
-
- $str_mode = decoct($mode); // Show octal in messages.
-
- if (false === @umask($mode)) { // FAILED.
- // Add error from php to end of log message. $php_errormsg.
- $msg = "FileSystem::Umask() FAILED. Value $mode. $php_errormsg";
- throw new Exception($msg);
- }
- }
-
- /**
- * Compare the modified time of two files.
- *
- * @param file1 String. Path and name of file1.
- * @param file2 String. Path and name of file2.
- *
- * @return Int. 1 if file1 is newer.
- * -1 if file2 is newer.
- * 0 if files have the same time.
- * Err object on failure.
- *
- * @throws Exception - if cannot get modified time of either file.
- */
- function compareMTimes($file1, $file2) {
-
- $mtime1 = filemtime($file1);
- $mtime2 = filemtime($file2);
-
- if ($mtime1 === false) { // FAILED. Log and return err.
- // Add error from php to end of log message. $php_errormsg.
- $msg = "FileSystem::compareMTimes() FAILED. Cannot can not get modified time of $file1.";
- throw new Exception($msg);
- } elseif ($mtime2 === false) { // FAILED. Log and return err.
- // Add error from php to end of log message. $php_errormsg.
- $msg = "FileSystem::compareMTimes() FAILED. Cannot can not get modified time of $file2.";
- throw new Exception($msg);
- } else { // Worked. Log and return compare.
- // Compare mtimes.
- if ($mtime1 == $mtime2) {
- return 0;
- } else {
- return ($mtime1 < $mtime2) ? -1 : 1;
- } // end compare
- }
- }
-
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileWriter.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileWriter.php
deleted file mode 100644
index 2740ef4bf8..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileWriter.php
+++ /dev/null
@@ -1,42 +0,0 @@
-.
- */
-
-require_once 'phing/system/io/OutputStreamWriter.php';
-require_once 'phing/system/io/FileOutputStream.php';
-
-/**
- * Convenience class for performing file write operations.
- *
- * @package phing.system.io
- */
-class FileWriter extends OutputStreamWriter {
-
- /**
- * Construct a new FileWriter.
- * @param mixed $file PhingFile or string pathname.
- * @param boolean $append Append to existing file?
- */
- function __construct($file, $append = false) {
- $out = new FileOutputStream($file, $append);
- parent::__construct($out);
- }
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FilterReader.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FilterReader.php
deleted file mode 100644
index 86eefd90f1..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FilterReader.php
+++ /dev/null
@@ -1,68 +0,0 @@
-.
- */
-
-require_once 'phing/system/io/Reader.php';
-
-/**
- * Wrapper class for readers, which can be used to apply filters.
- * @package phing.system.io
- */
-class FilterReader extends Reader {
-
- /**
- * @var Reader
- */
- protected $in;
-
- function __construct(Reader $in = null) {
- $this->in = $in;
- }
-
- public function setReader(Reader $in) {
- $this->in = $in;
- }
-
- public function skip($n) {
- return $this->in->skip($n);
- }
-
- /**
- * Read data from source.
- * FIXME: Clean up this function signature, as it a) params aren't being used
- * and b) it doesn't make much sense.
- */
- public function read($len = null) {
- return $this->in->read($len);
- }
-
- public function reset() {
- return $this->in->reset();
- }
-
- public function close() {
- return $this->in->close();
- }
-
- function getResource() {
- return $this->in->getResource();
- }
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/IOException.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/IOException.php
deleted file mode 100644
index 85bdddd9bf..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/IOException.php
+++ /dev/null
@@ -1,27 +0,0 @@
-.
- */
-
-/**
- * Extends Exception to take advantage of methods therein.
- *
- * @package phing.system.io
- */
-class IOException extends Exception {}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/InputStream.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/InputStream.php
deleted file mode 100644
index 3bc164c679..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/InputStream.php
+++ /dev/null
@@ -1,178 +0,0 @@
-.
- */
-
-/**
- * Wrapper class for PHP stream that supports read operations.
- *
- * @package phing.system.io
- */
-class InputStream {
-
- /**
- * @var resource The attached PHP stream.
- */
- protected $stream;
-
- /**
- * @var int Position of stream cursor.
- */
- protected $currentPosition = 0;
-
- /**
- * @var int Marked position of stream cursor.
- */
- protected $mark = 0;
-
- /**
- * Construct a new InputStream.
- * @param resource $stream Configured PHP stream for writing.
- */
- public function __construct($stream) {
- if (!is_resource($stream)) {
- throw new IOException("Passed argument is not a valid stream.");
- }
- $this->stream = $stream;
- }
-
- /**
- * Skip over $n bytes.
- * @param int $n
- */
- public function skip($n) {
- $start = $this->currentPosition;
-
- $ret = @fseek($this->stream, $n, SEEK_CUR);
- if ( $ret === -1 )
- return -1;
-
- $this->currentPosition = ftell($this->stream);
-
- if ( $start > $this->currentPosition )
- $skipped = $start - $this->currentPosition;
- else
- $skipped = $this->currentPosition - $start;
-
- return $skipped;
- }
-
- /**
- * Read data from stream until $len chars or EOF.
- * @param int $len Num chars to read. If not specified this stream will read until EOF.
- * @return string chars read or -1 if eof.
- */
- public function read($len = null) {
-
- if ($this->eof()) {
- return -1;
- }
-
- if ($len === null) { // we want to keep reading until we get an eof
- $out = "";
- while(!$this->eof()) {
- $out .= fread($this->stream, 8192);
- $this->currentPosition = ftell($this->stream);
- }
- } else {
- $out = fread($this->stream, $len); // adding 1 seems to ensure that next call to read() will return EOF (-1)
- $this->currentPosition = ftell($this->stream);
- }
-
- return $out;
- }
-
- /**
- * Marks the current position in this input stream.
- * @throws IOException - if the underlying stream doesn't support this method.
- */
- public function mark() {
- if (!$this->markSupported()) {
- throw new IOException(get_class($this) . " does not support mark() and reset() methods.");
- }
- $this->mark = $this->currentPosition;
- }
-
- /**
- * Whether the input stream supports mark and reset methods.
- * @return boolean
- */
- public function markSupported() {
- return false;
- }
-
- /**
- * Repositions this stream to the position at the time the mark method was last called on this input stream.
- * @throws IOException - if the underlying stream doesn't support this method.
- */
- function reset() {
- if (!$this->markSupported()) {
- throw new IOException(get_class($this) . " does not support mark() and reset() methods.");
- }
- // goes back to last mark, by default this would be 0 (i.e. rewind file).
- fseek($this->stream, SEEK_SET, $this->mark);
- $this->mark = 0;
- }
-
- /**
- * Closes stream.
- * @throws IOException if stream cannot be closed (note that calling close() on an already-closed stream will not raise an exception)
- */
- public function close() {
- if ($this->stream === null) {
- return;
- }
- if (false === @fclose($this->stream)) {
- // FAILED.
- $msg = "Cannot fclose " . $this->file->__toString() . " $php_errormsg";
- throw new IOException($msg);
- }
- $this->stream = null;
- }
-
- /**
- * Whether eof has been reached with stream.
- * @return boolean
- */
- public function eof() {
- return feof($this->stream);
- }
-
- /**
- * Reads a entire until EOF and places contents in passed-in variable. Stream is closed after read.
- *
- * @param string &$rBuffer String variable where read contents will be put.
- * @return TRUE on success.
- * @author Charlie Killian, charlie@tizac.com
- * @throws IOException - if there is an error reading from stream.
- * @deprecated - Instead, use the read() method or a BufferedReader.
- */
- public function readInto(&$rBuffer) {
- $rBuffer = $this->read();
- $this->close();
- }
-
- /**
- * Returns string representation of attached stream.
- * @return string
- */
- public function __toString() {
- return (string) $this->stream;
- }
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/InputStreamReader.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/InputStreamReader.php
deleted file mode 100644
index 4578f621c4..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/InputStreamReader.php
+++ /dev/null
@@ -1,126 +0,0 @@
-.
- */
-
-include_once 'phing/system/io/PhingFile.php';
-include_once 'phing/system/io/Reader.php';
-
-/**
- * Writer class for OutputStream objects.
- *
- * Unlike the Java counterpart, this class does not (yet) handle
- * character set transformations. This will be an important function
- * of this class with move to supporting PHP6.
- * * @package phing.system.io
- */
-class InputStreamReader extends Reader {
-
- /**
- * @var InputStream
- */
- protected $inStream;
-
- /**
- * Construct a new InputStreamReader.
- * @param InputStream $$inStream InputStream to read from
- */
- public function __construct(InputStream $inStream) {
- $this->inStream = $inStream;
- }
-
- /**
- * Close the stream.
- */
- public function close() {
- return $this->inStream->close();
- }
-
- /**
- * Skip over $n bytes.
- * @param int $n
- */
- public function skip($n) {
- return $this->inStream->skip($n);
- }
-
- /**
- * Read data from file.
- * @param int $len Num chars to read.
- * @return string chars read or -1 if eof.
- */
- public function read($len = null) {
- return $this->inStream->read($len);
- }
-
- /**
- * Marks the current position in this input stream.
- * @throws IOException - if the underlying stream doesn't support this method.
- */
- public function mark() {
- $this->inStream->mark();
- }
-
- /**
- * Whether the attached stream supports mark/reset.
- * @return boolean
- */
- public function markSupported() {
- return $this->inStream->markSupported();
- }
-
- /**
- * Repositions this stream to the position at the time the mark method was last called on this input stream.
- * @throws IOException - if the underlying stream doesn't support this method.
- */
- public function reset() {
- $this->inStream->reset();
- }
-
- /**
- * Whether eof has been reached with stream.
- * @return boolean
- */
- public function eof() {
- return $this->inStream->eof();
- }
-
- /**
- * Reads a entire file and stores the data in the variable
- * passed by reference.
- *
- * @param string $file String. Path and/or name of file to read.
- * @param object &$rBuffer Reference. Variable of where to put contents.
- *
- * @return TRUE on success. Err object on failure.
- * @author Charlie Killian, charlie@tizac.com
- * @deprecated Use read() or BufferedReader instead.
- */
- public function readInto(&$rBuffer) {
- return $this->inStream->readInto($rBuffer);
- }
-
- /**
- * Returns string representation of attached stream.
- * @return string
- */
- public function getResource() {
- return $this->inStream->__toString();
- }
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/OutputStream.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/OutputStream.php
deleted file mode 100644
index 0c09e2d05b..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/OutputStream.php
+++ /dev/null
@@ -1,108 +0,0 @@
-.
- */
-
-/**
- * Wrapper class for PHP stream that supports write operations.
- *
- * @package phing.system.io
- */
-class OutputStream {
-
- /**
- * @var resource The configured PHP stream.
- */
- protected $stream;
-
- /**
- * Construct a new OutputStream.
- * @param resource $stream Configured PHP stream for writing.
- */
- public function __construct($stream) {
- if (!is_resource($stream)) {
- throw new IOException("Passed argument is not a valid stream.");
- }
- $this->stream = $stream;
- }
-
- /**
- * Closes attached stream, flushing output first.
- * @throws IOException if cannot close stream (note that attempting to close an already closed stream will not raise an IOException)
- * @return void
- */
- public function close() {
- if ($this->stream === null) {
- return;
- }
- $this->flush();
- if (false === @fclose($this->stream)) {
- $msg = "Cannot close " . $this->getResource() . ": $php_errormsg";
- throw new IOException($msg);
- }
- $this->stream = null;
- }
-
- /**
- * Flushes stream.
- *
- * @throws IOException if unable to flush data (e.g. stream is not open).
- */
- public function flush() {
- if (false === @fflush($this->stream)) {
- throw new IOException("Could not flush stream: " . $php_errormsg);
- }
- }
-
- /**
- * Writes data to stream.
- *
- * @param string $buf Binary/character data to write.
- * @param int $off (Optional) offset.
- * @param int $len (Optional) number of bytes/chars to write.
- * @return void
- * @throws IOException - if there is an error writing to stream
- */
- public function write($buf, $off = null, $len = null) {
- if ( $off === null && $len === null ) {
- $to_write = $buf;
- } elseif ($off !== null && $len === null) {
- $to_write = substr($buf, $off);
- } elseif ($off === null && $len !== null) {
- $to_write = substr($buf, 0, $len);
- } else {
- $to_write = substr($buf, $off, $len);
- }
-
- $result = @fwrite($this->stream, $to_write);
-
- if ( $result === false ) {
- throw new IOException("Error writing to stream.");
- }
- }
-
- /**
- * Returns a string representation of the attached PHP stream.
- * @return string
- */
- public function __toString() {
- return (string) $this->stream;
- }
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/OutputStreamWriter.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/OutputStreamWriter.php
deleted file mode 100644
index 530c29218d..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/OutputStreamWriter.php
+++ /dev/null
@@ -1,84 +0,0 @@
-.
- */
-
-include_once 'phing/system/io/PhingFile.php';
-require_once 'phing/system/io/Writer.php';
-
-/**
- * Writer class for OutputStream objects.
- *
- * Unlike the Java counterpart, this class does not (yet) handle
- * character set transformations. This will be an important function
- * of this class with move to supporting PHP6.
- *
- * @package phing.system.io
- */
-class OutputStreamWriter extends Writer {
-
- /**
- * @var OutputStream
- */
- protected $outStream;
-
- /**
- * Construct a new OutputStreamWriter.
- * @param OutputStream $outStream OutputStream to write to
- */
- public function __construct(OutputStream $outStream) {
- $this->outStream = $outStream;
- }
-
- /**
- * Close the stream.
- */
- public function close() {
- return $this->outStream->close();
- }
-
- /**
- * Write char data to stream.
- *
- * @param unknown_type $buf
- * @param unknown_type $off
- * @param unknown_type $len
- * @return unknown
- */
- public function write($buf, $off = null, $len = null) {
- return $this->outStream->write($buf, $off, $len);
- }
-
- /**
- * Flush output to the stream.
- */
- public function flush() {
- $this->outStream->flush();
- }
-
- /**
- * Gets a string representation of attached stream resource.
- *
- * @return string String representation of output stream
- */
- public function getResource() {
- return $this->outStream->__toString();
- }
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/PhingFile.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/PhingFile.php
deleted file mode 100644
index 305bb82509..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/PhingFile.php
+++ /dev/null
@@ -1,882 +0,0 @@
-.
- */
-
-include_once 'phing/system/io/FileSystem.php';
-include_once 'phing/system/lang/NullPointerException.php';
-
-/**
- * An abstract representation of file and directory pathnames.
- *
- * @version $Revision: 1.1 $
- * @package phing.system.io
- */
-class PhingFile {
-
- /** separator string, static, obtained from FileSystem */
- public static $separator;
-
- /** path separator string, static, obtained from FileSystem (; or :)*/
- public static $pathSeparator;
-
- /**
- * This abstract pathname's normalized pathname string. A normalized
- * pathname string uses the default name-separator character and does not
- * contain any duplicate or redundant separators.
- */
- private $path = null;
-
- /** The length of this abstract pathname's prefix, or zero if it has no prefix. */
- private $prefixLength = 0;
-
- /** constructor */
- function __construct($arg1 = null, $arg2 = null) {
-
- if (self::$separator === null || self::$pathSeparator === null) {
- $fs = FileSystem::getFileSystem();
- self::$separator = $fs->getSeparator();
- self::$pathSeparator = $fs->getPathSeparator();
- }
-
- /* simulate signature identified constructors */
- if ($arg1 instanceof PhingFile && is_string($arg2)) {
- $this->_constructFileParentStringChild($arg1, $arg2);
- } elseif (is_string($arg1) && ($arg2 === null)) {
- $this->_constructPathname($arg1);
- } elseif(is_string($arg1) && is_string($arg2)) {
- $this->_constructStringParentStringChild($arg1, $arg2);
- } else {
- if ($arg1 === null) {
- throw new NullPointerException("Argument1 to function must not be null");
- }
- $this->path = (string) $arg1;
- $this->prefixLength = (int) $arg2;
- }
- }
-
- /** Returns the length of this abstract pathname's prefix. */
- function getPrefixLength() {
- return (int) $this->prefixLength;
- }
-
- /* -- constructors not called by signature match, so we need some helpers --*/
-
- function _constructPathname($pathname) {
- // obtain ref to the filesystem layer
- $fs = FileSystem::getFileSystem();
-
- if ($pathname === null) {
- throw new NullPointerException("Argument to function must not be null");
- }
-
- $this->path = (string) $fs->normalize($pathname);
- $this->prefixLength = (int) $fs->prefixLength($this->path);
- }
-
- function _constructStringParentStringChild($parent, $child = null) {
- // obtain ref to the filesystem layer
- $fs = FileSystem::getFileSystem();
-
- if ($child === null) {
- throw new NullPointerException("Argument to function must not be null");
- }
- if ($parent !== null) {
- if ($parent === "") {
- $this->path = $fs->resolve($fs->getDefaultParent(), $fs->normalize($child));
- } else {
- $this->path = $fs->resolve($fs->normalize($parent), $fs->normalize($child));
- }
- } else {
- $this->path = (string) $fs->normalize($child);
- }
- $this->prefixLength = (int) $fs->prefixLength($this->path);
- }
-
- function _constructFileParentStringChild($parent, $child = null) {
- // obtain ref to the filesystem layer
- $fs = FileSystem::getFileSystem();
-
- if ($child === null) {
- throw new NullPointerException("Argument to function must not be null");
- }
-
- if ($parent !== null) {
- if ($parent->path === "") {
- $this->path = $fs->resolve($fs->getDefaultParent(), $fs->normalize($child));
- } else {
- $this->path = $fs->resolve($parent->path, $fs->normalize($child));
- }
- } else {
- $this->path = $fs->normalize($child);
- }
- $this->prefixLength = $fs->prefixLength($this->path);
- }
-
- /* -- Path-component accessors -- */
-
- /**
- * Returns the name of the file or directory denoted by this abstract
- * pathname. This is just the last name in the pathname's name
- * sequence. If the pathname's name sequence is empty, then the empty
- * string is returned.
- *
- * @return The name of the file or directory denoted by this abstract
- * pathname, or the empty string if this pathname's name sequence
- * is empty
- */
- function getName() {
- // that's a lastIndexOf
- $index = ((($res = strrpos($this->path, self::$separator)) === false) ? -1 : $res);
- if ($index < $this->prefixLength) {
- return substr($this->path, $this->prefixLength);
- }
- return substr($this->path, $index + 1);
- }
-
- /**
- * Returns the pathname string of this abstract pathname's parent, or
- * null if this pathname does not name a parent directory.
- *
- * The parent of an abstract pathname consists of the pathname's prefix,
- * if any, and each name in the pathname's name sequence except for the last.
- * If the name sequence is empty then the pathname does not name a parent
- * directory.
- *
- * @return The pathname string of the parent directory named by this
- * abstract pathname, or null if this pathname does not name a parent
- */
- function getParent() {
- // that's a lastIndexOf
- $index = ((($res = strrpos($this->path, self::$separator)) === false) ? -1 : $res);
- if ($index < $this->prefixLength) {
- if (($this->prefixLength > 0) && (strlen($this->path > $this->prefixLength))) {
- return substr($this->path, 0, $this->prefixLength);
- }
- return null;
- }
- return substr($this->path, 0, $index);
- }
-
- /**
- * Returns the abstract pathname of this abstract pathname's parent,
- * or null if this pathname does not name a parent directory.
- *
- * The parent of an abstract pathname consists of the pathname's prefix,
- * if any, and each name in the pathname's name sequence except for the
- * last. If the name sequence is empty then the pathname does not name
- * a parent directory.
- *
- * @return The abstract pathname of the parent directory named by this
- * abstract pathname, or null if this pathname
- * does not name a parent
- */
- function getParentFile() {
- $p = $this->getParent();
- if ($p === null) {
- return null;
- }
- return new PhingFile((string) $p, (int) $this->prefixLength);
- }
-
- /**
- * Converts this abstract pathname into a pathname string. The resulting
- * string uses the default name-separator character to separate the names
- * in the name sequence.
- *
- * @return The string form of this abstract pathname
- */
- function getPath() {
- return (string) $this->path;
- }
-
- /**
- * Tests whether this abstract pathname is absolute. The definition of
- * absolute pathname is system dependent. On UNIX systems, a pathname is
- * absolute if its prefix is "/". On Win32 systems, a pathname is absolute
- * if its prefix is a drive specifier followed by "\\", or if its prefix
- * is "\\".
- *
- * @return true if this abstract pathname is absolute, false otherwise
- */
- function isAbsolute() {
- return ($this->prefixLength !== 0);
- }
-
-
- /**
- * Returns the absolute pathname string of this abstract pathname.
- *
- * If this abstract pathname is already absolute, then the pathname
- * string is simply returned as if by the getPath method.
- * If this abstract pathname is the empty abstract pathname then
- * the pathname string of the current user directory, which is named by the
- * system property user.dir, is returned. Otherwise this
- * pathname is resolved in a system-dependent way. On UNIX systems, a
- * relative pathname is made absolute by resolving it against the current
- * user directory. On Win32 systems, a relative pathname is made absolute
- * by resolving it against the current directory of the drive named by the
- * pathname, if any; if not, it is resolved against the current user
- * directory.
- *
- * @return The absolute pathname string denoting the same file or
- * directory as this abstract pathname
- * @see #isAbsolute()
- */
- function getAbsolutePath() {
- $fs = FileSystem::getFileSystem();
- return $fs->resolveFile($this);
- }
-
- /**
- * Returns the absolute form of this abstract pathname. Equivalent to
- * getAbsolutePath.
- *
- * @return The absolute abstract pathname denoting the same file or
- * directory as this abstract pathname
- */
- function getAbsoluteFile() {
- return new PhingFile((string) $this->getAbsolutePath());
- }
-
-
- /**
- * Returns the canonical pathname string of this abstract pathname.
- *
- * A canonical pathname is both absolute and unique. The precise
- * definition of canonical form is system-dependent. This method first
- * converts this pathname to absolute form if necessary, as if by invoking the
- * getAbsolutePath() method, and then maps it to its unique form in a
- * system-dependent way. This typically involves removing redundant names
- * such as "." and .. from the pathname, resolving symbolic links
- * (on UNIX platforms), and converting drive letters to a standard case
- * (on Win32 platforms).
- *
- * Every pathname that denotes an existing file or directory has a
- * unique canonical form. Every pathname that denotes a nonexistent file
- * or directory also has a unique canonical form. The canonical form of
- * the pathname of a nonexistent file or directory may be different from
- * the canonical form of the same pathname after the file or directory is
- * created. Similarly, the canonical form of the pathname of an existing
- * file or directory may be different from the canonical form of the same
- * pathname after the file or directory is deleted.
- *
- * @return The canonical pathname string denoting the same file or
- * directory as this abstract pathname
- */
- function getCanonicalPath() {
- $fs = FileSystem::getFileSystem();
- return $fs->canonicalize($this->path);
- }
-
-
- /**
- * Returns the canonical form of this abstract pathname. Equivalent to
- * getCanonicalPath(.
- *
- * @return PhingFile The canonical pathname string denoting the same file or
- * directory as this abstract pathname
- */
- function getCanonicalFile() {
- return new PhingFile($this->getCanonicalPath());
- }
-
- /**
- * Converts this abstract pathname into a file: URL. The
- * exact form of the URL is system-dependent. If it can be determined that
- * the file denoted by this abstract pathname is a directory, then the
- * resulting URL will end with a slash.
- *
- * Usage note: This method does not automatically escape
- * characters that are illegal in URLs. It is recommended that new code
- * convert an abstract pathname into a URL by first converting it into a
- * URI, via the toURI() method, and then converting the URI
- * into a URL via the URI::toURL()
- *
- * @return A URL object representing the equivalent file URL
- *
- *
- */
- function toURL() {
- /*
- // URL class not implemented yet
- return new URL("file", "", $this->_slashify($this->getAbsolutePath(), $this->isDirectory()));
- */
- }
-
- /**
- * Constructs a file: URI that represents this abstract pathname.
- * Not implemented yet
- */
- function toURI() {
- /*
- $f = $this->getAbsoluteFile();
- $sp = (string) $this->slashify($f->getPath(), $f->isDirectory());
- if (StringHelper::startsWith('//', $sp))
- $sp = '//' + sp;
- return new URI('file', null, $sp, null);
- */
- }
-
- function _slashify($path, $isDirectory) {
- $p = (string) $path;
-
- if (self::$separator !== '/') {
- $p = str_replace(self::$separator, '/', $p);
- }
-
- if (!StringHelper::startsWith('/', $p)) {
- $p = '/'.$p;
- }
-
- if (!StringHelper::endsWith('/', $p) && $isDirectory) {
- $p = $p.'/';
- }
-
- return $p;
- }
-
- /* -- Attribute accessors -- */
-
- /**
- * Tests whether the application can read the file denoted by this
- * abstract pathname.
- *
- * @return true if and only if the file specified by this
- * abstract pathname exists and can be read by the
- * application; false otherwise
- */
- function canRead() {
- $fs = FileSystem::getFileSystem();
-
- if ($fs->checkAccess($this)) {
- return (boolean) @is_readable($this->getAbsolutePath());
- }
- return false;
- }
-
- /**
- * Tests whether the application can modify to the file denoted by this
- * abstract pathname.
- *
- * @return true if and only if the file system actually
- * contains a file denoted by this abstract pathname and
- * the application is allowed to write to the file;
- * false otherwise.
- *
- */
- function canWrite() {
- $fs = FileSystem::getFileSystem();
- return $fs->checkAccess($this, true);
- }
-
- /**
- * Tests whether the file denoted by this abstract pathname exists.
- *
- * @return true if and only if the file denoted by this
- * abstract pathname exists; false otherwise
- *
- */
- function exists() {
- clearstatcache();
- if ($this->isFile()) {
- return @file_exists($this->path);
- } else {
- return @is_dir($this->path);
- }
- }
-
- /**
- * Tests whether the file denoted by this abstract pathname is a
- * directory.
- *
- * @return true if and only if the file denoted by this
- * abstract pathname exists and is a directory;
- * false otherwise
- *
- */
- function isDirectory() {
- clearstatcache();
- $fs = FileSystem::getFileSystem();
- if ($fs->checkAccess($this) !== true) {
- throw new IOException("No read access to ".$this->path);
- }
- return @is_dir($this->path);
- }
-
- /**
- * Tests whether the file denoted by this abstract pathname is a normal
- * file. A file is normal if it is not a directory and, in
- * addition, satisfies other system-dependent criteria. Any non-directory
- * file created by a Java application is guaranteed to be a normal file.
- *
- * @return true if and only if the file denoted by this
- * abstract pathname exists and is a normal file;
- * false otherwise
- */
- function isFile() {
- clearstatcache();
- //$fs = FileSystem::getFileSystem();
- return @is_file($this->path);
- }
-
- /**
- * Tests whether the file named by this abstract pathname is a hidden
- * file. The exact definition of hidden is system-dependent. On
- * UNIX systems, a file is considered to be hidden if its name begins with
- * a period character ('.'). On Win32 systems, a file is considered to be
- * hidden if it has been marked as such in the filesystem. Currently there
- * seems to be no way to dermine isHidden on Win file systems via PHP
- *
- * @return true if and only if the file denoted by this
- * abstract pathname is hidden according to the conventions of the
- * underlying platform
- */
- function isHidden() {
- $fs = FileSystem::getFileSystem();
- if ($fs->checkAccess($this) !== true) {
- throw new IOException("No read access to ".$this->path);
- }
- return (($fs->getBooleanAttributes($this) & $fs->BA_HIDDEN) !== 0);
- }
-
- /**
- * Returns the time that the file denoted by this abstract pathname was
- * last modified.
- *
- * @return A integer value representing the time the file was
- * last modified, measured in milliseconds since the epoch
- * (00:00:00 GMT, January 1, 1970), or 0 if the
- * file does not exist or if an I/O error occurs
- */
- function lastModified() {
- $fs = FileSystem::getFileSystem();
- if ($fs->checkAccess($this) !== true) {
- throw new IOException("No read access to " . $this->path);
- }
- return $fs->getLastModifiedTime($this);
- }
-
- /**
- * Returns the length of the file denoted by this abstract pathname.
- * The return value is unspecified if this pathname denotes a directory.
- *
- * @return The length, in bytes, of the file denoted by this abstract
- * pathname, or 0 if the file does not exist
- */
- function length() {
- $fs = FileSystem::getFileSystem();
- if ($fs->checkAccess($this) !== true) {
- throw new IOException("No read access to ".$this->path."\n");
- }
- return $fs->getLength($this);
- }
-
- /**
- * Convenience method for returning the contents of this file as a string.
- * This method uses file_get_contents() to read file in an optimized way.
- * @return string
- * @throws Exception - if file cannot be read
- */
- function contents() {
- if (!$this->canRead() || !$this->isFile()) {
- throw new IOException("Cannot read file contents!");
- }
- return file_get_contents($this->getAbsolutePath());
- }
-
- /* -- File operations -- */
-
- /**
- * Atomically creates a new, empty file named by this abstract pathname if
- * and only if a file with this name does not yet exist. The check for the
- * existence of the file and the creation of the file if it does not exist
- * are a single operation that is atomic with respect to all other
- * filesystem activities that might affect the file.
- *
- * @return true if the named file does not exist and was
- * successfully created; false if the named file
- * already exists
- * @throws IOException if file can't be created
- */
- function createNewFile($parents=true, $mode=0777) {
- $file = FileSystem::getFileSystem()->createNewFile($this->path);
- return $file;
- }
-
- /**
- * Deletes the file or directory denoted by this abstract pathname. If
- * this pathname denotes a directory, then the directory must be empty in
- * order to be deleted.
- *
- * @return true if and only if the file or directory is
- * successfully deleted; false otherwise
- */
- function delete() {
- $fs = FileSystem::getFileSystem();
- if ($fs->canDelete($this) !== true) {
- throw new IOException("Cannot delete " . $this->path . "\n");
- }
- return $fs->delete($this);
- }
-
- /**
- * Requests that the file or directory denoted by this abstract pathname
- * be deleted when php terminates. Deletion will be attempted only for
- * normal termination of php and if and if only Phing::shutdown() is
- * called.
- *
- * Once deletion has been requested, it is not possible to cancel the
- * request. This method should therefore be used with care.
- *
- */
- function deleteOnExit() {
- $fs = FileSystem::getFileSystem();
- $fs->deleteOnExit($this);
- }
-
- /**
- * Returns an array of strings naming the files and directories in the
- * directory denoted by this abstract pathname.
- *
- * If this abstract pathname does not denote a directory, then this
- * method returns null Otherwise an array of strings is
- * returned, one for each file or directory in the directory. Names
- * denoting the directory itself and the directory's parent directory are
- * not included in the result. Each string is a file name rather than a
- * complete path.
- *
- * There is no guarantee that the name strings in the resulting array
- * will appear in any specific order; they are not, in particular,
- * guaranteed to appear in alphabetical order.
- *
- * @return An array of strings naming the files and directories in the
- * directory denoted by this abstract pathname. The array will be
- * empty if the directory is empty. Returns null if
- * this abstract pathname does not denote a directory, or if an
- * I/O error occurs.
- *
- */
- function listDir($filter = null) {
- $fs = FileSystem::getFileSystem();
- return $fs->lister($this, $filter);
- }
-
- function listFiles($filter = null) {
- $ss = $this->listDir($filter);
- if ($ss === null) {
- return null;
- }
- $n = count($ss);
- $fs = array();
- for ($i = 0; $i < $n; $i++) {
- $fs[$i] = new PhingFile((string)$this->path, (string)$ss[$i]);
- }
- return $fs;
- }
-
- /**
- * Creates the directory named by this abstract pathname, including any
- * necessary but nonexistent parent directories. Note that if this
- * operation fails it may have succeeded in creating some of the necessary
- * parent directories.
- *
- * @return true if and only if the directory was created,
- * along with all necessary parent directories; false
- * otherwise
- * @throws IOException
- */
- function mkdirs() {
- if ($this->exists()) {
- return false;
- }
- try {
- if ($this->mkdir()) {
- return true;
- }
- } catch (IOException $ioe) {
- // IOException from mkdir() means that directory propbably didn't exist.
- }
- $parentFile = $this->getParentFile();
- return (($parentFile !== null) && ($parentFile->mkdirs() && $this->mkdir()));
- }
-
- /**
- * Creates the directory named by this abstract pathname.
- *
- * @return true if and only if the directory was created; false otherwise
- * @throws IOException
- */
- function mkdir() {
- $fs = FileSystem::getFileSystem();
-
- if ($fs->checkAccess(new PhingFile($this->path), true) !== true) {
- throw new IOException("No write access to " . $this->getPath());
- }
- return $fs->createDirectory($this);
- }
-
- /**
- * Renames the file denoted by this abstract pathname.
- *
- * @param destFile The new abstract pathname for the named file
- * @return true if and only if the renaming succeeded; false otherwise
- */
- function renameTo(PhingFile $destFile) {
- $fs = FileSystem::getFileSystem();
- if ($fs->checkAccess($this) !== true) {
- throw new IOException("No write access to ".$this->getPath());
- }
- return $fs->rename($this, $destFile);
- }
-
- /**
- * Simple-copies file denoted by this abstract pathname into another
- * PhingFile
- *
- * @param PhingFile $destFile The new abstract pathname for the named file
- * @return true if and only if the renaming succeeded; false otherwise
- */
- function copyTo(PhingFile $destFile) {
- $fs = FileSystem::getFileSystem();
-
- if ($fs->checkAccess($this) !== true) {
- throw new IOException("No read access to ".$this->getPath()."\n");
- }
-
- if ($fs->checkAccess($destFile, true) !== true) {
- throw new IOException("File::copyTo() No write access to ".$destFile->getPath());
- }
- return $fs->copy($this, $destFile);
- }
-
- /**
- * Sets the last-modified time of the file or directory named by this
- * abstract pathname.
- *
- * All platforms support file-modification times to the nearest second,
- * but some provide more precision. The argument will be truncated to fit
- * the supported precision. If the operation succeeds and no intervening
- * operations on the file take place, then the next invocation of the
- * lastModified method will return the (possibly truncated) time argument
- * that was passed to this method.
- *
- * @param time The new last-modified time, measured in milliseconds since
- * the epoch (00:00:00 GMT, January 1, 1970)
- * @return true if and only if the operation succeeded; false otherwise
- */
- function setLastModified($time) {
- $time = (int) $time;
- if ($time < 0) {
- throw new Exception("IllegalArgumentException, Negative $time\n");
- }
-
- $fs = FileSystem::getFileSystem();
- return $fs->setLastModifiedTime($this, $time);
- }
-
- /**
- * Marks the file or directory named by this abstract pathname so that
- * only read operations are allowed. After invoking this method the file
- * or directory is guaranteed not to change until it is either deleted or
- * marked to allow write access. Whether or not a read-only file or
- * directory may be deleted depends upon the underlying system.
- *
- * @return true if and only if the operation succeeded; false otherwise
- */
- function setReadOnly() {
- $fs = FileSystem::getFileSystem();
- if ($fs->checkAccess($this, true) !== true) {
- // Error, no write access
- throw new IOException("No write access to " . $this->getPath());
- }
- return $fs->setReadOnly($this);
- }
-
- /**
- * Sets the owner of the file.
- * @param mixed $user User name or number.
- */
- public function setUser($user) {
- $fs = FileSystem::getFileSystem();
- return $fs->chown($this->getPath(), $user);
- }
-
- /**
- * Retrieve the owner of this file.
- * @return int User ID of the owner of this file.
- */
- function getUser() {
- return @fileowner($this->getPath());
- }
-
- /**
- * Sets the mode of the file
- * @param int $mode Ocatal mode.
- */
- function setMode($mode) {
- $fs = FileSystem::getFileSystem();
- return $fs->chmod($this->getPath(), $mode);
- }
-
- /**
- * Retrieve the mode of this file.
- * @return int
- */
- function getMode() {
- return @fileperms($this->getPath());
- }
-
- /* -- Filesystem interface -- */
-
- /**
- * List the available filesystem roots.
- *
- * A particular platform may support zero or more hierarchically-organized
- * file systems. Each file system has a root directory from which all
- * other files in that file system can be reached.
- * Windows platforms, for example, have a root directory for each active
- * drive; UNIX platforms have a single root directory, namely "/".
- * The set of available filesystem roots is affected by various system-level
- * operations such the insertion or ejection of removable media and the
- * disconnecting or unmounting of physical or virtual disk drives.
- *
- * This method returns an array of PhingFile objects that
- * denote the root directories of the available filesystem roots. It is
- * guaranteed that the canonical pathname of any file physically present on
- * the local machine will begin with one of the roots returned by this
- * method.
- *
- * The canonical pathname of a file that resides on some other machine
- * and is accessed via a remote-filesystem protocol such as SMB or NFS may
- * or may not begin with one of the roots returned by this method. If the
- * pathname of a remote file is syntactically indistinguishable from the
- * pathname of a local file then it will begin with one of the roots
- * returned by this method. Thus, for example, PhingFile objects
- * denoting the root directories of the mapped network drives of a Windows
- * platform will be returned by this method, while PhingFile
- * objects containing UNC pathnames will not be returned by this method.
- *
- * @return An array of PhingFile objects denoting the available
- * filesystem roots, or null if the set of roots
- * could not be determined. The array will be empty if there are
- * no filesystem roots.
- */
- function listRoots() {
- $fs = FileSystem::getFileSystem();
- return (array) $fs->listRoots();
- }
-
- /* -- Tempfile management -- */
-
- /**
- * Returns the path to the temp directory.
- */
- function getTempDir() {
- return Phing::getProperty('php.tmpdir');
- }
-
- /**
- * Static method that creates a unique filename whose name begins with
- * $prefix and ends with $suffix in the directory $directory. $directory
- * is a reference to a PhingFile Object.
- * Then, the file is locked for exclusive reading/writing.
- *
- * @author manuel holtgrewe, grin@gmx.net
- * @throws IOException
- * @access public
- */
- function createTempFile($prefix, $suffix, PhingFile $directory) {
-
- // quick but efficient hack to create a unique filename ;-)
- $result = null;
- do {
- $result = new PhingFile($directory, $prefix . substr(md5(time()), 0, 8) . $suffix);
- } while (file_exists($result->getPath()));
-
- $fs = FileSystem::getFileSystem();
- $fs->createNewFile($result->getPath());
- $fs->lock($result);
-
- return $result;
- }
-
- /**
- * If necessary, $File the lock on $File is removed and then the file is
- * deleted
- *
- * @access public
- */
- function removeTempFile() {
- $fs = FileSystem::getFileSystem();
- // catch IO Exception
- $fs->unlock($this);
- $this->delete();
- }
-
-
- /* -- Basic infrastructure -- */
-
- /**
- * Compares two abstract pathnames lexicographically. The ordering
- * defined by this method depends upon the underlying system. On UNIX
- * systems, alphabetic case is significant in comparing pathnames; on Win32
- * systems it is not.
- *
- * @param PhingFile $file Th file whose pathname sould be compared to the pathname of this file.
- *
- * @return int Zero if the argument is equal to this abstract pathname, a
- * value less than zero if this abstract pathname is
- * lexicographically less than the argument, or a value greater
- * than zero if this abstract pathname is lexicographically
- * greater than the argument
- */
- function compareTo(PhingFile $file) {
- $fs = FileSystem::getFileSystem();
- return $fs->compare($this, $file);
- }
-
- /**
- * Tests this abstract pathname for equality with the given object.
- * Returns true if and only if the argument is not
- * null and is an abstract pathname that denotes the same file
- * or directory as this abstract pathname. Whether or not two abstract
- * pathnames are equal depends upon the underlying system. On UNIX
- * systems, alphabetic case is significant in comparing pathnames; on Win32
- * systems it is not.
- * @return boolean
- */
- function equals($obj) {
- if (($obj !== null) && ($obj instanceof PhingFile)) {
- return ($this->compareTo($obj) === 0);
- }
- return false;
- }
-
- /** Backwards compatibility -- use PHP5's native __tostring method. */
- function toString() {
- return $this->getPath();
- }
-
- /** PHP5's native method. */
- function __toString() {
- return $this->getPath();
- }
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/Reader.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/Reader.php
deleted file mode 100644
index f4a33f039f..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/Reader.php
+++ /dev/null
@@ -1,91 +0,0 @@
-.
-*/
-
-/**
- * Abstract class for reading character streams.
- *
- * @author Hans Lellelid
- * @author Yannick Lecaillez
- * @version $Revision: 1.5 $
- * @package phing.system.io
- */
-abstract class Reader {
-
- /**
- * Read data from source.
- *
- * If length is specified, then only that number of chars is read,
- * otherwise stream is read until EOF.
- *
- * @param int $len
- */
- abstract public function read($len = null);
-
- /**
- * Close stream.
- * @throws IOException if there is an error closing stream
- */
- abstract public function close();
-
- /**
- * Returns the filename, url, etc. that is being read from.
- * This is critical for, e.g., ExpatParser's ability to know
- * the filename that is throwing an ExpatParserException, etc.
- * @return string
- */
- abstract function getResource();
-
- /**
- * Move stream position relative to current pos.
- * @param int $n
- */
- public function skip($n) {}
-
- /**
- * Reset the current position in stream to beginning or last mark (if supported).
- */
- public function reset() {}
-
- /**
- * If supported, places a "marker" (like a bookmark) at current stream position.
- * A subsequent call to reset() will move stream position back
- * to last marker (if supported).
- */
- public function mark() {}
-
- /**
- * Whether marking is supported.
- * @return boolean
- */
- public function markSupported() {
- return false;
- }
-
- /**
- * Is stream ready for reading.
- * @return boolean
- */
- public function ready() {
- return true;
- }
-
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/StringReader.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/StringReader.php
deleted file mode 100644
index a98cd7bbcd..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/StringReader.php
+++ /dev/null
@@ -1,84 +0,0 @@
-.
- */
-
-/**
- * Dummy class for reading from string of characters.
- * @package phing.system.io
- */
-class StringReader extends Reader {
-
- /**
- * @var string
- */
- private $_string;
-
- /**
- * @var int
- */
- private $mark = 0;
-
- /**
- * @var int
- */
- private $currPos = 0;
-
- function __construct($string) {
- $this->_string = $string;
- }
-
- function skip($n) {}
-
- function read($len = null) {
- if ($len === null) {
- return $this->_string;
- } else {
- if ($this->currPos >= strlen($this->_string)) {
- return -1;
- }
- $out = substr($this->_string, $this->currPos, $len);
- $this->currPos += $len;
- return $out;
- }
- }
-
- function mark() {
- $this->mark = $this->currPos;
- }
-
- function reset() {
- $this->currPos = $this->mark;
- }
-
- function close() {}
-
- function open() {}
-
- function ready() {}
-
- function markSupported() {
- return true;
- }
-
- function getResource() {
- return '(string) "'.$this->_string . '"';
- }
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/UnixFileSystem.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/UnixFileSystem.php
deleted file mode 100644
index ec68d2e3fd..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/UnixFileSystem.php
+++ /dev/null
@@ -1,278 +0,0 @@
-.
- */
-
-include_once 'phing/system/io/FileSystem.php';
-
-/**
- * UnixFileSystem class. This class encapsulates the basic file system functions
- * for platforms using the unix (posix)-stylish filesystem. It wraps php native
- * functions suppressing normal PHP error reporting and instead uses Exception
- * to report and error.
- *
- * This class is part of a oop based filesystem abstraction and targeted to run
- * on all supported php platforms.
- *
- * Note: For debugging turn track_errors on in the php.ini. The error messages
- * and log messages from this class will then be clearer because $php_errormsg
- * is passed as part of the message.
- *
- * FIXME:
- * - Comments
- * - Error handling reduced to min, error are handled by PhingFile mainly
- *
- * @author Andreas Aderhold, andi@binarycloud.com
- * @version $Revision: 1.10 $
- * @package phing.system.io
- */
-class UnixFileSystem extends FileSystem {
-
- /**
- * returns OS dependant path separator char
- */
- function getSeparator() {
- return '/';
- }
-
- /**
- * returns OS dependant directory separator char
- */
- function getPathSeparator() {
- return ':';
- }
-
- /**
- * A normal Unix pathname contains no duplicate slashes and does not end
- * with a slash. It may be the empty string.
- *
- * Check that the given pathname is normal. If not, invoke the real
- * normalizer on the part of the pathname that requires normalization.
- * This way we iterate through the whole pathname string only once.
- */
- function normalize($strPathname) {
-
- if (empty($strPathname)) {
- return;
- }
-
- // Resolve home directories. We assume /home is where all home
- // directories reside, b/c there is no other way to do this with
- // PHP AFAIK.
- if ($strPathname[0] === "~") {
- if ($strPathname[1] === "/") { // like ~/foo => /home/user/foo
- $strPathname = "/home/" . get_current_user() . substr($strPathname, 1);
- } else { // like ~foo => /home/foo
- $pos = strpos($strPathname, "/");
- $name = substr($strPathname, 1, $pos - 2);
- $strPathname = "/home/" . $name . substr($strPathname, $pos);
- }
- }
-
- $n = strlen($strPathname);
- $prevChar = 0;
- for ($i=0; $i < $n; $i++) {
- $c = $strPathname[$i];
- if (($prevChar === '/') && ($c === '/')) {
- return self::normalizer($strPathname, $n, $i - 1);
- }
- $prevChar = $c;
- }
- if ($prevChar === '/') {
- return self::normalizer($strPathname, $n, $n - 1);
- }
- return $strPathname;
- }
-
- /**
- * Normalize the given pathname, whose length is $len, starting at the given
- * $offset; everything before this offset is already normal.
- */
- protected function normalizer($pathname, $len, $offset) {
- if ($len === 0) {
- return $pathname;
- }
- $n = (int) $len;
- while (($n > 0) && ($pathname[$n-1] === '/')) {
- $n--;
- }
- if ($n === 0) {
- return '/';
- }
- $sb = "";
-
- if ($offset > 0) {
- $sb .= substr($pathname, 0, $offset);
- }
- $prevChar = 0;
- for ($i = $offset; $i < $n; $i++) {
- $c = $pathname[$i];
- if (($prevChar === '/') && ($c === '/')) {
- continue;
- }
- $sb .= $c;
- $prevChar = $c;
- }
- return $sb;
- }
-
- /**
- * Compute the length of the pathname string's prefix. The pathname
- * string must be in normal form.
- */
- function prefixLength($pathname) {
- if (strlen($pathname === 0)) {
- return 0;
- }
- return (($pathname[0] === '/') ? 1 : 0);
- }
-
- /**
- * Resolve the child pathname string against the parent.
- * Both strings must be in normal form, and the result
- * will be in normal form.
- */
- function resolve($parent, $child) {
-
- if ($child === "") {
- return $parent;
- }
-
- if ($child[0] === '/') {
- if ($parent === '/') {
- return $child;
- }
- return $parent.$child;
- }
-
- if ($parent === '/') {
- return $parent.$child;
- }
-
- return $parent.'/'.$child;
- }
-
- function getDefaultParent() {
- return '/';
- }
-
- function isAbsolute(PhingFile $f) {
- return ($f->getPrefixLength() !== 0);
- }
-
- /**
- * the file resolver
- */
- function resolveFile(PhingFile $f) {
- // resolve if parent is a file oject only
- if ($this->isAbsolute($f)) {
- return $f->getPath();
- } else {
- return $this->resolve(Phing::getProperty("user.dir"), $f->getPath());
- }
- }
-
- /* -- most of the following is mapped to the php natives wrapped by FileSystem */
-
- /* -- Attribute accessors -- */
- function getBooleanAttributes($f) {
- //$rv = getBooleanAttributes0($f);
- $name = $f->getName();
- $hidden = (strlen($name) > 0) && ($name[0] == '.');
- return ($hidden ? $this->BA_HIDDEN : 0);
- }
-
- /**
- * set file readonly on unix
- */
- function setReadOnly($f) {
- if ($f instanceof File) {
- $strPath = (string) $f->getPath();
- $perms = (int) (@fileperms($strPath) & 0444);
- return FileSystem::Chmod($strPath, $perms);
- } else {
- throw new Exception("IllegalArgutmentType: Argument is not File");
- }
- }
-
- /**
- * compares file paths lexicographically
- */
- function compare($f1, $f2) {
- if ( ($f1 instanceof PhingFile) && ($f2 instanceof PhingFile) ) {
- $f1Path = $f1->getPath();
- $f2Path = $f2->getPath();
- return (boolean) strcmp((string) $f1Path, (string) $f2Path);
- } else {
- throw new Exception("IllegalArgutmentType: Argument is not PhingFile");
- }
- }
-
- /* -- fs interface --*/
-
- function listRoots() {
- if (!$this->checkAccess('/', false)) {
- die ("Can not access root");
- }
- return array(new PhingFile("/"));
- }
-
- /**
- * returns the contents of a directory in an array
- */
- function lister($f) {
- $dir = @opendir($f->getAbsolutePath());
- if (!$dir) {
- throw new Exception("Can't open directory " . $f->__toString());
- }
- $vv = array();
- while (($file = @readdir($dir)) !== false) {
- if ($file == "." || $file == "..") {
- continue;
- }
- $vv[] = (string) $file;
- }
- @closedir($dir);
- return $vv;
- }
-
- function fromURIPath($p) {
- if (StringHelper::endsWith("/", $p) && (strlen($p) > 1)) {
-
- // "/foo/" --> "/foo", but "/" --> "/"
- $p = substr($p, 0, strlen($p) - 1);
-
- }
-
- return $p;
- }
-
- /**
- * Whether file can be deleted.
- * @param PhingFile $f
- * @return boolean
- */
- function canDelete(PhingFile $f)
- {
- @clearstatcache();
- $dir = dirname($f->getAbsolutePath());
- return (bool) @is_writable($dir);
- }
-
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/Win32FileSystem.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/Win32FileSystem.php
deleted file mode 100644
index 1c563d2ba3..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/Win32FileSystem.php
+++ /dev/null
@@ -1,477 +0,0 @@
-.
- */
-
-include_once 'phing/system/io/FileSystem.php';
-
-/**
- * @package phing.system.io
- */
-class Win32FileSystem extends FileSystem {
-
- protected $slash;
- protected $altSlash;
- protected $semicolon;
-
- private static $driveDirCache = array();
-
- function __construct() {
- $this->slash = self::getSeparator();
- $this->semicolon = self::getPathSeparator();
- $this->altSlash = ($this->slash === '\\') ? '/' : '\\';
- }
-
- function isSlash($c) {
- return ($c == '\\') || ($c == '/');
- }
-
- function isLetter($c) {
- return ((ord($c) >= ord('a')) && (ord($c) <= ord('z')))
- || ((ord($c) >= ord('A')) && (ord($c) <= ord('Z')));
- }
-
- function slashify($p) {
- if ((strlen($p) > 0) && ($p[0] != $this->slash)) {
- return $this->slash.$p;
- }
- else {
- return $p;
- }
- }
-
- /* -- Normalization and construction -- */
-
- function getSeparator() {
- // the ascii value of is the \
- return chr(92);
- }
-
- function getPathSeparator() {
- return ';';
- }
-
- /**
- * A normal Win32 pathname contains no duplicate slashes, except possibly
- * for a UNC prefix, and does not end with a slash. It may be the empty
- * string. Normalized Win32 pathnames have the convenient property that
- * the length of the prefix almost uniquely identifies the type of the path
- * and whether it is absolute or relative:
- *
- * 0 relative to both drive and directory
- * 1 drive-relative (begins with '\\')
- * 2 absolute UNC (if first char is '\\'), else directory-relative (has form "z:foo")
- * 3 absolute local pathname (begins with "z:\\")
- */
- function normalizePrefix($strPath, $len, &$sb) {
- $src = 0;
- while (($src < $len) && $this->isSlash($strPath[$src])) {
- $src++;
- }
- $c = "";
- if (($len - $src >= 2)
- && $this->isLetter($c = $strPath[$src])
- && $strPath[$src + 1] === ':') {
- /* Remove leading slashes if followed by drive specifier.
- * This hack is necessary to support file URLs containing drive
- * specifiers (e.g., "file://c:/path"). As a side effect,
- * "/c:/path" can be used as an alternative to "c:/path". */
- $sb .= $c;
- $sb .= ':';
- $src += 2;
- }
- else {
- $src = 0;
- if (($len >= 2)
- && $this->isSlash($strPath[0])
- && $this->isSlash($strPath[1])) {
- /* UNC pathname: Retain first slash; leave src pointed at
- * second slash so that further slashes will be collapsed
- * into the second slash. The result will be a pathname
- * beginning with "\\\\" followed (most likely) by a host
- * name. */
- $src = 1;
- $sb.=$this->slash;
- }
- }
- return $src;
- }
-
- /** Normalize the given pathname, whose length is len, starting at the given
- offset; everything before this offset is already normal. */
- protected function normalizer($strPath, $len, $offset) {
- if ($len == 0) {
- return $strPath;
- }
- if ($offset < 3) {
- $offset = 0; //Avoid fencepost cases with UNC pathnames
- }
- $src = 0;
- $slash = $this->slash;
- $sb = "";
-
- if ($offset == 0) {
- // Complete normalization, including prefix
- $src = $this->normalizePrefix($strPath, $len, $sb);
- } else {
- // Partial normalization
- $src = $offset;
- $sb .= substr($strPath, 0, $offset);
- }
-
- // Remove redundant slashes from the remainder of the path, forcing all
- // slashes into the preferred slash
- while ($src < $len) {
- $c = $strPath[$src++];
- if ($this->isSlash($c)) {
- while (($src < $len) && $this->isSlash($strPath[$src])) {
- $src++;
- }
- if ($src === $len) {
- /* Check for trailing separator */
- $sn = (int) strlen($sb);
- if (($sn == 2) && ($sb[1] === ':')) {
- // "z:\\"
- $sb .= $slash;
- break;
- }
- if ($sn === 0) {
- // "\\"
- $sb .= $slash;
- break;
- }
- if (($sn === 1) && ($this->isSlash($sb[0]))) {
- /* "\\\\" is not collapsed to "\\" because "\\\\" marks
- the beginning of a UNC pathname. Even though it is
- not, by itself, a valid UNC pathname, we leave it as
- is in order to be consistent with the win32 APIs,
- which treat this case as an invalid UNC pathname
- rather than as an alias for the root directory of
- the current drive. */
- $sb .= $slash;
- break;
- }
- // Path does not denote a root directory, so do not append
- // trailing slash
- break;
- } else {
- $sb .= $slash;
- }
- } else {
- $sb.=$c;
- }
- }
- $rv = (string) $sb;
- return $rv;
- }
-
- /**
- * Check that the given pathname is normal. If not, invoke the real
- * normalizer on the part of the pathname that requires normalization.
- * This way we iterate through the whole pathname string only once.
- * @param string $strPath
- * @return string
- */
- function normalize($strPath) {
- $n = strlen($strPath);
- $slash = $this->slash;
- $altSlash = $this->altSlash;
- $prev = 0;
- for ($i = 0; $i < $n; $i++) {
- $c = $strPath[$i];
- if ($c === $altSlash) {
- return $this->normalizer($strPath, $n, ($prev === $slash) ? $i - 1 : $i);
- }
- if (($c === $slash) && ($prev === $slash) && ($i > 1)) {
- return $this->normalizer($strPath, $n, $i - 1);
- }
- if (($c === ':') && ($i > 1)) {
- return $this->normalizer($strPath, $n, 0);
- }
- $prev = $c;
- }
- if ($prev === $slash) {
- return $this->normalizer($strPath, $n, $n - 1);
- }
- return $strPath;
- }
-
- function prefixLength($strPath) {
- $path = (string) $strPath;
- $slash = (string) $this->slash;
- $n = (int) strlen($path);
- if ($n === 0) {
- return 0;
- }
- $c0 = $path[0];
- $c1 = ($n > 1) ? $path[1] :
- 0;
- if ($c0 === $slash) {
- if ($c1 === $slash) {
- return 2; // absolute UNC pathname "\\\\foo"
- }
- return 1; // drive-relative "\\foo"
- }
-
- if ($this->isLetter($c0) && ($c1 === ':')) {
- if (($n > 2) && ($path[2]) === $slash) {
- return 3; // Absolute local pathname "z:\\foo" */
- }
- return 2; // Directory-relative "z:foo"
- }
- return 0; // Completely relative
- }
-
- function resolve($parent, $child) {
- $parent = (string) $parent;
- $child = (string) $child;
- $slash = (string) $this->slash;
-
- $pn = (int) strlen($parent);
- if ($pn === 0) {
- return $child;
- }
- $cn = (int) strlen($child);
- if ($cn === 0) {
- return $parent;
- }
-
- $c = $child;
- if (($cn > 1) && ($c[0] === $slash)) {
- if ($c[1] === $slash) {
- // drop prefix when child is a UNC pathname
- $c = substr($c, 2);
- }
- else {
- //Drop prefix when child is drive-relative */
- $c = substr($c, 1);
- }
- }
-
- $p = $parent;
- if ($p[$pn - 1] === $slash) {
- $p = substr($p, 0, $pn - 1);
- }
- return $p.$this->slashify($c);
- }
-
- function getDefaultParent() {
- return (string) ("".$this->slash);
- }
-
- function fromURIPath($strPath) {
- $p = (string) $strPath;
- if ((strlen($p) > 2) && ($p[2] === ':')) {
-
- // "/c:/foo" --> "c:/foo"
- $p = substr($p,1);
-
- // "c:/foo/" --> "c:/foo", but "c:/" --> "c:/"
- if ((strlen($p) > 3) && StringHelper::endsWith('/', $p)) {
- $p = substr($p, 0, strlen($p) - 1);
- }
- } elseif ((strlen($p) > 1) && StringHelper::endsWith('/', $p)) {
- // "/foo/" --> "/foo"
- $p = substr($p, 0, strlen($p) - 1);
- }
- return (string) $p;
- }
-
-
- /* -- Path operations -- */
-
- function isAbsolute(PhingFile $f) {
- $pl = (int) $f->getPrefixLength();
- $p = (string) $f->getPath();
- return ((($pl === 2) && ($p[0] === $this->slash)) || ($pl === 3) || ($pl === 1 && $p[0] === $this->slash));
- }
-
- /** private */
- function _driveIndex($d) {
- $d = (string) $d[0];
- if ((ord($d) >= ord('a')) && (ord($d) <= ord('z'))) {
- return ord($d) - ord('a');
- }
- if ((ord($d) >= ord('A')) && (ord($d) <= ord('Z'))) {
- return ord($d) - ord('A');
- }
- return -1;
- }
-
- /** private */
- function _getDriveDirectory($drive) {
- $drive = (string) $drive[0];
- $i = (int) $this->_driveIndex($drive);
- if ($i < 0) {
- return null;
- }
-
- $s = (isset(self::$driveDirCache[$i]) ? self::$driveDirCache[$i] : null);
-
- if ($s !== null) {
- return $s;
- }
-
- $s = $this->_getDriveDirectory($i + 1);
- self::$driveDirCache[$i] = $s;
- return $s;
- }
-
- function _getUserPath() {
- //For both compatibility and security, we must look this up every time
- return (string) $this->normalize(Phing::getProperty("user.dir"));
- }
-
- function _getDrive($path) {
- $path = (string) $path;
- $pl = $this->prefixLength($path);
- return ($pl === 3) ? substr($path, 0, 2) : null;
- }
-
- function resolveFile(PhingFile $f) {
- $path = $f->getPath();
- $pl = (int) $f->getPrefixLength();
-
- if (($pl === 2) && ($path[0] === $this->slash)) {
- return $path; // UNC
- }
-
- if ($pl === 3) {
- return $path; // Absolute local
- }
-
- if ($pl === 0) {
- return (string) ($this->_getUserPath().$this->slashify($path)); //Completely relative
- }
-
- if ($pl === 1) { // Drive-relative
- $up = (string) $this->_getUserPath();
- $ud = (string) $this->_getDrive($up);
- if ($ud !== null) {
- return (string) $ud.$path;
- }
- return (string) $up.$path; //User dir is a UNC path
- }
-
- if ($pl === 2) { // Directory-relative
- $up = (string) $this->_getUserPath();
- $ud = (string) $this->_getDrive($up);
- if (($ud !== null) && StringHelper::startsWith($ud, $path)) {
- return (string) ($up . $this->slashify(substr($path,2)));
- }
- $drive = (string) $path[0];
- $dir = (string) $this->_getDriveDirectory($drive);
-
- $np = (string) "";
- if ($dir !== null) {
- /* When resolving a directory-relative path that refers to a
- drive other than the current drive, insist that the caller
- have read permission on the result */
- $p = (string) $drive . (':'.$dir.$this->slashify(substr($path,2)));
-
- if (!$this->checkAccess($p, false)) {
- // FIXME
- // throw security error
- die("Can't resolve path $p");
- }
- return $p;
- }
- return (string) $drive.':'.$this->slashify(substr($path,2)); //fake it
- }
-
- throw new Exception("Unresolvable path: " . $path);
- }
-
- /* -- most of the following is mapped to the functions mapped th php natives in FileSystem */
-
- /* -- Attribute accessors -- */
-
- function setReadOnly($f) {
- // dunno how to do this on win
- throw new Exception("WIN32FileSystem doesn't support read-only yet.");
- }
-
- /* -- Filesystem interface -- */
-
- protected function _access($path) {
- if (!$this->checkAccess($path, false)) {
- throw new Exception("Can't resolve path $p");
- }
- return true;
- }
-
- function _nativeListRoots() {
- // FIXME
- }
-
- function listRoots() {
- $ds = _nativeListRoots();
- $n = 0;
- for ($i = 0; $i < 26; $i++) {
- if ((($ds >> $i) & 1) !== 0) {
- if (!$this->access((string)( chr(ord('A') + $i) . ':' . $this->slash))) {
- $ds &= ~(1 << $i);
- } else {
- $n++;
- }
- }
- }
- $fs = array();
- $j = (int) 0;
- $slash = (string) $this->slash;
- for ($i = 0; $i < 26; $i++) {
- if ((($ds >> $i) & 1) !== 0) {
- $fs[$j++] = new PhingFile(chr(ord('A') + $i) . ':' . $this->slash);
- }
- }
- return $fs;
- }
-
- /* -- Basic infrastructure -- */
-
- /** compares file paths lexicographically */
- function compare(PhingFile $f1, PhingFile $f2) {
- $f1Path = $f1->getPath();
- $f2Path = $f2->getPath();
- return (boolean) strcasecmp((string) $f1Path, (string) $f2Path);
- }
-
-
- /**
- * returns the contents of a directory in an array
- */
- function lister($f) {
- $dir = @opendir($f->getAbsolutePath());
- if (!$dir) {
- throw new Exception("Can't open directory " . $f->__toString());
- }
- $vv = array();
- while (($file = @readdir($dir)) !== false) {
- if ($file == "." || $file == "..") {
- continue;
- }
- $vv[] = (string) $file;
- }
- @closedir($dir);
- return $vv;
- }
-
-}
-
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/WinNTFileSystem.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/WinNTFileSystem.php
deleted file mode 100644
index d82e841a92..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/WinNTFileSystem.php
+++ /dev/null
@@ -1,35 +0,0 @@
-.
- */
-
-include_once 'phing/system/io/Win32FileSystem.php';
-
-/**
- * FileSystem for Windows NT/2000.
- * @package phing.system.io
- */
-
-class WinNTFileSystem extends Win32FileSystem {
-
- /* -- class only for convenience and future use everything is inherinted --*/
-
-
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/Writer.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/Writer.php
deleted file mode 100644
index 97c56f180e..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/Writer.php
+++ /dev/null
@@ -1,53 +0,0 @@
-.
- */
-
-/**
- * Abstract class for writing character streams.
- *
- * @package phing.system.io
- */
-abstract class Writer {
-
- /**
- * Writes data to output stream.
- * @param string $buf
- * @param int $off
- * @param int $len
- */
- abstract public function write($buf, $off = null, $len = null);
-
- /**
- * Close the stream.
- * @throws IOException - if there is an error closing stream.
- */
- abstract public function close();
-
- /**
- * Flush the stream, if supported by the stream.
- */
- public function flush() {}
-
- /**
- * Returns a string representation of resource filename, url, etc. that is being written to.
- * @return string
- */
- abstract public function getResource();
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/Character.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/Character.php
deleted file mode 100644
index 06cc7a742d..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/Character.php
+++ /dev/null
@@ -1,49 +0,0 @@
-.
- */
-
-/**
- * @package phing.system.lang
- */
-class Character {
-
- // this class might be extended with plenty of ordinal char constants
- // and the like to support the multibyte aware datatype (char) in php
- // in form of an object.
- // anyway just a thought
-
- public static function isLetter($char) {
-
- if (strlen($char) !== 1)
- $char = 0;
-
- $char = (int) ord($char);
-
- if ($char >= ord('A') && $char <= ord('Z'))
- return true;
-
- if ($char >= ord('a') && $char <= ord('z'))
- return true;
-
- return false;
- }
-
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/EventObject.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/EventObject.php
deleted file mode 100644
index b7b82582fd..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/EventObject.php
+++ /dev/null
@@ -1,52 +0,0 @@
-.
- */
-
-/**
- * @package phing.system.lang
- */
-class EventObject {
-
- /** The object on which the Event initially occurred. */
- protected $source;
-
- /** Constructs a prototypical Event. */
- function __construct($source) {
- if ($source === null) {
- throw new Exception("Null source");
- }
- $this->source = $source;
- }
-
- /** The object on which the Event initially occurred. */
- function getSource() {
- return $this->source;
- }
-
- /** Returns a String representation of this EventObject.*/
- function toString() {
- if (method_exists($this->source, "toString")) {
- return get_class($this)."[source=".$this->source->toString()."]";
- } else {
- return get_class($this)."[source=".get_class($this->source)."]";
- }
- }
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/FileNotFoundException.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/FileNotFoundException.php
deleted file mode 100644
index 13e1afd197..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/FileNotFoundException.php
+++ /dev/null
@@ -1,26 +0,0 @@
-.
- */
-
-/**
- * @package phing.system.lang
- */
-class FileNotFoundException extends Exception {}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/NullPointerException.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/NullPointerException.php
deleted file mode 100644
index 6ad71c4ea1..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/NullPointerException.php
+++ /dev/null
@@ -1,26 +0,0 @@
-.
- */
-
-/**
- * @package phing.system.lang
- */
-class NullPointerException extends Exception {}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/SecurityException.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/SecurityException.php
deleted file mode 100644
index d7a2d0751b..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/SecurityException.php
+++ /dev/null
@@ -1,26 +0,0 @@
-.
- */
-
-/**
- * @package phing.system.lang
- */
-class SecurityException extends Exception {}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/Message.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/Message.php
deleted file mode 100644
index 9bde82ce5b..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/Message.php
+++ /dev/null
@@ -1,9 +0,0 @@
-.
- */
-
-include_once 'phing/system/io/PhingFile.php';
-include_once 'phing/system/io/FileWriter.php';
-
-/**
- * Convenience class for reading and writing property files.
- *
- * FIXME
- * - Add support for arrays (separated by ',')
- *
- * @package phing.system.util
- * @version $Revision: 1.13 $
- */
-class Properties {
-
- private $properties = array();
-
- /**
- * Load properties from a file.
- *
- * @param PhingFile $file
- * @return void
- * @throws IOException - if unable to read file.
- */
- function load(PhingFile $file) {
- if ($file->canRead()) {
- $this->parse($file->getPath(), false);
- } else {
- throw new IOException("Can not read file ".$file->getPath());
- }
-
- }
-
- /**
- * Replaces parse_ini_file() or better_parse_ini_file().
- * Saves a step since we don't have to parse and then check return value
- * before throwing an error or setting class properties.
- *
- * @param string $filePath
- * @param boolean $processSections Whether to honor [SectionName] sections in INI file.
- * @return array Properties loaded from file (no prop replacements done yet).
- */
- protected function parse($filePath) {
-
- // load() already made sure that file is readable
- // but we'll double check that when reading the file into
- // an array
-
- if (($lines = @file($filePath)) === false) {
- throw new IOException("Unable to parse contents of $filePath");
- }
-
- $this->properties = array();
- $sec_name = "";
-
- foreach($lines as $line) {
-
- $line = trim($line);
-
- if($line == "")
- continue;
-
- if ($line[0] == '#' or $line[0] == ';') {
- // it's a comment, so continue to next line
- continue;
- } else {
- $pos = strpos($line, '=');
- $property = trim(substr($line, 0, $pos));
- $value = trim(substr($line, $pos + 1));
- $this->properties[$property] = $this->inVal($value);
- }
-
- } // for each line
- }
-
- /**
- * Process values when being read in from properties file.
- * does things like convert "true" => true
- * @param string $val Trimmed value.
- * @return mixed The new property value (may be boolean, etc.)
- */
- protected function inVal($val) {
- if ($val === "true") {
- $val = true;
- } elseif ($val === "false") {
- $val = false;
- }
- return $val;
- }
-
- /**
- * Process values when being written out to properties file.
- * does things like convert true => "true"
- * @param mixed $val The property value (may be boolean, etc.)
- * @return string
- */
- protected function outVal($val) {
- if ($val === true) {
- $val = "true";
- } elseif ($val === false) {
- $val = "false";
- }
- return $val;
- }
-
- /**
- * Create string representation that can be written to file and would be loadable using load() method.
- *
- * Essentially this function creates a string representation of properties that is ready to
- * write back out to a properties file. This is used by store() method.
- *
- * @return string
- */
- public function toString() {
- $buf = "";
- foreach($this->properties as $key => $item) {
- $buf .= $key . "=" . $this->outVal($item) . PHP_EOL;
- }
- return $buf;
- }
-
- /**
- * Stores current properties to specified file.
- *
- * @param PhingFile $file File to create/overwrite with properties.
- * @param string $header Header text that will be placed (within comments) at the top of properties file.
- * @return void
- * @throws IOException - on error writing properties file.
- */
- function store(PhingFile $file, $header = null) {
- // stores the properties in this object in the file denoted
- // if file is not given and the properties were loaded from a
- // file prior, this method stores them in the file used by load()
- try {
- $fw = new FileWriter($file);
- if ($header !== null) {
- $fw->write( "# " . $header . PHP_EOL );
- }
- $fw->write($this->toString());
- $fw->close();
- } catch (IOException $e) {
- throw new IOException("Error writing property file: " . $e->getMessage());
- }
- }
-
- /**
- * Returns copy of internal properties hash.
- * Mostly for performance reasons, property hashes are often
- * preferable to passing around objects.
- *
- * @return array
- */
- function getProperties() {
- return $this->properties;
- }
-
- /**
- * Get value for specified property.
- * This is the same as get() method.
- *
- * @param string $prop The property name (key).
- * @return mixed
- * @see get()
- */
- function getProperty($prop) {
- if (!isset($this->properties[$prop])) {
- return null;
- }
- return $this->properties[$prop];
- }
-
- /**
- * Get value for specified property.
- * This function exists to provide a hashtable-like interface for
- * properties.
- *
- * @param string $prop The property name (key).
- * @return mixed
- * @see getProperty()
- */
- function get($prop) {
- if (!isset($this->properties[$prop])) {
- return null;
- }
- return $this->properties[$prop];
- }
-
- /**
- * Set the value for a property.
- *
- * @param string $key
- * @param mixed $value
- * @return mixed Old property value or NULL if none was set.
- */
- function setProperty($key, $value) {
- $oldValue = null;
- if (isset($this->properties[$key])) {
- $oldValue = $this->properties[$key];
- }
- $this->properties[$key] = $value;
- return $oldValue;
- }
-
- /**
- * Set the value for a property.
- * This function exists to provide hashtable-lie
- * interface for properties.
- *
- * @param string $key
- * @param mixed $value
- */
- function put($key, $value) {
- return $this->setProperty($key, $value);
- }
-
- /**
- * Same as keys() function, returns an array of property names.
- * @return array
- */
- function propertyNames() {
- return $this->keys();
- }
-
- /**
- * Whether loaded properties array contains specified property name.
- * @return boolean
- */
- function containsKey($key) {
- return isset($this->properties[$key]);
- }
-
- /**
- * Returns properties keys.
- * Use this for foreach() {} iterations, as this is
- * faster than looping through property values.
- * @return array
- */
- function keys() {
- return array_keys($this->properties);
- }
-
- /**
- * Whether properties list is empty.
- * @return boolean
- */
- function isEmpty() {
- return empty($this->properties);
- }
-
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/Register.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/Register.php
deleted file mode 100644
index 7cc65333ea..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/Register.php
+++ /dev/null
@@ -1,115 +0,0 @@
-
- *
- *
- *
- * The task/type must provide a supporting setter for the attribute:
- *
- *
- * function setListeningReplace(RegisterSlot $slot) {
- * $this->replace = $slot;
- * }
- *
- * // in main()
- * if ($this->replace instanceof RegisterSlot) {
- * $this->regexp->setReplace($this->replace->getValue());
- * } else {
- * $this->regexp->setReplace($this->replace);
- * }
- *
- *
- * @author Hans Lellelid
- * @version $Revision: 1.3 $
- * @package phing.system.util
- */
-class Register {
-
- /** Slots that have been registered */
- private static $slots = array();
-
- /**
- * Returns RegisterSlot for specified key.
- *
- * If not slot exists a new one is created for key.
- *
- * @param string $key
- * @return RegisterSlot
- */
- public static function getSlot($key) {
- if (!isset(self::$slots[$key])) {
- self::$slots[$key] = new RegisterSlot($key);
- }
- return self::$slots[$key];
- }
-}
-
-
-/**
- * Represents a slot in the register.
- */
-class RegisterSlot {
-
- /** The name of this slot. */
- private $key;
-
- /** The value for this slot. */
- private $value;
-
- /**
- * Constructs a new RegisterSlot, setting the key to passed param.
- * @param string $key
- */
- public function __construct($key) {
- $this->key = (string) $key;
- }
-
- /**
- * Sets the key / name for this slot.
- * @param string $k
- */
- public function setKey($k) {
- $this->key = (string) $k;
- }
-
- /**
- * Gets the key / name for this slot.
- * @return string
- */
- public function getKey() {
- return $this->key;
- }
-
- /**
- * Sets the value for this slot.
- * @param mixed
- */
- public function setValue($v) {
- $this->value = $v;
- }
-
- /**
- * Returns the value at this slot.
- * @return mixed
- */
- public function getValue() {
- return $this->value;
- }
-
-}
-
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/Timer.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/Timer.php
deleted file mode 100644
index 7a40867edd..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/Timer.php
+++ /dev/null
@@ -1,96 +0,0 @@
-.
- */
-
-
-/**
- * This class can be used to obtain the execution time of all of the scripts
- * that are executed in the process of building a page.
- *
- * Example:
- * To be done before any scripts execute:
- *
- * $Timer = new Timer;
- * $Timer->Start_Timer();
- *
- * To be done after all scripts have executed:
- *
- * $timer->Stop_Timer();
- * $timer->Get_Elapsed_Time(int number_of_places);
- *
- * @author Charles Killian
- * @author Hans Lellelid
- * @package phing.system.util
- * @version $Revision: 1.5 $ $Date: 2006-09-14 13:19:08 -0700 (Thu, 14 Sep 2006) $
- */
-class Timer {
-
- /** start time */
- protected $stime;
-
- /** end time */
- protected $etime;
-
- /**
- * This function sets the class variable $stime to the current time in
- * microseconds.
- * @return void
- */
- public function start() {
- $this->stime = $this->getMicrotime();
- }
-
- /**
- * This function sets the class variable $etime to the current time in
- * microseconds.
- * @return void
- */
- function stop() {
- $this->etime = $this->getMicrotime();
- }
-
- /**
- * This function returns the elapsed time in seconds.
- *
- * Call start_time() at the beginning of script execution and end_time() at
- * the end of script execution. Then, call elapsed_time() to obtain the
- * difference between start_time() and end_time().
- *
- * @param $places decimal place precision of elapsed time (default is 5)
- * @return string Properly formatted time.
- */
- function getElapsedTime($places=5) {
- $etime = $this->etime - $this->stime;
- $format = "%0.".$places."f";
- return (sprintf ($format, $etime));
- }
-
- /**
- * This function returns the current time in microseconds.
- *
- * @author Everett Michaud, Zend.com
- * @return current time in microseconds
- * @access private
- */
- function getMicrotime() {
- list($usec, $sec) = explode(" ", microtime());
- return ((float)$usec + (float)$sec);
- }
-}
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/defaults.properties b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/defaults.properties
deleted file mode 100644
index cf8e73930c..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/defaults.properties
+++ /dev/null
@@ -1,86 +0,0 @@
-; -------------------------------------
-; These taskdefs are loaded at startup.
-; -------------------------------------
-
-; Internal system tasks
-;
-adhoc=phing.tasks.system.AdhocTask
-adhoc-task=phing.tasks.system.AdhocTaskdefTask
-adhoc-type=phing.tasks.system.AdhocTypedefTask
-append=phing.tasks.system.AppendTask
-available=phing.tasks.system.AvailableTask
-chmod=phing.tasks.system.ChmodTask
-chown=phing.tasks.system.ChownTask
-concat=phing.tasks.system.AppendTask
-condition=phing.tasks.system.ConditionTask
-copy=phing.tasks.system.CopyTask
-cvs=phing.tasks.system.CvsTask
-cvspass=phing.tasks.system.CvsPassTask
-delete=phing.tasks.system.DeleteTask
-echo=phing.tasks.system.EchoTask
-exec=phing.tasks.system.ExecTask
-fail=phing.tasks.system.ExitTask
-foreach=phing.tasks.system.ForeachTask
-includepath=phing.tasks.system.IncludePathTask
-input=phing.tasks.system.InputTask
-mkdir=phing.tasks.system.MkdirTask
-move=phing.tasks.system.MoveTask
-phing=phing.tasks.system.PhingTask
-phingcall=phing.tasks.system.PhingCallTask
-php=phing.tasks.system.PhpEvalTask
-property=phing.tasks.system.PropertyTask
-propertyprompt=phing.tasks.system.PropertyPromptTask
-reflexive=phing.tasks.system.ReflexiveTask
-resolvepath=phing.tasks.system.ResolvePathTask
-taskdef=phing.tasks.system.TaskdefTask
-touch=phing.tasks.system.TouchTask
-tstamp=phing.tasks.system.TstampTask
-typedef=phing.tasks.system.TypedefTask
-uptodate=phing.tasks.system.UpToDateTask
-xslt=phing.tasks.system.XsltTask
-if=phing.tasks.system.IfTask
-warn=phing.tasks.system.WarnTask
-
-; "Core" contributed tasks
-; -- i.e. no taskdef needed.
-
-creole=phing.tasks.ext.creole.CreoleSQLExecTask
-pdo=phing.tasks.ext.pdo.PDOSQLExecTask
-package-as-path=phing.tasks.ext.PackageAsPathTask
-smarty=phing.tasks.ext.SmartyTask
-capsule=phing.tasks.ext.CapsuleTask
-tar=phing.tasks.ext.TarTask
-untar=phing.tasks.ext.UntarTask
-pearpkg=phing.tasks.ext.PearPackageTask
-pearpkg2=phing.tasks.ext.PearPackage2Task
-mail=phing.tasks.ext.MailTask
-zip=phing.tasks.ext.ZipTask
-unzip=phing.tasks.ext.UnzipTask
-scpsend=phing.tasks.ext.ScpSendTask
-
-; "ext" tasks
-phpdoc=phing.tasks.ext.phpdoc.PhpDocumentorTask
-phpdocext=phing.tasks.ext.phpdoc.PhpDocumentorExternalTask
-svnlastrevision=phing.tasks.ext.svn.SvnLastRevisionTask
-svncheckout=phing.tasks.ext.svn.SvnCheckoutTask
-svnexport=phing.tasks.ext.svn.SvnExportTask
-svnupdate=phing.tasks.ext.svn.SvnUpdateTask
-phpunit3=phing.tasks.ext.phpunit.PHPUnitTask
-phpunit3report=phing.tasks.ext.phpunit.PHPUnitReportTask
-phpunit2=phing.tasks.ext.phpunit.PHPUnitTask
-phpunit2report=phing.tasks.ext.phpunit.PHPUnitReportTask
-phpunit=phing.tasks.ext.phpunit.PHPUnitTask
-phpunitreport=phing.tasks.ext.phpunit.PHPUnitReportTask
-coverage-setup=phing.tasks.ext.coverage.CoverageSetupTask
-coverage-merger=phing.tasks.ext.coverage.CoverageMergerTask
-coverage-report=phing.tasks.ext.coverage.CoverageReportTask
-ioncubeencoder=phing.tasks.ext.ioncube.IoncubeEncoderTask
-ioncubelicense=phing.tasks.ext.ioncube.IoncubeLicenseTask
-simpletest=phing.tasks.ext.simpletest.SimpleTestTask
-phplint=phing.tasks.ext.PhpLintTask
-xmllint=phing.tasks.ext.XmlLintTask
-analyze=phing.tasks.ext.ZendCodeAnalyzerTask
-jsllint=phing.tasks.ext.JslLintTask
-manifest=phing.tasks.ext.ManifestTask
-phpcodesniffer=phing.tasks.ext.PhpCodeSnifferTask
-ftpdeploy=phing.tasks.ext.FtpDeployTask
\ No newline at end of file
diff --git a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/CapsuleTask.php b/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/CapsuleTask.php
deleted file mode 100644
index 3385f80718..0000000000
--- a/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/CapsuleTask.php
+++ /dev/null
@@ -1,478 +0,0 @@
-.
- */
-
-include_once 'phing/Task.php';
-include_once 'phing/BuildException.php';
-include_once 'phing/lib/Capsule.php';
-include_once 'phing/util/StringHelper.php';
-
-/**
- * A phing task for generating output by using Capsule.
- *
- * This is based on the interface to TexenTask from Apache's Velocity engine.
- *
- * @author Hans Lellelid
- * @version $Revision: 1.17 $
- * @package phing.tasks.ext
- */
-class CapsuleTask extends Task {
-
- /**
- * Capsule "template" engine.
- * @var Capsule
- */
- protected $context;
-
- /**
- * Any vars assigned via the build file.
- * @var array AssignedVar[]
- */
- protected $assignedVars = array();
-
- /**
- * This is the control template that governs the output.
- * It may or may not invoke the services of worker
- * templates.
- * @var string
- */
- protected $controlTemplate;
-
- /**
- * This is where Velocity will look for templates
- * using the file template loader.
- * @var string
- */
- protected $templatePath;
-
- /**
- * This is where texen will place all the output
- * that is a product of the generation process.
- * @var string
- */
- protected $outputDirectory;
-
- /**
- * This is the file where the generated text
- * will be placed.
- * @var string
- */
- protected $outputFile;
-
- /**
- *
- * These are properties that are fed into the
- * initial context from a properties file. This
- * is simply a convenient way to set some values
- * that you wish to make available in the context.
- *
- *
- * These values are not critical, like the template path
- * or output path, but allow a convenient way to
- * set a value that may be specific to a particular
- * generation task.
- *
- *
- * For example, if you are generating scripts to allow
- * user to automatically create a database, then
- * you might want the $databaseName
- * to be placed
- * in the initial context so that it is available
- * in a script that might look something like the
- * following:
- *