/**
  * @param array $pageInfo
  * @param array $revisionInfo
  * @return bool|mixed
  */
 private function processRevision($pageInfo, $revisionInfo)
 {
     $revision = new WikiRevision($this->config);
     if (isset($revisionInfo['id'])) {
         $revision->setID($revisionInfo['id']);
     }
     if (isset($revisionInfo['model'])) {
         $revision->setModel($revisionInfo['model']);
     }
     if (isset($revisionInfo['format'])) {
         $revision->setFormat($revisionInfo['format']);
     }
     $revision->setTitle($pageInfo['_title']);
     if (isset($revisionInfo['text'])) {
         $handler = $revision->getContentHandler();
         $text = $handler->importTransform($revisionInfo['text'], $revision->getFormat());
         $revision->setText($text);
     }
     if (isset($revisionInfo['timestamp'])) {
         $revision->setTimestamp($revisionInfo['timestamp']);
     } else {
         $revision->setTimestamp(wfTimestampNow());
     }
     if (isset($revisionInfo['comment'])) {
         $revision->setComment($revisionInfo['comment']);
     }
     if (isset($revisionInfo['minor'])) {
         $revision->setMinor(true);
     }
     if (isset($revisionInfo['contributor']['ip'])) {
         $revision->setUserIP($revisionInfo['contributor']['ip']);
     }
     if (isset($revisionInfo['contributor']['username'])) {
         $revision->setUserName($revisionInfo['contributor']['username']);
     }
     $revision->setNoUpdates($this->mNoUpdates);
     return $this->revisionCallback($revision);
 }
Beispiel #2
0
 /**
  * @param array $pageInfo
  * @param array $revisionInfo
  * @return bool|mixed
  */
 private function processRevision($pageInfo, $revisionInfo)
 {
     global $wgMaxArticleSize;
     // Make sure revisions won't violate $wgMaxArticleSize, which could lead to
     // database errors and instability. Testing for revisions with only listed
     // content models, as other content models might use serialization formats
     // which aren't checked against $wgMaxArticleSize.
     if ((!isset($revisionInfo['model']) || in_array($revisionInfo['model'], array('wikitext', 'css', 'json', 'javascript', 'text', ''))) && (int) (strlen($revisionInfo['text']) / 1024) > $wgMaxArticleSize) {
         throw new MWException('The text of ' . (isset($revisionInfo['id']) ? "the revision with ID {$revisionInfo['id']}" : 'a revision') . " exceeds the maximum allowable size ({$wgMaxArticleSize} KB)");
     }
     $revision = new WikiRevision($this->config);
     if (isset($revisionInfo['id'])) {
         $revision->setID($revisionInfo['id']);
     }
     if (isset($revisionInfo['model'])) {
         $revision->setModel($revisionInfo['model']);
     }
     if (isset($revisionInfo['format'])) {
         $revision->setFormat($revisionInfo['format']);
     }
     $revision->setTitle($pageInfo['_title']);
     if (isset($revisionInfo['text'])) {
         $handler = $revision->getContentHandler();
         $text = $handler->importTransform($revisionInfo['text'], $revision->getFormat());
         $revision->setText($text);
     }
     if (isset($revisionInfo['timestamp'])) {
         $revision->setTimestamp($revisionInfo['timestamp']);
     } else {
         $revision->setTimestamp(wfTimestampNow());
     }
     if (isset($revisionInfo['comment'])) {
         $revision->setComment($revisionInfo['comment']);
     }
     if (isset($revisionInfo['minor'])) {
         $revision->setMinor(true);
     }
     if (isset($revisionInfo['contributor']['ip'])) {
         $revision->setUserIP($revisionInfo['contributor']['ip']);
     } elseif (isset($revisionInfo['contributor']['username'])) {
         $revision->setUserName($revisionInfo['contributor']['username']);
     } else {
         $revision->setUserName('Unknown user');
     }
     $revision->setNoUpdates($this->mNoUpdates);
     return $this->revisionCallback($revision);
 }