Annotation of embedaddon/php/ext/phar/tests/zip/files/zipmaker.php.inc, revision 1.1.1.1

1.1       misho       1: <?php
                      2: // stolen from PEAR2_Pyrus_Developer_Creator_Zip by Greg Beaver, the original author, for use in unit tests
                      3: class zipmaker
                      4: {
                      5:     /**
                      6:      * Path to archive file
                      7:      *
                      8:      * @var string
                      9:      */
                     10:     protected $archive;
                     11:     /**
                     12:      * @var ZIPArchive
                     13:      */
                     14:     protected $zip;
                     15:     protected $path;
                     16:     function __construct($path)
                     17:     {
                     18:         if (!class_exists('ZIPArchive')) {
                     19:             throw new Exception(
                     20:                 'Zip extension is not available');
                     21:         }
                     22:         $this->path = $path;
                     23:     }
                     24: 
                     25:     /**
                     26:      * save a file inside this package
                     27:      * @param string relative path within the package
                     28:      * @param string|resource file contents or open file handle
                     29:      */
                     30:     function addFile($path, $fileOrStream)
                     31:     {
                     32:         if (is_resource($fileOrStream)) {
                     33:             $this->zip->addFromString($path, stream_get_contents($fileOrStream));
                     34:         } else {
                     35:             $this->zip->addFromString($path, $fileOrStream);
                     36:         }
                     37:     }
                     38: 
                     39:     /**
                     40:      * Initialize the package creator
                     41:      */
                     42:     function init()
                     43:     {
                     44:         $this->zip = new ZipArchive;
                     45:         if (true !== $this->zip->open($this->path, ZIPARCHIVE::CREATE)) {
                     46:             throw new Exception(
                     47:                 'Cannot open ZIP archive ' . $this->path
                     48:             );
                     49:         }
                     50:     }
                     51: 
                     52:     /**
                     53:      * Create an internal directory, creating parent directories as needed
                     54:      * 
                     55:      * This is a no-op for the tar creator
                     56:      * @param string $dir
                     57:      */
                     58:     function mkdir($dir)
                     59:     {
                     60:         $this->zip->addEmptyDir($dir);
                     61:     }
                     62: 
                     63:     /**
                     64:      * Finish saving the package
                     65:      */
                     66:     function close()
                     67:     {
                     68:         $this->zip->close();
                     69:     }
                     70: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>