Completed
Push — master ( 80b21c...5129a7 )
by Joas
29:44 queued 15s
created
lib/private/User/Listeners/BeforeUserDeletedListener.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -57,7 +57,7 @@
 block discarded – undo
57 57
 			// no avatar to remove
58 58
 		} catch (\Exception $e) {
59 59
 			// Ignore exceptions
60
-			$this->logger->info('Could not cleanup avatar of ' . $user->getUID(), [
60
+			$this->logger->info('Could not cleanup avatar of '.$user->getUID(), [
61 61
 				'exception' => $e,
62 62
 			]);
63 63
 		}
Please login to merge, or discard this patch.
Indentation   +32 added lines, -32 removed lines patch added patch discarded remove patch
@@ -20,36 +20,36 @@
 block discarded – undo
20 20
  * @template-implements IEventListener<BeforeUserDeletedEvent>
21 21
  */
22 22
 class BeforeUserDeletedListener implements IEventListener {
23
-	private IAvatarManager $avatarManager;
24
-	private ICredentialsManager $credentialsManager;
25
-	private LoggerInterface $logger;
26
-
27
-	public function __construct(LoggerInterface $logger, IAvatarManager $avatarManager, ICredentialsManager $credentialsManager) {
28
-		$this->avatarManager = $avatarManager;
29
-		$this->credentialsManager = $credentialsManager;
30
-		$this->logger = $logger;
31
-	}
32
-
33
-	public function handle(Event $event): void {
34
-		if (!($event instanceof BeforeUserDeletedEvent)) {
35
-			return;
36
-		}
37
-
38
-		$user = $event->getUser();
39
-
40
-		// Delete avatar on user deletion
41
-		try {
42
-			$avatar = $this->avatarManager->getAvatar($user->getUID());
43
-			$avatar->remove(true);
44
-		} catch (NotFoundException $e) {
45
-			// no avatar to remove
46
-		} catch (\Exception $e) {
47
-			// Ignore exceptions
48
-			$this->logger->info('Could not cleanup avatar of ' . $user->getUID(), [
49
-				'exception' => $e,
50
-			]);
51
-		}
52
-		// Delete storages credentials on user deletion
53
-		$this->credentialsManager->erase($user->getUID());
54
-	}
23
+    private IAvatarManager $avatarManager;
24
+    private ICredentialsManager $credentialsManager;
25
+    private LoggerInterface $logger;
26
+
27
+    public function __construct(LoggerInterface $logger, IAvatarManager $avatarManager, ICredentialsManager $credentialsManager) {
28
+        $this->avatarManager = $avatarManager;
29
+        $this->credentialsManager = $credentialsManager;
30
+        $this->logger = $logger;
31
+    }
32
+
33
+    public function handle(Event $event): void {
34
+        if (!($event instanceof BeforeUserDeletedEvent)) {
35
+            return;
36
+        }
37
+
38
+        $user = $event->getUser();
39
+
40
+        // Delete avatar on user deletion
41
+        try {
42
+            $avatar = $this->avatarManager->getAvatar($user->getUID());
43
+            $avatar->remove(true);
44
+        } catch (NotFoundException $e) {
45
+            // no avatar to remove
46
+        } catch (\Exception $e) {
47
+            // Ignore exceptions
48
+            $this->logger->info('Could not cleanup avatar of ' . $user->getUID(), [
49
+                'exception' => $e,
50
+            ]);
51
+        }
52
+        // Delete storages credentials on user deletion
53
+        $this->credentialsManager->erase($user->getUID());
54
+    }
55 55
 }
Please login to merge, or discard this patch.
lib/private/TagManager.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -123,7 +123,7 @@
 block discarded – undo
123 123
 			return;
124 124
 		}
125 125
 
126
-		$tagsIds = array_map(fn (array $row) => (int)$row['id'], $result->fetchAll());
126
+		$tagsIds = array_map(fn (array $row) => (int) $row['id'], $result->fetchAll());
127 127
 		$result->closeCursor();
128 128
 
129 129
 		if (count($tagsIds) === 0) {
Please login to merge, or discard this patch.
Indentation   +98 added lines, -98 removed lines patch added patch discarded remove patch
@@ -25,113 +25,113 @@
 block discarded – undo
25 25
  */
26 26
 class TagManager implements ITagManager, IEventListener {
27 27
 
28
-	public function __construct(
29
-		private TagMapper $mapper,
30
-		private IUserSession $userSession,
31
-		private IDBConnection $connection,
32
-		private LoggerInterface $logger,
33
-		private IEventDispatcher $dispatcher,
34
-	) {
35
-	}
28
+    public function __construct(
29
+        private TagMapper $mapper,
30
+        private IUserSession $userSession,
31
+        private IDBConnection $connection,
32
+        private LoggerInterface $logger,
33
+        private IEventDispatcher $dispatcher,
34
+    ) {
35
+    }
36 36
 
37
-	/**
38
-	 * Create a new \OCP\ITags instance and load tags from db.
39
-	 *
40
-	 * @see \OCP\ITags
41
-	 * @param string $type The type identifier e.g. 'contact' or 'event'.
42
-	 * @param array $defaultTags An array of default tags to be used if none are stored.
43
-	 * @param boolean $includeShared Whether to include tags for items shared with this user by others.
44
-	 * @param string $userId user for which to retrieve the tags, defaults to the currently
45
-	 *                       logged in user
46
-	 * @return \OCP\ITags
47
-	 *
48
-	 * since 20.0.0 $includeShared isn't used anymore
49
-	 */
50
-	public function load($type, $defaultTags = [], $includeShared = false, $userId = null) {
51
-		if (is_null($userId)) {
52
-			$user = $this->userSession->getUser();
53
-			if ($user === null) {
54
-				// nothing we can do without a user
55
-				return null;
56
-			}
57
-			$userId = $this->userSession->getUser()->getUId();
58
-		}
59
-		return new Tags($this->mapper, $userId, $type, $this->logger, $this->connection, $this->dispatcher, $this->userSession, $defaultTags);
60
-	}
37
+    /**
38
+     * Create a new \OCP\ITags instance and load tags from db.
39
+     *
40
+     * @see \OCP\ITags
41
+     * @param string $type The type identifier e.g. 'contact' or 'event'.
42
+     * @param array $defaultTags An array of default tags to be used if none are stored.
43
+     * @param boolean $includeShared Whether to include tags for items shared with this user by others.
44
+     * @param string $userId user for which to retrieve the tags, defaults to the currently
45
+     *                       logged in user
46
+     * @return \OCP\ITags
47
+     *
48
+     * since 20.0.0 $includeShared isn't used anymore
49
+     */
50
+    public function load($type, $defaultTags = [], $includeShared = false, $userId = null) {
51
+        if (is_null($userId)) {
52
+            $user = $this->userSession->getUser();
53
+            if ($user === null) {
54
+                // nothing we can do without a user
55
+                return null;
56
+            }
57
+            $userId = $this->userSession->getUser()->getUId();
58
+        }
59
+        return new Tags($this->mapper, $userId, $type, $this->logger, $this->connection, $this->dispatcher, $this->userSession, $defaultTags);
60
+    }
61 61
 
62
-	/**
63
-	 * Get all users who favorited an object
64
-	 *
65
-	 * @param string $objectType
66
-	 * @param int $objectId
67
-	 * @return array
68
-	 */
69
-	public function getUsersFavoritingObject(string $objectType, int $objectId): array {
70
-		$query = $this->connection->getQueryBuilder();
71
-		$query->select('uid')
72
-			->from('vcategory_to_object', 'o')
73
-			->innerJoin('o', 'vcategory', 'c', $query->expr()->eq('o.categoryid', 'c.id'))
74
-			->where($query->expr()->eq('objid', $query->createNamedParameter($objectId, IQueryBuilder::PARAM_INT)))
75
-			->andWhere($query->expr()->eq('c.type', $query->createNamedParameter($objectType)))
76
-			->andWhere($query->expr()->eq('c.category', $query->createNamedParameter(ITags::TAG_FAVORITE)));
62
+    /**
63
+     * Get all users who favorited an object
64
+     *
65
+     * @param string $objectType
66
+     * @param int $objectId
67
+     * @return array
68
+     */
69
+    public function getUsersFavoritingObject(string $objectType, int $objectId): array {
70
+        $query = $this->connection->getQueryBuilder();
71
+        $query->select('uid')
72
+            ->from('vcategory_to_object', 'o')
73
+            ->innerJoin('o', 'vcategory', 'c', $query->expr()->eq('o.categoryid', 'c.id'))
74
+            ->where($query->expr()->eq('objid', $query->createNamedParameter($objectId, IQueryBuilder::PARAM_INT)))
75
+            ->andWhere($query->expr()->eq('c.type', $query->createNamedParameter($objectType)))
76
+            ->andWhere($query->expr()->eq('c.category', $query->createNamedParameter(ITags::TAG_FAVORITE)));
77 77
 
78
-		$result = $query->execute();
79
-		$users = $result->fetchAll(\PDO::FETCH_COLUMN);
80
-		$result->closeCursor();
78
+        $result = $query->execute();
79
+        $users = $result->fetchAll(\PDO::FETCH_COLUMN);
80
+        $result->closeCursor();
81 81
 
82
-		return $users;
83
-	}
82
+        return $users;
83
+    }
84 84
 
85
-	public function handle(Event $event): void {
86
-		if (!($event instanceof UserDeletedEvent)) {
87
-			return;
88
-		}
85
+    public function handle(Event $event): void {
86
+        if (!($event instanceof UserDeletedEvent)) {
87
+            return;
88
+        }
89 89
 
90
-		// Find all objectid/tagId pairs.
91
-		$user = $event->getUser();
92
-		$qb = $this->connection->getQueryBuilder();
93
-		$qb->select('id')
94
-			->from('vcategory')
95
-			->where($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())));
96
-		try {
97
-			$result = $qb->executeQuery();
98
-		} catch (DBException $e) {
99
-			$this->logger->error($e->getMessage(), [
100
-				'app' => 'core',
101
-				'exception' => $e,
102
-			]);
103
-			return;
104
-		}
90
+        // Find all objectid/tagId pairs.
91
+        $user = $event->getUser();
92
+        $qb = $this->connection->getQueryBuilder();
93
+        $qb->select('id')
94
+            ->from('vcategory')
95
+            ->where($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())));
96
+        try {
97
+            $result = $qb->executeQuery();
98
+        } catch (DBException $e) {
99
+            $this->logger->error($e->getMessage(), [
100
+                'app' => 'core',
101
+                'exception' => $e,
102
+            ]);
103
+            return;
104
+        }
105 105
 
106
-		$tagsIds = array_map(fn (array $row) => (int)$row['id'], $result->fetchAll());
107
-		$result->closeCursor();
106
+        $tagsIds = array_map(fn (array $row) => (int)$row['id'], $result->fetchAll());
107
+        $result->closeCursor();
108 108
 
109
-		if (count($tagsIds) === 0) {
110
-			return;
111
-		}
109
+        if (count($tagsIds) === 0) {
110
+            return;
111
+        }
112 112
 
113
-		// Clean vcategory_to_object table
114
-		$qb = $this->connection->getQueryBuilder();
115
-		$qb = $qb->delete('vcategory_to_object')
116
-			->where($qb->expr()->in('categoryid', $qb->createParameter('chunk')));
113
+        // Clean vcategory_to_object table
114
+        $qb = $this->connection->getQueryBuilder();
115
+        $qb = $qb->delete('vcategory_to_object')
116
+            ->where($qb->expr()->in('categoryid', $qb->createParameter('chunk')));
117 117
 
118
-		// Clean vcategory
119
-		$qb1 = $this->connection->getQueryBuilder();
120
-		$qb1 = $qb1->delete('vcategory')
121
-			->where($qb1->expr()->in('uid', $qb1->createParameter('chunk')));
118
+        // Clean vcategory
119
+        $qb1 = $this->connection->getQueryBuilder();
120
+        $qb1 = $qb1->delete('vcategory')
121
+            ->where($qb1->expr()->in('uid', $qb1->createParameter('chunk')));
122 122
 
123
-		foreach (array_chunk($tagsIds, 1000) as $tagChunk) {
124
-			$qb->setParameter('chunk', $tagChunk, IQueryBuilder::PARAM_INT_ARRAY);
125
-			$qb1->setParameter('chunk', $tagChunk, IQueryBuilder::PARAM_INT_ARRAY);
126
-			try {
127
-				$qb->executeStatement();
128
-				$qb1->executeStatement();
129
-			} catch (DBException $e) {
130
-				$this->logger->error($e->getMessage(), [
131
-					'app' => 'core',
132
-					'exception' => $e,
133
-				]);
134
-			}
135
-		}
136
-	}
123
+        foreach (array_chunk($tagsIds, 1000) as $tagChunk) {
124
+            $qb->setParameter('chunk', $tagChunk, IQueryBuilder::PARAM_INT_ARRAY);
125
+            $qb1->setParameter('chunk', $tagChunk, IQueryBuilder::PARAM_INT_ARRAY);
126
+            try {
127
+                $qb->executeStatement();
128
+                $qb1->executeStatement();
129
+            } catch (DBException $e) {
130
+                $this->logger->error($e->getMessage(), [
131
+                    'app' => 'core',
132
+                    'exception' => $e,
133
+                ]);
134
+            }
135
+        }
136
+    }
137 137
 }
