1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
<?php
namespace SMW\MediaWiki\Api;
use ApiBase;
/**
* API module to query SMW by providing a query specified as
* a list of conditions, printouts and parameters.
*
* @license GNU GPL v2+
* @since 1.6.2
*
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
*/
class AskArgs extends Query {
/**
* @see ApiBase::execute
*/
public function execute() {
$params = $this->extractRequestParams();
$parameterFormatter = new ApiRequestParameterFormatter( $this->extractRequestParams() );
$outputFormat = 'json';
$queryResult = $this->getQueryResult( $this->getQuery(
$parameterFormatter->getAskArgsApiParameter( 'conditions' ),
$parameterFormatter->getAskArgsApiParameter( 'printouts' ),
$parameterFormatter->getAskArgsApiParameter( 'parameters' )
) );
if ( $this->getMain()->getPrinter() instanceof \ApiFormatXml ) {
$outputFormat = 'xml';
}
if ( isset( $params['api_version'] ) ) {
$queryResult->setSerializerVersion( $params['api_version'] );
}
$this->addQueryResult( $queryResult, $outputFormat );
}
/**
* @codeCoverageIgnore
* @see ApiBase::getAllowedParams
*
* @return array
*/
public function getAllowedParams() {
return [
'conditions' => [
ApiBase::PARAM_TYPE => 'string',
ApiBase::PARAM_ISMULTI => true,
ApiBase::PARAM_REQUIRED => true,
],
'printouts' => [
ApiBase::PARAM_TYPE => 'string',
ApiBase::PARAM_DFLT => '',
ApiBase::PARAM_ISMULTI => true,
],
'parameters' => [
ApiBase::PARAM_TYPE => 'string',
ApiBase::PARAM_DFLT => '',
ApiBase::PARAM_ISMULTI => true,
],
'api_version' => [
ApiBase::PARAM_TYPE => [ 2, 3 ],
ApiBase::PARAM_DFLT => 2,
ApiBase::PARAM_HELP_MSG => 'apihelp-ask-parameter-api-version',
],
];
}
/**
* @codeCoverageIgnore
* @see ApiBase::getParamDescription
*
* @return array
*/
public function getParamDescription() {
return [
'conditions' => 'The query conditions, i.e. the requirements for a subject to be included',
'printouts' => 'The query printouts, i.e. the properties to show per subject',
'parameters' => 'The query parameters, i.e. all non-condition and non-printout arguments',
];
}
/**
* @codeCoverageIgnore
* @see ApiBase::getDescription
*
* @return array
*/
public function getDescription() {
return [
'API module to query SMW by providing a query specified as a list of conditions, printouts and parameters.'
];
}
/**
* @codeCoverageIgnore
* @see ApiBase::getExamples
*
* @return array
*/
protected function getExamples() {
return [
'api.php?action=askargs&conditions=Modification%20date::%2B&printouts=Modification%20date¶meters=|sort%3DModification%20date|order%3Ddesc',
];
}
/**
* @codeCoverageIgnore
* @see ApiBase::getVersion
*
* @return string
*/
public function getVersion() {
return __CLASS__ . '-' . SMW_VERSION;
}
}
|