api: Inject services into ApiSetPageLanguage

Bug: T259960
Change-Id: I528bfbaf84a46248ba69533780374aebb5cdd542
This commit is contained in:
Umherirrender 2021-06-29 23:13:33 +02:00
parent 56ff3059ea
commit 1fa849bd11
2 changed files with 36 additions and 6 deletions

View file

@ -294,7 +294,13 @@ class ApiMain extends ApiBase {
'MergeHistoryFactory',
],
],
'setpagelanguage' => ApiSetPageLanguage::class,
'setpagelanguage' => [
'class' => ApiSetPageLanguage::class,
'services' => [
'DBLoadBalancer',
'LanguageNameUtils',
]
],
'changecontentmodel' => [
'class' => ApiChangeContentModel::class,
'services' => [

View file

@ -20,7 +20,8 @@
* @file
*/
use MediaWiki\MediaWikiServices;
use MediaWiki\Languages\LanguageNameUtils;
use Wikimedia\Rdbms\ILoadBalancer;
/**
* API module that facilitates changing the language of a page.
@ -30,6 +31,30 @@ use MediaWiki\MediaWikiServices;
* @ingroup API
*/
class ApiSetPageLanguage extends ApiBase {
/** @var ILoadBalancer */
private $loadBalancer;
/** @var LanguageNameUtils */
private $languageNameUtils;
/**
* @param ApiMain $mainModule
* @param string $moduleName
* @param ILoadBalancer $loadBalancer
* @param LanguageNameUtils $languageNameUtils
*/
public function __construct(
ApiMain $mainModule,
$moduleName,
ILoadBalancer $loadBalancer,
LanguageNameUtils $languageNameUtils
) {
parent::__construct( $mainModule, $moduleName );
$this->loadBalancer = $loadBalancer;
$this->languageNameUtils = $languageNameUtils;
}
// Check if change language feature is enabled
protected function getExtendedDescription() {
if ( !$this->getConfig()->get( 'PageLanguageUseDB' ) ) {
@ -84,7 +109,8 @@ class ApiSetPageLanguage extends ApiBase {
$titleObj,
$params['lang'],
$params['reason'] ?? '',
$params['tags'] ?: []
$params['tags'] ?: [],
$this->loadBalancer->getConnectionRef( ILoadBalancer::DB_PRIMARY )
);
if ( !$status->isOK() ) {
@ -117,9 +143,7 @@ class ApiSetPageLanguage extends ApiBase {
'lang' => [
ApiBase::PARAM_TYPE => array_merge(
[ 'default' ],
array_keys( MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageNames( null, 'mwfile' ) )
array_keys( $this->languageNameUtils->getLanguageNames( null, 'mwfile' ) )
),
ApiBase::PARAM_REQUIRED => true,
],