2929use OCP \Collaboration \Resources \ICollection ;
3030use OCP \Collaboration \Resources \IManager ;
3131use OCP \Collaboration \Resources \IProvider ;
32+ use OCP \Collaboration \Resources \IProviderManager ;
3233use OCP \Collaboration \Resources \IResource ;
3334use OCP \Collaboration \Resources \ResourceException ;
3435use OCP \DB \QueryBuilder \IQueryBuilder ;
@@ -44,17 +45,18 @@ class Manager implements IManager {
4445
4546 /** @var IDBConnection */
4647 protected $ connection ;
48+ /** @var IProviderManager */
49+ protected $ providerManager ;
4750 /** @var ILogger */
4851 protected $ logger ;
4952
5053 /** @var string[] */
5154 protected $ providers = [];
5255
53- /** @var IProvider[] */
54- protected $ providerInstances = [];
5556
56- public function __construct (IDBConnection $ connection , ILogger $ logger ) {
57+ public function __construct (IDBConnection $ connection , IProviderManager $ providerManager , ILogger $ logger ) {
5758 $ this ->connection = $ connection ;
59+ $ this ->providerManager = $ providerManager ;
5860 $ this ->logger = $ logger ;
5961 }
6062
@@ -267,27 +269,6 @@ public function getResourcesByCollectionForUser(ICollection $collection, ?IUser
267269 return $ resources ;
268270 }
269271
270- /**
271- * @return IProvider[]
272- * @since 16.0.0
273- */
274- public function getProviders (): array {
275- if (!empty ($ this ->providers )) {
276- foreach ($ this ->providers as $ provider ) {
277- try {
278- $ this ->providerInstances [] = \OC ::$ server ->query ($ provider );
279- } catch (QueryException $ e ) {
280- $ this ->logger ->logException ($ e , [
281- 'message ' => 'Error when instantiating resource provider '
282- ]);
283- }
284- }
285- $ this ->providers = [];
286- }
287-
288- return $ this ->providerInstances ;
289- }
290-
291272 /**
292273 * Get the rich object data of a resource
293274 *
@@ -296,7 +277,7 @@ public function getProviders(): array {
296277 * @since 16.0.0
297278 */
298279 public function getResourceRichObject (IResource $ resource ): array {
299- foreach ($ this ->getProviders () as $ provider ) {
280+ foreach ($ this ->providerManager -> getResourceProviders () as $ provider ) {
300281 if ($ provider ->getType () === $ resource ->getType ()) {
301282 try {
302283 return $ provider ->getResourceRichObject ($ resource );
@@ -323,7 +304,7 @@ public function canAccessResource(IResource $resource, ?IUser $user): bool {
323304 }
324305
325306 $ access = false ;
326- foreach ($ this ->getProviders () as $ provider ) {
307+ foreach ($ this ->providerManager -> getResourceProviders () as $ provider ) {
327308 if ($ provider ->getType () === $ resource ->getType ()) {
328309 try {
329310 if ($ provider ->canAccessResource ($ resource , $ user )) {
@@ -526,7 +507,8 @@ public function invalidateAccessCacheForProviderByUser(IProvider $provider, ?IUs
526507 * @param string $provider
527508 */
528509 public function registerResourceProvider (string $ provider ): void {
529- $ this ->providers [] = $ provider ;
510+ $ this ->logger ->debug ('\OC\Collaboration\Resources\Manager::registerResourceProvider is deprecated ' , ['provider ' => $ provider ]);
511+ $ this ->providerManager ->registerResourceProvider ($ provider );
530512 }
531513
532514 /**
0 commit comments