mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/DiscussionTools
synced 2024-11-17 05:10:50 +00:00
269514f533
The 'dtenable' does not appear to take user-provided content that requires language normalization. In general getRawVal should be used, or if it's user input that needs normalization, use getText(). Perhaps one day we'll alias or deprecate getVal (which is currently an odd mid-way hybrid, most closely to getText; originally created for EditPage.php textareas). Change-Id: I8364c84f8c4f700da6e208df2e87c29bf254d685
79 lines
1.9 KiB
PHP
79 lines
1.9 KiB
PHP
<?php
|
|
/**
|
|
* DiscussionTools tag hooks
|
|
*
|
|
* @file
|
|
* @ingroup Extensions
|
|
* @license MIT
|
|
*/
|
|
|
|
namespace MediaWiki\Extension\DiscussionTools\Hooks;
|
|
|
|
use MediaWiki\ChangeTags\Hook\ChangeTagsListActiveHook;
|
|
use MediaWiki\ChangeTags\Hook\ListDefinedTagsHook;
|
|
use MediaWiki\Hook\RecentChange_saveHook;
|
|
use RecentChange;
|
|
use RequestContext;
|
|
|
|
class TagHooks implements
|
|
ChangeTagsListActiveHook,
|
|
ListDefinedTagsHook,
|
|
RecentChange_saveHook
|
|
{
|
|
private const TAGS = [
|
|
'discussiontools',
|
|
// Features:
|
|
'discussiontools-reply',
|
|
'discussiontools-edit',
|
|
'discussiontools-newtopic',
|
|
// Input methods:
|
|
'discussiontools-source',
|
|
'discussiontools-visual',
|
|
];
|
|
|
|
/**
|
|
* @param string[] &$tags List of all active tags. Append to this array.
|
|
* @return bool|void True or no return value to continue or false to abort
|
|
*/
|
|
public function onChangeTagsListActive( &$tags ) {
|
|
$this->onListDefinedTags( $tags );
|
|
}
|
|
|
|
/**
|
|
* Populate core Special:Tags with the change tags in use by DiscussionTools.
|
|
*
|
|
* @param string[] &$tags List of tags
|
|
* @return bool|void True or no return value to continue or false to abort
|
|
*/
|
|
public function onListDefinedTags( &$tags ) {
|
|
$tags = array_merge( $tags, static::TAGS );
|
|
}
|
|
|
|
// phpcs:disable MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName
|
|
|
|
/**
|
|
* Implements the RecentChange_save hook, to add an allowed set of changetags
|
|
* to edits.
|
|
*
|
|
* @param RecentChange $recentChange
|
|
* @return bool
|
|
*/
|
|
public function onRecentChange_save( $recentChange ) {
|
|
// only apply to api edits, since there's no case where discussiontools
|
|
// should be using the form-submit method.
|
|
if ( !defined( 'MW_API' ) ) {
|
|
return true;
|
|
}
|
|
$request = RequestContext::getMain()->getRequest();
|
|
$tags = explode( ',', $request->getText( 'dttags' ) );
|
|
|
|
$tags = array_values( array_intersect( $tags, static::TAGS ) );
|
|
|
|
if ( $tags ) {
|
|
$recentChange->addTags( $tags );
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|