Please login to merge, or discard this patch.
apps/files/lib/Controller/OpenLocalEditorController.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -100,7 +100,7 @@
 block discarded – undo
100 100
 			}
101 101
 		}
102 102
 
103
-		$this->logger->error('Giving up after ' . self::TOKEN_RETRIES . ' retries to generate a unique local editor token for path hash: ' . $pathHash);
103
+		$this->logger->error('Giving up after '.self::TOKEN_RETRIES.' retries to generate a unique local editor token for path hash: '.$pathHash);
104 104
 		return new DataResponse([], Http::STATUS_INTERNAL_SERVER_ERROR);
105 105
 	}
106 106
 
Please login to merge, or discard this patch.
Indentation   +99 added lines, -99 removed lines patch added patch discarded remove patch
@@ -25,104 +25,104 @@
 block discarded – undo
25 25
 use Psr\Log\LoggerInterface;
26 26
 
27 27
 class OpenLocalEditorController extends OCSController {
28
-	public const TOKEN_LENGTH = 128;
29
-	public const TOKEN_DURATION = 600; // 10 Minutes
30
-	public const TOKEN_RETRIES = 50;
31
-
32
-	public function __construct(
33
-		string $appName,
34
-		IRequest $request,
35
-		protected ITimeFactory $timeFactory,
36
-		protected OpenLocalEditorMapper $mapper,
37
-		protected ISecureRandom $secureRandom,
38
-		protected LoggerInterface $logger,
39
-		protected ?string $userId,
40
-	) {
41
-		parent::__construct($appName, $request);
42
-	}
43
-
44
-	/**
45
-	 * Create a local editor
46
-	 *
47
-	 * @param string $path Path of the file
48
-	 *
49
-	 * @return DataResponse<Http::STATUS_OK, array{userId: ?string, pathHash: string, expirationTime: int, token: string}, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, list<empty>, array{}>
50
-	 *
51
-	 * 200: Local editor returned
52
-	 */
53
-	#[NoAdminRequired]
54
-	#[UserRateLimit(limit: 10, period: 120)]
55
-	public function create(string $path): DataResponse {
56
-		$pathHash = sha1($path);
57
-
58
-		$entity = new OpenLocalEditor();
59
-		$entity->setUserId($this->userId);
60
-		$entity->setPathHash($pathHash);
61
-		$entity->setExpirationTime($this->timeFactory->getTime() + self::TOKEN_DURATION); // Expire in 10 minutes
62
-
63
-		for ($i = 1; $i <= self::TOKEN_RETRIES; $i++) {
64
-			$token = $this->secureRandom->generate(self::TOKEN_LENGTH, ISecureRandom::CHAR_ALPHANUMERIC);
65
-			$entity->setToken($token);
66
-
67
-			try {
68
-				$this->mapper->insert($entity);
69
-
70
-				return new DataResponse([
71
-					'userId' => $this->userId,
72
-					'pathHash' => $pathHash,
73
-					'expirationTime' => $entity->getExpirationTime(),
74
-					'token' => $entity->getToken(),
75
-				]);
76
-			} catch (Exception $e) {
77
-				if ($e->getCode() !== Exception::REASON_UNIQUE_CONSTRAINT_VIOLATION) {
78
-					// Only retry on unique constraint violation
79
-					throw $e;
80
-				}
81
-			}
82
-		}
83
-
84
-		$this->logger->error('Giving up after ' . self::TOKEN_RETRIES . ' retries to generate a unique local editor token for path hash: ' . $pathHash);
85
-		return new DataResponse([], Http::STATUS_INTERNAL_SERVER_ERROR);
86
-	}
87
-
88
-	/**
89
-	 * Validate a local editor
90
-	 *
91
-	 * @param string $path Path of the file
92
-	 * @param string $token Token of the local editor
93
-	 *
94
-	 * @return DataResponse<Http::STATUS_OK, array{userId: string, pathHash: string, expirationTime: int, token: string}, array{}>|DataResponse<Http::STATUS_NOT_FOUND, list<empty>, array{}>
95
-	 *
96
-	 * 200: Local editor validated successfully
97
-	 * 404: Local editor not found
98
-	 */
99
-	#[NoAdminRequired]
100
-	#[BruteForceProtection(action: 'openLocalEditor')]
101
-	public function validate(string $path, string $token): DataResponse {
102
-		$pathHash = sha1($path);
103
-
104
-		try {
105
-			$entity = $this->mapper->verifyToken($this->userId, $pathHash, $token);
106
-		} catch (DoesNotExistException $e) {
107
-			$response = new DataResponse([], Http::STATUS_NOT_FOUND);
108
-			$response->throttle(['userId' => $this->userId, 'pathHash' => $pathHash]);
109
-			return $response;
110
-		}
111
-
112
-		$this->mapper->delete($entity);
113
-
114
-		if ($entity->getExpirationTime() <= $this->timeFactory->getTime()) {
115
-			$response = new DataResponse([], Http::STATUS_NOT_FOUND);
116
-			$response->throttle(['userId' => $this->userId, 'pathHash' => $pathHash]);
117
-			return $response;
118
-		}
119
-
120
-		return new DataResponse([
121
-			'userId' => $this->userId,
122
-			'pathHash' => $pathHash,
123
-			'expirationTime' => $entity->getExpirationTime(),
124
-			'token' => $entity->getToken(),
125
-		]);
126
-	}
28
+    public const TOKEN_LENGTH = 128;
29
+    public const TOKEN_DURATION = 600; // 10 Minutes
30
+    public const TOKEN_RETRIES = 50;
31
+
32
+    public function __construct(
33
+        string $appName,
34
+        IRequest $request,
35
+        protected ITimeFactory $timeFactory,
36
+        protected OpenLocalEditorMapper $mapper,
37
+        protected ISecureRandom $secureRandom,
38
+        protected LoggerInterface $logger,
39
+        protected ?string $userId,
40
+    ) {
41
+        parent::__construct($appName, $request);
42
+    }
43
+
44
+    /**
45
+     * Create a local editor
46
+     *
47
+     * @param string $path Path of the file
48
+     *
49
+     * @return DataResponse<Http::STATUS_OK, array{userId: ?string, pathHash: string, expirationTime: int, token: string}, array{}>|DataResponse<Http::STATUS_INTERNAL_SERVER_ERROR, list<empty>, array{}>
50
+     *
51
+     * 200: Local editor returned
52
+     */
53
+    #[NoAdminRequired]
54
+    #[UserRateLimit(limit: 10, period: 120)]
55
+    public function create(string $path): DataResponse {
56
+        $pathHash = sha1($path);
57
+
58
+        $entity = new OpenLocalEditor();
59
+        $entity->setUserId($this->userId);
60
+        $entity->setPathHash($pathHash);
61
+        $entity->setExpirationTime($this->timeFactory->getTime() + self::TOKEN_DURATION); // Expire in 10 minutes
62
+
63
+        for ($i = 1; $i <= self::TOKEN_RETRIES; $i++) {
64
+            $token = $this->secureRandom->generate(self::TOKEN_LENGTH, ISecureRandom::CHAR_ALPHANUMERIC);
65
+            $entity->setToken($token);
66
+
67
+            try {
68
+                $this->mapper->insert($entity);
69
+
70
+                return new DataResponse([
71
+                    'userId' => $this->userId,
72
+                    'pathHash' => $pathHash,
73
+                    'expirationTime' => $entity->getExpirationTime(),
74
+                    'token' => $entity->getToken(),
75
+                ]);
76
+            } catch (Exception $e) {
77
+                if ($e->getCode() !== Exception::REASON_UNIQUE_CONSTRAINT_VIOLATION) {
78
+                    // Only retry on unique constraint violation
79
+                    throw $e;
80
+                }
81
+            }
82
+        }
83
+
84
+        $this->logger->error('Giving up after ' . self::TOKEN_RETRIES . ' retries to generate a unique local editor token for path hash: ' . $pathHash);
85
+        return new DataResponse([], Http::STATUS_INTERNAL_SERVER_ERROR);
86
+    }
87
+
88
+    /**
89
+     * Validate a local editor
90
+     *
91
+     * @param string $path Path of the file
92
+     * @param string $token Token of the local editor
93
+     *
94
+     * @return DataResponse<Http::STATUS_OK, array{userId: string, pathHash: string, expirationTime: int, token: string}, array{}>|DataResponse<Http::STATUS_NOT_FOUND, list<empty>, array{}>
95
+     *
96
+     * 200: Local editor validated successfully
97
+     * 404: Local editor not found
98
+     */
99
+    #[NoAdminRequired]
100
+    #[BruteForceProtection(action: 'openLocalEditor')]
101
+    public function validate(string $path, string $token): DataResponse {
102
+        $pathHash = sha1($path);
103
+
104
+        try {
105
+            $entity = $this->mapper->verifyToken($this->userId, $pathHash, $token);
106
+        } catch (DoesNotExistException $e) {
107
+            $response = new DataResponse([], Http::STATUS_NOT_FOUND);
108
+            $response->throttle(['userId' => $this->userId, 'pathHash' => $pathHash]);
109
+            return $response;
110
+        }
111
+
112
+        $this->mapper->delete($entity);
113
+
114
+        if ($entity->getExpirationTime() <= $this->timeFactory->getTime()) {
115
+            $response = new DataResponse([], Http::STATUS_NOT_FOUND);
116
+            $response->throttle(['userId' => $this->userId, 'pathHash' => $pathHash]);
117
+            return $response;
118
+        }
119
+
120
+        return new DataResponse([
121
+            'userId' => $this->userId,
122
+            'pathHash' => $pathHash,
123
+            'expirationTime' => $entity->getExpirationTime(),
124
+            'token' => $entity->getToken(),
125
+        ]);
126
+    }
127 127
 
128 128
 }
