3535use OCP \Collaboration \Resources \ICollection ;
3636use OCP \Collaboration \Resources \IManager ;
3737use OCP \Collaboration \Resources \IProvider ;
38+ use OCP \Collaboration \Resources \IProviderManager ;
3839use OCP \Collaboration \Resources \IResource ;
3940use OCP \Collaboration \Resources \ResourceException ;
4041use OCP \DB \QueryBuilder \IQueryBuilder ;
@@ -50,17 +51,18 @@ class Manager implements IManager {
5051
5152 /** @var IDBConnection */
5253 protected $ connection ;
54+ /** @var IProviderManager */
55+ protected $ providerManager ;
5356 /** @var ILogger */
5457 protected $ logger ;
5558
5659 /** @var string[] */
5760 protected $ providers = [];
5861
59- /** @var IProvider[] */
60- protected $ providerInstances = [];
6162
62- public function __construct (IDBConnection $ connection , ILogger $ logger ) {
63+ public function __construct (IDBConnection $ connection , IProviderManager $ providerManager , ILogger $ logger ) {
6364 $ this ->connection = $ connection ;
65+ $ this ->providerManager = $ providerManager ;
6466 $ this ->logger = $ logger ;
6567 }
6668
@@ -273,27 +275,6 @@ public function getResourcesByCollectionForUser(ICollection $collection, ?IUser
273275 return $ resources ;
274276 }
275277
276- /**
277- * @return IProvider[]
278- * @since 16.0.0
279- */
280- public function getProviders (): array {
281- if (!empty ($ this ->providers )) {
282- foreach ($ this ->providers as $ provider ) {
283- try {
284- $ this ->providerInstances [] = \OC ::$ server ->query ($ provider );
285- } catch (QueryException $ e ) {
286- $ this ->logger ->logException ($ e , [
287- 'message ' => 'Error when instantiating resource provider '
288- ]);
289- }
290- }
291- $ this ->providers = [];
292- }
293-
294- return $ this ->providerInstances ;
295- }
296-
297278 /**
298279 * Get the rich object data of a resource
299280 *
@@ -302,7 +283,7 @@ public function getProviders(): array {
302283 * @since 16.0.0
303284 */
304285 public function getResourceRichObject (IResource $ resource ): array {
305- foreach ($ this ->getProviders () as $ provider ) {
286+ foreach ($ this ->providerManager -> getResourceProviders () as $ provider ) {
306287 if ($ provider ->getType () === $ resource ->getType ()) {
307288 try {
308289 return $ provider ->getResourceRichObject ($ resource );
@@ -329,7 +310,7 @@ public function canAccessResource(IResource $resource, ?IUser $user): bool {
329310 }
330311
331312 $ access = false ;
332- foreach ($ this ->getProviders () as $ provider ) {
313+ foreach ($ this ->providerManager -> getResourceProviders () as $ provider ) {
333314 if ($ provider ->getType () === $ resource ->getType ()) {
334315 try {
335316 if ($ provider ->canAccessResource ($ resource , $ user )) {
@@ -532,7 +513,8 @@ public function invalidateAccessCacheForProviderByUser(IProvider $provider, ?IUs
532513 * @param string $provider
533514 */
534515 public function registerResourceProvider (string $ provider ): void {
535- $ this ->providers [] = $ provider ;
516+ $ this ->logger ->debug ('\OC\Collaboration\Resources\Manager::registerResourceProvider is deprecated ' , ['provider ' => $ provider ]);
517+ $ this ->providerManager ->registerResourceProvider ($ provider );
536518 }
537519
538520 /**
0 commit comments