mediawiki/extensions/DocBookExport (main)

sourcepatches
From 7dde68c83f6b515b508df4543096fb1895ab3a83 Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Fri, 16 Jan 2026 01:28:24 +0000
Subject: [PATCH] build: Updating mediawiki/mediawiki-codesniffer to 49.0.0

The following sniffs are failing and were disabled:
* MediaWiki.Usage.ForbiddenFunctions.curl_close

Change-Id: I2b50233fea976ad4a052b15de1ccde63e2ef2e6b
---
 .phpcs.xml    | 1 +
 composer.json | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/.phpcs.xml b/.phpcs.xml
index d064319..cdf5650 100644
--- a/.phpcs.xml
+++ b/.phpcs.xml
@@ -7,6 +7,7 @@
 		<exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic" />
 		<exclude name="MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix" />
 		<exclude name="MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage" />
+		<exclude name="MediaWiki.Usage.ForbiddenFunctions.curl_close" />
 		<exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment" />
 		<exclude name="Squiz.Scope.MethodScope.Missing" />
 	</rule>
diff --git a/composer.json b/composer.json
index 5a4f3fb..96b9cc2 100644
--- a/composer.json
+++ b/composer.json
@@ -1,6 +1,6 @@
 {
 	"require-dev": {
-		"mediawiki/mediawiki-codesniffer": "48.0.0",
+		"mediawiki/mediawiki-codesniffer": "49.0.0",
 		"mediawiki/minus-x": "1.1.3",
 		"mpdf/mpdf": "^8.0",
 		"php-parallel-lint/php-console-highlighter": "1.0.0",
-- 
2.47.3

$ date
--- stdout ---
Fri Jan 16 01:28:13 UTC 2026

--- end ---
$ git clone file:///srv/git/mediawiki-extensions-DocBookExport.git /src/repo --depth=1 -b master
--- stderr ---
Cloning into '/src/repo'...
--- stdout ---

--- end ---
$ git config user.name libraryupgrader
--- stdout ---

--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---

--- end ---
$ git submodule update --init
--- stdout ---

--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.

--- end ---
$ git show-ref refs/heads/master
--- stdout ---
4999de62ee133b94aca1bd49fbcf7458834cdd8a refs/heads/master

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {},
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 0,
      "high": 0,
      "critical": 0,
      "total": 0
    },
    "dependencies": {
      "prod": 1,
      "dev": 425,
      "optional": 0,
      "peer": 1,
      "peerOptional": 0,
      "total": 425
    }
  }
}