Please login to merge, or discard this patch.
apps/files/lib/Db/OpenLocalEditor.php 1 patch
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -39,22 +39,22 @@
 block discarded – undo
39 39
  * @method string getToken()
40 40
  */
41 41
 class OpenLocalEditor extends Entity {
42
-	/** @var string */
43
-	protected $userId;
42
+    /** @var string */
43
+    protected $userId;
44 44
 
45
-	/** @var string */
46
-	protected $pathHash;
45
+    /** @var string */
46
+    protected $pathHash;
47 47
 
48
-	/** @var int */
49
-	protected $expirationTime;
48
+    /** @var int */
49
+    protected $expirationTime;
50 50
 
51
-	/** @var string */
52
-	protected $token;
51
+    /** @var string */
52
+    protected $token;
53 53
 
54
-	public function __construct() {
55
-		$this->addType('userId', 'string');
56
-		$this->addType('pathHash', 'string');
57
-		$this->addType('expirationTime', 'integer');
58
-		$this->addType('token', 'string');
59
-	}
54
+    public function __construct() {
55
+        $this->addType('userId', 'string');
56
+        $this->addType('pathHash', 'string');
57
+        $this->addType('expirationTime', 'integer');
58
+        $this->addType('token', 'string');
59
+    }
60 60
 }
Please login to merge, or discard this patch.
apps/user_status/lib/Db/UserStatusMapper.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -83,7 +83,7 @@  discard block
 block discarded – undo
83 83
 					$qb->expr()->isNotNull('custom_icon'),
84 84
 					$qb->expr()->isNotNull('custom_message'),
85 85
 				),
86
-				$qb->expr()->notLike('user_id', $qb->createNamedParameter($this->db->escapeLikeParameter('_') . '%'))
86
+				$qb->expr()->notLike('user_id', $qb->createNamedParameter($this->db->escapeLikeParameter('_').'%'))
87 87
 			));
88 88
 
89 89
 		if ($limit !== null) {
@@ -106,7 +106,7 @@  discard block
 block discarded – undo
106 106
 		$qb
107 107
 			->select('*')
108 108
 			->from($this->tableName)
109
-			->where($qb->expr()->eq('user_id', $qb->createNamedParameter($isBackup ? '_' . $userId : $userId, IQueryBuilder::PARAM_STR)));
109
+			->where($qb->expr()->eq('user_id', $qb->createNamedParameter($isBackup ? '_'.$userId : $userId, IQueryBuilder::PARAM_STR)));
110 110
 
111 111
 		return $this->findEntity($qb);
112 112
 	}
@@ -195,7 +195,7 @@  discard block
 block discarded – undo
195 195
 		$qb = $this->db->getQueryBuilder();
196 196
 		$qb->update($this->tableName)
197 197
 			->set('is_backup', $qb->createNamedParameter(true, IQueryBuilder::PARAM_BOOL))
198
-			->set('user_id', $qb->createNamedParameter('_' . $userId))
198
+			->set('user_id', $qb->createNamedParameter('_'.$userId))
199 199
 			->where($qb->expr()->eq('user_id', $qb->createNamedParameter($userId)));
200 200
 		return $qb->executeStatement() > 0;
201 201
 	}
Please login to merge, or discard this patch.
Indentation   +174 added lines, -174 removed lines patch added patch discarded remove patch
@@ -20,178 +20,178 @@
 block discarded – undo
20 20
  */
