revision identifiers. See also bug 4220.
Fix type for <ns> from "positiveInteger" to "nonNegativeInteger" to allow 0
Moves <logitem> to its right location.
+ Add parentid to revision.
The canonical URL to the schema document is:
http://www.mediawiki.org/xml/export-0.7.xsd
<complexType name="RevisionType">
<sequence>
<element name="id" type="positiveInteger" />
+ <element name="parentid" type="positiveInteger" minOccurs="0" />
<element name="timestamp" type="dateTime" />
<element name="contributor" type="mw:ContributorType" />
<element name="minor" minOccurs="0" maxOccurs="1" />
<!-- Unique revision ID number (rev_id) in the source database. -->
<!-- This number uniquely identifies the revision on that wiki. -->
<id>100</id>
+ <!-- revision id of the parent revision -->
+ <parentid>99</parentid>
<timestamp>2001-01-15T13:15:00Z</timestamp>
<contributor>
<username>Foobar</username>
$out = " <revision>\n";
$out .= " " . Xml::element( 'id', null, strval( $row->rev_id ) ) . "\n";
+ if( $row->rev_parent_id ) {
+ $out .= " " . Xml::element( 'parentid', null, strval( $row->rev_parent_id ) ) . "\n";
+ }
$out .= $this->writeTimestamp( $row->rev_timestamp );
* @param $text_sha1 string: the base36 SHA-1 of the revision's text
* @param $text string|false: (optional) The revision's string, or false to check for a
* revision stub
+ * @param $parentid int|false: (optional) id of the parent revision
*/
- protected function assertRevision( $id, $summary, $text_id, $text_bytes, $text_sha1, $text = false ) {
+ protected function assertRevision( $id, $summary, $text_id, $text_bytes, $text_sha1, $text = false, $parentid = false ) {
$this->assertNodeStart( "revision" );
$this->skipWhitespace();
$this->assertTextNode( "id", $id );
+ if( $parentid ) {
+ $this->assertTextNode( "parentid", $parentid );
+ }
$this->assertTextNode( "timestamp", false );
$this->assertNodeStart( "contributor" );
<id>2</id>
<revision>
<id>2</id>
+ <parentid>5</parentid>
<timestamp>2012-04-01T16:46:05Z</timestamp>
<contributor>
<ip>127.0.0.1</ip>
$this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
$this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
$this->textId2_1, false, "jprywrymfhysqllua29tj3sc7z39dl2",
- "BackupDumperTestP2Text1" );
+ "BackupDumperTestP2Text1", $this->revId2_2 );
$this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
$this->textId2_2, false, "b7vj5ks32po5m1z1t1br4o7scdwwy95",
- "BackupDumperTestP2Text2" );
+ "BackupDumperTestP2Text2", $this->revId2_3 );
$this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
$this->textId2_3, false, "jfunqmh1ssfb8rs43r19w98k28gg56r",
- "BackupDumperTestP2Text3" );
+ "BackupDumperTestP2Text3", $this->revId2_4 );
$this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
$this->textId2_4, false, "6o1ciaxa6pybnqprmungwofc4lv00wv",
"BackupDumperTestP2Text4 some additional Text" );
$this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
$this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
$this->textId2_1, false, "jprywrymfhysqllua29tj3sc7z39dl2",
- "BackupDumperTestP2Text1" );
+ "BackupDumperTestP2Text1", $this->revId2_2 );
$this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
$this->textId2_2, false, "b7vj5ks32po5m1z1t1br4o7scdwwy95",
- "BackupDumperTestP2Text2" );
+ "BackupDumperTestP2Text2", $this->revId2_3 );
// Prefetch kicks in. This is still the SHA-1 of the original text,
// But the actual text (with different SHA-1) comes from prefetch.
$this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
$this->textId2_3, false, "jfunqmh1ssfb8rs43r19w98k28gg56r",
- "Prefetch_________2Text3" );
+ "Prefetch_________2Text3", $this->revId2_4 );
$this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
$this->textId2_4, false, "6o1ciaxa6pybnqprmungwofc4lv00wv",
"BackupDumperTestP2Text4 some additional Text" );
"BackupDumperTestP2" );
$this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
$this->textId2_1, false, "jprywrymfhysqllua29tj3sc7z39dl2",
- "BackupDumperTestP2Text1" );
+ "BackupDumperTestP2Text1", $this->revId2_2 );
$this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
$this->textId2_2, false, "b7vj5ks32po5m1z1t1br4o7scdwwy95",
- "BackupDumperTestP2Text2" );
+ "BackupDumperTestP2Text2", $this->revId2_3 );
$this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
$this->textId2_3, false, "jfunqmh1ssfb8rs43r19w98k28gg56r",
- "BackupDumperTestP2Text3" );
+ "BackupDumperTestP2Text3", $this->revId2_4 );
$this->assertRevision( $this->revId2_4,
"BackupDumperTestP2Summary4 extra",
$this->textId2_4, false, "6o1ciaxa6pybnqprmungwofc4lv00wv",
<id>' . ( $this->pageId2 + $i * 4 ) . '</id>
<revision>
<id>' . $this->revId2_1 . '</id>
+ <parentid>' . $this->revId2_2 . '</parentid>
<timestamp>2012-04-01T16:46:05Z</timestamp>
<contributor>
<ip>127.0.0.1</ip>
</revision>
<revision>
<id>' . $this->revId2_2 . '</id>
+ <parentid>' . $this->revId2_3 . '</parentid>
<timestamp>2012-04-01T16:46:05Z</timestamp>
<contributor>
<ip>127.0.0.1</ip>
</revision>
<revision>
<id>' . $this->revId2_3 . '</id>
+ <parentid>' . $this->revId2_4 . '</parentid>
<timestamp>2012-04-01T16:46:05Z</timestamp>
<contributor>
<ip>127.0.0.1</ip>
"BackupDumperTestP2Text1" );
$this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
$this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95",
- "BackupDumperTestP2Text2" );
+ "BackupDumperTestP2Text2", $this->revId2_1 );
$this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
$this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r",
- "BackupDumperTestP2Text3" );
+ "BackupDumperTestP2Text3", $this->revId2_2 );
$this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
$this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv",
- "BackupDumperTestP2Text4 some additional Text" );
+ "BackupDumperTestP2Text4 some additional Text", $this->revId2_3 );
$this->assertPageEnd();
// Page 3
$this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
$this->textId2_1, 23, "jprywrymfhysqllua29tj3sc7z39dl2" );
$this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
- $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95" );
+ $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95", false, $this->revId2_1 );
$this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
- $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r" );
+ $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r", false, $this->revId2_2 );
$this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
- $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+ $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
$this->assertPageEnd();
// Page 3
// Page 2
$this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
$this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
- $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+ $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
$this->assertPageEnd();
// Page 3
// Page 2
$this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
$this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
- $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+ $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
$this->assertPageEnd();
// Page 3
$this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
$this->textId2_1, 23, "jprywrymfhysqllua29tj3sc7z39dl2" );
$this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
- $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95" );
+ $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95", false, $this->revId2_1 );
$this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
- $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r" );
+ $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r", false, $this->revId2_2 );
$this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
- $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+ $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
$this->assertPageEnd();
// Page 3
// Page 2
$this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
$this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
- $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+ $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
$this->assertPageEnd();
// Page 3
// Page 2
$this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
$this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
- $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+ $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
$this->assertPageEnd();
// Page 3