aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private')
-rw-r--r--lib/private/app.php47
-rw-r--r--lib/private/connector/sabre/ServiceUnavailable.php22
-rw-r--r--lib/private/connector/sabre/aborteduploaddetectionplugin.php18
-rw-r--r--lib/private/connector/sabre/auth.php10
-rw-r--r--lib/private/connector/sabre/directory.php27
-rw-r--r--lib/private/connector/sabre/exception/entitytoolarge.php2
-rw-r--r--lib/private/connector/sabre/exception/filelocked.php2
-rw-r--r--lib/private/connector/sabre/exception/unsupportedmediatype.php2
-rw-r--r--lib/private/connector/sabre/exceptionloggerplugin.php14
-rw-r--r--lib/private/connector/sabre/file.php38
-rw-r--r--lib/private/connector/sabre/filesplugin.php22
-rw-r--r--lib/private/connector/sabre/locks.php14
-rw-r--r--lib/private/connector/sabre/maintenanceplugin.php18
-rw-r--r--lib/private/connector/sabre/node.php17
-rw-r--r--lib/private/connector/sabre/objecttree.php55
-rw-r--r--lib/private/connector/sabre/principal.php10
-rw-r--r--lib/private/connector/sabre/quotaplugin.php17
-rw-r--r--lib/private/connector/sabre/request.php2
-rw-r--r--lib/private/connector/sabre/server.php34
-rw-r--r--lib/private/davclient.php2
-rw-r--r--lib/private/db.php17
-rw-r--r--lib/private/db/mdb2schemamanager.php28
-rw-r--r--lib/private/files/cache/backgroundwatcher.php107
-rw-r--r--lib/private/files/cache/cache.php17
-rw-r--r--lib/private/files/cache/homecache.php2
-rw-r--r--lib/private/files/cache/permissions.php170
-rw-r--r--lib/private/files/cache/scanner.php10
-rw-r--r--lib/private/files/node/folder.php5
-rw-r--r--lib/private/files/storage/common.php7
-rw-r--r--lib/private/files/storage/storage.php8
-rw-r--r--lib/private/files/storage/wrapper/wrapper.php10
-rw-r--r--lib/private/files/view.php19
-rwxr-xr-xlib/private/request.php4
-rw-r--r--lib/private/share/share.php8
-rw-r--r--lib/private/updater.php62
-rwxr-xr-xlib/private/util.php2
36 files changed, 290 insertions, 559 deletions
diff --git a/lib/private/app.php b/lib/private/app.php
index 52f77535a52..2650ad98bc6 100644
--- a/lib/private/app.php
+++ b/lib/private/app.php
@@ -875,6 +875,18 @@ class OC_App {
}
}
+ public static function shouldUpgrade($app) {
+ $versions = self::getAppVersions();
+ $currentVersion = OC_App::getAppVersion($app);
+ if ($currentVersion) {
+ $installedVersion = $versions[$app];
+ if (version_compare($currentVersion, $installedVersion, '>')) {
+ return true;
+ }
+ }
+ return false;
+ }
+
/**
* check if the app needs updating and update when needed
*
@@ -885,26 +897,27 @@ class OC_App {
return;
}
self::$checkedApps[] = $app;
+ if (!self::shouldUpgrade($app)) {
+ return;
+ }
$versions = self::getAppVersions();
+ $installedVersion = $versions[$app];
$currentVersion = OC_App::getAppVersion($app);
- if ($currentVersion) {
- $installedVersion = $versions[$app];
- if (version_compare($currentVersion, $installedVersion, '>')) {
- $info = self::getAppInfo($app);
- OC_Log::write($app,
- 'starting app upgrade from ' . $installedVersion . ' to ' . $currentVersion,
- OC_Log::DEBUG);
- try {
- OC_App::updateApp($app);
- OC_Hook::emit('update', 'success', 'Updated ' . $info['name'] . ' app');
- } catch (Exception $e) {
- OC_Hook::emit('update', 'failure', 'Failed to update ' . $info['name'] . ' app: ' . $e->getMessage());
- $l = OC_L10N::get('lib');
- throw new RuntimeException($l->t('Failed to upgrade "%s".', array($app)), 0, $e);
- }
- OC_Appconfig::setValue($app, 'installed_version', OC_App::getAppVersion($app));
- }
+ OC_Log::write(
+ $app,
+ 'starting app upgrade from ' . $installedVersion . ' to ' . $currentVersion,
+ OC_Log::DEBUG
+ );
+ $info = self::getAppInfo($app);
+ try {
+ OC_App::updateApp($app);
+ OC_Hook::emit('update', 'success', 'Updated ' . $info['name'] . ' app');
+ } catch (Exception $e) {
+ OC_Hook::emit('update', 'failure', 'Failed to update ' . $info['name'] . ' app: ' . $e->getMessage());
+ $l = OC_L10N::get('lib');
+ throw new RuntimeException($l->t('Failed to upgrade "%s".', array($app)), 0, $e);
}
+ OC_Appconfig::setValue($app, 'installed_version', OC_App::getAppVersion($app));
}
/**
diff --git a/lib/private/connector/sabre/ServiceUnavailable.php b/lib/private/connector/sabre/ServiceUnavailable.php
deleted file mode 100644
index c1cc815c989..00000000000
--- a/lib/private/connector/sabre/ServiceUnavailable.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/**
- * ownCloud
- *
- * @author Thomas Müller
- * @copyright 2013 Thomas Müller <thomas.mueller@tmit.eu>
- *
- * @license AGPL3
- */
-
-class Sabre_DAV_Exception_ServiceUnavailable extends Sabre_DAV_Exception {
-
- /**
- * Returns the HTTP statuscode for this exception
- *
- * @return int
- */
- public function getHTTPCode() {
-
- return 503;
- }
-}
diff --git a/lib/private/connector/sabre/aborteduploaddetectionplugin.php b/lib/private/connector/sabre/aborteduploaddetectionplugin.php
index 1a092a59a82..b569f9a83c3 100644
--- a/lib/private/connector/sabre/aborteduploaddetectionplugin.php
+++ b/lib/private/connector/sabre/aborteduploaddetectionplugin.php
@@ -12,12 +12,12 @@
* This plugin will verify if the uploaded data has been stored completely.
* This is done by comparing the content length of the request with the file size on storage.
*/
-class OC_Connector_Sabre_AbortedUploadDetectionPlugin extends Sabre_DAV_ServerPlugin {
+class OC_Connector_Sabre_AbortedUploadDetectionPlugin extends \Sabre\DAV\ServerPlugin {
/**
* Reference to main server object
*
- * @var Sabre_DAV_Server
+ * @var \Sabre\DAV\Server
*/
private $server;
@@ -36,14 +36,14 @@ class OC_Connector_Sabre_AbortedUploadDetectionPlugin extends Sabre_DAV_ServerPl
/**
* This initializes the plugin.
*
- * This function is called by Sabre_DAV_Server, after
+ * This function is called by \Sabre\DAV\Server, after
* addPlugin is called.
*
* This method should set up the requires event subscriptions.
*
- * @param Sabre_DAV_Server $server
+ * @param \Sabre\DAV\Server $server
*/
- public function initialize(Sabre_DAV_Server $server) {
+ public function initialize(\Sabre\DAV\Server $server) {
$this->server = $server;
@@ -53,10 +53,10 @@ class OC_Connector_Sabre_AbortedUploadDetectionPlugin extends Sabre_DAV_ServerPl
/**
* @param string $filePath
- * @param Sabre_DAV_INode $node
- * @throws Sabre_DAV_Exception_BadRequest
+ * @param \Sabre\DAV\INode $node
+ * @throws \Sabre\DAV\Exception\BadRequest
*/
- public function verifyContentLength($filePath, Sabre_DAV_INode $node = null) {
+ public function verifyContentLength($filePath, \Sabre\DAV\INode $node = null) {
// we should only react on PUT which is used for upload
// e.g. with LOCK this will not work, but LOCK uses createFile() as well
@@ -78,7 +78,7 @@ class OC_Connector_Sabre_AbortedUploadDetectionPlugin extends Sabre_DAV_ServerPl
$actual = $this->fileView->filesize($filePath);
if ($actual != $expected) {
$this->fileView->unlink($filePath);
- throw new Sabre_DAV_Exception_BadRequest('expected filesize ' . $expected . ' got ' . $actual);
+ throw new \Sabre\DAV\Exception\BadRequest('expected filesize ' . $expected . ' got ' . $actual);
}
}
diff --git a/lib/private/connector/sabre/auth.php b/lib/private/connector/sabre/auth.php
index 9ebf5fc05cf..b1ef698583d 100644
--- a/lib/private/connector/sabre/auth.php
+++ b/lib/private/connector/sabre/auth.php
@@ -21,7 +21,7 @@
*
*/
-class OC_Connector_Sabre_Auth extends Sabre_DAV_Auth_Backend_AbstractBasic {
+class OC_Connector_Sabre_Auth extends \Sabre\DAV\Auth\Backend\AbstractBasic {
/**
* Validates a username and password
*
@@ -69,11 +69,11 @@ class OC_Connector_Sabre_Auth extends Sabre_DAV_Auth_Backend_AbstractBasic {
* even if there are no HTTP Basic Auth headers.
* In other case, just fallback to the parent implementation.
*
- * @param Sabre_DAV_Server $server
+ * @param \Sabre\DAV\Server $server
* @param $realm
* @return bool
*/
- public function authenticate(Sabre_DAV_Server $server, $realm) {
+ public function authenticate(\Sabre\DAV\Server $server, $realm) {
$result = $this->auth($server, $realm);
@@ -84,11 +84,11 @@ class OC_Connector_Sabre_Auth extends Sabre_DAV_Auth_Backend_AbstractBasic {
}
/**
- * @param Sabre_DAV_Server $server
+ * @param \Sabre\DAV\Server $server
* @param $realm
* @return bool
*/
- private function auth(Sabre_DAV_Server $server, $realm) {
+ private function auth(\Sabre\DAV\Server $server, $realm) {
if (OC_User::handleApacheAuth() || OC_User::isLoggedIn()) {
$user = OC_User::getUser();
OC_Util::setupFS($user);
diff --git a/lib/private/connector/sabre/directory.php b/lib/private/connector/sabre/directory.php
index 1bb526e451e..aa467cec535 100644
--- a/lib/private/connector/sabre/directory.php
+++ b/lib/private/connector/sabre/directory.php
@@ -21,7 +21,8 @@
*
*/
-class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sabre_DAV_ICollection, Sabre_DAV_IQuota {
+class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node
+ implements \Sabre\DAV\ICollection, \Sabre\DAV\IQuota {
/**
* Creates a new file in the directory
@@ -45,7 +46,7 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
*
* @param string $name Name of the file
* @param resource|string $data Initial payload
- * @throws Sabre_DAV_Exception_Forbidden
+ * @throws \Sabre\DAV\Exception\Forbidden
* @return null|string
*/
public function createFile($name, $data = null) {
@@ -58,13 +59,13 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
$info = OC_FileChunking::decodeName($name);
if (!$this->fileView->isCreatable($this->path) &&
!$this->fileView->isUpdatable($this->path . '/' . $info['name'])) {
- throw new \Sabre_DAV_Exception_Forbidden();
+ throw new \Sabre\DAV\Exception\Forbidden();
}
} else {
// For non-chunked upload it is enough to check if we can create a new file
if (!$this->fileView->isCreatable($this->path)) {
- throw new \Sabre_DAV_Exception_Forbidden();
+ throw new \Sabre\DAV\Exception\Forbidden();
}
}
@@ -79,17 +80,17 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
* Creates a new subdirectory
*
* @param string $name
- * @throws Sabre_DAV_Exception_Forbidden
+ * @throws \Sabre\DAV\Exception\Forbidden
* @return void
*/
public function createDirectory($name) {
if (!$this->fileView->isCreatable($this->path)) {
- throw new \Sabre_DAV_Exception_Forbidden();
+ throw new \Sabre\DAV\Exception\Forbidden();
}
$newPath = $this->path . '/' . $name;
if(!$this->fileView->mkdir($newPath)) {
- throw new Sabre_DAV_Exception_Forbidden('Could not create directory '.$newPath);
+ throw new \Sabre\DAV\Exception\Forbidden('Could not create directory '.$newPath);
}
}
@@ -99,8 +100,8 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
*
* @param string $name
* @param \OCP\Files\FileInfo $info
- * @throws Sabre_DAV_Exception_NotFound
- * @return Sabre_DAV_INode
+ * @throws \Sabre\DAV\Exception\FileNotFound
+ * @return \Sabre\DAV\INode
*/
public function getChild($name, $info = null) {
@@ -110,7 +111,7 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
}
if (!$info) {
- throw new Sabre_DAV_Exception_NotFound('File with name ' . $path . ' could not be located');
+ throw new \Sabre\DAV\Exception\NotFound('File with name ' . $path . ' could not be located');
}
if ($info['mimetype'] == 'httpd/unix-directory') {
@@ -124,7 +125,7 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
/**
* Returns an array with all the child nodes
*
- * @return Sabre_DAV_INode[]
+ * @return \Sabre\DAV\INode[]
*/
public function getChildren() {
@@ -183,12 +184,12 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node implements Sa
* Deletes all files in this directory, and then itself
*
* @return void
- * @throws Sabre_DAV_Exception_Forbidden
+ * @throws \Sabre\DAV\Exception\Forbidden
*/
public function delete() {
if (!$this->info->isDeletable()) {
- throw new \Sabre_DAV_Exception_Forbidden();
+ throw new \Sabre\DAV\Exception\Forbidden();
}
$this->fileView->rmdir($this->path);
diff --git a/lib/private/connector/sabre/exception/entitytoolarge.php b/lib/private/connector/sabre/exception/entitytoolarge.php
index 2bda51f2f3e..2524fbaa74c 100644
--- a/lib/private/connector/sabre/exception/entitytoolarge.php
+++ b/lib/private/connector/sabre/exception/entitytoolarge.php
@@ -6,7 +6,7 @@
* This exception is thrown whenever a user tries to upload a file which exceeds hard limitations
*
*/
-class OC_Connector_Sabre_Exception_EntityTooLarge extends Sabre_DAV_Exception {
+class OC_Connector_Sabre_Exception_EntityTooLarge extends \Sabre\DAV\Exception {
/**
* Returns the HTTP status code for this exception
diff --git a/lib/private/connector/sabre/exception/filelocked.php b/lib/private/connector/sabre/exception/filelocked.php
index ec200f847e3..59d932d22de 100644
--- a/lib/private/connector/sabre/exception/filelocked.php
+++ b/lib/private/connector/sabre/exception/filelocked.php
@@ -7,7 +7,7 @@
*
*/
-class OC_Connector_Sabre_Exception_FileLocked extends Sabre_DAV_Exception {
+class OC_Connector_Sabre_Exception_FileLocked extends \Sabre\DAV\Exception {
public function __construct($message = "", $code = 0, Exception $previous = null) {
if($previous instanceof \OCP\Files\LockNotAcquiredException) {
diff --git a/lib/private/connector/sabre/exception/unsupportedmediatype.php b/lib/private/connector/sabre/exception/unsupportedmediatype.php
index 95d6a8cc651..9b285196ebd 100644
--- a/lib/private/connector/sabre/exception/unsupportedmediatype.php
+++ b/lib/private/connector/sabre/exception/unsupportedmediatype.php
@@ -6,7 +6,7 @@
* This exception is thrown whenever a user tries to upload a file which holds content which is not allowed
*
*/
-class OC_Connector_Sabre_Exception_UnsupportedMediaType extends Sabre_DAV_Exception {
+class OC_Connector_Sabre_Exception_UnsupportedMediaType extends \Sabre\DAV\Exception {
/**
* Returns the HTTP status code for this exception
diff --git a/lib/private/connector/sabre/exceptionloggerplugin.php b/lib/private/connector/sabre/exceptionloggerplugin.php
index 5eaf1e87621..5963123709b 100644
--- a/lib/private/connector/sabre/exceptionloggerplugin.php
+++ b/lib/private/connector/sabre/exceptionloggerplugin.php
@@ -9,17 +9,17 @@
* @license AGPL3
*/
-class OC_Connector_Sabre_ExceptionLoggerPlugin extends Sabre_DAV_ServerPlugin
+class OC_Connector_Sabre_ExceptionLoggerPlugin extends \Sabre\DAV\ServerPlugin
{
private $nonFatalExceptions = array(
- 'Sabre_DAV_Exception_NotAuthenticated' => true,
+ 'Sabre\DAV\Exception\NotAuthenticated' => true,
// the sync client uses this to find out whether files exist,
// so it is not always an error, log it as debug
- 'Sabre_DAV_Exception_NotFound' => true,
+ 'Sabre\DAV\Exception\NotFound' => true,
// this one mostly happens when the same file is uploaded at
// exactly the same time from two clients, only one client
// wins, the second one gets "Precondition failed"
- 'Sabre_DAV_Exception_PreconditionFailed' => true,
+ 'Sabre\DAV\Exception\PreconditionFailed' => true,
);
private $appName;
@@ -34,15 +34,15 @@ class OC_Connector_Sabre_ExceptionLoggerPlugin extends Sabre_DAV_ServerPlugin
/**
* This initializes the plugin.
*
- * This function is called by Sabre_DAV_Server, after
+ * This function is called by \Sabre\DAV\Server, after
* addPlugin is called.
*
* This method should set up the required event subscriptions.
*
- * @param Sabre_DAV_Server $server
+ * @param \Sabre\DAV\Server $server
* @return void
*/
- public function initialize(Sabre_DAV_Server $server) {
+ public function initialize(\Sabre\DAV\Server $server) {
$server->subscribeEvent('exception', array($this, 'logException'), 10);
}
diff --git a/lib/private/connector/sabre/file.php b/lib/private/connector/sabre/file.php
index 48287b1e503..4e90d46ad41 100644
--- a/lib/private/connector/sabre/file.php
+++ b/lib/private/connector/sabre/file.php
@@ -21,7 +21,7 @@
*
*/
-class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_DAV_IFile {
+class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements \Sabre\DAV\IFile {
/**
* Updates the data
@@ -41,28 +41,28 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
* return an ETag, and just return null.
*
* @param resource $data
- * @throws Sabre_DAV_Exception_Forbidden
+ * @throws \Sabre\DAV\Exception\Forbidden
* @throws OC_Connector_Sabre_Exception_UnsupportedMediaType
- * @throws Sabre_DAV_Exception_BadRequest
- * @throws Sabre_DAV_Exception
+ * @throws \Sabre\DAV\Exception\BadRequest
+ * @throws \Sabre\DAV\Exception
* @throws OC_Connector_Sabre_Exception_EntityTooLarge
- * @throws Sabre_DAV_Exception_ServiceUnavailable
+ * @throws \Sabre\DAV\Exception\ServiceUnavailable
* @return string|null
*/
public function put($data) {
if ($this->info && $this->fileView->file_exists($this->path) &&
!$this->info->isUpdateable()) {
- throw new \Sabre_DAV_Exception_Forbidden();
+ throw new \Sabre\DAV\Exception\Forbidden();
}
// throw an exception if encryption was disabled but the files are still encrypted
if (\OC_Util::encryptedFiles()) {
- throw new \Sabre_DAV_Exception_ServiceUnavailable();
+ throw new \Sabre\DAV\Exception\ServiceUnavailable();
}
$fileName = basename($this->path);
if (!\OCP\Util::isValidFileName($fileName)) {
- throw new \Sabre_DAV_Exception_BadRequest();
+ throw new \Sabre\DAV\Exception\BadRequest();
}
// chunked handling
@@ -79,11 +79,11 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
\OC_Log::write('webdav', '\OC\Files\Filesystem::file_put_contents() failed', \OC_Log::ERROR);
$this->fileView->unlink($partpath);
// because we have no clue about the cause we can only throw back a 500/Internal Server Error
- throw new Sabre_DAV_Exception('Could not write file contents');
+ throw new \Sabre\DAV\Exception('Could not write file contents');
}
} catch (\OCP\Files\NotPermittedException $e) {
// a more general case - due to whatever reason the content could not be written
- throw new Sabre_DAV_Exception_Forbidden($e->getMessage());
+ throw new \Sabre\DAV\Exception\Forbidden($e->getMessage());
} catch (\OCP\Files\EntityTooLargeException $e) {
// the file is too big to be stored
@@ -96,7 +96,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
} catch (\OCP\Files\InvalidPathException $e) {
// the path for the file was not valid
// TODO: find proper http status code for this case
- throw new Sabre_DAV_Exception_Forbidden($e->getMessage());
+ throw new \Sabre\DAV\Exception\Forbidden($e->getMessage());
} catch (\OCP\Files\LockNotAcquiredException $e) {
// the file is currently being written to by another process
throw new OC_Connector_Sabre_Exception_FileLocked($e->getMessage(), $e->getCode(), $e);
@@ -109,7 +109,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
if ($renameOkay === false || $fileExists === false) {
\OC_Log::write('webdav', '\OC\Files\Filesystem::rename() failed', \OC_Log::ERROR);
$this->fileView->unlink($partpath);
- throw new Sabre_DAV_Exception('Could not rename part file to final file');
+ throw new \Sabre\DAV\Exception('Could not rename part file to final file');
}
}
catch (\OCP\Files\LockNotAcquiredException $e) {
@@ -138,7 +138,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
//throw exception if encryption is disabled but files are still encrypted
if (\OC_Util::encryptedFiles()) {
- throw new \Sabre_DAV_Exception_ServiceUnavailable();
+ throw new \Sabre\DAV\Exception\ServiceUnavailable();
} else {
return $this->fileView->fopen($this->path, 'rb');
}
@@ -149,11 +149,11 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
* Delete the current file
*
* @return void
- * @throws Sabre_DAV_Exception_Forbidden
+ * @throws \Sabre\DAV\Exception\Forbidden
*/
public function delete() {
if (!$this->info->isDeletable()) {
- throw new \Sabre_DAV_Exception_Forbidden();
+ throw new \Sabre\DAV\Exception\Forbidden();
}
$this->fileView->unlink($this->path);
@@ -205,11 +205,11 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
*/
private function createFileChunked($data)
{
- list($path, $name) = \Sabre_DAV_URLUtil::splitPath($this->path);
+ list($path, $name) = \Sabre\DAV\URLUtil::splitPath($this->path);
$info = OC_FileChunking::decodeName($name);
if (empty($info)) {
- throw new Sabre_DAV_Exception_NotImplemented();
+ throw new \Sabre\DAV\Exception\NotImplemented();
}
$chunk_handler = new OC_FileChunking($info);
$bytesWritten = $chunk_handler->store($info['index'], $data);
@@ -220,7 +220,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
$expected = $_SERVER['CONTENT_LENGTH'];
if ($bytesWritten != $expected) {
$chunk_handler->remove($info['index']);
- throw new Sabre_DAV_Exception_BadRequest(
+ throw new \Sabre\DAV\Exception\BadRequest(
'expected filesize ' . $expected . ' got ' . $bytesWritten);
}
}
@@ -242,7 +242,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
if ($fileExists) {
$this->fileView->unlink($targetPath);
}
- throw new Sabre_DAV_Exception('Could not rename part file assembled from chunks');
+ throw new \Sabre\DAV\Exception('Could not rename part file assembled from chunks');
}
// allow sync clients to send the mtime along in a header
diff --git a/lib/private/connector/sabre/filesplugin.php b/lib/private/connector/sabre/filesplugin.php
index 25d7fd53343..871fac88e68 100644
--- a/lib/private/connector/sabre/filesplugin.php
+++ b/lib/private/connector/sabre/filesplugin.php
@@ -9,7 +9,7 @@
* @license AGPL3
*/
-class OC_Connector_Sabre_FilesPlugin extends Sabre_DAV_ServerPlugin
+class OC_Connector_Sabre_FilesPlugin extends \Sabre\DAV\ServerPlugin
{
// namespace
@@ -18,22 +18,22 @@ class OC_Connector_Sabre_FilesPlugin extends Sabre_DAV_ServerPlugin
/**
* Reference to main server object
*
- * @var Sabre_DAV_Server
+ * @var \Sabre\DAV\Server
*/
private $server;
/**
* This initializes the plugin.
*
- * This function is called by Sabre_DAV_Server, after
+ * This function is called by \Sabre\DAV\Server, after
* addPlugin is called.
*
* This method should set up the required event subscriptions.
*
- * @param Sabre_DAV_Server $server
+ * @param \Sabre\DAV\Server $server
* @return void
*/
- public function initialize(Sabre_DAV_Server $server) {
+ public function initialize(\Sabre\DAV\Server $server) {
$server->xmlNamespaces[self::NS_OWNCLOUD] = 'oc';
$server->protectedProperties[] = '{' . self::NS_OWNCLOUD . '}id';
@@ -49,12 +49,12 @@ class OC_Connector_Sabre_FilesPlugin extends Sabre_DAV_ServerPlugin
* Adds all ownCloud-specific properties
*
* @param string $path
- * @param Sabre_DAV_INode $node
+ * @param \Sabre\DAV\INode $node
* @param array $requestedProperties
* @param array $returnedProperties
* @return void
*/
- public function beforeGetProperties($path, Sabre_DAV_INode $node, array &$requestedProperties, array &$returnedProperties) {
+ public function beforeGetProperties($path, \Sabre\DAV\INode $node, array &$requestedProperties, array &$returnedProperties) {
if ($node instanceof OC_Connector_Sabre_Node) {
@@ -84,13 +84,13 @@ class OC_Connector_Sabre_FilesPlugin extends Sabre_DAV_ServerPlugin
/**
* @param string $filePath
- * @param Sabre_DAV_INode $node
- * @throws Sabre_DAV_Exception_BadRequest
+ * @param \Sabre\DAV\INode $node
+ * @throws \Sabre\DAV\Exception\BadRequest
*/
- public function sendFileIdHeader($filePath, Sabre_DAV_INode $node = null) {
+ public function sendFileIdHeader($filePath, \Sabre\DAV\INode $node = null) {
// chunked upload handling
if (isset($_SERVER['HTTP_OC_CHUNKED'])) {
- list($path, $name) = \Sabre_DAV_URLUtil::splitPath($filePath);
+ list($path, $name) = \Sabre\DAV\URLUtil::splitPath($filePath);
$info = OC_FileChunking::decodeName($name);
if (!empty($info)) {
$filePath = $path . '/' . $info['name'];
diff --git a/lib/private/connector/sabre/locks.php b/lib/private/connector/sabre/locks.php
index 69496c15ada..09bf874ec70 100644
--- a/lib/private/connector/sabre/locks.php
+++ b/lib/private/connector/sabre/locks.php
@@ -21,10 +21,10 @@
*
*/
-class OC_Connector_Sabre_Locks extends Sabre_DAV_Locks_Backend_Abstract {
+class OC_Connector_Sabre_Locks extends \Sabre\DAV\Locks\Backend\AbstractBackend {
/**
- * Returns a list of Sabre_DAV_Locks_LockInfo objects
+ * Returns a list of \Sabre\DAV\Locks_LockInfo objects
*
* This method should return all the locks for a particular uri, including
* locks that might be set on a parent uri.
@@ -93,7 +93,7 @@ class OC_Connector_Sabre_Locks extends Sabre_DAV_Locks_Backend_Abstract {
$lockList = array();
while( $row = $result->fetchRow()) {
- $lockInfo = new Sabre_DAV_Locks_LockInfo();
+ $lockInfo = new \Sabre\DAV\Locks\LockInfo();
$lockInfo->owner = $row['owner'];
$lockInfo->token = $row['token'];
$lockInfo->timeout = $row['timeout'];
@@ -113,10 +113,10 @@ class OC_Connector_Sabre_Locks extends Sabre_DAV_Locks_Backend_Abstract {
* Locks a uri
*
* @param string $uri
- * @param Sabre_DAV_Locks_LockInfo $lockInfo
+ * @param \Sabre\DAV\Locks\LockInfo $lockInfo
* @return bool
*/
- public function lock($uri, Sabre_DAV_Locks_LockInfo $lockInfo) {
+ public function lock($uri, \Sabre\DAV\Locks\LockInfo $lockInfo) {
// We're making the lock timeout 5 minutes
$lockInfo->timeout = 300;
@@ -170,10 +170,10 @@ class OC_Connector_Sabre_Locks extends Sabre_DAV_Locks_Backend_Abstract {
* Removes a lock from a uri
*
* @param string $uri
- * @param Sabre_DAV_Locks_LockInfo $lockInfo
+ * @param \Sabre\DAV\Locks\LockInfo $lockInfo
* @return bool
*/
- public function unlock($uri, Sabre_DAV_Locks_LockInfo $lockInfo) {
+ public function unlock($uri, \Sabre\DAV\Locks\LockInfo $lockInfo) {
$sql = 'DELETE FROM `*PREFIX*locks` WHERE `userid` = ? AND `uri` = ? AND `token` = ?';
if (OC_Config::getValue( "dbtype") === 'oci') {
diff --git a/lib/private/connector/sabre/maintenanceplugin.php b/lib/private/connector/sabre/maintenanceplugin.php
index 2eda269afc2..0208f3fb5a6 100644
--- a/lib/private/connector/sabre/maintenanceplugin.php
+++ b/lib/private/connector/sabre/maintenanceplugin.php
@@ -9,30 +9,28 @@
* @license AGPL3
*/
-require 'ServiceUnavailable.php';
-
-class OC_Connector_Sabre_MaintenancePlugin extends Sabre_DAV_ServerPlugin
+class OC_Connector_Sabre_MaintenancePlugin extends \Sabre\DAV\ServerPlugin
{
/**
* Reference to main server object
*
- * @var Sabre_DAV_Server
+ * @var \Sabre\DAV\Server
*/
private $server;
/**
* This initializes the plugin.
*
- * This function is called by Sabre_DAV_Server, after
+ * This function is called by \Sabre\DAV\Server, after
* addPlugin is called.
*
* This method should set up the required event subscriptions.
*
- * @param Sabre_DAV_Server $server
+ * @param \Sabre\DAV\Server $server
* @return void
*/
- public function initialize(Sabre_DAV_Server $server) {
+ public function initialize(\Sabre\DAV\Server $server) {
$this->server = $server;
$this->server->subscribeEvent('beforeMethod', array($this, 'checkMaintenanceMode'), 10);
@@ -42,16 +40,16 @@ class OC_Connector_Sabre_MaintenancePlugin extends Sabre_DAV_ServerPlugin
* This method is called before any HTTP method and returns http status code 503
* in case the system is in maintenance mode.
*
- * @throws Sabre_DAV_Exception_ServiceUnavailable
+ * @throws \Sabre\DAV\Exception\ServiceUnavailable
* @internal param string $method
* @return bool
*/
public function checkMaintenanceMode() {
if (OC_Config::getValue('maintenance', false)) {
- throw new Sabre_DAV_Exception_ServiceUnavailable();
+ throw new \Sabre\DAV\Exception\ServiceUnavailable();
}
if (OC::checkUpgrade(false)) {
- throw new Sabre_DAV_Exception_ServiceUnavailable('Upgrade needed');
+ throw new \Sabre\DAV\Exception\ServiceUnavailable('Upgrade needed');
}
return true;
diff --git a/lib/private/connector/sabre/node.php b/lib/private/connector/sabre/node.php
index f124b754443..8a369eccf6b 100644
--- a/lib/private/connector/sabre/node.php
+++ b/lib/private/connector/sabre/node.php
@@ -1,4 +1,5 @@
<?php
+use Sabre\DAV\URLUtil;
/**
* ownCloud
@@ -20,7 +21,7 @@
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
-abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IProperties {
+abstract class OC_Connector_Sabre_Node implements \Sabre\DAV\INode, \Sabre\DAV\IProperties {
const GETETAG_PROPERTYNAME = '{DAV:}getetag';
const LASTMODIFIED_PROPERTYNAME = '{DAV:}lastmodified';
@@ -81,21 +82,21 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
/**
* Renames the node
* @param string $name The new name
- * @throws Sabre_DAV_Exception_BadRequest
- * @throws Sabre_DAV_Exception_Forbidden
+ * @throws \Sabre\DAV\Exception\BadRequest
+ * @throws \Sabre\DAV\Exception\Forbidden
*/
public function setName($name) {
// rename is only allowed if the update privilege is granted
if (!$this->info->isUpdateable()) {
- throw new \Sabre_DAV_Exception_Forbidden();
+ throw new \Sabre\DAV\Exception\Forbidden();
}
- list($parentPath,) = Sabre_DAV_URLUtil::splitPath($this->path);
- list(, $newName) = Sabre_DAV_URLUtil::splitPath($name);
+ list($parentPath,) = URLUtil::splitPath($this->path);
+ list(, $newName) = URLUtil::splitPath($name);
if (!\OCP\Util::isValidFileName($newName)) {
- throw new \Sabre_DAV_Exception_BadRequest();
+ throw new \Sabre\DAV\Exception\BadRequest();
}
$newPath = $parentPath . '/' . $newName;
@@ -139,7 +140,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
/**
* Updates properties on this node,
- * @see Sabre_DAV_IProperties::updateProperties
+ * @see \Sabre\DAV\IProperties::updateProperties
* @param array $properties
* @return boolean
*/
diff --git a/lib/private/connector/sabre/objecttree.php b/lib/private/connector/sabre/objecttree.php
index 35cc1679ab6..a3de2efaa50 100644
--- a/lib/private/connector/sabre/objecttree.php
+++ b/lib/private/connector/sabre/objecttree.php
@@ -11,7 +11,7 @@ namespace OC\Connector\Sabre;
use OC\Files\FileInfo;
use OC\Files\Filesystem;
-class ObjectTree extends \Sabre_DAV_ObjectTree {
+class ObjectTree extends \Sabre\DAV\ObjectTree {
/**
* @var \OC\Files\View
@@ -27,10 +27,10 @@ class ObjectTree extends \Sabre_DAV_ObjectTree {
}
/**
- * @param \Sabre_DAV_ICollection $rootNode
+ * @param \Sabre\DAV\ICollection $rootNode
* @param \OC\Files\View $view
*/
- public function init(\Sabre_DAV_ICollection $rootNode, \OC\Files\View $view) {
+ public function init(\Sabre\DAV\ICollection $rootNode, \OC\Files\View $view) {
$this->rootNode = $rootNode;
$this->fileView = $view;
}
@@ -39,13 +39,13 @@ class ObjectTree extends \Sabre_DAV_ObjectTree {
* Returns the INode object for the requested path
*
* @param string $path
- * @throws \Sabre_DAV_Exception_ServiceUnavailable
- * @throws \Sabre_DAV_Exception_NotFound
- * @return \Sabre_DAV_INode
+ * @throws \Sabre\DAV\Exception\ServiceUnavailable
+ * @throws \Sabre\DAV\Exception\NotFound
+ * @return \Sabre\DAV\INode
*/
public function getNodeForPath($path) {
if (!$this->fileView) {
- throw new \Sabre_DAV_Exception_ServiceUnavailable('filesystem not setup');
+ throw new \Sabre\DAV\Exception\ServiceUnavailable('filesystem not setup');
}
$path = trim($path, '/');
@@ -79,7 +79,7 @@ class ObjectTree extends \Sabre_DAV_ObjectTree {
}
if (!$info) {
- throw new \Sabre_DAV_Exception_NotFound('File with name ' . $path . ' could not be located');
+ throw new \Sabre\DAV\Exception\NotFound('File with name ' . $path . ' could not be located');
}
if ($info->getType() === 'dir') {
@@ -98,22 +98,22 @@ class ObjectTree extends \Sabre_DAV_ObjectTree {
*
* @param string $sourcePath The path to the file which should be moved
* @param string $destinationPath The full destination path, so not just the destination parent node
- * @throws \Sabre_DAV_Exception_BadRequest
- * @throws \Sabre_DAV_Exception_ServiceUnavailable
- * @throws \Sabre_DAV_Exception_Forbidden
+ * @throws \Sabre\DAV\Exception\BadRequest
+ * @throws \Sabre\DAV\Exception\ServiceUnavailable
+ * @throws \Sabre\DAV\Exception\Forbidden
* @return int
*/
public function move($sourcePath, $destinationPath) {
if (!$this->fileView) {
- throw new \Sabre_DAV_Exception_ServiceUnavailable('filesystem not setup');
+ throw new \Sabre\DAV\Exception\ServiceUnavailable('filesystem not setup');
}
$sourceNode = $this->getNodeForPath($sourcePath);
- if ($sourceNode instanceof \Sabre_DAV_ICollection and $this->nodeExists($destinationPath)) {
- throw new \Sabre_DAV_Exception_Forbidden('Could not copy directory ' . $sourceNode . ', target exists');
+ if ($sourceNode instanceof \Sabre\DAV\ICollection and $this->nodeExists($destinationPath)) {
+ throw new \Sabre\DAV\Exception\Forbidden('Could not copy directory ' . $sourceNode . ', target exists');
}
- list($sourceDir,) = \Sabre_DAV_URLUtil::splitPath($sourcePath);
- list($destinationDir,) = \Sabre_DAV_URLUtil::splitPath($destinationPath);
+ list($sourceDir,) = \Sabre\DAV\URLUtil::splitPath($sourcePath);
+ list($destinationDir,) = \Sabre\DAV\URLUtil::splitPath($destinationPath);
$isShareMountPoint = false;
list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath( '/' . \OCP\User::getUser() . '/files/' . $sourcePath);
@@ -123,38 +123,39 @@ class ObjectTree extends \Sabre_DAV_ObjectTree {
// check update privileges
if (!$this->fileView->isUpdatable($sourcePath) && !$isShareMountPoint) {
- throw new \Sabre_DAV_Exception_Forbidden();
+ throw new \Sabre\DAV\Exception\Forbidden();
}
if ($sourceDir !== $destinationDir) {
// for a full move we need update privileges on sourcePath and sourceDir as well as destinationDir
if (ltrim($destinationDir, '/') === '') {
- throw new \Sabre_DAV_Exception_Forbidden();
+ throw new \Sabre\DAV\Exception\Forbidden();
}
if (!$this->fileView->isUpdatable($sourceDir)) {
- throw new \Sabre_DAV_Exception_Forbidden();
+ throw new \Sabre\DAV\Exception\Forbidden();
}
if (!$this->fileView->isUpdatable($destinationDir)) {
- throw new \Sabre_DAV_Exception_Forbidden();
+ throw new \Sabre\DAV\Exception\Forbidden();
}
if (!$this->fileView->isDeletable($sourcePath)) {
- throw new \Sabre_DAV_Exception_Forbidden();
+ throw new \Sabre\DAV\Exception\Forbidden();
}
}
$fileName = basename($destinationPath);
if (!\OCP\Util::isValidFileName($fileName)) {
- throw new \Sabre_DAV_Exception_BadRequest();
+ throw new \Sabre\DAV\Exception\BadRequest();
}
$renameOkay = $this->fileView->rename($sourcePath, $destinationPath);
if (!$renameOkay) {
- throw new \Sabre_DAV_Exception_Forbidden('');
+ throw new \Sabre\DAV\Exception\Forbidden('');
}
// update properties
$query = \OC_DB::prepare('UPDATE `*PREFIX*properties` SET `propertypath` = ?'
. ' WHERE `userid` = ? AND `propertypath` = ?');
- $query->execute(array(\OC\Files\Filesystem::normalizePath($destinationPath), \OC_User::getUser(), \OC\Files\Filesystem::normalizePath($sourcePath)));
+ $query->execute(array(\OC\Files\Filesystem::normalizePath($destinationPath), \OC_User::getUser(),
+ \OC\Files\Filesystem::normalizePath($sourcePath)));
$this->markDirty($sourceDir);
$this->markDirty($destinationDir);
@@ -169,12 +170,12 @@ class ObjectTree extends \Sabre_DAV_ObjectTree {
*
* @param string $source
* @param string $destination
- * @throws \Sabre_DAV_Exception_ServiceUnavailable
+ * @throws \Sabre\DAV\Exception\ServiceUnavailable
* @return void
*/
public function copy($source, $destination) {
if (!$this->fileView) {
- throw new \Sabre_DAV_Exception_ServiceUnavailable('filesystem not setup');
+ throw new \Sabre\DAV\Exception\ServiceUnavailable('filesystem not setup');
}
if ($this->fileView->is_file($source)) {
@@ -192,7 +193,7 @@ class ObjectTree extends \Sabre_DAV_ObjectTree {
}
}
- list($destinationDir,) = \Sabre_DAV_URLUtil::splitPath($destination);
+ list($destinationDir,) = \Sabre\DAV\URLUtil::splitPath($destination);
$this->markDirty($destinationDir);
}
}
diff --git a/lib/private/connector/sabre/principal.php b/lib/private/connector/sabre/principal.php
index 2075aa55c86..9bad3b9df16 100644
--- a/lib/private/connector/sabre/principal.php
+++ b/lib/private/connector/sabre/principal.php
@@ -7,7 +7,7 @@
* See the COPYING-README file.
*/
-class OC_Connector_Sabre_Principal implements Sabre_DAVACL_IPrincipalBackend {
+class OC_Connector_Sabre_Principal implements \Sabre\DAVACL\PrincipalBackend\BackendInterface {
/**
* Returns a list of principals based on a prefix.
*
@@ -68,7 +68,7 @@ class OC_Connector_Sabre_Principal implements Sabre_DAVACL_IPrincipalBackend {
// TODO: for now the group principal has only one member, the user itself
$principal = $this->getPrincipalByPath($principal);
if (!$principal) {
- throw new Sabre_DAV_Exception('Principal not found');
+ throw new \Sabre\DAV\Exception('Principal not found');
}
return array(
@@ -83,13 +83,13 @@ class OC_Connector_Sabre_Principal implements Sabre_DAVACL_IPrincipalBackend {
* @return array
*/
public function getGroupMembership($principal) {
- list($prefix, $name) = Sabre_DAV_URLUtil::splitPath($principal);
+ list($prefix, $name) = \Sabre\DAV\URLUtil::splitPath($principal);
$group_membership = array();
if ($prefix == 'principals') {
$principal = $this->getPrincipalByPath($principal);
if (!$principal) {
- throw new Sabre_DAV_Exception('Principal not found');
+ throw new \Sabre\DAV\Exception('Principal not found');
}
// TODO: for now the user principal has only its own groups
@@ -115,7 +115,7 @@ class OC_Connector_Sabre_Principal implements Sabre_DAVACL_IPrincipalBackend {
* @return void
*/
public function setGroupMemberSet($principal, array $members) {
- throw new Sabre_DAV_Exception('Setting members of the group is not supported yet');
+ throw new \Sabre\DAV\Exception('Setting members of the group is not supported yet');
}
function updatePrincipal($path, $mutations) {
diff --git a/lib/private/connector/sabre/quotaplugin.php b/lib/private/connector/sabre/quotaplugin.php
index c9b8336b57b..cf3c1103f84 100644
--- a/lib/private/connector/sabre/quotaplugin.php
+++ b/lib/private/connector/sabre/quotaplugin.php
@@ -1,4 +1,5 @@
<?php
+use Sabre\DAV\URLUtil;
/**
* This plugin check user quota and deny creating files when they exceeds the quota.
@@ -7,7 +8,7 @@
* @copyright Copyright (C) 2012 entreCables S.L. All rights reserved.
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
*/
-class OC_Connector_Sabre_QuotaPlugin extends Sabre_DAV_ServerPlugin {
+class OC_Connector_Sabre_QuotaPlugin extends \Sabre\DAV\ServerPlugin {
/**
* @var \OC\Files\View
@@ -17,7 +18,7 @@ class OC_Connector_Sabre_QuotaPlugin extends Sabre_DAV_ServerPlugin {
/**
* Reference to main server object
*
- * @var Sabre_DAV_Server
+ * @var \Sabre\DAV\Server
*/
private $server;
@@ -31,15 +32,15 @@ class OC_Connector_Sabre_QuotaPlugin extends Sabre_DAV_ServerPlugin {
/**
* This initializes the plugin.
*
- * This function is called by Sabre_DAV_Server, after
+ * This function is called by \Sabre\DAV\Server, after
* addPlugin is called.
*
* This method should set up the requires event subscriptions.
*
- * @param Sabre_DAV_Server $server
+ * @param \Sabre\DAV\Server $server
* @return void
*/
- public function initialize(Sabre_DAV_Server $server) {
+ public function initialize(\Sabre\DAV\Server $server) {
$this->server = $server;
@@ -52,7 +53,7 @@ class OC_Connector_Sabre_QuotaPlugin extends Sabre_DAV_ServerPlugin {
*
* @param string $uri
* @param null $data
- * @throws Sabre_DAV_Exception_InsufficientStorage
+ * @throws \Sabre\DAV\Exception\InsufficientStorage
* @return bool
*/
public function checkQuota($uri, $data = null) {
@@ -61,7 +62,7 @@ class OC_Connector_Sabre_QuotaPlugin extends Sabre_DAV_ServerPlugin {
if (substr($uri, 0, 1) !== '/') {
$uri = '/' . $uri;
}
- list($parentUri, $newName) = Sabre_DAV_URLUtil::splitPath($uri);
+ list($parentUri, $newName) = URLUtil::splitPath($uri);
$req = $this->server->httpRequest;
if ($req->getHeader('OC-Chunked')) {
$info = OC_FileChunking::decodeName($newName);
@@ -75,7 +76,7 @@ class OC_Connector_Sabre_QuotaPlugin extends Sabre_DAV_ServerPlugin {
if (isset($chunkHandler)) {
$chunkHandler->cleanup();
}
- throw new Sabre_DAV_Exception_InsufficientStorage();
+ throw new \Sabre\DAV\Exception\InsufficientStorage();
}
}
return true;
diff --git a/lib/private/connector/sabre/request.php b/lib/private/connector/sabre/request.php
index d70c25c4e70..c98b28c4d74 100644
--- a/lib/private/connector/sabre/request.php
+++ b/lib/private/connector/sabre/request.php
@@ -21,7 +21,7 @@
*
*/
-class OC_Connector_Sabre_Request extends Sabre_HTTP_Request {
+class OC_Connector_Sabre_Request extends \Sabre\HTTP\Request {
/**
* Returns the requested uri
*
diff --git a/lib/private/connector/sabre/server.php b/lib/private/connector/sabre/server.php
index cf28b11163f..e4ee5dcefbf 100644
--- a/lib/private/connector/sabre/server.php
+++ b/lib/private/connector/sabre/server.php
@@ -12,7 +12,7 @@
/**
* Class OC_Connector_Sabre_Server
*
- * This class reimplements some methods from @see Sabre_DAV_Server.
+ * This class reimplements some methods from @see \Sabre\DAV\Server.
*
* Basically we add handling of depth: infinity.
*
@@ -24,16 +24,16 @@
*
* For ownCloud 7 we will upgrade SabreDAV and submit the patch - if needed.
*
- * @see Sabre_DAV_Server
+ * @see \Sabre\DAV\Server
*/
-class OC_Connector_Sabre_Server extends Sabre_DAV_Server {
+class OC_Connector_Sabre_Server extends Sabre\DAV\Server {
/**
- * @see Sabre_DAV_Server
+ * @see \Sabre\DAV\Server
*/
protected function httpPropfind($uri) {
- // $xml = new Sabre_DAV_XMLReader(file_get_contents('php://input'));
+ // $xml = new \Sabre\DAV\XMLReader(file_get_contents('php://input'));
$requestedProperties = $this->parsePropFindRequest($this->httpRequest->getBody(true));
$depth = $this->getHTTPDepth(1);
@@ -72,7 +72,7 @@ class OC_Connector_Sabre_Server extends Sabre_DAV_Server {
private function addPathNodesRecursively(&$nodes, $path) {
foreach($this->tree->getChildren($path) as $childNode) {
$nodes[$path . '/' . $childNode->getName()] = $childNode;
- if ($childNode instanceof Sabre_DAV_ICollection)
+ if ($childNode instanceof \Sabre\DAV\ICollection)
$this->addPathNodesRecursively($nodes, $path . '/' . $childNode->getName());
}
}
@@ -89,10 +89,10 @@ class OC_Connector_Sabre_Server extends Sabre_DAV_Server {
$nodes = array(
$path => $parentNode
);
- if ($depth==1 && $parentNode instanceof Sabre_DAV_ICollection) {
+ if ($depth==1 && $parentNode instanceof \Sabre\DAV\ICollection) {
foreach($this->tree->getChildren($path) as $childNode)
$nodes[$path . '/' . $childNode->getName()] = $childNode;
- } else if ($depth == self::DEPTH_INFINITY && $parentNode instanceof Sabre_DAV_ICollection) {
+ } else if ($depth == self::DEPTH_INFINITY && $parentNode instanceof \Sabre\DAV\ICollection) {
$this->addPathNodesRecursively($nodes, $path);
}
@@ -140,7 +140,7 @@ class OC_Connector_Sabre_Server extends Sabre_DAV_Server {
if (count($currentPropertyNames) > 0) {
- if ($node instanceof Sabre_DAV_IProperties) {
+ if ($node instanceof \Sabre\DAV\IProperties) {
$nodeProperties = $node->getProperties($currentPropertyNames);
// The getProperties method may give us too much,
@@ -165,9 +165,9 @@ class OC_Connector_Sabre_Server extends Sabre_DAV_Server {
if (isset($newProperties[200][$prop])) continue;
switch($prop) {
- case '{DAV:}getlastmodified' : if ($node->getLastModified()) $newProperties[200][$prop] = new Sabre_DAV_Property_GetLastModified($node->getLastModified()); break;
+ case '{DAV:}getlastmodified' : if ($node->getLastModified()) $newProperties[200][$prop] = new \Sabre\DAV\Property\GetLastModified($node->getLastModified()); break;
case '{DAV:}getcontentlength' :
- if ($node instanceof Sabre_DAV_IFile) {
+ if ($node instanceof \Sabre\DAV\IFile) {
$size = $node->getSize();
if (!is_null($size)) {
$newProperties[200][$prop] = 0 + $size;
@@ -175,28 +175,28 @@ class OC_Connector_Sabre_Server extends Sabre_DAV_Server {
}
break;
case '{DAV:}quota-used-bytes' :
- if ($node instanceof Sabre_DAV_IQuota) {
+ if ($node instanceof \Sabre\DAV\IQuota) {
$quotaInfo = $node->getQuotaInfo();
$newProperties[200][$prop] = $quotaInfo[0];
}
break;
case '{DAV:}quota-available-bytes' :
- if ($node instanceof Sabre_DAV_IQuota) {
+ if ($node instanceof \Sabre\DAV\IQuota) {
$quotaInfo = $node->getQuotaInfo();
$newProperties[200][$prop] = $quotaInfo[1];
}
break;
- case '{DAV:}getetag' : if ($node instanceof Sabre_DAV_IFile && $etag = $node->getETag()) $newProperties[200][$prop] = $etag; break;
- case '{DAV:}getcontenttype' : if ($node instanceof Sabre_DAV_IFile && $ct = $node->getContentType()) $newProperties[200][$prop] = $ct; break;
+ case '{DAV:}getetag' : if ($node instanceof \Sabre\DAV\IFile && $etag = $node->getETag()) $newProperties[200][$prop] = $etag; break;
+ case '{DAV:}getcontenttype' : if ($node instanceof \Sabre\DAV\IFile && $ct = $node->getContentType()) $newProperties[200][$prop] = $ct; break;
case '{DAV:}supported-report-set' :
$reports = array();
foreach($this->plugins as $plugin) {
$reports = array_merge($reports, $plugin->getSupportedReportSet($myPath));
}
- $newProperties[200][$prop] = new Sabre_DAV_Property_SupportedReportSet($reports);
+ $newProperties[200][$prop] = new \Sabre\DAV\Property\SupportedReportSet($reports);
break;
case '{DAV:}resourcetype' :
- $newProperties[200]['{DAV:}resourcetype'] = new Sabre_DAV_Property_ResourceType();
+ $newProperties[200]['{DAV:}resourcetype'] = new \Sabre\DAV\Property\ResourceType();
foreach($this->resourceTypeMapping as $className => $resourceType) {
if ($node instanceof $className) $newProperties[200]['{DAV:}resourcetype']->add($resourceType);
}
diff --git a/lib/private/davclient.php b/lib/private/davclient.php
index a7bf0486519..6a544d27068 100644
--- a/lib/private/davclient.php
+++ b/lib/private/davclient.php
@@ -25,7 +25,7 @@
* like request timeout.
*/
-class OC_DAVClient extends \Sabre_DAV_Client {
+class OC_DAVClient extends \Sabre\DAV\Client {
protected $requestTimeout;
diff --git a/lib/private/db.php b/lib/private/db.php
index 422f783c745..82affe293ed 100644
--- a/lib/private/db.php
+++ b/lib/private/db.php
@@ -322,6 +322,23 @@ class OC_DB {
}
/**
+ * simulate the database schema update
+ * @param string $file file to read structure from
+ * @throws Exception
+ * @return string|boolean
+ */
+ public static function simulateUpdateDbFromStructure($file) {
+ $schemaManager = self::getMDB2SchemaManager();
+ try {
+ $result = $schemaManager->simulateUpdateDbFromStructure($file);
+ } catch (Exception $e) {
+ OC_Log::write('core', 'Simulated database structure update failed ('.$e.')', OC_Log::FATAL);
+ throw $e;
+ }
+ return $result;
+ }
+
+ /**
* drop a table - the database prefix will be prepended
* @param string $tableName the table to drop
*/
diff --git a/lib/private/db/mdb2schemamanager.php b/lib/private/db/mdb2schemamanager.php
index 533ed9110e7..734ba18d1ac 100644
--- a/lib/private/db/mdb2schemamanager.php
+++ b/lib/private/db/mdb2schemamanager.php
@@ -74,28 +74,46 @@ class MDB2SchemaManager {
}
/**
+ * Reads database schema from file
+ *
+ * @param string $file file to read from
+ */
+ private function readSchemaFromFile($file) {
+ $platform = $this->conn->getDatabasePlatform();
+ $schemaReader = new MDB2SchemaReader(\OC_Config::getObject(), $platform);
+ return $schemaReader->loadSchemaFromFile($file);
+ }
+
+ /**
* update the database scheme
* @param string $file file to read structure from
* @param bool $generateSql only return the sql needed for the upgrade
* @return string|boolean
*/
public function updateDbFromStructure($file, $generateSql = false) {
-
- $platform = $this->conn->getDatabasePlatform();
- $schemaReader = new MDB2SchemaReader(\OC_Config::getObject(), $platform);
- $toSchema = $schemaReader->loadSchemaFromFile($file);
+ $toSchema = $this->readSchemaFromFile($file);
$migrator = $this->getMigrator();
if ($generateSql) {
return $migrator->generateChangeScript($toSchema);
} else {
- $migrator->checkMigrate($toSchema);
$migrator->migrate($toSchema);
return true;
}
}
/**
+ * update the database scheme
+ * @param string $file file to read structure from
+ * @return string|boolean
+ */
+ public function simulateUpdateDbFromStructure($file) {
+ $toSchema = $this->readSchemaFromFile($file);
+ $migrator = $this->getMigrator()->checkMigrate($toSchema);
+ return true;
+ }
+
+ /**
* @param \Doctrine\DBAL\Schema\Schema $schema
* @return string
*/
diff --git a/lib/private/files/cache/backgroundwatcher.php b/lib/private/files/cache/backgroundwatcher.php
deleted file mode 100644
index 2194651233d..00000000000
--- a/lib/private/files/cache/backgroundwatcher.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-/**
- * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-namespace OC\Files\Cache;
-
-use \OC\Files\Mount;
-use \OC\Files\Filesystem;
-
-class BackgroundWatcher {
- static $folderMimetype = null;
-
- static private function getFolderMimetype() {
- if (!is_null(self::$folderMimetype)) {
- return self::$folderMimetype;
- }
- $sql = 'SELECT `id` FROM `*PREFIX*mimetypes` WHERE `mimetype` = ?';
- $result = \OC_DB::executeAudited($sql, array('httpd/unix-directory'));
- $row = $result->fetchRow();
- return $row['id'];
- }
-
- /**
- * @param integer $id
- */
- static private function checkUpdate($id) {
- $cacheItem = Cache::getById($id);
- if (is_null($cacheItem)) {
- return;
- }
- list($storageId, $internalPath) = $cacheItem;
- $mounts = Filesystem::getMountByStorageId($storageId);
-
- if (count($mounts) === 0) {
- //if the storage we need isn't mounted on default, try to find a user that has access to the storage
- $permissionsCache = new Permissions($storageId);
- $users = $permissionsCache->getUsers($id);
- if (count($users) === 0) {
- return;
- }
- Filesystem::initMountPoints($users[0]);
- $mounts = Filesystem::getMountByStorageId($storageId);
- if (count($mounts) === 0) {
- return;
- }
- }
- $storage = $mounts[0]->getStorage();
- $watcher = new Watcher($storage);
- $watcher->checkUpdate($internalPath);
- }
-
- /**
- * get the next fileid in the cache
- *
- * @param int $previous
- * @param bool $folder
- * @return int
- */
- static private function getNextFileId($previous, $folder) {
- if ($folder) {
- $stmt = \OC_DB::prepare('SELECT `fileid` FROM `*PREFIX*filecache` WHERE `fileid` > ? AND `mimetype` = ? ORDER BY `fileid` ASC', 1);
- } else {
- $stmt = \OC_DB::prepare('SELECT `fileid` FROM `*PREFIX*filecache` WHERE `fileid` > ? AND `mimetype` != ? ORDER BY `fileid` ASC', 1);
- }
- $result = \OC_DB::executeAudited($stmt, array($previous,self::getFolderMimetype()));
- if ($row = $result->fetchRow()) {
- return $row['fileid'];
- } else {
- return 0;
- }
- }
-
- static public function checkNext() {
- // check both 1 file and 1 folder, this way new files are detected quicker because there are less folders than files usually
- $previousFile = \OC_Appconfig::getValue('files', 'backgroundwatcher_previous_file', 0);
- $previousFolder = \OC_Appconfig::getValue('files', 'backgroundwatcher_previous_folder', 0);
- $nextFile = self::getNextFileId($previousFile, false);
- $nextFolder = self::getNextFileId($previousFolder, true);
- \OC_Appconfig::setValue('files', 'backgroundwatcher_previous_file', $nextFile);
- \OC_Appconfig::setValue('files', 'backgroundwatcher_previous_folder', $nextFolder);
- if ($nextFile > 0) {
- self::checkUpdate($nextFile);
- }
- if ($nextFolder > 0) {
- self::checkUpdate($nextFolder);
- }
- }
-
- static public function checkAll() {
- $previous = 0;
- $next = 1;
- while ($next != 0) {
- $next = self::getNextFileId($previous, true);
- self::checkUpdate($next);
- }
- $previous = 0;
- $next = 1;
- while ($next != 0) {
- $next = self::getNextFileId($previous, false);
- self::checkUpdate($next);
- }
- }
-}
diff --git a/lib/private/files/cache/cache.php b/lib/private/files/cache/cache.php
index 59963f41e3d..bfd280a91a1 100644
--- a/lib/private/files/cache/cache.php
+++ b/lib/private/files/cache/cache.php
@@ -123,7 +123,7 @@ class Cache {
$params = array($file);
}
$sql = 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`,
- `storage_mtime`, `encrypted`, `unencrypted_size`, `etag`
+ `storage_mtime`, `encrypted`, `unencrypted_size`, `etag`, `permissions`
FROM `*PREFIX*filecache` ' . $where;
$result = \OC_DB::executeAudited($sql, $params);
$data = $result->fetchRow();
@@ -153,6 +153,7 @@ class Cache {
if ($data['storage_mtime'] == 0) {
$data['storage_mtime'] = $data['mtime'];
}
+ $data['permissions'] = (int)$data['permissions'];
}
return $data;
@@ -178,7 +179,7 @@ class Cache {
public function getFolderContentsById($fileId) {
if ($fileId > -1) {
$sql = 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`,
- `storage_mtime`, `encrypted`, `unencrypted_size`, `etag`
+ `storage_mtime`, `encrypted`, `unencrypted_size`, `etag`, `permissions`
FROM `*PREFIX*filecache` WHERE `parent` = ? ORDER BY `name` ASC';
$result = \OC_DB::executeAudited($sql,array($fileId));
$files = $result->fetchAll();
@@ -192,6 +193,7 @@ class Cache {
$file['encrypted_size'] = $file['size'];
$file['size'] = $file['unencrypted_size'];
}
+ $file['permissions'] = (int)$file['permissions'];
}
return $files;
} else {
@@ -277,7 +279,9 @@ class Cache {
* @return array
*/
function buildParts(array $data) {
- $fields = array('path', 'parent', 'name', 'mimetype', 'size', 'mtime', 'storage_mtime', 'encrypted', 'unencrypted_size', 'etag');
+ $fields = array(
+ 'path', 'parent', 'name', 'mimetype', 'size', 'mtime', 'storage_mtime', 'encrypted', 'unencrypted_size',
+ 'etag', 'permissions');
$params = array();
$queryParts = array();
foreach ($data as $name => $value) {
@@ -370,9 +374,6 @@ class Cache {
$sql = 'DELETE FROM `*PREFIX*filecache` WHERE `fileid` = ?';
\OC_DB::executeAudited($sql, array($entry['fileid']));
-
- $permissionsCache = new Permissions($this->storageId);
- $permissionsCache->remove($entry['fileid']);
}
/**
@@ -457,7 +458,7 @@ class Cache {
// normalize pattern
$pattern = $this->normalize($pattern);
- $sql = 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `unencrypted_size`, `etag`
+ $sql = 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `unencrypted_size`, `etag`, `permissions`
FROM `*PREFIX*filecache` WHERE `name` LIKE ? AND `storage` = ?';
$result = \OC_DB::executeAudited($sql, array($pattern, $this->getNumericStorageId()));
$files = array();
@@ -481,7 +482,7 @@ class Cache {
} else {
$where = '`mimepart` = ?';
}
- $sql = 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `unencrypted_size`, `etag`
+ $sql = 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `unencrypted_size`, `etag`, `permissions`
FROM `*PREFIX*filecache` WHERE ' . $where . ' AND `storage` = ?';
$mimetype = $this->getMimetypeId($mimetype);
$result = \OC_DB::executeAudited($sql, array($mimetype, $this->getNumericStorageId()));
diff --git a/lib/private/files/cache/homecache.php b/lib/private/files/cache/homecache.php
index f61769f0b9b..06ae62015a5 100644
--- a/lib/private/files/cache/homecache.php
+++ b/lib/private/files/cache/homecache.php
@@ -17,7 +17,7 @@ class HomeCache extends Cache {
* @return int
*/
public function calculateFolderSize($path, $entry = null) {
- if ($path !== '/' and $path !== '' and $path !== 'files' and $path !== 'files_trashbin') {
+ if ($path !== '/' and $path !== '' and $path !== 'files' and $path !== 'files_trashbin' and $path !== 'files_versions') {
return parent::calculateFolderSize($path, $entry);
} elseif ($path === '' or $path === '/') {
// since the size of / isn't used (the size of /files is used instead) there is no use in calculating it
diff --git a/lib/private/files/cache/permissions.php b/lib/private/files/cache/permissions.php
deleted file mode 100644
index a2a614ca0b1..00000000000
--- a/lib/private/files/cache/permissions.php
+++ /dev/null
@@ -1,170 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-namespace OC\Files\Cache;
-
-class Permissions {
- /**
- * @var string $storageId
- */
- private $storageId;
-
- /**
- * @var \OC\Files\Storage\Storage $storage
- */
- protected $storage;
-
- /**
- * @param \OC\Files\Storage\Storage|string $storage
- */
- public function __construct($storage) {
- if ($storage instanceof \OC\Files\Storage\Storage) {
- $this->storageId = $storage->getId();
- $this->storage = $storage;
- } else {
- $this->storageId = $storage;
- $mountManager = \OC\Files\Filesystem::getMountManager();
- $mount = $mountManager->findByStorageId($this->storageId);
- $firstMountPoint = reset($mount);
- if ($firstMountPoint instanceof \OC\Files\Storage\Storage) {
- $storage = $firstMountPoint->getStorage();
- $this->storage = $storage;
- }
- }
-
- }
-
- /**
- * get the permissions for a single file
- *
- * @param int $fileId
- * @param string $user
- * @return int (-1 if file no permissions set)
- */
- public function get($fileId, $user) {
- $sql = 'SELECT `permissions` FROM `*PREFIX*permissions` WHERE `user` = ? AND `fileid` = ?';
- $result = \OC_DB::executeAudited($sql, array($user, $fileId));
- if ($row = $result->fetchRow()) {
- return $this->updatePermissions($row['permissions']);
- } else {
- return -1;
- }
- }
-
- /**
- * set the permissions of a file
- *
- * @param int $fileId
- * @param string $user
- * @param int $permissions
- */
- public function set($fileId, $user, $permissions) {
- if (self::get($fileId, $user) !== -1) {
- $sql = 'UPDATE `*PREFIX*permissions` SET `permissions` = ? WHERE `user` = ? AND `fileid` = ?';
- } else {
- $sql = 'INSERT INTO `*PREFIX*permissions`(`permissions`, `user`, `fileid`) VALUES(?, ?,? )';
- }
- \OC_DB::executeAudited($sql, array($permissions, $user, $fileId));
- }
-
- /**
- * get the permissions of multiply files
- *
- * @param int[] $fileIds
- * @param string $user
- * @return int[]
- */
- public function getMultiple($fileIds, $user) {
- if (count($fileIds) === 0) {
- return array();
- }
- $params = $fileIds;
- $params[] = $user;
- $inPart = implode(', ', array_fill(0, count($fileIds), '?'));
-
- $sql = 'SELECT `fileid`, `permissions` FROM `*PREFIX*permissions`'
- . ' WHERE `fileid` IN (' . $inPart . ') AND `user` = ?';
- $result = \OC_DB::executeAudited($sql, $params);
- $filePermissions = array();
- while ($row = $result->fetchRow()) {
- $filePermissions[$row['fileid']] = $this->updatePermissions($row['permissions']);
- }
- return $filePermissions;
- }
-
- /**
- * get the permissions for all files in a folder
- *
- * @param int $parentId
- * @param string $user
- * @return int[]
- */
- public function getDirectoryPermissions($parentId, $user) {
- $sql = 'SELECT `*PREFIX*permissions`.`fileid`, `permissions`
- FROM `*PREFIX*permissions`
- INNER JOIN `*PREFIX*filecache` ON `*PREFIX*permissions`.`fileid` = `*PREFIX*filecache`.`fileid`
- WHERE `*PREFIX*filecache`.`parent` = ? AND `*PREFIX*permissions`.`user` = ?';
-
- $result = \OC_DB::executeAudited($sql, array($parentId, $user));
- $filePermissions = array();
- while ($row = $result->fetchRow()) {
- $filePermissions[$row['fileid']] = $this->updatePermissions($row['permissions']);
- }
- return $filePermissions;
- }
-
- /**
- * remove the permissions for a file
- *
- * @param int $fileId
- * @param string $user
- */
- public function remove($fileId, $user = null) {
- if (is_null($user)) {
- \OC_DB::executeAudited('DELETE FROM `*PREFIX*permissions` WHERE `fileid` = ?', array($fileId));
- } else {
- $sql = 'DELETE FROM `*PREFIX*permissions` WHERE `fileid` = ? AND `user` = ?';
- \OC_DB::executeAudited($sql, array($fileId, $user));
- }
- }
-
- public function removeMultiple($fileIds, $user) {
- $query = \OC_DB::prepare('DELETE FROM `*PREFIX*permissions` WHERE `fileid` = ? AND `user` = ?');
- foreach ($fileIds as $fileId) {
- \OC_DB::executeAudited($query, array($fileId, $user));
- }
- }
-
- /**
- * get the list of users which have permissions stored for a file
- *
- * @param int $fileId
- */
- public function getUsers($fileId) {
- $sql = 'SELECT `user` FROM `*PREFIX*permissions` WHERE `fileid` = ?';
- $result = \OC_DB::executeAudited($sql, array($fileId));
- $users = array();
- while ($row = $result->fetchRow()) {
- $users[] = $row['user'];
- }
- return $users;
- }
-
- /**
- * check if admin removed the share permission for the user and update the permissions
- *
- * @param int $permissions
- * @return int
- */
- protected function updatePermissions($permissions) {
- if (\OCP\Util::isSharingDisabledForUser()) {
- $permissions &= ~\OCP\PERMISSION_SHARE;
- }
- return $permissions;
- }
-}
diff --git a/lib/private/files/cache/scanner.php b/lib/private/files/cache/scanner.php
index 6cb9807f5a7..0c59e57d839 100644
--- a/lib/private/files/cache/scanner.php
+++ b/lib/private/files/cache/scanner.php
@@ -40,11 +40,6 @@ class Scanner extends BasicEmitter {
protected $cache;
/**
- * @var \OC\Files\Cache\Permissions $permissionsCache
- */
- protected $permissionsCache;
-
- /**
* @var boolean $cacheActive If true, perform cache operations, if false, do not affect cache
*/
protected $cacheActive;
@@ -59,7 +54,6 @@ class Scanner extends BasicEmitter {
$this->storage = $storage;
$this->storageId = $this->storage->getId();
$this->cache = $storage->getCache();
- $this->permissionsCache = $storage->getPermissionsCache();
$this->cacheActive = !Config::getSystemValue('filesystem_cache_readonly', false);
}
@@ -86,6 +80,7 @@ class Scanner extends BasicEmitter {
}
$data['etag'] = $this->storage->getETag($path);
$data['storage_mtime'] = $data['mtime'];
+ $data['permissions'] = $this->storage->getPermissions($path);
return $data;
}
@@ -117,9 +112,6 @@ class Scanner extends BasicEmitter {
$newData = $data;
$cacheData = $this->cache->get($file);
if ($cacheData) {
- if (isset($cacheData['fileid'])) {
- $this->permissionsCache->remove($cacheData['fileid']);
- }
if ($reuseExisting) {
// prevent empty etag
if (empty($cacheData['etag'])) {
diff --git a/lib/private/files/node/folder.php b/lib/private/files/node/folder.php
index 1af34fc2be6..3e23f5c2c94 100644
--- a/lib/private/files/node/folder.php
+++ b/lib/private/files/node/folder.php
@@ -71,13 +71,11 @@ class Folder extends Node implements \OCP\Files\Folder {
list($storage, $internalPath) = $this->view->resolvePath($this->path);
if ($storage) {
$cache = $storage->getCache($internalPath);
- $permissionsCache = $storage->getPermissionsCache($internalPath);
//trigger cache update check
$this->view->getFileInfo($this->path);
$files = $cache->getFolderContents($internalPath);
- $permissions = $permissionsCache->getDirectoryPermissions($this->getId(), $this->root->getUser()->getUID());
} else {
$files = array();
}
@@ -129,9 +127,6 @@ class Folder extends Node implements \OCP\Files\Folder {
foreach ($files as $file) {
if ($file) {
- if (isset($permissions[$file['fileid']])) {
- $file['permissions'] = $permissions[$file['fileid']];
- }
$node = $this->createNode($this->path . '/' . $file['name'], $file);
$result[] = $node;
}
diff --git a/lib/private/files/storage/common.php b/lib/private/files/storage/common.php
index 6b11603323a..4d5a2078ef7 100644
--- a/lib/private/files/storage/common.php
+++ b/lib/private/files/storage/common.php
@@ -301,13 +301,6 @@ abstract class Common implements \OC\Files\Storage\Storage {
return $this->scanner;
}
- public function getPermissionsCache($path = '') {
- if (!isset($this->permissioncache)) {
- $this->permissioncache = new \OC\Files\Cache\Permissions($this);
- }
- return $this->permissioncache;
- }
-
public function getWatcher($path = '') {
if (!isset($this->watcher)) {
$this->watcher = new \OC\Files\Cache\Watcher($this);
diff --git a/lib/private/files/storage/storage.php b/lib/private/files/storage/storage.php
index 5be90f24756..f085a0590b4 100644
--- a/lib/private/files/storage/storage.php
+++ b/lib/private/files/storage/storage.php
@@ -41,14 +41,6 @@ interface Storage extends \OCP\Files\Storage {
public function getOwner($path);
/**
- * get a permissions cache instance for the cache
- *
- * @param string $path
- * @return \OC\Files\Cache\Permissions
- */
- public function getPermissionsCache($path = '');
-
- /**
* get a watcher instance for the cache
*
* @param string $path
diff --git a/lib/private/files/storage/wrapper/wrapper.php b/lib/private/files/storage/wrapper/wrapper.php
index 364475a68e0..057c31c3cd8 100644
--- a/lib/private/files/storage/wrapper/wrapper.php
+++ b/lib/private/files/storage/wrapper/wrapper.php
@@ -389,16 +389,6 @@ class Wrapper implements \OC\Files\Storage\Storage {
}
/**
- * get a permissions cache instance for the cache
- *
- * @param string $path
- * @return \OC\Files\Cache\Permissions
- */
- public function getPermissionsCache($path = '') {
- return $this->storage->getPermissionsCache($path);
- }
-
- /**
* get a watcher instance for the cache
*
* @param string $path
diff --git a/lib/private/files/view.php b/lib/private/files/view.php
index 0b8d336f260..71c4980db2d 100644
--- a/lib/private/files/view.php
+++ b/lib/private/files/view.php
@@ -826,8 +826,6 @@ class View {
$data = null;
if ($storage) {
$cache = $storage->getCache($internalPath);
- $permissionsCache = $storage->getPermissionsCache($internalPath);
- $user = \OC_User::getUser();
if (!$cache->inCache($internalPath)) {
if (!$storage->file_exists($internalPath)) {
@@ -857,13 +855,6 @@ class View {
}
}
}
-
- $permissions = $permissionsCache->get($data['fileid'], $user);
- if ($permissions === -1) {
- $permissions = $storage->getPermissions($internalPath);
- $permissionsCache->set($data['fileid'], $user, $permissions);
- }
- $data['permissions'] = $permissions;
}
}
if (!$data) {
@@ -896,7 +887,6 @@ class View {
list($storage, $internalPath) = Filesystem::resolvePath($path);
if ($storage) {
$cache = $storage->getCache($internalPath);
- $permissionsCache = $storage->getPermissionsCache($internalPath);
$user = \OC_User::getUser();
if ($cache->getStatus($internalPath) < Cache\Cache::COMPLETE) {
@@ -913,7 +903,6 @@ class View {
foreach ($contents as $content) {
$files[] = new FileInfo($path . '/' . $content['name'], $storage, $content['path'], $content);
}
- $permissions = $permissionsCache->getDirectoryPermissions($folderId, $user);
$ids = array();
foreach ($files as $i => $file) {
@@ -922,7 +911,6 @@ class View {
if (!isset($permissions[$file['fileid']])) {
$permissions[$file['fileid']] = $storage->getPermissions($file['path']);
- $permissionsCache->set($file['fileid'], $user, $permissions[$file['fileid']]);
}
$files[$i]['permissions'] = $permissions[$file['fileid']];
}
@@ -954,12 +942,7 @@ class View {
} 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);
- }
+ $permissions = $rootEntry['permissions'];
// do not allow renaming/deleting the mount point if they are not shared files/folders
// for shared files/folders we use the permissions given by the owner
if ($subStorage instanceof \OC\Files\Storage\Shared) {
diff --git a/lib/private/request.php b/lib/private/request.php
index 09928021a7f..619eae3e9b5 100755
--- a/lib/private/request.php
+++ b/lib/private/request.php
@@ -184,7 +184,7 @@ class OC_Request {
$path_info = $_SERVER['PATH_INFO'];
}else{
$path_info = self::getRawPathInfo();
- // following is taken from Sabre_DAV_URLUtil::decodePathSegment
+ // following is taken from \Sabre\DAV\URLUtil::decodePathSegment
$path_info = rawurldecode($path_info);
$encoding = mb_detect_encoding($path_info, array('UTF-8', 'ISO-8859-1'));
@@ -220,7 +220,7 @@ class OC_Request {
$path_info = $requestUri;
// strip off the script name's dir and file name
- list($path, $name) = \Sabre_DAV_URLUtil::splitPath($scriptName);
+ list($path, $name) = \Sabre\DAV\URLUtil::splitPath($scriptName);
if (!empty($path)) {
if( $path === $path_info || strpos($path_info, $path.'/') === 0) {
$path_info = substr($path_info, strlen($path));
diff --git a/lib/private/share/share.php b/lib/private/share/share.php
index 46796c26370..189be2363ea 100644
--- a/lib/private/share/share.php
+++ b/lib/private/share/share.php
@@ -1744,10 +1744,10 @@ class Share extends \OC\Share\Constants {
if (isset($uidOwner)) {
if ($fileDependent) {
$select = '`*PREFIX*share`.`id`, `item_type`, `item_source`, `*PREFIX*share`.`parent`,'
- . ' `share_type`, `share_with`, `file_source`, `path`, `permissions`, `stime`,'
+ . ' `share_type`, `share_with`, `file_source`, `path`, `*PREFIX*share`.`permissions`, `stime`,'
. ' `expiration`, `token`, `storage`, `mail_send`, `uid_owner`';
} else {
- $select = '`id`, `item_type`, `item_source`, `parent`, `share_type`, `share_with`, `permissions`,'
+ $select = '`id`, `item_type`, `item_source`, `parent`, `share_type`, `share_with`, `*PREFIX*share`.`permissions`,'
. ' `stime`, `file_source`, `expiration`, `token`, `mail_send`, `uid_owner`';
}
} else {
@@ -1755,12 +1755,12 @@ class Share extends \OC\Share\Constants {
if ($format == \OC_Share_Backend_File::FORMAT_GET_FOLDER_CONTENTS || $format == \OC_Share_Backend_File::FORMAT_FILE_APP_ROOT) {
$select = '`*PREFIX*share`.`id`, `item_type`, `item_source`, `*PREFIX*share`.`parent`, `uid_owner`, '
. '`share_type`, `share_with`, `file_source`, `path`, `file_target`, `stime`, '
- . '`permissions`, `expiration`, `storage`, `*PREFIX*filecache`.`parent` as `file_parent`, '
+ . '`*PREFIX*share`.`permissions`, `expiration`, `storage`, `*PREFIX*filecache`.`parent` as `file_parent`, '
. '`name`, `mtime`, `mimetype`, `mimepart`, `size`, `unencrypted_size`, `encrypted`, `etag`, `mail_send`';
} else {
$select = '`*PREFIX*share`.`id`, `item_type`, `item_source`, `item_target`,
`*PREFIX*share`.`parent`, `share_type`, `share_with`, `uid_owner`,
- `file_source`, `path`, `file_target`, `permissions`, `stime`, `expiration`, `token`, `storage`, `mail_send`';
+ `file_source`, `path`, `file_target`, `*PREFIX*share`.`permissions`, `stime`, `expiration`, `token`, `storage`, `mail_send`';
}
}
}
diff --git a/lib/private/updater.php b/lib/private/updater.php
index 58d3cab73aa..106970c4121 100644
--- a/lib/private/updater.php
+++ b/lib/private/updater.php
@@ -125,29 +125,63 @@ class Updater extends BasicEmitter {
* STOP CONFIG CHANGES FOR OLDER VERSIONS
*/
+ $canUpgrade = false;
+ // simulate DB upgrade
try {
- \OC_DB::updateDbFromStructure(\OC::$SERVERROOT . '/db_structure.xml');
- $this->emit('\OC\Updater', 'dbUpgrade');
-
+ // simulate core DB upgrade
+ \OC_DB::simulateUpdateDbFromStructure(\OC::$SERVERROOT . '/db_structure.xml');
+
+ // simulate apps DB upgrade
+ $version = \OC_Util::getVersion();
+ $apps = \OC_App::getEnabledApps();
+ foreach ($apps as $appId) {
+ $info = \OC_App::getAppInfo($appId);
+ if (\OC_App::isAppCompatible($version, $info) && \OC_App::shouldUpgrade($appId)) {
+ if (file_exists(\OC_App::getAppPath($appId) . '/appinfo/database.xml')) {
+ \OC_DB::simulateUpdateDbFromStructure(\OC_App::getAppPath($appId) . '/appinfo/database.xml');
+ }
+ }
+ }
+
+ $this->emit('\OC\Updater', 'dbSimulateUpgrade');
+
+ $canUpgrade = true;
} catch (\Exception $exception) {
$this->emit('\OC\Updater', 'failure', array($exception->getMessage()));
}
- \OC_Config::setValue('version', implode('.', \OC_Util::getVersion()));
- $disabledApps = \OC_App::checkAppsRequirements();
- if (!empty($disabledApps)) {
- $this->emit('\OC\Updater', 'disabledApps', array($disabledApps));
- }
- // load all apps to also upgrade enabled apps
- \OC_App::loadApps();
- $repair = new Repair();
- $repair->run();
+ if ($canUpgrade) {
+ // proceed with real upgrade
+ try {
+ // do the real upgrade
+ \OC_DB::updateDbFromStructure(\OC::$SERVERROOT . '/db_structure.xml');
+ $this->emit('\OC\Updater', 'dbUpgrade');
+
+ } catch (\Exception $exception) {
+ $this->emit('\OC\Updater', 'failure', array($exception->getMessage()));
+ return false;
+ }
+ // TODO: why not do this at the end ?
+ \OC_Config::setValue('version', implode('.', \OC_Util::getVersion()));
+ $disabledApps = \OC_App::checkAppsRequirements();
+ if (!empty($disabledApps)) {
+ $this->emit('\OC\Updater', 'disabledApps', array($disabledApps));
+ }
+ // load all apps to also upgrade enabled apps
+ \OC_App::loadApps();
+
+ $repair = new Repair();
+ $repair->run();
+
+ //Invalidate update feed
+ \OC_Appconfig::setValue('core', 'lastupdatedat', 0);
+ }
- //Invalidate update feed
- \OC_Appconfig::setValue('core', 'lastupdatedat', 0);
\OC_Config::setValue('maintenance', false);
$this->emit('\OC\Updater', 'maintenanceEnd');
+
+ return $canUpgrade;
}
}
diff --git a/lib/private/util.php b/lib/private/util.php
index da67dbcee54..905f8d72cf4 100755
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -983,7 +983,7 @@ class OC_Util {
try {
// test PROPFIND
$client->propfind('', array('{DAV:}resourcetype'));
- } catch (\Sabre_DAV_Exception_NotAuthenticated $e) {
+ } catch (\Sabre\DAV\Exception\NotAuthenticated $e) {
$return = true;
} catch (\Exception $e) {
OC_Log::write('core', 'isWebDAVWorking: NO - Reason: '.$e->getMessage(). ' ('.get_class($e).')', OC_Log::WARN);