21 21
 class UserStatusMapper extends QBMapper {
22 22
 
23
-	/**
24
-	 * @param IDBConnection $db
25
-	 */
26
-	public function __construct(IDBConnection $db) {
27
-		parent::__construct($db, 'user_status');
28
-	}
29
-
30
-	/**
31
-	 * @param int|null $limit
32
-	 * @param int|null $offset
33
-	 * @return UserStatus[]
34
-	 */
35
-	public function findAll(?int $limit = null, ?int $offset = null):array {
36
-		$qb = $this->db->getQueryBuilder();
37
-		$qb
38
-			->select('*')
39
-			->from($this->tableName);
40
-
41
-		if ($limit !== null) {
42
-			$qb->setMaxResults($limit);
43
-		}
44
-		if ($offset !== null) {
45
-			$qb->setFirstResult($offset);
46
-		}
47
-
48
-		return $this->findEntities($qb);
49
-	}
50
-
51
-	/**
52
-	 * @param int|null $limit
53
-	 * @param int|null $offset
54
-	 * @return array
55
-	 */
56
-	public function findAllRecent(?int $limit = null, ?int $offset = null): array {
57
-		$qb = $this->db->getQueryBuilder();
58
-
59
-		$qb
60
-			->select('*')
61
-			->from($this->tableName)
62
-			->orderBy('status_message_timestamp', 'DESC')
63
-			->where($qb->expr()->andX(
64
-				$qb->expr()->neq('status_message_timestamp', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT), IQueryBuilder::PARAM_INT),
65
-				$qb->expr()->orX(
66
-					$qb->expr()->notIn('status', $qb->createNamedParameter([IUserStatus::ONLINE, IUserStatus::AWAY, IUserStatus::OFFLINE], IQueryBuilder::PARAM_STR_ARRAY)),
67
-					$qb->expr()->isNotNull('message_id'),
68
-					$qb->expr()->isNotNull('custom_icon'),
69
-					$qb->expr()->isNotNull('custom_message'),
70
-				),
71
-				$qb->expr()->notLike('user_id', $qb->createNamedParameter($this->db->escapeLikeParameter('_') . '%'))
72
-			));
73
-
74
-		if ($limit !== null) {
75
-			$qb->setMaxResults($limit);
76
-		}
77
-		if ($offset !== null) {
78
-			$qb->setFirstResult($offset);
79
-		}
80
-
81
-		return $this->findEntities($qb);
82
-	}
83
-
84
-	/**
85
-	 * @param string $userId
86
-	 * @return UserStatus
87
-	 * @throws DoesNotExistException
88
-	 */
89
-	public function findByUserId(string $userId, bool $isBackup = false): UserStatus {
90
-		$qb = $this->db->getQueryBuilder();
91
-		$qb
92
-			->select('*')
93
-			->from($this->tableName)
94
-			->where($qb->expr()->eq('user_id', $qb->createNamedParameter($isBackup ? '_' . $userId : $userId, IQueryBuilder::PARAM_STR)));
95
-
96
-		return $this->findEntity($qb);
97
-	}
98
-
99
-	/**
100
-	 * @param array $userIds
101
-	 * @return array
102
-	 */
103
-	public function findByUserIds(array $userIds): array {
104
-		$qb = $this->db->getQueryBuilder();
105
-		$qb
106
-			->select('*')
107
-			->from($this->tableName)
108
-			->where($qb->expr()->in('user_id', $qb->createNamedParameter($userIds, IQueryBuilder::PARAM_STR_ARRAY)));
109
-
110
-		return $this->findEntities($qb);
111
-	}
112
-
113
-	/**
114
-	 * @param int $olderThan
115
-	 * @param int $now
116
-	 */
117
-	public function clearStatusesOlderThan(int $olderThan, int $now): void {
118
-		$qb = $this->db->getQueryBuilder();
119
-		$qb->update($this->tableName)
120
-			->set('status', $qb->createNamedParameter(IUserStatus::OFFLINE))
121
-			->set('is_user_defined', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))
122
-			->set('status_timestamp', $qb->createNamedParameter($now, IQueryBuilder::PARAM_INT))
123
-			->where($qb->expr()->lte('status_timestamp', $qb->createNamedParameter($olderThan, IQueryBuilder::PARAM_INT)))
124
-			->andWhere($qb->expr()->neq('status', $qb->createNamedParameter(IUserStatus::OFFLINE)))
125
-			->andWhere($qb->expr()->orX(
126
-				$qb->expr()->eq('is_user_defined', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL), IQueryBuilder::PARAM_BOOL),
127
-				$qb->expr()->eq('status', $qb->createNamedParameter(IUserStatus::ONLINE))
128
-			));
129
-
130
-		$qb->executeStatement();
131
-	}
132
-
133
-	/**
134
-	 * Clear all statuses older than a given timestamp
135
-	 *
136
-	 * @param int $timestamp
137
-	 */
138
-	public function clearOlderThanClearAt(int $timestamp): void {
139
-		$qb = $this->db->getQueryBuilder();
140
-		$qb->delete($this->tableName)
141
-			->where($qb->expr()->isNotNull('clear_at'))
142
-			->andWhere($qb->expr()->lte('clear_at', $qb->createNamedParameter($timestamp, IQueryBuilder::PARAM_INT)));
143
-
144
-		$qb->executeStatement();
145
-	}
146
-
147
-
148
-	/**
149
-	 * Deletes a user status so we can restore the backup
150
-	 *
151
-	 * @param string $userId
152
-	 * @param string $messageId
153
-	 * @return bool True if an entry was deleted
154
-	 */
155
-	public function deleteCurrentStatusToRestoreBackup(string $userId, string $messageId): bool {
156
-		$qb = $this->db->getQueryBuilder();
157
-		$qb->delete($this->tableName)
158
-			->where($qb->expr()->eq('user_id', $qb->createNamedParameter($userId)))
159
-			->andWhere($qb->expr()->eq('message_id', $qb->createNamedParameter($messageId)))
160
-			->andWhere($qb->expr()->eq('is_backup', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)));
161
-		return $qb->executeStatement() > 0;
162
-	}
163
-
164
-	public function deleteByIds(array $ids): void {
165
-		$qb = $this->db->getQueryBuilder();
166
-		$qb->delete($this->tableName)
167
-			->where($qb->expr()->in('id', $qb->createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)));
168
-		$qb->executeStatement();
169
-	}
170
-
171
-	/**
172
-	 * @param string $userId
173
-	 * @return bool
174
-	 * @throws \OCP\DB\Exception
175
-	 */
176
-	public function createBackupStatus(string $userId): bool {
177
-		// Prefix user account with an underscore because user_id is marked as unique
178
-		// in the table. Starting a username with an underscore is not allowed so this
179
-		// shouldn't create any trouble.
180
-		$qb = $this->db->getQueryBuilder();
181
-		$qb->update($this->tableName)
182
-			->set('is_backup', $qb->createNamedParameter(true, IQueryBuilder::PARAM_BOOL))
183
-			->set('user_id', $qb->createNamedParameter('_' . $userId))
184
-			->where($qb->expr()->eq('user_id', $qb->createNamedParameter($userId)));
185
-		return $qb->executeStatement() > 0;
186
-	}
187
-
188
-	public function restoreBackupStatuses(array $ids): void {
189
-		$qb = $this->db->getQueryBuilder();
190
-		$qb->update($this->tableName)
191
-			->set('is_backup', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))
192
-			->set('user_id', $qb->func()->substring('user_id', $qb->createNamedParameter(2, IQueryBuilder::PARAM_INT)))
193
-			->where($qb->expr()->in('id', $qb->createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)));
194
-
195
-		$qb->executeStatement();
196
-	}
23
+    /**
24
+     * @param IDBConnection $db
25
+     */
26
+    public function __construct(IDBConnection $db) {
27
+        parent::__construct($db, 'user_status');
28
+    }
29
+
30
+    /**
31
+     * @param int|null $limit
32
+     * @param int|null $offset
33
+     * @return UserStatus[]
34
+     */
35
+    public function findAll(?int $limit = null, ?int $offset = null):array {
36
+        $qb = $this->db->getQueryBuilder();
37
+        $qb
38
+            ->select('*')
39
+            ->from($this->tableName);
40
+
41
+        if ($limit !== null) {
42
+            $qb->setMaxResults($limit);
43
+        }
44
+        if ($offset !== null) {
45
+            $qb->setFirstResult($offset);
46
+        }
47
+
48
+        return $this->findEntities($qb);
49
+    }
50
+
51
+    /**
52
+     * @param int|null $limit
53
+     * @param int|null $offset
54
+     * @return array
55
+     */
56
+    public function findAllRecent(?int $limit = null, ?int $offset = null): array {
57
+        $qb = $this->db->getQueryBuilder();
58
+
59
+        $qb
60
+            ->select('*')
61
+            ->from($this->tableName)
62
+            ->orderBy('status_message_timestamp', 'DESC')
63
+            ->where($qb->expr()->andX(
64
+                $qb->expr()->neq('status_message_timestamp', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT), IQueryBuilder::PARAM_INT),
65
+                $qb->expr()->orX(
66
+                    $qb->expr()->notIn('status', $qb->createNamedParameter([IUserStatus::ONLINE, IUserStatus::AWAY, IUserStatus::OFFLINE], IQueryBuilder::PARAM_STR_ARRAY)),
67
+                    $qb->expr()->isNotNull('message_id'),
68
+                    $qb->expr()->isNotNull('custom_icon'),
69
+                    $qb->expr()->isNotNull('custom_message'),
70
+                ),
71
+                $qb->expr()->notLike('user_id', $qb->createNamedParameter($this->db->escapeLikeParameter('_') . '%'))
72
+            ));
73
+
74
+        if ($limit !== null) {
75
+            $qb->setMaxResults($limit);
76
+        }
77
+        if ($offset !== null) {
78
+            $qb->setFirstResult($offset);
79
+        }
80
+
81
+        return $this->findEntities($qb);
82
+    }
83
+
84
+    /**
85
+     * @param string $userId
86
+     * @return UserStatus
87
+     * @throws DoesNotExistException
88
+     */
89
+    public function findByUserId(string $userId, bool $isBackup = false): UserStatus {
90
+        $qb = $this->db->getQueryBuilder();
91
+        $qb
92
+            ->select('*')
93
+            ->from($this->tableName)
94
+            ->where($qb->expr()->eq('user_id', $qb->createNamedParameter($isBackup ? '_' . $userId : $userId, IQueryBuilder::PARAM_STR)));
95
+
96
+        return $this->findEntity($qb);
97
+    }
98
+
99
+    /**
100
+     * @param array $userIds
101
+     * @return array
102
+     */
103
+    public function findByUserIds(array $userIds): array {
104
+        $qb = $this->db->getQueryBuilder();
105
+        $qb
106
+            ->select('*')
107
+            ->from($this->tableName)
108
+            ->where($qb->expr()->in('user_id', $qb->createNamedParameter($userIds, IQueryBuilder::PARAM_STR_ARRAY)));
109
+
110
+        return $this->findEntities($qb);
111
+    }
112
+
113
+    /**
114
+     * @param int $olderThan
115
+     * @param int $now
116
+     */
117
+    public function clearStatusesOlderThan(int $olderThan, int $now): void {
118
+        $qb = $this->db->getQueryBuilder();
119
+        $qb->update($this->tableName)
120
+            ->set('status', $qb->createNamedParameter(IUserStatus::OFFLINE))
121
+            ->set('is_user_defined', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))
122
+            ->set('status_timestamp', $qb->createNamedParameter($now, IQueryBuilder::PARAM_INT))
123
+            ->where($qb->expr()->lte('status_timestamp', $qb->createNamedParameter($olderThan, IQueryBuilder::PARAM_INT)))
124
+            ->andWhere($qb->expr()->neq('status', $qb->createNamedParameter(IUserStatus::OFFLINE)))
125
+            ->andWhere($qb->expr()->orX(
126
+                $qb->expr()->eq('is_user_defined', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL), IQueryBuilder::PARAM_BOOL),
127
+                $qb->expr()->eq('status', $qb->createNamedParameter(IUserStatus::ONLINE))
128
+            ));
129
+
130
+        $qb->executeStatement();
131
+    }
132
+
133
+    /**
134
+     * Clear all statuses older than a given timestamp
135
+     *
136
+     * @param int $timestamp
137
+     */
138
+    public function clearOlderThanClearAt(int $timestamp): void {
139
+        $qb = $this->db->getQueryBuilder();
140
+        $qb->delete($this->tableName)
141
+            ->where($qb->expr()->isNotNull('clear_at'))
142
+            ->andWhere($qb->expr()->lte('clear_at', $qb->createNamedParameter($timestamp, IQueryBuilder::PARAM_INT)));
143
+
144
+        $qb->executeStatement();
145
+    }
146
+
147
+
148
+    /**
149
+     * Deletes a user status so we can restore the backup
150
+     *
151
+     * @param string $userId
152
+     * @param string $messageId
153
+     * @return bool True if an entry was deleted
154
+     */
155
+    public function deleteCurrentStatusToRestoreBackup(string $userId, string $messageId): bool {
156
+        $qb = $this->db->getQueryBuilder();
157
+        $qb->delete($this->tableName)
158
+            ->where($qb->expr()->eq('user_id', $qb->createNamedParameter($userId)))
159
+            ->andWhere($qb->expr()->eq('message_id', $qb->createNamedParameter($messageId)))
160
+            ->andWhere($qb->expr()->eq('is_backup', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)));
161
+        return $qb->executeStatement() > 0;
162
+    }
163
+
164
+    public function deleteByIds(array $ids): void {
165
+        $qb = $this->db->getQueryBuilder();
166
+        $qb->delete($this->tableName)
167
+            ->where($qb->expr()->in('id', $qb->createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)));
168
+        $qb->executeStatement();
169
+    }
170
+
171
+    /**
172
+     * @param string $userId
173
+     * @return bool
174
+     * @throws \OCP\DB\Exception
175
+     */
176
+    public function createBackupStatus(string $userId): bool {
177
+        // Prefix user account with an underscore because user_id is marked as unique
178
+        // in the table. Starting a username with an underscore is not allowed so this
179
+        // shouldn't create any trouble.
180
+        $qb = $this->db->getQueryBuilder();
181
+        $qb->update($this->tableName)
182
+            ->set('is_backup', $qb->createNamedParameter(true, IQueryBuilder::PARAM_BOOL))
183
+            ->set('user_id', $qb->createNamedParameter('_' . $userId))
184
+            ->where($qb->expr()->eq('user_id', $qb->createNamedParameter($userId)));
185
+        return $qb->executeStatement() > 0;
186
+    }
187
+
188
+    public function restoreBackupStatuses(array $ids): void {
189
+        $qb = $this->db->getQueryBuilder();
190
+        $qb->update($this->tableName)
191
+            ->set('is_backup', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))
192
+            ->set('user_id', $qb->func()->substring('user_id', $qb->createNamedParameter(2, IQueryBuilder::PARAM_INT)))
193
+            ->where($qb->expr()->in('id', $qb->createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)));
194
+
195
+        $qb->executeStatement();
196
+    }
197 197
 }
