diff --git a/NEWS.md b/NEWS.md index 7a9da2f..5dddf01 100644 --- a/NEWS.md +++ b/NEWS.md @@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 For changes prior to version 6.0.0, please see [`NEWS.old`](news.old). +## [7.1.0][] - 2021-03-21 + +### Changed + +- The minimum required version of MediaWiki is now 1.35. + +### Fixed + +- Replace PageContentSave with MultiContentSave to fix compatibility with MediaWiki 1.35. +- The default value for wgLinkTitlesParseOnRender is change back to `false` as support + for MediaWiki 1.35+ is fixed. + ## [7.0.0][] - 2020-12-23 ### Changed diff --git a/extension.json b/extension.json index d23825f..12f5523 100644 --- a/extension.json +++ b/extension.json @@ -11,15 +11,15 @@ ], "type": "parserhook", "url": "https://www.mediawiki.org/wiki/Extension:LinkTitles", - "version": "6.0.0", + "version": "7.1.0", "license-name": "GPL-2.0+", "descriptionmsg": "linktitles-desc", "requires": { - "MediaWiki": ">= 1.32.0" + "MediaWiki": ">= 1.35.0" }, "config": { "LinkTitlesParseOnEdit": true, - "LinkTitlesParseOnRender": true, + "LinkTitlesParseOnRender": false, "LinkTitlesParseHeadings": false, "LinkTitlesSkipTemplates": true, "LinkTitlesPreferShortTitles": true, @@ -59,8 +59,8 @@ } }, "Hooks": { - "PageContentSave": [ - "LinkTitles\\Extension::onPageContentSave" + "MultiContentSave": [ + "LinkTitles\\Extension::onMultiContentSave" ], "InternalParseBeforeLinks": [ "LinkTitles\\Extension::onInternalParseBeforeLinks" diff --git a/includes/Extension.php b/includes/Extension.php index 0997c7d..9f6c60a 100644 --- a/includes/Extension.php +++ b/includes/Extension.php @@ -21,8 +21,16 @@ * * @author Daniel Kraus */ + namespace LinkTitles; +use CommentStoreComment; +use MediaWiki\Revision\RenderedRevision; +use MediaWiki\Revision\SlotRecord; +use Status; +use WikiPage; +use User; + /** * Provides event handlers and entry points for the extension. */ @@ -30,20 +38,36 @@ class Extension { const URL = 'https://github.com/bovender/LinkTitles'; /** - * Event handler for the PageContentSave hook. + * Event handler for the MultiContentSave hook. * * This handler is used if the parseOnEdit configuration option is set. */ - public static function onPageContentSave( &$wikiPage, &$user, &$content, &$summary, - $isMinor, $isWatch, $section, &$flags, &$status ) { + public static function onMultiContentSave( + RenderedRevision $renderedRevision, + User $user, + CommentStoreComment $summary, + $flags, + Status $hookStatus + ) { + $isMinor = $flags & EDIT_MINOR; + $config = new Config(); if ( !$config->parseOnEdit || $isMinor ) return true; + + $revision = $renderedRevision->getRevision(); + $title = $revision->getPageAsLinkTarget(); + $slots = $revision->getSlots(); + $content = $slots->getContent( SlotRecord::MAIN ); + + $wikiPage = WikiPage::factory( $title ); $source = Source::createFromPageandContent( $wikiPage, $content, $config ); $linker = new Linker( $config ); $result = $linker->linkContent( $source ); if ( $result ) { $content = $source->setText( $result ); + $slots->setContent( 'main', $content ); } + return true; }