Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2014-03-19 16:53:59 +0400
committerRobin Appelman <icewind@owncloud.com>2014-03-19 16:53:59 +0400
commit214357ca68ebd80cc59cd1ee34a5a292feaebbe0 (patch)
tree0ac3df54dd26431ee963b20f1bcb22fef4bfeb5b /apps
parentb9fc240b838439444061824cb191ce22c4c4c052 (diff)
Improve sorting performance of large lists of files
Diffstat (limited to 'apps')
-rw-r--r--apps/files/ajax/rawlist.php5
-rw-r--r--apps/files/lib/helper.php15
-rw-r--r--apps/files_trashbin/lib/helper.php8
3 files changed, 17 insertions, 11 deletions
diff --git a/apps/files/ajax/rawlist.php b/apps/files/ajax/rawlist.php
index 89c21a172fc..6433ddefd69 100644
--- a/apps/files/ajax/rawlist.php
+++ b/apps/files/ajax/rawlist.php
@@ -33,6 +33,8 @@ if (is_array($mimetypes) && count($mimetypes)) {
} else {
$files = array_merge($files, \OC\Files\Filesystem::getDirectoryContent($dir));
}
+// Sort by name
+usort($files, array('\OCA\Files\Helper', 'fileCmp'));
$result = array();
foreach ($files as $file) {
@@ -51,7 +53,4 @@ foreach ($files as $file) {
$result[] = $fileData;
}
-// Sort by name
-usort($result, array('\OCA\Files\Helper', 'fileCmp'));
-
OC_JSON::success(array('data' => $result));
diff --git a/apps/files/lib/helper.php b/apps/files/lib/helper.php
index b9e41a352bc..c41e2d15581 100644
--- a/apps/files/lib/helper.php
+++ b/apps/files/lib/helper.php
@@ -51,17 +51,20 @@ class Helper
/**
* Comparator function to sort files alphabetically and have
* the directories appear first
- * @param array $a file
- * @param array $b file
- * @return -1 if $a must come before $b, 1 otherwise
+ *
+ * @param \OCP\Files\FileInfo $a file
+ * @param \OCP\Files\FileInfo $b file
+ * @return int -1 if $a must come before $b, 1 otherwise
*/
public static function fileCmp($a, $b) {
- if ($a['type'] === 'dir' and $b['type'] !== 'dir') {
+ $aType = $a->getType();
+ $bType = $b->getType();
+ if ($aType === 'dir' and $bType !== 'dir') {
return -1;
- } elseif ($a['type'] !== 'dir' and $b['type'] === 'dir') {
+ } elseif ($aType !== 'dir' and $bType === 'dir') {
return 1;
} else {
- return strnatcasecmp($a['name'], $b['name']);
+ return strnatcasecmp($a->getName(), $b->getName());
}
}
diff --git a/apps/files_trashbin/lib/helper.php b/apps/files_trashbin/lib/helper.php
index fe0d1d30a72..9c24332a964 100644
--- a/apps/files_trashbin/lib/helper.php
+++ b/apps/files_trashbin/lib/helper.php
@@ -2,13 +2,15 @@
namespace OCA\Files_Trashbin;
+use OC\Files\FileInfo;
+
class Helper
{
/**
* Retrieves the contents of a trash bin directory.
* @param string $dir path to the directory inside the trashbin
* or empty to retrieve the root of the trashbin
- * @return array of files
+ * @return \OCP\Files\FileInfo[]
*/
public static function getTrashFiles($dir){
$result = array();
@@ -52,6 +54,8 @@ class Helper
$files = array();
$id = 0;
+ list($storage, $internalPath) = $view->resolvePath($dir);
+ $absoluteDir = $view->getAbsolutePath($dir);
foreach ($result as $r) {
$i = array();
$i['id'] = $id++;
@@ -77,7 +81,7 @@ class Helper
$i['isPreviewAvailable'] = \OC::$server->getPreviewManager()->isMimeSupported($r['mime']);
}
$i['icon'] = \OCA\Files\Helper::determineIcon($i);
- $files[] = $i;
+ $files[] = new FileInfo($absoluteDir . '/' . $i['name'], $storage, $internalPath . '/' . $i['name'], $i);
}
usort($files, array('\OCA\Files\Helper', 'fileCmp'));