/** * @param Revision $revision * @param EditInfo $editInfo * * @throws RuntimeException * @returns array */ private function getEditParams(Revision $revision, EditInfo $editInfo = null) { if (!$revision->getPageIdentifier()->identifiesPage()) { throw new RuntimeException('$revision PageIdentifier does not identify a page'); } $params = []; $content = $revision->getContent(); $data = $content->getData(); if (!is_string($data)) { throw new RuntimeException('Dont know how to save content of this model.'); } $params['text'] = $content->getData(); $params['md5'] = md5($content->getData()); $timestamp = $revision->getTimestamp(); if (!is_null($timestamp)) { $params['basetimestamp'] = $timestamp; } if (!is_null($revision->getPageIdentifier()->getId())) { $params['pageid'] = $revision->getPageIdentifier()->getId(); } else { $params['title'] = $revision->getPageIdentifier()->getTitle()->getTitle(); } $params['token'] = $this->api->getToken(); if ($this->api->isLoggedin()) { $params['assert'] = 'user'; } $this->addEditInfoParams($editInfo, $params); return $params; }
/** * @dataProvider provideValidConstruction */ public function testValidConstruction($content, $pageIdentifier, $id, $editInfo, $user, $timestamp) { $rev = new Revision($content, $pageIdentifier, $id, $editInfo, $user, $timestamp); $this->assertEquals($content, $rev->getContent()); if (!is_null($pageIdentifier)) { $this->assertEquals($pageIdentifier, $rev->getPageIdentifier()); } else { $this->assertInstanceOf('\\Mediawiki\\DataModel\\PageIdentifier', $rev->getPageIdentifier()); } $this->assertEquals($id, $rev->getId()); if (!is_null($editInfo)) { $this->assertEquals($editInfo, $rev->getEditInfo()); } else { $this->assertInstanceOf('\\Mediawiki\\DataModel\\EditInfo', $rev->getEditInfo()); } $this->assertEquals($user, $rev->getUser()); $this->assertEquals($timestamp, $rev->getTimestamp()); }
/** * @param Revision $revision * * @returns string */ private function getTokenForRevision(Revision $revision) { $result = $this->api->postRequest(new SimpleRequest('query', array('list' => 'recentchanges', 'rcstart' => $revision->getTimestamp(), 'rcend' => $revision->getTimestamp(), 'rctoken' => 'patrol'))); $result = array_shift($result['query']['recentchanges']); return $result['patroltoken']; }