diff options
-rw-r--r-- | lib/Listeners/LoadPublicViewerListener.php | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/Listeners/LoadPublicViewerListener.php b/lib/Listeners/LoadPublicViewerListener.php index e7996b8..8dbc959 100644 --- a/lib/Listeners/LoadPublicViewerListener.php +++ b/lib/Listeners/LoadPublicViewerListener.php @@ -28,11 +28,21 @@ namespace OCA\Files_PDFViewer\Listeners; use OCA\Files_PDFViewer\AppInfo\Application; use OCA\Files_Sharing\Event\BeforeTemplateRenderedEvent; +use OCP\AppFramework\QueryException; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventListener; +use OCP\IServerContainer; use OCP\Util; class LoadPublicViewerListener implements IEventListener { + + /** @var IServerContainer */ + private $serverContainer; + + public function __construct(IServerContainer $serverContainer) { + $this->serverContainer = $serverContainer; + } + public function handle(Event $event): void { if (!$event instanceof BeforeTemplateRenderedEvent) { return; @@ -44,6 +54,27 @@ class LoadPublicViewerListener implements IEventListener { return; } + // Do not load the viewer if there is a download limit + if ($this->getDownloadLimit($event->getShare()->getToken()) >= 0) { + return; + } + Util::addScript(Application::APP_ID, 'files_pdfviewer-public'); } + + private function getDownloadLimit(string $shareToken): int { + try { + $limitMapper = $this->serverContainer->get('\OCA\Files_DownloadLimit\Db\LimitMapper'); + } catch (QueryException $e) { + return -1; + } + + try { + $shareLimit = $limitMapper->get($shareToken); + } catch (\Exception $e) { + return -1; + } + + return $shareLimit->getLimit(); + } } |