note 88266 added to function.ziparchive-addfile
| From: | FarzadGhanei at osu1 dot php dot net | Date: | Sun, 18 Jan 2009 10:53:24 +0000 |
| Subject: | note 88266 added to function.ziparchive-addfile | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-149380@lists.php.net to get a copy of this message | ||
here is a basic class that extends the ZipArchive to:
* add a functionality to report the ZIP file address (I needed it and I could not find out how in
ZipArchive documentation).
* resolve the problem of adding so many files to the archive due file descriptor limit. the
ZipArchiveImproved::addFile() handles this.
<?php
/**
* ZipArchiveImproved extends ZipArchive to add some information about the zip file and some
functionality.
*
*
*
* @author Farzad Ghanei
* @uses ZipArchive
* @version 1.0.0 2009-01-18
*/
class ZipArchiveImproved extends ZipArchive {
protected $_archiveFileName = null;
protected $_newAddedFilesCounter = 0;
protected $_newAddedFilesSize = 100;
/**
* returns the name of the archive file.
*
* @return string
*/
public function getArchiveFileName() {
return $this->_archiveFileName;
}
/**
* returns the number of files that are going to be added to ZIP
* without reopenning the stream to file.
*
* @return int
*/
public function getNewAddedFilesSize() {
return $this->_newAddedFilesSize;
}
/**
* sets the number of files that are going to be added to ZIP
* without reopenning the stream to file. if no size is specified, default is 100.
*
* @param int
* @return ZipArchiveImproved self reference
*/
public function setNewlAddedFilesSize($size=100) {
if ( empty($size) || !is_int($size) || $size < 1) {
$size = 100;
}
$this->_newAddedFilesSize = $size;
return $this;
}
/**
* opens a stream to a ZIP archive file. calls the ZipArchive::open() internally.
* overwrites ZipArchive::open() to add the archiveFileName functionality.
*
* @param string $fileName
* @param int $flags
* return mixed
*/
public function open($fileName, $flags) {
$this->_archiveFileName = $fileName;
$this->_newAddedFilesCounter = 0;
return parent::open($fileName,$flags);
}
/**
* closes the stream to ZIP archive file. calls the ZipArchive::close() internally.
* overwrites ZipArchive::close() to add the archiveFileName functionality.
*
* @return bool
*/
public function close() {
$this->_archiveFileName = null;
$this->_newAddedFilesCounter = 0;
return parent::close();
}
/**
* closes the connection to ZIP file and openes the connection again.
*
* @return bool
*/
public function reopen() {
$archiveFileName = $this->_archiveFileName;
if ( !$this->close() ) {
return false;
}
return $this->open($archiveFileName,self::CREATE);
}
/**
* adds a file to a ZIP archive from the given path. calls the ZipArchive::addFile() internally.
* overwrites ZipArchive::addFile() to handle maximum file connections in operating systems.
*
* @param string $fileName the path to file to be added to archive
* @param string [optional] $localname the name of the file in the ZIP archive
* @return bool
*/
public function addFile( $fileName ) {
if ($this->_newAddedFilesCounter >= $this->_newAddedFilesSize) {
$this->reopen();
}
if ( func_num_args() > 1 ) {
$flags = func_get_arg(1);
$added = parent::addFile($fileName,$flags);
if ($added) {
$this->_newAddedFilesCounter++;
}
return $added;
}
$added = parent::addFile($fileName);
if ($added) {
$this->_newAddedFilesCounter++;
}
return $added;
} // public function addFile()
}
?>
----
Server IP: 79.132.192.3
Probable Submitter: 82.99.193.2
----
Manual Page -- http://www.php.net/manual/en/function.ziparchive-addfile.php
Edit -- https://master.php.net/note/edit/88266
Del: integrated -- https://master.php.net/note/delete/88266/integrated
Del: useless -- https://master.php.net/note/delete/88266/useless
Del: bad code -- https://master.php.net/note/delete/88266/bad+code
Del: spam -- https://master.php.net/note/delete/88266/spam
Del: non-english -- https://master.php.net/note/delete/88266/non-english
Del: in docs -- https://master.php.net/note/delete/88266/in+docs
Del: other reasons-- https://master.php.net/note/delete/88266
Reject -- https://master.php.net/note/reject/88266
Search -- https://master.php.net/manage/user-notes.php