diff options
author | Brian Evans <grknight@gentoo.org> | 2020-10-02 15:24:06 -0400 |
---|---|---|
committer | Brian Evans <grknight@gentoo.org> | 2020-10-02 15:24:06 -0400 |
commit | 60dd5fd95847643eab04ce173f0774c9c584e795 (patch) | |
tree | 52299ac4e3c5c69df75997bfd7d62b71ef9e0089 /MLEB/UniversalLanguageSelector/includes/api | |
parent | Update Widgets to 1.35 (diff) | |
download | extensions-60dd5fd95847643eab04ce173f0774c9c584e795.tar.gz extensions-60dd5fd95847643eab04ce173f0774c9c584e795.tar.bz2 extensions-60dd5fd95847643eab04ce173f0774c9c584e795.zip |
Update MLEB to 2020.07
Signed-off-by: Brian Evans <grknight@gentoo.org>
Diffstat (limited to 'MLEB/UniversalLanguageSelector/includes/api')
3 files changed, 212 insertions, 0 deletions
diff --git a/MLEB/UniversalLanguageSelector/includes/api/ApiLanguageSearch.php b/MLEB/UniversalLanguageSelector/includes/api/ApiLanguageSearch.php new file mode 100644 index 00000000..09beef1a --- /dev/null +++ b/MLEB/UniversalLanguageSelector/includes/api/ApiLanguageSearch.php @@ -0,0 +1,60 @@ +<?php +/** + * Language name search API + * + * Copyright (C) 2012 Alolita Sharma, Amir Aharoni, Arun Ganesh, Brandon Harris, + * Niklas Laxström, Pau Giner, Santhosh Thottingal, Siebrand Mazeland and other + * contributors. See CREDITS for a list. + * + * UniversalLanguageSelector is dual licensed GPLv2 or later and MIT. You don't + * have to do anything special to choose one license or the other and you don't + * have to notify anyone which license you are using. You are free to use + * UniversalLanguageSelector in commercial projects as long as the copyright + * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details. + * + * @file + * @ingroup Extensions + * @license GPL-2.0-or-later + * @license MIT + */ + +/** + * @ingroup API + */ +class ApiLanguageSearch extends ApiBase { + public function execute() { + $params = $this->extractRequestParams(); + $search = $params['search']; + $typos = $params['typos']; + $searches = LanguageNameSearch::search( $search, $typos, $this->getLanguage()->getCode() ); + $result = $this->getResult(); + $result->addValue( null, $this->getModuleName(), $searches ); + } + + public function getAllowedParams() { + return [ + 'search' => [ + ApiBase::PARAM_REQUIRED => true + ], + 'typos' => [ + ApiBase::PARAM_REQUIRED => false, + ApiBase::PARAM_TYPE => 'integer', + ApiBase::PARAM_DFLT => 1 + ], + ]; + } + + /** + * @inheritDoc + */ + protected function getExamplesMessages() { + return [ + 'action=languagesearch&search=Te' + => 'apihelp-languagesearch-example-1', + 'action=languagesearch&search=ഫി' + => 'apihelp-languagesearch-example-2', + 'action=languagesearch&search=ഫി&typos=1' + => 'apihelp-languagesearch-example-3', + ]; + } +} diff --git a/MLEB/UniversalLanguageSelector/includes/api/ApiULSLocalization.php b/MLEB/UniversalLanguageSelector/includes/api/ApiULSLocalization.php new file mode 100644 index 00000000..6d856a30 --- /dev/null +++ b/MLEB/UniversalLanguageSelector/includes/api/ApiULSLocalization.php @@ -0,0 +1,73 @@ +<?php +/** + * Localization API for ULS + * + * Copyright (C) 2013 Alolita Sharma, Amir Aharoni, Arun Ganesh, Brandon Harris, + * Niklas Laxström, Pau Giner, Santhosh Thottingal, Siebrand Mazeland and other + * contributors. See CREDITS for a list. + * + * UniversalLanguageSelector is dual licensed GPLv2 or later and MIT. You don't + * have to do anything special to choose one license or the other and you don't + * have to notify anyone which license you are using. You are free to use + * UniversalLanguageSelector in commercial projects as long as the copyright + * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details. + * + * @file + * @ingroup Extensions + * @license GPL-2.0-or-later + * @license MIT + */ + +/** + * @ingroup API + */ +class ApiULSLocalization extends ApiBase { + + public function execute() { + $this->getMain()->setCacheMode( 'public' ); + $this->getMain()->setCacheMaxAge( 2419200 ); + + $params = $this->extractRequestParams(); + $language = $params['language']; + if ( !Language::isValidCode( $language ) ) { + $this->dieWithError( [ 'apierror-invalidlang', 'language' ], 'invalidlanguage' ); + } + $contents = ULSJsonMessageLoader::getMessages( $language ); + // Output the file's contents raw + $this->getResult()->addValue( null, 'text', json_encode( $contents ) ); + $this->getResult()->addValue( null, 'mime', 'application/json' ); + } + + public function getCustomPrinter() { + return new ApiFormatRaw( + $this->getMain(), + $this->getMain()->createPrinterByName( 'json' ) + ); + } + + public function getAllowedParams() { + return [ + 'language' => [ + ApiBase::PARAM_REQUIRED => true, + ApiBase::PARAM_TYPE => 'string', + ], + ]; + } + + /** + * @inheritDoc + */ + protected function getExamplesMessages() { + return [ + 'action=ulslocalization&language=ta' + => 'apihelp-ulslocalization-example-1', + 'action=ulslocalization&language=hi' + => 'apihelp-ulslocalization-example-2', + ]; + } + + public function isInternal() { + // Try to scare people away from using this externally + return true; + } +} diff --git a/MLEB/UniversalLanguageSelector/includes/api/ApiULSSetLanguage.php b/MLEB/UniversalLanguageSelector/includes/api/ApiULSSetLanguage.php new file mode 100644 index 00000000..715c6dd8 --- /dev/null +++ b/MLEB/UniversalLanguageSelector/includes/api/ApiULSSetLanguage.php @@ -0,0 +1,79 @@ +<?php +/** + * Update user's preferred language. + * + * Copyright (C) 2012 Alolita Sharma, Amir Aharoni, Arun Ganesh, Brandon Harris, + * Niklas Laxström, Pau Giner, Santhosh Thottingal, Siebrand Mazeland and other + * contributors. See CREDITS for a list. + * + * UniversalLanguageSelector is dual licensed GPLv2 or later and MIT. You don't + * have to do anything special to choose one license or the other and you don't + * have to notify anyone which license you are using. You are free to use + * UniversalLanguageSelector in commercial projects as long as the copyright + * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details. + * + * @file + * @ingroup Extensions + * @license GPL-2.0-or-later + * @license MIT + */ + +/** + * @ingroup API + */ +class ApiULSSetLanguage extends ApiBase { + public function execute() { + $request = $this->getRequest(); + if ( !$request->wasPosted() ) { + $this->dieWithError( [ 'apierror-mustbeposted', $request->getText( 'action' ) ] ); + } + + $languageCode = $request->getText( 'languagecode' ); + if ( !Language::isSupportedLanguage( $languageCode ) ) { + $this->dieWithError( + [ 'apierror-invalidlang', $this->encodeParamName( 'languagecode' ) ] + ); + } + + $user = $this->getUser(); + if ( $user->isAnon() ) { + if ( $this->getConfig()->get( 'ULSAnonCanChangeLanguage' ) ) { + // Anonymous users can change language. + // Use a cookie that also can changed by JavaScript. + $request->response()->setCookie( + 'language', + $languageCode, + 0, + [ 'httpOnly' => false ] + ); + return; + } + + $this->dieWithError( [ 'apierror-ulssetlang-anon-notallowed' ] ); + } + + $updateUser = $user->getInstanceForUpdate(); + $updateUser->setOption( 'language', $languageCode ); + // Sync the DB on post-send + DeferredUpdates::addCallableUpdate( function () use ( $updateUser ) { + $updateUser->saveSettings(); + } ); + } + + public function getAllowedParams() { + return [ + 'languagecode' => [ + ApiBase::PARAM_REQUIRED => true, + ] + ]; + } + + public function isInternal() { + // Try to scare people away from using this externally + return true; + } + + public function needsToken() { + return 'csrf'; + } +} |