2015-12-28 21:10:29 +03:00
|
|
|
<?php
|
2015-12-28 21:19:04 +03:00
|
|
|
/*
|
2015-12-28 21:10:29 +03:00
|
|
|
|
2018-02-23 22:02:20 +03:00
|
|
|
Free PHP File Directory Listing Script - Version 1.11
|
2015-12-28 21:19:04 +03:00
|
|
|
|
|
|
|
The MIT License (MIT)
|
|
|
|
|
|
|
|
Copyright (c) 2015 Hal Gatewood
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
|
|
in the Software without restriction, including without limitation the rights
|
|
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be included in all
|
|
|
|
copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
|
SOFTWARE.
|
|
|
|
|
|
|
|
|
|
|
|
*** OPTIONS ***/
|
2015-12-28 21:10:29 +03:00
|
|
|
|
|
|
|
// TITLE OF PAGE
|
|
|
|
$title = "List of Files";
|
2015-12-28 21:19:04 +03:00
|
|
|
|
2018-02-23 20:54:01 +03:00
|
|
|
// STYLING (light or dark)
|
|
|
|
$color = "light";
|
|
|
|
|
2015-12-28 21:10:29 +03:00
|
|
|
// ADD SPECIFIC FILES YOU WANT TO IGNORE HERE
|
|
|
|
$ignore_file_list = array( ".htaccess", "Thumbs.db", ".DS_Store", "index.php" );
|
|
|
|
|
|
|
|
// ADD SPECIFIC FILE EXTENSIONS YOU WANT TO IGNORE HERE, EXAMPLE: array('psd','jpg','jpeg')
|
|
|
|
$ignore_ext_list = array( );
|
|
|
|
|
|
|
|
// SORT BY
|
|
|
|
$sort_by = "name_asc"; // options: name_asc, name_desc, date_asc, date_desc
|
|
|
|
|
|
|
|
// ICON URL
|
2017-03-29 22:27:35 +03:00
|
|
|
//$icon_url = "https://www.dropbox.com/s/lzxi5abx2gaj84q/flat.png?dl=0"; // DIRECT LINK
|
2016-09-06 08:48:59 +03:00
|
|
|
$icon_url = "data:image/png;base64,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
|
2015-12-28 21:10:29 +03:00
|
|
|
|
|
|
|
// TOGGLE SUB FOLDERS, SET TO false IF YOU WANT OFF
|
|
|
|
$toggle_sub_folders = true;
|
2016-09-06 08:48:59 +03:00
|
|
|
|
|
|
|
// FORCE DOWNLOAD ATTRIBUTE
|
|
|
|
$force_download = true;
|
|
|
|
|
|
|
|
// IGNORE EMPTY FOLDERS
|
|
|
|
$ignore_empty_folders = true;
|
2015-12-28 21:19:04 +03:00
|
|
|
|
2015-12-28 21:10:29 +03:00
|
|
|
|
|
|
|
// SET TITLE BASED ON FOLDER NAME, IF NOT SET ABOVE
|
2018-02-23 22:02:20 +03:00
|
|
|
if( !$title ) { $title = clean_title(basename(dirname(__FILE__))); }
|
2015-12-28 21:10:29 +03:00
|
|
|
?>
|
2016-06-28 08:58:41 +03:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
2015-12-28 21:10:29 +03:00
|
|
|
<head>
|
|
|
|
<title><?php echo $title; ?></title>
|
2018-02-23 20:54:01 +03:00
|
|
|
<meta charset="utf-8">
|
2018-02-23 21:24:46 +03:00
|
|
|
<meta name="viewport" content="width=device-width,height=device-height,initial-scale=1.0,maximum-scale=1.0, viewport-fit=cover">
|
2015-12-28 21:10:29 +03:00
|
|
|
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
|
2018-02-23 22:02:20 +03:00
|
|
|
<link href="//fonts.googleapis.com/css?family=Lato:400;900" rel="stylesheet" type="text/css" />
|
2015-12-28 21:10:29 +03:00
|
|
|
<style>
|
|
|
|
*, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }
|
2016-05-08 20:52:01 +03:00
|
|
|
body { font-family: "Lato", "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-weight: 400; font-size: 14px; line-height: 18px; padding: 0; margin: 0; background: #f5f5f5; text-align: center;}
|
2018-02-23 22:02:20 +03:00
|
|
|
.wrap { max-width: 100%; width: 500px; margin: 20px auto; background: white; padding: 40px; border-radius: 3px; border: solid 1px #ebebeb; text-align: left;}
|
2015-12-28 21:10:29 +03:00
|
|
|
@media only screen and (max-width: 700px) { .wrap { padding: 15px; } }
|
|
|
|
h1 { text-align: center; margin: 40px 0; font-size: 22px; font-weight: bold; color: #666; }
|
|
|
|
a { color: #399ae5; text-decoration: none; } a:hover { color: #206ba4; text-decoration: none; }
|
|
|
|
.note { padding: 0 5px 25px 0; font-size:80%; color: #666; line-height: 18px; }
|
2018-02-23 22:02:20 +03:00
|
|
|
.block { clear: both; min-height: 50px; border-top: solid 1px #ECE9E9; }
|
2015-12-28 21:10:29 +03:00
|
|
|
.block:first-child { border: none; }
|
2016-01-28 20:24:00 +03:00
|
|
|
.block .img { width: 50px; height: 50px; display: block; float: left; margin-right: 10px; background: transparent url(<?php echo $icon_url; ?>) no-repeat 0 0; }
|
2018-02-23 22:02:20 +03:00
|
|
|
.block .file { padding-bottom: 5px; }
|
|
|
|
.block .data { line-height: 1.3em; color: #666; }
|
|
|
|
.block a { display: block; padding: 20px; transition: all 0.35s; }
|
2015-12-28 21:10:29 +03:00
|
|
|
.block a:hover { text-decoration: none; background: #efefef; }
|
|
|
|
|
2018-02-23 22:02:20 +03:00
|
|
|
.bold { font-weight: 900; }
|
|
|
|
.upper { text-transform: uppercase; }
|
|
|
|
.fs-1 { font-size: 1em; } .fs-1-1 { font-size: 1.1em; } .fs-1-2 { font-size: 1.2em; } .fs-1-3 { font-size: 1.3em; } .fs-0-9 { font-size: 0.9em; } .fs-0-8 { font-size: 0.8em; } .fs-0-7 { font-size: 0.7em; }
|
|
|
|
|
2015-12-28 21:10:29 +03:00
|
|
|
.jpg, .jpeg, .gif, .png { background-position: -50px 0 !important; }
|
|
|
|
.pdf { background-position: -100px 0 !important; }
|
|
|
|
.txt, .rtf { background-position: -150px 0 !important; }
|
|
|
|
.xls, .xlsx { background-position: -200px 0 !important; }
|
|
|
|
.ppt, .pptx { background-position: -250px 0 !important; }
|
|
|
|
.doc, .docx { background-position: -300px 0 !important; }
|
|
|
|
.zip, .rar, .tar, .gzip { background-position: -350px 0 !important; }
|
|
|
|
.swf { background-position: -400px 0 !important; }
|
|
|
|
.fla { background-position: -450px 0 !important; }
|
|
|
|
.mp3 { background-position: -500px 0 !important; }
|
|
|
|
.wav { background-position: -550px 0 !important; }
|
|
|
|
.mp4 { background-position: -600px 0 !important; }
|
|
|
|
.mov, .aiff, .m2v, .avi, .pict, .qif { background-position: -650px 0 !important; }
|
|
|
|
.wmv, .avi, .mpg { background-position: -700px 0 !important; }
|
|
|
|
.flv, .f2v { background-position: -750px 0 !important; }
|
|
|
|
.psd { background-position: -800px 0 !important; }
|
|
|
|
.ai { background-position: -850px 0 !important; }
|
|
|
|
.html, .xhtml, .dhtml, .php, .asp, .css, .js, .inc { background-position: -900px 0 !important; }
|
|
|
|
.dir { background-position: -950px 0 !important; }
|
|
|
|
|
|
|
|
.sub { margin-left: 20px; border-left: solid 1px #ECE9E9; display: none; }
|
|
|
|
|
2018-02-23 20:54:01 +03:00
|
|
|
body.dark { background: #1d1c1c; }
|
|
|
|
body.dark h1 { color: #fff; }
|
|
|
|
body.dark .wrap { background: #2b2a2a; box-shadow: 0 0 2px #000; }
|
|
|
|
body.dark .block { border-top: solid 1px #666; }
|
|
|
|
body.dark .block a:hover { background: #000; }
|
2015-12-28 21:10:29 +03:00
|
|
|
</style>
|
|
|
|
</head>
|
2018-02-23 20:54:01 +03:00
|
|
|
<body class="<?php echo $color; ?>">
|
2015-12-28 21:10:29 +03:00
|
|
|
<h1><?php echo $title ?></h1>
|
|
|
|
<div class="wrap">
|
|
|
|
<?php
|
|
|
|
|
|
|
|
// FUNCTIONS TO MAKE THE MAGIC HAPPEN, BEST TO LEAVE THESE ALONE
|
2018-02-23 22:02:20 +03:00
|
|
|
function clean_title($title)
|
2015-12-28 21:10:29 +03:00
|
|
|
{
|
|
|
|
return ucwords( str_replace( array("-", "_"), " ", $title) );
|
|
|
|
}
|
|
|
|
|
2018-02-23 22:02:20 +03:00
|
|
|
function ext($filename)
|
2015-12-28 21:10:29 +03:00
|
|
|
{
|
|
|
|
return substr( strrchr( $filename,'.' ),1 );
|
|
|
|
}
|
|
|
|
|
2018-02-23 22:02:20 +03:00
|
|
|
function display_size($bytes, $precision = 2)
|
|
|
|
{
|
|
|
|
$units = array('B', 'KB', 'MB', 'GB', 'TB');
|
|
|
|
$bytes = max($bytes, 0);
|
|
|
|
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
|
|
|
|
$pow = min($pow, count($units) - 1);
|
|
|
|
$bytes /= (1 << (10 * $pow));
|
|
|
|
return round($bytes, $precision) . '<span class="fs-0-8 bold">' . $units[$pow] . "</span>";
|
|
|
|
}
|
|
|
|
|
|
|
|
function count_dir_files( $dir)
|
|
|
|
{
|
|
|
|
$fi = new FilesystemIterator(__DIR__ . "/" . $dir, FilesystemIterator::SKIP_DOTS);
|
|
|
|
return iterator_count($fi);
|
|
|
|
}
|
|
|
|
|
|
|
|
function get_directory_size($path)
|
2015-12-28 21:10:29 +03:00
|
|
|
{
|
2018-02-23 22:02:20 +03:00
|
|
|
$bytestotal = 0;
|
|
|
|
$path = realpath($path);
|
|
|
|
if($path!==false && $path!='' && file_exists($path))
|
|
|
|
{
|
|
|
|
foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object)
|
|
|
|
{
|
|
|
|
$bytestotal += $object->getSize();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return display_size($bytestotal);
|
2015-12-28 21:10:29 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// SHOW THE MEDIA BLOCK
|
|
|
|
function display_block( $file )
|
|
|
|
{
|
2016-09-06 08:48:59 +03:00
|
|
|
global $ignore_file_list, $ignore_ext_list, $force_download;
|
2015-12-28 21:10:29 +03:00
|
|
|
|
2018-02-23 22:02:20 +03:00
|
|
|
$file_ext = ext($file);
|
2018-02-23 20:54:01 +03:00
|
|
|
if( !$file_ext AND is_dir($file)) $file_ext = "dir";
|
2016-09-06 08:48:59 +03:00
|
|
|
if(in_array($file, $ignore_file_list)) return;
|
|
|
|
if(in_array($file_ext, $ignore_ext_list)) return;
|
|
|
|
|
|
|
|
$download_att = ($force_download AND $file_ext != "dir" ) ? " download='" . basename($file) . "'" : "";
|
|
|
|
|
|
|
|
$rtn = "<div class=\"block\">";
|
|
|
|
$rtn .= "<a href=\"$file\" class=\"$file_ext\"{$download_att}>";
|
2018-02-23 22:02:20 +03:00
|
|
|
$rtn .= " <div class=\"img $file_ext\"></div>";
|
|
|
|
$rtn .= " <div class=\"name\">";
|
|
|
|
|
|
|
|
if ($file_ext === "dir")
|
|
|
|
{
|
|
|
|
$rtn .= " <div class=\"file fs-1-2 bold\">" . basename($file) . "</div>";
|
|
|
|
$rtn .= " <div class=\"data upper size fs-0-7\"><span class=\"bold\">" . count_dir_files($file) . "</span> files</div>";
|
|
|
|
$rtn .= " <div class=\"data upper size fs-0-7\"><span class=\"bold\">Size:</span> " . get_directory_size($file) . "</div>";
|
|
|
|
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$rtn .= " <div class=\"file fs-1-2 bold\">" . basename($file) . "</div>";
|
|
|
|
$rtn .= " <div class=\"data upper size fs-0-7\"><span class=\"bold\">Size:</span> " . display_size(filesize($file)) . "</div>";
|
|
|
|
$rtn .= " <div class=\"data upper modified fs-0-7\"><span class=\"bold\">Last modified:</span> " . date("D. F jS, Y - h:ia", filemtime($file)) . "</div>";
|
|
|
|
}
|
|
|
|
|
|
|
|
$rtn .= " </div>";
|
|
|
|
$rtn .= " </a>";
|
2016-09-06 08:48:59 +03:00
|
|
|
$rtn .= "</div>";
|
|
|
|
return $rtn;
|
2015-12-28 21:10:29 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// RECURSIVE FUNCTION TO BUILD THE BLOCKS
|
|
|
|
function build_blocks( $items, $folder )
|
|
|
|
{
|
2016-09-06 08:48:59 +03:00
|
|
|
global $ignore_file_list, $ignore_ext_list, $sort_by, $toggle_sub_folders, $ignore_empty_folders;
|
|
|
|
|
2015-12-28 21:10:29 +03:00
|
|
|
$objects = array();
|
|
|
|
$objects['directories'] = array();
|
|
|
|
$objects['files'] = array();
|
|
|
|
|
|
|
|
foreach($items as $c => $item)
|
|
|
|
{
|
|
|
|
if( $item == ".." OR $item == ".") continue;
|
|
|
|
|
|
|
|
// IGNORE FILE
|
|
|
|
if(in_array($item, $ignore_file_list)) { continue; }
|
|
|
|
|
2016-02-09 22:06:27 +03:00
|
|
|
if( $folder && $item )
|
2015-12-28 21:10:29 +03:00
|
|
|
{
|
|
|
|
$item = "$folder/$item";
|
|
|
|
}
|
|
|
|
|
2018-02-23 22:02:20 +03:00
|
|
|
$file_ext = ext($item);
|
2015-12-28 21:10:29 +03:00
|
|
|
|
|
|
|
// IGNORE EXT
|
|
|
|
if(in_array($file_ext, $ignore_ext_list)) { continue; }
|
|
|
|
|
|
|
|
// DIRECTORIES
|
|
|
|
if( is_dir($item) )
|
|
|
|
{
|
|
|
|
$objects['directories'][] = $item;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
// FILE DATE
|
|
|
|
$file_time = date("U", filemtime($item));
|
|
|
|
|
|
|
|
// FILES
|
2016-02-09 22:06:27 +03:00
|
|
|
if( $item )
|
|
|
|
{
|
|
|
|
$objects['files'][$file_time . "-" . $item] = $item;
|
|
|
|
}
|
2015-12-28 21:10:29 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
foreach($objects['directories'] as $c => $file)
|
|
|
|
{
|
2016-09-06 08:48:59 +03:00
|
|
|
$sub_items = (array) scandir( $file );
|
|
|
|
|
|
|
|
if( $ignore_empty_folders )
|
|
|
|
{
|
|
|
|
$has_sub_items = false;
|
|
|
|
foreach( $sub_items as $sub_item )
|
|
|
|
{
|
2018-02-23 22:02:20 +03:00
|
|
|
$sub_fileExt = ext( $sub_item );
|
2016-09-06 08:48:59 +03:00
|
|
|
if( $sub_item == ".." OR $sub_item == ".") continue;
|
|
|
|
if(in_array($sub_item, $ignore_file_list)) continue;
|
|
|
|
if(in_array($sub_fileExt, $ignore_ext_list)) continue;
|
|
|
|
|
|
|
|
$has_sub_items = true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if( $has_sub_items ) echo display_block( $file );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
echo display_block( $file );
|
|
|
|
}
|
2015-12-28 21:10:29 +03:00
|
|
|
|
2016-09-06 08:48:59 +03:00
|
|
|
if( $toggle_sub_folders )
|
2015-12-28 21:10:29 +03:00
|
|
|
{
|
|
|
|
if( $sub_items )
|
|
|
|
{
|
|
|
|
echo "<div class='sub' data-folder=\"$file\">";
|
|
|
|
build_blocks( $sub_items, $file );
|
|
|
|
echo "</div>";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// SORT BEFORE LOOP
|
|
|
|
if( $sort_by == "date_asc" ) { ksort($objects['files']); }
|
|
|
|
elseif( $sort_by == "date_desc" ) { krsort($objects['files']); }
|
|
|
|
elseif( $sort_by == "name_asc" ) { natsort($objects['files']); }
|
|
|
|
elseif( $sort_by == "name_desc" ) { arsort($objects['files']); }
|
|
|
|
|
|
|
|
foreach($objects['files'] as $t => $file)
|
|
|
|
{
|
2018-02-23 22:02:20 +03:00
|
|
|
$fileExt = ext($file);
|
2015-12-28 21:10:29 +03:00
|
|
|
if(in_array($file, $ignore_file_list)) { continue; }
|
|
|
|
if(in_array($fileExt, $ignore_ext_list)) { continue; }
|
2016-09-06 08:48:59 +03:00
|
|
|
echo display_block( $file );
|
2015-12-28 21:10:29 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// GET THE BLOCKS STARTED, FALSE TO INDICATE MAIN FOLDER
|
|
|
|
$items = scandir( dirname(__FILE__) );
|
|
|
|
build_blocks( $items, false );
|
|
|
|
?>
|
|
|
|
|
|
|
|
<?php if($toggle_sub_folders) { ?>
|
|
|
|
<script>
|
|
|
|
$(document).ready(function()
|
|
|
|
{
|
|
|
|
$("a.dir").click(function(e)
|
|
|
|
{
|
|
|
|
$('.sub[data-folder="' + $(this).attr('href') + '"]').slideToggle();
|
|
|
|
e.preventDefault();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
</script>
|
|
|
|
<?php } ?>
|
|
|
|
</div>
|
2016-06-28 09:05:28 +03:00
|
|
|
<div style="padding: 10px 10px 40px 10px;"><a href="https://halgatewood.com/free/file-directory-list/">Free PHP File Directory Script</a> (<a href="https://github.com/halgatewood/file-directory-list/">GitHub</a>)</div>
|
2015-12-28 21:10:29 +03:00
|
|
|
</body>
|
2016-01-28 20:24:00 +03:00
|
|
|
</html>
|