X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiComparePages.php;h=93c35d3d236886bd1b3b5252b4b8934782ce28ab;hb=36892fe2a2ded77fba98a6619c63348a1740a9ee;hp=eb67babf2ad79fb876568e0b3b78970ccd69dcbb;hpb=fbb86f07d222ba6c31386472c5b792348b1c89e2;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiComparePages.php b/includes/api/ApiComparePages.php index eb67babf2a..93c35d3d23 100644 --- a/includes/api/ApiComparePages.php +++ b/includes/api/ApiComparePages.php @@ -94,6 +94,26 @@ class ApiComparePages extends ApiBase { $this->dieWithError( 'apierror-baddiff' ); } + // Extract sections, if told to + if ( isset( $params['fromsection'] ) ) { + $fromContent = $fromContent->getSection( $params['fromsection'] ); + if ( !$fromContent ) { + $this->dieWithError( + [ 'apierror-compare-nosuchfromsection', wfEscapeWikiText( $params['fromsection'] ) ], + 'nosuchfromsection' + ); + } + } + if ( isset( $params['tosection'] ) ) { + $toContent = $toContent->getSection( $params['tosection'] ); + if ( !$toContent ) { + $this->dieWithError( + [ 'apierror-compare-nosuchtosection', wfEscapeWikiText( $params['tosection'] ) ], + 'nosuchtosection' + ); + } + } + // Get the diff $context = new DerivativeContext( $this->getContext() ); if ( $relRev && $relRev->getTitle() ) { @@ -147,7 +167,10 @@ class ApiComparePages extends ApiBase { ApiResult::setContentValue( $vals, 'body', $difftext ); } - $this->getResult()->addValue( null, $this->getModuleName(), $vals ); + // Diffs can be really big and there's little point in having + // ApiResult truncate it to an empty response since the diff is the + // whole reason this module exists. So pass NO_SIZE_CHECK here. + $this->getResult()->addValue( null, $this->getModuleName(), $vals, ApiResult::NO_SIZE_CHECK ); } /** @@ -374,7 +397,7 @@ class ApiComparePages extends ApiBase { if ( $rev ) { $title = $rev->getTitle(); if ( isset( $this->props['ids'] ) ) { - $vals["{$prefix}id"] = $title->getArticleId(); + $vals["{$prefix}id"] = $title->getArticleID(); $vals["{$prefix}revid"] = $rev->getId(); } if ( isset( $this->props['title'] ) ) { @@ -444,6 +467,7 @@ class ApiComparePages extends ApiBase { 'text' => [ ApiBase::PARAM_TYPE => 'text' ], + 'section' => null, 'pst' => false, 'contentformat' => [ ApiBase::PARAM_TYPE => ContentHandler::getAllContentFormats(),