summaryrefslogtreecommitdiff
path: root/maintenance/generateSitemap.php
diff options
context:
space:
mode:
Diffstat (limited to 'maintenance/generateSitemap.php')
-rw-r--r--maintenance/generateSitemap.php66
1 files changed, 36 insertions, 30 deletions
diff --git a/maintenance/generateSitemap.php b/maintenance/generateSitemap.php
index f3a5d875..0b21a1fe 100644
--- a/maintenance/generateSitemap.php
+++ b/maintenance/generateSitemap.php
@@ -26,7 +26,7 @@
* @see http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd
*/
-require_once( __DIR__ . '/Maintenance.php' );
+require_once __DIR__ . '/Maintenance.php';
/**
* Maintenance script that generates a sitemap for the site.
@@ -44,7 +44,7 @@ class GenerateSitemap extends Maintenance {
*
* @var int
*/
- var $url_limit;
+ public $url_limit;
/**
* The maximum size of a sitemap file
@@ -53,77 +53,77 @@ class GenerateSitemap extends Maintenance {
*
* @var int
*/
- var $size_limit;
+ public $size_limit;
/**
* The path to prepend to the filename
*
* @var string
*/
- var $fspath;
+ public $fspath;
/**
* The URL path to prepend to filenames in the index; should resolve to the same directory as $fspath
*
* @var string
*/
- var $urlpath;
+ public $urlpath;
/**
* Whether or not to use compression
*
* @var bool
*/
- var $compress;
+ public $compress;
/**
* Whether or not to include redirection pages
*
* @var bool
*/
- var $skipRedirects;
+ public $skipRedirects;
/**
* The number of entries to save in each sitemap file
*
* @var array
*/
- var $limit = array();
+ public $limit = array();
/**
* Key => value entries of namespaces and their priorities
*
* @var array
*/
- var $priorities = array();
+ public $priorities = array();
/**
* A one-dimensional array of namespaces in the wiki
*
* @var array
*/
- var $namespaces = array();
+ public $namespaces = array();
/**
* When this sitemap batch was generated
*
* @var string
*/
- var $timestamp;
+ public $timestamp;
/**
* A database slave object
*
* @var object
*/
- var $dbr;
+ public $dbr;
/**
* A resource pointing to the sitemap index file
*
* @var resource
*/
- var $findex;
+ public $findex;
/**
@@ -131,7 +131,7 @@ class GenerateSitemap extends Maintenance {
*
* @var resource
*/
- var $file;
+ public $file;
/**
* Identifier to use in filenames, default $wgDBname
@@ -167,7 +167,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->skipRedirects = $this->getOption( 'skip-redirects', false ) !== false;
$this->dbr = wfGetDB( DB_SLAVE );
$this->generateNamespaces();
$this->timestamp = wfTimestamp( TS_ISO_8601, wfTimestampNow() );
@@ -231,7 +231,7 @@ class GenerateSitemap extends Maintenance {
wfMkdirParents( $fspath, null, __METHOD__ ) or die( "Can not create directory $fspath.\n" );
}
- return realpath( $fspath ) . DIRECTORY_SEPARATOR ;
+ return realpath( $fspath ) . DIRECTORY_SEPARATOR;
}
/**
@@ -255,8 +255,9 @@ class GenerateSitemap extends Maintenance {
)
);
- foreach ( $res as $row )
+ foreach ( $res as $row ) {
$this->namespaces[] = $row->page_namespace;
+ }
}
/**
@@ -319,7 +320,7 @@ class GenerateSitemap extends Maintenance {
$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 ) {
+ if ( $this->skipRedirects && $row->page_is_redirect ) {
$skippedRedirects++;
continue;
}
@@ -346,7 +347,9 @@ class GenerateSitemap extends Maintenance {
if ( $wgContLang->hasVariants() ) {
$variants = $wgContLang->getVariants();
foreach ( $variants as $vCode ) {
- if ( $vCode == $wgContLang->getCode() ) continue; // we don't want default variant
+ if ( $vCode == $wgContLang->getCode() ) {
+ continue; // we don't want default variant
+ }
$entry = $this->fileEntry( $title->getCanonicalURL( '', $vCode ), $date, $this->priority( $namespace ) );
$length += strlen( $entry );
$this->write( $this->file, $entry );
@@ -354,7 +357,7 @@ class GenerateSitemap extends Maintenance {
}
}
- if ($this->skipRedirects && $skippedRedirects > 0) {
+ if ( $this->skipRedirects && $skippedRedirects > 0 ) {
$this->output( " skipped $skippedRedirects redirect(s)\n" );
}
@@ -374,8 +377,8 @@ class GenerateSitemap extends Maintenance {
*/
function open( $file, $flags ) {
$resource = $this->compress ? gzopen( $file, $flags ) : fopen( $file, $flags );
- if( $resource === false ) {
- wfDebugDieBacktrace( __METHOD__ . " error opening file $file with flags $flags. Check permissions?" );
+ if ( $resource === false ) {
+ throw new MWException( __METHOD__ . " error opening file $file with flags $flags. Check permissions?" );
}
return $resource;
}
@@ -384,23 +387,25 @@ class GenerateSitemap extends Maintenance {
* gzwrite() / fwrite() wrapper
*/
function write( &$handle, $str ) {
- if( $handle === true || $handle === false ) {
- wfDebugDieBacktrace( __METHOD__ . " was passed a boolean as a file handle.\n" );
+ if ( $handle === true || $handle === false ) {
+ throw new MWException( __METHOD__ . " was passed a boolean as a file handle.\n" );
}
- if ( $this->compress )
+ if ( $this->compress ) {
gzwrite( $handle, $str );
- else
+ } else {
fwrite( $handle, $str );
+ }
}
/**
* gzclose() / fclose() wrapper
*/
function close( &$handle ) {
- if ( $this->compress )
+ if ( $this->compress ) {
gzclose( $handle );
- else
+ } else {
fclose( $handle );
+ }
}
/**
@@ -485,7 +490,8 @@ class GenerateSitemap extends Maintenance {
function fileEntry( $url, $date, $priority ) {
return
"\t<url>\n" .
- "\t\t<loc>$url</loc>\n" .
+ // bug 34666: $url may contain bad characters such as ampersands.
+ "\t\t<loc>" . htmlspecialchars( $url ) . "</loc>\n" .
"\t\t<lastmod>$date</lastmod>\n" .
"\t\t<priority>$priority</priority>\n" .
"\t</url>\n";
@@ -516,4 +522,4 @@ class GenerateSitemap extends Maintenance {
}
$maintClass = "GenerateSitemap";
-require_once( RUN_MAINTENANCE_IF_MAIN );
+require_once RUN_MAINTENANCE_IF_MAIN;