/**
  * Dumps a <revision> section on the output stream, with
  * data filled in from the given database row.
  *
  * @param object $row
  * @access private
  */
 function dumpRev($row)
 {
     $fname = 'WikiExporter::dumpRev';
     wfProfileIn($fname);
     print "    <revision>\n";
     print "      " . wfElement('id', null, $row->rev_id) . "\n";
     $ts = wfTimestamp2ISO8601($row->rev_timestamp);
     print "      " . wfElement('timestamp', null, $ts) . "\n";
     print "      <contributor>";
     if ($row->rev_user) {
         print wfElementClean('username', null, $row->rev_user_text);
         print wfElement('id', null, $row->rev_user);
     } else {
         print wfElementClean('ip', null, $row->rev_user_text);
     }
     print "</contributor>\n";
     if ($row->rev_minor_edit) {
         print "      <minor/>\n";
     }
     if ($row->rev_comment != '') {
         print "      " . wfElementClean('comment', null, $row->rev_comment) . "\n";
     }
     $text = Revision::getRevisionText($row);
     print "      " . wfElementClean('text', array('xml:space' => 'preserve'), $text) . "\n";
     print "    </revision>\n";
     wfProfileOut($fname);
     if (isset($this->revCallback)) {
         call_user_func($this->revCallback, $row);
     }
 }
/** */
function dumpReplayEntry($row)
{
    $title = Title::MakeTitle($row->rc_namespace, $row->rc_title);
    switch ($row->rc_type) {
        case RC_EDIT:
        case RC_NEW:
            # Edit
            $dbr =& wfGetDB(DB_MASTER);
            $out = "  <edit>\n";
            $out .= "    <title>" . xmlsafe($title->getPrefixedText()) . "</title>\n";
            # Get previous edit timestamp
            if ($row->rc_last_oldid) {
                $s = $dbr->selectRow('old', array('old_timestamp'), array('old_id' => $row->rc_last_oldid));
                $out .= "    <lastedit>" . wfTimestamp2ISO8601($s->old_timestamp) . "</lastedit>\n";
            } else {
                $out .= "    <newpage/>\n";
            }
            if ($row->rc_this_oldid) {
                $s = $dbr->selectRow('old', array('old_id as id', 'old_timestamp as timestamp', 'old_user as user', 'old_user_text as user_text', 'old_comment as comment', 'old_text as text', 'old_flags as flags'), array('old_id' => $row->rc_this_oldid));
                $out .= revision2xml($s, true, false);
            } else {
                $s = $dbr->selectRow('cur', array('cur_id as id', 'cur_timestamp as timestamp', 'cur_user as user', 'cur_user_text as user_text', 'cur_restrictions as restrictions', 'cur_comment as comment', 'cur_text as text'), array('cur_id' => $row->rc_cur_id));
                $out .= revision2xml($s, true, true);
            }
            $out .= "  </edit>\n";
            break;
        case RC_LOG:
            $dbr =& wfGetDB(DB_MASTER);
            $s = $dbr->selectRow('logging', array('log_type', 'log_action', 'log_timestamp', 'log_user', 'log_namespace', 'log_title', 'log_comment'), array('log_timestamp' => $row->rc_timestamp, 'log_user' => $row->rc_user));
            $ts = wfTimestamp2ISO8601($row->rc_timestamp);
            $target = Title::MakeTitle($s->log_namespace, $s->log_title);
            $out = "  <log>\n";
            $out .= "    <type>" . xmlsafe($s->log_type) . "</type>\n";
            $out .= "    <action>" . xmlsafe($s->log_action) . "</action>\n";
            $out .= "    <timestamp>" . $ts . "</timestamp>\n";
            $out .= "    <contributor><username>" . xmlsafe($row->rc_user_text) . "</username></contributor>\n";
            $out .= "    <target>" . xmlsafe($target->getPrefixedText()) . "</target>\n";
            $out .= "    <comment>" . xmlsafe($s->log_comment) . "</comment>\n";
            $out .= "  </log>\n";
            break;
        case RC_MOVE:
        case RC_MOVE_OVER_REDIRECT:
            $target = Title::MakeTitle($row->rc_moved_to_ns, $row->rc_moved_to_title);
            $out = "  <move>\n";
            $out .= "    <title>" . xmlsafe($title->getPrefixedText()) . "</title>\n";
            $out .= "    <target>" . xmlsafe($target->getPrefixedText()) . "</target>\n";
            if ($row->rc_type == RC_MOVE_OVER_REDIRECT) {
                $out .= "    <override/>\n";
            }
            $ts = wfTimestamp2ISO8601($row->rc_timestamp);
            $out .= "    <id>{$row->rc_cur_id}</id>\n";
            $out .= "    <timestamp>{$ts}</timestamp>\n";
            if ($row->rc_user_text) {
                $u = "<username>" . xmlsafe($row->rc_user_text) . "</username>";
                $u .= "<id>{$row->rc_user}</id>";
            } else {
                $u = "<ip>" . xmlsafe($row->rc_user_text) . "</ip>";
            }
            $out .= "    <contributor>{$u}</contributor>\n";
            $out .= "  </move>\n";
    }
    return $out;
}