Go to the documentation of this file.
41 parent::__construct(
$query, $moduleName,
'rv' );
57 if ( isset( $this->tokenFunctions ) ) {
66 $this->tokenFunctions =
array(
67 'rollback' =>
array(
'ApiQueryRevisions',
'getRollbackToken' )
69 wfRunHooks(
'APIQueryRevisionsTokens',
array( &$this->tokenFunctions ) );
82 if ( !
$wgUser->isAllowed(
'rollback' ) ) {
97 $enumRevMode = ( !is_null(
$params[
'user'] ) || !is_null(
$params[
'excludeuser'] ) ||
103 $pageCount = $pageSet->getGoodTitleCount();
104 $revCount = $pageSet->getRevisionCount();
107 if ( $revCount === 0 && $pageCount === 0 ) {
111 if ( $revCount > 0 && $enumRevMode ) {
113 'The revids= parameter may not be used with the list options ' .
114 '(limit, startid, endid, dirNewer, start, end).',
119 if ( $pageCount > 1 && $enumRevMode ) {
121 'titles, pageids or a generator was used to supply multiple pages, ' .
122 'but the limit, startid, endid, dirNewer, user, excludeuser, start ' .
123 'and end parameters may only be used on a single page.',
128 if ( !is_null(
$params[
'difftotext'] ) ) {
129 $this->difftotext =
$params[
'difftotext'];
130 } elseif ( !is_null(
$params[
'diffto'] ) ) {
131 if (
$params[
'diffto'] ==
'cur' ) {
134 if ( ( !ctype_digit(
$params[
'diffto'] ) ||
$params[
'diffto'] < 0 )
138 'rvdiffto must be set to a non-negative number, "prev", "next" or "cur"',
145 if (
$params[
'diffto'] != 0 ) {
146 $difftoRev = Revision::newFromID(
$params[
'diffto'] );
151 $this->
setWarning(
"Couldn't diff to r{$difftoRev->getID()}: content is hidden" );
155 $this->diffto =
$params[
'diffto'];
158 $db = $this->
getDB();
161 $this->
addWhere(
'page_id = rev_page' );
163 $prop = array_flip(
$params[
'prop'] );
166 $this->fld_ids = isset( $prop[
'ids'] );
168 $this->fld_flags = isset( $prop[
'flags'] );
169 $this->fld_timestamp = isset( $prop[
'timestamp'] );
170 $this->fld_comment = isset( $prop[
'comment'] );
171 $this->fld_parsedcomment = isset( $prop[
'parsedcomment'] );
172 $this->fld_size = isset( $prop[
'size'] );
173 $this->fld_sha1 = isset( $prop[
'sha1'] );
174 $this->fld_contentmodel = isset( $prop[
'contentmodel'] );
175 $this->fld_userid = isset( $prop[
'userid'] );
176 $this->fld_user = isset( $prop[
'user'] );
179 if ( !empty(
$params[
'contentformat'] ) ) {
180 $this->contentFormat =
$params[
'contentformat'];
187 $limit = $this->
getMain()->canApiHighLimits() ? $botMax : $userMax;
191 if ( !is_null( $this->
token ) || $pageCount > 0 ) {
195 if ( isset( $prop[
'tags'] ) ) {
196 $this->fld_tags =
true;
199 array(
'tag_summary' =>
array(
'LEFT JOIN',
array(
'rev_id=ts_rev_id' ) ) )
204 if ( !is_null(
$params[
'tag'] ) ) {
207 array(
'change_tag' =>
array(
'INNER JOIN',
array(
'rev_id=ct_rev_id' ) ) )
212 if ( isset( $prop[
'content'] ) || !is_null( $this->difftotext ) ) {
216 foreach ( $pageSet->getGoodTitles()
as $title ) {
219 'The current user is not allowed to read ' .
$title->getPrefixedText(),
225 $this->
addWhere(
'rev_text_id=old_id' );
229 $this->fld_content = isset( $prop[
'content'] );
231 $this->expandTemplates =
$params[
'expandtemplates'];
232 $this->generateXML =
$params[
'generatexml'];
233 $this->parseContent =
$params[
'parse'];
234 if ( $this->parseContent ) {
236 if ( is_null(
$limit ) ) {
242 if ( isset(
$params[
'section'] ) ) {
250 if ( $this->fld_user ) {
259 if ( $enumRevMode ) {
261 if ( !is_null(
$params[
'startid'] ) && !is_null(
$params[
'start'] ) ) {
262 $this->
dieUsage(
'start and startid cannot be used together',
'badparams' );
265 if ( !is_null(
$params[
'endid'] ) && !is_null(
$params[
'end'] ) ) {
266 $this->
dieUsage(
'end and endid cannot be used together',
'badparams' );
269 if ( !is_null(
$params[
'user'] ) && !is_null(
$params[
'excludeuser'] ) ) {
270 $this->
dieUsage(
'user and excludeuser cannot be used together',
'badparams' );
278 if ( !is_null(
$params[
'continue'] ) ) {
289 if ( is_null(
$params[
'startid'] ) && is_null(
$params[
'endid'] ) ) {
302 if ( is_null(
$limit ) ) {
308 $ids = array_keys( $pageSet->getGoodTitles() );
311 if ( !is_null(
$params[
'user'] ) ) {
313 } elseif ( !is_null(
$params[
'excludeuser'] ) ) {
314 $this->
addWhere(
'rev_user_text != ' .
315 $db->addQuotes(
$params[
'excludeuser'] ) );
317 if ( !is_null(
$params[
'user'] ) || !is_null(
$params[
'excludeuser'] ) ) {
319 if ( !$this->
getUser()->isAllowed(
'deletedhistory' ) ) {
321 } elseif ( !$this->
getUser()->isAllowed(
'suppressrevision' ) ) {
327 $this->
addWhere( $db->bitAnd(
'rev_deleted', $bitmask ) .
" != $bitmask" );
330 } elseif ( $revCount > 0 ) {
331 $max = $this->
getMain()->canApiHighLimits() ? $botMax : $userMax;
332 $revs = $pageSet->getRevisionIDs();
333 if ( self::truncateArray( $revs, $max ) ) {
334 $this->
setWarning(
"Too many values supplied for parameter 'revids': the limit is $max" );
338 $this->
addWhereFld(
'rev_id', array_keys( $revs ) );
340 if ( !is_null(
$params[
'continue'] ) ) {
343 $this->
addOption(
'ORDER BY',
'rev_id' );
347 } elseif ( $pageCount > 0 ) {
348 $max = $this->
getMain()->canApiHighLimits() ? $botMax : $userMax;
349 $titles = $pageSet->getGoodTitles();
350 if ( self::truncateArray(
$titles, $max ) ) {
351 $this->
setWarning(
"Too many values supplied for parameter 'titles': the limit is $max" );
356 $this->
addWhere(
'page_id=rev_page' );
357 $this->
addWhere(
'page_latest=rev_id' );
364 if ( !is_null(
$params[
'continue'] ) ) {
365 $cont = explode(
'|',
$params[
'continue'] );
367 $pageid = intval( $cont[0] );
368 $revid = intval( $cont[1] );
370 "rev_page > $pageid OR " .
371 "(rev_page = $pageid AND " .
391 foreach (
$res as $row ) {
395 if ( !$enumRevMode ) {
402 $fit = $this->
addPageSubItem( $row->rev_page, $this->extractRowInfo( $row ),
'rev' );
404 if ( $enumRevMode ) {
406 } elseif ( $revCount > 0 ) {
410 '|' . intval( $row->rev_id ) );
419 $title = $revision->getTitle();
424 if ( $this->fld_ids ) {
425 $vals[
'revid'] = intval( $revision->getId() );
427 if ( !is_null( $revision->getParentId() ) ) {
428 $vals[
'parentid'] = intval( $revision->getParentId() );
432 if ( $this->fld_flags && $revision->isMinor() ) {
436 if ( $this->fld_user || $this->fld_userid ) {
438 $vals[
'userhidden'] =
'';
442 if ( $this->fld_user ) {
443 $vals[
'user'] = $revision->getRawUserText();
445 $userid = $revision->getRawUser();
450 if ( $this->fld_userid ) {
451 $vals[
'userid'] = $userid;
456 if ( $this->fld_timestamp ) {
460 if ( $this->fld_size ) {
461 if ( !is_null( $revision->getSize() ) ) {
462 $vals[
'size'] = intval( $revision->getSize() );
468 if ( $this->fld_sha1 ) {
470 $vals[
'sha1hidden'] =
'';
474 if ( $revision->getSha1() !=
'' ) {
475 $vals[
'sha1'] =
wfBaseConvert( $revision->getSha1(), 36, 16, 40 );
482 if ( $this->fld_contentmodel ) {
483 $vals[
'contentmodel'] = $revision->getContentModel();
486 if ( $this->fld_comment || $this->fld_parsedcomment ) {
488 $vals[
'commenthidden'] =
'';
492 $comment = $revision->getRawComment();
494 if ( $this->fld_comment ) {
498 if ( $this->fld_parsedcomment ) {
504 if ( $this->fld_tags ) {
505 if ( $row->ts_tags ) {
506 $tags = explode(
',', $row->ts_tags );
507 $this->
getResult()->setIndexedTagName( $tags,
'tag' );
508 $vals[
'tags'] = $tags;
510 $vals[
'tags'] =
array();
514 if ( !is_null( $this->
token ) ) {
518 if ( $val ===
false ) {
519 $this->
setWarning(
"Action '$t' is not allowed for the current user" );
521 $vals[
$t .
'token'] = $val;
528 if ( $this->fld_content || !is_null( $this->diffto ) || !is_null( $this->difftotext ) ) {
533 if ( $content && $this->
section !==
false ) {
534 $content = $content->getSection( $this->
section,
false );
537 "There is no section {$this->section} in r" . $revision->getId(),
543 $vals[
'texthidden'] =
'';
545 } elseif ( !$content ) {
546 $vals[
'textmissing'] =
'';
549 if ( $this->fld_content && $content ) {
552 if ( $this->generateXML ) {
554 $t = $content->getNativeData(); # note: don
't set $text
556 $wgParser->startExternalParse(
558 ParserOptions::newFromContext( $this->getContext() ),
561 $dom = $wgParser->preprocessToDom( $t );
562 if ( is_callable( array( $dom, 'saveXML
' ) ) ) {
563 $xml = $dom->saveXML();
565 $xml = $dom->__toString();
567 $vals['parsetree
'] = $xml;
569 $this->setWarning( "Conversion to XML is supported for wikitext only, " .
570 $title->getPrefixedDBkey() .
571 " uses content model " . $content->getModel() );
575 if ( $this->expandTemplates && !$this->parseContent ) {
576 #XXX: implement template expansion for all content types in ContentHandler?
577 if ( $content->getModel() === CONTENT_MODEL_WIKITEXT ) {
578 $text = $content->getNativeData();
580 $text = $wgParser->preprocess(
583 ParserOptions::newFromContext( $this->getContext() )
586 $this->setWarning( "Template expansion is supported for wikitext only, " .
587 $title->getPrefixedDBkey() .
588 " uses content model " . $content->getModel() );
593 if ( $this->parseContent ) {
594 $po = $content->getParserOutput(
597 ParserOptions::newFromContext( $this->getContext() )
599 $text = $po->getText();
602 if ( $text === null ) {
603 $format = $this->contentFormat ? $this->contentFormat : $content->getDefaultFormat();
604 $model = $content->getModel();
606 if ( !$content->isSupportedFormat( $format ) ) {
607 $name = $title->getPrefixedDBkey();
609 $this->dieUsage( "The requested format {$this->contentFormat} is not supported " .
610 "for content model $model used by $name", 'badformat
' );
613 $text = $content->serialize( $format );
615 // always include format and model.
616 // Format is needed to deserialize, model is needed to interpret.
617 $vals['contentformat
'] = $format;
618 $vals['contentmodel
'] = $model;
621 if ( $text !== false ) {
622 ApiResult::setContent( $vals, $text );
626 if ( $content && ( !is_null( $this->diffto ) || !is_null( $this->difftotext ) ) ) {
627 global $wgAPIMaxUncachedDiffs;
628 static $n = 0; // Number of uncached diffs we've had
630 if (
$n < $wgAPIMaxUncachedDiffs ) {
631 $vals[
'diff'] =
array();
634 $handler = $revision->getContentHandler();
636 if ( !is_null( $this->difftotext ) ) {
637 $model =
$title->getContentModel();
639 if ( $this->contentFormat
645 $this->
dieUsage(
"The requested format {$this->contentFormat} is not supported for " .
646 "content model $model used by $name",
'badformat' );
656 $engine = $handler->createDifferenceEngine(
$context );
657 $engine->setContent( $content, $difftocontent );
660 $vals[
'diff'][
'from'] = $engine->getOldid();
661 $vals[
'diff'][
'to'] = $engine->getNewid();
663 $difftext = $engine->getDiffBody();
665 if ( !$engine->wasCacheHit() ) {
669 $vals[
'diff'][
'notcached'] =
'';
674 $vals[
'suppressed'] =
'';
681 if ( isset(
$params[
'token'] ) ) {
687 if ( !is_null(
$params[
'prop'] ) && in_array(
'parsedcomment',
$params[
'prop'] ) ) {
689 return 'anon-public-user-private';
743 'excludeuser' =>
array(
747 'expandtemplates' =>
false,
748 'generatexml' =>
false,
757 'difftotext' =>
null,
758 'contentformat' =>
array(
770 'Which properties to get for each revision:',
771 ' ids - The ID of the revision',
772 ' flags - Revision flags (minor)',
773 ' timestamp - The timestamp of the revision',
774 ' user - User that made the revision',
775 ' userid - User id of revision creator',
776 ' size - Length (bytes) of the revision',
777 ' sha1 - SHA-1 (base 16) of the revision',
778 ' contentmodel - Content model id',
779 ' comment - Comment by the user for revision',
780 ' parsedcomment - Parsed comment by the user for the revision',
781 ' content - Text of the revision',
782 ' tags - Tags for the revision',
784 'limit' =>
'Limit how many revisions will be returned (enum)',
785 'startid' =>
'From which revision id to start enumeration (enum)',
786 'endid' =>
'Stop revision enumeration on this revid (enum)',
787 'start' =>
'From which revision timestamp to start enumeration (enum)',
788 'end' =>
'Enumerate up to this timestamp (enum)',
790 'user' =>
'Only include revisions made by user (enum)',
791 'excludeuser' =>
'Exclude revisions made by user (enum)',
792 'expandtemplates' =>
"Expand templates in revision content (requires {$p}prop=content)",
793 'generatexml' =>
"Generate XML parse tree for revision content (requires {$p}prop=content)",
794 'parse' =>
array(
"Parse revision content (requires {$p}prop=content).",
795 'For performance reasons if this option is used, rvlimit is enforced to 1.' ),
796 'section' =>
'Only retrieve the content of this section number',
797 'token' =>
'Which tokens to obtain for each revision',
798 'continue' =>
'When more results are available, use this to continue',
799 'diffto' =>
array(
'Revision ID to diff each revision to.',
800 'Use "prev", "next" and "cur" for the previous, next and current revision respectively' ),
801 'difftotext' =>
array(
802 'Text to diff each revision to. Only diffs a limited number of revisions.',
803 "Overrides {$p}diffto. If {$p}section is set, only that section will be",
804 'diffed against this text',
806 'tag' =>
'Only list revisions tagged with this tag',
807 'contentformat' =>
'Serialization format used for difftotext and expected for output of content',
815 'revid' =>
'integer',
825 'userhidden' =>
'boolean',
830 'userhidden' =>
'boolean',
831 'userid' =>
'integer',
834 'timestamp' =>
array(
835 'timestamp' =>
'timestamp'
844 'commenthidden' =>
'boolean',
850 'parsedcomment' =>
array(
851 'commenthidden' =>
'boolean',
852 'parsedcomment' =>
array(
862 'texthidden' =>
'boolean',
863 'textmissing' =>
'boolean',
865 'contentmodel' =>
array(
866 'contentmodel' =>
'string'
877 'Get revision information.',
878 'May be used in several ways:',
879 ' 1) Get data about a set of pages (last revision), by setting titles or pageids parameter.',
880 ' 2) Get revisions for one given page, by using titles/pageids with start/end/limit params.',
881 ' 3) Get data about a set of revisions by setting their IDs with revids parameter.',
882 'All parameters marked as (enum) may only be used with a single page (#2).'
887 return array_merge( parent::getPossibleErrors(),
array(
888 array(
'nosuchrevid',
'diffto' ),
891 'info' =>
'The revids= parameter may not be used with the list options '
892 .
'(limit, startid, endid, dirNewer, start, end).'
895 'code' =>
'multpages',
896 'info' =>
'titles, pageids or a generator was used to supply multiple pages, '
897 .
' but the limit, startid, endid, dirNewer, user, excludeuser, '
898 .
'start and end parameters may only be used on a single page.'
902 'info' =>
'rvdiffto must be set to a non-negative number, "prev", "next" or "cur"'
904 array(
'code' =>
'badparams',
'info' =>
'start and startid cannot be used together' ),
905 array(
'code' =>
'badparams',
'info' =>
'end and endid cannot be used together' ),
906 array(
'code' =>
'badparams',
'info' =>
'user and excludeuser cannot be used together' ),
907 array(
'code' =>
'nosuchsection',
'info' =>
'There is no section section in rID' ),
908 array(
'code' =>
'badformat',
'info' =>
'The requested serialization format can not be applied '
909 .
' to the page\'s content model' ),
915 'Get data with content for the last revision of titles "API" and "Main Page"',
916 ' api.php?action=query&prop=revisions&titles=API|Main%20Page&' .
917 'rvprop=timestamp|user|comment|content',
918 'Get last 5 revisions of the "Main Page"',
919 ' api.php?action=query&prop=revisions&titles=Main%20Page&rvlimit=5&' .
920 'rvprop=timestamp|user|comment',
921 'Get first 5 revisions of the "Main Page"',
922 ' api.php?action=query&prop=revisions&titles=Main%20Page&rvlimit=5&' .
923 'rvprop=timestamp|user|comment&rvdir=newer',
924 'Get first 5 revisions of the "Main Page" made after 2006-05-01',
925 ' api.php?action=query&prop=revisions&titles=Main%20Page&rvlimit=5&' .
926 'rvprop=timestamp|user|comment&rvdir=newer&rvstart=20060501000000',
927 'Get first 5 revisions of the "Main Page" that were not made made by anonymous user "127.0.0.1"',
928 ' api.php?action=query&prop=revisions&titles=Main%20Page&rvlimit=5&' .
929 'rvprop=timestamp|user|comment&rvexcludeuser=127.0.0.1',
930 'Get first 5 revisions of the "Main Page" that were made by the user "MediaWiki default"',
931 ' api.php?action=query&prop=revisions&titles=Main%20Page&rvlimit=5&' .
932 'rvprop=timestamp|user|comment&rvuser=MediaWiki%20default',
937 return 'https://www.mediawiki.org/wiki/API:Properties#revisions_.2F_rv';
static getForModelID( $modelId)
Returns the ContentHandler singleton for the given model ID.
addFields( $value)
Add a set of fields to select to the internal array.
getContext()
Get the RequestContext object.
static getAllContentFormats()
skin txt MediaWiki includes four core it has been set as the default in MediaWiki since the replacing Monobook it had been been the default skin since before being replaced by Vector largely rewritten in while keeping its appearance Several legacy skins were removed in the as the burden of supporting them became too heavy to bear Those in etc for skin dependent CSS etc for skin dependent JavaScript These can also be customised on a per user by etc This feature has led to a wide variety of user styles becoming that gallery is a good place to ending in php
static getRollbackToken( $pageid, $title, $rev)
static setContent(&$arr, $value, $subElemName=null)
Adds a content element to an array.
addTimestampWhereRange( $field, $dir, $start, $end, $sort=true)
Add a WHERE clause corresponding to a range, similar to addWhereRange, but converts $start and $end t...
dieUsageMsg( $error)
Output the error message related to a certain array.
wfTimestamp( $outputtype=TS_UNIX, $ts=0)
Get a timestamp string in one of various formats.
getResult()
Get the result object.
select( $method, $extraQuery=array())
Execute a SELECT query based on the values in the internal arrays.
as a message key or array as accepted by ApiBase::dieUsageMsg after processing request parameters Return false to let the request returning an error message or an< edit result="Failure"> tag if $resultArr was filled which will be used in the intoken parameter and in the and a callback function which should return the token
getDirectionDescription( $p='', $extraDirText='')
Gets the personalised direction parameter description.
__construct( $query, $moduleName)
getRequest()
Get the WebRequest object.
addOption( $name, $value=null)
Add an option such as LIMIT or USE INDEX.
static formatComment( $comment, $title=null, $local=false)
This function is called by all recent changes variants, by the page history, and by the user contribu...
const CONTENT_MODEL_WIKITEXT
getUser()
Get the User object.
getDescription()
Returns the description string for this module.
static selectTextFields()
Return the list of text fields that should be selected to read the revision text.
getResultProperties()
Returns possible properties in the result, grouped by the value of the prop parameter that shows them...
An IContextSource implementation which will inherit context from another source but allow individual ...
getParamDescription()
Returns an array of parameter descriptions.
linkcache txt The LinkCache class maintains a list of article titles and the information about whether or not the article exists in the database This is used to mark up links when displaying a page If the same link appears more than once on any page then it only has to be looked up once In most cases link lookups are done in batches with the LinkBatch class or the equivalent in so the link cache is mostly useful for short snippets of parsed and for links in the navigation areas of the skin The link cache was formerly used to track links used in a document for the purposes of updating the link tables This application is now deprecated To create a you can use the following $titles
This is a base class for all Query modules.
const TS_ISO_8601
ISO 8601 format with no timezone: 1986-02-09T20:00:00Z.
getExamples()
Returns usage examples for this module.
getDB()
Get the Query database connection (read-only)
wfRunHooks( $event, array $args=array(), $deprecatedVersion=null)
Call hook functions defined in $wgHooks.
addTables( $tables, $alias=null)
Add a set of tables to the internal array.
the array() calling protocol came about after MediaWiki 1.4rc1.
List of Api Query prop modules.
when a variable name is used in a it is silently declared as a new masking the global
static makeContent( $text, Title $title=null, $modelId=null, $format=null)
Convenience function for creating a Content object from a given textual representation.
getModulePrefix()
Get parameter prefix (usually two letters or an empty string).
addWhereRange( $field, $dir, $start, $end, $sort=true)
Add a WHERE clause corresponding to a range, and an ORDER BY clause to sort in the right direction.
static selectPageFields()
Return the list of page fields that should be selected from page table.
extractRequestParams( $parseLimit=true)
Using getAllowedParams(), this function makes an array of the values provided by the user,...
presenting them properly to the user as errors is done by the caller $title
Allows to change the fields on the form that will be generated $name
dieContinueUsageIf( $condition)
Die with the $prefix.
dieUsage( $description, $errorCode, $httpRespCode=0, $extradata=null)
Throw a UsageException, which will (if uncaught) call the main module's error handler and die with an...
static addTokenProperties(&$props, $tokenFunctions)
Add token properties to the array used by getResultProperties, based on a token functions mapping.
addJoinConds( $join_conds)
Add a set of JOIN conditions to the internal array.
getCacheMode( $params)
Get the cache mode for the data generated by this module.
addWhereFld( $field, $value)
Equivalent to addWhere(array($field => $value))
getPageSet()
Get the PageSet object to work on.
please add to it if you re going to add events to the MediaWiki code where normally authentication against an external auth plugin would be creating a account $user
presenting them properly to the user as errors is done by the caller return true use this to change the list i e etc $rev
setWarning( $warning)
Set warning section for this module.
wfBaseConvert( $input, $sourceBase, $destBase, $pad=1, $lowercase=true, $engine='auto')
Convert an arbitrarily-long digit string from one numeric base to another, optionally zero-padding to...
validateLimit( $paramName, &$value, $min, $max, $botMax=null, $enforceLimits=false)
Validate the value against the minimum and user/bot maximum limits.
This document is intended to provide useful advice for parties seeking to redistribute MediaWiki to end users It s targeted particularly at maintainers for Linux since it s been observed that distribution packages of MediaWiki often break We ve consistently had to recommend that users seeking support use official tarballs instead of their distribution s and this often solves whatever problem the user is having It would be nice if this could such as
static userJoinCond()
Return the value of a select() JOIN conds array for the user table.
getModuleName()
Get the name of the module being executed by this instance.
getMain()
Get the main module.
addWhere( $value)
Add a set of WHERE clauses to the internal array.
static selectUserFields()
Return the list of user fields that should be selected from user table.
setContinueEnumParameter( $paramName, $paramValue)
Set a query-continue value.
getAllowedParams()
Returns an array of allowed parameters (parameter name) => (default value) or (parameter name) => (ar...
static selectFields()
Return the list of revision fields that should be selected to create a new revision.
return true to allow those checks to and false if checking is done use this to change the tables headers temp or archived zone change it to an object instance and return false override the list derivative used the name of the old file when set the default code will be skipped add a value to it if you want to add a cookie that have to vary cache options can modify $query
userCanSeeRevDel()
Check whether the current user has permission to view revision-deleted fields.
addPageSubItem( $pageId, $item, $elemname=null)
Same as addPageSubItems(), but one element of $data at a time.
static dieDebug( $method, $message)
Internal code errors should be reported with this method.
A query action to enumerate revisions of a given page, or show top revisions of multiple pages.
execute()
Evaluates the parameters, performs the requested query, and sets up the result.