* @subpackage SpecialPage
*/
class WikiExporter {
-
- var $list_authors = false ; # Return distinct author list (when not returning full history)
- var $author_list = "" ;
-
/**
* If using MW_EXPORT_STREAM to stream a large amount of data,
* provide a database connection which is not managed by
// -------------------- private implementation below --------------------
- # Generates the distinct list of authors of an article
- # Not called by default (depends on $this->list_authors)
- # Can be set by Special:Export when not exporting whole history
- function do_list_authors ( $page , $revision , $cond ) {
- $fname = "do_list_authors" ;
- wfProfileIn( $fname );
- $this->author_list = "<contributors>";
- $sql = "SELECT DISTINCT rev_user_text,rev_user FROM {$page},{$revision} WHERE page_id=rev_page AND " . $cond ;
- $result = $this->db->query( $sql, $fname );
- $resultset = $this->db->resultObject( $result );
- while( $row = $resultset->fetchObject() ) {
- $this->author_list .= "<contributor>" .
- "<username>" .
- htmlentities( $row->rev_user_text ) .
- "</username>" .
- "<id>" .
- $row->rev_user .
- "</id>" .
- "</contributor>";
- }
- wfProfileOut( $fname );
- $this->author_list .= "</contributors>";
- }
-
function dumpFrom( $cond = '' ) {
$fname = 'WikiExporter::dumpFrom';
wfProfileIn( $fname );
$page = $this->db->tableName( 'page' );
$revision = $this->db->tableName( 'revision' );
$text = $this->db->tableName( 'text' );
-
+
if( $this->history == MW_EXPORT_FULL ) {
$join = 'page_id=rev_page';
} elseif( $this->history == MW_EXPORT_CURRENT ) {
- if ( $this->list_authors && $cond != '' ) { // List authors, if so desired
- $this->do_list_authors ( $page , $revision , $cond );
- }
$join = 'page_id=rev_page AND page_latest=rev_id';
} else {
wfProfileOut( $fname );
$result = $this->db->query( $sql, $fname );
$wrapper = $this->db->resultObject( $result );
$this->outputStream( $wrapper );
-
- if ( $this->list_authors ) {
- $this->outputStream( $wrapper );
- }
if( $this->buffer == MW_EXPORT_STREAM ) {
$this->db->bufferResults( $prev );
$this->sink->writeRevision( $row, $output );
}
if( isset( $last ) ) {
- $output = $this->author_list . $this->writer->closePage();
+ $output = $this->writer->closePage();
$this->sink->writeClosePage( $output );
}
$resultset->free();
# Pre-check the 'current version only' box in the UI
$curonly = true;
}
-
- $list_authors = $wgRequest->getCheck( 'listauthors' );
- if ( !$curonly ) $list_authors = false ;
if( $page != '' ) {
$wgOut->disable();
$db =& wfGetDB( DB_SLAVE );
$history = $curonly ? MW_EXPORT_CURRENT : MW_EXPORT_FULL;
$exporter = new WikiExporter( $db, $history );
- $exporter->list_authors = $list_authors ;
$exporter->openStream();
$exporter->pagesByName( $pages );
$exporter->closeStream();