From 44ce98da8ad1b6d5afd3a3c0268bc595115db60e Mon Sep 17 00:00:00 2001 From: Luffy <52o@qq52o.cn> Date: Thu, 13 Aug 2026 18:28:12 +0800 Subject: [PATCH] Fix testing and path errors --- include/release-qa.php | 52 +++++++++++++------ include/version.inc | 3 +- phpstan-baseline.neon | 78 ---------------------------- public/images/supported-versions.php | 4 +- public/index.php | 10 ++-- public/releases/active.php | 2 +- src/News/NewsHandler.php | 2 +- 7 files changed, 47 insertions(+), 104 deletions(-) diff --git a/include/release-qa.php b/include/release-qa.php index 59f16e0f08..9b9102245e 100644 --- a/include/release-qa.php +++ b/include/release-qa.php @@ -128,44 +128,60 @@ // release : These are encouraged for use (e.g., linked at qa.php.net) // reported : These are allowed to report @ the php.qa.reports mailing list -(function(&$QA_RELEASES) use ($QA_CHECKSUM_TYPES) { - foreach ($QA_RELEASES as $pversion => $info) { +$process_qa_releases = /** + * @param array $qa_releases + * @param list $checksum_types + * @return array + */ +static function(array $qa_releases, array $checksum_types): array { + foreach ($qa_releases as $pversion => $info) { if (isset($info['active']) && $info['active']) { // Allow -dev versions of all active types // Example: 5.3.6-dev - $QA_RELEASES['reported'][] = "{$pversion}-dev"; - $QA_RELEASES[$pversion]['dev_version'] = "{$pversion}-dev"; + $qa_releases['reported'][] = "{$pversion}-dev"; + $qa_releases[$pversion]['dev_version'] = "{$pversion}-dev"; // Allow -dev version of upcoming qa releases (rc/alpha/beta) // @todo confirm this php version format for all dev versions if ((int)$info['release']['number'] > 0) { - $QA_RELEASES['reported'][] = "{$pversion}{$info['release']['type']}{$info['release']['number']}"; + $qa_releases['reported'][] = "{$pversion}{$info['release']['type']}{$info['release']['number']}"; if (!empty($info['release']['baseurl'])) { // php.net filename format for qa releases // example: php-5.3.0RC2 $fn_base = 'php-' . $pversion . $info['release']['type'] . $info['release']['number']; - $QA_RELEASES[$pversion]['release']['version'] = $pversion . $info['release']['type'] . $info['release']['number']; + $qa_releases[$pversion]['release']['version'] = $pversion . $info['release']['type'] . $info['release']['number']; foreach ([ 'bz2', 'gz', 'xz' ] as $file_type) { - foreach ($QA_CHECKSUM_TYPES as $algo) { + foreach ($checksum_types as $algo) { if (isset($info['release'][$algo . '_' . $file_type])) { - $QA_RELEASES[$pversion]['release']['files'][$file_type][$algo] = $info['release'][$algo . '_' . $file_type]; + $qa_releases[$pversion]['release']['files'][$file_type][$algo] = $info['release'][$algo . '_' . $file_type]; } } - if (!empty($QA_RELEASES[$pversion]['release']['files'][$file_type])) { - $QA_RELEASES[$pversion]['release']['files'][$file_type]['path']= $info['release']['baseurl'] . $fn_base . '.tar.' . $file_type; + if (!empty($qa_releases[$pversion]['release']['files'][$file_type])) { + $qa_releases[$pversion]['release']['files'][$file_type]['path']= $info['release']['baseurl'] . $fn_base . '.tar.' . $file_type; } } - if (empty($QA_RELEASES[$pversion]['release']['files'])) { - $QA_RELEASES[$pversion]['release']['enabled'] = false; + if (empty($qa_releases[$pversion]['release']['files'])) { + $qa_releases[$pversion]['release']['enabled'] = false; } } } else { - $QA_RELEASES[$pversion]['release']['enabled'] = false; + $qa_releases[$pversion]['release']['enabled'] = false; } } @@ -174,10 +190,14 @@ // Sorted information for later use // @todo need these? // $QA_RELEASES['releases'] : All current versions with active qa releases - foreach ($QA_RELEASES as $pversion => $info) { + foreach ($qa_releases as $pversion => $info) { if (isset($info['active']) && $info['active'] && !empty($info['release']['number'])) { - $QA_RELEASES['releases'][$pversion] = $info['release']; + $qa_releases['releases'][$pversion] = $info['release']; } } -})($QA_RELEASES); + return $qa_releases; +}; + +$QA_RELEASES = $process_qa_releases($QA_RELEASES, $QA_CHECKSUM_TYPES); +unset($process_qa_releases); diff --git a/include/version.inc b/include/version.inc index d7f0acd87a..b1c1c987ec 100644 --- a/include/version.inc +++ b/include/version.inc @@ -70,11 +70,12 @@ $RELEASES = (function () { $ret = []; foreach ($data as $release) { + $release += ['announcement' => true]; $version = $release['version']; [$major] = explode('.', $version, 2); $info = [ - 'announcement' => $release['announcement'] ?? true, + 'announcement' => $release['announcement'], 'tags' => $release['tags'], 'date' => $release['date'], 'source' => [], diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index b9444947e1..62616a555f 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1002,60 +1002,6 @@ parameters: count: 1 path: include/posttohost.inc - - - message: '#^Cannot access offset ''host'' on array\{scheme\?\: string, host\?\: string, port\?\: int\<0, 65535\>, user\?\: string, pass\?\: string, path\?\: string, query\?\: string, fragment\?\: string\}\|false\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 2 - path: include/prepend.inc - - - - message: '#^Comparison operation "\>" between 0 and 0 is always false\.$#' - identifier: greater.alwaysFalse - count: 1 - path: include/release-qa.php - - - - message: '#^Offset ''active'' on array\{active\: true, release\: array\{type\: ''RC'', number\: 0, sha256_bz2\: '''', sha256_gz\: '''', sha256_xz\: '''', date\: ''05 Dec 2024''\|''07 May 2026''\|''21 May 2026'', baseurl\: ''https\://downloads…''\}\|array\{type\: ''RC'', number\: 0, sha256_bz2\: '''', sha256_gz\: '''', sha256_xz\: '''', date\: ''28 May 2026'', baseurl\: ''https\://downloads…''\}\} in isset\(\) always exists and is not nullable\.$#' - identifier: isset.offset - count: 1 - path: include/release-qa.php - - - - message: '#^Offset ''baseurl'' on array\{type\: ''RC'', number\: 0, sha256_bz2\: '''', sha256_gz\: '''', sha256_xz\: '''', date\: ''05 Dec 2024''\|''07 May 2026''\|''21 May 2026'', baseurl\: ''https\://downloads…''\}\|array\{type\: ''RC'', number\: 0, sha256_bz2\: '''', sha256_gz\: '''', sha256_xz\: '''', date\: ''28 May 2026'', baseurl\: ''https\://downloads…''\} in empty\(\) always exists and is not falsy\.$#' - identifier: empty.offset - count: 1 - path: include/release-qa.php - - - - message: '#^Offset ''bz2''\|''gz''\|''xz'' on non\-empty\-array\{bz2\?\: array\{sha256\: '''', path\?\: ''https\://downloads…''\}, gz\?\: array\{sha256\: '''', path\?\: ''https\://downloads…''\}, xz\?\: array\{sha256\: '''', path\?\: ''https\://downloads…''\}\} in empty\(\) always exists and is not falsy\.$#' - identifier: empty.offset - count: 1 - path: include/release-qa.php - - - - message: '#^Offset ''files'' on array\{type\: ''RC'', number\: 0, sha256_bz2\: '''', sha256_gz\: '''', sha256_xz\: '''', date\: ''05 Dec 2024''\|''07 May 2026''\|''21 May 2026'', baseurl\: ''https\://downloads…'', enabled\?\: false, \.\.\.\}\|array\{type\: ''RC'', number\: 0, sha256_bz2\: '''', sha256_gz\: '''', sha256_xz\: '''', date\: ''28 May 2026'', baseurl\: ''https\://downloads…'', version\: ''8\.2\.27RC0''\|''8\.3\.31RC0''\|''8\.4\.22RC0''\|''8\.5\.7RC0'', \.\.\.\} in empty\(\) always exists and is not falsy\.$#' - identifier: empty.offset - count: 1 - path: include/release-qa.php - - - - message: '#^Offset ''number'' on array\{type\: ''RC'', number\: 0, sha256_bz2\: '''', sha256_gz\: '''', sha256_xz\: '''', date\: ''05 Dec 2024''\|''07 May 2026''\|''21 May 2026'', baseurl\: ''https\://downloads…'', enabled\: false\}\|array\{type\: ''RC'', number\: 0, sha256_bz2\: '''', sha256_gz\: '''', sha256_xz\: '''', date\: ''28 May 2026'', baseurl\: ''https\://downloads…'', enabled\: false\} in empty\(\) always exists and is always falsy\.$#' - identifier: empty.offset - count: 1 - path: include/release-qa.php - - - - message: '#^Offset ''sha256_bz2''\|''sha256_gz''\|''sha256_xz'' on array\{type\: ''RC'', number\: 0, sha256_bz2\: '''', sha256_gz\: '''', sha256_xz\: '''', date\: ''05 Dec 2024''\|''07 May 2026''\|''21 May 2026'', baseurl\: ''https\://downloads…''\}\|array\{type\: ''RC'', number\: 0, sha256_bz2\: '''', sha256_gz\: '''', sha256_xz\: '''', date\: ''28 May 2026'', baseurl\: ''https\://downloads…''\} in isset\(\) always exists and is not nullable\.$#' - identifier: isset.offset - count: 1 - path: include/release-qa.php - - - - message: '#^Right side of && is always true\.$#' - identifier: booleanAnd.rightAlwaysTrue - count: 2 - path: include/release-qa.php - - message: '#^Function autogen\(\) has no return type specified\.$#' identifier: missingType.return @@ -1326,12 +1272,6 @@ parameters: count: 1 path: include/version.inc - - - message: '#^Offset ''announcement'' on array\{version\: ''8\.2\.31'', date\: ''07 May 2026'', tags\: array\{''security''\}, sha256\: array\{''tar\.gz''\: ''083c2f61cc5f527eb29…'', ''tar\.bz2''\: ''948183fa04cf261c9b9…'', ''tar\.xz''\: ''95eae411d594fe6f6e5…''\}\}\|array\{version\: ''8\.3\.31'', date\: ''07 May 2026'', tags\: array\{''security''\}, sha256\: array\{''tar\.gz''\: ''4e7baaf0a690e954a20…'', ''tar\.bz2''\: ''e6986b1fd37eb254021…'', ''tar\.xz''\: ''66410cee07f4b2baeb0…''\}\}\|array\{version\: ''8\.4\.22'', date\: ''04 Jun 2026'', tags\: array\{\}, sha256\: array\{''tar\.gz''\: ''a012c2c9724baf214a7…'', ''tar\.bz2''\: ''4b16e7e2c384ce25e07…'', ''tar\.xz''\: ''696c0f6ad92e94c5905…''\}\}\|array\{version\: ''8\.5\.7'', date\: ''04 Jun 2026'', tags\: array\{\}, sha256\: array\{''tar\.gz''\: ''e5eba93fd6dd3241d0e…'', ''tar\.bz2''\: ''4ef9355f784d4b32015…'', ''tar\.xz''\: ''01ba2ed1c2658dacf91…''\}\} on left side of \?\? does not exist\.$#' - identifier: nullCoalesce.offset - count: 1 - path: include/version.inc - - message: '#^Parameter \#3 \$length of function substr expects int\|null, int\|false given\.$#' identifier: argument.type @@ -1722,12 +1662,6 @@ parameters: count: 1 path: public/credits.php - - - message: '#^Parameter \#2 \$subject of function preg_match expects string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: public/credits.php - - message: '#^Variable \$LANG might not be defined\.$#' identifier: variable.undefined @@ -1788,12 +1722,6 @@ parameters: count: 1 path: public/downloads.php - - - message: '#^Result of && is always true\.$#' - identifier: booleanAnd.alwaysTrue - count: 1 - path: public/downloads.php - - message: '#^Variable \$MYSITE might not be defined\.$#' identifier: variable.undefined @@ -2406,12 +2334,6 @@ parameters: count: 1 path: public/submit-event.php - - - message: '#^Offset ''email'' on non\-empty\-array\ in isset\(\) always exists and is not nullable\.$#' - identifier: isset.offset - count: 1 - path: public/submit-event.php - - message: '#^Offset ''scheme'' might not exist on array\{scheme\?\: string, host\: non\-falsy\-string, port\?\: int\<0, 65535\>, user\?\: string, pass\?\: string, path\?\: string, query\?\: string, fragment\?\: string\}\.$#' identifier: offsetAccess.notFound diff --git a/public/images/supported-versions.php b/public/images/supported-versions.php index 80434bbb8c..d5bdf1b5a8 100644 --- a/public/images/supported-versions.php +++ b/public/images/supported-versions.php @@ -1,6 +1,6 @@