summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Evans <grknight@gentoo.org>2020-10-02 15:24:06 -0400
committerBrian Evans <grknight@gentoo.org>2020-10-02 15:24:06 -0400
commit60dd5fd95847643eab04ce173f0774c9c584e795 (patch)
tree52299ac4e3c5c69df75997bfd7d62b71ef9e0089 /MLEB/UniversalLanguageSelector/includes/api
parentUpdate Widgets to 1.35 (diff)
downloadextensions-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')
-rw-r--r--MLEB/UniversalLanguageSelector/includes/api/ApiLanguageSearch.php60
-rw-r--r--MLEB/UniversalLanguageSelector/includes/api/ApiULSLocalization.php73
-rw-r--r--MLEB/UniversalLanguageSelector/includes/api/ApiULSSetLanguage.php79
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';
+ }
+}