diff options
author | Julius Härtl <jus@bitgrid.net> | 2019-01-24 12:03:52 +0100 |
---|---|---|
committer | Julius Härtl <jus@bitgrid.net> | 2019-03-01 20:56:18 +0100 |
commit | 3777df64ae0a4a3d79e000541c0c512fb3ebf304 (patch) | |
tree | 42b043e73f770a4b2fab422259c2969fa6d54a51 /lib | |
parent | 506eb885bcaf7d745b417a155defc7c1e0f344c1 (diff) | |
download | nextcloud-server-3777df64ae0a4a3d79e000541c0c512fb3ebf304.tar.gz nextcloud-server-3777df64ae0a4a3d79e000541c0c512fb3ebf304.zip |
Add link to resource provider
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/Collaboration/Resources/Manager.php | 20 | ||||
-rw-r--r-- | lib/private/Collaboration/Resources/Resource.php | 12 | ||||
-rw-r--r-- | lib/public/Collaboration/Resources/IProvider.php | 9 | ||||
-rw-r--r-- | lib/public/Collaboration/Resources/IResource.php | 6 |
4 files changed, 47 insertions, 0 deletions
diff --git a/lib/private/Collaboration/Resources/Manager.php b/lib/private/Collaboration/Resources/Manager.php index 1214145bd03..c11382c2f1d 100644 --- a/lib/private/Collaboration/Resources/Manager.php +++ b/lib/private/Collaboration/Resources/Manager.php @@ -179,4 +179,24 @@ class Manager implements IManager { public function getType(): string { return ''; } + + /** + * Get the link to a resource + * + * @param IResource $resource + * @return string + * @since 15.0.0 + */ + public function getLink(IResource $resource): string { + foreach ($this->getProviders() as $provider) { + if ($provider->getType() === $resource->getType()) { + try { + return $provider->getLink($resource); + } catch (ResourceException $e) { + } + } + } + + return ''; + } } diff --git a/lib/private/Collaboration/Resources/Resource.php b/lib/private/Collaboration/Resources/Resource.php index 2f491663a88..eafba8555e8 100644 --- a/lib/private/Collaboration/Resources/Resource.php +++ b/lib/private/Collaboration/Resources/Resource.php @@ -50,6 +50,9 @@ class Resource implements IResource { /** @var string|null */ protected $iconClass; + /** @var string|null */ + protected $link; + public function __construct( IManager $manager, IDBConnection $connection, @@ -102,6 +105,15 @@ class Resource implements IResource { return $this->iconClass; } + public function getLink(): string { + if ($this->link === null) { + $this->link = $this->manager->getLink($this); + } + + return $this->link; + } + + /** * Can a user/guest access the resource * diff --git a/lib/public/Collaboration/Resources/IProvider.php b/lib/public/Collaboration/Resources/IProvider.php index 0299bfd0ddf..9ffc5f4324b 100644 --- a/lib/public/Collaboration/Resources/IProvider.php +++ b/lib/public/Collaboration/Resources/IProvider.php @@ -54,6 +54,15 @@ interface IProvider { public function getIconClass(IResource $resource): string; /** + * Get the link to a resource + * + * @param IResource $resource + * @return string + * @since 15.0.0 + */ + public function getLink(IResource $resource): string; + + /** * Can a user/guest access the collection * * @param IResource $resource diff --git a/lib/public/Collaboration/Resources/IResource.php b/lib/public/Collaboration/Resources/IResource.php index 9a4b2b30d10..d16b4c131d8 100644 --- a/lib/public/Collaboration/Resources/IResource.php +++ b/lib/public/Collaboration/Resources/IResource.php @@ -54,6 +54,12 @@ interface IResource { public function getIconClass(): string; /** + * @return string + * @since 15.0.0 + */ + public function getLink(): string; + + /** * Can a user/guest access the resource * * @param IUser $user |