[Pkg-owncloud-commits] [owncloud] 03/145: fix infinite loop if folder and subfolder has the same name
David Prévot
taffit at moszumanska.debian.org
Wed Feb 26 16:27:37 UTC 2014
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository owncloud.
commit 2e8418b362ba0f1c35b83da16013142491f6760c
Author: Bjoern Schiessle <schiessle at owncloud.com>
Date: Wed Jan 22 16:55:04 2014 +0100
fix infinite loop if folder and subfolder has the same name
---
apps/files_encryption/lib/util.php | 52 ++++++++++----------------------------
1 file changed, 13 insertions(+), 39 deletions(-)
diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php
index 8e1928a..d011e67 100644
--- a/apps/files_encryption/lib/util.php
+++ b/apps/files_encryption/lib/util.php
@@ -2,9 +2,10 @@
/**
* ownCloud
*
- * @author Sam Tuke, Frank Karlitschek
+ * @author Sam Tuke, Frank Karlitschek, Bjoern Schiessle
* @copyright 2012 Sam Tuke <samtuke at owncloud.com>,
- * Frank Karlitschek <frank at owncloud.org>
+ * Frank Karlitschek <frank at owncloud.org>,
+ * Bjoern Schiessle <schiessle at owncloud.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
@@ -1376,59 +1377,32 @@ class Util {
}
}
-
/**
* @brief go recursively through a dir and collect all files and sub files.
* @param string $dir relative to the users files folder
* @return array with list of files relative to the users files folder
*/
public function getAllFiles($dir) {
-
$result = array();
+ $dirList = array($dir);
- $content = $this->view->getDirectoryContent(\OC\Files\Filesystem::normalizePath(
- $this->userFilesDir . '/' . $dir));
-
- // handling for re shared folders
- $pathSplit = explode('/', $dir);
-
- foreach ($content as $c) {
-
- $sharedPart = $pathSplit[sizeof($pathSplit) - 1];
- $targetPathSplit = array_reverse(explode('/', $c['path']));
-
- $path = '';
-
- // rebuild path
- foreach ($targetPathSplit as $pathPart) {
-
- if ($pathPart !== $sharedPart) {
-
- $path = '/' . $pathPart . $path;
+ while ($dirList) {
+ $dir = array_pop($dirList);
+ $content = $this->view->getDirectoryContent(\OC\Files\Filesystem::normalizePath(
+ $this->userFilesDir . '/' . $dir));
+ foreach ($content as $c) {
+ $usersPath = isset($c['usersPath']) ? $c['usersPath'] : $c['path'];
+ if ($c['type'] === 'dir') {
+ $dirList[] = substr($usersPath, strlen("files"));
} else {
-
- break;
-
+ $result[] = substr($usersPath, strlen("files"));
}
-
}
- $path = $dir . $path;
-
- if ($c['type'] === 'dir') {
-
- $result = array_merge($result, $this->getAllFiles($path));
-
- } else {
-
- $result[] = $path;
-
- }
}
return $result;
-
}
/**
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git
More information about the Pkg-owncloud-commits
mailing list