84 public function run( $resultPageSet =
null ) {
85 $params = $this->extractRequestParams();
86 $result = $this->getResult();
88 $qp = $this->getSpecialPage( $params[
'page'] );
89 if ( !$qp->userCanExecute( $this->getUser() ) ) {
90 $this->dieWithError(
'apierror-specialpage-cantexecute' );
93 $r = [
'name' => $params[
'page'] ];
94 if ( $qp->isCached() ) {
95 if ( !$qp->isCacheable() ) {
96 $r[
'disabled'] =
true;
99 $ts = $qp->getCachedTimestamp();
101 $r[
'cachedtimestamp'] =
wfTimestamp( TS_ISO_8601, $ts );
103 $r[
'maxresults'] = $this->getConfig()->get(
'QueryCacheLimit' );
106 $result->addValue( [
'query' ], $this->getModuleName(), $r );
108 if ( $qp->isCached() && !$qp->isCacheable() ) {
113 $res = $qp->doQuery( $params[
'offset'], $params[
'limit'] + 1 );
116 foreach (
$res as $row ) {
117 if ( ++$count > $params[
'limit'] ) {
119 $this->setContinueEnumParameter(
'offset', $params[
'offset'] + $params[
'limit'] );
123 $title = Title::makeTitle( $row->namespace, $row->title );
124 if ( $resultPageSet ===
null ) {
126 if ( isset( $row->value ) ) {
127 $data[
'value'] = $row->value;
128 if ( $qp->usesTimestamps() ) {
129 $data[
'timestamp'] =
wfTimestamp( TS_ISO_8601, $row->value );
132 self::addTitleInfo( $data,
$title );
134 foreach ( $row as $field => $value ) {
135 if ( !in_array( $field, [
'namespace',
'title',
'value',
'qc_type' ] ) ) {
136 $data[
'databaseResult'][$field] = $value;
140 $fit = $result->addValue( [
'query', $this->getModuleName(),
'results' ],
null, $data );
142 $this->setContinueEnumParameter(
'offset', $params[
'offset'] + $count - 1 );
149 if ( $resultPageSet ===
null ) {
150 $result->addIndexedTagName(
151 [
'query', $this->getModuleName(),
'results' ],
155 $resultPageSet->populateFromTitles( $titles );