2declare( strict_types = 1 );
4namespace MediaWiki\Extension\Translate\TranslatorInterface;
6use MediaWiki\Config\Config;
7use MediaWiki\Extension\CLDR\LanguageNames;
9use MediaWiki\Hook\FetchChangesListHook;
10use MediaWiki\Hook\SpecialRecentChangesPanelHook;
11use MediaWiki\Html\Html;
12use MediaWiki\Languages\LanguageNameUtils;
13use MediaWiki\SpecialPage\Hook\ChangesListSpecialPageQueryHook;
15use Wikimedia\Rdbms\ILoadBalancer;
25 ChangesListSpecialPageQueryHook,
26 SpecialRecentChangesPanelHook
28 private Config $config;
29 private LanguageNameUtils $languageNameUtils;
30 private ILoadBalancer $loadBalancer;
32 public function __construct( LanguageNameUtils $languageNameUtils, ILoadBalancer $loadBalancer, Config $config ) {
33 $this->languageNameUtils = $languageNameUtils;
34 $this->loadBalancer = $loadBalancer;
35 $this->config = $config;
43 $name, &$tables, &$fields, &$conds, &$query_options, &$join_conds, $opts
50 $opts->add(
'trailer',
'' );
51 $trailer = $wgRequest->getVal(
'trailer',
'' );
52 if ( $trailer ===
null ) {
56 $dbr = $this->loadBalancer->getConnection( DB_REPLICA );
57 $conds[] =
'rc_title ' . $dbr->buildLike( $dbr->anyString(), $trailer );
58 $opts->setValue(
'trailer', $trailer );
66 global $wgLang, $wgRequest;
73 $default = $wgRequest->getVal(
'trailer',
'' );
75 if ( is_callable( [ LanguageNames::class,
'getNames' ] ) ) {
77 $languages = LanguageNames::getNames(
79 LanguageNames::FALLBACK_NORMAL
82 $languages = $this->languageNameUtils->getLanguageNames();
85 $optionAttributes = [
'value' =>
'' ];
86 if ( $default ===
'' ) {
87 $optionAttributes[
'selected' ] =
'selected';
90 $options = Html::element(
93 wfMessage(
'tpt-cleanchanges-language-na' )->text()
96 foreach ( $languages as $code => $name ) {
97 $selected = (
"/$code" === $default );
98 $optionAttributes = [
'value' =>
"/$code" ];
100 $optionAttributes[
'selected' ] =
'selected';
102 $options .= Html::element(
'option', $optionAttributes,
"$code - $name" ) .
"\n";
105 Xml::openElement(
'select',
108 'class' =>
'mw-language-selector',
109 'id' =>
'tpt-rc-language',
112 Xml::closeElement(
'select' );
114 $extraOpts[
'tailer'] = [ wfMessage(
'tpt-cleanchanges-language' )->escaped(), $str ];
123 $skin->getOutput()->addModules(
'ext.translate.cleanchanges' );