explore.php
1.34 KB
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
<?php
OCP\JSON::callCheck();
$currentdir=$_REQUEST['dir'];
$uid=OCP\User::getUser();
function listdir($dir){
$dir = stripslashes($dir);
$list = \OC\Files\Filesystem::getdirectorycontent($dir);
if(sizeof($list)>0){
$ret='';
foreach( $list as $i ) {
if($i['type']=='dir' && $i['name']!='.') {
$ret.='<li><a href="./?app=files&dir='.$dir.'/'.$i['name'].'" data-pathname="'.$dir.'/'.$i['name'].'">';
$ret.=$i['name'].'</a>';
$ret.=listdir($dir.'/'.$i['name']);
$ret.='</li>';
}
}
if($ret!=''){
$ret= '<ul data-path="'.$dir.'"><li></li>'.$ret.'</ul>';
}
return stripslashes($ret);
}
}
/* Caching results */
$loglist='';
$inilist='';
$dir_cache_file='files_tree_cache';
$cache = new OC_Cache_File;
if(!isset($_REQUEST['refresh']) && null !== $loglist = $cache->get($dir_cache_file)){
$inilist=$loglist;
}
if($loglist==''){
$loglist = listdir('');
}
if($loglist!='' && $inilist==''){
$cache->set($dir_cache_file, $loglist);
\OCP\Util::writeLog('files_tree', 'cache saved to file ' . $dir_cache_file, \OC_Log::DEBUG);
}
/* Sendind results */
$dirs_stat = OCP\Config::getUserValue($uid,'files_tree','dirs_stat','');
if($dirs_stat=='') $dirs_stat=array();
else $dirs_stat=unserialize($dirs_stat);
echo json_encode(
array(
'list'=>$loglist,
'stat'=>$dirs_stat
)
);