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
diff options
context:
space:
mode:
authorMichael Gapczynski <mtgap@owncloud.com>2013-01-12 06:00:02 +0400
committerMichael Gapczynski <mtgap@owncloud.com>2013-01-12 06:00:02 +0400
commit6f049d08893975af6725f3c3040d5499bb8cb871 (patch)
tree38a62204ea98b8bb784408622cbaa5defb4b4d74
parent9e2f3a53244e353cb75f9927e1c69ef40f589db7 (diff)
parent36cac7f924ad07738a3cb72fee06f21d07baad42 (diff)
Merge branch 'filesystem' into filesystem-etags
-rw-r--r--apps/files_external/lib/google.php2
-rw-r--r--apps/files_sharing/lib/cache.php24
-rw-r--r--apps/files_sharing/lib/permissions.php14
-rw-r--r--apps/files_sharing/lib/share/file.php3
-rw-r--r--apps/files_sharing/lib/share/folder.php11
-rw-r--r--apps/files_sharing/lib/sharedstorage.php6
-rw-r--r--db_structure.xml2
-rw-r--r--lib/files/view.php46
-rw-r--r--lib/public/share.php5
-rwxr-xr-xlib/util.php2
10 files changed, 76 insertions, 39 deletions
diff --git a/apps/files_external/lib/google.php b/apps/files_external/lib/google.php
index bbb315c4910..4c485773e7b 100644
--- a/apps/files_external/lib/google.php
+++ b/apps/files_external/lib/google.php
@@ -41,7 +41,7 @@ class Google extends \OC\Files\Storage\Common {
) {
$consumer_key = isset($params['consumer_key']) ? $params['consumer_key'] : 'anonymous';
$consumer_secret = isset($params['consumer_secret']) ? $params['consumer_secret'] : 'anonymous';
- $this->id = 'google::' . $consumer_key . $consumer_secret;
+ $this->id = 'google::' . $params['token'];
$this->consumer = new \OAuthConsumer($consumer_key, $consumer_secret);
$this->oauth_token = new \OAuthToken($params['token'], $params['token_secret']);
$this->sig_method = new \OAuthSignatureMethod_HMAC_SHA1();
diff --git a/apps/files_sharing/lib/cache.php b/apps/files_sharing/lib/cache.php
index 0534d6dd89f..0b187a3c3ff 100644
--- a/apps/files_sharing/lib/cache.php
+++ b/apps/files_sharing/lib/cache.php
@@ -79,6 +79,8 @@ class Shared_Cache extends Cache {
$data['size'] = (int)$data['size'];
$data['mtime'] = (int)$data['mtime'];
$data['encrypted'] = (bool)$data['encrypted'];
+ $data['mimetype'] = $this->getMimetype($data['mimetype']);
+ $data['mimepart'] = $this->getMimetype($data['mimepart']);
return $data;
}
return false;
@@ -92,7 +94,12 @@ class Shared_Cache extends Cache {
*/
public function getFolderContents($folder) {
if ($folder == '') {
- return \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_File::FORMAT_GET_FOLDER_CONTENTS);
+ $files = \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_File::FORMAT_GET_FOLDER_CONTENTS);
+ foreach ($files as &$file) {
+ $file['mimetype'] = $this->getMimetype($file['mimetype']);
+ $file['mimepart'] = $this->getMimetype($file['mimepart']);
+ }
+ return $files;
} else {
if ($cache = $this->getSourceCache($folder)) {
return $cache->getFolderContents($this->files[$folder]);
@@ -130,6 +137,19 @@ class Shared_Cache extends Cache {
}
/**
+ * check if a file is available in the cache
+ *
+ * @param string $file
+ * @return bool
+ */
+ public function inCache($file) {
+ if ($file == '') {
+ return true;
+ }
+ return parent::inCache($file);
+ }
+
+ /**
* remove a file or folder from the cache
*
* @param string $file
@@ -176,7 +196,7 @@ class Shared_Cache extends Cache {
if ($cache = $this->getSourceCache($file)) {
return $cache->getStatus($this->files[$file]);
}
- return false;
+ return self::NOT_FOUND;
}
/**
diff --git a/apps/files_sharing/lib/permissions.php b/apps/files_sharing/lib/permissions.php
index 6eaed34b33d..2b068ff9350 100644
--- a/apps/files_sharing/lib/permissions.php
+++ b/apps/files_sharing/lib/permissions.php
@@ -20,7 +20,7 @@
*/
namespace OC\Files\Cache;
-class Shared_Permissions {
+class Shared_Permissions extends Permissions {
/**
* get the permissions for a single file
@@ -29,11 +29,11 @@ class Shared_Permissions {
* @param string $user
* @return int (-1 if file no permissions set)
*/
- static public function get($fileId, $user) {
+ public function get($fileId, $user) {
if ($fileId == -1) {
return \OCP\PERMISSION_READ;
}
- $source = \OCP\Share::getItemSharedWithBySource('file', $fileId, \OC_Share_Backend_File::FORMAT_SHARED_STORAGE);
+ $source = \OCP\Share::getItemSharedWithBySource('file', $fileId, \OC_Share_Backend_File::FORMAT_SHARED_STORAGE, null, true);
if ($source) {
return $source['permissions'];
} else {
@@ -48,7 +48,7 @@ class Shared_Permissions {
* @param string $user
* @param int $permissions
*/
- static public function set($fileId, $user, $permissions) {
+ public function set($fileId, $user, $permissions) {
// Not a valid action for Shared Permissions
}
@@ -59,7 +59,7 @@ class Shared_Permissions {
* @param string $user
* @return int[]
*/
- static public function getMultiple($fileIds, $user) {
+ public function getMultiple($fileIds, $user) {
if (count($fileIds) === 0) {
return array();
}
@@ -75,11 +75,11 @@ class Shared_Permissions {
* @param int $fileId
* @param string $user
*/
- static public function remove($fileId, $user) {
+ public function remove($fileId, $user) {
// Not a valid action for Shared Permissions
}
- static public function removeMultiple($fileIds, $user) {
+ public function removeMultiple($fileIds, $user) {
// Not a valid action for Shared Permissions
}
}
diff --git a/apps/files_sharing/lib/share/file.php b/apps/files_sharing/lib/share/file.php
index 5e98c455d35..6d3c55a008f 100644
--- a/apps/files_sharing/lib/share/file.php
+++ b/apps/files_sharing/lib/share/file.php
@@ -117,6 +117,9 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
}
public static function getSource($target) {
+ if ($target == '') {
+ return false;
+ }
$target = '/'.$target;
$target = rtrim($target, '/');
$pos = strpos($target, '/', 1);
diff --git a/apps/files_sharing/lib/share/folder.php b/apps/files_sharing/lib/share/folder.php
index bbe4c130bdd..11c8c6b1e80 100644
--- a/apps/files_sharing/lib/share/folder.php
+++ b/apps/files_sharing/lib/share/folder.php
@@ -24,6 +24,13 @@ class OC_Share_Backend_Folder extends OC_Share_Backend_File implements OCP\Share
public function getChildren($itemSource) {
$children = array();
$parents = array($itemSource);
+ $query = \OC_DB::prepare('SELECT `id` FROM `*PREFIX*mimetypes` WHERE `mimetype` = ?');
+ $result = $query->execute(array('httpd/unix-directory'));
+ if ($row = $result->fetchRow()) {
+ $mimetype = $row['id'];
+ } else {
+ $mimetype = -1;
+ }
while (!empty($parents)) {
$parents = "'".implode("','", $parents)."'";
$query = OC_DB::prepare('SELECT `fileid`, `name`, `mimetype` FROM `*PREFIX*filecache` WHERE `parent` IN ('.$parents.')');
@@ -32,8 +39,8 @@ class OC_Share_Backend_Folder extends OC_Share_Backend_File implements OCP\Share
while ($file = $result->fetchRow()) {
$children[] = array('source' => $file['fileid'], 'file_path' => $file['name']);
// If a child folder is found look inside it
- if ($file['mimetype'] == 'httpd/unix-directory') {
- $parents[] = $file['id'];
+ if ($file['mimetype'] == $mimetype) {
+ $parents[] = $file['fileid'];
}
}
}
diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php
index 24096e0c10c..c8756af8ed7 100644
--- a/apps/files_sharing/lib/sharedstorage.php
+++ b/apps/files_sharing/lib/sharedstorage.php
@@ -408,12 +408,6 @@ class Shared extends \OC\Files\Storage\Common {
}
public function getScanner($path = '') {
- if ($path != '' && ($source = $this->getSourcePath($path))) {
- list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
- if ($storage) {
- return $storage->getScanner($internalPath);
- }
- }
return new \OC\Files\Cache\Scanner($this);
}
diff --git a/db_structure.xml b/db_structure.xml
index 0116581be12..f1f02572819 100644
--- a/db_structure.xml
+++ b/db_structure.xml
@@ -114,7 +114,7 @@
<type>text</type>
<default></default>
<notnull>true</notnull>
- <length>64</length>
+ <length>255</length>
</field>
<index>
diff --git a/lib/files/view.php b/lib/files/view.php
index 7cc59149764..06027910123 100644
--- a/lib/files/view.php
+++ b/lib/files/view.php
@@ -765,27 +765,37 @@ class View {
$subStorage = Filesystem::getStorage($mountPoint);
if ($subStorage) {
$subCache = $subStorage->getCache('');
- $rootEntry = $subCache->get('');
- $relativePath = trim(substr($mountPoint, $dirLength), '/');
- if ($pos = strpos($relativePath, '/')) { //mountpoint inside subfolder add size to the correct folder
- $entryName = substr($relativePath, 0, $pos);
- foreach ($files as &$entry) {
- if ($entry['name'] === $entryName) {
- $entry['size'] += $rootEntry['size'];
+ if ($subCache->getStatus('') === Cache\Cache::NOT_FOUND) {
+ $subScanner = $subStorage->getScanner('');
+ $subScanner->scanFile('');
+ } else {
+ $subWatcher = $subStorage->getWatcher('');
+ $subWatcher->checkUpdate('');
+ }
+
+ $rootEntry = $subCache->get('');
+ if ($rootEntry) {
+ $relativePath = trim(substr($mountPoint, $dirLength), '/');
+ if ($pos = strpos($relativePath, '/')) { //mountpoint inside subfolder add size to the correct folder
+ $entryName = substr($relativePath, 0, $pos);
+ foreach ($files as &$entry) {
+ if ($entry['name'] === $entryName) {
+ $entry['size'] += $rootEntry['size'];
+ }
}
+ } else { //mountpoint in this folder, add an entry for it
+ $rootEntry['name'] = $relativePath;
+ $rootEntry['type'] = $rootEntry['mimetype'] === 'httpd/unix-directory' ? 'dir' : 'file';
+ $subPermissionsCache = $subStorage->getPermissionsCache('');
+ $permissions = $subPermissionsCache->get($rootEntry['fileid'], $user);
+ if ($permissions === -1) {
+ $permissions = $subStorage->getPermissions($rootEntry['path']);
+ $subPermissionsCache->set($rootEntry['fileid'], $user, $permissions);
+ }
+ $rootEntry['permissions'] = $permissions;
+ $files[] = $rootEntry;
}
- } else { //mountpoint in this folder, add an entry for it
- $rootEntry['name'] = $relativePath;
- $rootEntry['type'] = $rootEntry['mimetype'] === 'httpd/unix-directory' ? 'dir' : 'file';
- $subPermissionsCache = $subStorage->getPermissionsCache('');
- $permissions = $subPermissionsCache->get($rootEntry['fileid'], $user);
- if ($permissions === -1) {
- $permissions = $subStorage->getPermissions($rootEntry['path']);
- $subPermissionsCache->set($rootEntry['fileid'], $user, $permissions);
- }
- $rootEntry['permissions'] = $subPermissionsCache;
- $files[] = $rootEntry;
}
}
}
diff --git a/lib/public/share.php b/lib/public/share.php
index c74960b94c5..7722e0b86cc 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -756,7 +756,7 @@ class Share {
$collectionItems = array();
foreach ($items as &$row) {
// Return only the item instead of a 2-dimensional array
- if ($limit == 1 && $row['item_type'] == $itemType && $row[$column] == $item) {
+ if ($limit == 1 && $row[$column] == $item && ($row['item_type'] == $itemType || $itemType == 'file')) {
if ($format == self::FORMAT_NONE) {
return $row;
} else {
@@ -823,6 +823,9 @@ class Share {
if (!empty($collectionItems)) {
$items = array_merge($items, $collectionItems);
}
+ if (empty($items) && $limit == 1) {
+ return false;
+ }
if ($format == self::FORMAT_NONE) {
return $items;
} else if ($format == self::FORMAT_STATUSES) {
diff --git a/lib/util.php b/lib/util.php
index 93c0d0f26d8..e814a3a32df 100755
--- a/lib/util.php
+++ b/lib/util.php
@@ -74,7 +74,7 @@ class OC_Util {
*/
public static function getVersion() {
// hint: We only can count up. So the internal version number of ownCloud 4.5 will be 4.90.0. This is not visible to the user
- return array(4,91,05);
+ return array(4,91,06);
}
/**