-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdirectory.index.php
82 lines (66 loc) · 2.68 KB
/
directory.index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
define('USING_SMARTY', true);
require('common.php');
// Set up some variables for this session
$data['filedirectory'] = $_SERVER['DOCUMENT_ROOT'].rtrim(urldecode($_SERVER['REQUEST_URI']), '/')."/";
$data['httpdirectory'] = $_SERVER['REQUEST_URI'];
$data['httpdirectoryclean'] = urldecode($data['httpdirectory']);
// Not even sure if Apache would handle a request that included .. in it, but
// better safe than sorry.
if (strstr('..', $_SERVER['REQUEST_URI'])) exit;
//filesize($filename)
require_once($config['paths']['includes'].'directorydb.class.php');
$dirdb = new DirectoryDB($data['filedirectory'].'data.sqlite3');
//$data['fileInfo'] = $dirdb->Files_Fetch_All();
if (is_dir($data['filedirectory']))
{
$dir = opendir($data['filedirectory']);
if ($dir)
{
$data['directories'] = Array();
$data['files'] = Array();
while (($item = readdir($dir)) !== false)
{
// Ignore items starting with a period. This includes the '.' and '..'
// entries.
if (substr($item, 0, 1) == '.')
continue;
// Only list directories or PNG files. Do not list a directory if it
// contains an .ignore file.
if (is_dir($data['filedirectory'].$item))
{
if (file_exists($data['filedirectory']."/$item/.ignore"))
continue;
$data['directories'][] = $item;
}
else if (strtolower(pathinfo($item, PATHINFO_EXTENSION)) == 'png')
{
$data['fileInfo'] = $dirdb->File_Fetch_ByFilename($item);
if ($data['fileInfo'] && is_array($data['fileInfo']))
{
$data['fileInfo']['filename'] = $item;
$data['fileInfo']['filesize'] = nicefilesize(filesize($data['filedirectory']."/".$item));
$data['files'][] = $data['fileInfo'];
}
else
$data['files'][] = Array('filename' => $item, 'filesize' => nicefilesize(filesize($data['filedirectory']."/".$item)));
}
else if ($item != "robots.txt" && strtolower(pathinfo($item, PATHINFO_EXTENSION)) == 'txt') {
$data['files'][] = Array('filename' => $item, 'filesize' => nicefilesize(filesize($data['filedirectory']."/".$item)));
}
}
closedir($dir);
unset($data['fileInfo']);
// Sort the directories and files alphabetically
sort($data['directories']);
function sortFiles($a, $b)
{
return strcmp($a['filename'], $b['filename']);
}
usort($data['files'], 'sortFiles');
//header("Content-Type: text/plain");
//print_r($data);
$tpl->display('directory.tpl');
}
}
?>