Skip to content

Commit

Permalink
Support MediaWiki 1.39 for actor and templatelinks migration (#188)
Browse files Browse the repository at this point in the history
This adds support for 1.39, and drops support for older versions, since 1.39 is the current LTS release.
  • Loading branch information
Universal-Omega authored Dec 7, 2022
1 parent afb60b4 commit 8dd8d03
Show file tree
Hide file tree
Showing 12 changed files with 218 additions and 295 deletions.
160 changes: 24 additions & 136 deletions .github/workflows/mediawiki-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,199 +13,87 @@ jobs:
strategy:
matrix:
include:
# Latest stable MediaWiki - PHP 7.3 (phan)
- mw: 'REL1_36'
php: 7.3
php-docker: 73
experimental: false
stage: phan

# Latest stable MediaWiki - PHP 7.4 (phan)
- mw: 'REL1_36'
- mw: 'REL1_39'
php: 7.4
php-docker: 74
experimental: false
stage: phan

# Latest MediaWiki release branch - PHP 7.3 (phan)
- mw: 'REL1_37'
php: 7.3
php-docker: 73
experimental: true
stage: phan

# Latest MediaWiki release branch - PHP 7.4 (phan)
- mw: 'REL1_37'
php: 7.4
php-docker: 74
experimental: true
stage: phan

# Latest MediaWiki master - PHP 7.3 (phan)
- mw: 'master'
php: 7.3
php-docker: 73
experimental: true
stage: phan

# Latest MediaWiki master - PHP 7.4 (phan)
- mw: 'master'
php: 7.4
php-docker: 74
experimental: true
stage: phan

# Latest stable MediaWiki - PHP 7.3 (coverage)
- mw: 'REL1_36'
php: 7.3
php-docker: 73
experimental: false
stage: coverage

# Latest MediaWiki release branch - PHP 7.3 (coverage)
- mw: 'REL1_37'
php: 7.3
php-docker: 73
experimental: false
stage: coverage

# Latest MediaWiki master - PHP 7.3 (coverage)
# Latest MediaWiki master - PHP 7.4 (coverage)
- mw: 'master'
php: 7.3
php-docker: 73
experimental: false
stage: coverage

# Latest stable MediaWiki - PHP 7.3 (phpunit-unit)
- mw: 'REL1_36'
php: 7.3
php-docker: 73
experimental: false
stage: phpunit-unit

# Latest stable MediaWiki - PHP 7.4 (phpunit-unit)
- mw: 'REL1_36'
php: 7.4
php-docker: 74
experimental: false
stage: phpunit-unit

# Latest MediaWiki release branch - PHP 7.3 (phpunit-unit)
- mw: 'REL1_37'
php: 7.3
php-docker: 73
experimental: false
stage: phpunit-unit
stage: coverage

# Latest MediaWiki release branch - PHP 7.4 (phpunit-unit)
- mw: 'REL1_37'
# Latest stable MediaWiki - PHP 7.4 (phpunit-unit)
- mw: 'REL1_39'
php: 7.4
php-docker: 74
experimental: false
stage: phpunit-unit

# Latest MediaWiki master - PHP 7.3 (phpunit-unit)
- mw: 'master'
php: 7.3
php-docker: 73
experimental: false
stage: phpunit-unit

# Latest MediaWiki master - PHP 7.4 (phpunit-unit)
- mw: 'master'
php: 7.4
php-docker: 74
experimental: false
stage: phpunit-unit

# Latest stable MediaWiki - PHP 7.3 (phpunit)
- mw: 'REL1_36'
php: 7.3
php-docker: 73
experimental: false
stage: phpunit

# Latest stable MediaWiki - PHP 7.4 (phpunit)
- mw: 'REL1_36'
- mw: 'REL1_39'
php: 7.4
php-docker: 74
experimental: false
stage: phpunit

# Latest MediaWiki release branch - PHP 7.3 (phpunit)
- mw: 'REL1_37'
php: 7.3
php-docker: 73
experimental: false
stage: phpunit

# Latest MediaWiki release branch - PHP 7.4 (phpunit)
- mw: 'REL1_37'
php: 7.4
php-docker: 74
experimental: false
stage: phpunit

# Latest MediaWiki master - PHP 7.3 (phpunit)
- mw: 'master'
php: 7.3
php-docker: 73
experimental: false
stage: phpunit

# Latest MediaWiki master - PHP 7.4 (phpunit)
- mw: 'master'
php: 7.4
php-docker: 74
experimental: false
stage: phpunit

# Latest stable MediaWiki - PHP 7.3 (selenium)
- mw: 'REL1_36'
php: 7.3
php-docker: 73
experimental: false
stage: selenium

# Latest MediaWiki release branch - PHP 7.3 (selenium)
- mw: 'REL1_37'
php: 7.3
php-docker: 73
# Latest stable MediaWiki - PHP 7.4 (selenium)
- mw: 'REL1_39'
php: 7.4
php-docker: 74
experimental: false
stage: selenium

# Latest MediaWiki master - PHP 7.3 (selenium)
# Latest MediaWiki master - PHP 7.4 (selenium)
- mw: 'master'
php: 7.3
php-docker: 73
php: 7.4
php-docker: 74
experimental: false
stage: selenium

# Latest stable MediaWiki - PHP 7.3 (qunit)
- mw: 'REL1_36'
php: 7.3
php-docker: 73
experimental: false
stage: qunit

# Latest MediaWiki release branch - PHP 7.3 (qunit)
- mw: 'REL1_37'
php: 7.3
php-docker: 73
# Latest stable MediaWiki - PHP 7.4 (qunit)
- mw: 'REL1_39'
php: 7.4
php-docker: 74
experimental: false
stage: qunit

# Latest MediaWiki master - PHP 7.3 (qunit)
# Latest MediaWiki master - PHP 7.4 (qunit)
- mw: 'master'
php: 7.3
php-docker: 73
php: 7.4
php-docker: 74
experimental: false
stage: qunit

# Latest stable MediaWiki - PHP 7.3 (composer-test)
- mw: 'REL1_37'
php: 7.3
php-docker: 73
# Latest stable MediaWiki - PHP 7.4 (composer-test)
- mw: 'REL1_39'
php: 7.4
php-docker: 74
experimental: false
stage: composer-test

Expand Down
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -787,3 +787,19 @@ Many thanks to GreenReaper on GitHub for reporting and finding issues with core
* Updated CreateTemplate to mention DPL3, not DPL
* Used database update maintenance script for creating VIEW
* Added additional isset check for mTemplatePath

# Version 3.5.0
* Dropped `revision_actor_temp` support and completed actor migration
* Added support for `templatelinks` migration
* Added support for MediaWiki 1.39 and dropped support for older MediaWiki versions (before 1.39.0)
* Dropped official support for PHP versions before PHP 7.4.3, because MediaWiki 1.39 does not support older PHP versions anymore
* Fixed installing via composer version 2.2.1 and later
* Fixed using imagecontainer with openreferences
* Replaced usages of `intval()` with `(int)` in Query.php and Parse.php
* Swapped order of mapping for `Query::addTables()` from `[ alias => table ]` to `[ table => alias ]`
* Replaced usages of deprecated `wfGetDB()`
* Replaced usages of deprecated `Parser::getTitle()`
* Replaced usage of deprecated `Title::isProtected()`
* Replaced usage of deprecated `User::matchEditToken()`
* Replaced usage of deprecated `Article::doDelete()`
* Added `null` checks on `Parser::getPage()` and `ParserOutput` before using to avoid fatals
4 changes: 2 additions & 2 deletions extension.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "DynamicPageList3",
"version": "3.4.6",
"version": "3.5.0",
"author": [
"'''Universal Omega'''",
"Alexia E. Smith",
Expand All @@ -11,7 +11,7 @@
"license-name": "GPL-3.0-or-later",
"type": "parserhook",
"requires": {
"MediaWiki": ">= 1.35.3"
"MediaWiki": ">= 1.39.0"
},
"GroupPermissions": {
"sysop": {
Expand Down
12 changes: 6 additions & 6 deletions includes/Article.php
Original file line number Diff line number Diff line change
Expand Up @@ -210,8 +210,8 @@ public static function newFromRow(
$article = new self( $title, $pageNamespace );

$revActorName = null;
if ( isset( $row->revactor_actor ) ) {
$revActorName = $userFactory->newFromActorId( $row->revactor_actor )->getName();
if ( isset( $row->rev_actor ) ) {
$revActorName = $userFactory->newFromActorId( $row->rev_actor )->getName();
}

$titleText = $title->getText();
Expand Down Expand Up @@ -286,9 +286,9 @@ public static function newFromRow(
if ( $parameters->getParameter( 'goal' ) != 'categories' ) {
// REVISION SPECIFIED
if ( $parameters->getParameter( 'lastrevisionbefore' ) || $parameters->getParameter( 'allrevisionsbefore' ) || $parameters->getParameter( 'firstrevisionsince' ) || $parameters->getParameter( 'allrevisionssince' ) ) {
$article->mRevision = $row->revactor_rev;
$article->mRevision = $row->rev_id;
$article->mUser = $revActorName;
$article->mDate = $row->revactor_timestamp;
$article->mDate = $row->rev_timestamp;

// $article->mComment = $row->rev_comment;
}
Expand All @@ -298,8 +298,8 @@ public static function newFromRow(
$article->mDate = $row->page_touched;
} elseif ( $parameters->getParameter( 'addfirstcategorydate' ) ) {
$article->mDate = $row->cl_timestamp;
} elseif ( $parameters->getParameter( 'addeditdate' ) && isset( $row->revactor_timestamp ) ) {
$article->mDate = $row->revactor_timestamp;
} elseif ( $parameters->getParameter( 'addeditdate' ) && isset( $row->rev_timestamp ) ) {
$article->mDate = $row->rev_timestamp;
} elseif ( $parameters->getParameter( 'addeditdate' ) && isset( $row->page_touched ) ) {
$article->mDate = $row->page_touched;
}
Expand Down
2 changes: 1 addition & 1 deletion includes/Hooks.php
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ public static function dplParserFunction( $parser ) {
// @phan-suppress-next-line PhanPluginMixedKeyNoKey
$parser->getPreprocessor()->preprocessToObj( $dplresult, 1 ),
'isLocalObj' => true,
'title' => $parser->getTitle()
'title' => $parser->getPage()
];
}

Expand Down
13 changes: 5 additions & 8 deletions includes/LST.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,6 @@ class LST {
* @param Parser $parser
* @param string $part1
* @return bool
*
* @suppress PhanUndeclaredProperty Use of Parser::mTemplatePath
*/
public static function open( $parser, $part1 ) {
// Infinite loop test
Expand All @@ -70,8 +68,6 @@ public static function open( $parser, $part1 ) {
*
* @param Parser $parser
* @param string $part1
*
* @suppress PhanUndeclaredProperty Use of Parser::mTemplatePath
*/
public static function close( $parser, $part1 ) {
// Infinite loop test
Expand Down Expand Up @@ -111,7 +107,7 @@ private static function parse( $parser, $text, $part1, $skiphead = 0, $recursion

// Handle recursion here, so we can break cycles.
if ( $recursionCheck == false ) {
$text = $parser->preprocess( $text, $parser->getTitle(), $parser->getOptions() );
$text = $parser->preprocess( $text, $parser->getPage(), $parser->getOptions() );
self::close( $parser, $part1 );
}

Expand All @@ -124,7 +120,8 @@ private static function parse( $parser, $text, $part1, $skiphead = 0, $recursion
return $text;
}
} else {
return "[[" . $parser->getTitle()->getPrefixedText() . "]]" . "<!-- WARNING: LST loop detected -->";
$title = Title::castFromPageReference( $parser->getPage() );
return "[[" . $title->getPrefixedText() . "]]" . "<!-- WARNING: LST loop detected -->";
}
}

Expand Down Expand Up @@ -708,7 +705,7 @@ public static function includeTemplate( $parser, Lister $lister, $dplNr, $articl
}
} else {
// put a red link into the output
$output[0] = $parser->preprocess( '{{' . $defaultTemplate . '|%PAGE%=' . $page . '|%TITLE%=' . $title->getText() . '|%DATE%=' . $date . '|%USER%=' . $user . '}}', $parser->getTitle(), $parser->getOptions() );
$output[0] = $parser->preprocess( '{{' . $defaultTemplate . '|%PAGE%=' . $page . '|%TITLE%=' . $title->getText() . '|%DATE%=' . $date . '|%USER%=' . $user . '}}', $parser->getPage(), $parser->getOptions() );
}

unset( $title );
Expand Down Expand Up @@ -757,7 +754,7 @@ public static function includeTemplate( $parser, Lister $lister, $dplNr, $articl
}

$argChain .= '|%DATE%=' . $date . '|%USER%=' . $user . '|%ARGS%=' . str_replace( '|', '§', preg_replace( '/[}]+/', '}', preg_replace( '/[{]+/', '{', substr( $invocation, strlen( $template2 ) + 2 ) ) ) ) . '}}';
$output[++$n] = $parser->preprocess( $argChain, $parser->getTitle(), $parser->getOptions() );
$output[++$n] = $parser->preprocess( $argChain, $parser->getPage(), $parser->getOptions() );
}
break;
}
Expand Down
Loading

0 comments on commit 8dd8d03

Please sign in to comment.