summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Translate/api/ApiSearchTranslations.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Translate/api/ApiSearchTranslations.php')
-rw-r--r--www/wiki/extensions/Translate/api/ApiSearchTranslations.php80
1 files changed, 47 insertions, 33 deletions
diff --git a/www/wiki/extensions/Translate/api/ApiSearchTranslations.php b/www/wiki/extensions/Translate/api/ApiSearchTranslations.php
index 7fa29e3c..d2787a0c 100644
--- a/www/wiki/extensions/Translate/api/ApiSearchTranslations.php
+++ b/www/wiki/extensions/Translate/api/ApiSearchTranslations.php
@@ -2,11 +2,16 @@
/**
* API module for search translations
* @since 2015.07
- * @license GPL-2.0+
+ * @license GPL-2.0-or-later
*/
class ApiSearchTranslations extends ApiBase {
public function execute() {
global $wgTranslateTranslationServices;
+
+ if ( !$this->getAvailableTranslationServices() ) {
+ $this->dieWithError( 'apierror-translate-notranslationservices' );
+ }
+
$params = $this->extractRequestParams();
$config = $wgTranslateTranslationServices[$params['service']];
@@ -23,19 +28,19 @@ class ApiSearchTranslations extends ApiBase {
$searchResults = $server->search(
$params['query'],
$params,
- array( '', '' )
+ [ '', '' ]
);
$documents = $server->getDocuments( $searchResults );
$total = $server->getTotalHits( $searchResults );
}
- $result->addValue( array( 'search', 'metadata' ), 'total', $total );
+ $result->addValue( [ 'search', 'metadata' ], 'total', $total );
$result->addValue( 'search', 'translations', $documents );
}
protected function getAvailableTranslationServices() {
global $wgTranslateTranslationServices;
- $good = array();
+ $good = [];
foreach ( $wgTranslateTranslationServices as $id => $config ) {
if ( TTMServer::factory( $config ) instanceof SearchableTTMServer ) {
$good[] = $id;
@@ -46,72 +51,81 @@ class ApiSearchTranslations extends ApiBase {
}
protected function getAllowedFilters() {
- return array(
+ return [
'',
'translated',
'fuzzy',
'untranslated'
- );
+ ];
}
public function getAllowedParams() {
- global $wgLanguageCode;
+ global $wgLanguageCode,
+ $wgTranslateTranslationDefaultService;
$available = $this->getAvailableTranslationServices();
+
$filters = $this->getAllowedFilters();
- return array(
- 'service' => array(
+ $ret = [
+ 'service' => [
ApiBase::PARAM_TYPE => $available,
- ApiBase::PARAM_DFLT => 'TTMServer',
- ),
- 'query' => array(
+ ],
+ 'query' => [
ApiBase::PARAM_TYPE => 'string',
ApiBase::PARAM_REQUIRED => true,
- ),
- 'sourcelanguage' => array(
+ ],
+ 'sourcelanguage' => [
ApiBase::PARAM_TYPE => 'string',
ApiBase::PARAM_DFLT => $wgLanguageCode,
- ),
- 'language' => array(
+ ],
+ 'language' => [
ApiBase::PARAM_TYPE => 'string',
ApiBase::PARAM_DFLT => '',
- ),
- 'group' => array(
+ ],
+ 'group' => [
ApiBase::PARAM_TYPE => 'string',
ApiBase::PARAM_DFLT => '',
- ),
- 'filter' => array(
+ ],
+ 'filter' => [
ApiBase::PARAM_TYPE => $filters,
ApiBase::PARAM_DFLT => '',
- ),
- 'match' => array(
+ ],
+ 'match' => [
ApiBase::PARAM_TYPE => 'string',
ApiBase::PARAM_DFLT => '',
- ),
- 'case' => array(
+ ],
+ 'case' => [
ApiBase::PARAM_TYPE => 'string',
ApiBase::PARAM_DFLT => '0',
- ),
- 'offset' => array(
+ ],
+ 'offset' => [
ApiBase::PARAM_TYPE => 'integer',
ApiBase::PARAM_DFLT => 0,
- ),
- 'limit' => array(
+ ],
+ 'limit' => [
ApiBase::PARAM_DFLT => 25,
- ApiBase::PARAM_TYPE => 'integer',
+ ApiBase::PARAM_TYPE => 'limit',
ApiBase::PARAM_MIN => 1,
ApiBase::PARAM_MAX => ApiBase::LIMIT_SML1,
ApiBase::PARAM_MAX2 => ApiBase::LIMIT_SML2
- ),
- );
+ ],
+ ];
+
+ if ( $available ) {
+ // Don't add this if no services are available, it makes
+ // ApiStructureTest unhappy
+ $ret['service'][ApiBase::PARAM_DFLT] = $wgTranslateTranslationDefaultService;
+ }
+
+ return $ret;
}
protected function getExamplesMessages() {
- return array(
+ return [
'action=searchtranslations&language=fr&query=aide'
=> 'apihelp-searchtranslations-example-1',
'action=searchtranslations&language=fr&query=edit&filter=untranslated'
=> 'apihelp-searchtranslations-example-2',
- );
+ ];
}
}