public function createZip()
 {
     /* Check if file is cached and still valid */
     $cachedfolder = $this->getFolder();
     if ($cachedfolder === false || $cachedfolder['folder'] === false) {
         return new WP_Error('broke', __("Requested directory isn't allowed", 'useyourdrive'));
     }
     $folder = $cachedfolder['folder']->getItem();
     /* Check if entry is allowed */
     if (!$this->_isEntryAuthorized($cachedfolder['folder'])) {
         return new WP_Error('broke', __("Requested directory isn't allowed", 'useyourdrive'));
     }
     /* Create upload dir if needed */
     $zip_filename = '_zip_' . basename($folder->getTitle()) . '_' . uniqid() . '.zip';
     $json_options = 0;
     if (defined('JSON_PRETTY_PRINT')) {
         $json_options |= JSON_PRETTY_PRINT;
         // Supported in PHP 5.4+
     }
     if (isset($_REQUEST['files'])) {
         $dirlisting = array('folders' => array(), 'files' => array(), 'bytes' => 0, 'bytes_total' => 0);
         foreach ($_REQUEST['files'] as $fileid) {
             $cached_file = $this->getEntry($fileid);
             $data = $this->_getRecursiveFiles($cached_file, '', true);
             $dirlisting['files'] = array_merge($dirlisting['files'], $data['files']);
             $dirlisting['folders'] = array_merge($dirlisting['folders'], $data['folders']);
             $dirlisting['bytes_total'] += $data['bytes_total'];
         }
     } else {
         $dirlisting = $this->_getRecursiveFiles($cachedfolder['folder']);
     }
     if (count($dirlisting['folders']) > 0 || count($dirlisting['files']) > 0) {
         /* Create zip file */
         if (!function_exists('PHPZip\\autoload')) {
             try {
                 require_once "PHPZip/autoload.php";
             } catch (Exception $ex) {
                 return new WP_Error('broke', __('Something went wrong... See settings page', 'useyourdrive'));
             }
         }
         $zip = new PHPZip\Zip\File\Zip($zip_filename);
         /* Add folders */
         if (count($dirlisting['folders']) > 0) {
             foreach ($dirlisting['folders'] as $key => $folder) {
                 $zip->addDirectory($folder);
                 unset($dirlisting['folders'][$key]);
             }
         }
         /* Add files */
         if (count($dirlisting['files']) > 0) {
             foreach ($dirlisting['files'] as $key => $file) {
                 usleep(125000);
                 set_time_limit(60);
                 /* get file */
                 $request = new Google_Http_Request($file['url'], 'GET');
                 try {
                     $httpRequest = $this->client->getAuth()->authenticatedRequest($request);
                 } catch (Exception $ex) {
                     continue;
                 }
                 if ($httpRequest->getResponseHttpCode() == 200) {
                     ob_flush();
                     $stream = fopen('php://memory', 'r+');
                     fwrite($stream, $httpRequest->getResponseBody());
                     rewind($stream);
                     try {
                         $zip->addLargeFile($stream, $file['path']);
                     } catch (Exception $ex) {
                     }
                     fclose($stream);
                     $dirlisting['bytes'] += $file['bytes'];
                     unset($dirlisting['files'][$key]);
                 }
             }
         }
         /* Close zip */
         $result = $zip->sendZip($zip_filename);
         die;
     } else {
         die('No files or folders selected');
     }
 }
Example #2
0
// Require your bootstrap.php, or the autoload.php, and change the class instantiation from nwe Zip( to
// new \PHPZip\Zip\File\Zip(
// The parameters are unchanged.

require_once('bootstrap.php'); // include_once("Zip.php");
$fileTime = date("D, d M Y H:i:s T");

// Set a temp file to use, instead of the default system temp file directory.
// The temp file is used if the generated Zip file is becoming too large to hold in memory.
//Zip::$temp = "./tempFile";

// Setting this to a function to create the temp files requires PHP 5.3 or newer:
//Zip::$temp = function() { return tempnam(sys_get_temp_dir(), 'Zip');};
\PHPZip\Zip\File\Zip::$temp = function() { return "./tempFile_" . rand(100000, 999999);};

$zip = new \PHPZip\Zip\File\Zip(); // $zip = new Zip();
// Archive comments don't really support utf-8. Some tools detect and read it though.
$zip->setComment("Example Zip file.\nCreated on " . date('l jS \of F Y h:i:s A'));
$zip->addFile("Hello World!", "hello.txt");

