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; } $tags = static::getDiscussionToolsTagsFromRequest(); if ( $tags ) { $recentChange->addTags( $tags ); } return true; } /** * Get DT tags from the dttags param in the request, and validate against known tags. */ public static function getDiscussionToolsTagsFromRequest(): array { $request = RequestContext::getMain()->getRequest(); $tags = explode( ',', $request->getText( 'dttags' ) ); return array_values( array_intersect( $tags, static::TAGS ) ); } }