/**
* Add the content to a directory.
*
* @author Adam Schmalhofer <*****@*****.**>
* @author A. Grandt <*****@*****.**>
*
* @param string $realPath Path on the file system.
* @param string $zipPath File path and name to be used in the archive.
* @param bool $recursive Add content recursively, default is true.
* @param bool $followSymlinks Follow and add symbolic links, if they are accessible, default is true.
* @param array &$addedFiles Reference to the added files, this is used to prevent duplicates, default is an empty array.
* If you start the function by parsing an array, the array will be populated with the $realPath
* and $zipPath kay/value pairs added to the archive by the function.
* @param bool $overrideFilePermissions Force the use of the file/dir permissions set in the $extDirAttr
* and $extFileAttr parameters.
* @param int $extDirAttr Permissions for directories.
* @param int $extFileAttr Permissions for files.
*/
public function addDirectoryContent($realPath, $zipPath, $recursive = true, $followSymlinks = true, &$addedFiles = array(), $overrideFilePermissions = false, $extDirAttr = self::EXT_FILE_ATTR_DIR, $extFileAttr = self::EXT_FILE_ATTR_FILE)
{
if (file_exists($realPath) && !isset($addedFiles[realpath($realPath)])) {
if (is_dir($realPath)) {
$this->addDirectory($zipPath, 0, null, $overrideFilePermissions ? $extDirAttr : ZipUtils::getFileExtAttr($realPath));
}
$addedFiles[realpath($realPath)] = $zipPath;
$iter = new \DirectoryIterator($realPath);
foreach ($iter as $file) {
/* @var $file \DirectoryIterator */
if ($file->isDot()) {
continue;
}
$newRealPath = $file->getPathname();
$newZipPath = ZipUtils::pathJoin($zipPath, $file->getFilename());
if (file_exists($newRealPath) && ($followSymlinks || !is_link($newRealPath))) {
if ($file->isFile()) {
$addedFiles[realpath($newRealPath)] = $newZipPath;
$this->addLargeFile($newRealPath, $newZipPath, 0, null, $overrideFilePermissions ? $extFileAttr : ZipUtils::getFileExtAttr($newRealPath));
} else {
if ($recursive) {
$this->addDirectoryContent($newRealPath, $newZipPath, $recursive, $followSymlinks, $addedFiles, $overrideFilePermissions, $extDirAttr, $extFileAttr);
} else {
$this->addDirectory($zipPath, 0, null, $overrideFilePermissions ? $extDirAttr : ZipUtils::getFileExtAttr($newRealPath));
}
}
}
}
}
}