--- end ---
$ /usr/bin/composer install
--- stderr ---
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
Loading composer repositories with package information
Updating dependencies
Lock file operations: 28 installs, 0 updates, 0 removals
  - Locking composer/semver (3.4.4)
  - Locking composer/spdx-licenses (1.5.9)
  - Locking dealerdirect/phpcodesniffer-composer-installer (v1.2.0)
  - Locking mediawiki/mediawiki-codesniffer (v48.0.0)
  - Locking mediawiki/minus-x (1.1.3)
  - Locking mpdf/mpdf (v8.2.7)
  - Locking mpdf/psr-http-message-shim (v2.0.1)
  - Locking mpdf/psr-log-aware-trait (v3.0.0)
  - Locking myclabs/deep-copy (1.13.4)
  - Locking paragonie/random_compat (v9.99.100)
  - Locking php-parallel-lint/php-console-color (v1.0.1)
  - Locking php-parallel-lint/php-console-highlighter (v1.0.0)
  - Locking php-parallel-lint/php-parallel-lint (v1.4.0)
  - Locking phpcsstandards/phpcsextra (1.4.0)
  - Locking phpcsstandards/phpcsutils (1.1.1)
  - Locking psr/container (2.0.2)
  - Locking psr/http-message (2.0)
  - Locking psr/log (3.0.2)
  - Locking setasign/fpdi (v2.6.4)
  - Locking squizlabs/php_codesniffer (3.13.2)
  - Locking symfony/console (v7.4.3)
  - Locking symfony/deprecation-contracts (v3.6.0)
  - Locking symfony/polyfill-ctype (v1.33.0)
  - Locking symfony/polyfill-intl-grapheme (v1.33.0)
  - Locking symfony/polyfill-intl-normalizer (v1.33.0)
  - Locking symfony/polyfill-mbstring (v1.33.0)
  - Locking symfony/service-contracts (v3.6.1)
  - Locking symfony/string (v8.0.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 28 installs, 0 updates, 0 removals
  - Downloading setasign/fpdi (v2.6.4)
  - Downloading mpdf/psr-log-aware-trait (v3.0.0)
  - Downloading mpdf/psr-http-message-shim (v2.0.1)
  - Downloading mpdf/mpdf (v8.2.7)
 0/4 [>---------------------------]   0%
 1/4 [=======>--------------------]  25%
 3/4 [=====================>------]  75%
 4/4 [============================] 100%
  - Installing squizlabs/php_codesniffer (3.13.2): Extracting archive
  - Installing dealerdirect/phpcodesniffer-composer-installer (v1.2.0): Extracting archive
  - Installing phpcsstandards/phpcsutils (1.1.1): Extracting archive
  - Installing phpcsstandards/phpcsextra (1.4.0): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.33.0): Extracting archive
  - Installing composer/spdx-licenses (1.5.9): Extracting archive
  - Installing composer/semver (3.4.4): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v48.0.0): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.33.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.33.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.33.0): Extracting archive
  - Installing symfony/string (v8.0.1): Extracting archive
  - Installing symfony/deprecation-contracts (v3.6.0): Extracting archive
  - Installing psr/container (2.0.2): Extracting archive
  - Installing symfony/service-contracts (v3.6.1): Extracting archive
  - Installing symfony/console (v7.4.3): Extracting archive
  - Installing mediawiki/minus-x (1.1.3): Extracting archive
  - Installing setasign/fpdi (v2.6.4): Extracting archive
  - Installing psr/log (3.0.2): Extracting archive
  - Installing psr/http-message (2.0): Extracting archive
  - Installing paragonie/random_compat (v9.99.100): Extracting archive
  - Installing myclabs/deep-copy (1.13.4): Extracting archive
  - Installing mpdf/psr-log-aware-trait (v3.0.0): Extracting archive
  - Installing mpdf/psr-http-message-shim (v2.0.1): Extracting archive
  - Installing mpdf/mpdf (v8.2.7): Extracting archive
  - Installing php-parallel-lint/php-console-color (v1.0.1): Extracting archive
  - Installing php-parallel-lint/php-console-highlighter (v1.0.0): Extracting archive
  - Installing php-parallel-lint/php-parallel-lint (v1.4.0): Extracting archive
  0/26 [>---------------------------]   0%
 25/26 [==========================>-]  96%
 26/26 [============================] 100%
2 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
17 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils

--- end ---
Upgrading c:mediawiki/mediawiki-codesniffer from 48.0.0 -> 49.0.0
$ /usr/bin/composer update
--- stderr ---
Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 3 updates, 0 removals
  - Upgrading mediawiki/mediawiki-codesniffer (v48.0.0 => v49.0.0)
  - Upgrading phpcsstandards/phpcsutils (1.1.1 => 1.2.2)
  - Upgrading squizlabs/php_codesniffer (3.13.2 => 3.13.5)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 3 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]
  - Upgrading squizlabs/php_codesniffer (3.13.2 => 3.13.5): Extracting archive
  - Upgrading phpcsstandards/phpcsutils (1.1.1 => 1.2.2): Extracting archive
  - Upgrading mediawiki/mediawiki-codesniffer (v48.0.0 => v49.0.0): Extracting archive
 0/3 [>---------------------------]   0%
 2/3 [==================>---------]  66%
 3/3 [============================] 100%
