From 2f1a5977a2877eb2889c0369cbc5468e32f44a4c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Asier=20Lostal=C3=A9?= Date: Wed, 4 Apr 2012 16:39:37 +0200 Subject: [PATCH] generateSitemap can now optionally skip redirects Slightly enhanced on commit. Patchset2: - get ride of unneeded arguments passed to addOption() - rename $redirects to $skippedRedirects. Easier to search. - easier to read conditional test of page_is_redirect Change-Id: I4ae528a584c5a9d73b615a6281d75b14d056e5e7 --- CREDITS | 1 + RELEASE-NOTES-1.20 | 1 + maintenance/generateSitemap.php | 21 +++++++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/CREDITS b/CREDITS index d0c4623d1a..5c41d9627e 100644 --- a/CREDITS +++ b/CREDITS @@ -86,6 +86,7 @@ following names for their contribution to the product. * Amir E. Aharoni * Andrew Dunbar * Antonio Ospite +* Asier Lostalé * Azliq7 * Bagariavivek * Beau diff --git a/RELEASE-NOTES-1.20 b/RELEASE-NOTES-1.20 index 5fb07b2844..a0b3d4d80f 100644 --- a/RELEASE-NOTES-1.20 +++ b/RELEASE-NOTES-1.20 @@ -36,6 +36,7 @@ production. * (bug 35728) Git revisions are now linked on Special:Version. * "Show Changes" on default messages shows now diff against default message text * (bug 23006) create #speciale parser function. +* generateSitemap can now optionally skip redirect pages. === Bug fixes in 1.20 === * (bug 30245) Use the correct way to construct a log page title. diff --git a/maintenance/generateSitemap.php b/maintenance/generateSitemap.php index 8f19ef5d65..7e83d5f659 100644 --- a/maintenance/generateSitemap.php +++ b/maintenance/generateSitemap.php @@ -71,6 +71,13 @@ class GenerateSitemap extends Maintenance { */ var $compress; + /** + * Whether or not to include redirection pages + * + * @var bool + */ + var $skipRedirects; + /** * The number of entries to save in each sitemap file * @@ -137,6 +144,7 @@ class GenerateSitemap extends Maintenance { $this->addOption( 'fspath', 'The file system path to save to, e.g. /tmp/sitemap; defaults to current directory', false, true ); $this->addOption( 'urlpath', 'The URL path corresponding to --fspath, prepended to filenames in the index; defaults to an empty string', false, true ); $this->addOption( 'compress', 'Compress the sitemap files, can take value yes|no, default yes', false, true ); + $this->addOption( 'skip-redirects', 'Do not include redirecting articles in the sitemap' ); $this->addOption( 'identifier', 'What site identifier to use for the wiki, defaults to $wgDBname', false, true ); } @@ -154,6 +162,7 @@ class GenerateSitemap extends Maintenance { } $this->identifier = $this->getOption( 'identifier', wfWikiID() ); $this->compress = $this->getOption( 'compress', 'yes' ) !== 'no'; + $this->skipRedirects = $this->getOption( 'skip-redirects', false ) !== false ; $this->dbr = wfGetDB( DB_SLAVE ); $this->generateNamespaces(); $this->timestamp = wfTimestamp( TS_ISO_8601, wfTimestampNow() ); @@ -279,6 +288,7 @@ class GenerateSitemap extends Maintenance { 'page_namespace', 'page_title', 'page_touched', + 'page_is_redirect' ), array( 'page_namespace' => $namespace ), __METHOD__ @@ -302,7 +312,13 @@ class GenerateSitemap extends Maintenance { $fns = $wgContLang->getFormattedNsText( $namespace ); $this->output( "$namespace ($fns)\n" ); + $skippedRedirects = 0; // Number of redirects skipped for that namespace foreach ( $res as $row ) { + if ($this->skipRedirects && $row->page_is_redirect ) { + $skippedRedirects++; + continue; + } + if ( $i++ === 0 || $i === $this->url_limit + 1 || $length + $this->limit[1] + $this->limit[2] > $this->size_limit ) { if ( $this->file !== false ) { $this->write( $this->file, $this->closeFile() ); @@ -332,6 +348,11 @@ class GenerateSitemap extends Maintenance { } } } + + if ($this->skipRedirects && $skippedRedirects > 0) { + $this->output( " skipped $skippedRedirects redirect(s)\n" ); + } + if ( $this->file ) { $this->write( $this->file, $this->closeFile() ); $this->close( $this->file ); -- 2.20.1