public function createArchive(array $files, $path = NULL) { require_once TOOLKIT . '/class.archivezip.php'; $archive = new ArchiveZip(); $flag = Administration::instance()->Configuration->get('show-hidden', 'filemanager') == 'yes' ? ArchiveZip::IGNORE_HIDDEN : NULL; $root = DOCROOT . $this->getStartLocation(); foreach ($files as $f) { if (is_dir($root . $f)) { $archive->addDirectory($root . $f, $root . rtrim($path, '/'), $flag); } else { $archive->addFromFile($root . $f, basename($f)); } } $zip_file = $root . rtrim($path, '/') . '/' . $this->findAvailableArchiveName($root . (count($files) > 1 || is_dir($root . $files[0]) ? rtrim($path, '/') : $f)); $archive->save($zip_file); return @file_exists($zip_file) ? $zip_file : NULL; }