diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 63a0d33..5d07d07 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,21 +13,12 @@ jobs: fail-fast: false matrix: include: - - mw: 'REL1_39' - php: 8.1 - experimental: false - - mw: 'REL1_40' - php: 8.1 - experimental: false - - mw: 'REL1_41' - php: 8.2 - experimental: false - - mw: 'REL1_42' - php: 8.2 - experimental: false - mw: 'REL1_43' php: 8.3 experimental: false + - mw: 'REL1_44' + php: 8.4 + experimental: false - mw: 'master' php: 8.4 experimental: true diff --git a/README.md b/README.md index 8606641..6d1b093 100644 --- a/README.md +++ b/README.md @@ -97,10 +97,12 @@ Parameters: none ## Installation -Platform requirements: +Platform requirements of 4.x: -* [PHP] 8.0 or later (tested up to 8.3) -* [MediaWiki] 1.39 or later (tested up to 1.43 and master) +* [PHP] 8.0 or later (tested up to 8.4) +* [MediaWiki] 1.43 or later (tested up to 1.44 and master) + +For older PHP or MediaWiki, use older versions of External Content. The recommended way to install External Content is using [Composer] with [MediaWiki's built-in support for Composer][Composer install]. @@ -108,7 +110,7 @@ The recommended way to install External Content is using [Composer] with On the commandline, go to your wikis root directory. Then run these two commands: ```shell script -COMPOSER=composer.local.json composer require --no-update professional-wiki/external-content:~3.0 +COMPOSER=composer.local.json composer require --no-update professional-wiki/external-content:~4.0 ``` ```shell script composer update professional-wiki/external-content --no-dev -o @@ -244,6 +246,13 @@ Alternatively, you can execute commands from the MediaWiki root directory: ## Release notes +### Version 4.0.0 - 2025-07-04 + +* Raised minimum MediaWiki version from 1.39 to 1.43 +* Added support for MediaWiki 1.44 +* Fixed compatibility issue with the Network extension +* Translation updates + ### Version 3.0.1 - 2025-04-06 * Fixed compatibility with MediaWiki 1.43 and above (IDatabase TypeError) diff --git a/extension.json b/extension.json index 082b975..0c62216 100644 --- a/extension.json +++ b/extension.json @@ -1,6 +1,6 @@ { "name": "External Content", - "version": "3.0.1", + "version": "4.0.0", "license-name": "GPL-2.0-or-later", "author": [ @@ -13,7 +13,7 @@ "descriptionmsg": "external-content-desc", "requires": { - "MediaWiki": ">= 1.39.0", + "MediaWiki": ">= 1.43.0", "platform": { "php": ">= 8.0" } diff --git a/src/Adapters/EmbedPresenter/CategoryUsageTracker.php b/src/Adapters/EmbedPresenter/CategoryUsageTracker.php index 5f20a2b..4b3805c 100644 --- a/src/Adapters/EmbedPresenter/CategoryUsageTracker.php +++ b/src/Adapters/EmbedPresenter/CategoryUsageTracker.php @@ -4,7 +4,7 @@ namespace ProfessionalWiki\ExternalContent\Adapters\EmbedPresenter; -use Parser; +use MediaWiki\Parser\Parser; class CategoryUsageTracker implements UsageTracker { diff --git a/src/Adapters/EmbedPresenter/ParserFunctionEmbedPresenter.php b/src/Adapters/EmbedPresenter/ParserFunctionEmbedPresenter.php index f538943..288daf2 100644 --- a/src/Adapters/EmbedPresenter/ParserFunctionEmbedPresenter.php +++ b/src/Adapters/EmbedPresenter/ParserFunctionEmbedPresenter.php @@ -4,7 +4,7 @@ namespace ProfessionalWiki\ExternalContent\Adapters\EmbedPresenter; -use Html; +use MediaWiki\Html\Html; use MessageLocalizer; use ProfessionalWiki\ExternalContent\UseCases\Embed\EmbedPresenter; diff --git a/src/Adapters/EmbedResourceLoader/ParserFunctionEmbedResourceLoader.php b/src/Adapters/EmbedResourceLoader/ParserFunctionEmbedResourceLoader.php index cf38e9c..c9a9819 100644 --- a/src/Adapters/EmbedResourceLoader/ParserFunctionEmbedResourceLoader.php +++ b/src/Adapters/EmbedResourceLoader/ParserFunctionEmbedResourceLoader.php @@ -4,7 +4,7 @@ namespace ProfessionalWiki\ExternalContent\Adapters\EmbedResourceLoader; -use ParserOutput; +use MediaWiki\Parser\ParserOutput; use ProfessionalWiki\ExternalContent\Domain\ContentRenderer; use ProfessionalWiki\ExternalContent\Domain\ContentRenderer\CodeRenderer; use ProfessionalWiki\ExternalContent\UseCases\Embed\EmbedResourceLoader; diff --git a/src/Domain/ContentRenderer/CodeRenderer.php b/src/Domain/ContentRenderer/CodeRenderer.php index 84a466e..0969b89 100644 --- a/src/Domain/ContentRenderer/CodeRenderer.php +++ b/src/Domain/ContentRenderer/CodeRenderer.php @@ -4,7 +4,7 @@ namespace ProfessionalWiki\ExternalContent\Domain\ContentRenderer; -use Html; +use MediaWiki\Html\Html; use ProfessionalWiki\ExternalContent\Domain\ContentRenderer; class CodeRenderer implements ContentRenderer { @@ -77,7 +77,7 @@ private function normalizeLines( string $lines ): string { $ranges = array_filter( $exploded, static function( $value ): bool { return ( preg_match( '/^\d+$/', $value ) || preg_match( '/^(\d+)-(\d+)$/', $value ) ); } ); - + return implode( ',', $ranges ); } } diff --git a/src/EntryPoints/BitbucketFunction.php b/src/EntryPoints/BitbucketFunction.php index 62c0b70..abc26d3 100644 --- a/src/EntryPoints/BitbucketFunction.php +++ b/src/EntryPoints/BitbucketFunction.php @@ -4,7 +4,7 @@ namespace ProfessionalWiki\ExternalContent\EntryPoints; -use Parser; +use MediaWiki\Parser\Parser; use ProfessionalWiki\ExternalContent\Adapters\EmbedPresenter\CategoryUsageTracker; use ProfessionalWiki\ExternalContent\Adapters\EmbedPresenter\ParserFunctionEmbedPresenter; use ProfessionalWiki\ExternalContent\Adapters\EmbedResourceLoader\ParserFunctionEmbedResourceLoader; diff --git a/src/EntryPoints/EmbedFunction.php b/src/EntryPoints/EmbedFunction.php index 644e81f..2e2ce43 100644 --- a/src/EntryPoints/EmbedFunction.php +++ b/src/EntryPoints/EmbedFunction.php @@ -4,7 +4,7 @@ namespace ProfessionalWiki\ExternalContent\EntryPoints; -use Parser; +use MediaWiki\Parser\Parser; use ProfessionalWiki\ExternalContent\Adapters\EmbedPresenter\CategoryUsageTracker; use ProfessionalWiki\ExternalContent\Adapters\EmbedPresenter\ParserFunctionEmbedPresenter; use ProfessionalWiki\ExternalContent\Adapters\EmbedResourceLoader\ParserFunctionEmbedResourceLoader; diff --git a/src/EntryPoints/MediaWikiHooks.php b/src/EntryPoints/MediaWikiHooks.php index 3daf24d..8962407 100644 --- a/src/EntryPoints/MediaWikiHooks.php +++ b/src/EntryPoints/MediaWikiHooks.php @@ -4,11 +4,11 @@ namespace ProfessionalWiki\ExternalContent\EntryPoints; -use ContentHandler; +use MediaWiki\Content\ContentHandler; use MediaWiki\MediaWikiServices; use MediaWiki\Revision\RevisionRecord; -use Parser; -use ParserOutput; +use MediaWiki\Parser\Parser; +use MediaWiki\Parser\ParserOutput; use ProfessionalWiki\ExternalContent\EmbedExtensionFactory; use SearchEngine; use WikiPage; diff --git a/tests/Integration/EmbedFunctionIntegrationTest.php b/tests/Integration/EmbedFunctionIntegrationTest.php index 11a7641..29b1508 100644 --- a/tests/Integration/EmbedFunctionIntegrationTest.php +++ b/tests/Integration/EmbedFunctionIntegrationTest.php @@ -7,6 +7,7 @@ use FileFetcher\InMemoryFileFetcher; use FileFetcher\StubFileFetcher; use MediaWiki\MediaWikiServices; +use MediaWiki\Title\Title; use ProfessionalWiki\ExternalContent\Tests\TestEnvironment; /** @@ -54,7 +55,7 @@ public function testUsageIsTracked(): void { $parser->parse( '{{#embed:https://example.com/KITTENS.md}}', - \Title::newFromText( 'EmbedFunctionIntegrationTest' ), + Title::newFromText( 'EmbedFunctionIntegrationTest' ), new \ParserOptions( \User::newSystemUser( 'TestUser' ) ) )->getText(); diff --git a/tests/Integration/EmbedFunctionSystemTest.php b/tests/Integration/EmbedFunctionSystemTest.php index 4392f64..9e711a2 100644 --- a/tests/Integration/EmbedFunctionSystemTest.php +++ b/tests/Integration/EmbedFunctionSystemTest.php @@ -6,8 +6,8 @@ use CommentStoreComment; use FileFetcher\StubFileFetcher; -use Title; -use User; +use MediaWiki\Title\Title; +use MediaWiki\User\User; use WikiPage; /** diff --git a/tests/TestEnvironment.php b/tests/TestEnvironment.php index 2f9c5dd..064ec34 100644 --- a/tests/TestEnvironment.php +++ b/tests/TestEnvironment.php @@ -5,7 +5,7 @@ namespace ProfessionalWiki\ExternalContent\Tests; use MediaWiki\MediaWikiServices; -use Title; +use MediaWiki\Title\Title; class TestEnvironment {