92 public function run( $resultPageSet =
null ) {
93 $params = $this->extractRequestParams();
94 $result = $this->getResult();
96 $qp = $this->getSpecialPage( $params[
'page'] );
97 if ( !$qp->userCanExecute( $this->getUser() ) ) {
98 $this->dieWithError(
'apierror-specialpage-cantexecute' );
101 $r = [
'name' => $params[
'page'] ];
102 if ( $qp->isCached() ) {
103 if ( !$qp->isCacheable() ) {
104 $r[
'disabled'] =
true;
107 $ts = $qp->getCachedTimestamp();
109 $r[
'cachedtimestamp'] =
wfTimestamp( TS_ISO_8601, $ts );
111 $r[
'maxresults'] = $this->getConfig()->get(
'QueryCacheLimit' );
114 $result->addValue( [
'query' ], $this->getModuleName(), $r );
116 if ( $qp->isCached() && !$qp->isCacheable() ) {
121 $res = $qp->doQuery( $params[
'offset'], $params[
'limit'] + 1 );
124 foreach (
$res as $row ) {
125 if ( ++$count > $params[
'limit'] ) {
127 $this->setContinueEnumParameter(
'offset', $params[
'offset'] + $params[
'limit'] );
131 $title = Title::makeTitle( $row->namespace, $row->title );
132 if ( $resultPageSet ===
null ) {
134 if ( isset( $row->value ) ) {
135 $data[
'value'] = $row->value;
136 if ( $qp->usesTimestamps() ) {
137 $data[
'timestamp'] =
wfTimestamp( TS_ISO_8601, $row->value );
140 self::addTitleInfo( $data,
$title );
142 foreach ( $row as $field => $value ) {
143 if ( !in_array( $field, [
'namespace',
'title',
'value',
'qc_type' ] ) ) {
144 $data[
'databaseResult'][$field] = $value;
148 $fit = $result->addValue( [
'query', $this->getModuleName(),
'results' ],
null, $data );
150 $this->setContinueEnumParameter(
'offset', $params[
'offset'] + $count - 1 );
157 if ( $resultPageSet ===
null ) {
158 $result->addIndexedTagName(
159 [
'query', $this->getModuleName(),
'results' ],
163 $resultPageSet->populateFromTitles( $titles );