Skip to content

Commit

Permalink
PLATFORM-10109 | Thanks to MW 1.43 with custom patches - add fixes fo…
Browse files Browse the repository at this point in the history
…r breaking changes

--amend
  • Loading branch information
maaartyyynaa committed Jan 24, 2025
1 parent c22bda9 commit 29728d4
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 128 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/php-pr-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ on:
branches: '**'

push:
branches: [ master, MW_1_37, REL1_39 ]
branches: [ REL1_43 ]

jobs:
build:
strategy:
matrix:
php_version: ['8.0']
mw: ['REL1_39']
mw: ['REL1_43']

runs-on: ubuntu-latest
steps:
Expand Down
8 changes: 4 additions & 4 deletions extension.json
Original file line number Diff line number Diff line change
Expand Up @@ -161,11 +161,11 @@
"PageHistoryBeforeList": "main",
"PageHistoryPager::doBatchLookups": "main",
"ChangesListInitRows": "main",
"EnhancedChangesListModifyLineData": "MediaWiki\\Extension\\Thanks\\Hooks::onEnhancedChangesListModifyLineData",
"EnhancedChangesListModifyLineData": "main",
"EnhancedChangesListModifyBlockLineData": "MediaWiki\\Extension\\Thanks\\Hooks::onEnhancedChangesListModifyBlockLineData",
"OldChangesListRecentChangesLine": "MediaWiki\\Extension\\Thanks\\Hooks::onOldChangesListRecentChangesLine",
"ContributionsLineEnding": "MediaWiki\\Extension\\Thanks\\Hooks::onContributionsLineEnding"
},
"OldChangesListRecentChangesLine": "main",
"ContributionsLineEnding": "main"
},
"HookHandlers": {
"main": {
"class": "MediaWiki\\Extension\\Thanks\\Hooks",
Expand Down
6 changes: 3 additions & 3 deletions includes/Api/ApiCoreThank.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
use MediaWiki\Api\ApiBase;
use MediaWiki\Api\ApiMain;
use MediaWiki\Extension\Notifications\DiscussionParser;
use MediaWiki\Extension\Notifications\Model\Event;
use MediaWiki\Extension\Thanks\Storage\LogStore;
use MediaWiki\Extension\Thanks\ThanksCache;
use MediaWiki\MediaWikiServices;
use MediaWiki\Permissions\PermissionManager;
use MediaWiki\Revision\RevisionRecord;
use MediaWiki\Revision\RevisionStore;
Expand All @@ -16,8 +18,6 @@
use MediaWiki\User\UserFactory;
use MediaWiki\User\UserIdentity;
use RequestContext;
use Title;
use User;
use Wikimedia\ParamValidator\ParamValidator;
use Wikimedia\ParamValidator\TypeDef\IntegerDef;

Expand Down
126 changes: 21 additions & 105 deletions includes/Hooks.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,10 @@
namespace MediaWiki\Extension\Thanks;

use Article;
use CategoryPage;
use ConfigException;
use ContribsPager;
use DatabaseLogEntry;
use DifferenceEngine;
use EchoEvent;
use EnhancedChangesList;
use ExtensionRegistry;
use Html;
use ImagePage;
use LogEventsList;
use LogPage;
use MediaWiki\Api\ApiModuleManager;
Expand All @@ -30,23 +24,24 @@
use MediaWiki\Diff\Hook\DiffToolsHook;
use MediaWiki\Extension\Thanks\Api\ApiFlowThank;
use MediaWiki\Hook\ChangesListInitRowsHook;
use MediaWiki\Hook\ContributionsLineEndingHook;
use MediaWiki\Hook\EnhancedChangesListModifyLineDataHook;
use MediaWiki\Hook\GetLogTypesOnUserHook;
use MediaWiki\Hook\HistoryToolsHook;
use MediaWiki\Hook\LogEventsListLineEndingHook;
use MediaWiki\Hook\OldChangesListRecentChangesLineHook;
use MediaWiki\Hook\PageHistoryBeforeListHook;
use MediaWiki\Hook\PageHistoryPager__doBatchLookupsHook;
use MediaWiki\Html\Html;
use MediaWiki\Linker\LinkTarget;
use MediaWiki\MediaWikiServices;
use MediaWiki\Page\PageIdentityValue;
use MediaWiki\Revision\MutableRevisionRecord;
use MediaWiki\Output\Hook\BeforePageDisplayHook;
use MediaWiki\Output\OutputPage;
use MediaWiki\Page\PageIdentityValue;
use MediaWiki\Permissions\PermissionManager;
use MediaWiki\Registration\ExtensionRegistry;
use MediaWiki\Revision\RevisionLookup;
use MediaWiki\Page\PageIdentityValue;
use MediaWiki\Revision\MutableRevisionRecord;
use MediaWiki\Revision\RevisionLookup;
use MediaWiki\Revision\RevisionRecord;
use MediaWiki\SpecialPage\SpecialPage;
use MediaWiki\Title\Title;
Expand All @@ -56,36 +51,32 @@
use MediaWiki\User\UserIdentity;
use MediaWiki\User\UserIdentityValue;
use MobileContext;
use OldChangesList;
use OutputPage;
use RecentChange;
use RequestContext;
use Skin;
use SpecialPage;
use stdClass;
use Title;
use User;
use WikiPage;

/**
* Hooks for Thanks extension
*
* @file
* @ingroup Extensions
*/
class Hooks implements
abstract class Hooks implements
ApiMain__moduleManagerHook,
BeforePageDisplayHook,
DiffToolsHook,
DifferenceEngineViewHeaderHook,
EnhancedChangesListModifyLineDataHook,
GetAllBlockActionsHook,
GetLogTypesOnUserHook,
HistoryToolsHook,
LocalUserCreatedHook,
LogEventsListLineEndingHook,
PageHistoryBeforeListHook,
PageHistoryPager__doBatchLookupsHook,
ChangesListInitRowsHook
ChangesListInitRowsHook,
OldChangesListRecentChangesLineHook,
ContributionsLineEndingHook
{
private Config $config;
private GenderCache $genderCache;
Expand Down Expand Up @@ -125,6 +116,7 @@ public function onHistoryTools(
$userIdentity
) {
$this->insertThankLink( $revisionRecord,
$links, $userIdentity );
// [UGC-4257] Don't show thank links if user doesn't have specific permission
if ( !ThanksPermissions::checkUserPermissionsForThanks( RequestContext::getMain()->getOutput() ) ) {
return;
Expand Down Expand Up @@ -297,15 +289,6 @@ protected function generateThankElement(
if ( $sender->getRequest()->getSessionData( "thanks-thanked-$sessionKey" ) ) {
$class .= ' mw-thanks-thanked';
}
/**
* Fandom change - start - UGC-4533 - Cache thanks data in session in a better way
* @author Mkostrzewski
*/
if ( ( new ThanksCache(
MediaWikiServices::getInstance()->getDBLoadBalancer(),
MediaWikiServices::getInstance()->getMainConfig()
) )->haveThanked( RequestContext::getMain(), $sender->getActorId(), $id, $type ) ) {
// Fandom change - end
/**
* Fandom change - start - UGC-4533 - Cache thanks data in session in a better way
* @author Mkostrzewski
Expand Down Expand Up @@ -426,13 +409,14 @@ public function onLocalUserCreated( $user, $autocreated ) {
*/
public static function onBeforeSpecialMobileDiffDisplay( &$output, $ctx, $revisions ) {
$rev = $revisions[1];
$services = MediaWikiServices::getInstance();

// If the MobileFrontend extension is installed and the user is
// logged in or recipient is not a bot if bots cannot receive thanks, show a 'Thank' link.
if ( $rev
&& ExtensionRegistry::getInstance()->isLoaded( 'MobileFrontend' )
&& $rev->getUser()
&& self::canReceiveThanks( $rev->getUser() )
&& self::canReceiveThanks( $services->getMainConfig(), $services->getUserFactory(), $rev->getUser() )
&& $output->getUser()->isRegistered()
) {
$output->addModules( [ 'ext.thanks.mobilediff' ] );
Expand Down Expand Up @@ -582,14 +566,7 @@ public function onLogEventsListLineEnding(
* @param string[] &$attribs
* @return void
*/
public static function onEnhancedChangesListModifyLineData(
EnhancedChangesList $changesList,
array &$data,
array $block,
RecentChange $rc,
array &$classes,
array &$attribs
): void {
public function onEnhancedChangesListModifyLineData( $changesList, &$data, $block, $rc, &$classes, &$attribs ) {
if ( !in_array( 'ext.thanks.corethank', $changesList->getOutput()->getModules() ) ) {
self::addThanksModule( $changesList->getOutput() );
}
Expand All @@ -604,13 +581,9 @@ public static function onEnhancedChangesListModifyLineData(
}
}

public static function onOldChangesListRecentChangesLine(
OldChangesList $changesList,
&$s,
$rc,
) {
if ( !in_array( 'ext.thanks.corethank', $changesList->getOutput()->getModules() ) ) {
self::addThanksModule( $changesList->getOutput() );
public function onOldChangesListRecentChangesLine( $changeslist, &$s, $rc, &$classes, &$attribs ) {
if ( !in_array( 'ext.thanks.corethank', $changeslist->getOutput()->getModules() ) ) {
self::addThanksModule( $changeslist->getOutput() );
}

$revision = self::getRevisionForRecentChange( $rc );
Expand All @@ -619,7 +592,7 @@ public static function onOldChangesListRecentChangesLine(
self::insertThankLink(
$revision,
$holder,
$changesList->getUser()
$changeslist->getUser()
);

if ( count( $holder ) ) {
Expand All @@ -628,57 +601,6 @@ public static function onOldChangesListRecentChangesLine(
}
}

public static function onOldChangesListRecentChangesLine(
OldChangesList $changesList,
&$s,
$rc,
) {
if ( !in_array( 'ext.thanks.corethank', $changesList->getOutput()->getModules() ) ) {
self::addThanksModule( $changesList->getOutput() );
}

$revision = self::getRevisionForRecentChange( $rc );
if ( $revision ) {
$holder = [];
self::insertThankLink(
$revision,
$holder,
$changesList->getUser()
);

if ( count( $holder ) ) {
$s .= ' ' . $holder[0];
}
}
}

/**
* Fandom change UGC-4012 - Add thank link to the recent changes list
*
* @link https://www.mediawiki.org/wiki/Manual:EnhancedChangesListModifyBlockLineDataHook.php
* @param EnhancedChangesList $changesList
* @param array &$data
* @param RecentChange $rc
* @return void
*/
public static function onEnhancedChangesListModifyBlockLineData(
EnhancedChangesList $changesList,
array &$data,
RecentChange $rc
): void {
if ( !in_array( 'ext.thanks.corethank', $changesList->getOutput()->getModules() ) ) {
self::addThanksModule( $changesList->getOutput() );
}
$revision = self::getRevisionForRecentChange( $rc );
if ( $revision ) {
self::insertThankLink(
$revision,
$data,
$changesList->getUser()
);
}
}

/**
* Convenience function to get the {@link RevisionRecord} corresponding to a RecentChanges entry.
* This is an optimization to avoid triggering a query to fetch revision data for each RecentChanges entry.
Expand Down Expand Up @@ -725,19 +647,13 @@ private static function getRevisionForRecentChange( RecentChange $recentChange )
/**
* Fandom change UGC-4012 - Add thank link to Special:Contributions page
* @param ContribsPager $pager
* @param string &$line
* @param string &$ret
* @param stdClass $row
* @param array &$classes
* @param array &$attribs
* @return void
*/
public static function onContributionsLineEnding(
ContribsPager $pager,
string &$line,
stdClass $row,
array &$classes,
array &$attribs
): void {
public function onContributionsLineEnding( $pager, &$ret, $row, &$classes, &$attribs ): void {
$out = RequestContext::getMain()->getOutput();

// [UGC-4257] Don't show thank links if user doesn't have specific permission
Expand All @@ -758,7 +674,7 @@ public static function onContributionsLineEnding(
if ( isset( $links[0] ) ) {
// [UGC-4257] Wrap the thank link in a span so that it can be styled
$linkWithSpanParent = "<span class='mw-thanks-link-wrapper--contributions'>$links[0]</span>";
$line .= $linkWithSpanParent;
$ret .= $linkWithSpanParent;
}
}
}
14 changes: 0 additions & 14 deletions includes/ThanksPermissions.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,6 @@

class ThanksPermissions {

private static function isMobile() {
if ( class_exists( 'MobileContext' ) ) {
/** @var MobileContext $mobileContext */
$mobileContext = MediaWikiServices::getInstance()->getService( 'MobileFrontend.Context' );

return $mobileContext->shouldDisplayMobileView();
}

return false;
}

private const REQUIRE_USER_GROUPS = [ 'sysop', 'content-moderator', 'threadmoderator', 'rollback', 'staff',
'soap', 'wiki-representative', 'wiki-specialist' ];

Expand All @@ -32,9 +21,6 @@ private static function isMobile() {
return false;
}

private const REQUIRE_USER_GROUPS = [ 'sysop', 'content-moderator', 'threadmoderator', 'rollback', 'staff',
'soap', 'wiki-representative', 'wiki-specialist' ];

/**
* Check if the user is allowed to send thanks on pages:
* - Desktop Special:Contributions
Expand Down

0 comments on commit 29728d4

Please sign in to comment.