Please login to merge, or discard this patch.
lib/public/Files/SimpleFS/ISimpleFolder.php 1 patch
Indentation   +58 added lines, -58 removed lines patch added patch discarded remove patch
@@ -32,69 +32,69 @@
 block discarded – undo
32 32
  * @since 11.0.0
33 33
  */
34 34
 interface ISimpleFolder {
35
-	/**
36
-	 * Get all the files in a folder
37
-	 *
38
-	 * @return ISimpleFile[]
39
-	 * @since 11.0.0
40
-	 */
41
-	public function getDirectoryListing(): array;
35
+    /**
36
+     * Get all the files in a folder
37
+     *
38
+     * @return ISimpleFile[]
39
+     * @since 11.0.0
40
+     */
41
+    public function getDirectoryListing(): array;
42 42
 
43
-	/**
44
-	 * Check if a file with $name exists
45
-	 *
46
-	 * @param string $name
47
-	 * @return bool
48
-	 * @since 11.0.0
49
-	 */
50
-	public function fileExists(string $name): bool;
43
+    /**
44
+     * Check if a file with $name exists
45
+     *
46
+     * @param string $name
47
+     * @return bool
48
+     * @since 11.0.0
49
+     */
50
+    public function fileExists(string $name): bool;
51 51
 
52
-	/**
53
-	 * Get the file named $name from the folder
54
-	 *
55
-	 * @throws NotFoundException
56
-	 * @since 11.0.0
57
-	 */
58
-	public function getFile(string $name): ISimpleFile;
52
+    /**
53
+     * Get the file named $name from the folder
54
+     *
55
+     * @throws NotFoundException
56
+     * @since 11.0.0
57
+     */
58
+    public function getFile(string $name): ISimpleFile;
59 59
 
60
-	/**
61
-	 * Creates a new file with $name in the folder
62
-	 *
63
-	 * @param string|resource|null $content @since 19.0.0
64
-	 * @throws NotPermittedException
65
-	 * @since 11.0.0
66
-	 */
67
-	public function newFile(string $name, $content = null): ISimpleFile;
60
+    /**
61
+     * Creates a new file with $name in the folder
62
+     *
63
+     * @param string|resource|null $content @since 19.0.0
64
+     * @throws NotPermittedException
65
+     * @since 11.0.0
66
+     */
67
+    public function newFile(string $name, $content = null): ISimpleFile;
68 68
 
69
-	/**
70
-	 * Remove the folder and all the files in it
71
-	 *
72
-	 * @throws NotPermittedException
73
-	 * @since 11.0.0
74
-	 */
75
-	public function delete(): void;
69
+    /**
70
+     * Remove the folder and all the files in it
71
+     *
72
+     * @throws NotPermittedException
73
+     * @since 11.0.0
74
+     */
75
+    public function delete(): void;
76 76
 
77
-	/**
78
-	 * Get the folder name
79
-	 *
80
-	 * @since 11.0.0
81
-	 */
82
-	public function getName(): string;
77
+    /**
78
+     * Get the folder name
79
+     *
80
+     * @since 11.0.0
81
+     */
82
+    public function getName(): string;
83 83
 
84
-	/**
85
-	 * Get the folder named $name from the current folder
86
-	 *
87
-	 * @throws NotFoundException
88
-	 * @since 25.0.0
89
-	 */
90
-	public function getFolder(string $name): ISimpleFolder;
84
+    /**
85
+     * Get the folder named $name from the current folder
86
+     *
87
+     * @throws NotFoundException
88
+     * @since 25.0.0
89
+     */
90
+    public function getFolder(string $name): ISimpleFolder;
91 91
 
92
-	/**
93
-	 * Creates a new folder with $name in the current folder
94
-	 *
95
-	 * @param string|resource|null $content @since 19.0.0
96
-	 * @throws NotPermittedException
97
-	 * @since 25.0.0
98
-	 */
99
-	public function newFolder(string $path): ISimpleFolder;
92
+    /**
93
+     * Creates a new folder with $name in the current folder
94
+     *
95
+     * @param string|resource|null $content @since 19.0.0
96
+     * @throws NotPermittedException
97
+     * @since 25.0.0
98
+     */
99
+    public function newFolder(string $path): ISimpleFolder;
100 100
 }
Please login to merge, or discard this patch.
apps/dav/lib/Connector/Sabre/FakeLockerPlugin.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -89,10 +89,10 @@
 block discarded – undo
89 89
 	 * @return void
90 90
 	 */
