From 5a6aba1e1114707942c613c2402eed3237b43a21 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Wed, 9 Nov 2011 18:41:57 +0100 Subject: provide caching for file metadata --- lib/files.php | 41 +++++------------------------------------ 1 file changed, 5 insertions(+), 36 deletions(-) (limited to 'lib/files.php') diff --git a/lib/files.php b/lib/files.php index 88b559059f0..143aab5c72d 100644 --- a/lib/files.php +++ b/lib/files.php @@ -36,44 +36,13 @@ class OC_Files { if(strpos($directory,OC::$CONFIG_DATADIRECTORY)===0){ $directory=substr($directory,strlen(OC::$CONFIG_DATADIRECTORY)); } - $filesfound=true; - $content=array(); - $dirs=array(); - $file=array(); - $files=array(); - if(OC_Filesystem::is_dir($directory)) { - if ($dh = OC_Filesystem::opendir($directory)) { - while (($filename = readdir($dh)) !== false) { - if($filename<>'.' and $filename<>'..' and substr($filename,0,1)!='.'){ - $file=array(); - $filesfound=true; - $file['name']=$filename; - $file['directory']=$directory; - $stat=OC_Filesystem::stat($directory.'/'.$filename); - $file=array_merge($file,$stat); - $file['size']=OC_Filesystem::filesize($directory.'/'.$filename); - $file['mime']=OC_Files::getMimeType($directory .'/'. $filename); - $file['readable']=OC_Filesystem::is_readable($directory .'/'. $filename); - $file['writeable']=OC_Filesystem::is_writeable($directory .'/'. $filename); - $file['type']=OC_Filesystem::filetype($directory .'/'. $filename); - if($file['type']=='dir'){ - $dirs[$file['name']]=$file; - }else{ - $files[$file['name']]=$file; - } - } - } - closedir($dh); - } + $files=OC_FileCache::getFolderContent($directory); + foreach($files as &$file){ + $file['directory']=$directory; + $file['type']=($file['mimetype']=='httpd/unix-directory')?'dir':'file'; } - uksort($dirs, "strnatcasecmp"); uksort($files, "strnatcasecmp"); - $content=array_merge($dirs,$files); - if($filesfound){ - return $content; - }else{ - return false; - } + return $files; } -- cgit v1.2.3 From 371b4642bb21697a06424f1440f4b90ad4e59b9d Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Tue, 31 Jan 2012 16:33:47 +0100 Subject: proper file sorting --- lib/files.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'lib/files.php') diff --git a/lib/files.php b/lib/files.php index 5686287ecc4..457c8ea38f2 100644 --- a/lib/files.php +++ b/lib/files.php @@ -41,7 +41,7 @@ class OC_Files { $file['directory']=$directory; $file['type']=($file['mimetype']=='httpd/unix-directory')?'dir':'file'; } - uksort($files, "strnatcasecmp"); + usort($files, "fileCmp");//TODO: remove this once ajax is merged return $files; } @@ -290,3 +290,13 @@ class OC_Files { return $path; } } + +function fileCmp($a,$b){ + if($a['type']=='dir' and $b['type']!='dir'){ + return -1; + }elseif($a['type']!='dir' and $b['type']=='dir'){ + return 1; + }else{ + return strnatcasecmp($a['name'],$b['name']); + } +} -- cgit v1.2.3