* @copyright 1997-2005 The PHP Group * @license http://www.gnu.org/copyleft/lesser.html LGPL * @version CVS: $Id: Directory.php 2 2010-11-23 14:32:26Z oldperl $ * @link http://pear.php.net/package/File_Archive */ require_once "File/Archive/Reader/ChangeName.php"; /** * Change a directory name to another * * Example: * If archive.tar is a file archive containing files a.txt and foo/b.txt * new File_Archive_Reader_ChangeName_Directory('foo', 'bar' * new File_Archive_Reader_Tar( * new File_Archive_Reader_File('archive.tar') * ) * ) is a reader containing files a.txt and bar/b.txt */ class File_Archive_Reader_ChangeName_Directory extends File_Archive_Reader_ChangeName { var $oldBaseName; var $newBaseName; function File_Archive_Reader_ChangeName_Directory ($oldBaseName, $newBaseName, &$source) { // parent::File_Archive_Reader_ChangeName($source); parent::__construct($source); $this->oldBaseName = $this->getStandardURL($oldBaseName); if (substr($this->oldBaseName, -1) == '/') { $this->oldBaseName = substr($this->oldBaseName, 0, -1); } $this->newBaseName = $this->getStandardURL($newBaseName); if (substr($this->newBaseName, -1) == '/') { $this->newBaseName = substr($this->newBaseName, 0, -1); } } function modifyName($name) { if (empty($this->oldBaseName) || !strncmp($name, $this->oldBaseName.'/', strlen($this->oldBaseName)+1) || strcmp($name, $this->oldBaseName) == 0) { return $this->newBaseName. ( empty($this->newBaseName) || strlen($name)<=strlen($this->oldBaseName)+1 ? '' : '/' ). substr($name, strlen($this->oldBaseName)+1); } else { return $name; } } function unmodifyName($name) { if (empty($this->newBaseName) || !strncmp($name, $this->newBaseName.'/', strlen($this->newBaseName)+1) || strcmp($name, $this->newBaseName) == 0) { return $this->oldBaseName. ( empty($this->oldBaseName) || strlen($name)<=strlen($this->newBaseName)+1 ? '' : '/' ). substr($name, strlen($this->newBaseName)+1); } else { return $name; } } } ?>