/**
  * @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());
 }
示例#2
0
 /**
  * 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));
             }
         }
     }
 }