diff options
author | Daniel Kesselberg <mail@danielkesselberg.de> | 2023-06-06 23:12:40 +0200 |
---|---|---|
committer | Daniel Kesselberg <mail@danielkesselberg.de> | 2023-06-23 16:27:35 +0200 |
commit | 440f882322562af6040c0c4634903574f572f146 (patch) | |
tree | 47bd477996f24fe4417ba4377e384f490250d0ea /lib | |
parent | 05f360c5ec76bf87f55bdbc0385aa7972ec11cbd (diff) | |
download | nextcloud-server-440f882322562af6040c0c4634903574f572f146.tar.gz nextcloud-server-440f882322562af6040c0c4634903574f572f146.zip |
feat: add width, height, crop and mode to BeforePreviewFetchedEvent
user_usage_report keeps a counter for files read.
The app uses
- OC_Filesystem::read hook
- Event listener (the legacy one) for IPreview::EVENT
Request for previews do not trigger the hook, hence the additional event listener.
The thumbnails for a list or grid view should not count, so we need the width and height.
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/Preview/Generator.php | 8 | ||||
-rw-r--r-- | lib/public/Preview/BeforePreviewFetchedEvent.php | 45 |
2 files changed, 47 insertions, 6 deletions
diff --git a/lib/private/Preview/Generator.php b/lib/private/Preview/Generator.php index 3ce44913498..c9949c82a97 100644 --- a/lib/private/Preview/Generator.php +++ b/lib/private/Preview/Generator.php @@ -91,7 +91,7 @@ class Generator { * @param int $height * @param bool $crop * @param string $mode - * @param string $mimeType + * @param string|null $mimeType * @return ISimpleFile * @throws NotFoundException * @throws \InvalidArgumentException if the preview would be invalid (in case the original image is invalid) @@ -109,7 +109,11 @@ class Generator { new GenericEvent($file, $specification) ); $this->eventDispatcher->dispatchTyped(new BeforePreviewFetchedEvent( - $file + $file, + $width, + $height, + $crop, + $mode, )); // since we only ask for one preview, and the generate method return the last one it created, it returns the one we want diff --git a/lib/public/Preview/BeforePreviewFetchedEvent.php b/lib/public/Preview/BeforePreviewFetchedEvent.php index 37da63b95a1..19048e08620 100644 --- a/lib/public/Preview/BeforePreviewFetchedEvent.php +++ b/lib/public/Preview/BeforePreviewFetchedEvent.php @@ -27,19 +27,27 @@ declare(strict_types=1); namespace OCP\Preview; use OCP\Files\Node; +use OCP\IPreview; /** * @since 25.0.1 */ class BeforePreviewFetchedEvent extends \OCP\EventDispatcher\Event { - private Node $node; - /** * @since 25.0.1 */ - public function __construct(Node $node) { + public function __construct( + private Node $node, + /** @deprecated 28.0.0 null deprecated **/ + private ?int $width = null, + /** @deprecated 28.0.0 null deprecated **/ + private ?int $height = null, + /** @deprecated 28.0.0 null deprecated **/ + private ?bool $crop = null, + /** @deprecated 28.0.0 null deprecated **/ + private ?string $mode = null, + ) { parent::__construct(); - $this->node = $node; } /** @@ -48,4 +56,33 @@ class BeforePreviewFetchedEvent extends \OCP\EventDispatcher\Event { public function getNode(): Node { return $this->node; } + + /** + * @since 28.0.0 + */ + public function getWidth(): ?int { + return $this->width; + } + + /** + * @since 28.0.0 + */ + public function getHeight(): ?int { + return $this->height; + } + + /** + * @since 28.0.0 + */ + public function isCrop(): ?bool { + return $this->crop; + } + + /** + * @since 28.0.0 + * @return null|IPreview::MODE_FILL|IPreview::MODE_COVER + */ + public function getMode(): ?string { + return $this->mode; + } } |