/** * */ function wfSpecialExport($page = '') { global $wgOut, $wgRequest, $wgExportAllowListContributors; global $wgExportAllowHistory, $wgExportMaxHistory; $curonly = true; if ($wgRequest->getVal('action') == 'submit') { $page = $wgRequest->getText('pages'); $curonly = $wgRequest->getCheck('curonly'); } if ($wgRequest->getCheck('history')) { $curonly = false; } if (!$wgExportAllowHistory) { // Override $curonly = true; } $list_authors = $wgRequest->getCheck('listauthors'); if (!$curonly || !$wgExportAllowListContributors) { $list_authors = false; } if ($page != '') { $wgOut->disable(); // Cancel output buffering and gzipping if set // This should provide safer streaming for pages with history while ($status = ob_get_status()) { ob_end_clean(); if ($status['name'] == 'ob_gzhandler') { header('Content-Encoding:'); } } header("Content-type: application/xml; charset=utf-8"); $pages = explode("\n", $page); $db =& wfGetDB(DB_SLAVE); $history = $curonly ? MW_EXPORT_CURRENT : MW_EXPORT_FULL; $exporter = new WikiExporter($db, $history); $exporter->list_authors = $list_authors; $exporter->openStream(); foreach ($pages as $page) { if ($wgExportMaxHistory && !$curonly) { $title = Title::newFromText($page); if ($title) { $count = Revision::countByTitle($db, $title); if ($count > $wgExportMaxHistory) { wfDebug(__FUNCTION__ . ": Skipped {$page}, {$count} revisions too big\n"); continue; } } } $exporter->pageByName($page); } $exporter->closeStream(); return; } $wgOut->addWikiText(wfMsg("exporttext")); $titleObj = Title::makeTitle(NS_SPECIAL, "Export"); $form = wfOpenElement('form', array('method' => 'post', 'action' => $titleObj->getLocalUrl())); $form .= wfOpenElement('textarea', array('name' => 'pages', 'cols' => 40, 'rows' => 10)) . '</textarea><br />'; if ($wgExportAllowHistory) { $form .= wfCheck('curonly', true, array('value' => 'true', 'id' => 'curonly')); $form .= wfLabel(wfMsg('exportcuronly'), 'curonly') . '<br />'; } else { $wgOut->addWikiText(wfMsg('exportnohistory')); } $form .= wfHidden('action', 'submit'); $form .= wfSubmitButton(wfMsg('export-submit')) . '</form>'; $wgOut->addHtml($form); }
/** * */ function wfSpecialExport($page = '') { global $wgOut, $wgRequest, $wgExportAllowListContributors; global $wgExportAllowHistory, $wgExportMaxHistory; $curonly = true; $fullHistory = array('dir' => 'asc', 'offset' => false, 'limit' => $wgExportMaxHistory); if ($wgRequest->wasPosted()) { $page = $wgRequest->getText('pages'); $curonly = $wgRequest->getCheck('curonly'); $rawOffset = $wgRequest->getVal('offset'); if ($rawOffset) { $offset = wfTimestamp(TS_MW, $rawOffset); } else { $offset = null; } $limit = $wgRequest->getInt('limit'); $dir = $wgRequest->getVal('dir'); $history = array('dir' => 'asc', 'offset' => false, 'limit' => $wgExportMaxHistory); $historyCheck = $wgRequest->getCheck('history'); if ($curonly) { $history = WikiExporter::CURRENT; } elseif (!$historyCheck) { if ($limit > 0 && $limit < $wgExportMaxHistory) { $history['limit'] = $limit; } if (!is_null($offset)) { $history['offset'] = $offset; } if (strtolower($dir) == 'desc') { $history['dir'] = 'desc'; } } } else { // Default to current-only for GET requests $page = $wgRequest->getText('pages', $page); $historyCheck = $wgRequest->getCheck('history'); if ($historyCheck) { $history = WikiExporter::FULL; } else { $history = WikiExporter::CURRENT; } } if (!$wgExportAllowHistory) { // Override $history = WikiExporter::CURRENT; } $list_authors = $wgRequest->getCheck('listauthors'); if (!$curonly || !$wgExportAllowListContributors) { $list_authors = false; } if ($page != '') { $wgOut->disable(); // Cancel output buffering and gzipping if set // This should provide safer streaming for pages with history while ($status = ob_get_status()) { ob_end_clean(); if ($status['name'] == 'ob_gzhandler') { header('Content-Encoding:'); } } header("Content-type: application/xml; charset=utf-8"); $pages = explode("\n", $page); $db =& wfGetDB(DB_SLAVE); $exporter = new WikiExporter($db, $history); $exporter->list_authors = $list_authors; $exporter->openStream(); foreach ($pages as $page) { /* if( $wgExportMaxHistory && !$curonly ) { $title = Title::newFromText( $page ); if( $title ) { $count = Revision::countByTitle( $db, $title ); if( $count > $wgExportMaxHistory ) { wfDebug( __FUNCTION__ . ": Skipped $page, $count revisions too big\n" ); continue; } } }*/ $exporter->pageByName($page); } $exporter->closeStream(); return; } $wgOut->addWikiText(wfMsg("exporttext")); $titleObj = Title::makeTitle(NS_SPECIAL, "Export"); $form = wfOpenElement('form', array('method' => 'post', 'action' => $titleObj->getLocalUrl())); $form .= wfOpenElement('textarea', array('name' => 'pages', 'cols' => 40, 'rows' => 10)) . '</textarea><br />'; if ($wgExportAllowHistory) { $form .= wfCheck('curonly', true, array('value' => 'true', 'id' => 'curonly')); $form .= wfLabel(wfMsg('exportcuronly'), 'curonly') . '<br />'; } else { $wgOut->addWikiText(wfMsg('exportnohistory')); } $form .= wfHidden('action', 'submit'); $form .= wfSubmitButton(wfMsg('export-submit')) . '</form>'; $wgOut->addHtml($form); }