diff options
Diffstat (limited to 'lib/private')
-rw-r--r-- | lib/private/Server.php | 3 | ||||
-rw-r--r-- | lib/private/appframework/http/request.php | 3 | ||||
-rw-r--r-- | lib/private/avatar.php | 16 | ||||
-rw-r--r-- | lib/private/avatarmanager.php | 11 | ||||
-rw-r--r-- | lib/private/files/objectstore/objectstorestorage.php | 4 | ||||
-rw-r--r-- | lib/private/files/view.php | 4 | ||||
-rw-r--r-- | lib/private/route/router.php | 9 |
7 files changed, 41 insertions, 9 deletions
diff --git a/lib/private/Server.php b/lib/private/Server.php index 48ee4b27d32..392b2b17b9c 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -313,7 +313,8 @@ class Server extends ServerContainer implements IServerContainer { return new AvatarManager( $c->getUserManager(), $c->getRootFolder(), - $c->getL10N('lib') + $c->getL10N('lib'), + $c->getLogger() ); }); $this->registerService('Logger', function (Server $c) { diff --git a/lib/private/appframework/http/request.php b/lib/private/appframework/http/request.php index 2dc636fcff2..f4cbb6384ba 100644 --- a/lib/private/appframework/http/request.php +++ b/lib/private/appframework/http/request.php @@ -59,6 +59,9 @@ class Request implements \ArrayAccess, \Countable, IRequest { // Android Chrome user agent: https://developers.google.com/chrome/mobile/docs/user-agent const USER_AGENT_ANDROID_MOBILE_CHROME = '#Android.*Chrome/[.0-9]*#'; const USER_AGENT_FREEBOX = '#^Mozilla/5\.0$#'; + const USER_AGENT_OWNCLOUD_IOS = '/^Mozilla\/5\.0 \(iOS\) ownCloud\-iOS.*$/'; + const USER_AGENT_OWNCLOUD_ANDROID = '/^Mozilla\/5\.0 \(Android\) ownCloud\-android.*$/'; + const USER_AGENT_OWNCLOUD_DESKTOP = '/^Mozilla\/5\.0 \([A-Za-z ]+\) (mirall|csyncoC)\/.*$/'; const REGEX_LOCALHOST = '/^(127\.0\.0\.1|localhost)$/'; protected $inputStream; diff --git a/lib/private/avatar.php b/lib/private/avatar.php index 8ed920c9b18..4b9d3d82404 100644 --- a/lib/private/avatar.php +++ b/lib/private/avatar.php @@ -31,10 +31,12 @@ use OC\User\User; use OCP\Files\Folder; use OCP\Files\File; use OCP\Files\NotFoundException; +use OCP\Files\NotPermittedException; use OCP\IAvatar; use OCP\IImage; use OCP\IL10N; use OC_Image; +use OCP\ILogger; /** * This class gets and sets users avatars. @@ -47,6 +49,8 @@ class Avatar implements IAvatar { private $l; /** @var User */ private $user; + /** @var ILogger */ + private $logger; /** * constructor @@ -54,11 +58,13 @@ class Avatar implements IAvatar { * @param Folder $folder The folder where the avatars are * @param IL10N $l * @param User $user + * @param ILogger $logger */ - public function __construct (Folder $folder, IL10N $l, $user) { + public function __construct (Folder $folder, IL10N $l, $user, ILogger $logger) { $this->folder = $folder; $this->l = $l; $this->user = $user; + $this->logger = $logger; } /** @@ -164,8 +170,12 @@ class Avatar implements IAvatar { if ($size !== -1) { $avatar->resize($size); } - $file = $this->folder->newFile($path); - $file->putContent($avatar->data()); + try { + $file = $this->folder->newFile($path); + $file->putContent($avatar->data()); + } catch (NotPermittedException $e) { + $this->logger->error('Failed to save avatar for ' . $this->user->getUID()); + } } return $file; diff --git a/lib/private/avatarmanager.php b/lib/private/avatarmanager.php index 3b619cda574..62f4faf436c 100644 --- a/lib/private/avatarmanager.php +++ b/lib/private/avatarmanager.php @@ -28,6 +28,7 @@ namespace OC; use OCP\Files\Folder; use OCP\Files\NotFoundException; use OCP\IAvatarManager; +use OCP\ILogger; use OCP\IUserManager; use OCP\Files\IRootFolder; use OCP\IL10N; @@ -46,20 +47,26 @@ class AvatarManager implements IAvatarManager { /** @var IL10N */ private $l; + /** @var ILogger */ + private $logger; + /** * AvatarManager constructor. * * @param IUserManager $userManager * @param IRootFolder $rootFolder * @param IL10N $l + * @param ILogger $logger */ public function __construct( IUserManager $userManager, IRootFolder $rootFolder, - IL10N $l) { + IL10N $l, + ILogger $logger) { $this->userManager = $userManager; $this->rootFolder = $rootFolder; $this->l = $l; + $this->logger = $logger; } /** @@ -85,6 +92,6 @@ class AvatarManager implements IAvatarManager { /** @var Folder $folder */ $folder = $this->rootFolder->get($dir); - return new Avatar($folder, $this->l, $user); + return new Avatar($folder, $this->l, $user, $this->logger); } } diff --git a/lib/private/files/objectstore/objectstorestorage.php b/lib/private/files/objectstore/objectstorestorage.php index 35c2c19c75b..8c643dbdcc7 100644 --- a/lib/private/files/objectstore/objectstorestorage.php +++ b/lib/private/files/objectstore/objectstorestorage.php @@ -39,6 +39,10 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common { */ protected $objectStore; /** + * @var string $id + */ + protected $id; + /** * @var \OC\User\User $user */ protected $user; diff --git a/lib/private/files/view.php b/lib/private/files/view.php index 52be8a7e226..4421a016356 100644 --- a/lib/private/files/view.php +++ b/lib/private/files/view.php @@ -269,17 +269,21 @@ class View { // cut of /user/files to get the relative path to data/user/files $pathParts = explode('/', $path, 4); $relPath = '/' . $pathParts[3]; + $this->lockFile($relPath, ILockingProvider::LOCK_SHARED, true); \OC_Hook::emit( Filesystem::CLASSNAME, "umount", array(Filesystem::signal_param_path => $relPath) ); + $this->changeLock($relPath, ILockingProvider::LOCK_EXCLUSIVE, true); $result = $mount->removeMount(); + $this->changeLock($relPath, ILockingProvider::LOCK_SHARED, true); if ($result) { \OC_Hook::emit( Filesystem::CLASSNAME, "post_umount", array(Filesystem::signal_param_path => $relPath) ); } + $this->unlockFile($relPath, ILockingProvider::LOCK_SHARED, true); return $result; } else { // do not allow deleting the storage's root / the mount point diff --git a/lib/private/route/router.php b/lib/private/route/router.php index 03bee3d2037..ef02b5aba0e 100644 --- a/lib/private/route/router.php +++ b/lib/private/route/router.php @@ -95,9 +95,12 @@ class Router implements IRouter { if (!isset($this->routingFiles)) { $this->routingFiles = []; foreach (\OC_APP::getEnabledApps() as $app) { - $file = \OC_App::getAppPath($app) . '/appinfo/routes.php'; - if (file_exists($file)) { - $this->routingFiles[$app] = $file; + $appPath = \OC_App::getAppPath($app); + if($appPath !== false) { + $file = $appPath . '/appinfo/routes.php'; + if (file_exists($file)) { + $this->routingFiles[$app] = $file; + } } } } |