From 34f4301cb8f390c977a12672f074340a35ee9593 Mon Sep 17 00:00:00 2001 From: Joanny Krafft Date: Wed, 31 Dec 2025 08:29:59 +0100 Subject: [PATCH 1/3] Update cms_pico app for nxt31 compatibility --- appinfo/app.php | 34 -- appinfo/info.xml | 3 +- composer.json | 6 +- composer.lock | 781 ++++++++----------------- lib/AppInfo/Application.php | 7 +- lib/AppInfo/Bootstrap.php | 31 + lib/Controller/ControllerTrait.php | 4 +- lib/Controller/PluginsController.php | 6 +- lib/Controller/SettingsController.php | 6 +- lib/Controller/TemplatesController.php | 6 +- lib/Controller/ThemesController.php | 6 +- lib/Controller/WebsitesController.php | 6 +- lib/Migration/AppDataRepairStep.php | 6 +- lib/Migration/MigrationTrait.php | 14 +- lib/Pico.php | 46 +- lib/Service/PicoService.php | 8 +- 16 files changed, 361 insertions(+), 609 deletions(-) delete mode 100644 appinfo/app.php create mode 100644 lib/AppInfo/Bootstrap.php diff --git a/appinfo/app.php b/appinfo/app.php deleted file mode 100644 index 90ee0147..00000000 --- a/appinfo/app.php +++ /dev/null @@ -1,34 +0,0 @@ -) - * @copyright Copyright (c) 2019, Daniel Rudolf () - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -use OCA\CMSPico\AppInfo\Application; - -if (is_file(__DIR__ . '/../vendor/autoload.php')) { - require_once(__DIR__ . '/../vendor/autoload.php'); -} - -require_once(__DIR__ . '/../lib/functions.php'); - -/** @var Application $app */ -$app = \OC::$server->query(Application::class); -$app->registerEventListener(); diff --git a/appinfo/info.xml b/appinfo/info.xml index 51795b5e..00b6baef 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -48,8 +48,9 @@ You want to learn more about Pico CMS for Nextcloud? Easy! Just download and ena https://raw.githubusercontent.com/nextcloud/cms_pico/master/screenshots/apache.png - + + OCA\CMSPico\AppInfo\Bootstrap OCA\CMSPico\Migration\AppDataRepairStep diff --git a/composer.json b/composer.json index 700e5534..af4120c3 100644 --- a/composer.json +++ b/composer.json @@ -26,13 +26,13 @@ "picocms/pico-deprecated": "^2.1", "picocms/composer-installer": "^1.0", "xemlock/htmlpurifier-html5": "~0.1.11", - "symfony/yaml" : "^2.8|^3.4|^4.4|^5.1" + "symfony/yaml" : "^2.8|^3.4|^4.4|^5.1", + "erusev/parsedown-extra": "^0.8.0@beta" }, "require-dev": { "phpunit/phpunit": "^8", "phrozenbyte/phpunit-throwable-asserts": "^1.1", - "phrozenbyte/phpunit-array-asserts": "^v1.1", - "incompass/coverage": "^1.0" + "phrozenbyte/phpunit-array-asserts": "^v1.1" }, "extra": { "pico-theme-dir": "appdata/themes/", diff --git a/composer.lock b/composer.lock index c31884a9..c7570083 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b6d526cb5daaf70c83a7777df1de42ab", + "content-hash": "06cd44391038d20c12b0de08611ac4f7", "packages": [ { "name": "erusev/parsedown", @@ -112,20 +112,20 @@ }, { "name": "ezyang/htmlpurifier", - "version": "v4.16.0", + "version": "v4.19.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" + "reference": "b287d2a16aceffbf6e0295559b39662612b77fcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/b287d2a16aceffbf6e0295559b39662612b77fcf", + "reference": "b287d2a16aceffbf6e0295559b39662612b77fcf", "shasum": "" }, "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "require-dev": { "cerdic/css-tidy": "^1.7 || ^2.0", @@ -167,9 +167,9 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.19.0" }, - "time": "2022-09-18T07:06:19+00:00" + "time": "2025-10-17T16:34:55+00:00" }, { "name": "picocms/composer-installer", @@ -414,11 +414,11 @@ }, "type": "pico-theme", "extra": { - "installer-name": "default", "branch-alias": { "dev-master": "2.1.x-dev", "dev-pico-3.0": "3.0.x-dev" - } + }, + "installer-name": "default" }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -457,20 +457,20 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -480,12 +480,9 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -519,7 +516,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" }, "funding": [ { @@ -530,12 +527,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/yaml", @@ -592,16 +593,16 @@ }, { "name": "twig/twig", - "version": "v1.44.7", + "version": "v1.44.8", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "0887422319889e442458e48e2f3d9add1a172ad5" + "reference": "b1f009c449e435a0384814e67205d9190a4d050e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/0887422319889e442458e48e2f3d9add1a172ad5", - "reference": "0887422319889e442458e48e2f3d9add1a172ad5", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/b1f009c449e435a0384814e67205d9190a4d050e", + "reference": "b1f009c449e435a0384814e67205d9190a4d050e", "shasum": "" }, "require": { @@ -654,7 +655,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v1.44.7" + "source": "https://github.com/twigphp/Twig/tree/v1.44.8" }, "funding": [ { @@ -666,7 +667,7 @@ "type": "tidelift" } ], - "time": "2022-09-28T08:38:36+00:00" + "time": "2024-09-09T17:17:16+00:00" }, { "name": "xemlock/htmlpurifier-html5", @@ -795,86 +796,18 @@ ], "time": "2022-12-30T00:15:36+00:00" }, - { - "name": "incompass/coverage", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/casechek/coverage.git", - "reference": "a7a8f0360bd9c3642f05f1cd8aee35860c29c40f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/casechek/coverage/zipball/a7a8f0360bd9c3642f05f1cd8aee35860c29c40f", - "reference": "a7a8f0360bd9c3642f05f1cd8aee35860c29c40f", - "shasum": "" - }, - "require": { - "symfony/console": "^3.3" - }, - "require-dev": { - "mikey179/vfsstream": "^1.6", - "mockery/mockery": "^0.9.9", - "phpunit/phpunit": "^5.0 || ^6.2", - "symfony/framework-bundle": "^3.3", - "symfony/phpunit-bridge": "^3.3" - }, - "bin": [ - "bin/coverage" - ], - "type": "project", - "extra": { - "phar-builder": { - "compression": "GZip", - "name": "coverage.phar", - "output-dir": "./", - "entry-point": "bin/coverage", - "include": [ - "bin", - "src" - ], - "include-dev": false, - "events": { - "build.after": [ - "chmod +x coverage.phar" - ] - } - } - }, - "autoload": { - "psr-4": { - "App\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Joe Mizzi", - "email": "joe@casechek.com" - } - ], - "description": "Coverage check for clover.xml files generated by phpunit.", - "support": { - "issues": "https://github.com/casechek/coverage/issues", - "source": "https://github.com/casechek/coverage/tree/1.0.0" - }, - "time": "2017-06-27T01:45:36+00:00" - }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.13.4", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", "shasum": "" }, "require": { @@ -882,11 +815,12 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", @@ -912,7 +846,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" }, "funding": [ { @@ -920,24 +854,25 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2025-08-01T08:46:24+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", @@ -978,9 +913,15 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", @@ -1035,28 +976,29 @@ }, { "name": "phplucidframe/console-table", - "version": "v1.2.4", + "version": "v1.4.0", "source": { "type": "git", "url": "https://github.com/phplucidframe/console-table.git", - "reference": "a973d911af96f3db42fca92cbeb1f473c9ad505e" + "reference": "8a3a571f6523e323f28d3a31d9991394c9db75f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phplucidframe/console-table/zipball/a973d911af96f3db42fca92cbeb1f473c9ad505e", - "reference": "a973d911af96f3db42fca92cbeb1f473c9ad505e", + "url": "https://api.github.com/repos/phplucidframe/console-table/zipball/8a3a571f6523e323f28d3a31d9991394c9db75f8", + "reference": "8a3a571f6523e323f28d3a31d9991394c9db75f8", "shasum": "" }, "require": { - "php": ">=5.3" + "ext-mbstring": "*", + "php": ">=7.1" }, "require-dev": { "phpunit/phpunit": "*" }, "type": "library", "autoload": { - "psr-0": { - "LucidFrame\\": "src/", + "psr-4": { + "LucidFrame\\": "src/LucidFrame/", "LucidFrameTest\\": "tests/" } }, @@ -1066,29 +1008,29 @@ ], "authors": [ { - "name": "Sithu K.", - "email": "cithukyaw@gmail.com" + "name": "Sithu", + "email": "sithu@phplucidframe.com" } ], "description": "Console Table", "support": { "issues": "https://github.com/phplucidframe/console-table/issues", - "source": "https://github.com/phplucidframe/console-table/tree/v1.2.4" + "source": "https://github.com/phplucidframe/console-table/tree/v1.4.0" }, - "time": "2019-03-03T12:17:32+00:00" + "time": "2025-05-27T14:28:44+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "7.0.15", + "version": "7.0.17", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "819f92bba8b001d4363065928088de22f25a3a48" + "reference": "40a4ed114a4aea5afd6df8d0f0c9cd3033097f66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/819f92bba8b001d4363065928088de22f25a3a48", - "reference": "819f92bba8b001d4363065928088de22f25a3a48", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/40a4ed114a4aea5afd6df8d0f0c9cd3033097f66", + "reference": "40a4ed114a4aea5afd6df8d0f0c9cd3033097f66", "shasum": "" }, "require": { @@ -1140,7 +1082,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.15" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.17" }, "funding": [ { @@ -1148,20 +1090,20 @@ "type": "github" } ], - "time": "2021-07-26T12:20:09+00:00" + "time": "2024-03-02T06:09:37+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "2.0.5", + "version": "2.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5" + "reference": "69deeb8664f611f156a924154985fbd4911eb36b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/69deeb8664f611f156a924154985fbd4911eb36b", + "reference": "69deeb8664f611f156a924154985fbd4911eb36b", "shasum": "" }, "require": { @@ -1200,7 +1142,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.6" }, "funding": [ { @@ -1208,7 +1150,7 @@ "type": "github" } ], - "time": "2021-12-02T12:42:26+00:00" + "time": "2024-03-01T13:39:50+00:00" }, { "name": "phpunit/php-text-template", @@ -1257,16 +1199,16 @@ }, { "name": "phpunit/php-timer", - "version": "2.1.3", + "version": "2.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" + "reference": "a691211e94ff39a34811abd521c31bd5b305b0bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/a691211e94ff39a34811abd521c31bd5b305b0bb", + "reference": "a691211e94ff39a34811abd521c31bd5b305b0bb", "shasum": "" }, "require": { @@ -1304,7 +1246,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.4" }, "funding": [ { @@ -1312,7 +1254,7 @@ "type": "github" } ], - "time": "2020-11-30T08:20:02+00:00" + "time": "2024-03-01T13:42:41+00:00" }, { "name": "phpunit/php-token-stream", @@ -1376,42 +1318,42 @@ }, { "name": "phpunit/phpunit", - "version": "8.5.34", + "version": "8.5.49", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "622d0186707f39a4ae71df3bcf42d759bb868854" + "reference": "2605ccb4744dbcc20e00a12b7082c86ab3431071" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/622d0186707f39a4ae71df3bcf42d759bb868854", - "reference": "622d0186707f39a4ae71df3bcf42d759bb868854", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2605ccb4744dbcc20e00a12b7082c86ab3431071", + "reference": "2605ccb4744dbcc20e00a12b7082c86ab3431071", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.5.0", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.0", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", "php": ">=7.2", - "phpunit/php-code-coverage": "^7.0.12", - "phpunit/php-file-iterator": "^2.0.4", + "phpunit/php-code-coverage": "^7.0.17", + "phpunit/php-file-iterator": "^2.0.6", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1.2", - "sebastian/comparator": "^3.0.5", - "sebastian/diff": "^3.0.2", - "sebastian/environment": "^4.2.3", - "sebastian/exporter": "^3.1.5", - "sebastian/global-state": "^3.0.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0.1", - "sebastian/type": "^1.1.3", + "phpunit/php-timer": "^2.1.4", + "sebastian/comparator": "^3.0.6", + "sebastian/diff": "^3.0.6", + "sebastian/environment": "^4.2.5", + "sebastian/exporter": "^3.1.8", + "sebastian/global-state": "^3.0.6", + "sebastian/object-enumerator": "^3.0.5", + "sebastian/resource-operations": "^2.0.3", + "sebastian/type": "^1.1.5", "sebastian/version": "^2.0.1" }, "suggest": { @@ -1454,7 +1396,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.34" + "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.49" }, "funding": [ { @@ -1465,25 +1407,33 @@ "url": "https://github.com/sebastianbergmann", "type": "github" }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, { "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", "type": "tidelift" } ], - "time": "2023-09-19T05:20:51+00:00" + "time": "2025-12-01T07:15:02+00:00" }, { "name": "phrozenbyte/phpunit-array-asserts", - "version": "v1.2.0", + "version": "v1.2.1", "source": { "type": "git", "url": "https://github.com/PhrozenByte/phpunit-array-asserts.git", - "reference": "b0e0a2d58cef49db4c68bd620b4b22f74fc87f7d" + "reference": "f21a111b8dc84131e05299754fdb11770bccb56c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhrozenByte/phpunit-array-asserts/zipball/b0e0a2d58cef49db4c68bd620b4b22f74fc87f7d", - "reference": "b0e0a2d58cef49db4c68bd620b4b22f74fc87f7d", + "url": "https://api.github.com/repos/PhrozenByte/phpunit-array-asserts/zipball/f21a111b8dc84131e05299754fdb11770bccb56c", + "reference": "f21a111b8dc84131e05299754fdb11770bccb56c", "shasum": "" }, "require": { @@ -1495,19 +1445,19 @@ "phpunit/phpunit": "<8.0" }, "require-dev": { - "incompass/coverage": "^1.0", "mockery/mockery": "^1.3", "php-parallel-lint/php-parallel-lint": "^1.2", "phpunit/phpunit": "^8", "psalm/plugin-mockery": "^0.7.0", "psalm/plugin-phpunit": "^0.15.1", + "rregeer/phpunit-coverage-check": "^0.3", "symfony/yaml": "^4.4", "vimeo/psalm": "^4.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -1537,20 +1487,20 @@ "issues": "https://github.com/PhrozenByte/phpunit-array-asserts/issues", "source": "https://github.com/PhrozenByte/phpunit-array-asserts" }, - "time": "2021-02-27T14:54:32+00:00" + "time": "2025-09-24T15:57:04+00:00" }, { "name": "phrozenbyte/phpunit-throwable-asserts", - "version": "v1.1.1", + "version": "v1.1.2", "source": { "type": "git", "url": "https://github.com/PhrozenByte/phpunit-throwable-asserts.git", - "reference": "590235e19a51313e03ac4110523a6d257b4c9e0a" + "reference": "c5c8022df6f866c0001b956051640017e6d9da36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhrozenByte/phpunit-throwable-asserts/zipball/590235e19a51313e03ac4110523a6d257b4c9e0a", - "reference": "590235e19a51313e03ac4110523a6d257b4c9e0a", + "url": "https://api.github.com/repos/PhrozenByte/phpunit-throwable-asserts/zipball/c5c8022df6f866c0001b956051640017e6d9da36", + "reference": "c5c8022df6f866c0001b956051640017e6d9da36", "shasum": "" }, "require": { @@ -1560,12 +1510,12 @@ "phpunit/phpunit": "<8.0" }, "require-dev": { - "incompass/coverage": "^1.0", "mockery/mockery": "^1.3", "php-parallel-lint/php-parallel-lint": "^1.2", "phpunit/phpunit": "^8", "psalm/plugin-mockery": "^0.7.0", "psalm/plugin-phpunit": "^0.15.1", + "rregeer/phpunit-coverage-check": "^0.3", "symfony/yaml": "^4.4", "vimeo/psalm": "^4.5" }, @@ -1602,70 +1552,20 @@ "issues": "https://github.com/PhrozenByte/phpunit-throwable-asserts/issues", "source": "https://github.com/PhrozenByte/phpunit-throwable-asserts" }, - "time": "2021-02-15T17:40:06+00:00" - }, - { - "name": "psr/log", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" - }, - "time": "2021-07-14T16:46:02+00:00" + "time": "2025-09-24T15:36:06+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" + "reference": "92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54", + "reference": "92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54", "shasum": "" }, "require": { @@ -1699,7 +1599,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.3" }, "funding": [ { @@ -1707,20 +1607,20 @@ "type": "github" } ], - "time": "2020-11-30T08:15:22+00:00" + "time": "2024-03-01T13:45:45+00:00" }, { "name": "sebastian/comparator", - "version": "3.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770" + "reference": "4b3c947888c81708b20fb081bb653a2ba68f989a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dc7ceb4a24aede938c7af2a9ed1de09609ca770", - "reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/4b3c947888c81708b20fb081bb653a2ba68f989a", + "reference": "4b3c947888c81708b20fb081bb653a2ba68f989a", "shasum": "" }, "require": { @@ -1773,28 +1673,40 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.5" + "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.6" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" } ], - "time": "2022-09-14T12:31:48+00:00" + "time": "2025-08-10T05:29:24+00:00" }, { "name": "sebastian/diff", - "version": "3.0.4", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "6296a0c086dd0117c1b78b059374d7fcbe7545ae" + "reference": "98ff311ca519c3aa73ccd3de053bdb377171d7b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/6296a0c086dd0117c1b78b059374d7fcbe7545ae", - "reference": "6296a0c086dd0117c1b78b059374d7fcbe7545ae", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/98ff311ca519c3aa73ccd3de053bdb377171d7b6", + "reference": "98ff311ca519c3aa73ccd3de053bdb377171d7b6", "shasum": "" }, "require": { @@ -1839,7 +1751,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/3.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/3.0.6" }, "funding": [ { @@ -1847,20 +1759,20 @@ "type": "github" } ], - "time": "2023-05-07T05:30:20+00:00" + "time": "2024-03-02T06:16:36+00:00" }, { "name": "sebastian/environment", - "version": "4.2.4", + "version": "4.2.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" + "reference": "56932f6049a0482853056ffd617c91ffcc754205" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/56932f6049a0482853056ffd617c91ffcc754205", + "reference": "56932f6049a0482853056ffd617c91ffcc754205", "shasum": "" }, "require": { @@ -1902,7 +1814,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" + "source": "https://github.com/sebastianbergmann/environment/tree/4.2.5" }, "funding": [ { @@ -1910,24 +1822,24 @@ "type": "github" } ], - "time": "2020-11-30T07:53:42+00:00" + "time": "2024-03-01T13:49:59+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.5", + "version": "3.1.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6" + "reference": "64cfeaa341951ceb2019d7b98232399d57bb2296" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/73a9676f2833b9a7c36968f9d882589cd75511e6", - "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64cfeaa341951ceb2019d7b98232399d57bb2296", + "reference": "64cfeaa341951ceb2019d7b98232399d57bb2296", "shasum": "" }, "require": { - "php": ">=7.0", + "php": ">=7.2", "sebastian/recursion-context": "^3.0" }, "require-dev": { @@ -1979,28 +1891,40 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.5" + "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.8" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" } ], - "time": "2022-09-14T06:00:17+00:00" + "time": "2025-09-24T05:55:14+00:00" }, { "name": "sebastian/global-state", - "version": "3.0.3", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "66783ce213de415b451b904bfef9dda0cf9aeae0" + "reference": "800689427e3e8cf57a8fe38fcd1d4344c9b2f046" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/66783ce213de415b451b904bfef9dda0cf9aeae0", - "reference": "66783ce213de415b451b904bfef9dda0cf9aeae0", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/800689427e3e8cf57a8fe38fcd1d4344c9b2f046", + "reference": "800689427e3e8cf57a8fe38fcd1d4344c9b2f046", "shasum": "" }, "require": { @@ -2043,28 +1967,40 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.6" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", + "type": "tidelift" } ], - "time": "2023-08-02T09:23:32+00:00" + "time": "2025-08-10T05:40:12+00:00" }, { "name": "sebastian/object-enumerator", - "version": "3.0.4", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" + "reference": "ac5b293dba925751b808e02923399fb44ff0d541" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/ac5b293dba925751b808e02923399fb44ff0d541", + "reference": "ac5b293dba925751b808e02923399fb44ff0d541", "shasum": "" }, "require": { @@ -2100,7 +2036,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.5" }, "funding": [ { @@ -2108,20 +2044,20 @@ "type": "github" } ], - "time": "2020-11-30T07:40:27+00:00" + "time": "2024-03-01T13:54:02+00:00" }, { "name": "sebastian/object-reflector", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" + "reference": "1d439c229e61f244ff1f211e5c99737f90c67def" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/1d439c229e61f244ff1f211e5c99737f90c67def", + "reference": "1d439c229e61f244ff1f211e5c99737f90c67def", "shasum": "" }, "require": { @@ -2155,7 +2091,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.3" }, "funding": [ { @@ -2163,20 +2099,20 @@ "type": "github" } ], - "time": "2020-11-30T07:37:18+00:00" + "time": "2024-03-01T13:56:04+00:00" }, { "name": "sebastian/recursion-context", - "version": "3.0.1", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" + "reference": "8fe7e75986a9d24b4cceae847314035df7703a5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/8fe7e75986a9d24b4cceae847314035df7703a5a", + "reference": "8fe7e75986a9d24b4cceae847314035df7703a5a", "shasum": "" }, "require": { @@ -2218,28 +2154,40 @@ "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.3" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" } ], - "time": "2020-11-30T07:34:24+00:00" + "time": "2025-08-10T05:25:53+00:00" }, { "name": "sebastian/resource-operations", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" + "reference": "72a7f7674d053d548003b16ff5a106e7e0e06eee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/72a7f7674d053d548003b16ff5a106e7e0e06eee", + "reference": "72a7f7674d053d548003b16ff5a106e7e0e06eee", "shasum": "" }, "require": { @@ -2269,8 +2217,7 @@ "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.3" }, "funding": [ { @@ -2278,20 +2225,20 @@ "type": "github" } ], - "time": "2020-11-30T07:30:19+00:00" + "time": "2024-03-01T13:59:09+00:00" }, { "name": "sebastian/type", - "version": "1.1.4", + "version": "1.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4" + "reference": "18f071c3a29892b037d35e6b20ddf3ea39b42874" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/0150cfbc4495ed2df3872fb31b26781e4e077eb4", - "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/18f071c3a29892b037d35e6b20ddf3ea39b42874", + "reference": "18f071c3a29892b037d35e6b20ddf3ea39b42874", "shasum": "" }, "require": { @@ -2326,7 +2273,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/1.1.4" + "source": "https://github.com/sebastianbergmann/type/tree/1.1.5" }, "funding": [ { @@ -2334,7 +2281,7 @@ "type": "github" } ], - "time": "2020-11-30T07:25:11+00:00" + "time": "2024-03-01T14:04:07+00:00" }, { "name": "sebastian/version", @@ -2383,254 +2330,18 @@ }, "time": "2016-10-03T07:35:21+00:00" }, - { - "name": "symfony/console", - "version": "v3.4.47", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a10b1da6fc93080c180bba7219b5ff5b7518fe81", - "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/process": "<3.3" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.3|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.3|~4.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/console/tree/v3.4.47" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-10-24T10:57:07+00:00" - }, - { - "name": "symfony/debug", - "version": "v4.4.44", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "1a692492190773c5310bc7877cb590c04c2f05be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/1a692492190773c5310bc7877cb590c04c2f05be", - "reference": "1a692492190773c5310bc7877cb590c04c2f05be", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.44" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "abandoned": "symfony/error-handler", - "time": "2022-07-28T16:29:46+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-28T09:04:16+00:00" - }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", "shasum": "" }, "require": { @@ -2659,7 +2370,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.3.1" }, "funding": [ { @@ -2667,12 +2378,14 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2025-11-17T20:03:58+00:00" } ], "aliases": [], "minimum-stability": "beta", - "stability-flags": [], + "stability-flags": { + "erusev/parsedown-extra": 10 + }, "prefer-stable": true, "prefer-lowest": false, "platform": { @@ -2680,5 +2393,5 @@ "ext-json": "*" }, "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 5a5878c9..76b2b0c5 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -33,6 +33,7 @@ use OCP\EventDispatcher\IEventDispatcher; use OCP\Group\Events\GroupDeletedEvent; use OCP\User\Events\UserDeletedEvent; +use Psr\Log\LoggerInterface; class Application extends App { @@ -50,10 +51,10 @@ public function __construct(array $urlParams = []) /** * Registers event listeners. */ - public function registerEventListener(): void +/** public function registerEventListener(): void { /** @var IEventDispatcher $eventDispatcher */ - $eventDispatcher = \OC::$server->query(IEventDispatcher::class); +/** $eventDispatcher = \OC::$server->query(IEventDispatcher::class); $eventDispatcher->addServiceListener(UserDeletedEvent::class, UserDeletedEventListener::class); $eventDispatcher->addServiceListener(GroupDeletedEvent::class, GroupDeletedEventListener::class); @@ -62,7 +63,7 @@ public function registerEventListener(): void ExternalStorageBackendEventListener::class ); } - +**/ /** * Returns the absolute path to this app. * diff --git a/lib/AppInfo/Bootstrap.php b/lib/AppInfo/Bootstrap.php new file mode 100644 index 00000000..ed764323 --- /dev/null +++ b/lib/AppInfo/Bootstrap.php @@ -0,0 +1,31 @@ +registerEventListener(UserDeletedEvent::class, UserDeletedEventListener::class); + $context->registerEventListener(GroupDeletedEvent::class, GroupDeletedEventListener::class); + $context->registerEventListener('OCA\\Files_External::loadAdditionalBackends', ExternalStorageBackendEventListener::class); + } + + public function boot(IBootContext $context): void { + // ✅ Charger l’autoloader Composer + $autoload = \dirname(__DIR__, 2) . '/vendor/autoload.php'; + if (is_file($autoload)) { + require_once $autoload; + } + } +} diff --git a/lib/Controller/ControllerTrait.php b/lib/Controller/ControllerTrait.php index 2636f78c..81aa8853 100644 --- a/lib/Controller/ControllerTrait.php +++ b/lib/Controller/ControllerTrait.php @@ -27,11 +27,11 @@ use OCA\CMSPico\AppInfo\Application; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; -use OCP\ILogger; +use Psr\Log\LoggerInterface; trait ControllerTrait { - /** @var ILogger */ + /** @var LoggerInterface */ private $logger; /** diff --git a/lib/Controller/PluginsController.php b/lib/Controller/PluginsController.php index 4781f75d..263cbdef 100644 --- a/lib/Controller/PluginsController.php +++ b/lib/Controller/PluginsController.php @@ -32,7 +32,7 @@ use OCP\AppFramework\Controller; use OCP\AppFramework\Http\DataResponse; use OCP\IL10N; -use OCP\ILogger; +use Psr\Log\LoggerInterface; use OCP\IRequest; class PluginsController extends Controller @@ -50,10 +50,10 @@ class PluginsController extends Controller * * @param IRequest $request * @param IL10N $l10n - * @param ILogger $logger + * @param LoggerInterface $logger * @param PluginsService $pluginsService */ - public function __construct(IRequest $request, IL10N $l10n, ILogger $logger, PluginsService $pluginsService) + public function __construct(IRequest $request, IL10N $l10n, LoggerInterface $logger, PluginsService $pluginsService) { parent::__construct(Application::APP_NAME, $request); diff --git a/lib/Controller/SettingsController.php b/lib/Controller/SettingsController.php index ad2b77e7..1e411f9b 100644 --- a/lib/Controller/SettingsController.php +++ b/lib/Controller/SettingsController.php @@ -29,7 +29,7 @@ use OCA\CMSPico\Service\WebsitesService; use OCP\AppFramework\Controller; use OCP\AppFramework\Http\DataResponse; -use OCP\ILogger; +use Psr\Log\LoggerInterface; use OCP\IRequest; class SettingsController extends Controller @@ -43,10 +43,10 @@ class SettingsController extends Controller * SettingsController constructor. * * @param IRequest $request - * @param ILogger $logger + * @param LoggerInterface $logger * @param WebsitesService $websitesService */ - public function __construct(IRequest $request, ILogger $logger, WebsitesService $websitesService) + public function __construct(IRequest $request, LoggerInterface $logger, WebsitesService $websitesService) { parent::__construct(Application::APP_NAME, $request); diff --git a/lib/Controller/TemplatesController.php b/lib/Controller/TemplatesController.php index ded4e843..84868161 100644 --- a/lib/Controller/TemplatesController.php +++ b/lib/Controller/TemplatesController.php @@ -32,7 +32,7 @@ use OCP\AppFramework\Controller; use OCP\AppFramework\Http\DataResponse; use OCP\IL10N; -use OCP\ILogger; +use Psr\Log\LoggerInterface; use OCP\IRequest; class TemplatesController extends Controller @@ -50,10 +50,10 @@ class TemplatesController extends Controller * * @param IRequest $request * @param IL10N $l10n - * @param ILogger $logger + * @param LoggerInterface $logger * @param TemplatesService $templatesService */ - public function __construct(IRequest $request, IL10N $l10n, ILogger $logger, TemplatesService $templatesService) + public function __construct(IRequest $request, IL10N $l10n, LoggerInterface $logger, TemplatesService $templatesService) { parent::__construct(Application::APP_NAME, $request); diff --git a/lib/Controller/ThemesController.php b/lib/Controller/ThemesController.php index e1ea8c11..1a5e3f65 100644 --- a/lib/Controller/ThemesController.php +++ b/lib/Controller/ThemesController.php @@ -32,7 +32,7 @@ use OCP\AppFramework\Controller; use OCP\AppFramework\Http\DataResponse; use OCP\IL10N; -use OCP\ILogger; +use Psr\Log\LoggerInterface; use OCP\IRequest; class ThemesController extends Controller @@ -50,10 +50,10 @@ class ThemesController extends Controller * * @param IRequest $request * @param IL10N $l10n - * @param ILogger $logger + * @param LoggerInterface $logger * @param ThemesService $themesService */ - public function __construct(IRequest $request, IL10N $l10n, ILogger $logger, ThemesService $themesService) + public function __construct(IRequest $request, IL10N $l10n, LoggerInterface $logger, ThemesService $themesService) { parent::__construct(Application::APP_NAME, $request); diff --git a/lib/Controller/WebsitesController.php b/lib/Controller/WebsitesController.php index 5299f705..109d60d7 100644 --- a/lib/Controller/WebsitesController.php +++ b/lib/Controller/WebsitesController.php @@ -40,7 +40,7 @@ use OCP\AppFramework\Controller; use OCP\AppFramework\Http\DataResponse; use OCP\IL10N; -use OCP\ILogger; +use Psr\Log\LoggerInterface; use OCP\IRequest; use OCP\IUserSession; use function OCA\CMSPico\t; @@ -64,14 +64,14 @@ class WebsitesController extends Controller * @param IRequest $request * @param IUserSession $userSession * @param IL10N $l10n - * @param ILogger $logger + * @param LoggerInterface $logger * @param WebsitesService $websitesService */ public function __construct( IRequest $request, IUserSession $userSession, IL10N $l10n, - ILogger $logger, + LoggerInterface $logger, WebsitesService $websitesService ) { parent::__construct(Application::APP_NAME, $request); diff --git a/lib/Migration/AppDataRepairStep.php b/lib/Migration/AppDataRepairStep.php index e25601a5..f4e9b7a4 100644 --- a/lib/Migration/AppDataRepairStep.php +++ b/lib/Migration/AppDataRepairStep.php @@ -34,7 +34,7 @@ use OCA\CMSPico\Service\WebsitesService; use OCP\Files\NotFoundException; use OCP\IGroupManager; -use OCP\ILogger; +use Psr\Log\LoggerInterface; use OCP\Migration\IOutput; use OCP\Migration\IRepairStep; @@ -72,7 +72,7 @@ class AppDataRepairStep implements IRepairStep /** * AppDataRepairStep constructor. * - * @param ILogger $logger + * @param LoggerInterface $logger * @param IGroupManager $groupManager * @param WebsitesService $websitesService * @param ConfigService $configService @@ -83,7 +83,7 @@ class AppDataRepairStep implements IRepairStep * @param MiscService $miscService */ public function __construct( - ILogger $logger, + LoggerInterface $logger, IGroupManager $groupManager, WebsitesService $websitesService, ConfigService $configService, diff --git a/lib/Migration/MigrationTrait.php b/lib/Migration/MigrationTrait.php index 3da71fd5..e4b23526 100644 --- a/lib/Migration/MigrationTrait.php +++ b/lib/Migration/MigrationTrait.php @@ -25,21 +25,21 @@ namespace OCA\CMSPico\Migration; use OCA\CMSPico\AppInfo\Application; -use OCP\ILogger; +use Psr\Log\LoggerInterface; use OCP\Migration\IOutput; trait MigrationTrait { - /** @var ILogger */ + /** @var LoggerInterface */ private $logger; /** @var IOutput */ private $output; /** - * @param ILogger $logger + * @param LoggerInterface $logger */ - protected function setLogger(ILogger $logger): void + protected function setLogger(LoggerInterface $logger): void { $this->logger = $logger; } @@ -63,7 +63,8 @@ protected function logInfo(string $message, ...$arguments): void } $message = sprintf($message, ...$arguments); - $this->logger->log(ILogger::INFO, $message, [ 'app' => Application::APP_NAME ]); + /**$this->logger->log(LoggerInterface::INFO, $message, [ 'app' => Application::APP_NAME ]);**/ + $this->logger->info($message, [ 'app' => Application::APP_NAME ]); $this->output->info($message); } @@ -78,7 +79,8 @@ protected function logWarning(string $message, ...$arguments): void } $message = sprintf($message, ...$arguments); - $this->logger->log(ILogger::WARN, $message, [ 'app' => Application::APP_NAME ]); + /**$this->logger->log(LoggerInterface::WARN, $message, [ 'app' => Application::APP_NAME ]);**/ + $this->logger->warning($message, [ 'app' => Application::APP_NAME ]); $this->output->warning($message); } diff --git a/lib/Pico.php b/lib/Pico.php index 5b70ec5d..73d6b331 100644 --- a/lib/Pico.php +++ b/lib/Pico.php @@ -25,6 +25,8 @@ namespace OCA\CMSPico; +require_once __DIR__ . '/../vendor/autoload.php'; + use HTMLPurifier; use HTMLPurifier_Config; use HTMLPurifier_HTML5Config; @@ -195,9 +197,11 @@ protected function purifyFileMeta(array $meta): array $newMeta = []; foreach ($meta as $key => $value) { if (is_array($value)) { - $newMeta[$key] = $this->purifyFileMeta($value); +/* $newMeta[$key] = $this->purifyFileMeta($value);*/ + $newMeta[$key] = $value; } else { - $newMeta[$key] = $this->getHtmlPurifier()->purify($value); +/* $newMeta[$key] = $this->getHtmlPurifier()->purify($value);*/ + $newMeta[$key] = $value; } } @@ -227,7 +231,8 @@ public function parseFileContent($markdown, $singleLine = false) */ protected function purifyFileContent(string $content): string { - return $this->getHtmlPurifier()->purify($content); +/* return $this->getHtmlPurifier()->purify($content);*/ + return $content; } /** @@ -261,7 +266,40 @@ private function getHtmlPurifierConfig(): HTMLPurifier_Config $allowedSchemes = array_merge($config->get('URI.AllowedSchemes'), [ 'data' => true ]); $config->set('URI.AllowedSchemes', $allowedSchemes); - $config->set('HTML.Allowed', 'a[href|target]'); +/* $config->set('HTML.Allowed', 'a[href|target]');*/ + $config->set( + 'HTML.Allowed', + implode(',', [ + 'a[href|target|rel]', + 'p', + 'br', + 'hr', + 'strong', + 'em', + 'blockquote', + 'code', + 'pre', + 'ul', + 'ol', + 'li', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'div', + 'span', + 'img[src|alt|title|width|height]', + 'table', + 'thead', + 'tbody', + 'tr', + 'td', + 'th', + ]) +); + $config->set('Attr.AllowedFrameTargets', [ '_blank' ]); $config->finalize(); diff --git a/lib/Service/PicoService.php b/lib/Service/PicoService.php index a9f2090d..76845061 100644 --- a/lib/Service/PicoService.php +++ b/lib/Service/PicoService.php @@ -42,7 +42,7 @@ use OCP\Files\InvalidPathException; use OCP\Files\NotFoundException; use OCP\Files\NotPermittedException; -use OCP\ILogger; +use Psr\Log\LoggerInterface; class PicoService { @@ -67,7 +67,7 @@ class PicoService /** @var string */ public const CONTENT_EXT = '.md'; - /** @var ILogger */ + /** @var LoggerInterface */ private $logger; /** @var AssetsService */ @@ -88,7 +88,7 @@ class PicoService /** * PicoService constructor. * - * @param ILogger $logger + * @param LoggerInterface $logger * @param AssetsService $assetsService * @param ThemesService $themesService * @param PluginsService $pluginsService @@ -96,7 +96,7 @@ class PicoService * @param MiscService $miscService */ public function __construct( - ILogger $logger, + LoggerInterface $logger, AssetsService $assetsService, ThemesService $themesService, PluginsService $pluginsService, From 6f522024b8a97e0e6c85b7baa7ed2f94b788f039 Mon Sep 17 00:00:00 2001 From: Joanny Krafft <144920174+jkraffthha@users.noreply.github.com> Date: Wed, 31 Dec 2025 08:55:01 +0100 Subject: [PATCH 2/3] Update README with Nextcloud 26 compatibility details Added compatibility information for Nextcloud 26 and noted potential issues with HTML purifier. Signed-off-by: Joanny Krafft <144920174+jkraffthha@users.noreply.github.com> --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 4a91e321..cbdaf05d 100644 --- a/README.md +++ b/README.md @@ -87,3 +87,9 @@ If you want to get started using Pico, please refer to [Pico's user docs](http:/ When the docs cannot answer your question, you can get help by either joining us on [#picocms on Libera.Chat](https://web.libera.chat/#picocms) ([logs](http://picocms.org/irc-logs)), or by creating a new thread on [Nextcloud Help](https://help.nextcloud.com/c/apps/cms-pico). When you’re experiencing problems with Pico CMS for Nextcloud, please don’t hesitate to create a new [Issue](https://github.com/nextcloud/cms_pico/issues) on GitHub. Concerning problems with Pico, open a new [Issue](https://github.com/picocms/Pico/issues) on Pico's GitHub repository. If you have problems with plugins or themes, please refer to the website of the developer of this plugin or theme. **Before creating a new Issue,** please make sure the problem wasn’t reported yet using GitHubs search engine on both the [`nextcloud/cms_pico`](https://github.com/nextcloud/cms_pico/search?type=Issues) and [`picocms/Pico`](https://github.com/picocms/Pico/search?type=Issues) repos, as well as the [search of Nextcloud Help](https://help.nextcloud.com/search). Please describe your issue as clear as possible and always include the *exact error message* (if any) as well as all related messages in Nextcloud's logs. Also include the exact *Nextcloud version* and the *version of Pico CMS for Nextcloud* you’re using. Provided that you’re using custom *plugins* and/or *themes*, include a list of them too. We need information about the *actual and expected behavior* , the *steps to reproduce* the problem, and what steps you have taken to resolve the problem by yourself (i.e. *your own troubleshooting*). + +## Nextcloud 26+ compatibility +I've made this app compatible with Nextcloud 31, however, for now, the HTML purifier is bypassed which might be an issue depending of your user case. +Also, as this project is using other unmaintained projects, it is very possible that things might break again in the future. +I will to my best to keep it up and running until my users have agreed to move to another platform. +Also, keep in mind that PHP knowledge and experience is limited, so, for now it works on my current Nexcloud instance, but it might not with your configuration. From ef3a88a2ba387a243122df90dd8c160a5a818b80 Mon Sep 17 00:00:00 2001 From: Joanny Krafft <144920174+jkraffthha@users.noreply.github.com> Date: Fri, 2 Jan 2026 09:46:29 +0100 Subject: [PATCH 3/3] Update README for Nextcloud compatibility details Clarified compatibility notes and improved language. Signed-off-by: Joanny Krafft <144920174+jkraffthha@users.noreply.github.com> --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index cbdaf05d..16f1d213 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ When the docs cannot answer your question, you can get help by either joining us **Before creating a new Issue,** please make sure the problem wasn’t reported yet using GitHubs search engine on both the [`nextcloud/cms_pico`](https://github.com/nextcloud/cms_pico/search?type=Issues) and [`picocms/Pico`](https://github.com/picocms/Pico/search?type=Issues) repos, as well as the [search of Nextcloud Help](https://help.nextcloud.com/search). Please describe your issue as clear as possible and always include the *exact error message* (if any) as well as all related messages in Nextcloud's logs. Also include the exact *Nextcloud version* and the *version of Pico CMS for Nextcloud* you’re using. Provided that you’re using custom *plugins* and/or *themes*, include a list of them too. We need information about the *actual and expected behavior* , the *steps to reproduce* the problem, and what steps you have taken to resolve the problem by yourself (i.e. *your own troubleshooting*). ## Nextcloud 26+ compatibility -I've made this app compatible with Nextcloud 31, however, for now, the HTML purifier is bypassed which might be an issue depending of your user case. +:exclamation: I've made this app compatible with Nextcloud 31, however, for now, the HTML purifier is bypassed which might be an issue depending of your user case. Also, as this project is using other unmaintained projects, it is very possible that things might break again in the future. -I will to my best to keep it up and running until my users have agreed to move to another platform. -Also, keep in mind that PHP knowledge and experience is limited, so, for now it works on my current Nexcloud instance, but it might not with your configuration. +I will do my best to keep it up and running until my users have agreed to move to another platform. +Also, keep in mind that my PHP knowledge and experience is limited, so, for now it works on my current Nextcloud instance, but it might not with your configuration.