@$handle = opendir($fileDir);
if ($handle) {
	/* This is the correct way to loop over the directory. */
	while (false !== ($file = readdir($handle))) {
		if (strpos($file, ".php") !== false) {
			$pathData = pathinfo($fileDir . $file);
			$fileName = $pathData['filename'];

			$zip->addFile(file_get_contents($fileDir . $file), $file, filectime($fileDir . $file), NULL, TRUE, Zip::getFileExtAttr($file));
		}
	}
Example #3
0
$errors = "";

// Example. Zip all .html files in the current directory and send the file for Download.
// Also adds a static text "Hello World!" to the file Hello.txt
$fileDir = './';
ob_start(); // This is only to show that ob_start can be called, however the buffer must be empty when sending.

// To use the new namespaces, you need a bootstrapper/autoloader, examples are provided here.
// The changes to your Zip use are limited to two lines after that is in place.
// Require your bootstrap.php, or the autoload.php, and change the class instantiation from nwe Zip( to
// new \PHPZip\Zip\File\Zip(
// The parameters are unchanged.
require_once('bootstrap.php'); // include_once("Zip.php");
$fileTime = date("D, d M Y H:i:s T");

$zip = new \PHPZip\Zip\File\Zip(); // $zip = new Zip();
// Archive comments don't really support utf-8. Some tools detect and read it though.
$zip->setComment("Example Zip file.\nАрхив Комментарий\nCreated on " . date('l jS \of F Y h:i:s A'));
// A bit of Russian (I hope), to test UTF-8 file names. (Note. I'm not Russian, and don't speak the language, this is just for testing)
$zip->addFile("Hello World!", "hello.txt");
$zip->addFile("Привет мир!", "Привет мир. С комментарий к файлу.txt", 0, "Кириллица файл комментарий");
$zip->addFile("Hello World!", "hello.txt");

@$handle = opendir($fileDir);
if ($handle) {
	/* This is the correct way to loop over the directory. */
	while (false !== ($file = readdir($handle))) {
		if (strpos($file, ".php") !== false) {
			$pathData = pathinfo($fileDir . $file);
			$fileName = $pathData['filename'];
Example #4
0
$errors = "";

// Example. Zip all .html files in the current directory and save to current directory.
// Make a copy, also to the current dir, for good measure.
$fileDir = './';

// To use the new namespaces, you need a bootstrapper/autoloader, examples are provided here.
// The changes to your Zip use are limited to two lines after that is in place.
// Require your bootstrap.php, or the autoload.php, and change the class instantiation from nwe Zip( to
// new \PHPZip\Zip\File\Zip(
// The parameters are unchanged.

require_once('bootstrap.php'); // include_once("Zip.php");
$fileTime = date("D, d M Y H:i:s T");

$zip = new \PHPZip\Zip\File\Zip(); // $zip = new Zip();
$zip->setZipFile("ZipExample.zip");

$zip->setComment("Example Zip file.\nCreated on " . date('l jS \of F Y h:i:s A'));
$zip->addFile("Hello World!", "hello.txt");

@$handle = opendir($fileDir);
if ($handle) {
    /* This is the correct way to loop over the directory. */
    while (false !== ($file = readdir($handle))) {
        if (strpos($file, ".html") !== false) {
            $pathData = pathinfo($fileDir . $file);
            $fileName = $pathData['filename'];

            $zip->addFile(file_get_contents($fileDir . $file), $file, filectime($fileDir . $file));
        }
Example #5
0
// Example. Zip all .html files in the current directory and send the file for Download.
// Also adds a static text "Hello World!" to the file Hello.txt
$fileDir = '../testData/test';
ob_start(); // This is only to show that ob_start can be called, however the buffer must be empty when sending.

// To use the new namespaces, you need a bootstrapper/autoloader, examples are provided here.
// The changes to your Zip use are limited to two lines after that is in place.
// Require your bootstrap.php, or the autoload.php, and change the class instantiation from nwe Zip( to
// new \PHPZip\Zip\File\Zip(
// The parameters are unchanged.

require_once('bootstrap.php'); // include_once("Zip.php");
$fileTime = date("D, d M Y H:i:s T");

$zip = new \PHPZip\Zip\File\Zip(); // new Zip();
/*
// Archive comments don't really support utf-8. Some tools detect and read it though.
$zip->setComment("Example Zip file.\nАрхив Комментарий\nCreated on " . date('l jS \of F Y h:i:s A'));
// A bit of Russian (I hope), to test UTF-8 file names.
$zip->addFile("Привет мир!", "Кириллица имя файла.txt");
$zip->addFile("Привет мир!", "Привет мир. С комментарий к файлу.txt", 0, "Кириллица файл комментарий");
$zip->addFile("Hello World!", "hello.txt");

@$handle = opendir($fileDir);
if ($handle) {
    // This is the correct way to loop over the directory.
    while (false !== ($file = readdir($handle))) {
        if (strpos($file, ".php") !== false) {
            $pathData = pathinfo($fileDir . $file);
            $fileName = $pathData['filename'];