Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/files_pdfviewer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Listeners/LoadPublicViewerListener.php31
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();
+ }
}