From 4fb28787286cb01b92980313157a4ae9e0e9cff1 Mon Sep 17 00:00:00 2001
From: Shish
Date: Tue, 28 Feb 2023 23:17:00 +0000
Subject: [PATCH 01/28] admins can vote too
---
core/userclass.php | 1 +
1 file changed, 1 insertion(+)
diff --git a/core/userclass.php b/core/userclass.php
index d3fbc7e9..fc04b60b 100644
--- a/core/userclass.php
+++ b/core/userclass.php
@@ -184,6 +184,7 @@ new UserClass("admin", "base", [
Permissions::EDIT_FEATURE => true,
Permissions::BULK_EDIT_VOTE => true,
Permissions::EDIT_OTHER_VOTE => true,
+ Permissions::CREATE_VOTE => true,
Permissions::VIEW_SYSINTO => true,
Permissions::HELLBANNED => false,
From 3b31187ea19d0d30194ae657cb725d3a22071422 Mon Sep 17 00:00:00 2001
From: Shish
Date: Wed, 8 Mar 2023 22:26:30 +0000
Subject: [PATCH 02/28] bump
---
composer.lock | 160 +++++++++++++++++++++++++-------------------------
1 file changed, 80 insertions(+), 80 deletions(-)
diff --git a/composer.lock b/composer.lock
index dca45b1d..bf2bf72a 100644
--- a/composer.lock
+++ b/composer.lock
@@ -171,27 +171,27 @@
"source": {
"type": "git",
"url": "https://github.com/google/recaptcha.git",
- "reference": "ed5645e799e43afa9eb181f214dc52f22982682d"
+ "reference": "6ffa193021aa0e369a3c5b3909de2b4ed97ac359"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/google/recaptcha/zipball/ed5645e799e43afa9eb181f214dc52f22982682d",
- "reference": "ed5645e799e43afa9eb181f214dc52f22982682d",
+ "url": "https://api.github.com/repos/google/recaptcha/zipball/6ffa193021aa0e369a3c5b3909de2b4ed97ac359",
+ "reference": "6ffa193021aa0e369a3c5b3909de2b4ed97ac359",
"shasum": ""
},
"require": {
- "php": ">=5.5"
+ "php": ">=8"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^2.2.20|^2.15",
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpunit": "^4.8.36|^5.7.27|^6.59|^7.5.11"
+ "friendsofphp/php-cs-fixer": "^3.14",
+ "php-coveralls/php-coveralls": "^2.5",
+ "phpunit/phpunit": "^10"
},
"default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.2.x-dev"
+ "dev-master": "1.3.x-dev"
}
},
"autoload": {
@@ -216,7 +216,7 @@
"issues": "https://github.com/google/recaptcha/issues",
"source": "https://github.com/google/recaptcha"
},
- "time": "2021-10-04T09:40:45+00:00"
+ "time": "2023-02-20T17:27:30+00:00"
},
{
"name": "ifixit/php-akismet",
@@ -563,12 +563,12 @@
"source": {
"type": "git",
"url": "https://github.com/shish/gqla.git",
- "reference": "f3c02ec9bcb6b43cc4963c6d0529bf3334f4684a"
+ "reference": "26bf0405445f4e32e68cd7f1ea2256e81c6c42cb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/shish/gqla/zipball/f3c02ec9bcb6b43cc4963c6d0529bf3334f4684a",
- "reference": "f3c02ec9bcb6b43cc4963c6d0529bf3334f4684a",
+ "url": "https://api.github.com/repos/shish/gqla/zipball/26bf0405445f4e32e68cd7f1ea2256e81c6c42cb",
+ "reference": "26bf0405445f4e32e68cd7f1ea2256e81c6c42cb",
"shasum": ""
},
"require": {
@@ -608,7 +608,7 @@
"issues": "https://github.com/shish/gqla/issues",
"source": "https://github.com/shish/gqla/tree/main"
},
- "time": "2023-02-16T01:02:40+00:00"
+ "time": "2023-03-03T00:12:44+00:00"
},
{
"name": "shish/microcrud",
@@ -719,16 +719,16 @@
},
{
"name": "webonyx/graphql-php",
- "version": "v15.1.0",
+ "version": "v15.2.1",
"source": {
"type": "git",
"url": "https://github.com/webonyx/graphql-php.git",
- "reference": "c58c08f3e2d6c43a8e0bb4bcc61ecb2a3e4f85df"
+ "reference": "6b02da9313065889eb783d623567476500a572ef"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/c58c08f3e2d6c43a8e0bb4bcc61ecb2a3e4f85df",
- "reference": "c58c08f3e2d6c43a8e0bb4bcc61ecb2a3e4f85df",
+ "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/6b02da9313065889eb783d623567476500a572ef",
+ "reference": "6b02da9313065889eb783d623567476500a572ef",
"shasum": ""
},
"require": {
@@ -740,13 +740,13 @@
"amphp/amp": "^2.6",
"dms/phpunit-arraysubset-asserts": "^0.4",
"ergebnis/composer-normalize": "^2.28",
- "mll-lab/php-cs-fixer-config": "^4.4",
+ "mll-lab/php-cs-fixer-config": "^5.0",
"nyholm/psr7": "^1.5",
"phpbench/phpbench": "^1.2",
"phpstan/extension-installer": "^1.1",
- "phpstan/phpstan": "1.9.14",
- "phpstan/phpstan-phpunit": "1.3.3",
- "phpstan/phpstan-strict-rules": "1.4.5",
+ "phpstan/phpstan": "1.10.3",
+ "phpstan/phpstan-phpunit": "1.3.8",
+ "phpstan/phpstan-strict-rules": "1.5.0",
"phpunit/phpunit": "^9.5",
"psr/http-message": "^1",
"react/http": "^1.6",
@@ -777,7 +777,7 @@
],
"support": {
"issues": "https://github.com/webonyx/graphql-php/issues",
- "source": "https://github.com/webonyx/graphql-php/tree/v15.1.0"
+ "source": "https://github.com/webonyx/graphql-php/tree/v15.2.1"
},
"funding": [
{
@@ -785,7 +785,7 @@
"type": "open_collective"
}
],
- "time": "2023-02-04T15:00:26+00:00"
+ "time": "2023-02-28T13:00:18+00:00"
}
],
"packages-dev": [
@@ -1774,12 +1774,12 @@
"source": {
"type": "git",
"url": "https://github.com/schmittjoh/serializer.git",
- "reference": "402a12629e3ad6d6897273769808a28c32745309"
+ "reference": "ac0b16ee5317d1aacc41deb91c6c325eae97c176"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/402a12629e3ad6d6897273769808a28c32745309",
- "reference": "402a12629e3ad6d6897273769808a28c32745309",
+ "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/ac0b16ee5317d1aacc41deb91c6c325eae97c176",
+ "reference": "ac0b16ee5317d1aacc41deb91c6c325eae97c176",
"shasum": ""
},
"require": {
@@ -1801,7 +1801,7 @@
"phpbench/phpbench": "^1.0",
"phpstan/phpstan": "^1.0.2",
"phpunit/phpunit": "^8.5.21||^9.0",
- "psr/container": "^1.0",
+ "psr/container": "^1.0|^2.0",
"symfony/dependency-injection": "^3.0|^4.0|^5.0|^6.0",
"symfony/expression-language": "^3.2|^4.0|^5.0|^6.0",
"symfony/filesystem": "^3.0|^4.0|^5.0|^6.0",
@@ -1855,7 +1855,7 @@
],
"support": {
"issues": "https://github.com/schmittjoh/serializer/issues",
- "source": "https://github.com/schmittjoh/serializer/tree/master"
+ "source": "https://github.com/schmittjoh/serializer/tree/3.23.0"
},
"funding": [
{
@@ -1863,7 +1863,7 @@
"type": "github"
}
],
- "time": "2023-02-03T05:06:38+00:00"
+ "time": "2023-02-17T17:40:48+00:00"
},
{
"name": "myclabs/deep-copy",
@@ -2107,20 +2107,20 @@
"source": {
"type": "git",
"url": "https://github.com/schmittjoh/php-option.git",
- "reference": "00430c0532ae544fb1c81e45705b3d356bfc25d0"
+ "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/00430c0532ae544fb1c81e45705b3d356bfc25d0",
- "reference": "00430c0532ae544fb1c81e45705b3d356bfc25d0",
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e",
+ "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e",
"shasum": ""
},
"require": {
"php": "^7.2.5 || ^8.0"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.1",
- "phpunit/phpunit": "^8.5.30 || ^9.5.25"
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12"
},
"default-branch": true,
"type": "library",
@@ -2163,7 +2163,7 @@
],
"support": {
"issues": "https://github.com/schmittjoh/php-option/issues",
- "source": "https://github.com/schmittjoh/php-option/tree/master"
+ "source": "https://github.com/schmittjoh/php-option/tree/1.9.1"
},
"funding": [
{
@@ -2175,7 +2175,7 @@
"type": "tidelift"
}
],
- "time": "2022-10-15T20:52:05+00:00"
+ "time": "2023-02-25T19:38:58+00:00"
},
{
"name": "phpstan/phpdoc-parser",
@@ -2228,12 +2228,12 @@
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "e4e424021a9a9ec9f4c06572c55feb09737d1f8e"
+ "reference": "aed9319bda4e1bf862e2576baf28949877891853"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e4e424021a9a9ec9f4c06572c55feb09737d1f8e",
- "reference": "e4e424021a9a9ec9f4c06572c55feb09737d1f8e",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/aed9319bda4e1bf862e2576baf28949877891853",
+ "reference": "aed9319bda4e1bf862e2576baf28949877891853",
"shasum": ""
},
"require": {
@@ -2280,7 +2280,7 @@
"type": "tidelift"
}
],
- "time": "2023-02-15T20:23:03+00:00"
+ "time": "2023-03-02T09:48:34+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -2288,19 +2288,19 @@
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "8083be52c6f5ba5a48eafa154e0aeefd96bda098"
+ "reference": "700aa825126460ce5be79ae5e1cf2e2c5b71588b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/8083be52c6f5ba5a48eafa154e0aeefd96bda098",
- "reference": "8083be52c6f5ba5a48eafa154e0aeefd96bda098",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/700aa825126460ce5be79ae5e1cf2e2c5b71588b",
+ "reference": "700aa825126460ce5be79ae5e1cf2e2c5b71588b",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"ext-xmlwriter": "*",
- "nikic/php-parser": "^4.14",
+ "nikic/php-parser": "^4.15",
"php": ">=7.3",
"phpunit/php-file-iterator": "^3.0.3",
"phpunit/php-text-template": "^2.0.2",
@@ -2357,7 +2357,7 @@
"type": "github"
}
],
- "time": "2023-02-11T08:53:26+00:00"
+ "time": "2023-02-27T12:51:14+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -2606,12 +2606,12 @@
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "4e6f3c050b54192d0a28c6f314a3567c00a7d017"
+ "reference": "d6454d6dd71024848893a1e2d1f1dd78683351db"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4e6f3c050b54192d0a28c6f314a3567c00a7d017",
- "reference": "4e6f3c050b54192d0a28c6f314a3567c00a7d017",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d6454d6dd71024848893a1e2d1f1dd78683351db",
+ "reference": "d6454d6dd71024848893a1e2d1f1dd78683351db",
"shasum": ""
},
"require": {
@@ -2700,7 +2700,7 @@
"type": "tidelift"
}
],
- "time": "2023-02-14T15:49:39+00:00"
+ "time": "2023-02-28T06:43:37+00:00"
},
{
"name": "psr/cache",
@@ -4136,12 +4136,12 @@
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "766d8f0b461e01dcbb352e02dc72455b1e55aeb8"
+ "reference": "1090bd292e4de35682f80e94d196c62aab4b3ad7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/766d8f0b461e01dcbb352e02dc72455b1e55aeb8",
- "reference": "766d8f0b461e01dcbb352e02dc72455b1e55aeb8",
+ "url": "https://api.github.com/repos/symfony/console/zipball/1090bd292e4de35682f80e94d196c62aab4b3ad7",
+ "reference": "1090bd292e4de35682f80e94d196c62aab4b3ad7",
"shasum": ""
},
"require": {
@@ -4224,7 +4224,7 @@
"type": "tidelift"
}
],
- "time": "2023-02-15T16:09:02+00:00"
+ "time": "2023-02-25T17:00:13+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -4232,12 +4232,12 @@
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3"
+ "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3",
- "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e",
+ "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e",
"shasum": ""
},
"require": {
@@ -4276,7 +4276,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1"
},
"funding": [
{
@@ -4292,7 +4292,7 @@
"type": "tidelift"
}
],
- "time": "2022-11-25T10:21:52+00:00"
+ "time": "2023-03-01T10:25:55+00:00"
},
{
"name": "symfony/event-dispatcher",
@@ -4300,12 +4300,12 @@
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "be9d2633c312adc9804ee8aa6426cbc4277c2bf1"
+ "reference": "c58ec8623b8cbb3739fbaab5bf972df3f68ef312"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/be9d2633c312adc9804ee8aa6426cbc4277c2bf1",
- "reference": "be9d2633c312adc9804ee8aa6426cbc4277c2bf1",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/c58ec8623b8cbb3739fbaab5bf972df3f68ef312",
+ "reference": "c58ec8623b8cbb3739fbaab5bf972df3f68ef312",
"shasum": ""
},
"require": {
@@ -4376,7 +4376,7 @@
"type": "tidelift"
}
],
- "time": "2023-02-14T09:04:20+00:00"
+ "time": "2023-02-16T09:01:12+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@@ -4384,12 +4384,12 @@
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "0782b0b52a737a05b4383d0df35a474303cabdae"
+ "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0782b0b52a737a05b4383d0df35a474303cabdae",
- "reference": "0782b0b52a737a05b4383d0df35a474303cabdae",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd",
+ "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd",
"shasum": ""
},
"require": {
@@ -4440,7 +4440,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.0"
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1"
},
"funding": [
{
@@ -4456,7 +4456,7 @@
"type": "tidelift"
}
],
- "time": "2022-11-25T10:21:52+00:00"
+ "time": "2023-03-01T10:32:47+00:00"
},
{
"name": "symfony/filesystem",
@@ -5156,12 +5156,12 @@
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "8d7df636e53698bf990ec0a22b67ec273aabf608"
+ "reference": "e65ce5c9ccb249616aab1dbec53fc938c9017a4c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/8d7df636e53698bf990ec0a22b67ec273aabf608",
- "reference": "8d7df636e53698bf990ec0a22b67ec273aabf608",
+ "url": "https://api.github.com/repos/symfony/process/zipball/e65ce5c9ccb249616aab1dbec53fc938c9017a4c",
+ "reference": "e65ce5c9ccb249616aab1dbec53fc938c9017a4c",
"shasum": ""
},
"require": {
@@ -5209,7 +5209,7 @@
"type": "tidelift"
}
],
- "time": "2023-02-14T09:04:20+00:00"
+ "time": "2023-02-24T10:44:40+00:00"
},
{
"name": "symfony/service-contracts",
@@ -5217,12 +5217,12 @@
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75"
+ "reference": "a8c9cedf55f314f3a186041d19537303766df09a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/aac98028c69df04ee77eb69b96b86ee51fbf4b75",
- "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a",
+ "reference": "a8c9cedf55f314f3a186041d19537303766df09a",
"shasum": ""
},
"require": {
@@ -5279,7 +5279,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.2.0"
+ "source": "https://github.com/symfony/service-contracts/tree/v3.2.1"
},
"funding": [
{
@@ -5295,7 +5295,7 @@
"type": "tidelift"
}
],
- "time": "2022-11-25T10:21:52+00:00"
+ "time": "2023-03-01T10:32:47+00:00"
},
{
"name": "symfony/stopwatch",
@@ -5365,12 +5365,12 @@
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "6515bacc98212164f10db4371fa70ee7b8c70b80"
+ "reference": "599f0f073afa9866d1d3b16c1ffafa74a69fb3ce"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/6515bacc98212164f10db4371fa70ee7b8c70b80",
- "reference": "6515bacc98212164f10db4371fa70ee7b8c70b80",
+ "url": "https://api.github.com/repos/symfony/string/zipball/599f0f073afa9866d1d3b16c1ffafa74a69fb3ce",
+ "reference": "599f0f073afa9866d1d3b16c1ffafa74a69fb3ce",
"shasum": ""
},
"require": {
@@ -5443,7 +5443,7 @@
"type": "tidelift"
}
],
- "time": "2023-02-14T09:04:20+00:00"
+ "time": "2023-02-24T10:44:40+00:00"
},
{
"name": "theseer/tokenizer",
From 64c98e4755885142ec9d8f0ebf72bb659d0579d9 Mon Sep 17 00:00:00 2001
From: Shish
Date: Wed, 8 Mar 2023 22:26:49 +0000
Subject: [PATCH 03/28] offset/limit for standard terminology in API
---
core/imageboard/image.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/core/imageboard/image.php b/core/imageboard/image.php
index 139b6e40..f40590a6 100644
--- a/core/imageboard/image.php
+++ b/core/imageboard/image.php
@@ -170,9 +170,9 @@ class Image
* @return Image[]
*/
#[Query(name: "posts", type: "[Post!]!", args: ["tags" => "[string!]"])]
- public static function find_images(?int $start = 0, ?int $limit = null, array $tags=[]): array
+ public static function find_images(?int $offset = 0, ?int $limit = null, array $tags=[]): array
{
- $result = self::find_images_internal($start, $limit, $tags);
+ $result = self::find_images_internal($offset, $limit, $tags);
$images = [];
foreach ($result as $row) {
From 6bf7d63a297734a3c29fe3aaf248ee9b364b5a5b Mon Sep 17 00:00:00 2001
From: Shish
Date: Wed, 8 Mar 2023 22:27:00 +0000
Subject: [PATCH 04/28] [grahpql] update_post_metadata
---
ext/graphql/main.php | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/ext/graphql/main.php b/ext/graphql/main.php
index b6362771..77e9b6cb 100644
--- a/ext/graphql/main.php
+++ b/ext/graphql/main.php
@@ -10,6 +10,31 @@ use GraphQL\Error\DebugFlag;
use GraphQL\Type\Schema;
use GraphQL\Utils\SchemaPrinter;
+#[\GQLA\InputObjectType]
+class MetadataInput
+{
+ public function __construct(
+ #[\GQLA\Field]
+ public string $tags,
+ #[\GQLA\Field]
+ public string $source,
+ ) {
+ }
+
+ #[\GQLA\Mutation]
+ public static function update_post_metadata(int $post_id, MetadataInput $metadata): Image
+ {
+ global $user;
+ $_POST['tag_edit__tags'] = $metadata->tags;
+ $_POST['tag_edit__source'] = $metadata->source;
+ $image = Image::by_id($post_id);
+ if (!$image->is_locked() || $user->can(Permissions::EDIT_IMAGE_LOCK)) {
+ send_event(new ImageInfoSetEvent($image));
+ }
+ return Image::by_id($post_id);
+ }
+}
+
class GraphQL extends Extension
{
public static function get_schema(): Schema
@@ -73,6 +98,7 @@ class GraphQL extends Extension
$body['stats'] = get_debug_info_arr();
$body['stats']['graphql_schema_time'] = round($t2 - $t1, 2);
$body['stats']['graphql_execute_time'] = round($t3 - $t2, 2);
+ // sleep(1);
$page->set_mode(PageMode::DATA);
$page->set_mime("application/json");
$page->set_data(\json_encode($body, JSON_UNESCAPED_UNICODE));
From 48c3eae6b9c6f9b791421c247627551dbce2ca9d Mon Sep 17 00:00:00 2001
From: NottyNoz
Date: Thu, 16 Mar 2023 22:29:45 -0400
Subject: [PATCH 05/28] fixes
---
ext/private_image/main.php | 6 +++---
ext/private_image/theme.php | 2 +-
ext/qr_code/info.php | 2 +-
ext/static_files/static/README.txt | 2 +-
themes/rule34v2/{ => static}/favicon.ico | Bin
5 files changed, 6 insertions(+), 6 deletions(-)
rename themes/rule34v2/{ => static}/favicon.ico (100%)
diff --git a/ext/private_image/main.php b/ext/private_image/main.php
index 0e8034c1..a0768dd2 100644
--- a/ext/private_image/main.php
+++ b/ext/private_image/main.php
@@ -76,7 +76,7 @@ class PrivateImage extends Extension
throw new SCoreException("Post not found.");
}
if ($image->owner_id!=$user->can(Permissions::SET_OTHERS_PRIVATE_IMAGES)) {
- throw new SCoreException("Cannot set another user's image to private.");
+ throw new SCoreException("Cannot set another user's image to public.");
}
self::publicize_image($image_id);
@@ -114,7 +114,7 @@ class PrivateImage extends Extension
{
global $user, $page;
- if ($event->image->private===true && $event->image->owner_id!=$user->id && !$user->can(Permissions::SET_OTHERS_PRIVATE_IMAGES)) {
+ if ($event->image->private==true && $event->image->owner_id!=$user->id && !$user->can(Permissions::SET_OTHERS_PRIVATE_IMAGES)) {
$page->set_mode(PageMode::REDIRECT);
$page->set_redirect(make_link("post/list"));
}
@@ -221,7 +221,7 @@ class PrivateImage extends Extension
public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event)
{
global $user;
- if ($user->can(Permissions::SET_PRIVATE_IMAGE) && $user->id==$event->image->owner_id) {
+ if (($user->can(Permissions::SET_PRIVATE_IMAGE) && $user->id==$event->image->owner_id) || $user->can(Permissions::SET_OTHERS_PRIVATE_IMAGES)) {
$event->add_part($this->theme->get_image_admin_html($event->image));
}
}
diff --git a/ext/private_image/theme.php b/ext/private_image/theme.php
index a06a2239..9f63c7d2 100644
--- a/ext/private_image/theme.php
+++ b/ext/private_image/theme.php
@@ -10,7 +10,7 @@ class PrivateImageTheme extends Themelet
{
public function get_image_admin_html(Image $image): string
{
- if ($image->private===false) {
+ if ($image->private==false) {
$html = SHM_SIMPLE_FORM(
'privatize_image/'.$image->id,
INPUT(["type"=>'hidden', "name"=>'image_id', "value"=>$image->id]),
diff --git a/ext/qr_code/info.php b/ext/qr_code/info.php
index e8e6098c..8e9d5fd5 100644
--- a/ext/qr_code/info.php
+++ b/ext/qr_code/info.php
@@ -13,7 +13,7 @@ class QRImageInfo extends ExtensionInfo
public string $url = "http://seemslegit.com";
public array $authors = ["Zach Hall"=>"zach@sosguy.net"];
public string $license = self::LICENSE_GPLV2;
- public string $description = "Turns BBCode into HTML";
+ public string $description = "Shows a QR Code for downloading a post to cell phones";
public ?string $documentation =
"Shows a QR Code for downloading a post to cell phones.
Based on Artanis's Link to Post Extension
diff --git a/ext/static_files/static/README.txt b/ext/static_files/static/README.txt
index fa7c2e9e..e9d67c48 100644
--- a/ext/static_files/static/README.txt
+++ b/ext/static_files/static/README.txt
@@ -1,4 +1,4 @@
These files can be overriden by placing files in
themes/$your_theme/filename.foo. For example if
you want your theme "radiance" to have a custom
-favicon, place it in themes/radiance/favicon.ico
+favicon, place it in themes/radiance/static/favicon.ico
diff --git a/themes/rule34v2/favicon.ico b/themes/rule34v2/static/favicon.ico
similarity index 100%
rename from themes/rule34v2/favicon.ico
rename to themes/rule34v2/static/favicon.ico
From 0c1fc9b85e299e4e0c1698a320a6a2696dce9d03 Mon Sep 17 00:00:00 2001
From: NottyNoz
Date: Thu, 16 Mar 2023 22:34:52 -0400
Subject: [PATCH 06/28] .
---
ext/static_files/static/README.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ext/static_files/static/README.txt b/ext/static_files/static/README.txt
index e9d67c48..296e9bdc 100644
--- a/ext/static_files/static/README.txt
+++ b/ext/static_files/static/README.txt
@@ -1,4 +1,4 @@
These files can be overriden by placing files in
-themes/$your_theme/filename.foo. For example if
+themes/$your_theme/static/filename.foo. For example if
you want your theme "radiance" to have a custom
favicon, place it in themes/radiance/static/favicon.ico
From 1b35b7af340f38d2f9f7e758f2bf53a255c04fd2 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 20 Mar 2023 20:47:29 +0000
Subject: [PATCH 07/28] Bump enshrined/svg-sanitize from 0.15.4 to 0.16.0
Bumps [enshrined/svg-sanitize](https://github.com/darylldoyle/svg-sanitizer) from 0.15.4 to 0.16.0.
- [Release notes](https://github.com/darylldoyle/svg-sanitizer/releases)
- [Commits](https://github.com/darylldoyle/svg-sanitizer/compare/0.15.4...0.16.0)
---
updated-dependencies:
- dependency-name: enshrined/svg-sanitize
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
---
composer.json | 2 +-
composer.lock | 80 +++++++++++++++++++++++++++++++++++++++++++++------
2 files changed, 72 insertions(+), 10 deletions(-)
diff --git a/composer.json b/composer.json
index 116bb6d8..22e36479 100644
--- a/composer.json
+++ b/composer.json
@@ -44,7 +44,7 @@
"shish/microcrud" : "^2.0",
"shish/microhtml" : "^2.0",
"shish/gqla" : "dev-main",
- "enshrined/svg-sanitize" : "^0.15",
+ "enshrined/svg-sanitize" : "^0.16",
"bower-asset/jquery" : "^1.12",
"bower-asset/jquery-timeago" : "^1.5",
diff --git a/composer.lock b/composer.lock
index bf2bf72a..59c692a5 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": "605e247102c97c1320a4d1984a747c50",
+ "content-hash": "e4d47676467ba492d3be2d43d3950b9d",
"packages": [
{
"name": "bower-asset/jquery",
@@ -65,25 +65,26 @@
},
{
"name": "enshrined/svg-sanitize",
- "version": "0.15.4",
+ "version": "0.16.0",
"source": {
"type": "git",
"url": "https://github.com/darylldoyle/svg-sanitizer.git",
- "reference": "e50b83a2f1f296ca61394fe88fbfe3e896a84cf4"
+ "reference": "239e257605e2141265b429e40987b2ee51bba4b4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/e50b83a2f1f296ca61394fe88fbfe3e896a84cf4",
- "reference": "e50b83a2f1f296ca61394fe88fbfe3e896a84cf4",
+ "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/239e257605e2141265b429e40987b2ee51bba4b4",
+ "reference": "239e257605e2141265b429e40987b2ee51bba4b4",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
- "php": "^7.0 || ^8.0"
+ "ezyang/htmlpurifier": "^4.16",
+ "php": "^5.6 || ^7.0 || ^8.0"
},
"require-dev": {
- "phpunit/phpunit": "^6.5 || ^8.5"
+ "phpunit/phpunit": "^5.7 || ^6.5 || ^8.5"
},
"type": "library",
"autoload": {
@@ -104,9 +105,70 @@
"description": "An SVG sanitizer for PHP",
"support": {
"issues": "https://github.com/darylldoyle/svg-sanitizer/issues",
- "source": "https://github.com/darylldoyle/svg-sanitizer/tree/0.15.4"
+ "source": "https://github.com/darylldoyle/svg-sanitizer/tree/0.16.0"
},
- "time": "2022-02-21T09:13:59+00:00"
+ "time": "2023-03-20T10:51:12+00:00"
+ },
+ {
+ "name": "ezyang/htmlpurifier",
+ "version": "v4.16.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ezyang/htmlpurifier.git",
+ "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8",
+ "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8",
+ "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"
+ },
+ "require-dev": {
+ "cerdic/css-tidy": "^1.7 || ^2.0",
+ "simpletest/simpletest": "dev-master"
+ },
+ "suggest": {
+ "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.",
+ "ext-bcmath": "Used for unit conversion and imagecrash protection",
+ "ext-iconv": "Converts text to and from non-UTF-8 encodings",
+ "ext-tidy": "Used for pretty-printing HTML"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "library/HTMLPurifier.composer.php"
+ ],
+ "psr-0": {
+ "HTMLPurifier": "library/"
+ },
+ "exclude-from-classmap": [
+ "/library/HTMLPurifier/Language/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-2.1-or-later"
+ ],
+ "authors": [
+ {
+ "name": "Edward Z. Yang",
+ "email": "admin@htmlpurifier.org",
+ "homepage": "http://ezyang.com"
+ }
+ ],
+ "description": "Standards compliant HTML filter written in PHP",
+ "homepage": "http://htmlpurifier.org/",
+ "keywords": [
+ "html"
+ ],
+ "support": {
+ "issues": "https://github.com/ezyang/htmlpurifier/issues",
+ "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0"
+ },
+ "time": "2022-09-18T07:06:19+00:00"
},
{
"name": "flexihash/flexihash",
From 2882bffe3562d35e7badc810b7aefd67589b365a Mon Sep 17 00:00:00 2001
From: Tegaki
Date: Wed, 22 Mar 2023 21:08:23 +0100
Subject: [PATCH 08/28] implement MIME checks on upload
---
ext/transcode/main.php | 12 ++++++++++++
ext/upload/config.php | 2 ++
ext/upload/main.php | 19 +++++++++++++++++++
3 files changed, 33 insertions(+)
diff --git a/ext/transcode/main.php b/ext/transcode/main.php
index e284e81e..bc6abe30 100644
--- a/ext/transcode/main.php
+++ b/ext/transcode/main.php
@@ -167,6 +167,18 @@ class TranscodeImage extends Extension
{
global $config;
+ // this onDataUpload happens earlier (or could happen earlier) than handle_pixel.onDataUpload
+ // it mutates the image such that the incorrect mime type is not checked (checking against
+ // the post-transcode mime type instead). This is to give user feedback on what the mime type
+ // was before potential transcoding (the original) at the time of upload, and that it failed if not allowed.
+ // does it break bulk image importing? ZIP? SVG? there are a few flows that are untested!
+ if ($config->get_bool(UploadConfig::MIME_CHECK_ENABLED) == true) {
+ $allowed_mimes = $config->get_array(UploadConfig::ALLOWED_MIME_STRINGS);
+ if (!MimeType::matches_array($event->mime, $allowed_mimes)) {
+ throw new UploadException("MIME type not supported: " . $event->mime);
+ }
+ }
+
if ($config->get_bool(TranscodeConfig::UPLOAD) == true) {
if ($event->mime === MimeType::GIF&&MimeType::is_animated_gif($event->tmpname)) {
return;
diff --git a/ext/upload/config.php b/ext/upload/config.php
index 8f4b5124..313b0536 100644
--- a/ext/upload/config.php
+++ b/ext/upload/config.php
@@ -11,4 +11,6 @@ class UploadConfig
public const MIN_FREE_SPACE = "upload_min_free_space";
public const TLSOURCE = "upload_tlsource";
public const TRANSLOAD_ENGINE = "transload_engine";
+ public const MIME_CHECK_ENABLED = "mime_check_enabled";
+ public const ALLOWED_MIME_STRINGS = "allowed_mime_strings";
}
diff --git a/ext/upload/main.php b/ext/upload/main.php
index 8ebc2f2d..d02a1f55 100644
--- a/ext/upload/main.php
+++ b/ext/upload/main.php
@@ -98,6 +98,12 @@ class Upload extends Extension
}
}
}
+
+ $config->set_default_bool(UploadConfig::MIME_CHECK_ENABLED, false);
+ $config->set_default_array(
+ UploadConfig::ALLOWED_MIME_STRINGS,
+ DataHandlerExtension::get_all_supported_mimes()
+ );
}
public function onSetupBuilding(SetupBuildingEvent $event)
@@ -119,8 +125,21 @@ class Upload extends Extension
$sb->add_label("PHP Limit = " . ini_get('upload_max_filesize') . "");
$sb->add_choice_option(UploadConfig::TRANSLOAD_ENGINE, $tes, "
Transload: ");
$sb->add_bool_option(UploadConfig::TLSOURCE, "
Use transloaded URL as source if none is provided: ");
+
+ $sb->start_table();
+ $sb->add_bool_option(UploadConfig::MIME_CHECK_ENABLED, "Enable upload MIME checks", true);
+ $sb->add_multichoice_option(UploadConfig::ALLOWED_MIME_STRINGS, $this->get_mime_options(), "Allowed MIME uploads", true);
+ $sb->end_table();
}
+ private function get_mime_options(): array
+ {
+ $output = [];
+ foreach (DataHandlerExtension::get_all_supported_mimes() as $mime) {
+ $output[MimeMap::get_name_for_mime($mime)] = $mime;
+ }
+ return $output;
+ }
public function onPageNavBuilding(PageNavBuildingEvent $event)
{
From a352a02b2e4b686a786b46bc0c5e109b1ebc55ea Mon Sep 17 00:00:00 2001
From: myname
Date: Sun, 26 Mar 2023 17:01:46 -0500
Subject: [PATCH 09/28] Bulk Actions for setting a chain of parent child
relationships in the order of images selected. Does not support setting
multiple children to one parent in bulk.
---
core/permissions.php | 1 +
core/userclass.php | 1 +
ext/bulk_parent_child/info.php | 16 +++++++++++
ext/bulk_parent_child/main.php | 51 ++++++++++++++++++++++++++++++++++
4 files changed, 69 insertions(+)
create mode 100644 ext/bulk_parent_child/info.php
create mode 100644 ext/bulk_parent_child/main.php
diff --git a/core/permissions.php b/core/permissions.php
index 351fa2a9..28142259 100644
--- a/core/permissions.php
+++ b/core/permissions.php
@@ -109,4 +109,5 @@ abstract class Permissions
public const BULK_IMPORT = "bulk_import";
public const BULK_EXPORT = "bulk_export";
public const BULK_DOWNLOAD = "bulk_download";
+ public const BULK_PARENT_CHILD = "bulk_parent_child";
}
diff --git a/core/userclass.php b/core/userclass.php
index a15d1767..a68ebb1b 100644
--- a/core/userclass.php
+++ b/core/userclass.php
@@ -199,6 +199,7 @@ new UserClass("admin", "base", [
Permissions::BULK_IMPORT =>true,
Permissions::BULK_EXPORT =>true,
Permissions::BULK_DOWNLOAD => true,
+ Permissions::BULK_PARENT_CHILD => true,
Permissions::SET_PRIVATE_IMAGE => true,
Permissions::SET_OTHERS_PRIVATE_IMAGES => true,
diff --git a/ext/bulk_parent_child/info.php b/ext/bulk_parent_child/info.php
new file mode 100644
index 00000000..f4a6b673
--- /dev/null
+++ b/ext/bulk_parent_child/info.php
@@ -0,0 +1,16 @@
+""];
+ public string $license = self::LICENSE_WTFPL;
+ public string $description = "Allows bulk setting of parent-child relationships, in order of manual selection";
+ public array $dependencies = [BulkActionsInfo::KEY];
+}
diff --git a/ext/bulk_parent_child/main.php b/ext/bulk_parent_child/main.php
new file mode 100644
index 00000000..9362debd
--- /dev/null
+++ b/ext/bulk_parent_child/main.php
@@ -0,0 +1,51 @@
+can(Permissions::BULK_PARENT_CHILD)) {
+ $event->add_action(BulkParentChild::PARENT_CHILD_ACTION_NAME, "Set Parent Child");
+ }
+ }
+
+ public function onSetupBuilding(SetupBuildingEvent $event)
+ {
+ $sb = $event->panel->create_new_block("Bulk Parent Child");
+ $sb->start_table();
+ $sb->end_table();
+ }
+
+ public function onBulkAction(BulkActionEvent $event)
+ {
+ global $user, $page, $config;
+ if ($user->can(Permissions::BULK_PARENT_CHILD)&&
+ ($event->action == BulkParentChild::PARENT_CHILD_ACTION_NAME)) {
+ $prev_id = null;
+ foreach ($event->items as $image) {
+ if ($prev_id != null) {
+ send_event(new ImageRelationshipSetEvent($image->id, $prev_id));
+ }
+ $prev_id = $image->id;
+ }
+ }
+ }
+}
From e7bc6c733aef7be08142b49ef9581ca6eea01d88 Mon Sep 17 00:00:00 2001
From: NottyNoz
Date: Mon, 20 Mar 2023 13:17:39 -0400
Subject: [PATCH 10/28] .
---
ext/approval/main.php | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/ext/approval/main.php b/ext/approval/main.php
index 736dc665..90158ff8 100644
--- a/ext/approval/main.php
+++ b/ext/approval/main.php
@@ -121,6 +121,13 @@ class Approval extends Extension
}
}
+ public function onUserBlockBuilding(UserBlockBuildingEvent $event)
+ {
+ global $user;
+ if ($user->can(Permissions::APPROVE_IMAGE)) {
+ $event->add_link("Pending Approval", make_link("/post/list/approved%3Ano/1"), 60);
+ }
+ }
public const SEARCH_REGEXP = "/^approved:(yes|no)/";
public function onSearchTermParse(SearchTermParseEvent $event)
From c4317cab0d48b2e75fee7902b90aa4e1c3fb8948 Mon Sep 17 00:00:00 2001
From: NottyNoz
Date: Wed, 22 Mar 2023 19:15:41 -0400
Subject: [PATCH 11/28] documentation cleanup
---
ext/browser_search/info.php | 4 +--
ext/bulk_actions/info.php | 23 +++++++++++-
ext/custom_html_headers/info.php | 12 +++----
ext/danbooru_api/info.php | 60 +++++++++++++++-----------------
ext/qr_code/info.php | 4 +--
ext/tag_list/theme.php | 2 +-
6 files changed, 62 insertions(+), 43 deletions(-)
diff --git a/ext/browser_search/info.php b/ext/browser_search/info.php
index ec07ed65..0644f9bc 100644
--- a/ext/browser_search/info.php
+++ b/ext/browser_search/info.php
@@ -17,6 +17,6 @@ class BrowserSearchInfo extends ExtensionInfo
public string $description = "Allows the user to add a browser 'plugin' to search the site with real-time suggestions";
public ?string $documentation =
"Once installed, users with an opensearch compatible browser should see their search box light up with whatever \"click here to add a search engine\" notification they have
-
-Some code (and lots of help) by Artanis (Erik Youngren ) from the 'tagger' extension - Used with permission";
+
+
Some code (and lots of help) by Artanis (Erik Youngren) from the 'tagger' extension - Used with permission";
}
diff --git a/ext/bulk_actions/info.php b/ext/bulk_actions/info.php
index b469d2a0..6d2f8fe0 100644
--- a/ext/bulk_actions/info.php
+++ b/ext/bulk_actions/info.php
@@ -13,5 +13,26 @@ class BulkActionsInfo extends ExtensionInfo
public array $authors = ["Matthew Barbour"=>"matthew@darkholme.net"];
public string $license = self::LICENSE_WTFPL;
public string $description = "Provides query and selection-based bulk action support";
- public ?string $documentation = "Provides bulk action section in list view. Allows performing actions against a set of posts based on query or manual selection. Based on Mass Tagger by Christian Walde , contributions by Shish and Agasa.";
+ public ?string $documentation = "Provides bulk action section in list view. Allows performing actions against a set of posts based on query or manual selection. Based on Mass Tagger by Christian Walde, contributions by Shish and Agasa.
+
+
+ Delete
+
Deletes all selected posts.
+
+
+ Tag
+
Add the tags to all selected posts.
+
[background wallpaper]
+ [sky]
→ [background wallpaper sky]
+
+
Remove the tags from all selected posts.
+
[background wallpaper]
+ [-wallpaper]
→ [background]
+
+
Replace the tags in all selected posts.
+
[background wallpaper]
+ [sky]
→ [sky]
+
+
+ Source
+
Sets the source of all selected posts.
+
+
";
}
diff --git a/ext/custom_html_headers/info.php b/ext/custom_html_headers/info.php
index 0c75d190..6cdee477 100644
--- a/ext/custom_html_headers/info.php
+++ b/ext/custom_html_headers/info.php
@@ -16,10 +16,10 @@ class CustomHtmlHeadersInfo extends ExtensionInfo
public string $description = "Allows admins to modify & set custom <head> content";
public ?string $documentation =
"When you go to board config you can find a block named Custom HTML Headers.
-In that block you can simply place any thing you can place within <head></head>
-
-This can be useful if you want to add website tracking code or other javascript.
-NOTE: Only use if you know what you're doing.
-
-You can also add your website name as prefix or suffix to the title of each page on your website.";
+
In that block you can simply place any thing you can place within <head></head>
+
+
This can be useful if you want to add website tracking code or other javascript.
+
NOTE: Only use if you know what you're doing.
+
+
You can also add your website name as prefix or suffix to the title of each page on your website.";
}
diff --git a/ext/danbooru_api/info.php b/ext/danbooru_api/info.php
index 10113a91..06312b0f 100644
--- a/ext/danbooru_api/info.php
+++ b/ext/danbooru_api/info.php
@@ -13,7 +13,7 @@ class DanbooruApiInfo extends ExtensionInfo
public array $authors = ["JJS"=>"jsutinen@gmail.com"];
public string $description = "Allow Danbooru apps like Danbooru Uploader for Firefox to communicate with Shimmie";
public ?string $documentation =
-"Notes:
+"Notes:
danbooru API based on documentation from danbooru 1.0 -
http://attachr.com/7569
I've only been able to test add_post and find_tags because I use the
@@ -24,34 +24,32 @@ class DanbooruApiInfo extends ExtensionInfo
find_posts - sort of works, filename is returned as the original filename and probably won't help when it comes to actually downloading it
find_tags - id, name, and after_id all work but the tags parameter is ignored just like danbooru 1.0 ignores it
-
-CHANGELOG
-13-OCT-08 8:00PM CST - JJS
-Bugfix - Properly escape source attribute
-
-17-SEP-08 10:00PM CST - JJS
-Bugfix for changed page name checker in PageRequestEvent
-
-13-APR-08 10:00PM CST - JJS
-Properly escape the tags returned in find_tags and find_posts - Caught by ATravelingGeek
-Updated extension info to be a bit more clear about its purpose
-Deleted add_comment code as it didn't do anything anyway
-
-01-MAR-08 7:00PM CST - JJS
-Rewrote to make it compatible with Shimmie trunk again (r723 at least)
-It may or may not support the new file handling stuff correctly, I'm only testing with images and the danbooru uploader for firefox
-
-21-OCT-07 9:07PM CST - JJS
-Turns out I actually did need to implement the new parameter names
-for danbooru api v1.8.1. Now danbooruup should work when used with /api/danbooru/post/create.xml
-Also correctly redirects the url provided by danbooruup in the event
-of a duplicate image.
-
-19-OCT-07 4:46PM CST - JJS
-Add compatibility with danbooru api v1.8.1 style urls
-for find_posts and add_post. NOTE: This does not implement
-the changes to the parameter names, it is simply a
-workaround for the latest danbooruup firefox extension.
-Completely compatibility will probably involve a rewrite with a different URL
-";
+
CHANGELOG
+
13-OCT-08 8:00PM CST - JJS
+
Bugfix - Properly escape source attribute
+
+
17-SEP-08 10:00PM CST - JJS
+
Bugfix for changed page name checker in PageRequestEvent
+
+
13-APR-08 10:00PM CST - JJS
+
Properly escape the tags returned in find_tags and find_posts - Caught by ATravelingGeek
+
Updated extension info to be a bit more clear about its purpose
+
Deleted add_comment code as it didn't do anything anyway
+
+
01-MAR-08 7:00PM CST - JJS
+
Rewrote to make it compatible with Shimmie trunk again (r723 at least)
+
It may or may not support the new file handling stuff correctly, I'm only testing with images and the danbooru uploader for firefox
+
+
21-OCT-07 9:07PM CST - JJS
+
Turns out I actually did need to implement the new parameter names
+
for danbooru api v1.8.1. Now danbooruup should work when used with /api/danbooru/post/create.xml
+
Also correctly redirects the url provided by danbooruup in the event
+
of a duplicate image.
+
+
19-OCT-07 4:46PM CST - JJS
+
Add compatibility with danbooru api v1.8.1 style urls
+
for find_posts and add_post. NOTE: This does not implement
+
the changes to the parameter names, it is simply a
+
workaround for the latest danbooruup firefox extension.
+
Completely compatibility will probably involve a rewrite with a different URL";
}
diff --git a/ext/qr_code/info.php b/ext/qr_code/info.php
index 8e9d5fd5..c43b3fde 100644
--- a/ext/qr_code/info.php
+++ b/ext/qr_code/info.php
@@ -16,6 +16,6 @@ class QRImageInfo extends ExtensionInfo
public string $description = "Shows a QR Code for downloading a post to cell phones";
public ?string $documentation =
"Shows a QR Code for downloading a post to cell phones.
-Based on Artanis's Link to Post Extension
-Further modified by Shish to remove the 7MB local QR generator and replace it with a link to google chart APIs";
+
Based on Artanis's Link to Post Extension.
+
Further modified by Shish to remove the 7MB local QR generator and replace it with a link to Google Chart APIs";
}
diff --git a/ext/tag_list/theme.php b/ext/tag_list/theme.php
index c274a743..08f053a4 100644
--- a/ext/tag_list/theme.php
+++ b/ext/tag_list/theme.php
@@ -211,7 +211,7 @@ class TagListTheme extends Themelet
);
$main_html .= "
Full List\n";
- $page->add_block(new Block("refine Search", $main_html, "left", 60));
+ $page->add_block(new Block("Refine Search", $main_html, "left", 60));
}
public function return_tag(array $row, array $tag_category_dict): array
From 4253d357af10547782a7c59fbf4e480664f059bd Mon Sep 17 00:00:00 2001
From: NottyNoz
Date: Wed, 22 Mar 2023 19:33:16 -0400
Subject: [PATCH 12/28] board config cleanup
---
ext/image/main.php | 2 +-
ext/rating/main.php | 2 +-
ext/user/main.php | 4 ++--
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/ext/image/main.php b/ext/image/main.php
index 8709ddf7..1520b344 100644
--- a/ext/image/main.php
+++ b/ext/image/main.php
@@ -33,7 +33,7 @@ class ImageIO extends Extension
public const THUMBNAIL_TYPES = [
'JPEG' => MimeType::JPEG,
- 'WEBP (Not IE/Safari compatible)' => MimeType::WEBP
+ 'WEBP (Not IE compatible)' => MimeType::WEBP
];
public function onInitExt(InitExtEvent $event)
diff --git a/ext/rating/main.php b/ext/rating/main.php
index ba54383a..bd2644a4 100644
--- a/ext/rating/main.php
+++ b/ext/rating/main.php
@@ -153,7 +153,7 @@ class Ratings extends Extension
$options[$rating->name] = $rating->code;
}
- $sb = $event->panel->create_new_block("Post Ratings");
+ $sb = $event->panel->create_new_block("Post Rating Visibility");
$sb->start_table();
foreach (array_keys($_shm_user_classes) as $key) {
if ($key == "base" || $key == "hellbanned") {
diff --git a/ext/user/main.php b/ext/user/main.php
index 75ab6154..8e468bf2 100644
--- a/ext/user/main.php
+++ b/ext/user/main.php
@@ -345,8 +345,8 @@ class UserPage extends Extension
$sb->add_choice_option(
"user_loginshowprofile",
[
- "return to previous page" => 0, // 0 is default
- "send to user profile" => 1],
+ "Return to previous page" => 0, // 0 is default
+ "Send to user profile" => 1],
"On log in/out",
true
);
From a98560b0619abe1d611436b8ff9114c3c57d0e91 Mon Sep 17 00:00:00 2001
From: NottyNoz
Date: Sun, 26 Mar 2023 02:42:25 -0400
Subject: [PATCH 13/28] tagit fix and ui
---
ext/autocomplete/script.js | 8 +++++++-
ext/comment/theme.php | 2 +-
ext/index/style.css | 3 ++-
3 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/ext/autocomplete/script.js b/ext/autocomplete/script.js
index 06b9b826..41e1fda5 100644
--- a/ext/autocomplete/script.js
+++ b/ext/autocomplete/script.js
@@ -93,8 +93,14 @@ document.addEventListener('DOMContentLoaded', () => {
//Stop tags containing space.
if(keyCode === 32) {
e.preventDefault();
+ var el = $('.ui-widget-content:focus');
- $('.autocomplete_tags').tagit('createTag', $(this).val());
+ //Find the correct element in a page with multiple tagit input boxes.
+ $('.autocomplete_tags').each(function(_,n){
+ if (n.parentNode.contains(el[0])){
+ $(n.parentNode).find('.autocomplete_tags').tagit('createTag', el.val());
+ }
+ });
$(this).autocomplete('close');
} else if (keyCode === 9) {
e.preventDefault();
diff --git a/ext/comment/theme.php b/ext/comment/theme.php
index c7ba9e94..6f92e7ef 100644
--- a/ext/comment/theme.php
+++ b/ext/comment/theme.php
@@ -37,7 +37,7 @@ class CommentListTheme extends Themelet
$page->set_title("Comments");
$page->set_heading("Comments");
- $page->add_block(new Block("Navigation", $nav, "left"));
+ $page->add_block(new Block("Navigation", $nav, "left", 0));
$this->display_paginator($page, "comment/list", null, $page_number, $total_pages);
// parts for each image
diff --git a/ext/index/style.css b/ext/index/style.css
index c23a0c12..5ecd5a28 100644
--- a/ext/index/style.css
+++ b/ext/index/style.css
@@ -6,5 +6,6 @@
box-shadow: none;
margin: 0px;
padding: 0px;
- text-align: justify;
+ text-align: left;
+ margin: 0 10px 10px 0;
}
From 0b5f6c310d1250c590fc0c2d6d6d436c3a0eb1b7 Mon Sep 17 00:00:00 2001
From: myname
Date: Mon, 27 Mar 2023 14:26:39 -0500
Subject: [PATCH 14/28] Adding namespace
---
ext/bulk_parent_child/info.php | 1 +
1 file changed, 1 insertion(+)
diff --git a/ext/bulk_parent_child/info.php b/ext/bulk_parent_child/info.php
index f4a6b673..4f30a9d8 100644
--- a/ext/bulk_parent_child/info.php
+++ b/ext/bulk_parent_child/info.php
@@ -2,6 +2,7 @@
declare(strict_types=1);
+namespace Shimmie2;
class BulkParentChildInfo extends ExtensionInfo
{
From f43ed0ee7176738206e9a28ce65d8f3b0dad7c31 Mon Sep 17 00:00:00 2001
From: myname
Date: Mon, 27 Mar 2023 14:28:44 -0500
Subject: [PATCH 15/28] Removing unnecessary lines, fixing namespace
---
ext/bulk_parent_child/main.php | 14 ++------------
1 file changed, 2 insertions(+), 12 deletions(-)
diff --git a/ext/bulk_parent_child/main.php b/ext/bulk_parent_child/main.php
index 9362debd..296c9af8 100644
--- a/ext/bulk_parent_child/main.php
+++ b/ext/bulk_parent_child/main.php
@@ -2,6 +2,8 @@
declare(strict_types=1);
+namespace Shimmie2;
+
class BulkParentChildConfig
{
}
@@ -13,11 +15,6 @@ class BulkParentChild extends Extension
{
private const PARENT_CHILD_ACTION_NAME = "bulk_parent_child";
- public function onInitExt(InitExtEvent $event)
- {
- global $config;
- }
-
public function onBulkActionBlockBuilding(BulkActionBlockBuildingEvent $event)
{
global $user;
@@ -27,13 +24,6 @@ class BulkParentChild extends Extension
}
}
- public function onSetupBuilding(SetupBuildingEvent $event)
- {
- $sb = $event->panel->create_new_block("Bulk Parent Child");
- $sb->start_table();
- $sb->end_table();
- }
-
public function onBulkAction(BulkActionEvent $event)
{
global $user, $page, $config;
From 46f75f7b34325e79d9ac321a7e5ba2e4f32afd44 Mon Sep 17 00:00:00 2001
From: Shish
Date: Thu, 30 Mar 2023 20:36:58 +0100
Subject: [PATCH 16/28] [static] allow extensions to customise robots.txt
---
ext/comment/main.php | 7 +++++++
ext/rule34/main.php | 8 ++++++++
ext/static_files/main.php | 22 ++++++++++++++++++++++
ext/static_files/static/robots.txt | 11 -----------
ext/view/main.php | 8 ++++++++
5 files changed, 45 insertions(+), 11 deletions(-)
delete mode 100644 ext/static_files/static/robots.txt
diff --git a/ext/comment/main.php b/ext/comment/main.php
index b6da4eed..bf588318 100644
--- a/ext/comment/main.php
+++ b/ext/comment/main.php
@@ -216,6 +216,13 @@ class CommentList extends Extension
}
}
+ public function onRobotsBuilding(RobotsBuildingEvent $event)
+ {
+ // comment lists change all the time, crawlers should
+ // index individual image's comments
+ $event->add_disallow("comment");
+ }
+
private function onPageRequest_add()
{
global $user, $page;
diff --git a/ext/rule34/main.php b/ext/rule34/main.php
index 9e3758d7..22000a0a 100644
--- a/ext/rule34/main.php
+++ b/ext/rule34/main.php
@@ -101,6 +101,14 @@ class Rule34 extends Extension
}
}
+ public function onRobotsBuilding(RobotsBuildingEvent $event)
+ {
+ // robots should only check the canonical site, not mirrors
+ if ($_SERVER['HTTP_HOST'] != "rule34.paheal.net") {
+ $event->add_disallow("");
+ }
+ }
+
public function onPageRequest(PageRequestEvent $event)
{
global $database, $page, $user;
diff --git a/ext/static_files/main.php b/ext/static_files/main.php
index 8a8693f0..c2b4aef7 100644
--- a/ext/static_files/main.php
+++ b/ext/static_files/main.php
@@ -4,11 +4,33 @@ declare(strict_types=1);
namespace Shimmie2;
+class RobotsBuildingEvent extends Event
+{
+ public array $parts = [
+ "User-agent: *",
+ // Site is rate limited to 1 request / sec,
+ // returns 503 for more than that
+ "Crawl-delay: 3",
+ ];
+
+ public function add_disallow(string $path): void
+ {
+ $this->parts[] = "Disallow: /$path";
+ }
+}
+
class StaticFiles extends Extension
{
public function onPageRequest(PageRequestEvent $event)
{
global $config, $page;
+
+ if ($event->page_matches("robots.txt")) {
+ $rbe = send_event(new RobotsBuildingEvent());
+ $page->set_mode(PageMode::DATA);
+ $page->set_data(join("\n", $rbe->parts));
+ }
+
// hax.
if ($page->mode == PageMode::PAGE && (!isset($page->blocks) || $this->count_main($page->blocks) == 0)) {
$h_pagename = html_escape(implode('/', $event->args));
diff --git a/ext/static_files/static/robots.txt b/ext/static_files/static/robots.txt
deleted file mode 100644
index e9ae5fde..00000000
--- a/ext/static_files/static/robots.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-User-agent: *
-# comment lists change all the time, crawlers should
-# index individual image's comments
-Disallow: /comment/
-# next and prev are just CPU-heavier ways of getting
-# to the same images that the index shows
-Disallow: /post/next/
-Disallow: /post/prev/
-# Site is rate limited to 1 request / sec,
-# returns 503 for more than that
-Crawl-delay: 3
diff --git a/ext/view/main.php b/ext/view/main.php
index ceb2c83d..24700253 100644
--- a/ext/view/main.php
+++ b/ext/view/main.php
@@ -94,6 +94,14 @@ class ViewImage extends Extension
}
}
+ public function onRobotsBuilding(RobotsBuildingEvent $event)
+ {
+ // next and prev are just CPU-heavier ways of getting
+ // to the same images that the index shows
+ $event->add_disallow("post/next");
+ $event->add_disallow("post/prev");
+ }
+
public function onDisplayingImage(DisplayingImageEvent $event)
{
global $page, $user;
From 7e017ded3b0e55fa9e31362c9229d42e0993358e Mon Sep 17 00:00:00 2001
From: Shish
Date: Thu, 30 Mar 2023 20:37:06 +0100
Subject: [PATCH 17/28] format
---
core/permissions.php | 2 +-
core/userclass.php | 2 +-
ext/bulk_parent_child/main.php | 18 +++++++++---------
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/core/permissions.php b/core/permissions.php
index aedf3a5c..0cf1d9c4 100644
--- a/core/permissions.php
+++ b/core/permissions.php
@@ -118,5 +118,5 @@ abstract class Permissions
public const BULK_IMPORT = "bulk_import";
public const BULK_EXPORT = "bulk_export";
public const BULK_DOWNLOAD = "bulk_download";
- public const BULK_PARENT_CHILD = "bulk_parent_child";
+ public const BULK_PARENT_CHILD = "bulk_parent_child";
}
diff --git a/core/userclass.php b/core/userclass.php
index 5e66256c..22d2f698 100644
--- a/core/userclass.php
+++ b/core/userclass.php
@@ -223,7 +223,7 @@ new UserClass("admin", "base", [
Permissions::BULK_IMPORT =>true,
Permissions::BULK_EXPORT =>true,
Permissions::BULK_DOWNLOAD => true,
- Permissions::BULK_PARENT_CHILD => true,
+ Permissions::BULK_PARENT_CHILD => true,
Permissions::SET_PRIVATE_IMAGE => true,
Permissions::SET_OTHERS_PRIVATE_IMAGES => true,
diff --git a/ext/bulk_parent_child/main.php b/ext/bulk_parent_child/main.php
index 296c9af8..b7eda773 100644
--- a/ext/bulk_parent_child/main.php
+++ b/ext/bulk_parent_child/main.php
@@ -27,15 +27,15 @@ class BulkParentChild extends Extension
public function onBulkAction(BulkActionEvent $event)
{
global $user, $page, $config;
- if ($user->can(Permissions::BULK_PARENT_CHILD)&&
+ if ($user->can(Permissions::BULK_PARENT_CHILD)&&
($event->action == BulkParentChild::PARENT_CHILD_ACTION_NAME)) {
- $prev_id = null;
- foreach ($event->items as $image) {
- if ($prev_id != null) {
- send_event(new ImageRelationshipSetEvent($image->id, $prev_id));
- }
- $prev_id = $image->id;
- }
- }
+ $prev_id = null;
+ foreach ($event->items as $image) {
+ if ($prev_id != null) {
+ send_event(new ImageRelationshipSetEvent($image->id, $prev_id));
+ }
+ $prev_id = $image->id;
+ }
+ }
}
}
From fddc1fd453ad186fe442a0bb26686e365cc712a7 Mon Sep 17 00:00:00 2001
From: Shish
Date: Thu, 30 Mar 2023 19:38:23 +0000
Subject: [PATCH 18/28] [img] allow CLI image deletion
---
ext/image/main.php | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/ext/image/main.php b/ext/image/main.php
index 1520b344..3871799e 100644
--- a/ext/image/main.php
+++ b/ext/image/main.php
@@ -196,6 +196,19 @@ class ImageIO extends Extension
$event->image->delete();
}
+ public function onCommand(CommandEvent $event)
+ {
+ if ($event->cmd == "help") {
+ print "\tdelete \n";
+ print "\t\tdelete a specific post\n\n";
+ }
+ if ($event->cmd == "delete") {
+ $post_id = (int)$event->args[0];
+ $image = Image::by_id($post_id);
+ send_event(new ImageDeletionEvent($image));
+ }
+ }
+
public function onImageReplace(ImageReplaceEvent $event)
{
try {
From 6b1084eed74e08975ed0a374afc7346cc48eb2b3 Mon Sep 17 00:00:00 2001
From: Shish
Date: Thu, 30 Mar 2023 19:39:25 +0000
Subject: [PATCH 19/28] tweak
---
themes/rule34v2/header.inc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/themes/rule34v2/header.inc b/themes/rule34v2/header.inc
index d1b296ce..99046e9a 100644
--- a/themes/rule34v2/header.inc
+++ b/themes/rule34v2/header.inc
@@ -87,7 +87,7 @@
From 7d6615c2985f0df40447d40d6469603f447884be Mon Sep 17 00:00:00 2001
From: Shish
Date: Thu, 30 Mar 2023 19:40:06 +0000
Subject: [PATCH 20/28] trim
---
ext/tag_edit/main.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ext/tag_edit/main.php b/ext/tag_edit/main.php
index 51d70a31..b19e1dd0 100644
--- a/ext/tag_edit/main.php
+++ b/ext/tag_edit/main.php
@@ -33,7 +33,7 @@ class SourceSetEvent extends Event
{
parent::__construct();
$this->image = $image;
- $this->source = $source;
+ $this->source = trim($source);
}
}
From 33e1e20beb19b1831bee46bae40fd067ec05ba84 Mon Sep 17 00:00:00 2001
From: Shish
Date: Thu, 30 Mar 2023 19:43:14 +0000
Subject: [PATCH 21/28] [static] also avoid robots getting stuck on history
pages
---
ext/source_history/main.php | 5 +++++
ext/tag_history/main.php | 5 +++++
2 files changed, 10 insertions(+)
diff --git a/ext/source_history/main.php b/ext/source_history/main.php
index f9726b4d..db98272e 100644
--- a/ext/source_history/main.php
+++ b/ext/source_history/main.php
@@ -51,6 +51,11 @@ class SourceHistory extends Extension
}
}
+ public function onRobotsBuilding(RobotsBuildingEvent $event)
+ {
+ $event->add_disallow("source_history");
+ }
+
public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event)
{
$event->add_part("
diff --git a/ext/tag_history/main.php b/ext/tag_history/main.php
index 4a6064be..8b9d2a79 100644
--- a/ext/tag_history/main.php
+++ b/ext/tag_history/main.php
@@ -51,6 +51,11 @@ class TagHistory extends Extension
}
}
+ public function onRobotsBuilding(RobotsBuildingEvent $event)
+ {
+ $event->add_disallow("tag_history");
+ }
+
public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event)
{
$event->add_part("
From 9b463ce6747e6c1892a852af45e5552f3e0f2352 Mon Sep 17 00:00:00 2001
From: Shish
Date: Thu, 30 Mar 2023 21:27:12 +0000
Subject: [PATCH 22/28] text
---
ext/static_files/main.php | 1 +
1 file changed, 1 insertion(+)
diff --git a/ext/static_files/main.php b/ext/static_files/main.php
index c2b4aef7..d66b2557 100644
--- a/ext/static_files/main.php
+++ b/ext/static_files/main.php
@@ -28,6 +28,7 @@ class StaticFiles extends Extension
if ($event->page_matches("robots.txt")) {
$rbe = send_event(new RobotsBuildingEvent());
$page->set_mode(PageMode::DATA);
+ $page->set_mime("text/plain");
$page->set_data(join("\n", $rbe->parts));
}
From 05da99c428e9a87d6e38d4f37f54e32879e2ece0 Mon Sep 17 00:00:00 2001
From: Shish
Date: Mon, 3 Apr 2023 22:14:41 +0000
Subject: [PATCH 23/28] fix error in error handler
---
core/util.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/core/util.php b/core/util.php
index 84796074..f761a599 100644
--- a/core/util.php
+++ b/core/util.php
@@ -645,7 +645,7 @@ function _fatal_error(\Exception $e): void
foreach ($t as $n => $f) {
$c = $f['class'] ?? '';
$t = $f['type'] ?? '';
- $a = implode(", ", array_map("Shimmie2\stringer", $f['args']));
+ $a = implode(", ", array_map("Shimmie2\stringer", $f['args'] ?? []));
print("$n: {$f['file']}({$f['line']}): {$c}{$t}{$f['function']}({$a})\n");
}
From b5b7fe7d9eab7d1cd5f50f4396826e26394caad6 Mon Sep 17 00:00:00 2001
From: Shish
Date: Mon, 3 Apr 2023 22:14:51 +0000
Subject: [PATCH 24/28] allow admin to bypass user creation block
---
ext/user/main.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ext/user/main.php b/ext/user/main.php
index 8e468bf2..6bfb7451 100644
--- a/ext/user/main.php
+++ b/ext/user/main.php
@@ -422,7 +422,7 @@ class UserPage extends Extension
if (!$user->can(Permissions::CREATE_USER)) {
throw new UserCreationException("Account creation is currently disabled");
}
- if (!$config->get_bool("login_signup_enabled")) {
+ if (!$config->get_bool("login_signup_enabled") && !$user->can(Permissions::CREATE_OTHER_USER)) {
throw new UserCreationException("Account creation is currently disabled");
}
if (strlen($name) < 1) {
From 4ba3af7926c506935420eb9589f608122f82849d Mon Sep 17 00:00:00 2001
From: Shish
Date: Thu, 25 May 2023 12:57:21 +0100
Subject: [PATCH 25/28] version bumps
---
composer.lock | 465 +++++++++++++++----------------
ext/media/main.php | 30 +-
ext/media/video_codecs.php | 16 +-
ext/mime/mime_type.php | 8 +-
ext/transcode_video/main.php | 56 ++--
themes/material/upload.theme.php | 2 +-
6 files changed, 284 insertions(+), 293 deletions(-)
diff --git a/composer.lock b/composer.lock
index 59c692a5..2276eea2 100644
--- a/composer.lock
+++ b/composer.lock
@@ -11,7 +11,7 @@
"version": "1.12.4",
"source": {
"type": "git",
- "url": "git@github.com:jquery/jquery-dist.git",
+ "url": "https://github.com/jquery/jquery-dist.git",
"reference": "5e89585e0121e72ff47de177c5ef604f3089a53d"
},
"dist": {
@@ -50,7 +50,7 @@
"version": "v2.2.1",
"source": {
"type": "git",
- "url": "git@github.com:js-cookie/js-cookie.git",
+ "url": "https://github.com/js-cookie/js-cookie.git",
"reference": "54962f884e9ae33f93e13ac903ffaf1d5a523598"
},
"dist": {
@@ -781,16 +781,16 @@
},
{
"name": "webonyx/graphql-php",
- "version": "v15.2.1",
+ "version": "v15.4.0",
"source": {
"type": "git",
"url": "https://github.com/webonyx/graphql-php.git",
- "reference": "6b02da9313065889eb783d623567476500a572ef"
+ "reference": "99290f7945a5b39ad823f7600fa196de62597e9d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/6b02da9313065889eb783d623567476500a572ef",
- "reference": "6b02da9313065889eb783d623567476500a572ef",
+ "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/99290f7945a5b39ad823f7600fa196de62597e9d",
+ "reference": "99290f7945a5b39ad823f7600fa196de62597e9d",
"shasum": ""
},
"require": {
@@ -800,24 +800,27 @@
},
"require-dev": {
"amphp/amp": "^2.6",
+ "amphp/http-server": "^2.1",
"dms/phpunit-arraysubset-asserts": "^0.4",
"ergebnis/composer-normalize": "^2.28",
"mll-lab/php-cs-fixer-config": "^5.0",
"nyholm/psr7": "^1.5",
"phpbench/phpbench": "^1.2",
"phpstan/extension-installer": "^1.1",
- "phpstan/phpstan": "1.10.3",
- "phpstan/phpstan-phpunit": "1.3.8",
- "phpstan/phpstan-strict-rules": "1.5.0",
+ "phpstan/phpstan": "1.10.15",
+ "phpstan/phpstan-phpunit": "1.3.11",
+ "phpstan/phpstan-strict-rules": "1.5.1",
"phpunit/phpunit": "^9.5",
- "psr/http-message": "^1",
+ "psr/http-message": "^1 || ^2",
"react/http": "^1.6",
"react/promise": "^2.9",
+ "rector/rector": "^0.16.0",
"symfony/polyfill-php81": "^1.23",
"symfony/var-exporter": "^5 || ^6",
"thecodingmachine/safe": "^1.3 || ^2"
},
"suggest": {
+ "amphp/http-server": "To leverage async resolving with webserver on AMPHP platform",
"psr/http-message": "To use standard GraphQL server",
"react/promise": "To leverage async resolving on React PHP platform"
},
@@ -839,7 +842,7 @@
],
"support": {
"issues": "https://github.com/webonyx/graphql-php/issues",
- "source": "https://github.com/webonyx/graphql-php/tree/v15.2.1"
+ "source": "https://github.com/webonyx/graphql-php/tree/v15.4.0"
},
"funding": [
{
@@ -847,7 +850,7 @@
"type": "open_collective"
}
],
- "time": "2023-02-28T13:00:18+00:00"
+ "time": "2023-05-11T10:26:08+00:00"
}
],
"packages-dev": [
@@ -1077,12 +1080,12 @@
"source": {
"type": "git",
"url": "https://github.com/doctrine/annotations.git",
- "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f"
+ "reference": "4b68cf86b766ec429f4f68af648817cdfb360582"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f",
- "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/4b68cf86b766ec429f4f68af648817cdfb360582",
+ "reference": "4b68cf86b766ec429f4f68af648817cdfb360582",
"shasum": ""
},
"require": {
@@ -1144,9 +1147,9 @@
],
"support": {
"issues": "https://github.com/doctrine/annotations/issues",
- "source": "https://github.com/doctrine/annotations/tree/2.0.1"
+ "source": "https://github.com/doctrine/annotations/tree/2.0.x"
},
- "time": "2023-02-02T22:02:53+00:00"
+ "time": "2023-03-27T17:43:32+00:00"
},
{
"name": "doctrine/deprecations",
@@ -1218,7 +1221,6 @@
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"vimeo/psalm": "^4.30 || ^5.4"
},
- "default-branch": true,
"type": "library",
"autoload": {
"psr-4": {
@@ -1343,16 +1345,16 @@
},
{
"name": "friendsofphp/php-cs-fixer",
- "version": "v3.14.4",
+ "version": "v3.17.0",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
- "reference": "1b3d9dba63d93b8a202c31e824748218781eae6b"
+ "reference": "3f0ed862f22386c55a767461ef5083bddceeed79"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/1b3d9dba63d93b8a202c31e824748218781eae6b",
- "reference": "1b3d9dba63d93b8a202c31e824748218781eae6b",
+ "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/3f0ed862f22386c55a767461ef5083bddceeed79",
+ "reference": "3f0ed862f22386c55a767461ef5083bddceeed79",
"shasum": ""
},
"require": {
@@ -1419,9 +1421,15 @@
}
],
"description": "A tool to automatically fix PHP code style",
+ "keywords": [
+ "Static code analysis",
+ "fixer",
+ "standards",
+ "static analysis"
+ ],
"support": {
"issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
- "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.14.4"
+ "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.17.0"
},
"funding": [
{
@@ -1429,26 +1437,26 @@
"type": "github"
}
],
- "time": "2023-02-09T21:49:13+00:00"
+ "time": "2023-05-22T19:59:32+00:00"
},
{
"name": "guzzlehttp/guzzle",
- "version": "dev-master",
+ "version": "7.7.x-dev",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "8459341c16f96b9610dcdfe22bd3060d60c0da04"
+ "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/8459341c16f96b9610dcdfe22bd3060d60c0da04",
- "reference": "8459341c16f96b9610dcdfe22bd3060d60c0da04",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5",
+ "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5",
"shasum": ""
},
"require": {
"ext-json": "*",
- "guzzlehttp/promises": "^1.5",
- "guzzlehttp/psr7": "^1.9 || ^2.4",
+ "guzzlehttp/promises": "^1.5.3 || ^2.0",
+ "guzzlehttp/psr7": "^1.9.1 || ^2.4.5",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0",
"symfony/deprecation-contracts": "^2.2 || ^3.0"
@@ -1459,7 +1467,8 @@
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.1",
"ext-curl": "*",
- "php-http/client-integration-tests": "^3.0",
+ "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999",
+ "php-http/message-factory": "^1.1",
"phpunit/phpunit": "^8.5.29 || ^9.5.23",
"psr/log": "^1.1 || ^2.0 || ^3.0"
},
@@ -1474,9 +1483,6 @@
"bamarni-bin": {
"bin-links": true,
"forward-command": false
- },
- "branch-alias": {
- "dev-master": "7.5-dev"
}
},
"autoload": {
@@ -1542,7 +1548,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
- "source": "https://github.com/guzzle/guzzle/tree/master"
+ "source": "https://github.com/guzzle/guzzle/tree/7.7.0"
},
"funding": [
{
@@ -1558,39 +1564,38 @@
"type": "tidelift"
}
],
- "time": "2022-08-29T11:03:19+00:00"
+ "time": "2023-05-21T14:04:53+00:00"
},
{
"name": "guzzlehttp/promises",
- "version": "dev-master",
+ "version": "2.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
- "reference": "b94b2807d85443f9719887892882d0329d1e2598"
+ "reference": "4a94655427efd6906ed3eb628c79693291264713"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598",
- "reference": "b94b2807d85443f9719887892882d0329d1e2598",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/4a94655427efd6906ed3eb628c79693291264713",
+ "reference": "4a94655427efd6906ed3eb628c79693291264713",
"shasum": ""
},
"require": {
- "php": ">=5.5"
+ "php": "^7.2.5 || ^8.0"
},
"require-dev": {
- "symfony/phpunit-bridge": "^4.4 || ^5.1"
+ "bamarni/composer-bin-plugin": "^1.8.1",
+ "phpunit/phpunit": "^8.5.29 || ^9.5.23"
},
"default-branch": true,
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "1.5-dev"
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
}
},
"autoload": {
- "files": [
- "src/functions_include.php"
- ],
"psr-4": {
"GuzzleHttp\\Promise\\": "src/"
}
@@ -1627,7 +1632,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/1.5.2"
+ "source": "https://github.com/guzzle/promises/tree/2.0"
},
"funding": [
{
@@ -1643,26 +1648,26 @@
"type": "tidelift"
}
],
- "time": "2022-08-28T14:55:35+00:00"
+ "time": "2023-05-21T19:15:14+00:00"
},
{
"name": "guzzlehttp/psr7",
- "version": "dev-master",
+ "version": "2.6.x-dev",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "58d0734481de3fbc62f3d13da4d991e051521282"
+ "reference": "b635f279edd83fc275f822a1188157ffea568ff6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/58d0734481de3fbc62f3d13da4d991e051521282",
- "reference": "58d0734481de3fbc62f3d13da4d991e051521282",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6",
+ "reference": "b635f279edd83fc275f822a1188157ffea568ff6",
"shasum": ""
},
"require": {
"php": "^7.2.5 || ^8.0",
"psr/http-factory": "^1.0",
- "psr/http-message": "^1.0",
+ "psr/http-message": "^1.1 || ^2.0",
"ralouphie/getallheaders": "^3.0"
},
"provide": {
@@ -1677,15 +1682,11 @@
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
},
- "default-branch": true,
"type": "library",
"extra": {
"bamarni-bin": {
"bin-links": true,
"forward-command": false
- },
- "branch-alias": {
- "dev-master": "2.4-dev"
}
},
"autoload": {
@@ -1747,7 +1748,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/master"
+ "source": "https://github.com/guzzle/psr7/tree/2.5.0"
},
"funding": [
{
@@ -1763,7 +1764,7 @@
"type": "tidelift"
}
],
- "time": "2023-02-15T13:59:53+00:00"
+ "time": "2023-04-17T16:11:26+00:00"
},
{
"name": "jms/metadata",
@@ -1836,12 +1837,12 @@
"source": {
"type": "git",
"url": "https://github.com/schmittjoh/serializer.git",
- "reference": "ac0b16ee5317d1aacc41deb91c6c325eae97c176"
+ "reference": "d5cc4674015e362370cbd370948e2ae03496a7cc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/ac0b16ee5317d1aacc41deb91c6c325eae97c176",
- "reference": "ac0b16ee5317d1aacc41deb91c6c325eae97c176",
+ "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/d5cc4674015e362370cbd370948e2ae03496a7cc",
+ "reference": "d5cc4674015e362370cbd370948e2ae03496a7cc",
"shasum": ""
},
"require": {
@@ -1862,7 +1863,7 @@
"ocramius/proxy-manager": "^1.0|^2.0",
"phpbench/phpbench": "^1.0",
"phpstan/phpstan": "^1.0.2",
- "phpunit/phpunit": "^8.5.21||^9.0",
+ "phpunit/phpunit": "^8.5.21||^9.0||^10.0",
"psr/container": "^1.0|^2.0",
"symfony/dependency-injection": "^3.0|^4.0|^5.0|^6.0",
"symfony/expression-language": "^3.2|^4.0|^5.0|^6.0",
@@ -1917,7 +1918,7 @@
],
"support": {
"issues": "https://github.com/schmittjoh/serializer/issues",
- "source": "https://github.com/schmittjoh/serializer/tree/3.23.0"
+ "source": "https://github.com/schmittjoh/serializer/tree/master"
},
"funding": [
{
@@ -1925,7 +1926,7 @@
"type": "github"
}
],
- "time": "2023-02-17T17:40:48+00:00"
+ "time": "2023-05-18T04:58:29+00:00"
},
{
"name": "myclabs/deep-copy",
@@ -1933,12 +1934,12 @@
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
+ "reference": "928a96f585b86224ebc78f8f09d0482cf15b04f5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
- "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/928a96f585b86224ebc78f8f09d0482cf15b04f5",
+ "reference": "928a96f585b86224ebc78f8f09d0482cf15b04f5",
"shasum": ""
},
"require": {
@@ -1946,11 +1947,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"
},
"default-branch": true,
@@ -1977,7 +1979,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.x"
},
"funding": [
{
@@ -1985,7 +1987,7 @@
"type": "tidelift"
}
],
- "time": "2022-03-03T13:19:32+00:00"
+ "time": "2023-03-08T17:24:01+00:00"
},
{
"name": "nikic/php-parser",
@@ -1993,12 +1995,12 @@
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039"
+ "reference": "c9e5a13d68486e9fd75f9be1b4639644e54e7f4f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039",
- "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c9e5a13d68486e9fd75f9be1b4639644e54e7f4f",
+ "reference": "c9e5a13d68486e9fd75f9be1b4639644e54e7f4f",
"shasum": ""
},
"require": {
@@ -2040,9 +2042,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3"
+ "source": "https://github.com/nikic/PHP-Parser/tree/4.x"
},
- "time": "2023-01-16T22:05:37+00:00"
+ "time": "2023-05-21T19:22:47+00:00"
},
{
"name": "phar-io/manifest",
@@ -2241,22 +2243,23 @@
},
{
"name": "phpstan/phpdoc-parser",
- "version": "1.16.1",
+ "version": "1.21.x-dev",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "e27e92d939e2e3636f0a1f0afaba59692c0bf571"
+ "reference": "7f78fd1ff463a7884a331fdb84a25f724dbfd9ea"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/e27e92d939e2e3636f0a1f0afaba59692c0bf571",
- "reference": "e27e92d939e2e3636f0a1f0afaba59692c0bf571",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/7f78fd1ff463a7884a331fdb84a25f724dbfd9ea",
+ "reference": "7f78fd1ff463a7884a331fdb84a25f724dbfd9ea",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
+ "nikic/php-parser": "^4.15",
"php-parallel-lint/php-parallel-lint": "^1.2",
"phpstan/extension-installer": "^1.0",
"phpstan/phpstan": "^1.5",
@@ -2265,6 +2268,7 @@
"phpunit/phpunit": "^9.5",
"symfony/process": "^5.2"
},
+ "default-branch": true,
"type": "library",
"autoload": {
"psr-4": {
@@ -2280,9 +2284,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/1.16.1"
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/1.21.x"
},
- "time": "2023-02-07T18:11:17+00:00"
+ "time": "2023-05-17T16:44:57+00:00"
},
{
"name": "phpstan/phpstan",
@@ -2290,12 +2294,12 @@
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "aed9319bda4e1bf862e2576baf28949877891853"
+ "reference": "42afb02dce13d12623865f068f32ad340ee8ed6f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/aed9319bda4e1bf862e2576baf28949877891853",
- "reference": "aed9319bda4e1bf862e2576baf28949877891853",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/42afb02dce13d12623865f068f32ad340ee8ed6f",
+ "reference": "42afb02dce13d12623865f068f32ad340ee8ed6f",
"shasum": ""
},
"require": {
@@ -2304,7 +2308,6 @@
"conflict": {
"phpstan/phpstan-shim": "*"
},
- "default-branch": true,
"bin": [
"phpstan",
"phpstan.phar"
@@ -2325,8 +2328,11 @@
"static analysis"
],
"support": {
+ "docs": "https://phpstan.org/user-guide/getting-started",
+ "forum": "https://github.com/phpstan/phpstan/discussions",
"issues": "https://github.com/phpstan/phpstan/issues",
- "source": "https://github.com/phpstan/phpstan/tree/1.10.x"
+ "security": "https://github.com/phpstan/phpstan/security/policy",
+ "source": "https://github.com/phpstan/phpstan-src"
},
"funding": [
{
@@ -2342,7 +2348,7 @@
"type": "tidelift"
}
],
- "time": "2023-03-02T09:48:34+00:00"
+ "time": "2023-05-25T11:20:07+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -2350,12 +2356,12 @@
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "700aa825126460ce5be79ae5e1cf2e2c5b71588b"
+ "reference": "100663232669bdacd3ac18f4cc12c38beec9aff1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/700aa825126460ce5be79ae5e1cf2e2c5b71588b",
- "reference": "700aa825126460ce5be79ae5e1cf2e2c5b71588b",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/100663232669bdacd3ac18f4cc12c38beec9aff1",
+ "reference": "100663232669bdacd3ac18f4cc12c38beec9aff1",
"shasum": ""
},
"require": {
@@ -2377,8 +2383,8 @@
"phpunit/phpunit": "^9.3"
},
"suggest": {
- "ext-pcov": "*",
- "ext-xdebug": "*"
+ "ext-pcov": "PHP extension that provides line coverage",
+ "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
},
"type": "library",
"extra": {
@@ -2411,6 +2417,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2"
},
"funding": [
@@ -2419,7 +2426,7 @@
"type": "github"
}
],
- "time": "2023-02-27T12:51:14+00:00"
+ "time": "2023-05-25T06:20:28+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -2668,12 +2675,12 @@
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "d6454d6dd71024848893a1e2d1f1dd78683351db"
+ "reference": "9d8ffd638716761de07b60262fceb553cb4afcd9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d6454d6dd71024848893a1e2d1f1dd78683351db",
- "reference": "d6454d6dd71024848893a1e2d1f1dd78683351db",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9d8ffd638716761de07b60262fceb553cb4afcd9",
+ "reference": "9d8ffd638716761de07b60262fceb553cb4afcd9",
"shasum": ""
},
"require": {
@@ -2706,8 +2713,8 @@
"sebastian/version": "^3.0.2"
},
"suggest": {
- "ext-soap": "*",
- "ext-xdebug": "*"
+ "ext-soap": "To be able to generate mocks based on WSDL files",
+ "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
},
"bin": [
"phpunit"
@@ -2746,6 +2753,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6"
},
"funding": [
@@ -2762,7 +2770,7 @@
"type": "tidelift"
}
],
- "time": "2023-02-28T06:43:37+00:00"
+ "time": "2023-05-25T06:23:23+00:00"
},
{
"name": "psr/cache",
@@ -2930,17 +2938,17 @@
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-client.git",
- "reference": "22b2ef5687f43679481615605d7a15c557ce85b1"
+ "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-client/zipball/22b2ef5687f43679481615605d7a15c557ce85b1",
- "reference": "22b2ef5687f43679481615605d7a15c557ce85b1",
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31",
+ "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31",
"shasum": ""
},
"require": {
"php": "^7.0 || ^8.0",
- "psr/http-message": "^1.0"
+ "psr/http-message": "^1.0 || ^2.0"
},
"default-branch": true,
"type": "library",
@@ -2973,9 +2981,9 @@
"psr-18"
],
"support": {
- "source": "https://github.com/php-fig/http-client/tree/master"
+ "source": "https://github.com/php-fig/http-client/tree/1.0.2"
},
- "time": "2020-09-19T09:12:31+00:00"
+ "time": "2023-04-10T20:12:12+00:00"
},
{
"name": "psr/http-factory",
@@ -2983,17 +2991,17 @@
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-factory.git",
- "reference": "5a4f141ac2e5bc35e615134f127e1833158d2944"
+ "reference": "6d70f402f0eddb2b154b22950b5381bbf5b28469"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-factory/zipball/5a4f141ac2e5bc35e615134f127e1833158d2944",
- "reference": "5a4f141ac2e5bc35e615134f127e1833158d2944",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/6d70f402f0eddb2b154b22950b5381bbf5b28469",
+ "reference": "6d70f402f0eddb2b154b22950b5381bbf5b28469",
"shasum": ""
},
"require": {
"php": ">=7.0.0",
- "psr/http-message": "^1.0"
+ "psr/http-message": "^1.0 || ^2.0"
},
"default-branch": true,
"type": "library",
@@ -3017,7 +3025,7 @@
"homepage": "https://www.php-fig.org/"
}
],
- "description": "Common interfaces for PSR-7 HTTP message factories",
+ "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
"keywords": [
"factory",
"http",
@@ -3031,7 +3039,7 @@
"support": {
"source": "https://github.com/php-fig/http-factory/tree/master"
},
- "time": "2022-07-14T07:21:53+00:00"
+ "time": "2023-05-17T18:32:11+00:00"
},
{
"name": "psr/http-message",
@@ -3039,22 +3047,22 @@
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-message.git",
- "reference": "efd67d1dc14a7ef4fc4e518e7dee91c271d524e4"
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/efd67d1dc14a7ef4fc4e518e7dee91c271d524e4",
- "reference": "efd67d1dc14a7ef4fc4e518e7dee91c271d524e4",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": "^7.2 || ^8.0"
},
"default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"autoload": {
@@ -3069,7 +3077,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for HTTP messages",
@@ -3083,9 +3091,9 @@
"response"
],
"support": {
- "source": "https://github.com/php-fig/http-message/tree/master"
+ "source": "https://github.com/php-fig/http-message/tree/2.0"
},
- "time": "2019-08-29T13:16:46+00:00"
+ "time": "2023-04-04T09:54:51+00:00"
},
{
"name": "psr/log",
@@ -3528,16 +3536,16 @@
},
{
"name": "sebastian/diff",
- "version": "4.0.4",
+ "version": "4.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
+ "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
- "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
+ "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
"shasum": ""
},
"require": {
@@ -3582,7 +3590,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
- "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0"
},
"funding": [
{
@@ -3590,7 +3598,7 @@
"type": "github"
}
],
- "time": "2020-10-26T13:10:38+00:00"
+ "time": "2023-05-07T05:35:17+00:00"
},
{
"name": "sebastian/environment",
@@ -4034,12 +4042,12 @@
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/resource-operations.git",
- "reference": "e1157eac767e4dc4ae40dd9aab7fb4de6e56bd32"
+ "reference": "20bdda85c7c585ab265c0c37ec052a019bae29c4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/e1157eac767e4dc4ae40dd9aab7fb4de6e56bd32",
- "reference": "e1157eac767e4dc4ae40dd9aab7fb4de6e56bd32",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/20bdda85c7c585ab265c0c37ec052a019bae29c4",
+ "reference": "20bdda85c7c585ab265c0c37ec052a019bae29c4",
"shasum": ""
},
"require": {
@@ -4081,7 +4089,7 @@
"type": "github"
}
],
- "time": "2023-02-08T06:53:39+00:00"
+ "time": "2023-03-25T08:11:39+00:00"
},
{
"name": "sebastian/type",
@@ -4194,16 +4202,16 @@
},
{
"name": "symfony/console",
- "version": "6.3.x-dev",
+ "version": "6.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "1090bd292e4de35682f80e94d196c62aab4b3ad7"
+ "reference": "6d340bfbfc082c9ed7eec4844f12132a26b2d344"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/1090bd292e4de35682f80e94d196c62aab4b3ad7",
- "reference": "1090bd292e4de35682f80e94d196c62aab4b3ad7",
+ "url": "https://api.github.com/repos/symfony/console/zipball/6d340bfbfc082c9ed7eec4844f12132a26b2d344",
+ "reference": "6d340bfbfc082c9ed7eec4844f12132a26b2d344",
"shasum": ""
},
"require": {
@@ -4211,7 +4219,7 @@
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/string": "^5.4|^6.0"
+ "symfony/string": "^5.4|^6.0|^7.0"
},
"conflict": {
"symfony/dependency-injection": "<5.4",
@@ -4225,18 +4233,12 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^5.4|^6.0",
- "symfony/dependency-injection": "^5.4|^6.0",
- "symfony/event-dispatcher": "^5.4|^6.0",
- "symfony/lock": "^5.4|^6.0",
- "symfony/process": "^5.4|^6.0",
- "symfony/var-dumper": "^5.4|^6.0"
- },
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/lock": "",
- "symfony/process": ""
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+ "symfony/lock": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.0|^7.0",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -4265,12 +4267,12 @@
"homepage": "https://symfony.com",
"keywords": [
"cli",
- "command line",
+ "command-line",
"console",
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/6.3"
+ "source": "https://github.com/symfony/console/tree/6.4"
},
"funding": [
{
@@ -4286,30 +4288,29 @@
"type": "tidelift"
}
],
- "time": "2023-02-25T17:00:13+00:00"
+ "time": "2023-05-23T16:34:37+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "dev-main",
+ "version": "3.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e"
+ "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e",
- "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
+ "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
"shasum": ""
},
"require": {
"php": ">=8.1"
},
- "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.3-dev"
+ "dev-main": "3.4-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -4338,7 +4339,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/3.4"
},
"funding": [
{
@@ -4354,20 +4355,20 @@
"type": "tidelift"
}
],
- "time": "2023-03-01T10:25:55+00:00"
+ "time": "2023-05-23T14:45:45+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "6.3.x-dev",
+ "version": "6.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "c58ec8623b8cbb3739fbaab5bf972df3f68ef312"
+ "reference": "9ebe352542105f5f7186610a83deb18b90fae3d3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/c58ec8623b8cbb3739fbaab5bf972df3f68ef312",
- "reference": "c58ec8623b8cbb3739fbaab5bf972df3f68ef312",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9ebe352542105f5f7186610a83deb18b90fae3d3",
+ "reference": "9ebe352542105f5f7186610a83deb18b90fae3d3",
"shasum": ""
},
"require": {
@@ -4384,17 +4385,13 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^5.4|^6.0",
- "symfony/dependency-injection": "^5.4|^6.0",
- "symfony/error-handler": "^5.4|^6.0",
- "symfony/expression-language": "^5.4|^6.0",
- "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/error-handler": "^5.4|^6.0|^7.0",
+ "symfony/expression-language": "^5.4|^6.0|^7.0",
+ "symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/stopwatch": "^5.4|^6.0"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
+ "symfony/stopwatch": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -4422,7 +4419,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/event-dispatcher/tree/6.3"
+ "source": "https://github.com/symfony/event-dispatcher/tree/6.4"
},
"funding": [
{
@@ -4438,34 +4435,30 @@
"type": "tidelift"
}
],
- "time": "2023-02-16T09:01:12+00:00"
+ "time": "2023-05-23T16:34:37+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "dev-main",
+ "version": "3.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd"
+ "reference": "a76aed96a42d2b521153fb382d418e30d18b59df"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd",
- "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df",
+ "reference": "a76aed96a42d2b521153fb382d418e30d18b59df",
"shasum": ""
},
"require": {
"php": ">=8.1",
"psr/event-dispatcher": "^1"
},
- "suggest": {
- "symfony/event-dispatcher-implementation": ""
- },
- "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.3-dev"
+ "dev-main": "3.4-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -4502,7 +4495,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1"
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/3.4"
},
"funding": [
{
@@ -4518,20 +4511,20 @@
"type": "tidelift"
}
],
- "time": "2023-03-01T10:32:47+00:00"
+ "time": "2023-05-23T14:45:45+00:00"
},
{
"name": "symfony/filesystem",
- "version": "6.3.x-dev",
+ "version": "6.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "bf3226d895bb4cd6635ef42649ec4a5818e3bf01"
+ "reference": "c2196aa8b563ed0bc645ee316c40ead823adfead"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/bf3226d895bb4cd6635ef42649ec4a5818e3bf01",
- "reference": "bf3226d895bb4cd6635ef42649ec4a5818e3bf01",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/c2196aa8b563ed0bc645ee316c40ead823adfead",
+ "reference": "c2196aa8b563ed0bc645ee316c40ead823adfead",
"shasum": ""
},
"require": {
@@ -4565,7 +4558,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/6.3"
+ "source": "https://github.com/symfony/filesystem/tree/v6.3.0-RC1"
},
"funding": [
{
@@ -4581,27 +4574,27 @@
"type": "tidelift"
}
],
- "time": "2023-02-14T09:04:20+00:00"
+ "time": "2023-04-28T16:05:33+00:00"
},
{
"name": "symfony/finder",
- "version": "6.3.x-dev",
+ "version": "6.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "f5891f0383dc22a615ebd5848e87328d1efad0be"
+ "reference": "1bb60aa99f06979e6078007a812eb7c5ffc8efc2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/f5891f0383dc22a615ebd5848e87328d1efad0be",
- "reference": "f5891f0383dc22a615ebd5848e87328d1efad0be",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/1bb60aa99f06979e6078007a812eb7c5ffc8efc2",
+ "reference": "1bb60aa99f06979e6078007a812eb7c5ffc8efc2",
"shasum": ""
},
"require": {
"php": ">=8.1"
},
"require-dev": {
- "symfony/filesystem": "^6.0"
+ "symfony/filesystem": "^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -4629,7 +4622,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/6.3"
+ "source": "https://github.com/symfony/finder/tree/6.4"
},
"funding": [
{
@@ -4645,20 +4638,20 @@
"type": "tidelift"
}
],
- "time": "2023-02-14T09:04:20+00:00"
+ "time": "2023-05-23T16:34:37+00:00"
},
{
"name": "symfony/options-resolver",
- "version": "6.3.x-dev",
+ "version": "6.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
- "reference": "2fdfd4259397b1300da21c04ba52a673763b73c9"
+ "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/2fdfd4259397b1300da21c04ba52a673763b73c9",
- "reference": "2fdfd4259397b1300da21c04ba52a673763b73c9",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd",
+ "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd",
"shasum": ""
},
"require": {
@@ -4696,7 +4689,7 @@
"options"
],
"support": {
- "source": "https://github.com/symfony/options-resolver/tree/6.3"
+ "source": "https://github.com/symfony/options-resolver/tree/v6.3.0-RC1"
},
"funding": [
{
@@ -4712,7 +4705,7 @@
"type": "tidelift"
}
],
- "time": "2023-02-14T09:04:20+00:00"
+ "time": "2023-05-12T14:21:09+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -5214,16 +5207,16 @@
},
{
"name": "symfony/process",
- "version": "6.3.x-dev",
+ "version": "6.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "e65ce5c9ccb249616aab1dbec53fc938c9017a4c"
+ "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/e65ce5c9ccb249616aab1dbec53fc938c9017a4c",
- "reference": "e65ce5c9ccb249616aab1dbec53fc938c9017a4c",
+ "url": "https://api.github.com/repos/symfony/process/zipball/8741e3ed7fe2e91ec099e02446fb86667a0f1628",
+ "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628",
"shasum": ""
},
"require": {
@@ -5255,7 +5248,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/6.3"
+ "source": "https://github.com/symfony/process/tree/v6.3.0-RC1"
},
"funding": [
{
@@ -5271,20 +5264,20 @@
"type": "tidelift"
}
],
- "time": "2023-02-24T10:44:40+00:00"
+ "time": "2023-05-19T08:06:44+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "dev-main",
+ "version": "3.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "a8c9cedf55f314f3a186041d19537303766df09a"
+ "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a",
- "reference": "a8c9cedf55f314f3a186041d19537303766df09a",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4",
+ "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4",
"shasum": ""
},
"require": {
@@ -5294,14 +5287,10 @@
"conflict": {
"ext-psr": "<1.1|>=2"
},
- "suggest": {
- "symfony/service-implementation": ""
- },
- "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.3-dev"
+ "dev-main": "3.4-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -5341,7 +5330,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.2.1"
+ "source": "https://github.com/symfony/service-contracts/tree/3.4"
},
"funding": [
{
@@ -5357,20 +5346,20 @@
"type": "tidelift"
}
],
- "time": "2023-03-01T10:32:47+00:00"
+ "time": "2023-05-23T14:45:45+00:00"
},
{
"name": "symfony/stopwatch",
- "version": "6.3.x-dev",
+ "version": "6.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
- "reference": "f7fa451783b748e7b5942b9afe889b8df062e935"
+ "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f7fa451783b748e7b5942b9afe889b8df062e935",
- "reference": "f7fa451783b748e7b5942b9afe889b8df062e935",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2",
+ "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2",
"shasum": ""
},
"require": {
@@ -5403,7 +5392,7 @@
"description": "Provides a way to profile code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/stopwatch/tree/6.3"
+ "source": "https://github.com/symfony/stopwatch/tree/v6.3.0-RC1"
},
"funding": [
{
@@ -5419,20 +5408,20 @@
"type": "tidelift"
}
],
- "time": "2023-02-14T09:04:20+00:00"
+ "time": "2023-02-16T10:14:28+00:00"
},
{
"name": "symfony/string",
- "version": "6.3.x-dev",
+ "version": "6.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "599f0f073afa9866d1d3b16c1ffafa74a69fb3ce"
+ "reference": "89bc6d5dcc94c89781e1f986e4d01b7ee91d684b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/599f0f073afa9866d1d3b16c1ffafa74a69fb3ce",
- "reference": "599f0f073afa9866d1d3b16c1ffafa74a69fb3ce",
+ "url": "https://api.github.com/repos/symfony/string/zipball/89bc6d5dcc94c89781e1f986e4d01b7ee91d684b",
+ "reference": "89bc6d5dcc94c89781e1f986e4d01b7ee91d684b",
"shasum": ""
},
"require": {
@@ -5446,11 +5435,11 @@
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
- "symfony/error-handler": "^5.4|^6.0",
- "symfony/http-client": "^5.4|^6.0",
- "symfony/intl": "^6.2",
+ "symfony/error-handler": "^5.4|^6.0|^7.0",
+ "symfony/http-client": "^5.4|^6.0|^7.0",
+ "symfony/intl": "^6.2|^7.0",
"symfony/translation-contracts": "^2.5|^3.0",
- "symfony/var-exporter": "^5.4|^6.0"
+ "symfony/var-exporter": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -5489,7 +5478,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/6.3"
+ "source": "https://github.com/symfony/string/tree/6.4"
},
"funding": [
{
@@ -5505,7 +5494,7 @@
"type": "tidelift"
}
],
- "time": "2023-02-24T10:44:40+00:00"
+ "time": "2023-05-23T16:34:37+00:00"
},
{
"name": "theseer/tokenizer",
diff --git a/ext/media/main.php b/ext/media/main.php
index f7451f41..46966016 100644
--- a/ext/media/main.php
+++ b/ext/media/main.php
@@ -85,20 +85,20 @@ class Media extends Extension
{
$sb = $event->panel->create_new_block("Media Engines");
-// if (self::imagick_available()) {
-// try {
-// $image = new Imagick(realpath('tests/favicon.png'));
-// $image->clear();
-// $sb->add_label("ImageMagick detected");
-// } catch (ImagickException $e) {
-// $sb->add_label("ImageMagick not detected");
-// }
-// } else {
+ // if (self::imagick_available()) {
+ // try {
+ // $image = new Imagick(realpath('tests/favicon.png'));
+ // $image->clear();
+ // $sb->add_label("ImageMagick detected");
+ // } catch (ImagickException $e) {
+ // $sb->add_label("ImageMagick not detected");
+ // }
+ // } else {
$sb->start_table();
$sb->add_table_header("Commands");
$sb->add_text_option(MediaConfig::CONVERT_PATH, "convert", true);
-// }
+ // }
$sb->add_text_option(MediaConfig::FFMPEG_PATH, "ffmpeg", true);
$sb->add_text_option(MediaConfig::FFPROBE_PATH, "ffprobe", true);
@@ -202,8 +202,8 @@ class Media extends Extension
break;
case MediaEngine::IMAGICK:
-// if (self::imagick_available()) {
-// } else {
+ // if (self::imagick_available()) {
+ // } else {
self::image_resize_convert(
$event->input_path,
$event->input_mime,
@@ -227,9 +227,9 @@ class Media extends Extension
}
// TODO: Get output optimization tools working better
-// if ($config->get_bool("thumb_optim", false)) {
-// exec("jpegoptim $outname", $output, $ret);
-// }
+ // if ($config->get_bool("thumb_optim", false)) {
+ // exec("jpegoptim $outname", $output, $ret);
+ // }
}
public const CONTENT_SEARCH_TERM_REGEX = "/^content[=|:]((video)|(audio)|(image)|(unknown))$/i";
diff --git a/ext/media/video_codecs.php b/ext/media/video_codecs.php
index 1a2d2060..0b5c794f 100644
--- a/ext/media/video_codecs.php
+++ b/ext/media/video_codecs.php
@@ -63,12 +63,12 @@ abstract class VideoCodecs
-//
-// public static function is_input_supported(string $engine, string $mime): bool
-// {
-// return MimeType::matches_array(
-// $mime,
-// MediaEngine::INPUT_SUPPORT[$engine]
-// );
-// }
+ //
+ // public static function is_input_supported(string $engine, string $mime): bool
+ // {
+ // return MimeType::matches_array(
+ // $mime,
+ // MediaEngine::INPUT_SUPPORT[$engine]
+ // );
+ // }
}
diff --git a/ext/mime/mime_type.php b/ext/mime/mime_type.php
index 906028b0..b600ec13 100644
--- a/ext/mime/mime_type.php
+++ b/ext/mime/mime_type.php
@@ -251,9 +251,11 @@ class MimeType
$output = MimeType::PPM;
break;
// TODO: There is no uniquely defined Mime type for the cursor format. Need to figure this out.
-// case FileExtension::CUR:
-// $output = MimeType::CUR;
-// break;
+ /*
+ case FileExtension::CUR:
+ $output = MimeType::CUR;
+ break;
+ */
}
}
}
diff --git a/ext/transcode_video/main.php b/ext/transcode_video/main.php
index 9a778f8a..8165f0f1 100644
--- a/ext/transcode_video/main.php
+++ b/ext/transcode_video/main.php
@@ -65,37 +65,37 @@ class TranscodeVideo extends Extension
$sb->end_table();
}
+/*
public function onDataUpload(DataUploadEvent $event)
{
-// global $config;
-//
-// if ($config->get_bool(TranscodeVideoConfig::UPLOAD) == true) {
-// $ext = strtolower($event->type);
-//
-// $ext = Media::normalize_format($ext);
-//
-// if ($event->type=="gif"&&Media::is_animated_gif($event->tmpname)) {
-// return;
-// }
-//
-// if (in_array($ext, array_values(self::INPUT_FORMATS))) {
-// $target_format = $config->get_string(TranscodeVideoConfig::UPLOAD_PREFIX.$ext);
-// if (empty($target_format)) {
-// return;
-// }
-// try {
-// $new_image = $this->transcode_image($event->tmpname, $ext, $target_format);
-// $event->set_tmpname($new_image, Media::determine_ext($target_format));
-// } catch (Exception $e) {
-// log_error("transcode_video", "Error while performing upload transcode: ".$e->getMessage());
-// // We don't want to interfere with the upload process,
-// // so if something goes wrong the untranscoded image jsut continues
-// }
-// }
-// }
+ global $config;
+
+ if ($config->get_bool(TranscodeVideoConfig::UPLOAD) == true) {
+ $ext = strtolower($event->type);
+
+ $ext = Media::normalize_format($ext);
+
+ if ($event->type=="gif"&&Media::is_animated_gif($event->tmpname)) {
+ return;
+ }
+
+ if (in_array($ext, array_values(self::INPUT_FORMATS))) {
+ $target_format = $config->get_string(TranscodeVideoConfig::UPLOAD_PREFIX.$ext);
+ if (empty($target_format)) {
+ return;
+ }
+ try {
+ $new_image = $this->transcode_image($event->tmpname, $ext, $target_format);
+ $event->set_tmpname($new_image, Media::determine_ext($target_format));
+ } catch (Exception $e) {
+ log_error("transcode_video", "Error while performing upload transcode: ".$e->getMessage());
+ // We don't want to interfere with the upload process,
+ // so if something goes wrong the untranscoded image jsut continues
+ }
+ }
+ }
}
-
-
+*/
public function onPageRequest(PageRequestEvent $event)
{
diff --git a/themes/material/upload.theme.php b/themes/material/upload.theme.php
index dca4d9bb..b0bff3a0 100644
--- a/themes/material/upload.theme.php
+++ b/themes/material/upload.theme.php
@@ -9,7 +9,7 @@ class CustomUploadTheme extends UploadTheme
// public function display_block(Page $page) {
// $page->add_block(new Block("Upload", $this->build_upload_block(), "left", 20));
// }
- //
+ //
// public function display_full(Page $page) {
// $page->add_block(new Block("Upload", "Disk nearly full, uploads disabled", "left", 20));
// }
From 12f0bc3a81b7f739de02411623152be309ea5a36 Mon Sep 17 00:00:00 2001
From: Shish
Date: Thu, 25 May 2023 11:26:31 +0100
Subject: [PATCH 26/28] Allow SearchTermParseEvent to have a bit more control
over results
Rather than "add querylet or do nothing", moving more code into the
event means that event handlers are able to add a positive or negative
querylet, add a positive or negative tag, or do nothing
This means that events can respond to the `null` search term by adding a
tag, which would be useful for #917
---
core/imageboard/image.php | 35 ++++-------------------------------
ext/index/events.php | 31 ++++++++++++++++++++++++++++---
ext/index/main.php | 11 +++++++++++
3 files changed, 43 insertions(+), 34 deletions(-)
diff --git a/core/imageboard/image.php b/core/imageboard/image.php
index f40590a6..d16c8d85 100644
--- a/core/imageboard/image.php
+++ b/core/imageboard/image.php
@@ -283,38 +283,11 @@ class Image
* Turn a bunch of strings into a bunch of TagCondition
* and ImgCondition objects
*/
- $stpe = send_event(new SearchTermParseEvent($stpen++, null, $terms));
- if ($stpe->order) {
- $order = $stpe->order;
- } elseif (!empty($stpe->querylets)) {
- foreach ($stpe->querylets as $querylet) {
- $img_conditions[] = new ImgCondition($querylet, true);
- }
- }
-
- foreach ($terms as $term) {
- $positive = true;
- if (is_string($term) && !empty($term) && ($term[0] == '-')) {
- $positive = false;
- $term = substr($term, 1);
- }
- if (strlen($term) === 0) {
- continue;
- }
-
+ foreach (array_merge([null], $terms) as $term) {
$stpe = send_event(new SearchTermParseEvent($stpen++, $term, $terms));
- if ($stpe->order) {
- $order = $stpe->order;
- } elseif (!empty($stpe->querylets)) {
- foreach ($stpe->querylets as $querylet) {
- $img_conditions[] = new ImgCondition($querylet, $positive);
- }
- } else {
- // if the whole match is wild, skip this
- if (str_replace("*", "", $term) != "") {
- $tag_conditions[] = new TagCondition($term, $positive);
- }
- }
+ $order ??= $stpe->order;
+ $img_conditions = array_merge($img_conditions, $stpe->img_conditions);
+ $tag_conditions = array_merge($tag_conditions, $stpe->tag_conditions);
}
return [$tag_conditions, $img_conditions, $order];
}
diff --git a/ext/index/events.php b/ext/index/events.php
index 35268381..235cfc4e 100644
--- a/ext/index/events.php
+++ b/ext/index/events.php
@@ -12,23 +12,48 @@ class SearchTermParseEvent extends Event
{
public int $id = 0;
public ?string $term = null;
+ public bool $positive = true;
/** @var string[] */
public array $context = [];
- /** @var Querylet[] */
- public array $querylets = [];
+ /** @var ImgCondition[] */
+ public array $img_conditions = [];
+ /** @var TagCondition[] */
+ public array $tag_conditions = [];
public ?string $order = null;
public function __construct(int $id, string $term=null, array $context=[])
{
parent::__construct();
+
+ if ($term == "-" || $term == "*") {
+ throw new SearchTermParseException("'$term' is not a valid search term");
+ }
+
+ $positive = true;
+ if (is_string($term) && !empty($term) && ($term[0] == '-')) {
+ $positive = false;
+ $term = substr($term, 1);
+ }
+
$this->id = $id;
+ $this->positive = $positive;
$this->term = $term;
$this->context = $context;
}
public function add_querylet(Querylet $q)
{
- $this->querylets[] = $q;
+ $this->add_img_condition(new ImgCondition($q, $this->positive));
+ }
+
+ public function add_img_condition(ImgCondition $c)
+ {
+ $this->img_conditions[] = $c;
+ }
+
+ public function add_tag_condition(TagCondition $c)
+ {
+ $this->tag_conditions[] = $c;
}
}
diff --git a/ext/index/main.php b/ext/index/main.php
index 446732e1..e28c091f 100644
--- a/ext/index/main.php
+++ b/ext/index/main.php
@@ -257,5 +257,16 @@ class Index extends Extension
$seed = date("Ymd");
$event->order = "RAND($seed)";
}
+
+ // If we've reached this far, and nobody else has done anything with this term, then treat it as a tag
+ if ($event->order == null && $event->img_conditions == [] && $event->tag_conditions == []) {
+ $event->add_tag_condition(new TagCondition($event->term, $event->positive));
+ }
+ }
+
+ public function get_priority(): int
+ {
+ // we want to turn a search term into a TagCondition only if nobody did anything else with that term
+ return 95;
}
}
From ac293241846a81bee2f669891c16f3eba1656689 Mon Sep 17 00:00:00 2001
From: Shish
Date: Thu, 25 May 2023 12:29:41 +0100
Subject: [PATCH 27/28] simplify search a little
---
core/imageboard/image.php | 62 +++++++++++++++------------------------
1 file changed, 23 insertions(+), 39 deletions(-)
diff --git a/core/imageboard/image.php b/core/imageboard/image.php
index d16c8d85..af2483df 100644
--- a/core/imageboard/image.php
+++ b/core/imageboard/image.php
@@ -272,26 +272,6 @@ class Image
return (int)ceil(Image::count_images($tags) / $config->get_int(IndexConfig::IMAGES));
}
- private static function terms_to_conditions(array $terms): array
- {
- $tag_conditions = [];
- $img_conditions = [];
- $stpen = 0; // search term parse event number
- $order = null;
-
- /*
- * Turn a bunch of strings into a bunch of TagCondition
- * and ImgCondition objects
- */
- foreach (array_merge([null], $terms) as $term) {
- $stpe = send_event(new SearchTermParseEvent($stpen++, $term, $terms));
- $order ??= $stpe->order;
- $img_conditions = array_merge($img_conditions, $stpe->img_conditions);
- $tag_conditions = array_merge($tag_conditions, $stpe->tag_conditions);
- }
- return [$tag_conditions, $img_conditions, $order];
- }
-
/*
* Accessors & mutators
*/
@@ -822,19 +802,24 @@ class Image
): Querylet {
global $config;
- list($tag_conditions, $img_conditions, $order) = self::terms_to_conditions($terms);
- $order = ($order ?: "images.".$config->get_string(IndexConfig::ORDER));
+ $tag_conditions = [];
+ $img_conditions = [];
+ $order = null;
- $positive_tag_count = 0;
- $negative_tag_count = 0;
- foreach ($tag_conditions as $tq) {
- if ($tq->positive) {
- $positive_tag_count++;
- } else {
- $negative_tag_count++;
- }
+ /*
+ * Turn a bunch of strings into a bunch of TagCondition
+ * and ImgCondition objects
+ */
+ $stpen = 0; // search term parse event number
+ foreach (array_merge([null], $terms) as $term) {
+ $stpe = send_event(new SearchTermParseEvent($stpen++, $term, $terms));
+ $order ??= $stpe->order;
+ $img_conditions = array_merge($img_conditions, $stpe->img_conditions);
+ $tag_conditions = array_merge($tag_conditions, $stpe->tag_conditions);
}
+ $order = ($order ?: "images.".$config->get_string(IndexConfig::ORDER));
+
/*
* Turn a bunch of Querylet objects into a base query
*
@@ -848,7 +833,7 @@ class Image
*/
// no tags, do a simple search
- if ($positive_tag_count === 0 && $negative_tag_count === 0) {
+ if (count($tag_conditions) === 0) {
$query = new Querylet("SELECT images.* FROM images WHERE 1=1");
}
@@ -856,21 +841,20 @@ class Image
// and do the offset / limit there, which is 10x faster than fetching
// all the image_tags and doing the offset / limit on the result.
elseif (
- (
- ($positive_tag_count === 1 && $negative_tag_count === 0)
- || ($positive_tag_count === 0 && $negative_tag_count === 1)
- )
+ count($tag_conditions) === 1
&& empty($img_conditions)
&& ($order == "id DESC" || $order == "images.id DESC")
&& !is_null($offset)
&& !is_null($limit)
) {
- $in = $positive_tag_count === 1 ? "IN" : "NOT IN";
+ $tc = $tag_conditions[0];
+ $in = $tc->positive ? "IN" : "NOT IN";
// IN (SELECT id FROM tags) is 100x slower than doing a separate
// query and then a second query for IN(first_query_results)??
- $tag_array = self::tag_or_wildcard_to_ids($tag_conditions[0]->tag);
+ $tag_array = self::tag_or_wildcard_to_ids($tc->tag);
if (count($tag_array) == 0) {
- if ($positive_tag_count == 1) {
+ // if wildcard expanded to nothing, take a shortcut
+ if ($tc->positive) {
$query = new Querylet("SELECT images.* FROM images WHERE 1=0");
} else {
$query = new Querylet("SELECT images.* FROM images WHERE 1=1");
@@ -896,7 +880,7 @@ class Image
}
}
- // more than one positive tag, or more than zero negative tags
+ // more than one tag, or more than zero other conditions, or a non-default sort order
else {
$positive_tag_id_array = [];
$positive_wildcard_id_array = [];
From 133616e508b2f4d9154d07db7c10bfb7cbbb5a98 Mon Sep 17 00:00:00 2001
From: Shish
Date: Thu, 25 May 2023 14:04:13 +0100
Subject: [PATCH 28/28] Autocomplete tags for anything with
class=autocomplete_tags
Not all search boxes are tag-search boxes
If somebody doesn't want autocompleted tags, then don't use
class=autocomplete_tags?
---
ext/autocomplete/script.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ext/autocomplete/script.js b/ext/autocomplete/script.js
index 41e1fda5..d437bbf9 100644
--- a/ext/autocomplete/script.js
+++ b/ext/autocomplete/script.js
@@ -1,7 +1,7 @@
document.addEventListener('DOMContentLoaded', () => {
var metatags = ['order:id', 'order:width', 'order:height', 'order:filesize', 'order:filename', 'order:favorites'];
- $('[name="search"]').tagit({
+ $('.autocomplete_tags').tagit({
singleFieldDelimiter: ' ',
beforeTagAdded: function(event, ui) {
if(metatags.indexOf(ui.tagLabel) !== -1) {