]>
Commit | Line | Data |
---|---|---|
6527f429 DM |
1 | <?php\r |
2 | // from php manual page\r | |
3 | function formatBytes($val, $digits = 3, $mode = 'SI', $bB = 'B'){ //$mode == 'SI'|'IEC', $bB == 'b'|'B'\r | |
4 | $si = array('', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y');\r | |
5 | $iec = array('', 'Ki', 'Mi', 'Gi', 'Ti', 'Pi', 'Ei', 'Zi', 'Yi');\r | |
6 | switch(strtoupper($mode)) {\r | |
7 | case 'SI' : $factor = 1000; $symbols = $si; break;\r | |
8 | case 'IEC' : $factor = 1024; $symbols = $iec; break;\r | |
9 | default : $factor = 1000; $symbols = $si; break;\r | |
10 | }\r | |
11 | switch($bB) {\r | |
12 | case 'b' : $val *= 8; break;\r | |
13 | default : $bB = 'B'; break;\r | |
14 | }\r | |
15 | for($i=0;$i<count($symbols)-1 && $val>=$factor;$i++)\r | |
16 | $val /= $factor;\r | |
17 | $p = strpos($val, '.');\r | |
18 | if($p !== false && $p > $digits) $val = round($val);\r | |
19 | elseif($p !== false) $val = round($val, $digits-$p);\r | |
20 | return round($val, $digits) . ' ' . $symbols[$i] . $bB;\r | |
21 | }\r | |
22 | \r | |
23 | // grab the custom params\r | |
24 | $path = isset($_REQUEST['path'])&&$_REQUEST['path'] == 'extjs' ? '../../../' : '../../';\r | |
25 | \r | |
26 | $node = isset($_REQUEST['node']) ? $_REQUEST['node'] : '';\r | |
27 | $isXml = isset($_REQUEST['isXml']);\r | |
28 | \r | |
29 | if(strpos($node, '..') !== false){\r | |
30 | die('Nice try buddy.');\r | |
31 | }\r | |
32 | \r | |
33 | $nodes = array();\r | |
34 | $directory = $path.$node;\r | |
35 | if (is_dir($directory)){\r | |
36 | $d = dir($directory);\r | |
37 | while($f = $d->read()){\r | |
38 | if($f == '.' || $f == '..' || substr($f, 0, 1) == '.') continue;\r | |
39 | \r | |
40 | $filename = $directory . '/' . $f;\r | |
41 | date_default_timezone_set('America/Los_Angeles');\r | |
42 | $lastmod = date('M j, Y, g:i a', filemtime($filename));\r | |
43 | \r | |
44 | if(is_dir($directory.'/'.$f)){\r | |
45 | $qtip = 'Type: Folder<br />Last Modified: '.$lastmod;\r | |
46 | $nodes[] = array(\r | |
47 | 'text' => $f,\r | |
48 | 'id' => $node.'/'.$f,\r | |
49 | 'cls' => 'folder',\r | |
50 | 'qtip' => $qtip\r | |
51 | );\r | |
52 | } else {\r | |
53 | $size = formatBytes(filesize($filename), 2);\r | |
54 | $qtip = 'Type: JavaScript File<br />Last Modified: '.$lastmod.'<br />Size: '.$size;\r | |
55 | $nodes[] = array(\r | |
56 | 'text' => $f,\r | |
57 | 'id' => $node.'/'.$f,\r | |
58 | 'leaf' => true,\r | |
59 | 'cls' => 'file',\r | |
60 | 'qtip' => $qtip\r | |
61 | );\r | |
62 | }\r | |
63 | }\r | |
64 | $d->close();\r | |
65 | }\r | |
66 | \r | |
67 | if ($isXml) {\r | |
68 | $xmlDoc = new DOMDocument();\r | |
69 | $root = $xmlDoc->appendChild($xmlDoc->createElement("nodes"));\r | |
70 | foreach ($nodes as $node) {\r | |
71 | $xmlNode = $root->appendChild($xmlDoc->createElement("node"));\r | |
72 | $xmlNode->appendChild($xmlDoc->createElement("text", $node['text']));\r | |
73 | $xmlNode->appendChild($xmlDoc->createElement("id", $node['id']));\r | |
74 | $xmlNode->appendChild($xmlDoc->createElement("cls", $node['cls']));\r | |
75 | $xmlNode->appendChild($xmlDoc->createElement("leaf", isset($node['leaf'])));\r | |
76 | }\r | |
77 | header("Content-Type: text/xml");\r | |
78 | $xmlDoc->formatOutput = true;\r | |
79 | echo $xmlDoc->saveXml();\r | |
80 | } else {\r | |
81 | header("Content-Type: text/json");\r | |
82 | echo json_encode($nodes);\r | |
83 | } |