diff options
| -rw-r--r-- | api/index.php | 3 | ||||
| -rw-r--r-- | classes/PluginHost.php | 3 | ||||
| -rw-r--r-- | classes/UrlHelper.php | 1 | ||||
| -rw-r--r-- | classes/UserHelper.php | 6 | ||||
| -rw-r--r-- | composer.json | 2 | ||||
| -rw-r--r-- | composer.lock | 12 | ||||
| -rw-r--r-- | include/functions.php | 27 | ||||
| -rw-r--r-- | vendor/autoload.php | 5 | ||||
| -rw-r--r-- | vendor/composer/InstalledVersions.php | 45 | ||||
| -rw-r--r-- | vendor/composer/autoload_classmap.php | 1 | ||||
| -rw-r--r-- | vendor/composer/autoload_psr4.php | 2 | ||||
| -rw-r--r-- | vendor/composer/autoload_static.php | 7 | ||||
| -rw-r--r-- | vendor/composer/installed.json | 12 | ||||
| -rw-r--r-- | vendor/composer/installed.php | 10 | ||||
| -rw-r--r-- | vendor/phpstan/phpstan/LICENSE | 1 | ||||
| -rw-r--r-- | vendor/phpstan/phpstan/README.md | 6 | ||||
| -rwxr-xr-x | vendor/phpstan/phpstan/phpstan.phar | bin | 23477397 -> 24045381 bytes | |||
| -rw-r--r-- | vendor/phpstan/phpstan/phpstan.phar.asc | 26 |
18 files changed, 100 insertions, 69 deletions
diff --git a/api/index.php b/api/index.php index c468823e1..732b7bd9a 100644 --- a/api/index.php +++ b/api/index.php @@ -55,7 +55,8 @@ } else /* if (method_exists($handler, 'index')) */ { $handler->index($method); } - $handler->after(); + // API isn't currently overriding Handler#after() + // $handler->after(); } header("Api-Content-Length: " . ob_get_length()); diff --git a/classes/PluginHost.php b/classes/PluginHost.php index 5f1d97f53..ec47e6249 100644 --- a/classes/PluginHost.php +++ b/classes/PluginHost.php @@ -143,9 +143,6 @@ class PluginHost { /** @see Plugin::hook_format_article() */ const HOOK_FORMAT_ARTICLE = "hook_format_article"; - /** @see Plugin::hook_format_article_cdm() */ - const HOOK_FORMAT_ARTICLE_CDM = "hook_format_article_cdm"; - /** @see Plugin::hook_feed_basic_info() */ const HOOK_FEED_BASIC_INFO = "hook_feed_basic_info"; diff --git a/classes/UrlHelper.php b/classes/UrlHelper.php index ad01266ee..d31dcaa3c 100644 --- a/classes/UrlHelper.php +++ b/classes/UrlHelper.php @@ -432,6 +432,7 @@ class UrlHelper { return false; } + // @phpstan-ignore argument.type (prior validation ensures the host value exists) self::$fetch_effective_ip_addr = gethostbyname(parse_url(self::$fetch_effective_url, PHP_URL_HOST)); if (!self::$fetch_effective_ip_addr || str_starts_with(self::$fetch_effective_ip_addr, '127.')) { diff --git a/classes/UserHelper.php b/classes/UserHelper.php index c0540258f..15063c33f 100644 --- a/classes/UserHelper.php +++ b/classes/UserHelper.php @@ -181,10 +181,8 @@ class UserHelper { $_SESSION["last_login_update"] = time(); } - if ($_SESSION["uid"]) { - startup_gettext(); - self::load_user_plugins($_SESSION["uid"]); - } + startup_gettext(); + self::load_user_plugins($_SESSION["uid"]); } } diff --git a/composer.json b/composer.json index d24dc045c..e9031ad82 100644 --- a/composer.json +++ b/composer.json @@ -29,7 +29,7 @@ "guzzlehttp/guzzle": "^7.0" }, "require-dev": { - "phpstan/phpstan": "2.0.1", + "phpstan/phpstan": "2.1.13", "phpunit/phpunit": "9.5.16", "phpunit/php-code-coverage": "^9.2" } diff --git a/composer.lock b/composer.lock index 24ea84514..b78a7a17a 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": "1aa8437b32b5398144a47490f6bcdfa0", + "content-hash": "ad2f3020f2db46475c16f9710a84bca4", "packages": [ { "name": "chillerlan/php-qrcode", @@ -1648,16 +1648,16 @@ }, { "name": "phpstan/phpstan", - "version": "2.0.1", + "version": "2.1.13", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "ab4e9b4415a5fc9e4d27f7fe16c8bc9d067dcd6d" + "reference": "e55e03e6d4ac49cd1240907e5b08e5cd378572a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ab4e9b4415a5fc9e4d27f7fe16c8bc9d067dcd6d", - "reference": "ab4e9b4415a5fc9e4d27f7fe16c8bc9d067dcd6d", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e55e03e6d4ac49cd1240907e5b08e5cd378572a9", + "reference": "e55e03e6d4ac49cd1240907e5b08e5cd378572a9", "shasum": "" }, "require": { @@ -1702,7 +1702,7 @@ "type": "github" } ], - "time": "2024-11-11T15:43:04+00:00" + "time": "2025-04-27T12:28:25+00:00" }, { "name": "phpunit/php-code-coverage", diff --git a/include/functions.php b/include/functions.php index 69e5e746e..c573042a2 100644 --- a/include/functions.php +++ b/include/functions.php @@ -112,24 +112,21 @@ // create a list like "en" => 0.8 $langs = array_combine($lang_parse[1], $lang_parse[4]); - /** @phpstan-ignore function.alreadyNarrowedType (PHP 7.4 will return false if array_value has an issue) */ - if (is_array($langs)) { - // set default to 1 for any without q factor - foreach ($langs as $lang => $val) { - if ($val === '') $langs[$lang] = 1; - } + // set default to 1 for any without q factor + foreach ($langs as $lang => $val) { + if ($val === '') $langs[$lang] = 1; + } - // sort list based on value - arsort($langs, SORT_NUMERIC); + // sort list based on value + arsort($langs, SORT_NUMERIC); - foreach (array_keys($langs) as $lang) { - $lang = strtolower($lang); + foreach (array_keys($langs) as $lang) { + $lang = strtolower($lang); - foreach ($valid_langs as $vlang => $vlocale) { - if ($vlang == $lang) { - $selected_locale = $vlocale; - break 2; - } + foreach ($valid_langs as $vlang => $vlocale) { + if ($vlang == $lang) { + $selected_locale = $vlocale; + break 2; } } } diff --git a/vendor/autoload.php b/vendor/autoload.php index 8235051f8..1ff829eb2 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -14,10 +14,7 @@ if (PHP_VERSION_ID < 50600) { echo $err; } } - trigger_error( - $err, - E_USER_ERROR - ); + throw new RuntimeException($err); } require_once __DIR__ . '/composer/autoload_real.php'; diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php index 51e734a77..2052022fd 100644 --- a/vendor/composer/InstalledVersions.php +++ b/vendor/composer/InstalledVersions.php @@ -27,12 +27,23 @@ use Composer\Semver\VersionParser; class InstalledVersions { /** + * @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to + * @internal + */ + private static $selfDir = null; + + /** * @var mixed[]|null * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null */ private static $installed; /** + * @var bool + */ + private static $installedIsLocalDir; + + /** * @var bool|null */ private static $canGetVendors; @@ -309,6 +320,24 @@ class InstalledVersions { self::$installed = $data; self::$installedByVendor = array(); + + // when using reload, we disable the duplicate protection to ensure that self::$installed data is + // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not, + // so we have to assume it does not, and that may result in duplicate data being returned when listing + // all installed packages for example + self::$installedIsLocalDir = false; + } + + /** + * @return string + */ + private static function getSelfDir() + { + if (self::$selfDir === null) { + self::$selfDir = strtr(__DIR__, '\\', '/'); + } + + return self::$selfDir; } /** @@ -322,19 +351,27 @@ class InstalledVersions } $installed = array(); + $copiedLocalDir = false; if (self::$canGetVendors) { + $selfDir = self::getSelfDir(); foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + $vendorDir = strtr($vendorDir, '\\', '/'); if (isset(self::$installedByVendor[$vendorDir])) { $installed[] = self::$installedByVendor[$vendorDir]; } elseif (is_file($vendorDir.'/composer/installed.php')) { /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */ $required = require $vendorDir.'/composer/installed.php'; - $installed[] = self::$installedByVendor[$vendorDir] = $required; - if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { - self::$installed = $installed[count($installed) - 1]; + self::$installedByVendor[$vendorDir] = $required; + $installed[] = $required; + if (self::$installed === null && $vendorDir.'/composer' === $selfDir) { + self::$installed = $required; + self::$installedIsLocalDir = true; } } + if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) { + $copiedLocalDir = true; + } } } @@ -350,7 +387,7 @@ class InstalledVersions } } - if (self::$installed !== array()) { + if (self::$installed !== array() && !$copiedLocalDir) { $installed[] = self::$installed; } diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 9d549cf48..39b16fb04 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -14,6 +14,7 @@ return array( 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 'Config' => $baseDir . '/classes/Config.php', 'Counters' => $baseDir . '/classes/Counters.php', + 'Crypt' => $baseDir . '/classes/Crypt.php', 'Db' => $baseDir . '/classes/Db.php', 'Db_Migrations' => $baseDir . '/classes/Db_Migrations.php', 'Db_Prefs' => $baseDir . '/classes/Db_Prefs.php', diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 011fbfb51..9c7d39932 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -6,7 +6,7 @@ $vendorDir = dirname(__DIR__); $baseDir = dirname($vendorDir); return array( - 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/reflection-docblock/src', $vendorDir . '/phpdocumentor/type-resolver/src'), + 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-docblock/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-common/src'), 'chillerlan\\Settings\\' => array($vendorDir . '/chillerlan/php-settings-container/src'), 'chillerlan\\QRCode\\' => array($vendorDir . '/chillerlan/php-qrcode/src'), 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'), diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index cdd8fcfe8..f7e6408aa 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -63,9 +63,9 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056 public static $prefixDirsPsr4 = array ( 'phpDocumentor\\Reflection\\' => array ( - 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src', - 1 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src', - 2 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src', + 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src', + 1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src', + 2 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src', ), 'chillerlan\\Settings\\' => array ( @@ -147,6 +147,7 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 'Config' => __DIR__ . '/../..' . '/classes/Config.php', 'Counters' => __DIR__ . '/../..' . '/classes/Counters.php', + 'Crypt' => __DIR__ . '/../..' . '/classes/Crypt.php', 'Db' => __DIR__ . '/../..' . '/classes/Db.php', 'Db_Migrations' => __DIR__ . '/../..' . '/classes/Db_Migrations.php', 'Db_Prefs' => __DIR__ . '/../..' . '/classes/Db_Prefs.php', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index cb7009550..0fdf8b38e 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1235,17 +1235,17 @@ }, { "name": "phpstan/phpstan", - "version": "2.0.1", - "version_normalized": "2.0.1.0", + "version": "2.1.13", + "version_normalized": "2.1.13.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "ab4e9b4415a5fc9e4d27f7fe16c8bc9d067dcd6d" + "reference": "e55e03e6d4ac49cd1240907e5b08e5cd378572a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ab4e9b4415a5fc9e4d27f7fe16c8bc9d067dcd6d", - "reference": "ab4e9b4415a5fc9e4d27f7fe16c8bc9d067dcd6d", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e55e03e6d4ac49cd1240907e5b08e5cd378572a9", + "reference": "e55e03e6d4ac49cd1240907e5b08e5cd378572a9", "shasum": "" }, "require": { @@ -1254,7 +1254,7 @@ "conflict": { "phpstan/phpstan-shim": "*" }, - "time": "2024-11-11T15:43:04+00:00", + "time": "2025-04-27T12:28:25+00:00", "bin": [ "phpstan", "phpstan.phar" diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index ec8677198..edcc369dd 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => 'cd2c10f9f71409df24fc74c1bbd7d5ddbf48d991', + 'reference' => '0961c8bd4c8a4f61f9458c08bf0e91b5cc2aa5d0', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -13,7 +13,7 @@ '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => 'cd2c10f9f71409df24fc74c1bbd7d5ddbf48d991', + 'reference' => '0961c8bd4c8a4f61f9458c08bf0e91b5cc2aa5d0', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -175,9 +175,9 @@ 'dev_requirement' => true, ), 'phpstan/phpstan' => array( - 'pretty_version' => '2.0.1', - 'version' => '2.0.1.0', - 'reference' => 'ab4e9b4415a5fc9e4d27f7fe16c8bc9d067dcd6d', + 'pretty_version' => '2.1.13', + 'version' => '2.1.13.0', + 'reference' => 'e55e03e6d4ac49cd1240907e5b08e5cd378572a9', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpstan', 'aliases' => array(), diff --git a/vendor/phpstan/phpstan/LICENSE b/vendor/phpstan/phpstan/LICENSE index 7c0f2b7b6..e5f34e607 100644 --- a/vendor/phpstan/phpstan/LICENSE +++ b/vendor/phpstan/phpstan/LICENSE @@ -1,6 +1,7 @@ MIT License Copyright (c) 2016 Ondřej Mirtes +Copyright (c) 2025 PHPStan s.r.o. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/phpstan/phpstan/README.md b/vendor/phpstan/phpstan/README.md index e3bb94063..abae67ecf 100644 --- a/vendor/phpstan/phpstan/README.md +++ b/vendor/phpstan/phpstan/README.md @@ -60,11 +60,11 @@ can be checked before you run the actual line. <a href="https://inviqa.com/"><img src="website/src/images/sponsor/inviqa.png" alt="Inviqa" width="254" height="65"></a> <br> -<a href="https://www.getresponse.com/"><img src="website/src/images/sponsor/getresponse.png" alt="GetResponse" width="283" height="64"></a> - <a href="https://www.shoptet.cz/"><img src="website/src/images/sponsor/shoptet.png" alt="Shoptet" width="283" height="64"></a> -<br> + <a href="https://route4me.com/"><img src="website/src/images/sponsor/route4me.png" alt="Route4Me: Route Optimizer and Route Planner Software" width="283" height="64"></a> +<br> +<a href="https://werkenbijbelsimpel.nl/en/about-us/"><img src="website/src/images/sponsor/belsimpel.png" alt="Belsimpel" width="284" height="64"></a> <a href="https://jobs.ticketswap.com/"><img src="website/src/images/sponsor/ticketswap.png" alt="TicketSwap" width="269" height="64"></a> diff --git a/vendor/phpstan/phpstan/phpstan.phar b/vendor/phpstan/phpstan/phpstan.phar Binary files differindex 1bfd1e5cb..06c6b48a6 100755 --- a/vendor/phpstan/phpstan/phpstan.phar +++ b/vendor/phpstan/phpstan/phpstan.phar diff --git a/vendor/phpstan/phpstan/phpstan.phar.asc b/vendor/phpstan/phpstan/phpstan.phar.asc index 1f97d1db1..c6acfbe08 100644 --- a/vendor/phpstan/phpstan/phpstan.phar.asc +++ b/vendor/phpstan/phpstan/phpstan.phar.asc @@ -1,16 +1,16 @@ -----BEGIN PGP SIGNATURE----- -iQIzBAABCgAdFiEEynwsejDI6OEnSoR2UcZzBf/C5cAFAmcyJeMACgkQUcZzBf/C -5cCV0A//Sg3/cyjMFpusDfq8uk57ADL2jerPD4oPRG9/smKWf14pAsWwk7PQOcQe -zb2f+YW1tEouiyc/+RQoc+Xkv2om2N7RwaH4C7/dNnV6HYEsQS3U5cP4le/d32U6 -0wtu0Se6FieFEc5Z/wEZzbGZCa3xToIFXIC8awNvZO6p5JGB29dWeIZgbmpHHN/6 -yIxBGom0PYIf5My+J9nTlM0hYICKKGzU4NdCQzFVdenA/YCdXwr8lvec1ZwKcb2z -Y6sJWaBvYIGPg4ej5oVuEm/vUx4NXnKpmn5Up+wOXRjzoS6ZcduO9gxCwgJ8Uh1r -MzdTbeopFh/ZIw7HgoG32BS1yZWjBFzW5MUwCzugil9Q6wfkc5hCWFG0DvKbhZK3 -6rCPqfJQ//8C+870Ej+rX6nndn93KHp696dRjiSDFVnB3kFOUcHhFYdaSzdaWZ2x -E26PwyI4NBIynS153EIo2S1poIAWsAXQTWaFyRqrUq+QkeioxdKJr7UVtmZJcqH3 -v5lytzJwYvmYk57CjCoJDWwY6y1b7YN1zkjzlNozlcvbF4ftzIIXZW5CcOeg1Dij -jZEOhVnEygbCvYcXCn3RSC5OZe0wz/B5EuT4HnLpeyyE+tLg2evqfJXqwagwRZoL -EiMpKZlYY2kEdgezzefYH1ElCvmjaa5BRTlXYswVW/G7KKJ6fq8= -=lVJA +iQIzBAABCgAdFiEEynwsejDI6OEnSoR2UcZzBf/C5cAFAmgOIscACgkQUcZzBf/C +5cBGzA//Wya23VZ7JBZM3RNR4g4d3ez39/BIa5XBHAF1Hpm9dmliDlME6R73ZNHk +D7LT/tLU72AgYuWaIp0mADIkmqU+OPZTGKXkncJHxWlcJm5QLZxy6tYvC8MUvjHK +lv2Vs1Ito9rbnnTHTieAnjvp7Ne3YUmVMLTHPP+R8tyPcNeHbHpUqlQf83sb6OK7 +7fZKBeHvb98p1ii9uNetzjC/CWbknHddq9viT46TZYuwXMVKYOuMkweppMHlxOY0 +741+FQQ3dJB7Jp3NOLwYYqe7WcMyKrYiXJuIvpUSK38EbHg6NTDqwvenXTDMN45i +x8vhc5mhJHkuNfjqgjgpvvqFMt1WtoYa3a26ArwVcEKfptAkgGsNxvs4TS5xx9xC +fFzyOhMEPbHRSe7DnctOKSR075ylrd+jBfSH7ldoHE5L2H+qSsZIxHZ/cgqmCwVn +eGEetLf5raNyojipMXzJYO3JQtTRkUJ1V9FPK603CNEEXJGW6ZFSSFgsF+PCvWg4 +Op5w3OlxpjLRYgtzSSrLZlABNoNbG680+nf7YKaBRbuF4K0IaSBC9Og+KKtCf3MH +hQrVEPJH9M7jvt3Vc8l5KRqALi3AgN0qAXzQWd8X4xUfS9oKEyZjnrfdvmwqk3gg +gZW5hZsGpwY0mgtBV1lRnhv4tLWzhMee3VHZVtVmalz/K0HXdQ0= +=s49h -----END PGP SIGNATURE----- |