*/
function namespaces() {
$spaces = "<namespaces>\n";
+ $nsInfo = MediaWikiServices::getInstance()->getNamespaceInfo();
foreach (
MediaWikiServices::getInstance()->getContentLanguage()->getFormattedNamespaces()
as $ns => $title
Xml::element( 'namespace',
[
'key' => $ns,
- 'case' => MWNamespace::isCapitalized( $ns ) ? 'first-letter' : 'case-sensitive',
+ 'case' => $nsInfo->isCapitalized( $ns )
+ ? 'first-letter' : 'case-sensitive',
], $title ) . "\n";
}
$spaces .= " </namespaces>";
*/
public function openPage( $row ) {
$out = " <page>\n";
- $this->currentTitle = Title::makeTitle( $row->page_namespace, $row->page_title );
+ $this->currentTitle = Title::newFromRow( $row );
$canonicalTitle = self::canonicalTitle( $this->currentTitle );
$out .= ' ' . Xml::elementClean( 'title', [], $canonicalTitle ) . "\n";
$out .= ' ' . Xml::element( 'ns', [], strval( $row->page_namespace ) ) . "\n";
* data filled in from the given database row.
*
* @param object $row
+ * @param null|object[] $slotRows
+ *
* @return string
+ * @throws FatalError
+ * @throws MWException
* @private
*/
- function writeRevision( $row ) {
+ function writeRevision( $row, $slotRows = null ) {
+ $rev = $this->getRevisionStore()->newRevisionFromRowAndSlots(
+ $row,
+ $slotRows,
+ 0,
+ $this->currentTitle
+ );
+
$out = " <revision>\n";
$out .= " " . Xml::element( 'id', null, strval( $row->rev_id ) ) . "\n";
if ( isset( $row->rev_parent_id ) && $row->rev_parent_id ) {
if ( isset( $row->rev_deleted ) && ( $row->rev_deleted & Revision::DELETED_USER ) ) {
$out .= " " . Xml::element( 'contributor', [ 'deleted' => 'deleted' ] ) . "\n";
} else {
- $out .= $this->writeContributor( $row->rev_user, $row->rev_user_text );
+ // empty values get written out as uid 0, see T224221
+ $out .= $this->writeContributor( $row->rev_user ?: 0, $row->rev_user_text );
}
if ( isset( $row->rev_minor_edit ) && $row->rev_minor_edit ) {
strval( $text ) ) . "\n";
} elseif ( isset( $row->_load_content ) ) {
// TODO: make this fully MCR aware, see T174031
- $rev = $this->getRevisionStore()->newRevisionFromRow( $row, 0, $this->currentTitle );
$slot = $rev->getSlot( 'main' );
try {
$content = $slot->getContent();
} else {
// Backwards-compatible stub output for MCR aware schema
// TODO: MCR: emit content addresses instead of text ids, see T174031, T199121
- $rev = $this->getRevisionStore()->newRevisionFromRow( $row, 0, $this->currentTitle );
$slot = $rev->getSlot( 'main' );
// Note that this is currently the ONLY reason we have a BlobStore here at all.
*/
function writeUploads( $row, $dumpContents = false ) {
if ( $row->page_namespace == NS_FILE ) {
- $img = wfLocalFile( $row->page_title );
+ $img = MediaWikiServices::getInstance()->getRepoGroup()->getLocalRepo()
+ ->newFile( $row->page_title );
if ( $img && $img->exists() ) {
$out = '';
foreach ( array_reverse( $img->getHistory() ) as $ver ) {