91 91
 	public function propFind(PropFind $propFind, INode $node) {
92
-		$propFind->handle('{DAV:}supportedlock', function () {
92
+		$propFind->handle('{DAV:}supportedlock', function() {
93 93
 			return new SupportedLock();
94 94
 		});
95
-		$propFind->handle('{DAV:}lockdiscovery', function () use ($propFind) {
95
+		$propFind->handle('{DAV:}lockdiscovery', function() use ($propFind) {
96 96
 			return new LockDiscovery([]);
97 97
 		});
98 98
 	}
Please login to merge, or discard this patch.
Indentation   +99 added lines, -99 removed lines patch added patch discarded remove patch
@@ -31,113 +31,113 @@
 block discarded – undo
31 31
  * @package OCA\DAV\Connector\Sabre
32 32
  */
33 33
 class FakeLockerPlugin extends ServerPlugin {
34
-	/** @var Server */
35
-	private $server;
34
+    /** @var Server */
35
+    private $server;
36 36
 
37
-	/** {@inheritDoc} */
38
-	public function initialize(Server $server) {
39
-		$this->server = $server;
40
-		$this->server->on('method:LOCK', [$this, 'fakeLockProvider'], 1);
41
-		$this->server->on('method:UNLOCK', [$this, 'fakeUnlockProvider'], 1);
42
-		$server->on('propFind', [$this, 'propFind']);
43
-		$server->on('validateTokens', [$this, 'validateTokens']);
44
-	}
37
+    /** {@inheritDoc} */
38
+    public function initialize(Server $server) {
39
+        $this->server = $server;
40
+        $this->server->on('method:LOCK', [$this, 'fakeLockProvider'], 1);
41
+        $this->server->on('method:UNLOCK', [$this, 'fakeUnlockProvider'], 1);
42
+        $server->on('propFind', [$this, 'propFind']);
43
+        $server->on('validateTokens', [$this, 'validateTokens']);
44
+    }
45 45
 
46
-	/**
47
-	 * Indicate that we support LOCK and UNLOCK
48
-	 *
49
-	 * @param string $path
50
-	 * @return string[]
51
-	 */
52
-	public function getHTTPMethods($path) {
53
-		return [
54
-			'LOCK',
55
-			'UNLOCK',
56
-		];
57
-	}
46
+    /**
47
+     * Indicate that we support LOCK and UNLOCK
48
+     *
49
+     * @param string $path
50
+     * @return string[]
51
+     */
52
+    public function getHTTPMethods($path) {
53
+        return [
54
+            'LOCK',
55
+            'UNLOCK',
56
+        ];
57
+    }
58 58
 
59
-	/**
60
-	 * Indicate that we support locking
61
-	 *
62
-	 * @return integer[]
63
-	 */
64
-	public function getFeatures() {
65
-		return [2];
66
-	}
59
+    /**
60
+     * Indicate that we support locking
61
+     *
62
+     * @return integer[]
63
+     */
64
+    public function getFeatures() {
65
+        return [2];
66
+    }
67 67
 
68
-	/**
69
-	 * Return some dummy response for PROPFIND requests with regard to locking
70
-	 *
71
-	 * @param PropFind $propFind
72
-	 * @param INode $node
73
-	 * @return void
74
-	 */
75
-	public function propFind(PropFind $propFind, INode $node) {
76
-		$propFind->handle('{DAV:}supportedlock', function () {
77
-			return new SupportedLock();
78
-		});
79
-		$propFind->handle('{DAV:}lockdiscovery', function () use ($propFind) {
80
-			return new LockDiscovery([]);
81
-		});
82
-	}
68
+    /**
69
+     * Return some dummy response for PROPFIND requests with regard to locking
70
+     *
71
+     * @param PropFind $propFind
72
+     * @param INode $node
73
+     * @return void
74
+     */
75
+    public function propFind(PropFind $propFind, INode $node) {
76
+        $propFind->handle('{DAV:}supportedlock', function () {
77
+            return new SupportedLock();
78
+        });
79
+        $propFind->handle('{DAV:}lockdiscovery', function () use ($propFind) {
80
+            return new LockDiscovery([]);
81
+        });
82
+    }
83 83
 
84
-	/**
85
-	 * Mark a locking token always as valid
86
-	 *
87
-	 * @param RequestInterface $request
88
-	 * @param array $conditions
89
-	 */
90
-	public function validateTokens(RequestInterface $request, &$conditions) {
91
-		foreach ($conditions as &$fileCondition) {
92
-			if (isset($fileCondition['tokens'])) {
93
-				foreach ($fileCondition['tokens'] as &$token) {
94
-					if (isset($token['token'])) {
95
-						if (str_starts_with($token['token'], 'opaquelocktoken:')) {
96
-							$token['validToken'] = true;
97
-						}
98
-					}
99
-				}
100
-			}
101
-		}
102
-	}
84
+    /**
85
+     * Mark a locking token always as valid
86
+     *
87
+     * @param RequestInterface $request
88
+     * @param array $conditions
89
+     */
90
+    public function validateTokens(RequestInterface $request, &$conditions) {
91
+        foreach ($conditions as &$fileCondition) {
92
+            if (isset($fileCondition['tokens'])) {
93
+                foreach ($fileCondition['tokens'] as &$token) {
94
+                    if (isset($token['token'])) {
95
+                        if (str_starts_with($token['token'], 'opaquelocktoken:')) {
96
+                            $token['validToken'] = true;
97
+                        }
98
+                    }
99
+                }
100
+            }
101
+        }
102
+    }
103 103
 
104
-	/**
105
-	 * Fakes a successful LOCK
106
-	 *
107
-	 * @param RequestInterface $request
108
-	 * @param ResponseInterface $response
109
-	 * @return bool
110
-	 */
111
-	public function fakeLockProvider(RequestInterface $request,
112
-		ResponseInterface $response) {
113
-		$lockInfo = new LockInfo();
114
-		$lockInfo->token = md5($request->getPath());
115
-		$lockInfo->uri = $request->getPath();
116
-		$lockInfo->depth = Server::DEPTH_INFINITY;
117
-		$lockInfo->timeout = 1800;
104
+    /**
105
+     * Fakes a successful LOCK
106
+     *
107
+     * @param RequestInterface $request
108
+     * @param ResponseInterface $response
109
+     * @return bool
110
+     */
111
+    public function fakeLockProvider(RequestInterface $request,
112
+        ResponseInterface $response) {
113
+        $lockInfo = new LockInfo();
114
+        $lockInfo->token = md5($request->getPath());
115
+        $lockInfo->uri = $request->getPath();
116
+        $lockInfo->depth = Server::DEPTH_INFINITY;
117
+        $lockInfo->timeout = 1800;
118 118
 
119
-		$body = $this->server->xml->write('{DAV:}prop', [
120
-			'{DAV:}lockdiscovery' =>
121
-					new LockDiscovery([$lockInfo])
122
-		]);
119
+        $body = $this->server->xml->write('{DAV:}prop', [
120
+            '{DAV:}lockdiscovery' =>
121
+                    new LockDiscovery([$lockInfo])
122
+        ]);
123 123
 
124
-		$response->setStatus(Http::STATUS_OK);
125
-		$response->setBody($body);
124
+        $response->setStatus(Http::STATUS_OK);
125
+        $response->setBody($body);
126 126
 
127
-		return false;
128
-	}
127
+        return false;
128
+    }
129 129
 
130
-	/**
131
-	 * Fakes a successful LOCK
132
-	 *
133
-	 * @param RequestInterface $request
134
-	 * @param ResponseInterface $response
135
-	 * @return bool
136
-	 */
137
-	public function fakeUnlockProvider(RequestInterface $request,
138
-		ResponseInterface $response) {
139
-		$response->setStatus(Http::STATUS_NO_CONTENT);
140
-		$response->setHeader('Content-Length', '0');
141
-		return false;
142
-	}
130
+    /**
131
+     * Fakes a successful LOCK
132
+     *
133
+     * @param RequestInterface $request
134
+     * @param ResponseInterface $response
135
+     * @return bool
136
+     */
137
+    public function fakeUnlockProvider(RequestInterface $request,
138
+        ResponseInterface $response) {
139
+        $response->setStatus(Http::STATUS_NO_CONTENT);
140
+        $response->setHeader('Content-Length', '0');
141
+        return false;
142
+    }
143 143
 }
Please login to merge, or discard this patch.
apps/files_sharing/lib/Capabilities.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -116,7 +116,7 @@
 block discarded – undo
116 116
 			$res['group'] = [];
117 117
 			$res['group']['enabled'] = $this->shareManager->allowGroupSharing();
118 118
 			$res['group']['expire_date']['enabled'] = true;
119
-			$res['default_permissions'] = (int)$this->config->getAppValue('core', 'shareapi_default_permissions', (string)Constants::PERMISSION_ALL);
119
+			$res['default_permissions'] = (int) $this->config->getAppValue('core', 'shareapi_default_permissions', (string) Constants::PERMISSION_ALL);
120 120
 		}
121 121
 
122 122
 		//Federated sharing
Please login to merge, or discard this patch.
Indentation   +158 added lines, -158 removed lines patch added patch discarded remove patch
@@ -18,162 +18,162 @@
 block discarded – undo
18 18
  */
19 19
 class Capabilities implements ICapability {
20 20
 
21
-	public function __construct(
22
-		private IConfig $config,
23
-		private IManager $shareManager,
24
-	) {
25
-	}
26
-
27
-	/**
28
-	 * Return this classes capabilities
29
-	 *
30
-	 * @return array{
31
-	 *     files_sharing: array{
32
-	 *         api_enabled: bool,
33
-	 *         public: array{
34
-	 *             enabled: bool,
35
-	 *             password?: array{
36
-	 *                 enforced: bool,
37
-	 *                 askForOptionalPassword: bool
38
-	 *             },
39
-	 *     		   multiple_links?: bool,
40
-	 *             expire_date?: array{
41
-	 *                 enabled: bool,
42
-	 *                 days?: int,
43
-	 *                 enforced?: bool,
44
-	 *             },
45
-	 *             expire_date_internal?: array{
46
-	 *                 enabled: bool,
47
-	 *                 days?: int,
48
-	 *                 enforced?: bool,
49
-	 *             },
50
-	 *             expire_date_remote?: array{
51
-	 *                 enabled: bool,
52
-	 *                 days?: int,
53
-	 *                 enforced?: bool,
54
-	 *             },
55
-	 *             send_mail?: bool,
56
-	 *             upload?: bool,
57
-	 *             upload_files_drop?: bool,
58
-	 *             custom_tokens?: bool,
59
-	 *         },
60
-	 *         user: array{
61
-	 *             send_mail: bool,
62
-	 *             expire_date?: array{
63
-	 *                 enabled: bool,
64
-	 *             },
65
-	 *         },
66
-	 *         resharing: bool,
67
-	 *         group_sharing?: bool,
68
-	 *         group?: array{
69
-	 *             enabled: bool,
70
-	 *             expire_date?: array{
71
-	 *                 enabled: bool,
72
-	 *             },
73
-	 *         },
74
-	 *         default_permissions?: int,
75
-	 *         federation: array{
76
-	 *             outgoing: bool,
77
-	 *             incoming: bool,
78
-	 *             expire_date: array{
79
-	 *                 enabled: bool,
80
-	 *             },
81
-	 *             expire_date_supported: array{
82
-	 *                 enabled: bool,
83
-	 *             },
84
-	 *         },
85
-	 *         sharee: array{
86
-	 *             query_lookup_default: bool,
87
-	 *             always_show_unique: bool,
88
-	 *         },
89
-	 *	   },
90
-	 * }
91
-	 */
92
-	public function getCapabilities() {
93
-		$res = [];
94
-
95
-		if (!$this->shareManager->shareApiEnabled()) {
96
-			$res['api_enabled'] = false;
97
-			$res['public'] = ['enabled' => false];
98
-			$res['user'] = ['send_mail' => false];
99
-			$res['resharing'] = false;
100
-		} else {
101
-			$res['api_enabled'] = true;
102
-
103
-			$public = [];
104
-			$public['enabled'] = $this->shareManager->shareApiAllowLinks();
105
-			if ($public['enabled']) {
106
-				$public['password'] = [];
107
-				$public['password']['enforced'] = $this->shareManager->shareApiLinkEnforcePassword();
108
-
109
-				if ($public['password']['enforced']) {
110
-					$public['password']['askForOptionalPassword'] = false;
111
-				} else {
112
-					$public['password']['askForOptionalPassword'] = ($this->config->getAppValue('core', 'shareapi_enable_link_password_by_default', 'no') === 'yes');
113
-				}
114
-
115
-				$public['expire_date'] = [];
116
-				$public['multiple_links'] = true;
117
-				$public['expire_date']['enabled'] = $this->shareManager->shareApiLinkDefaultExpireDate();
118
-				if ($public['expire_date']['enabled']) {
119
-					$public['expire_date']['days'] = $this->shareManager->shareApiLinkDefaultExpireDays();
120
-					$public['expire_date']['enforced'] = $this->shareManager->shareApiLinkDefaultExpireDateEnforced();
121
-				}
122
-
123
-				$public['expire_date_internal'] = [];
124
-				$public['expire_date_internal']['enabled'] = $this->shareManager->shareApiInternalDefaultExpireDate();
125
-				if ($public['expire_date_internal']['enabled']) {
126
-					$public['expire_date_internal']['days'] = $this->shareManager->shareApiInternalDefaultExpireDays();
127
-					$public['expire_date_internal']['enforced'] = $this->shareManager->shareApiInternalDefaultExpireDateEnforced();
128
-				}
129
-
130
-				$public['expire_date_remote'] = [];
131
-				$public['expire_date_remote']['enabled'] = $this->shareManager->shareApiRemoteDefaultExpireDate();
132
-				if ($public['expire_date_remote']['enabled']) {
133
-					$public['expire_date_remote']['days'] = $this->shareManager->shareApiRemoteDefaultExpireDays();
134
-					$public['expire_date_remote']['enforced'] = $this->shareManager->shareApiRemoteDefaultExpireDateEnforced();
135
-				}
136
-
137
-				$public['send_mail'] = $this->config->getAppValue('core', 'shareapi_allow_public_notification', 'no') === 'yes';
138
-				$public['upload'] = $this->shareManager->shareApiLinkAllowPublicUpload();
139
-				$public['upload_files_drop'] = $public['upload'];
140
-				$public['custom_tokens'] = $this->shareManager->allowCustomTokens();
141
-			}
142
-			$res['public'] = $public;
143
-
144
-			$res['resharing'] = $this->config->getAppValue('core', 'shareapi_allow_resharing', 'yes') === 'yes';
145
-
146
-			$res['user']['send_mail'] = false;
147
-			$res['user']['expire_date']['enabled'] = true;
148
-
149
-			// deprecated in favour of 'group', but we need to keep it for now
150
-			// in order to stay compatible with older clients
151
-			$res['group_sharing'] = $this->shareManager->allowGroupSharing();
152
-
153
-			$res['group'] = [];
154
-			$res['group']['enabled'] = $this->shareManager->allowGroupSharing();
155
-			$res['group']['expire_date']['enabled'] = true;
156
-			$res['default_permissions'] = (int)$this->config->getAppValue('core', 'shareapi_default_permissions', (string)Constants::PERMISSION_ALL);
157
-		}
158
-
159
-		//Federated sharing
160
-		$res['federation'] = [
161
-			'outgoing' => $this->shareManager->outgoingServer2ServerSharesAllowed(),
162
-			'incoming' => $this->config->getAppValue('files_sharing', 'incoming_server2server_share_enabled', 'yes') === 'yes',
163
-			// old bogus one, expire_date was not working before, keeping for compatibility
164
-			'expire_date' => ['enabled' => true],
165
-			// the real deal, signifies that expiration date can be set on federated shares
166
-			'expire_date_supported' => ['enabled' => true],
167
-		];
168
-
169
-		// Sharee searches
170
-		$res['sharee'] = [
171
-			'query_lookup_default' => $this->config->getSystemValueBool('gs.enabled', false),
172
-			'always_show_unique' => $this->config->getAppValue('files_sharing', 'always_show_unique', 'yes') === 'yes',
173
-		];
174
-
175
-		return [
176
-			'files_sharing' => $res,
177
-		];
178
-	}
21
+    public function __construct(
22
+        private IConfig $config,
23
+        private IManager $shareManager,
24
+    ) {
25
+    }
26
+
27
+    /**
28
+     * Return this classes capabilities
29
+     *
30
+     * @return array{
31
+     *     files_sharing: array{
32
+     *         api_enabled: bool,
33
+     *         public: array{
34
+     *             enabled: bool,
35
+     *             password?: array{
36
+     *                 enforced: bool,
37
+     *                 askForOptionalPassword: bool
38
+     *             },
39
+     *     		   multiple_links?: bool,
40
+     *             expire_date?: array{
41
+     *                 enabled: bool,
42
+     *                 days?: int,
43
+     *                 enforced?: bool,
44
+     *             },
45
+     *             expire_date_internal?: array{
46
+     *                 enabled: bool,
47
+     *                 days?: int,
48
+     *                 enforced?: bool,
49
+     *             },
50
+     *             expire_date_remote?: array{
51
+     *                 enabled: bool,
52
+     *                 days?: int,
53
+     *                 enforced?: bool,
54
+     *             },
55
+     *             send_mail?: bool,
56
+     *             upload?: bool,
57
+     *             upload_files_drop?: bool,
58
+     *             custom_tokens?: bool,
59
+     *         },
60
+     *         user: array{
61
+     *             send_mail: bool,
62
+     *             expire_date?: array{
63
+     *                 enabled: bool,
64
+     *             },
65
+     *         },
66
+     *         resharing: bool,
67
+     *         group_sharing?: bool,
68
+     *         group?: array{
69
+     *             enabled: bool,
70
+     *             expire_date?: array{
71
+     *                 enabled: bool,
72
+     *             },
73
+     *         },
74
+     *         default_permissions?: int,
75
+     *         federation: array{
76
+     *             outgoing: bool,
77
+     *             incoming: bool,
78
+     *             expire_date: array{
79
+     *                 enabled: bool,
80
+     *             },
81
+     *             expire_date_supported: array{
82
+     *                 enabled: bool,
83
+     *             },
84
+     *         },
85
+     *         sharee: array{
86
+     *             query_lookup_default: bool,
87
+     *             always_show_unique: bool,
88
+     *         },
89
+     *	   },
90
+     * }
91
+     */
92
+    public function getCapabilities() {
93
+        $res = [];
94
+
95
+        if (!$this->shareManager->shareApiEnabled()) {
96
+            $res['api_enabled'] = false;
97
+            $res['public'] = ['enabled' => false];
98
+            $res['user'] = ['send_mail' => false];
99
+            $res['resharing'] = false;
100
+        } else {
101
+            $res['api_enabled'] = true;
102
+
103
+            $public = [];
104
+            $public['enabled'] = $this->shareManager->shareApiAllowLinks();
105
+            if ($public['enabled']) {
106
+                $public['password'] = [];
107
+                $public['password']['enforced'] = $this->shareManager->shareApiLinkEnforcePassword();
108
+
109
+                if ($public['password']['enforced']) {
110
+                    $public['password']['askForOptionalPassword'] = false;
111
+                } else {
112
+                    $public['password']['askForOptionalPassword'] = ($this->config->getAppValue('core', 'shareapi_enable_link_password_by_default', 'no') === 'yes');
113
+                }
114
+
115
+                $public['expire_date'] = [];
116
+                $public['multiple_links'] = true;
117
+                $public['expire_date']['enabled'] = $this->shareManager->shareApiLinkDefaultExpireDate();
118
+                if ($public['expire_date']['enabled']) {
119
+                    $public['expire_date']['days'] = $this->shareManager->shareApiLinkDefaultExpireDays();
120
+                    $public['expire_date']['enforced'] = $this->shareManager->shareApiLinkDefaultExpireDateEnforced();
121
+                }
122
+
123
+                $public['expire_date_internal'] = [];
124
+                $public['expire_date_internal']['enabled'] = $this->shareManager->shareApiInternalDefaultExpireDate();
125
+                if ($public['expire_date_internal']['enabled']) {
126
+                    $public['expire_date_internal']['days'] = $this->shareManager->shareApiInternalDefaultExpireDays();
127
+                    $public['expire_date_internal']['enforced'] = $this->shareManager->shareApiInternalDefaultExpireDateEnforced();
128
+                }
129
+
130
+                $public['expire_date_remote'] = [];
131
+                $public['expire_date_remote']['enabled'] = $this->shareManager->shareApiRemoteDefaultExpireDate();
132
+                if ($public['expire_date_remote']['enabled']) {
133
+                    $public['expire_date_remote']['days'] = $this->shareManager->shareApiRemoteDefaultExpireDays();
134
+                    $public['expire_date_remote']['enforced'] = $this->shareManager->shareApiRemoteDefaultExpireDateEnforced();
135
+                }
136
+
137
+                $public['send_mail'] = $this->config->getAppValue('core', 'shareapi_allow_public_notification', 'no') === 'yes';
138
+                $public['upload'] = $this->shareManager->shareApiLinkAllowPublicUpload();
139
+                $public['upload_files_drop'] = $public['upload'];
140
+                $public['custom_tokens'] = $this->shareManager->allowCustomTokens();
141
+            }
142
+            $res['public'] = $public;
143
+
144
+            $res['resharing'] = $this->config->getAppValue('core', 'shareapi_allow_resharing', 'yes') === 'yes';
145
+
146
+            $res['user']['send_mail'] = false;
147
+            $res['user']['expire_date']['enabled'] = true;
148
+
149
+            // deprecated in favour of 'group', but we need to keep it for now
150
+            // in order to stay compatible with older clients
151
+            $res['group_sharing'] = $this->shareManager->allowGroupSharing();
152
+
153
+            $res['group'] = [];
154
+            $res['group']['enabled'] = $this->shareManager->allowGroupSharing();
155
+            $res['group']['expire_date']['enabled'] = true;
156
+            $res['default_permissions'] = (int)$this->config->getAppValue('core', 'shareapi_default_permissions', (string)Constants::PERMISSION_ALL);
157
+        }
158
+
159
+        //Federated sharing
160
+        $res['federation'] = [
161
+            'outgoing' => $this->shareManager->outgoingServer2ServerSharesAllowed(),
162
+            'incoming' => $this->config->getAppValue('files_sharing', 'incoming_server2server_share_enabled', 'yes') === 'yes',
163
+            // old bogus one, expire_date was not working before, keeping for compatibility
164
+            'expire_date' => ['enabled' => true],
165
+            // the real deal, signifies that expiration date can be set on federated shares
166
+            'expire_date_supported' => ['enabled' => true],
167
+        ];
168
+
169
+        // Sharee searches
170
+        $res['sharee'] = [
171
+            'query_lookup_default' => $this->config->getSystemValueBool('gs.enabled', false),
172
+            'always_show_unique' => $this->config->getAppValue('files_sharing', 'always_show_unique', 'yes') === 'yes',
173
+        ];
174
+
175
+        return [
176
+            'files_sharing' => $res,
177
+        ];
178
+    }
179 179
 }
Please login to merge, or discard this patch.
apps/files_external/lib/Lib/Auth/AuthMechanism.php 1 patch
Indentation   +56 added lines, -56 removed lines patch added patch discarded remove patch
@@ -53,69 +53,69 @@
 block discarded – undo
53 53
  *      Object can affect storage mounting
54 54
  */
55 55
 class AuthMechanism implements \JsonSerializable, IIdentifier, IFrontendDefinition {
56
-	/** Standard authentication schemes */
57
-	public const SCHEME_NULL = 'null';
58
-	public const SCHEME_BUILTIN = 'builtin';
59
-	public const SCHEME_PASSWORD = 'password';
60
-	public const SCHEME_OAUTH1 = 'oauth1';
61
-	public const SCHEME_OAUTH2 = 'oauth2';
62
-	public const SCHEME_PUBLICKEY = 'publickey';
63
-	public const SCHEME_OPENSTACK = 'openstack';
64
-	public const SCHEME_SMB = 'smb';
56
+    /** Standard authentication schemes */
57
+    public const SCHEME_NULL = 'null';
58
+    public const SCHEME_BUILTIN = 'builtin';
59
+    public const SCHEME_PASSWORD = 'password';
60
+    public const SCHEME_OAUTH1 = 'oauth1';
61
+    public const SCHEME_OAUTH2 = 'oauth2';
62
+    public const SCHEME_PUBLICKEY = 'publickey';
63
+    public const SCHEME_OPENSTACK = 'openstack';
64
+    public const SCHEME_SMB = 'smb';
65 65
 
66
-	use VisibilityTrait;
67
-	use FrontendDefinitionTrait;
68
-	use StorageModifierTrait;
69
-	use IdentifierTrait;
66
+    use VisibilityTrait;
67
+    use FrontendDefinitionTrait;
68
+    use StorageModifierTrait;
69
+    use IdentifierTrait;
70 70
 
71
-	/** @var string */
72
-	protected $scheme;
71
+    /** @var string */
72
+    protected $scheme;
73 73
 
74
-	/**
75
-	 * Get the authentication scheme implemented
76
-	 * See self::SCHEME_* constants
77
-	 *
78
-	 * @return string
79
-	 */
80
-	public function getScheme() {
81
-		return $this->scheme;
82
-	}
74
+    /**
75
+     * Get the authentication scheme implemented
76
+     * See self::SCHEME_* constants
77
+     *
78
+     * @return string
79
+     */
80
+    public function getScheme() {
81
+        return $this->scheme;
82
+    }
83 83
 
84
-	/**
85
-	 * @param string $scheme
86
-	 * @return $this
87
-	 */
88
-	public function setScheme($scheme) {
89
-		$this->scheme = $scheme;
90
-		return $this;
91
-	}
84
+    /**
85
+     * @param string $scheme
86
+     * @return $this
87
+     */
88
+    public function setScheme($scheme) {
89
+        $this->scheme = $scheme;
90
+        return $this;
91
+    }
92 92
 
93
-	/**
94
-	 * Serialize into JSON for client-side JS
95
-	 */
96
-	public function jsonSerialize(): array {
97
-		$data = $this->jsonSerializeDefinition();
98
-		$data += $this->jsonSerializeIdentifier();
93
+    /**
94
+     * Serialize into JSON for client-side JS
95
+     */
96
+    public function jsonSerialize(): array {
97
+        $data = $this->jsonSerializeDefinition();
98
+        $data += $this->jsonSerializeIdentifier();
99 99
 
100
-		$data['scheme'] = $this->getScheme();
101
-		$data['visibility'] = $this->getVisibility();
100
+        $data['scheme'] = $this->getScheme();
101
+        $data['visibility'] = $this->getVisibility();
102 102
 
103
-		return $data;
104
-	}
103
+        return $data;
104
+    }
105 105
 
106
-	/**
107
-	 * Check if parameters are satisfied in a StorageConfig
108
-	 *
109
-	 * @param StorageConfig $storage
110
-	 * @return bool
111
-	 */
112
-	public function validateStorage(StorageConfig $storage) {
113
-		// does the backend actually support this scheme
114
-		$supportedSchemes = $storage->getBackend()->getAuthSchemes();
115
-		if (!isset($supportedSchemes[$this->getScheme()])) {
116
-			return false;
117
-		}
106
+    /**
107
+     * Check if parameters are satisfied in a StorageConfig
108
+     *
109
+     * @param StorageConfig $storage
110
+     * @return bool
111
+     */
112
+    public function validateStorage(StorageConfig $storage) {
113
+        // does the backend actually support this scheme
114
+        $supportedSchemes = $storage->getBackend()->getAuthSchemes();
115
+        if (!isset($supportedSchemes[$this->getScheme()])) {
116
+            return false;
117
+        }
118 118
 
119
-		return $this->validateStorageDefinition($storage);
120
-	}
119
+        return $this->validateStorageDefinition($storage);
120
+    }
121 121
 }
Please login to merge, or discard this patch.