From fb857b06dda27316aba3e33226315185e6f41ede Mon Sep 17 00:00:00 2001
From: Chris Kankiewicz
Date: Thu, 20 Aug 2015 12:56:17 -0700
Subject: [PATCH] Cleaned up PR #96
---
index.php | 44 +++++++++----------
resources/DirectoryLister.php | 66 ++++++++++++++++------------
resources/default.config.php | 19 ++++----
resources/themes/bootstrap/index.php | 23 +++++++---
4 files changed, 88 insertions(+), 64 deletions(-)
diff --git a/index.php b/index.php
index a954d92..6f69a18 100644
--- a/index.php
+++ b/index.php
@@ -20,33 +20,33 @@
die($data);
}
-
+
if (isset($_GET['zip'])) {
+
$dirArray = $lister->zipDirectory($_GET['zip']);
+
} else {
-
-
- // Initialize the directory array
- if (isset($_GET['dir'])) {
- $dirArray = $lister->listDirectory($_GET['dir']);
- } else {
- $dirArray = $lister->listDirectory('.');
- }
+ // Initialize the directory array
+ if (isset($_GET['dir'])) {
+ $dirArray = $lister->listDirectory($_GET['dir']);
+ } else {
+ $dirArray = $lister->listDirectory('.');
+ }
- // Define theme path
- if (!defined('THEMEPATH')) {
- define('THEMEPATH', $lister->getThemePath());
- }
+ // Define theme path
+ if (!defined('THEMEPATH')) {
+ define('THEMEPATH', $lister->getThemePath());
+ }
- // Set path to theme index
- $themeIndex = $lister->getThemePath(true) . '/index.php';
+ // Set path to theme index
+ $themeIndex = $lister->getThemePath(true) . '/index.php';
+
+ // Initialize the theme
+ if (file_exists($themeIndex)) {
+ include($themeIndex);
+ } else {
+ die('ERROR: Failed to initialize theme');
+ }
- // Initialize the theme
- if (file_exists($themeIndex)) {
- include($themeIndex);
- } else {
- die('ERROR: Failed to initialize theme');
- }
-
}
diff --git a/resources/DirectoryLister.php b/resources/DirectoryLister.php
index 2200f2b..31bcacc 100644
--- a/resources/DirectoryLister.php
+++ b/resources/DirectoryLister.php
@@ -61,7 +61,7 @@ class DirectoryLister {
$this->_themeName = $this->_config['theme_name'];
}
-
+
/**
* If it is allowed to zip whole directories
*
@@ -77,7 +77,7 @@ class DirectoryLister {
}
return $this->_config['zip_dirs'];
}
-
+
/**
* Creates zipfile of directory
*
@@ -85,56 +85,67 @@ class DirectoryLister {
* @access public
*/
public function zipDirectory($directory) {
- if ($this->_config['zip_dirs'])
- {
+
+ if ($this->_config['zip_dirs']) {
+
// Cleanup directory path
$directory = $this->setDirectoryPath($directory);
-
- if ($directory != '.' && $this->_isHidden($directory)){
+
+ if ($directory != '.' && $this->_isHidden($directory)) {
echo "Access denied.";
}
-
- $filename_no_ext = basename("$directory");
- if ( $directory == '.' )
- {
- $filename_no_ext = "Home";
+
+ $filename_no_ext = basename($directory);
+
+ if ($directory == '.') {
+ $filename_no_ext = 'Home';
}
// We deliver a zip file
- header("Content-Type: archive/zip");
+ header('Content-Type: archive/zip');
+
// Filename for the browser to save the zip file
- header("Content-Disposition: attachment; filename=\"$filename_no_ext".".zip\"");
+ header("Content-Disposition: attachment; filename=\"$filename_no_ext.zip\"");
+
//change directory so the zip file doesnt have a tree structure in it.
chdir($directory);
-
+
// TODO: Probably we have to parse exclude list more carefully
- $exclude_list = implode(" ", array_merge($this->_config['hidden_files'],array('index.php')));
+ $exclude_list = implode(' ', array_merge($this->_config['hidden_files'], array('index.php')));
$exclude_list = str_replace("*", "\*", $exclude_list);
-
- if ($this->_config['zip_stream'])
- {
+
+ if ($this->_config['zip_stream']) {
+
// zip the stuff (dir and all in there) into the streamed zip file
- $stream = popen( "/usr/bin/zip -".$this->_config['zip_compression_level']." -r -q - * -x ".$exclude_list, "r" );
- if( $stream )
- {
- fpassthru( $stream );
- fclose( $stream );
+ $stream = popen('/usr/bin/zip -' . $this->_config['zip_compression_level'] . ' -r -q - * -x ' . $exclude_list, 'r');
+
+ if ($stream) {
+ fpassthru($stream);
+ fclose($stream);
}
+
} else {
+
// zip the stuff (dir and all in there) into the tmp_zip file
- exec('zip -'.$this->_config['zip_compression_level'].' -r '.$tmp_zip.' * -x '.$exclude_list);
+ exec('zip -' . $this->_config['zip_compression_level'] . ' -r ' . $tmp_zip . ' * -x ' . $exclude_list);
+
// get a tmp name for the .zip
- $tmp_zip = tempnam ("tmp", "tempzip") . ".zip";
+ $tmp_zip = tempnam('tmp', 'tempzip') . '.zip';
+
// calc the length of the zip. it is needed for the progress bar of the browser
$filesize = filesize($tmp_zip);
header("Content-Length: $filesize");
+
// deliver the zip file
- $fp = fopen("$tmp_zip","r");
+ $fp = fopen($tmp_zip, 'r');
echo fpassthru($fp);
+
// clean up the tmp zip file
unlink($tmp_zip);
+
}
}
+
}
@@ -416,7 +427,7 @@ class DirectoryLister {
return $this->_directory;
}
-
+
/**
* Get directory path variable
*
@@ -425,7 +436,6 @@ class DirectoryLister {
*/
public function getDirectoryPath() {
return $this->_directory;
-
}
diff --git a/resources/default.config.php b/resources/default.config.php
index b6240cf..4cf51d6 100644
--- a/resources/default.config.php
+++ b/resources/default.config.php
@@ -20,8 +20,8 @@ return array(
'footer.php'
),
- // Files that, if present in a directory, make the directory a direct link
- // rather than a browse link.
+ // Files that, if present in a directory, make the directory
+ // a direct link rather than a browse link.
'index_files' => array(
'index.htm',
'index.html',
@@ -35,15 +35,18 @@ return array(
'reverse_sort' => array(
// 'path/to/folder'
),
-
+
// Allow to download directories as zip files
- 'zip_dirs' => false,
- // Stream zip file content directly to the client, without any temporary file
- 'zip_stream' => true,
- 'zip_compression_level' => 0,
+ 'zip_dirs' => false,
+
+ // Stream zip file content directly to the client,
+ // without any temporary file
+ 'zip_stream' => true,
+
+ 'zip_compression_level' => 0,
+
// Disable zip downloads for particular directories
'zip_disable' => array(
- '.' // - disable for root directory by default
// 'path/to/folder'
),
diff --git a/resources/themes/bootstrap/index.php b/resources/themes/bootstrap/index.php
index d7df61e..07ff178 100644
--- a/resources/themes/bootstrap/index.php
+++ b/resources/themes/bootstrap/index.php
@@ -47,14 +47,25 @@
- isZipEnabled()): ?>
-
-
+
+
+ isZipEnabled()): ?>
+
+
+