Generating autoload files
17 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found.
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils

--- end ---
Previously failing phpcs rules: {'MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment', 'Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition', 'MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected', 'MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic', 'Squiz.Scope.MethodScope.Missing', 'Generic.Files.LineLength.TooLong', 'MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix', 'MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage'}
$ vendor/bin/phpcs --report=json
--- stdout ---
{"totals":{"errors":17,"warnings":54,"fixable":0},"files":{"\/src\/repo\/DocBookExport.i18n.magic.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/DocBookExport.i18n.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/DocBookExport.php":{"errors":0,"warnings":3,"messages":[{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":52,"column":122},{"message":"Line exceeds 120 characters; contains 185 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":56,"column":185},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":67,"column":121}]},"\/src\/repo\/SpecialGetDocbook.php":{"errors":17,"warnings":51,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":22,"column":5},{"message":"Should use function $this->getConfig()->get() rather than global $wgDocbookExportPandocServerPath","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":23,"column":16},{"message":"Should use function $this->getConfig()->get() rather than global $wgDocBookExportXSLRepository","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":23,"column":50},{"message":"Should use function $this->getConfig()->get() rather than global $wgDocBookExportImportXSLRepoPathPDF","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":23,"column":81},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":41,"column":55},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":42,"column":25},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":43,"column":108},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":43,"column":108},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":80,"column":26},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":89,"column":63},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":90,"column":33},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":91,"column":111},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":91,"column":111},{"message":"Line exceeds 120 characters; contains 133 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":114,"column":83},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":114,"column":83},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":165,"column":67},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":166,"column":37},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":167,"column":118},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":167,"column":118},{"message":"Line exceeds 120 characters; contains 173 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":214,"column":173},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":243,"column":123},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":366,"column":142},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":391,"column":122},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":415,"column":122},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":427,"column":124},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":443,"column":125},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":445,"column":134},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":609,"column":129},{"message":"curl_close should not be used","source":"MediaWiki.Usage.ForbiddenFunctions.curl_close","severity":5,"fixable":false,"type":"WARNING","line":691,"column":9},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":697,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":717,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":731,"column":12},{"message":"Should use function $this->getConfig()->get() rather than global $wgDocbookExportPandocServerPath","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":732,"column":16},{"message":"curl_close should not be used","source":"MediaWiki.Usage.ForbiddenFunctions.curl_close","severity":5,"fixable":false,"type":"WARNING","line":758,"column":9},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":764,"column":12},{"message":"Should use function $this->getConfig()->get() rather than global $wgDocbookDownloadServerPath","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":765,"column":16},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":779,"column":132},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":780,"column":134},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":781,"column":132},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":782,"column":132},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":814,"column":12},{"message":"Should use function $this->getConfig()->get() rather than global $wgServer","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":815,"column":16},{"message":"Line exceeds 120 characters; contains 149 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":862,"column":149},{"message":"Line exceeds 120 characters; contains 150 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":877,"column":150},{"message":"Line exceeds 120 characters; contains 170 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":878,"column":170},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":880,"column":34},{"message":"Line exceeds 120 characters; contains 144 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":914,"column":70},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":914,"column":70},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":950,"column":15},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":956,"column":24},{"message":"Line exceeds 120 characters; contains 147 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":963,"column":147},{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":977,"column":130},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":988,"column":128},{"message":"Line exceeds 120 characters; contains 159 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":992,"column":159},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":1031,"column":12},{"message":"Visibility must be declared on method \"smartSplit\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":1031,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":1089,"column":19},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1095,"column":75},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":1095,"column":75},{"message":"Global function \"makeProperHtml()\" is lacking a valid prefix ('wf'). It should be wfMakeProperHtml().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":1101,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":1101,"column":1},{"message":"Global function \"rrmdir()\" is lacking a valid prefix ('wf'). It should be wfRrmdir().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":1109,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":1109,"column":1},{"message":"Global function \"cleanse()\" is lacking a valid prefix ('wf'). It should be wfCleanse().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":1125,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":1125,"column":1},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1134,"column":122},{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1140,"column":130}]}}}

--- end ---
PHPCS run failed
$ vendor/bin/phpcs --report=json
--- stdout ---
{"totals":{"errors":17,"warnings":54,"fixable":0},"files":{"\/src\/repo\/DocBookExport.i18n.magic.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/DocBookExport.i18n.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/DocBookExport.php":{"errors":0,"warnings":3,"messages":[{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":52,"column":122},{"message":"Line exceeds 120 characters; contains 185 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":56,"column":185},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":67,"column":121}]},"\/src\/repo\/SpecialGetDocbook.php":{"errors":17,"warnings":51,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":22,"column":5},{"message":"Should use function $this->getConfig()->get() rather than global $wgDocbookExportPandocServerPath","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":23,"column":16},{"message":"Should use function $this->getConfig()->get() rather than global $wgDocBookExportXSLRepository","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":23,"column":50},{"message":"Should use function $this->getConfig()->get() rather than global $wgDocBookExportImportXSLRepoPathPDF","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":23,"column":81},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":41,"column":55},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":42,"column":25},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":43,"column":108},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":43,"column":108},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":80,"column":26},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":89,"column":63},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":90,"column":33},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":91,"column":111},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":91,"column":111},{"message":"Line exceeds 120 characters; contains 133 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":114,"column":83},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":114,"column":83},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":165,"column":67},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":166,"column":37},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":167,"column":118},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":167,"column":118},{"message":"Line exceeds 120 characters; contains 173 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":214,"column":173},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":243,"column":123},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":366,"column":142},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":391,"column":122},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":415,"column":122},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":427,"column":124},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":443,"column":125},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":445,"column":134},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":609,"column":129},{"message":"curl_close should not be used","source":"MediaWiki.Usage.ForbiddenFunctions.curl_close","severity":5,"fixable":false,"type":"WARNING","line":691,"column":9},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":697,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":717,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":731,"column":12},{"message":"Should use function $this->getConfig()->get() rather than global $wgDocbookExportPandocServerPath","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":732,"column":16},{"message":"curl_close should not be used","source":"MediaWiki.Usage.ForbiddenFunctions.curl_close","severity":5,"fixable":false,"type":"WARNING","line":758,"column":9},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":764,"column":12},{"message":"Should use function $this->getConfig()->get() rather than global $wgDocbookDownloadServerPath","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":765,"column":16},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":779,"column":132},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":780,"column":134},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":781,"column":132},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":782,"column":132},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":814,"column":12},{"message":"Should use function $this->getConfig()->get() rather than global $wgServer","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":815,"column":16},{"message":"Line exceeds 120 characters; contains 149 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":862,"column":149},{"message":"Line exceeds 120 characters; contains 150 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":877,"column":150},{"message":"Line exceeds 120 characters; contains 170 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":878,"column":170},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":880,"column":34},{"message":"Line exceeds 120 characters; contains 144 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":914,"column":70},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":914,"column":70},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":950,"column":15},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":956,"column":24},{"message":"Line exceeds 120 characters; contains 147 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":963,"column":147},{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":977,"column":130},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":988,"column":128},{"message":"Line exceeds 120 characters; contains 159 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":992,"column":159},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":1031,"column":12},{"message":"Visibility must be declared on method \"smartSplit\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":1031,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":1089,"column":19},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1095,"column":75},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":1095,"column":75},{"message":"Global function \"makeProperHtml()\" is lacking a valid prefix ('wf'). It should be wfMakeProperHtml().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":1101,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":1101,"column":1},{"message":"Global function \"rrmdir()\" is lacking a valid prefix ('wf'). It should be wfRrmdir().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":1109,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":1109,"column":1},{"message":"Global function \"cleanse()\" is lacking a valid prefix ('wf'). It should be wfCleanse().","source":"MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix","severity":5,"fixable":false,"type":"ERROR","line":1125,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":1125,"column":1},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1134,"column":122},{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1140,"column":130}]}}}

--- end ---
 * sniff MediaWiki.Usage.ForbiddenFunctions.curl_close is now failing
$ git checkout .phpcs.xml
--- stderr ---
Updated 1 path from the index
--- stdout ---

--- end ---
$ /usr/bin/composer install
--- stderr ---
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Nothing to install, update or remove
Generating autoload files
17 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---

--- end ---
$ /usr/bin/composer test
--- stderr ---
> parallel-lint . --exclude vendor --exclude node_modules
> phpcs -sp --cache
> minus-x check .
--- stdout ---
PHP 8.4.11 | 10 parallel jobs
....                                                         4/4 (100%)


Checked 4 files in 0.1 seconds
No syntax error found
.... 4 / 4 (100%)


Time: 113ms; Memory: 8MB

MinusX
======
Processing /src/repo...
....................................................
All good!

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {},
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 0,
      "high": 0,
      "critical": 0,
      "total": 0
    },
    "dependencies": {
      "prod": 1,
      "dev": 425,
      "optional": 0,
      "peer": 1,
      "peerOptional": 0,
      "total": 425
    }
  }
}

