Index: AbuseFilter.php =================================================================== --- AbuseFilter.php (revision 49623) +++ AbuseFilter.php (working copy) @@ -66,6 +66,7 @@ $wgHooks['RecentChange_save'][] = 'AbuseFilterHooks::onRecentChangeSave'; $wgHooks['ListDefinedTags'][] = 'AbuseFilterHooks::onListDefinedTags'; $wgHooks['LoadExtensionSchemaUpdates'][] = 'AbuseFilterHooks::onLoadExtensionSchemaUpdates'; +$wgHooks['ContributionsToolLinks'][] = 'AbuseFilterHooks::onContributionsToolLinks'; $wgAvailableRights[] = 'abusefilter-modify'; $wgAvailableRights[] = 'abusefilter-log-detail'; Index: AbuseFilter.i18n.php =================================================================== --- AbuseFilter.i18n.php (revision 49623) +++ AbuseFilter.i18n.php (working copy) @@ -95,7 +95,8 @@ 'abusefilter-log-details-ip' => 'Originating IP address', 'abusefilter-log-noactions' => 'none', 'abusefilter-log-details-diff' => 'Changes made in edit', - + 'abusefilter-log-linkoncontribs' => 'abuse log', + 'abusefilter-log-linkoncontribs-text' => 'Abuse Log for this user', // Abuse filter management 'abusefilter-management' => 'Abuse filter management', 'abusefilter-list' => 'All filters', Index: AbuseFilter.hooks.php =================================================================== --- AbuseFilter.hooks.php (revision 49623) +++ AbuseFilter.hooks.php (working copy) @@ -175,4 +175,20 @@ } return true; } + + public static function onContributionsToolLinks( $id, $nt, &$tools ) + { + global $wgUser; + wfLoadExtensionMessages( 'AbuseFilter' ); + if( $wgUser->isAllowed( 'abusefilter-log' ) ) { + $sk = $wgUser->getSkin(); + $tools[] = $sk->link( + SpecialPage::getTitleFor( 'AbuseLog' ), + wfMsg( 'abusefilter-log-linkoncontribs' ), + array('title' => wfMsg( 'abusefilter-log-linkoncontribs-text' )) , + array('wpSearchUser' => $nt->getPartialUrl()) + ); + } + return true; + } }