From 0e879428cbb249301ef77aac193e65c7ad0d0e10 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 18 Feb 2025 20:01:10 +0100 Subject: [PATCH] wip #7340 @0.25 --- app/Fluidbook/Compiler/Compiler.php | 3 +- app/Fluidbook/Farm.php | 10 +- app/Models/FluidbookDocument.php | 52 ++++---- app/Models/FluidbookPublication.php | 9 +- composer.lock | 182 ++++++++++++++-------------- 5 files changed, 134 insertions(+), 122 deletions(-) diff --git a/app/Fluidbook/Compiler/Compiler.php b/app/Fluidbook/Compiler/Compiler.php index 9b612492b..024029e12 100644 --- a/app/Fluidbook/Compiler/Compiler.php +++ b/app/Fluidbook/Compiler/Compiler.php @@ -362,7 +362,8 @@ class Compiler extends Base implements CompilerInterface, IVirtualDirectoryError $this->width = round($this->getFluidbook()->getPageWidth(), 8); $this->height = round($this->getFluidbook()->getPageHeight(), 8); - $this->imageFormat = $this->fluidbookSettings->imageFormat; + $this->imageFormat =$this->getFluidbook()->getImageFormat(); + $this->fluidbookSettings->set('imageFormat',$this->imageFormat); $p1 = $this->getFluidbook()->getFile(1, $this->imageFormat, 150); $imagesize = Image::getimagesize($p1); diff --git a/app/Fluidbook/Farm.php b/app/Fluidbook/Farm.php index c56fcca83..4895104ed 100644 --- a/app/Fluidbook/Farm.php +++ b/app/Fluidbook/Farm.php @@ -120,7 +120,7 @@ class Farm /** * @throws \Exception */ - public static function getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $version, $resolutionRatio, $mobileFirstRatio, $path, $force = false) + public static function getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version, $resolutionRatio, $mobileFirstRatio, $path, $force = false) { $params = [ 'operation' => 'documentfile', @@ -129,6 +129,7 @@ class Farm 'resolution' => $resolution, 'withText' => $withText, 'withGraphics' => $withGraphics, + 'transparent' => $transparent, 'version' => $version, 'quality' => $quality, 'force' => $force, @@ -147,7 +148,7 @@ class Farm return self::$_outPDF[$pdf]; } - public static function getFileFromPDF($pdf, $page, $format, $resolution, $quality, $withText = true, $withGraphics = true, $version = 'html', $out = null, $force = false, $attempts = 3) + public static function getFileFromPDF($pdf, $page, $format, $resolution, $quality, $withText = true, $withGraphics = true, $transparent = false, $version = 'html', $out = null, $force = false, $attempts = 3) { if (null === $out) { $out = self::_getOutDirFromPDF($pdf); @@ -162,6 +163,7 @@ class Farm 'quality' => $quality, 'withText' => $withText, 'withGraphics' => $withGraphics, + 'transparent' => $transparent, 'version' => $version, 'out' => $out]; @@ -176,7 +178,7 @@ class Farm } $res = Cache::rememberForever($cachekey, function () use ($params, $out) { - $path = $out . ProcessFile::getFilename($params['page'], $params['format'], $params['resolution'], $params['quality'], $params['withGraphics'], $params['withText'], $params['version']); + $path = $out . ProcessFile::getFilename($params['page'], $params['format'], $params['resolution'], $params['quality'], $params['withGraphics'], $params['withText'], $params['transparent'], $params['version']); if (file_exists($path)) { return $path; } @@ -189,7 +191,7 @@ class Farm if ((!$res || !file_exists($res)) && $attempts > 0) { Cache::forget($cachekey); - return self::getFileFromPDF($pdf, $page, $format, $resolution, $quality, $withText, $withGraphics, $version, $out, true, $attempts - 1); + return self::getFileFromPDF($pdf, $page, $format, $resolution, $quality, $withText, $withGraphics,$transparent, $version, $out, true, $attempts - 1); } return $res; diff --git a/app/Models/FluidbookDocument.php b/app/Models/FluidbookDocument.php index b5ab30f55..8bc701b76 100644 --- a/app/Models/FluidbookDocument.php +++ b/app/Models/FluidbookDocument.php @@ -264,14 +264,14 @@ class FluidbookDocument extends ToolboxModel $this->saveQuietly(); } - public function hasFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $version = 'html', $forceCheck = false) + public function hasFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $version = 'html', $transparent = false, $forceCheck = false) { - $this->_normalize($format, $resolution, $quality, $withText, $withGraphics, $version); - $cacheKey = $this->fileCacheKey($page, $format, $resolution, $quality, $withText, $withGraphics, $version); + $this->_normalize($format, $resolution, $quality, $withText, $withGraphics, $transparent, $version); + $cacheKey = $this->fileCacheKey($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version); if (!$forceCheck && Cache::has($cacheKey)) { return true; } else { - $path = $this->_getPath($page, $format, $resolution, $quality, $withText, $withGraphics, $version); + $path = $this->_getPath($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version); $minsize = $format === 'svg' ? 100 : 1; if (!file_exists($path)) { @@ -298,7 +298,7 @@ class FluidbookDocument extends ToolboxModel } } - protected function _normalize(&$format, &$resolution, &$quality, &$withText, &$withGraphics, &$version) + protected function _normalize(&$format, &$resolution, &$quality, &$withText, &$withGraphics, &$transparent, &$version) { if ($format === 'jpeg') { $format = 'jpg'; @@ -314,12 +314,12 @@ class FluidbookDocument extends ToolboxModel } } - public function _getPath($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $version = 'html') + public function _getPath($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $transparent = false, $version = 'html') { - $this->_normalize($format, $resolution, $quality, $withText, $withGraphics, $version); - $cacheKey = $this->fileCacheKey($page, $format, $resolution, $quality, $withText, $withGraphics, $version) . '_path'; + $this->_normalize($format, $resolution, $quality, $withText, $withGraphics, $transparent, $version); + $cacheKey = $this->fileCacheKey($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version) . '_path'; - return Cache::rememberForever($cacheKey, function () use ($page, $format, $resolution, $quality, $withText, $withGraphics, $version) { + return Cache::rememberForever($cacheKey, function () use ($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version) { $dir = $this->path($version) . '/'; if ($format === 'svg') { @@ -343,13 +343,13 @@ class FluidbookDocument extends ToolboxModel }); } - protected function fileCacheKey($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $version = 'html') + protected function fileCacheKey($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $transparent = false, $version = 'html') { - $this->_normalize($format, $resolution, $quality, $withText, $withGraphics, $version); - return 'FluidbookDocument_' . $this->id . '_' . $page . '_' . $format . '_' . $resolution . '_' . $quality . '_' . ($withText ? '1' : '0') . '_' . ($withGraphics ? '1' : '0') . '_' . $version; + $this->_normalize($format, $resolution, $quality, $withText, $withGraphics, $transparent, $version); + return 'FluidbookDocument_' . $this->id . '_' . $page . '_' . $format . '_' . $resolution . '_' . $quality . '_' . ($withText ? '1' : '0') . '_' . ($withGraphics ? '1' : '0') . '_' . ($transparent ? '1' : '0') . '_' . $version; } - public function getFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $version = 'html', $forceCheck = false, $forceProcess = false) + public function getFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $transparent = false, $version = 'html', $forceCheck = false, $forceProcess = false) { $forceCheckAll = $this->path() . 'CHECK'; if (file_exists($forceCheckAll)) { @@ -357,47 +357,47 @@ class FluidbookDocument extends ToolboxModel unlink($forceCheckAll); } - $this->_normalize($format, $resolution, $quality, $withText, $withGraphics, $version); + $this->_normalize($format, $resolution, $quality, $withText, $withGraphics, $transparent, $version); if ($forceProcess) { - $this->removeFile($page, $format, $resolution, $withText, $withGraphics, $version); + $this->removeFile($page, $format, $resolution, $withText, $withGraphics, $transparent, $version); } $doc = $this; - $cacheKey = $this->fileCacheKey($page, $format, $resolution, $quality, $withText, $withGraphics, $version); + $cacheKey = $this->fileCacheKey($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version); if ($forceCheck) { Cache::forget($cacheKey); } - $res = Cache::tags('fluidbook_document_' . $this->id)->rememberForever($cacheKey, function () use ($doc, $page, $format, $resolution, $quality, $withText, $withGraphics, $version) { - return $doc->_getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $version); + $res = Cache::tags('fluidbook_document_' . $this->id)->rememberForever($cacheKey, function () use ($doc, $page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version) { + return $doc->_getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version); }); if (!$res && !$forceProcess) { - return $this->getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $version, true, true); + return $this->getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version, true, true); } return $res; } - public function removeFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $version = 'html') + public function removeFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $transparent = false, $version = 'html') { - $path = $this->_getPath($page, $format, $resolution, $quality, $withText, $withGraphics, $version); + $path = $this->_getPath($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version); if (file_exists($path)) { unlink($path); } - Cache::forget($this->fileCacheKey($page, $format, $resolution, $quality, $withText, $withGraphics, $version)); + Cache::forget($this->fileCacheKey($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version)); } /** * @throws \Exception */ - public function _getFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $version = 'html', $forceCheck = true) + public function _getFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $transparent = false, $version = 'html', $forceCheck = true) { Farm::setRegion($this->getRegion()); - if (!$this->hasFile($page, $format, $resolution, $quality, $withText, $withGraphics, $version, $forceCheck)) { - return Farm::getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $version, $this->getResolutionRatio(), $this->getMobileFirstRatio(), $this->path()); + if (!$this->hasFile($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version, $forceCheck)) { + return Farm::getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version, $this->getResolutionRatio(), $this->getMobileFirstRatio(), $this->path()); } - $path = $this->_getPath($page, $format, $resolution, $quality, $withText, $withGraphics, $version); + $path = $this->_getPath($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version); touch($path); return $path; } diff --git a/app/Models/FluidbookPublication.php b/app/Models/FluidbookPublication.php index b24e6ecd8..49c7cbc5a 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -462,7 +462,7 @@ class FluidbookPublication extends ToolboxStatusModel } - public function getThumbFile($page, $format, $resolution = 'thumb', $withText = true, $withGraphics = true, $version = '', $force = false) + public function getThumbFile($page, $format, $resolution = 'thumb', $withText = true, $withGraphics = true, $transparent = false, $version = '', $force = false) { if ($this->pdfThumbnails) { $thumbpdf = $this->getAssetDir() . $this->pdfThumbnails; @@ -470,7 +470,7 @@ class FluidbookPublication extends ToolboxStatusModel if (file_exists($thumbpdf)) { try { Farm::setRegion($this->region); - $res = Farm::getFileFromPDF($thumbpdf, $page, $format, $resolution, $this->JPEGQuality, $withText, $withGraphics, $version, null, $force, 1); + $res = Farm::getFileFromPDF($thumbpdf, $page, $format, $resolution, $this->JPEGQuality, $withText, $withGraphics, $transparent, $version, null, $force, 1); return $res; } catch (\Exception $e) { throw new \Exception('Unable to generate thumbnails file from custom PDF "' . $this->pdfThumbnails . '" (original message : ' . $e->getMessage() . ')'); @@ -587,6 +587,11 @@ class FluidbookPublication extends ToolboxStatusModel return (float)$this->getDocumentSize($page)[1]; } + public function getImageFormat() + { + return $this->transparentPage ? 'png' : $this->imageFormat; + } + public function protected_path($path, $forceRegion = null) { $r = $forceRegion ?? $this->region; diff --git a/composer.lock b/composer.lock index 9f8667a5d..84cd440f8 100644 --- a/composer.lock +++ b/composer.lock @@ -2386,13 +2386,13 @@ "source": { "type": "git", "url": "git://git.cubedesigners.com/cubist_pdf.git", - "reference": "f9bf4dfe361d40d85006661f6036e33c2d62c38e" + "reference": "7281080cec3a34198993868c51695dfb81d64ad9" }, "dist": { "type": "tar", - "url": "https://composer.cubedesigners.com/dist/cubist/pdf/cubist-pdf-dev-master-26f90d.tar", - "reference": "f9bf4dfe361d40d85006661f6036e33c2d62c38e", - "shasum": "7b0e51b7ea7f1bc5cd08cf52887fd0059c5ef124" + "url": "https://composer.cubedesigners.com/dist/cubist/pdf/cubist-pdf-dev-master-059ad5.tar", + "reference": "7281080cec3a34198993868c51695dfb81d64ad9", + "shasum": "c3dae10e49532f0639d4ae855a6d7b24235690e8" }, "require": { "cubist/util": "dev-master", @@ -2428,7 +2428,7 @@ "cubist", "pdf" ], - "time": "2024-11-25T17:58:06+00:00" + "time": "2025-02-18T18:35:39+00:00" }, { "name": "cubist/scorm", @@ -3601,16 +3601,16 @@ }, { "name": "dragon-code/support", - "version": "6.15.1", + "version": "6.15.2", "source": { "type": "git", "url": "https://github.com/TheDragonCode/support.git", - "reference": "dd68d435d64873797a82b318021d49ba05e917bf" + "reference": "33679b6736619751a9ac8935f955f5a9f73ee996" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDragonCode/support/zipball/dd68d435d64873797a82b318021d49ba05e917bf", - "reference": "dd68d435d64873797a82b318021d49ba05e917bf", + "url": "https://api.github.com/repos/TheDragonCode/support/zipball/33679b6736619751a9ac8935f955f5a9f73ee996", + "reference": "33679b6736619751a9ac8935f955f5a9f73ee996", "shasum": "" }, "require": { @@ -3687,16 +3687,12 @@ "url": "https://boosty.to/dragon-code", "type": "boosty" }, - { - "url": "https://www.donationalerts.com/r/dragon_code", - "type": "donationalerts" - }, { "url": "https://yoomoney.ru/to/410012608840929", "type": "yoomoney" } ], - "time": "2024-12-18T12:33:59+00:00" + "time": "2025-02-17T10:17:56+00:00" }, { "name": "dragonmantank/cron-expression", @@ -4121,13 +4117,13 @@ "source": { "type": "git", "url": "git://git.cubedesigners.com/fluidbook_tools.git", - "reference": "9cda9349b8a9fdfe37d4af99b51499d9f6920759" + "reference": "c062513b02bcec19e7989d84414103547168afec" }, "dist": { "type": "tar", - "url": "https://composer.cubedesigners.com/dist/fluidbook/tools/fluidbook-tools-dev-master-0b3a6f.tar", - "reference": "9cda9349b8a9fdfe37d4af99b51499d9f6920759", - "shasum": "66f6b408b8a1052d9c7145b4e0e4f3406e0d4447" + "url": "https://composer.cubedesigners.com/dist/fluidbook/tools/fluidbook-tools-dev-master-879b04.tar", + "reference": "c062513b02bcec19e7989d84414103547168afec", + "shasum": "621a6e8f899210533c3f507ccf6f1aa0d4dfe53c" }, "require": { "barryvdh/laravel-debugbar": "*", @@ -4163,7 +4159,7 @@ } ], "description": "Fluidbook Tools", - "time": "2025-02-13T18:11:29+00:00" + "time": "2025-02-18T18:44:38+00:00" }, { "name": "fpdf/fpdf", @@ -7612,30 +7608,30 @@ }, { "name": "nothingworks/blade-svg", - "version": "1.7.2", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/blade-ui-kit/blade-icons.git", - "reference": "75a54a3f5a2810fcf6574ab23e91b6cc229a1b53" + "reference": "7b743f27476acb2ed04cb518213d78abe096e814" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/blade-ui-kit/blade-icons/zipball/75a54a3f5a2810fcf6574ab23e91b6cc229a1b53", - "reference": "75a54a3f5a2810fcf6574ab23e91b6cc229a1b53", + "url": "https://api.github.com/repos/blade-ui-kit/blade-icons/zipball/7b743f27476acb2ed04cb518213d78abe096e814", + "reference": "7b743f27476acb2ed04cb518213d78abe096e814", "shasum": "" }, "require": { - "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0", - "illuminate/filesystem": "^8.0|^9.0|^10.0|^11.0", - "illuminate/support": "^8.0|^9.0|^10.0|^11.0", - "illuminate/view": "^8.0|^9.0|^10.0|^11.0", + "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/filesystem": "^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/view": "^8.0|^9.0|^10.0|^11.0|^12.0", "php": "^7.4|^8.0", "symfony/console": "^5.3|^6.0|^7.0", "symfony/finder": "^5.3|^6.0|^7.0" }, "require-dev": { "mockery/mockery": "^1.5.1", - "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0", + "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0|^10.0", "phpunit/phpunit": "^9.0|^10.5|^11.0" }, "bin": [ @@ -7690,7 +7686,7 @@ } ], "abandoned": "blade-ui-kit/blade-icons", - "time": "2024-10-17T17:38:00+00:00" + "time": "2025-02-13T20:35:06+00:00" }, { "name": "nunomaduro/termwind", @@ -9900,16 +9896,16 @@ }, { "name": "rodneyrehm/plist", - "version": "v2.0.3", + "version": "v2.0.5", "source": { "type": "git", - "url": "https://github.com/TECLIB/CFPropertyList.git", - "reference": "eb1f97cc44427359be9f09e617d68eef57707617" + "url": "https://github.com/moodlehq/CFPropertyList.git", + "reference": "e3a09679d7c020c56f13a8200d50816b3c326733" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TECLIB/CFPropertyList/zipball/eb1f97cc44427359be9f09e617d68eef57707617", - "reference": "eb1f97cc44427359be9f09e617d68eef57707617", + "url": "https://api.github.com/repos/moodlehq/CFPropertyList/zipball/e3a09679d7c020c56f13a8200d50816b3c326733", + "reference": "e3a09679d7c020c56f13a8200d50816b3c326733", "shasum": "" }, "require": { @@ -9918,7 +9914,7 @@ "php": "^7.4 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^9.0", + "phpunit/phpunit": "^9.6.22", "squizlabs/php_codesniffer": "^3.2" }, "type": "library", @@ -9932,6 +9928,16 @@ "MIT" ], "authors": [ + { + "name": "Andrew Lyons", + "email": "andrew.lyons@moodle.com", + "role": "developer" + }, + { + "name": "Andrew Gosali", + "email": "andrew.gosali@moodle.com", + "role": "developer" + }, { "name": "Christian Kruse", "email": "cjk@wwwtech.de", @@ -9949,7 +9955,7 @@ } ], "description": "Library for reading and writing Apple's CFPropertyList (plist) files in XML as well as binary format.", - "homepage": "https://github.com/TECLIB/CFPropertyList", + "homepage": "https://github.com/moodlehq/CFPropertyList", "keywords": [ "CFPropertyList", "Core Foundation", @@ -9959,14 +9965,12 @@ "xml" ], "support": { - "docs": "http://teclib.github.io/CFPropertyList/howtos/", - "email": "contact@teclib.com", - "issues": "https://github.com/TECLIB/CFPropertyList/issues", - "rss": "https://teclib.github.io/CFPropertyList/feed.xml", - "source": "https://github.com/TECLIB/CFPropertyList" + "docs": "https://moodlehq.github.io/CFPropertyList/howtos/", + "issues": "https://github.com/moodlehq/CFPropertyList/issues", + "rss": "https://moodlehq.github.io/CFPropertyList/feed.xml", + "source": "https://github.com/moodlehq/CFPropertyList" }, - "abandoned": true, - "time": "2021-12-01T18:24:28+00:00" + "time": "2025-02-17T03:42:49+00:00" }, { "name": "rustici-software/scormcloud-api-v2-client-php", @@ -10090,16 +10094,16 @@ }, { "name": "spatie/db-dumper", - "version": "3.7.1", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/spatie/db-dumper.git", - "reference": "55d4d6710e1ab18c1e7ce2b22b8ad4bea2a30016" + "reference": "91e1fd4dc000aefc9753cda2da37069fc996baee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/db-dumper/zipball/55d4d6710e1ab18c1e7ce2b22b8ad4bea2a30016", - "reference": "55d4d6710e1ab18c1e7ce2b22b8ad4bea2a30016", + "url": "https://api.github.com/repos/spatie/db-dumper/zipball/91e1fd4dc000aefc9753cda2da37069fc996baee", + "reference": "91e1fd4dc000aefc9753cda2da37069fc996baee", "shasum": "" }, "require": { @@ -10137,7 +10141,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/db-dumper/tree/3.7.1" + "source": "https://github.com/spatie/db-dumper/tree/3.8.0" }, "funding": [ { @@ -10149,7 +10153,7 @@ "type": "github" } ], - "time": "2024-11-18T14:54:31+00:00" + "time": "2025-02-14T15:04:22+00:00" }, { "name": "spatie/image", @@ -10844,16 +10848,16 @@ }, { "name": "spatie/laravel-translatable", - "version": "6.10.2", + "version": "6.11.3", "source": { "type": "git", "url": "https://github.com/spatie/laravel-translatable.git", - "reference": "6150f6d55f4712279883d56490406f8a92a9c72a" + "reference": "2053c0c281b5f2845e704b6278d61f5e6c95d6d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-translatable/zipball/6150f6d55f4712279883d56490406f8a92a9c72a", - "reference": "6150f6d55f4712279883d56490406f8a92a9c72a", + "url": "https://api.github.com/repos/spatie/laravel-translatable/zipball/2053c0c281b5f2845e704b6278d61f5e6c95d6d2", + "reference": "2053c0c281b5f2845e704b6278d61f5e6c95d6d2", "shasum": "" }, "require": { @@ -10915,7 +10919,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-translatable/issues", - "source": "https://github.com/spatie/laravel-translatable/tree/6.10.2" + "source": "https://github.com/spatie/laravel-translatable/tree/6.11.3" }, "funding": [ { @@ -10923,7 +10927,7 @@ "type": "github" } ], - "time": "2025-02-03T08:49:09+00:00" + "time": "2025-02-14T14:46:34+00:00" }, { "name": "spatie/pdf-to-image", @@ -14491,25 +14495,25 @@ }, { "name": "venturecraft/revisionable", - "version": "1.41.0", + "version": "1.42.0", "source": { "type": "git", "url": "https://github.com/VentureCraft/revisionable.git", - "reference": "f2175b59041de6610d1586db186d0a0a782bd74e" + "reference": "8c7bba9a30f9c7435de38b62290a24e3bd896bad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/VentureCraft/revisionable/zipball/f2175b59041de6610d1586db186d0a0a782bd74e", - "reference": "f2175b59041de6610d1586db186d0a0a782bd74e", + "url": "https://api.github.com/repos/VentureCraft/revisionable/zipball/8c7bba9a30f9c7435de38b62290a24e3bd896bad", + "reference": "8c7bba9a30f9c7435de38b62290a24e3bd896bad", "shasum": "" }, "require": { - "illuminate/support": "~4.0|~5.0|~5.1|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", - "laravel/framework": "~5.4|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "~4.0|~5.0|~5.1|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "laravel/framework": "~5.4|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", "php": ">=5.4.0" }, "require-dev": { - "orchestra/testbench": "~3.0|^8.0|^9.0" + "orchestra/testbench": "~3.0|^8.0|^9.0|^10.0" }, "type": "library", "extra": { @@ -14551,7 +14555,7 @@ "issues": "https://github.com/VentureCraft/revisionable/issues", "source": "https://github.com/VentureCraft/revisionable" }, - "time": "2024-03-13T09:43:46+00:00" + "time": "2025-02-16T23:55:15+00:00" }, { "name": "vlucas/phpdotenv", @@ -16211,16 +16215,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "2.0.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "72e51f7c32c5aef7c8b462195b8c599b11199893" + "reference": "51087f87dcce2663e1fed4dfd4e56eccd580297e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/72e51f7c32c5aef7c8b462195b8c599b11199893", - "reference": "72e51f7c32c5aef7c8b462195b8c599b11199893", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/51087f87dcce2663e1fed4dfd4e56eccd580297e", + "reference": "51087f87dcce2663e1fed4dfd4e56eccd580297e", "shasum": "" }, "require": { @@ -16252,9 +16256,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.2" }, - "time": "2025-02-13T12:25:43+00:00" + "time": "2025-02-17T20:25:51+00:00" }, { "name": "phpunit/php-code-coverage", @@ -17785,30 +17789,30 @@ }, { "name": "spatie/error-solutions", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/spatie/error-solutions.git", - "reference": "d239a65235a1eb128dfa0a4e4c4ef032ea11b541" + "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/error-solutions/zipball/d239a65235a1eb128dfa0a4e4c4ef032ea11b541", - "reference": "d239a65235a1eb128dfa0a4e4c4ef032ea11b541", + "url": "https://api.github.com/repos/spatie/error-solutions/zipball/e495d7178ca524f2dd0fe6a1d99a1e608e1c9936", + "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936", "shasum": "" }, "require": { "php": "^8.0" }, "require-dev": { - "illuminate/broadcasting": "^10.0|^11.0", - "illuminate/cache": "^10.0|^11.0", - "illuminate/support": "^10.0|^11.0", - "livewire/livewire": "^2.11|^3.3.5", + "illuminate/broadcasting": "^10.0|^11.0|^12.0", + "illuminate/cache": "^10.0|^11.0|^12.0", + "illuminate/support": "^10.0|^11.0|^12.0", + "livewire/livewire": "^2.11|^3.5.20", "openai-php/client": "^0.10.1", - "orchestra/testbench": "^7.0|8.22.3|^9.0", - "pestphp/pest": "^2.20", - "phpstan/phpstan": "^1.11", + "orchestra/testbench": "8.22.3|^9.0|^10.0", + "pestphp/pest": "^2.20|^3.0", + "phpstan/phpstan": "^2.1", "psr/simple-cache": "^3.0", "psr/simple-cache-implementation": "^3.0", "spatie/ray": "^1.28", @@ -17847,7 +17851,7 @@ ], "support": { "issues": "https://github.com/spatie/error-solutions/issues", - "source": "https://github.com/spatie/error-solutions/tree/1.1.2" + "source": "https://github.com/spatie/error-solutions/tree/1.1.3" }, "funding": [ { @@ -17855,24 +17859,24 @@ "type": "github" } ], - "time": "2024-12-11T09:51:56+00:00" + "time": "2025-02-14T12:29:50+00:00" }, { "name": "spatie/flare-client-php", - "version": "1.10.0", + "version": "1.10.1", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "140a42b2c5d59ac4ecf8f5b493386a4f2eb28272" + "reference": "bf1716eb98bd689451b071548ae9e70738dce62f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/140a42b2c5d59ac4ecf8f5b493386a4f2eb28272", - "reference": "140a42b2c5d59ac4ecf8f5b493386a4f2eb28272", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/bf1716eb98bd689451b071548ae9e70738dce62f", + "reference": "bf1716eb98bd689451b071548ae9e70738dce62f", "shasum": "" }, "require": { - "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0|^12.0", "php": "^8.0", "spatie/backtrace": "^1.6.1", "symfony/http-foundation": "^5.2|^6.0|^7.0", @@ -17916,7 +17920,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.10.0" + "source": "https://github.com/spatie/flare-client-php/tree/1.10.1" }, "funding": [ { @@ -17924,7 +17928,7 @@ "type": "github" } ], - "time": "2024-12-02T14:30:06+00:00" + "time": "2025-02-14T13:42:06+00:00" }, { "name": "spatie/ignition", -- 2.39.5