| 
<?php/**
 * Backup Lobby DIR as .zip folder
 * http://stackoverflow.com/a/19451938/1372424
 */
 $the_folder = L_DIR;
 $zip_file_name = L_DIR . "/contents/extra/lobby-" .date("Y-m-d@H-i-s") . '.zip';
 
 $download_file = true;
 
 class FlxZipArchive extends ZipArchive {
 /** Add a Dir with Files and Subdirs to the archive;;;;; @param string $location Real Location;;;;  @param string $name Name in Archive;;; @author Nicolas Heimann;;;; @access private  **/
 
 public function addDir($location, $name) {
 $this->addEmptyDir($name);
 
 $this->addDirDo($location, $name);
 } // EO addDir;
 
 /**  Add Files & Dirs to archive;;;; @param string $location Real Location;  @param string $name Name in Archive;;;;;; @author Nicolas Heimann
 * @access private   **/
 private function addDirDo($location, $name) {
 $name .= '/';
 $location .= '/';
 
 // Read all Files in Dir
 $dir = opendir ($location);
 while ($file = readdir($dir))
 {
 if ($file == '.' || $file == '..') continue;
 // Rekursiv, If dir: FlxZipArchive::addDir(), else ::File();
 $do = (filetype( $location . $file) == 'dir') ? 'addDir' : 'addFile';
 $this->$do($location . $file, $name . $file);
 }
 } // EO addDirDo();
 }
 
 $za = new FlxZipArchive;
 $res = $za->open($zip_file_name, ZipArchive::CREATE);
 if($res === TRUE)
 {
 $za->addDir($the_folder, basename($the_folder));
 $za->close();
 }
 else  { echo 'Could not create a zip archive';}
 
 if ($download_file){
 ob_get_clean();
 header("Pragma: public");
 header("Expires: 0");
 header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
 header("Cache-Control: private", false);
 header("Content-Type: application/zip");
 header("Content-Disposition: attachment; filename=" . basename($zip_file_name) . ";" );
 header("Content-Transfer-Encoding: binary");
 header("Content-Length: " . filesize($zip_file_name));
 readfile($zip_file_name);
 }
 
 /**
 * Delete .zip File
 */
 \Lobby\FS::remove($zip_file_name);
 
 |