--- end ---
$ package-lock-lint /src/repo/package-lock.json
--- stdout ---
Checking /src/repo/package-lock.json

--- end ---
build: Updating mediawiki/mediawiki-codesniffer to 49.0.0

The following sniffs are failing and were disabled:
* MediaWiki.Usage.ForbiddenFunctions.curl_close

$ git add .
--- stdout ---

--- end ---
$ git commit -F /tmp/tmpzikj5i1q
--- stdout ---
[master 7dde68c] build: Updating mediawiki/mediawiki-codesniffer to 49.0.0
 2 files changed, 2 insertions(+), 1 deletion(-)

--- end ---
$ git format-patch HEAD~1 --stdout
--- stdout ---
From 7dde68c83f6b515b508df4543096fb1895ab3a83 Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Fri, 16 Jan 2026 01:28:24 +0000
Subject: [PATCH] build: Updating mediawiki/mediawiki-codesniffer to 49.0.0

The following sniffs are failing and were disabled:
* MediaWiki.Usage.ForbiddenFunctions.curl_close

Change-Id: I2b50233fea976ad4a052b15de1ccde63e2ef2e6b
---
 .phpcs.xml    | 1 +
 composer.json | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/.phpcs.xml b/.phpcs.xml
index d064319..cdf5650 100644
--- a/.phpcs.xml
+++ b/.phpcs.xml
@@ -7,6 +7,7 @@
 		<exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic" />
 		<exclude name="MediaWiki.NamingConventions.PrefixedGlobalFunctions.allowedPrefix" />
 		<exclude name="MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage" />
+		<exclude name="MediaWiki.Usage.ForbiddenFunctions.curl_close" />
 		<exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment" />
 		<exclude name="Squiz.Scope.MethodScope.Missing" />
 	</rule>
diff --git a/composer.json b/composer.json
index 5a4f3fb..96b9cc2 100644
--- a/composer.json
+++ b/composer.json
@@ -1,6 +1,6 @@
 {
 	"require-dev": {
-		"mediawiki/mediawiki-codesniffer": "48.0.0",
+		"mediawiki/mediawiki-codesniffer": "49.0.0",
 		"mediawiki/minus-x": "1.1.3",
 		"mpdf/mpdf": "^8.0",
 		"php-parallel-lint/php-console-highlighter": "1.0.0",
-- 
2.47.3


--- end ---

composer dependencies

Development dependencies

npm dependencies

Development dependencies

Logs

Source code is licensed under the AGPL.