/** * @todo FIXME: this is a better rollback test than the one below, but it * keeps failing in jenkins for some reason. */ public function broken_testDoRollback() { $admin = new User(); $admin->setName("Admin"); $text = "one"; $page = $this->newPage("WikiPageTest_testDoRollback"); $page->doEditContent(ContentHandler::makeContent($text, $page->getTitle()), "section one", EDIT_NEW, false, $admin); $user1 = new User(); $user1->setName("127.0.1.11"); $text .= "\n\ntwo"; $page = new WikiPage($page->getTitle()); $page->doEditContent(ContentHandler::makeContent($text, $page->getTitle()), "adding section two", 0, false, $user1); $user2 = new User(); $user2->setName("127.0.2.13"); $text .= "\n\nthree"; $page = new WikiPage($page->getTitle()); $page->doEditContent(ContentHandler::makeContent($text, $page->getTitle()), "adding section three", 0, false, $user2); # we are having issues with doRollback spuriously failing. Apparently # the last revision somehow goes missing or not committed under some # circumstances. So, make sure the last revision has the right user name. $dbr = wfGetDB(DB_SLAVE); $this->assertEquals(3, Revision::countByPageId($dbr, $page->getId())); $page = new WikiPage($page->getTitle()); $rev3 = $page->getRevision(); $this->assertEquals('127.0.2.13', $rev3->getUserText()); $rev2 = $rev3->getPrevious(); $this->assertEquals('127.0.1.11', $rev2->getUserText()); $rev1 = $rev2->getPrevious(); $this->assertEquals('Admin', $rev1->getUserText()); # now, try the actual rollback $admin->addGroup("sysop"); #XXX: make the test user a sysop... $token = $admin->getEditToken(array($page->getTitle()->getPrefixedText(), $user2->getName()), null); $errors = $page->doRollback($user2->getName(), "testing revert", $token, false, $details, $admin); if ($errors) { $this->fail("Rollback failed:\n" . print_r($errors, true) . ";\n" . print_r($details, true)); } $page = new WikiPage($page->getTitle()); $this->assertEquals($rev2->getSha1(), $page->getRevision()->getSha1(), "rollback did not revert to the correct revision"); $this->assertEquals("one\n\ntwo", $page->getContent()->getNativeData()); }
/** * Get count of revisions per page...not very efficient * @param Database $db * @param Title $title */ static function countByTitle($db, $title) { $id = $title->getArticleId(); if ($id) { return Revision::countByPageId($db, $id); } return 0; }
private function getRevCount(ApiResult $result) { $res = $result->getData(); $db = $this->getDB(); if (isset($res['query']) && isset($res['query']['pages'])) { foreach ($this->getPageSet()->getGoodTitles() as $page_id => $oTitle) { if (isset($res['query']['pages'][$page_id])) { $revcount = Revision::countByPageId($db, $page_id); $result->addValue(array("query", "pages", $page_id), "revcount", intval($revcount)); } } } }