Whitespace fixup under tha maint directory.
authorMark A. Hershberger <mah@users.mediawiki.org>
Sat, 4 Dec 2010 03:20:14 +0000 (03:20 +0000)
committerMark A. Hershberger <mah@users.mediawiki.org>
Sat, 4 Dec 2010 03:20:14 +0000 (03:20 +0000)
96 files changed:
maintenance/7zip.inc
maintenance/Maintenance.php
maintenance/addwiki.php
maintenance/attachLatest.php
maintenance/backup.inc
maintenance/benchmarkPurge.php
maintenance/changePassword.php
maintenance/checkBadRedirects.php
maintenance/checkImages.php
maintenance/checkSyntax.php
maintenance/cleanupImages.php
maintenance/cleanupRemovedModules.php
maintenance/cleanupSpam.php
maintenance/clear_stats.php
maintenance/commandLine.inc
maintenance/convertLinks.php
maintenance/convertUserOptions.php
maintenance/createAndPromote.php
maintenance/deleteBatch.php
maintenance/deleteDefaultMessages.php
maintenance/deleteOldRevisions.php
maintenance/deleteOrphanedRevisions.php
maintenance/deleteRevision.php
maintenance/deleteSelfExternals.php
maintenance/dumpBackup.php
maintenance/dumpInterwiki.php
maintenance/dumpLinks.php
maintenance/dumpSisterSites.php
maintenance/dumpUploads.php
maintenance/edit.php
maintenance/findhooks.php
maintenance/fixSlaveDesync.php
maintenance/fixTimestamps.php
maintenance/fuzz-tester.php
maintenance/getLagTimes.php
maintenance/getSlaveServer.php
maintenance/importDump.php
maintenance/importImages.inc
maintenance/importImages.php
maintenance/importUseModWiki.php
maintenance/initEditCount.php
maintenance/mctest.php
maintenance/moveBatch.php
maintenance/mwdocgen.php
maintenance/namespaceDupes.php
maintenance/nukeNS.php
maintenance/orphans.php
maintenance/populateCategory.php
maintenance/populateLogSearch.php
maintenance/populateRevisionLength.php
maintenance/populateSha1.php
maintenance/preprocessorFuzzTest.php
maintenance/purgeOldText.inc
maintenance/purgeOldText.php
maintenance/reassignEdits.php
maintenance/rebuildFileCache.php
maintenance/rebuildLocalisationCache.php
maintenance/rebuildall.php
maintenance/rebuildmessages.php
maintenance/rebuildrecentchanges.php
maintenance/rebuildtextindex.php
maintenance/refreshImageCount.php
maintenance/refreshLinks.php
maintenance/removeUnusedAccounts.php
maintenance/renameDbPrefix.php
maintenance/renamewiki.php
maintenance/renderDump.php
maintenance/runBatchedQuery.php
maintenance/showJobs.php
maintenance/showStats.php
maintenance/sql.php
maintenance/sqlite.inc
maintenance/sqlite.php
maintenance/storage/checkStorage.php
maintenance/storage/compressOld.inc
maintenance/storage/compressOld.php
maintenance/storage/dumpRev.php
maintenance/storage/fixBug20757.php
maintenance/storage/moveToExternal.php
maintenance/storage/orphanStats.php
maintenance/storage/recompressTracked.php
maintenance/storage/resolveStubs.php
maintenance/storage/trackBlobs.php
maintenance/tables.sql
maintenance/tests/RunSeleniumTests.php
maintenance/tests/parserTests.php
maintenance/update.php
maintenance/updateArticleCount.php
maintenance/updateCollation.php
maintenance/updateDoubleWidthSearch.php
maintenance/updateRestrictions.php
maintenance/updateSearchIndex.php
maintenance/updateSpecialPages.php
maintenance/upgrade1_5.php
maintenance/userDupes.inc
maintenance/userOptions.inc

index 833e76c..4ac480e 100644 (file)
  */
 class SevenZipStream {
        var $stream;
  */
 class SevenZipStream {
        var $stream;
-       
+
        private function stripPath( $path ) {
                $prefix = 'mediawiki.compress.7z://';
                return substr( $path, strlen( $prefix ) );
        }
        private function stripPath( $path ) {
                $prefix = 'mediawiki.compress.7z://';
                return substr( $path, strlen( $prefix ) );
        }
-       
+
        function stream_open( $path, $mode, $options, &$opened_path ) {
                if ( $mode[0] == 'r' ) {
                        $options = 'e -bd -so';
        function stream_open( $path, $mode, $options, &$opened_path ) {
                if ( $mode[0] == 'r' ) {
                        $options = 'e -bd -so';
@@ -38,37 +38,37 @@ class SevenZipStream {
                $this->stream = popen( $command, $mode[0] ); // popen() doesn't like two-letter modes
                return ( $this->stream !== false );
        }
                $this->stream = popen( $command, $mode[0] ); // popen() doesn't like two-letter modes
                return ( $this->stream !== false );
        }
-       
+
        function url_stat( $path, $flags ) {
                return stat( $this->stripPath( $path ) );
        }
        function url_stat( $path, $flags ) {
                return stat( $this->stripPath( $path ) );
        }
-       
+
        // This is all so lame; there should be a default class we can extend
 
        function stream_close() {
                return fclose( $this->stream );
        }
        // This is all so lame; there should be a default class we can extend
 
        function stream_close() {
                return fclose( $this->stream );
        }
-       
+
        function stream_flush() {
                return fflush( $this->stream );
        }
        function stream_flush() {
                return fflush( $this->stream );
        }
-       
+
        function stream_read( $count ) {
                return fread( $this->stream, $count );
        }
        function stream_read( $count ) {
                return fread( $this->stream, $count );
        }
-       
+
        function stream_write( $data ) {
                return fwrite( $this->stream, $data );
        }
        function stream_write( $data ) {
                return fwrite( $this->stream, $data );
        }
-       
+
        function stream_tell() {
                return ftell( $this->stream );
        }
        function stream_tell() {
                return ftell( $this->stream );
        }
-       
+
        function stream_eof() {
                return feof( $this->stream );
        }
        function stream_eof() {
                return feof( $this->stream );
        }
-       
+
        function stream_seek( $offset, $whence ) {
                return fseek( $this->stream, $offset, $whence );
        }
        function stream_seek( $offset, $whence ) {
                return fseek( $this->stream, $offset, $whence );
        }
index 3181a52..ab5c477 100644 (file)
@@ -665,7 +665,7 @@ abstract class Maintenance {
                        $this->output( "\n" . $this->mDescription . "\n" );
                }
                $output = "\nUsage: php " . basename( $this->mSelf );
                        $this->output( "\n" . $this->mDescription . "\n" );
                }
                $output = "\nUsage: php " . basename( $this->mSelf );
-               
+
                // ... append parameters ...
                if ( $this->mParams ) {
                        $output .= " [--" . implode( array_keys( $this->mParams ), "|--" ) . "]";
                // ... append parameters ...
                if ( $this->mParams ) {
                        $output .= " [--" . implode( array_keys( $this->mParams ), "|--" ) . "]";
index 80a2b14..65f1aa1 100644 (file)
@@ -147,7 +147,7 @@ class AddWiki extends Maintenance {
                # print "Constructing interwiki SQL\n";
                # Rebuild interwiki tables
                # passthru( '/home/wikipedia/conf/interwiki/update' );
                # print "Constructing interwiki SQL\n";
                # Rebuild interwiki tables
                # passthru( '/home/wikipedia/conf/interwiki/update' );
-               
+
                $time = wfTimestamp( TS_RFC2822 );
                // These arguments need to be escaped twice: once for echo and once for at
                $escDbName = wfEscapeShellArg( wfEscapeShellArg( $dbName ) );
                $time = wfTimestamp( TS_RFC2822 );
                // These arguments need to be escaped twice: once for echo and once for at
                $escDbName = wfEscapeShellArg( wfEscapeShellArg( $dbName ) );
@@ -157,14 +157,14 @@ class AddWiki extends Maintenance {
                $escLang = wfEscapeShellArg( wfEscapeShellArg( $lang ) );
                $escDomain = wfEscapeShellArg( wfEscapeShellArg( $domain ) );
                shell_exec( "echo notifyNewProjects $escDbName $escTime $escUcsite $escName $escLang $escDomain | at now + 15 minutes" );
                $escLang = wfEscapeShellArg( wfEscapeShellArg( $lang ) );
                $escDomain = wfEscapeShellArg( wfEscapeShellArg( $domain ) );
                shell_exec( "echo notifyNewProjects $escDbName $escTime $escUcsite $escName $escLang $escDomain | at now + 15 minutes" );
-               
+
                $this->output( "Script ended. You still have to:
        * Add any required settings in InitialiseSettings.php
        * Run sync-common-all
        * Run /home/wikipedia/conf/interwiki/update
        " );
        }
                $this->output( "Script ended. You still have to:
        * Add any required settings in InitialiseSettings.php
        * Run sync-common-all
        * Run /home/wikipedia/conf/interwiki/update
        " );
        }
-       
+
        private function getFirstArticle( $ucsite, $name ) {
                return <<<EOT
 ==This subdomain is reserved for the creation of a [[wikimedia:Our projects|$ucsite]] in '''[[w:en:{$name}|{$name}]]''' language==
        private function getFirstArticle( $ucsite, $name ) {
                return <<<EOT
 ==This subdomain is reserved for the creation of a [[wikimedia:Our projects|$ucsite]] in '''[[w:en:{$name}|{$name}]]''' language==
index 208e9ae..449b67f 100644 (file)
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class AttachLatest extends Maintenance {
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class AttachLatest extends Maintenance {
-       
+
        public function __construct() {
                parent::__construct();
                $this->addOption( "fix", "Actually fix the entries, will dry run otherwise" );
                $this->mDescription = "Fix page_latest entries in the page table";
        }
        public function __construct() {
                parent::__construct();
                $this->addOption( "fix", "Actually fix the entries, will dry run otherwise" );
                $this->mDescription = "Fix page_latest entries in the page table";
        }
-       
+
        public function execute() {
                $this->output( "Looking for pages with page_latest set to 0...\n" );
                $dbw = wfGetDB( DB_MASTER );
        public function execute() {
                $this->output( "Looking for pages with page_latest set to 0...\n" );
                $dbw = wfGetDB( DB_MASTER );
@@ -56,7 +56,7 @@ class AttachLatest extends Maintenance {
                                $this->output( wfWikiID() . " $pageId [[$name]] can't find latest rev time?!\n" );
                                continue;
                        }
                                $this->output( wfWikiID() . " $pageId [[$name]] can't find latest rev time?!\n" );
                                continue;
                        }
-       
+
                        $revision = Revision::loadFromTimestamp( $dbw, $title, $latestTime );
                        if ( is_null( $revision ) ) {
                                $this->output( wfWikiID() . " $pageId [[$name]] latest time $latestTime, can't find revision id\n" );
                        $revision = Revision::loadFromTimestamp( $dbw, $title, $latestTime );
                        if ( is_null( $revision ) ) {
                                $this->output( wfWikiID() . " $pageId [[$name]] latest time $latestTime, can't find revision id\n" );
index a7d401a..9ed463c 100644 (file)
@@ -218,7 +218,7 @@ class BackupDumper {
 
                $this->report( true );
        }
 
                $this->report( true );
        }
-       
+
        /**
         * Initialise starting time and maximum revision count.
         * We'll make ETA calculations based an progress, assuming relatively
        /**
         * Initialise starting time and maximum revision count.
         * We'll make ETA calculations based an progress, assuming relatively
@@ -228,7 +228,7 @@ class BackupDumper {
        function initProgress( $history = WikiExporter::FULL ) {
                $table = ( $history == WikiExporter::CURRENT ) ? 'page' : 'revision';
                $field = ( $history == WikiExporter::CURRENT ) ? 'page_id' : 'rev_id';
        function initProgress( $history = WikiExporter::FULL ) {
                $table = ( $history == WikiExporter::CURRENT ) ? 'page' : 'revision';
                $field = ( $history == WikiExporter::CURRENT ) ? 'page_id' : 'rev_id';
-               
+
                $dbr = wfGetDB( DB_SLAVE );
                $this->maxCount = $dbr->selectField( $table, "MAX($field)", '', __METHOD__ );
                $this->startTime = wfTime();
                $dbr = wfGetDB( DB_SLAVE );
                $this->maxCount = $dbr->selectField( $table, "MAX($field)", '', __METHOD__ );
                $this->startTime = wfTime();
@@ -242,14 +242,14 @@ class BackupDumper {
        function backupDb() {
                $this->lb = wfGetLBFactory()->newMainLB();
                $db = $this->lb->getConnection( DB_SLAVE, 'backup' );
        function backupDb() {
                $this->lb = wfGetLBFactory()->newMainLB();
                $db = $this->lb->getConnection( DB_SLAVE, 'backup' );
-               
+
                // Discourage the server from disconnecting us if it takes a long time
                // to read out the big ol' batch query.
                $db->setTimeout( 3600 * 24 );
                // Discourage the server from disconnecting us if it takes a long time
                // to read out the big ol' batch query.
                $db->setTimeout( 3600 * 24 );
-               
+
                return $db;
        }
                return $db;
        }
-       
+
        function __destruct() {
                if ( isset( $this->lb ) ) {
                        $this->lb->closeAll();
        function __destruct() {
                if ( isset( $this->lb ) ) {
                        $this->lb->closeAll();
index 31f0d22..8360ef8 100644 (file)
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class BenchmarkPurge extends Maintenance {
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class BenchmarkPurge extends Maintenance {
-       
+
        public function __construct() {
                parent::__construct();
                $this->addOption( "count", "How many URLs to feed to Squid for purging", false, true );
                $this->mDescription = "Benchmark the Squid purge functions.";
        }
        public function __construct() {
                parent::__construct();
                $this->addOption( "count", "How many URLs to feed to Squid for purging", false, true );
                $this->mDescription = "Benchmark the Squid purge functions.";
        }
-       
+
        public function execute() {
                global $wgUseSquid, $wgSquidServers;
                if ( !$wgUseSquid ) {
        public function execute() {
                global $wgUseSquid, $wgSquidServers;
                if ( !$wgUseSquid ) {
@@ -49,8 +49,8 @@ class BenchmarkPurge extends Maintenance {
                        }
                }
        }
                        }
                }
        }
-       
-       /** 
+
+       /**
         * Run a bunch of URLs through SquidUpdate::purge()
         * to benchmark Squid response times.
         * @param $urls array A bunch of URLs to purge
         * Run a bunch of URLs through SquidUpdate::purge()
         * to benchmark Squid response times.
         * @param $urls array A bunch of URLs to purge
@@ -67,8 +67,8 @@ class BenchmarkPurge extends Maintenance {
                return sprintf( "%4d titles in %6.2fms (%6.2fms each)",
                        count( $urls ), $pertrial * 1000.0, $pertitle * 1000.0 );
        }
                return sprintf( "%4d titles in %6.2fms (%6.2fms each)",
                        count( $urls ), $pertrial * 1000.0, $pertitle * 1000.0 );
        }
-       
-       /** 
+
+       /**
         * Get an array of randomUrl()'s.
         * @param $length int How many urls to add to the array
         */
         * Get an array of randomUrl()'s.
         * @param $length int How many urls to add to the array
         */
@@ -79,18 +79,18 @@ class BenchmarkPurge extends Maintenance {
                }
                return $list;
        }
                }
                return $list;
        }
-       
-       /** 
+
+       /**
         * Return a random URL of the wiki. Not necessarily an actual title in the
         * Return a random URL of the wiki. Not necessarily an actual title in the
-        * database, but at least a URL that looks like one. 
+        * database, but at least a URL that looks like one.
         */
        private function randomUrl() {
                global $wgServer, $wgArticlePath;
                return $wgServer . str_replace( '$1', $this->randomTitle(), $wgArticlePath );
        }
         */
        private function randomUrl() {
                global $wgServer, $wgArticlePath;
                return $wgServer . str_replace( '$1', $this->randomTitle(), $wgArticlePath );
        }
-       
-       /** 
-        * Create a random title string (not necessarily a Title object). 
+
+       /**
+        * Create a random title string (not necessarily a Title object).
         * For use with randomUrl().
         */
        private function randomTitle() {
         * For use with randomUrl().
         */
        private function randomTitle() {
index edc37de..a306454 100644 (file)
@@ -33,7 +33,7 @@ class ChangePassword extends Maintenance {
                $this->addOption( "password", "The password to use", true, true );
                $this->mDescription = "Change a user's password";
        }
                $this->addOption( "password", "The password to use", true, true );
                $this->mDescription = "Change a user's password";
        }
-       
+
        public function execute() {
                $user = User::newFromName( $this->getOption( 'user' ) );
                if ( !$user->getId() ) {
        public function execute() {
                $user = User::newFromName( $this->getOption( 'user' ) );
                if ( !$user->getId() ) {
index ab4b6db..c5d89a0 100644 (file)
@@ -21,7 +21,7 @@
  * @file
  * @ingroup Maintenance
  */
  * @file
  * @ingroup Maintenance
  */
+
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class CheckBadRedirects extends Maintenance {
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class CheckBadRedirects extends Maintenance {
@@ -37,11 +37,11 @@ class CheckBadRedirects extends Maintenance {
                        array( 'page' ),
                        array( 'page_namespace', 'page_title', 'page_latest' ),
                        array( 'page_is_redirect' => 1 ) );
                        array( 'page' ),
                        array( 'page_namespace', 'page_title', 'page_latest' ),
                        array( 'page_is_redirect' => 1 ) );
-       
+
                $count = $result->numRows();
                $this->output( "Found $count total redirects.\n" .
                                                "Looking for bad redirects:\n\n" );
                $count = $result->numRows();
                $this->output( "Found $count total redirects.\n" .
                                                "Looking for bad redirects:\n\n" );
-       
+
                foreach ( $result as $row ) {
                        $title = Title::makeTitle( $row->page_namespace, $row->page_title );
                        $rev = Revision::newFromId( $row->page_latest );
                foreach ( $result as $row ) {
                        $title = Title::makeTitle( $row->page_namespace, $row->page_title );
                        $rev = Revision::newFromId( $row->page_latest );
index b720b1c..fa06461 100644 (file)
@@ -29,14 +29,14 @@ class CheckImages extends Maintenance {
                $this->mDescription = "Check images to see if they exist, are readable, etc";
                $this->setBatchSize( 1000 );
        }
                $this->mDescription = "Check images to see if they exist, are readable, etc";
                $this->setBatchSize( 1000 );
        }
-       
+
        public function execute() {
                $start = '';
                $dbr = wfGetDB( DB_SLAVE );
 
                $numImages = 0;
                $numGood = 0;
        public function execute() {
                $start = '';
                $dbr = wfGetDB( DB_SLAVE );
 
                $numImages = 0;
                $numGood = 0;
-       
+
                do {
                        $res = $dbr->select( 'image', '*', array( 'img_name > ' . $dbr->addQuotes( $start ) ),
                                __METHOD__, array( 'LIMIT' => $this->mBatchSize ) );
                do {
                        $res = $dbr->select( 'image', '*', array( 'img_name > ' . $dbr->addQuotes( $start ) ),
                                __METHOD__, array( 'LIMIT' => $this->mBatchSize ) );
@@ -54,27 +54,27 @@ class CheckImages extends Maintenance {
                                        $this->output( "{$row->img_name}: missing\n" );
                                        continue;
                                }
                                        $this->output( "{$row->img_name}: missing\n" );
                                        continue;
                                }
-       
+
                                if ( $stat['mode'] & 040000 ) {
                                        $this->output( "{$row->img_name}: is a directory\n" );
                                        continue;
                                }
                                if ( $stat['mode'] & 040000 ) {
                                        $this->output( "{$row->img_name}: is a directory\n" );
                                        continue;
                                }
-       
+
                                if ( $stat['size'] == 0 && $row->img_size != 0 ) {
                                        $this->output( "{$row->img_name}: truncated, was {$row->img_size}\n" );
                                        continue;
                                }
                                if ( $stat['size'] == 0 && $row->img_size != 0 ) {
                                        $this->output( "{$row->img_name}: truncated, was {$row->img_size}\n" );
                                        continue;
                                }
-       
+
                                if ( $stat['size'] != $row->img_size ) {
                                        $this->output( "{$row->img_name}: size mismatch DB={$row->img_size}, actual={$stat['size']}\n" );
                                        continue;
                                }
                                if ( $stat['size'] != $row->img_size ) {
                                        $this->output( "{$row->img_name}: size mismatch DB={$row->img_size}, actual={$stat['size']}\n" );
                                        continue;
                                }
-       
+
                                $numGood++;
                        }
                                $numGood++;
                        }
-       
+
                } while ( $res->numRows() );
                } while ( $res->numRows() );
-       
+
                $this->output( "Good images: $numGood/$numImages\n" );
        }
 }
                $this->output( "Good images: $numGood/$numImages\n" );
        }
 }
index d7e050d..e73dcfa 100644 (file)
@@ -20,7 +20,7 @@
  * @file
  * @ingroup Maintenance
  */
  * @file
  * @ingroup Maintenance
  */
+
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class CheckSyntax extends Maintenance {
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class CheckSyntax extends Maintenance {
@@ -78,7 +78,7 @@ class CheckSyntax extends Maintenance {
                        // Compat stuff, explodes on PHP 5.3
                        "includes/NamespaceCompat.php$",
                        );
                        // Compat stuff, explodes on PHP 5.3
                        "includes/NamespaceCompat.php$",
                        );
-       
+
                $this->mNoStyleCheckPaths = array(
                        // Third-party code we don't care about
                        "/activemq_stomp/",
                $this->mNoStyleCheckPaths = array(
                        // Third-party code we don't care about
                        "/activemq_stomp/",
@@ -133,7 +133,7 @@ class CheckSyntax extends Maintenance {
 
                $this->output( 'Building file list...', 'listfiles' );
 
 
                $this->output( 'Building file list...', 'listfiles' );
 
-               // Only check files in these directories. 
+               // Only check files in these directories.
                // Don't just put $IP, because the recursive dir thingie goes into all subdirs
                $dirs = array(
                        $IP . '/includes',
                // Don't just put $IP, because the recursive dir thingie goes into all subdirs
                $dirs = array(
                        $IP . '/includes',
@@ -160,7 +160,7 @@ class CheckSyntax extends Maintenance {
 
                $this->output( 'done.', 'listfiles' );
        }
 
                $this->output( 'done.', 'listfiles' );
        }
-       
+
        /**
         * Returns true if $file is of a type we can check
         */
        /**
         * Returns true if $file is of a type we can check
         */
index 5a19e03..818b9ed 100644 (file)
@@ -53,23 +53,23 @@ class ImageCleanup extends TableCleanup {
                        $this->killRow( $source );
                        return $this->progress( 1 );
                }
                        $this->killRow( $source );
                        return $this->progress( 1 );
                }
-               
+
                $cleaned = $source;
                $cleaned = $source;
-               
+
                // About half of old bad image names have percent-codes
                $cleaned = rawurldecode( $cleaned );
 
                // We also have some HTML entities there
                $cleaned = Sanitizer::decodeCharReferences( $cleaned );
                // About half of old bad image names have percent-codes
                $cleaned = rawurldecode( $cleaned );
 
                // We also have some HTML entities there
                $cleaned = Sanitizer::decodeCharReferences( $cleaned );
-               
+
                // Some are old latin-1
                $cleaned = $wgContLang->checkTitleEncoding( $cleaned );
                // Some are old latin-1
                $cleaned = $wgContLang->checkTitleEncoding( $cleaned );
-               
+
                // Many of remainder look like non-normalized unicode
                $cleaned = $wgContLang->normalize( $cleaned );
                // Many of remainder look like non-normalized unicode
                $cleaned = $wgContLang->normalize( $cleaned );
-               
+
                $title = Title::makeTitleSafe( NS_FILE, $cleaned );
                $title = Title::makeTitleSafe( NS_FILE, $cleaned );
-               
+
                if ( is_null( $title ) ) {
                        $this->output( "page $source ($cleaned) is illegal.\n" );
                        $safe = $this->buildSafeTitle( $cleaned );
                if ( is_null( $title ) ) {
                        $this->output( "page $source ($cleaned) is illegal.\n" );
                        $safe = $this->buildSafeTitle( $cleaned );
@@ -100,7 +100,7 @@ class ImageCleanup extends TableCleanup {
                                __METHOD__ );
                }
        }
                                __METHOD__ );
                }
        }
-       
+
        private function filePath( $name ) {
                if ( !isset( $this->repo ) ) {
                        $this->repo = RepoGroup::singleton()->getLocalRepo();
        private function filePath( $name ) {
                if ( !isset( $this->repo ) ) {
                        $this->repo = RepoGroup::singleton()->getLocalRepo();
@@ -115,14 +115,14 @@ class ImageCleanup extends TableCleanup {
        private function pageExists( $name, $db ) {
                return $db->selectField( 'page', '1', array( 'page_namespace' => NS_FILE, 'page_title' => $name ), __METHOD__ );
        }
        private function pageExists( $name, $db ) {
                return $db->selectField( 'page', '1', array( 'page_namespace' => NS_FILE, 'page_title' => $name ), __METHOD__ );
        }
-       
+
        private function pokeFile( $orig, $new ) {
                $path = $this->filePath( $orig );
                if ( !file_exists( $path ) ) {
                        $this->output( "missing file: $path\n" );
                        return $this->killRow( $orig );
                }
        private function pokeFile( $orig, $new ) {
                $path = $this->filePath( $orig );
                if ( !file_exists( $path ) ) {
                        $this->output( "missing file: $path\n" );
                        return $this->killRow( $orig );
                }
-               
+
                $db = wfGetDB( DB_MASTER );
 
                /*
                $db = wfGetDB( DB_MASTER );
 
                /*
@@ -135,17 +135,17 @@ class ImageCleanup extends TableCleanup {
                $version = 0;
                $final = $new;
                $conflict = ( $this->imageExists( $final, $db ) ||
                $version = 0;
                $final = $new;
                $conflict = ( $this->imageExists( $final, $db ) ||
-                             ( $this->pageExists( $orig, $db ) && $this->pageExists( $final, $db ) ) );
-               
+                                 ( $this->pageExists( $orig, $db ) && $this->pageExists( $final, $db ) ) );
+
                while ( $conflict ) {
                        $this->output( "Rename conflicts with '$final'...\n" );
                        $version++;
                        $final = $this->appendTitle( $new, "_$version" );
                        $conflict = ( $this->imageExists( $final, $db ) || $this->pageExists( $final, $db ) );
                }
                while ( $conflict ) {
                        $this->output( "Rename conflicts with '$final'...\n" );
                        $version++;
                        $final = $this->appendTitle( $new, "_$version" );
                        $conflict = ( $this->imageExists( $final, $db ) || $this->pageExists( $final, $db ) );
                }
-               
+
                $finalPath = $this->filePath( $final );
                $finalPath = $this->filePath( $final );
-               
+
                if ( $this->dryrun ) {
                        $this->output( "DRY RUN: would rename $path to $finalPath\n" );
                } else {
                if ( $this->dryrun ) {
                        $this->output( "DRY RUN: would rename $path to $finalPath\n" );
                } else {
@@ -192,13 +192,13 @@ class ImageCleanup extends TableCleanup {
                        "/([^$wgLegalTitleChars]|~)/",
                        array( $this, 'hexChar' ),
                        $name );
                        "/([^$wgLegalTitleChars]|~)/",
                        array( $this, 'hexChar' ),
                        $name );
-               
+
                $test = Title::makeTitleSafe( NS_FILE, $x );
                if ( is_null( $test ) || $test->getDBkey() !== $x ) {
                        $this->error( "Unable to generate safe title from '$name', got '$x'" );
                        return false;
                }
                $test = Title::makeTitleSafe( NS_FILE, $x );
                if ( is_null( $test ) || $test->getDBkey() !== $x ) {
                        $this->error( "Unable to generate safe title from '$name', got '$x'" );
                        return false;
                }
-               
+
                return $x;
        }
 }
                return $x;
        }
 }
index eb94430..1194647 100644 (file)
@@ -41,7 +41,7 @@ class CleanupRemovedModules extends Maintenance {
                $moduleList = implode( ', ', array_map( array( $dbw, 'addQuotes' ), $moduleNames ) );
                $limit = max( 1, intval( $this->getOption( 'batchsize', 500 ) ) );
                $maxlag = intval( $this->getOption( 'max-slave-lag', 5 ) );
                $moduleList = implode( ', ', array_map( array( $dbw, 'addQuotes' ), $moduleNames ) );
                $limit = max( 1, intval( $this->getOption( 'batchsize', 500 ) ) );
                $maxlag = intval( $this->getOption( 'max-slave-lag', 5 ) );
-               
+
                $this->output( "Cleaning up module_deps table...\n" );
                $i = 1;
                do {
                $this->output( "Cleaning up module_deps table...\n" );
                $i = 1;
                do {
@@ -54,7 +54,7 @@ class CleanupRemovedModules extends Maintenance {
                        wfWaitForSlaves( $maxlag );
                } while( $numRows > 0 );
                $this->output( "done\n" );
                        wfWaitForSlaves( $maxlag );
                } while( $numRows > 0 );
                $this->output( "done\n" );
-               
+
                $this->output( "Cleaning up msg_resource table...\n" );
                $i = 1;
                do {
                $this->output( "Cleaning up msg_resource table...\n" );
                $i = 1;
                do {
@@ -66,7 +66,7 @@ class CleanupRemovedModules extends Maintenance {
                        wfWaitForSlaves( $maxlag );
                } while( $numRows > 0 );
                $this->output( "done\n" );
                        wfWaitForSlaves( $maxlag );
                } while( $numRows > 0 );
                $this->output( "done\n" );
-               
+
                $this->output( "Cleaning up msg_resource_links table...\n" );
                $i = 1;
                do {
                $this->output( "Cleaning up msg_resource_links table...\n" );
                $i = 1;
                do {
index 15dd7f7..aea32d0 100644 (file)
@@ -45,7 +45,7 @@ class CleanupSpam extends Maintenance {
                if ( !$like ) {
                        $this->error( "Not a valid hostname specification: $spec", true );
                }
                if ( !$like ) {
                        $this->error( "Not a valid hostname specification: $spec", true );
                }
-       
+
                if ( $this->hasOption( 'all' ) ) {
                        // Clean up spam on all wikis
                        $this->output( "Finding spam on " . count( $wgLocalDatabases ) . " wikis\n" );
                if ( $this->hasOption( 'all' ) ) {
                        // Clean up spam on all wikis
                        $this->output( "Finding spam on " . count( $wgLocalDatabases ) . " wikis\n" );
@@ -88,12 +88,12 @@ class CleanupSpam extends Maintenance {
                        $this->error( "Internal error: no page for ID $id" );
                        return;
                }
                        $this->error( "Internal error: no page for ID $id" );
                        return;
                }
-       
+
                $this->output( $title->getPrefixedDBkey() . " ..." );
                $rev = Revision::newFromTitle( $title );
                $revId = $rev->getId();
                $currentRevId = $revId;
                $this->output( $title->getPrefixedDBkey() . " ..." );
                $rev = Revision::newFromTitle( $title );
                $revId = $rev->getId();
                $currentRevId = $revId;
-       
+
                while ( $rev && LinkFilter::matchEntry( $rev->getText() , $domain ) ) {
                        # Revision::getPrevious can't be used in this way before MW 1.6 (Revision.php 1.26)
                        # $rev = $rev->getPrevious();
                while ( $rev && LinkFilter::matchEntry( $rev->getText() , $domain ) ) {
                        # Revision::getPrevious can't be used in this way before MW 1.6 (Revision.php 1.26)
                        # $rev = $rev->getPrevious();
index 820f2b9..4bd79a5 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /**
  * This script remove all statistics tracking from the cache
 <?php
 /**
  * This script remove all statistics tracking from the cache
- * 
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
index 7f84a47..fd13bdc 100644 (file)
@@ -7,7 +7,7 @@ require( dirname( __FILE__ ) . '/Maintenance.php' );
 
 global $optionsWithArgs;
 if ( !isset( $optionsWithArgs ) ) {
 
 global $optionsWithArgs;
 if ( !isset( $optionsWithArgs ) ) {
-    $optionsWithArgs = array();
+       $optionsWithArgs = array();
 }
 
 class CommandLineInc extends Maintenance {
 }
 
 class CommandLineInc extends Maintenance {
index f13681b..3493d45 100644 (file)
@@ -53,7 +53,7 @@ This gives a huge speed improvement for very large links tables which are MyISAM
                }
 
                global $wgContLang;
                }
 
                global $wgContLang;
-       
+
                $numBadLinks = $curRowsRead = 0; # counters etc
                $totalTuplesInserted = 0; # total tuples INSERTed into links_temp
 
                $numBadLinks = $curRowsRead = 0; # counters etc
                $totalTuplesInserted = 0; # total tuples INSERTed into links_temp
 
@@ -68,7 +68,7 @@ This gives a huge speed improvement for very large links tables which are MyISAM
 
                $overwriteLinksTable = !$this->hasOption( 'keep-links-table' );
                $noKeys = $this->hasOption( 'noKeys' );
 
                $overwriteLinksTable = !$this->hasOption( 'keep-links-table' );
                $noKeys = $this->hasOption( 'noKeys' );
-               $this->logPerformance = $this->hasOption( 'logperformance' ); 
+               $this->logPerformance = $this->hasOption( 'logperformance' );
                $perfLogFilename = $this->getArg( 'perfLogFilename', "convLinksPerf.txt" );
 
                # --------------------------------------------------------------------
                $perfLogFilename = $this->getArg( 'perfLogFilename', "convLinksPerf.txt" );
 
                # --------------------------------------------------------------------
@@ -79,18 +79,18 @@ This gives a huge speed improvement for very large links tables which are MyISAM
                        $this->output( "...have pagelinks; skipping old links table updates\n" );
                        return;
                }
                        $this->output( "...have pagelinks; skipping old links table updates\n" );
                        return;
                }
-       
+
                $res = $dbw->query( "SELECT l_from FROM $links LIMIT 1" );
                if ( $dbw->fieldType( $res, 0 ) == "int" ) {
                        $this->output( "Schema already converted\n" );
                        return;
                }
                $res = $dbw->query( "SELECT l_from FROM $links LIMIT 1" );
                if ( $dbw->fieldType( $res, 0 ) == "int" ) {
                        $this->output( "Schema already converted\n" );
                        return;
                }
-       
+
                $res = $dbw->query( "SELECT COUNT(*) AS count FROM $links" );
                $row = $dbw->fetchObject( $res );
                $numRows = $row->count;
                $dbw->freeResult( $res );
                $res = $dbw->query( "SELECT COUNT(*) AS count FROM $links" );
                $row = $dbw->fetchObject( $res );
                $numRows = $row->count;
                $dbw->freeResult( $res );
-       
+
                if ( $numRows == 0 ) {
                        $this->output( "Updating schema (no rows to convert)...\n" );
                        $this->createTempTable();
                if ( $numRows == 0 ) {
                        $this->output( "Updating schema (no rows to convert)...\n" );
                        $this->createTempTable();
@@ -142,7 +142,7 @@ This gives a huge speed improvement for very large links tables which are MyISAM
                        $this->output( "Processing $numRows rows from $links table...\n" );
                        $this->performanceLog( $fh, "Processing $numRows rows from $links table...\n" );
                        $this->performanceLog( $fh, "rows inserted vs seconds elapsed:\n" );
                        $this->output( "Processing $numRows rows from $links table...\n" );
                        $this->performanceLog( $fh, "Processing $numRows rows from $links table...\n" );
                        $this->performanceLog( $fh, "rows inserted vs seconds elapsed:\n" );
-       
+
                        for ( $rowOffset = $initialRowOffset; $rowOffset < $numRows; $rowOffset += $linksConvInsertInterval ) {
                                $sqlRead = "SELECT * FROM $links ";
                                $sqlRead = $dbw->limitResult( $sqlRead, $linksConvInsertInterval, $rowOffset );
                        for ( $rowOffset = $initialRowOffset; $rowOffset < $numRows; $rowOffset += $linksConvInsertInterval ) {
                                $sqlRead = "SELECT * FROM $links ";
                                $sqlRead = $dbw->limitResult( $sqlRead, $linksConvInsertInterval, $rowOffset );
@@ -152,7 +152,7 @@ This gives a huge speed improvement for very large links tables which are MyISAM
                                } else {
                                        $sqlWrite = array( "INSERT IGNORE INTO $links_temp (l_from,l_to) VALUES " );
                                }
                                } else {
                                        $sqlWrite = array( "INSERT IGNORE INTO $links_temp (l_from,l_to) VALUES " );
                                }
-       
+
                                $tuplesAdded = 0; # no tuples added to INSERT yet
                                foreach ( $res as $row ) {
                                        $fromTitle = $row->l_from;
                                $tuplesAdded = 0; # no tuples added to INSERT yet
                                foreach ( $res as $row ) {
                                        $fromTitle = $row->l_from;
@@ -195,12 +195,12 @@ This gives a huge speed improvement for very large links tables which are MyISAM
                        $this->output( "Dropping backup links table if it exists..." );
                        $dbw->query( "DROP TABLE IF EXISTS $links_backup", DB_MASTER );
                        $this->output( " done.\n" );
                        $this->output( "Dropping backup links table if it exists..." );
                        $dbw->query( "DROP TABLE IF EXISTS $links_backup", DB_MASTER );
                        $this->output( " done.\n" );
-       
+
                        # Swap in the new table, and move old links table to links_backup
                        $this->output( "Swapping tables '$links' to '$links_backup'; '$links_temp' to '$links'..." );
                        $dbw->query( "RENAME TABLE links TO $links_backup, $links_temp TO $links", DB_MASTER );
                        $this->output( " done.\n\n" );
                        # Swap in the new table, and move old links table to links_backup
                        $this->output( "Swapping tables '$links' to '$links_backup'; '$links_temp' to '$links'..." );
                        $dbw->query( "RENAME TABLE links TO $links_backup, $links_temp TO $links", DB_MASTER );
                        $this->output( " done.\n\n" );
-       
+
                        $dbw->close();
                        $this->output( "Conversion complete. The old table remains at $links_backup;\n" );
                        $this->output( "delete at your leisure.\n" );
                        $dbw->close();
                        $this->output( "Conversion complete. The old table remains at $links_backup;\n" );
                        $this->output( "delete at your leisure.\n" );
index fb77d51..2305443 100644 (file)
@@ -31,7 +31,7 @@ class ConvertUserOptions extends Maintenance {
                parent::__construct();
                $this->mDescription = "Convert user options from old to new system";
        }
                parent::__construct();
                $this->mDescription = "Convert user options from old to new system";
        }
-       
+
        public function execute() {
                $this->output( "Beginning batch conversion of user options.\n" );
                $id = 0;
        public function execute() {
                $this->output( "Beginning batch conversion of user options.\n" );
                $id = 0;
@@ -45,9 +45,9 @@ class ConvertUserOptions extends Maintenance {
                                        array( 'LIMIT' => 50, 'FOR UPDATE' ) );
                        $id = $this->convertOptionBatch( $res, $dbw );
                        $dbw->commit();
                                        array( 'LIMIT' => 50, 'FOR UPDATE' ) );
                        $id = $this->convertOptionBatch( $res, $dbw );
                        $dbw->commit();
-       
+
                        wfWaitForSlaves( 1 );
                        wfWaitForSlaves( 1 );
-       
+
                        if ( $id )
                                $this->output( "--Converted to ID $id\n" );
                }
                        if ( $id )
                                $this->output( "--Converted to ID $id\n" );
                }
@@ -58,13 +58,13 @@ class ConvertUserOptions extends Maintenance {
                $id = null;
                foreach ( $res as $row ) {
                        $this->mConversionCount++;
                $id = null;
                foreach ( $res as $row ) {
                        $this->mConversionCount++;
-       
+
                        $u = User::newFromRow( $row );
                        $u = User::newFromRow( $row );
-       
+
                        $u->saveSettings();
                        $id = $row->user_id;
                }
                        $u->saveSettings();
                        $id = $row->user_id;
                }
-       
+
                return $id;
        }
 }
                return $id;
        }
 }
index ad0d12d..d62e16a 100644 (file)
@@ -37,9 +37,9 @@ class CreateAndPromote extends Maintenance {
        public function execute() {
                $username = $this->getArg( 0 );
                $password = $this->getArg( 1 );
        public function execute() {
                $username = $this->getArg( 0 );
                $password = $this->getArg( 1 );
-               
+
                $this->output( wfWikiID() . ": Creating and promoting User:{$username}..." );
                $this->output( wfWikiID() . ": Creating and promoting User:{$username}..." );
-               
+
                $user = User::newFromName( $username );
                if ( !is_object( $user ) ) {
                        $this->error( "invalid username.", true );
                $user = User::newFromName( $username );
                if ( !is_object( $user ) ) {
                        $this->error( "invalid username.", true );
@@ -57,16 +57,16 @@ class CreateAndPromote extends Maintenance {
                # Insert the account into the database
                $user->addToDatabase();
                $user->saveSettings();
                # Insert the account into the database
                $user->addToDatabase();
                $user->saveSettings();
-       
+
                # Promote user
                $user->addGroup( 'sysop' );
                if ( $this->hasOption( 'bureaucrat' ) )
                        $user->addGroup( 'bureaucrat' );
                # Promote user
                $user->addGroup( 'sysop' );
                if ( $this->hasOption( 'bureaucrat' ) )
                        $user->addGroup( 'bureaucrat' );
-       
+
                # Increment site_stats.ss_users
                $ssu = new SiteStatsUpdate( 0, 0, 0, 0, 1 );
                $ssu->doUpdate();
                # Increment site_stats.ss_users
                $ssu = new SiteStatsUpdate( 0, 0, 0, 0, 1 );
                $ssu->doUpdate();
-       
+
                $this->output( "done.\n" );
        }
 }
                $this->output( "done.\n" );
        }
 }
index 9571bde..9eb55a1 100644 (file)
  *
  * @ingroup Maintenance
  */
  *
  * @ingroup Maintenance
  */
+
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class DeleteBatch extends Maintenance {
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class DeleteBatch extends Maintenance {
-       
+
        public function __construct() {
                parent::__construct();
                $this->mDescription = "Deletes a batch of pages";
        public function __construct() {
                parent::__construct();
                $this->mDescription = "Deletes a batch of pages";
@@ -40,14 +40,14 @@ class DeleteBatch extends Maintenance {
                $this->addArg( 'listfile', 'File with titles to delete, separated by newlines. ' .
                        'If not given, stdin will be used.', false );
        }
                $this->addArg( 'listfile', 'File with titles to delete, separated by newlines. ' .
                        'If not given, stdin will be used.', false );
        }
-       
+
        public function execute() {
                global $wgUser;
 
                # Change to current working directory
                $oldCwd = getcwd();
                chdir( $oldCwd );
        public function execute() {
                global $wgUser;
 
                # Change to current working directory
                $oldCwd = getcwd();
                chdir( $oldCwd );
-       
+
                # Options processing
                $user = $this->getOption( 'u', 'Delete page script' );
                $reason = $this->getOption( 'r', '' );
                # Options processing
                $user = $this->getOption( 'u', 'Delete page script' );
                $reason = $this->getOption( 'r', '' );
@@ -80,8 +80,8 @@ class DeleteBatch extends Maintenance {
                                $this->output( "Skipping nonexistent page '$line'\n" );
                                continue;
                        }
                                $this->output( "Skipping nonexistent page '$line'\n" );
                                continue;
                        }
-       
-       
+
+
                        $this->output( $page->getPrefixedText() );
                        $dbw->begin();
                        if ( $page->getNamespace() == NS_FILE ) {
                        $this->output( $page->getPrefixedText() );
                        $dbw->begin();
                        if ( $page->getNamespace() == NS_FILE ) {
@@ -100,7 +100,7 @@ class DeleteBatch extends Maintenance {
                        } else {
                                $this->output( " FAILED to delete article\n" );
                        }
                        } else {
                                $this->output( " FAILED to delete article\n" );
                        }
-       
+
                        if ( $interval ) {
                                sleep( $interval );
                        }
                        if ( $interval ) {
                                sleep( $interval );
                        }
index 741773f..ca10362 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
 <?php
 /**
- * Deletes all pages in the MediaWiki namespace which were last edited by 
+ * Deletes all pages in the MediaWiki namespace which were last edited by
  * "MediaWiki default".
  *
  * This program is free software; you can redistribute it and/or modify
  * "MediaWiki default".
  *
  * This program is free software; you can redistribute it and/or modify
@@ -34,7 +34,7 @@ class DeleteDefaultMessages extends Maintenance {
 
                $user = 'MediaWiki default';
                $reason = 'No longer required';
 
                $user = 'MediaWiki default';
                $reason = 'No longer required';
-               
+
                $this->output( "Checking existence of old default messages..." );
                $dbr = wfGetDB( DB_SLAVE );
                $res = $dbr->select( array( 'page', 'revision' ),
                $this->output( "Checking existence of old default messages..." );
                $dbr = wfGetDB( DB_SLAVE );
                $res = $dbr->select( array( 'page', 'revision' ),
index 6eb1869..736a242 100644 (file)
@@ -31,24 +31,24 @@ class DeleteOldRevisions extends Maintenance {
                $this->addOption( 'delete', 'Actually perform the deletion' );
                $this->addOption( 'page_id', 'List of page ids to work on', false );
        }
                $this->addOption( 'delete', 'Actually perform the deletion' );
                $this->addOption( 'page_id', 'List of page ids to work on', false );
        }
-       
+
        public function execute() {
                $this->output( "Delete old revisions\n\n" );
                $this->doDelete( $this->hasOption( 'delete' ), $this->mArgs );
        }
        public function execute() {
                $this->output( "Delete old revisions\n\n" );
                $this->doDelete( $this->hasOption( 'delete' ), $this->mArgs );
        }
-       
+
        function doDelete( $delete = false, $args = array() ) {
 
                # Data should come off the master, wrapped in a transaction
                $dbw = wfGetDB( DB_MASTER );
                $dbw->begin();
        function doDelete( $delete = false, $args = array() ) {
 
                # Data should come off the master, wrapped in a transaction
                $dbw = wfGetDB( DB_MASTER );
                $dbw->begin();
-       
+
                $tbl_pag = $dbw->tableName( 'page' );
                $tbl_rev = $dbw->tableName( 'revision' );
                $tbl_pag = $dbw->tableName( 'page' );
                $tbl_rev = $dbw->tableName( 'revision' );
-       
+
                $pageIdClause = '';
                $revPageClause = '';
                $pageIdClause = '';
                $revPageClause = '';
-       
+
                # If a list of page_ids was provided, limit results to that set of page_ids
                if ( sizeof( $args ) > 0 ) {
                        $pageIdList = implode( ',', $args );
                # If a list of page_ids was provided, limit results to that set of page_ids
                if ( sizeof( $args ) > 0 ) {
                        $pageIdList = implode( ',', $args );
@@ -56,7 +56,7 @@ class DeleteOldRevisions extends Maintenance {
                        $revPageClause = " AND rev_page IN ({$pageIdList})";
                        $this->output( "Limiting to {$tbl_pag}.page_id IN ({$pageIdList})\n" );
                }
                        $revPageClause = " AND rev_page IN ({$pageIdList})";
                        $this->output( "Limiting to {$tbl_pag}.page_id IN ({$pageIdList})\n" );
                }
-       
+
                # Get "active" revisions from the page table
                $this->output( "Searching for active revisions..." );
                $res = $dbw->query( "SELECT page_latest FROM $tbl_pag{$pageIdClause}" );
                # Get "active" revisions from the page table
                $this->output( "Searching for active revisions..." );
                $res = $dbw->query( "SELECT page_latest FROM $tbl_pag{$pageIdClause}" );
@@ -64,7 +64,7 @@ class DeleteOldRevisions extends Maintenance {
                        $cur[] = $row->page_latest;
                }
                $this->output( "done.\n" );
                        $cur[] = $row->page_latest;
                }
                $this->output( "done.\n" );
-       
+
                # Get all revisions that aren't in this set
                $old = array();
                $this->output( "Searching for inactive revisions..." );
                # Get all revisions that aren't in this set
                $old = array();
                $this->output( "Searching for inactive revisions..." );
@@ -74,11 +74,11 @@ class DeleteOldRevisions extends Maintenance {
                        $old[] = $row->rev_id;
                }
                $this->output( "done.\n" );
                        $old[] = $row->rev_id;
                }
                $this->output( "done.\n" );
-       
+
                # Inform the user of what we're going to do
                $count = count( $old );
                $this->output( "$count old revisions found.\n" );
                # Inform the user of what we're going to do
                $count = count( $old );
                $this->output( "$count old revisions found.\n" );
-       
+
                # Delete as appropriate
                if ( $delete && $count ) {
                        $this->output( "Deleting..." );
                # Delete as appropriate
                if ( $delete && $count ) {
                        $this->output( "Deleting..." );
@@ -86,7 +86,7 @@ class DeleteOldRevisions extends Maintenance {
                        $dbw->query( "DELETE FROM $tbl_rev WHERE rev_id IN ( $set )" );
                        $this->output( "done.\n" );
                }
                        $dbw->query( "DELETE FROM $tbl_rev WHERE rev_id IN ( $set )" );
                        $this->output( "done.\n" );
                }
-       
+
                # This bit's done
                # Purge redundant text records
                $dbw->commit();
                # This bit's done
                # Purge redundant text records
                $dbw->commit();
index 73068cc..7b1235b 100644 (file)
@@ -46,30 +46,30 @@ class DeleteOrphanedRevisions extends Maintenance {
                $this->output( "Checking for orphaned revisions..." );
                $sql = "SELECT rev_id FROM {$revision} LEFT JOIN {$page} ON rev_page = page_id WHERE page_namespace IS NULL";
                $res = $dbw->query( $sql, 'deleteOrphanedRevisions' );
                $this->output( "Checking for orphaned revisions..." );
                $sql = "SELECT rev_id FROM {$revision} LEFT JOIN {$page} ON rev_page = page_id WHERE page_namespace IS NULL";
                $res = $dbw->query( $sql, 'deleteOrphanedRevisions' );
-       
+
                # Stash 'em all up for deletion (if needed)
                $revisions = array();
                foreach ( $res as $row )
                        $revisions[] = $row->rev_id;
                $count = count( $revisions );
                $this->output( "found {$count}.\n" );
                # Stash 'em all up for deletion (if needed)
                $revisions = array();
                foreach ( $res as $row )
                        $revisions[] = $row->rev_id;
                $count = count( $revisions );
                $this->output( "found {$count}.\n" );
-       
+
                # Nothing to do?
                if ( $report || $count == 0 ) {
                        $dbw->commit();
                        exit( 0 );
                }
                # Nothing to do?
                if ( $report || $count == 0 ) {
                        $dbw->commit();
                        exit( 0 );
                }
-       
+
                # Delete each revision
                $this->output( "Deleting..." );
                $this->deleteRevs( $revisions, $dbw );
                $this->output( "done.\n" );
                # Delete each revision
                $this->output( "Deleting..." );
                $this->deleteRevs( $revisions, $dbw );
                $this->output( "done.\n" );
-       
+
                # Close the transaction and call the script to purge unused text records
                $dbw->commit();
                $this->purgeRedundantText( true );
        }
                # Close the transaction and call the script to purge unused text records
                $dbw->commit();
                $this->purgeRedundantText( true );
        }
-       
+
        /**
         * Delete one or more revisions from the database
         * Do this inside a transaction
        /**
         * Delete one or more revisions from the database
         * Do this inside a transaction
index 485cb86..24fdbe4 100644 (file)
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class DeleteRevision extends Maintenance {
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class DeleteRevision extends Maintenance {
-       
+
        public function __construct() {
                parent::__construct();
                $this->mDescription = "Delete one or more revisions by moving them to the archive table";
        }
        public function __construct() {
                parent::__construct();
                $this->mDescription = "Delete one or more revisions by moving them to the archive table";
        }
-       
+
        public function execute() {
                if ( count( $this->mArgs ) == 0 ) {
                        $this->error( "No revisions specified", true );
        public function execute() {
                if ( count( $this->mArgs ) == 0 ) {
                        $this->error( "No revisions specified", true );
@@ -37,7 +37,7 @@ class DeleteRevision extends Maintenance {
                $this->output( "Deleting revision(s) " . implode( ',', $this->mArgs ) .
                                                " from " . wfWikiID() . "...\n" );
                $dbw = wfGetDB( DB_MASTER );
                $this->output( "Deleting revision(s) " . implode( ',', $this->mArgs ) .
                                                " from " . wfWikiID() . "...\n" );
                $dbw = wfGetDB( DB_MASTER );
-               
+
                $affected = 0;
                foreach ( $this->mArgs as $revID ) {
                        $dbw->insertSelect( 'archive', array( 'page', 'revision' ),
                $affected = 0;
                foreach ( $this->mArgs as $revID ) {
                        $dbw->insertSelect( 'archive', array( 'page', 'revision' ),
index 89ad69b..783a7dd 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * We want to make this whole thing as seamless as possible to the
  * end-user. Unfortunately, we can't do _all_ of the work in the class
 /**
  * We want to make this whole thing as seamless as possible to the
  * end-user. Unfortunately, we can't do _all_ of the work in the class
- * because A) included files are not in global scope, but in the scope 
+ * because A) included files are not in global scope, but in the scope
  * of their caller, and B) MediaWiki has way too many globals. So instead
  * we'll kinda fake it, and do the requires() inline. <3 PHP
  *
  * of their caller, and B) MediaWiki has way too many globals. So instead
  * we'll kinda fake it, and do the requires() inline. <3 PHP
  *
@@ -33,7 +33,7 @@ class DeleteSelfExternals extends Maintenance {
                $this->mDescription = 'Delete self-references to $wgServer from externallinks';
                $this->mBatchSize = 1000;
        }
                $this->mDescription = 'Delete self-references to $wgServer from externallinks';
                $this->mBatchSize = 1000;
        }
-       
+
        public function execute() {
                global $wgServer;
                $this->output( "Deleting self externals from $wgServer\n" );
        public function execute() {
                global $wgServer;
                $this->output( "Deleting self externals from $wgServer\n" );
index 26cc45b..90e8f72 100644 (file)
@@ -84,12 +84,12 @@ Actions:
   --logs      Dump all log events.
   --stable    Stable versions of pages?
   --pagelist=<file>
   --logs      Dump all log events.
   --stable    Stable versions of pages?
   --pagelist=<file>
-              Where <file> is a list of page titles to be dumped
+                         Where <file> is a list of page titles to be dumped
 
 Options:
   --quiet     Don't dump status reports to stderr.
   --report=n  Report position and speed after every n pages processed.
 
 Options:
   --quiet     Don't dump status reports to stderr.
   --report=n  Report position and speed after every n pages processed.
-              (Default: 100)
+                         (Default: 100)
   --server=h  Force reading from MySQL server h
   --start=n   Start from page_id or log_id n
   --end=n     Stop before page_id or log_id n (exclusive)
   --server=h  Force reading from MySQL server h
   --start=n   Start from page_id or log_id n
   --end=n     Stop before page_id or log_id n (exclusive)
@@ -104,7 +104,7 @@ Options:
 Fancy stuff: (Works? Add examples please.)
   --plugin=<class>[:<file>]   Load a dump plugin class
   --output=<type>:<file>      Begin a filtered output stream;
 Fancy stuff: (Works? Add examples please.)
   --plugin=<class>[:<file>]   Load a dump plugin class
   --output=<type>:<file>      Begin a filtered output stream;
-                              <type>s: file, gzip, bzip2, 7zip
+                                                         <type>s: file, gzip, bzip2, 7zip
   --filter=<type>[:<options>] Add a filter on an output branch
 
 ENDS
   --filter=<type>[:<options>] Add a filter on an output branch
 
 ENDS
index 0e4d6f8..2f0f9a4 100644 (file)
@@ -142,7 +142,7 @@ class DumpInterwiki extends Maintenance {
 
                # Exclude Wikipedia for Wikipedia
                $this->makeLink ( array ( 'iw_prefix' => 'wikipedia', 'is_url' => null ), "_wiki" );
 
                # Exclude Wikipedia for Wikipedia
                $this->makeLink ( array ( 'iw_prefix' => 'wikipedia', 'is_url' => null ), "_wiki" );
-                     
+
                # Multilanguage sites
                foreach ( $sites as $site ) {
                        $this->makeLanguageLinks ( $site, "_" . $site->suffix );
                # Multilanguage sites
                foreach ( $sites as $site ) {
                        $this->makeLanguageLinks ( $site, "_" . $site->suffix );
index d09a7f7..a6049d8 100644 (file)
@@ -49,7 +49,7 @@ class DumpLinks extends Maintenance {
                        array( 'page_id=pl_from' ),
                        __METHOD__,
                        array( 'ORDER BY' => 'page_id' ) );
                        array( 'page_id=pl_from' ),
                        __METHOD__,
                        array( 'ORDER BY' => 'page_id' ) );
-       
+
                $lastPage = null;
                foreach ( $result as $row ) {
                        if ( $lastPage != $row->page_id ) {
                $lastPage = null;
                foreach ( $result as $row ) {
                        if ( $lastPage != $row->page_id ) {
index 75b7a00..ce931ac 100644 (file)
@@ -31,7 +31,7 @@ class DumpSisterSites extends Maintenance {
                parent::__construct();
                $this->mDescription = "Quickie page name dump script for SisterSites usage";
        }
                parent::__construct();
                $this->mDescription = "Quickie page name dump script for SisterSites usage";
        }
-       
+
        public function execute() {
                $dbr = wfGetDB( DB_SLAVE );
                $dbr->bufferResults( false );
        public function execute() {
                $dbr = wfGetDB( DB_SLAVE );
                $dbr->bufferResults( false );
index 726153f..0db4be3 100644 (file)
@@ -43,11 +43,11 @@ By default, outputs relative paths against the parent directory of \$wgUploadDir
                if ( $this->hasOption( 'local' ) ) {
                        $this->mAction = 'fetchLocal';
                }
                if ( $this->hasOption( 'local' ) ) {
                        $this->mAction = 'fetchLocal';
                }
-               
+
                if ( $this->hasOption( 'used' ) ) {
                        $this->mAction = 'fetchUsed';
                }
                if ( $this->hasOption( 'used' ) ) {
                        $this->mAction = 'fetchUsed';
                }
-               
+
                if ( $this->hasOption( 'shared' ) ) {
                        if ( $this->hasOption( 'used' ) ) {
                                // Include shared-repo files in the used check
                if ( $this->hasOption( 'shared' ) ) {
                        if ( $this->hasOption( 'used' ) ) {
                                // Include shared-repo files in the used check
@@ -72,13 +72,13 @@ By default, outputs relative paths against the parent directory of \$wgUploadDir
                $dbr = wfGetDB( DB_SLAVE );
                $image = $dbr->tableName( 'image' );
                $imagelinks = $dbr->tableName( 'imagelinks' );
                $dbr = wfGetDB( DB_SLAVE );
                $image = $dbr->tableName( 'image' );
                $imagelinks = $dbr->tableName( 'imagelinks' );
-               
+
                $sql = "SELECT DISTINCT il_to, img_name
                        FROM $imagelinks
                        LEFT OUTER JOIN $image
                        ON il_to=img_name";
                $result = $dbr->query( $sql );
                $sql = "SELECT DISTINCT il_to, img_name
                        FROM $imagelinks
                        LEFT OUTER JOIN $image
                        ON il_to=img_name";
                $result = $dbr->query( $sql );
-               
+
                foreach ( $result as $row ) {
                        $this->outputItem( $row->il_to, $shared );
                }
                foreach ( $result as $row ) {
                        $this->outputItem( $row->il_to, $shared );
                }
@@ -95,12 +95,12 @@ By default, outputs relative paths against the parent directory of \$wgUploadDir
                        array( 'img_name' ),
                        '',
                        __METHOD__ );
                        array( 'img_name' ),
                        '',
                        __METHOD__ );
-               
+
                foreach ( $result as $row ) {
                        $this->outputItem( $row->img_name, $shared );
                }
        }
                foreach ( $result as $row ) {
                        $this->outputItem( $row->img_name, $shared );
                }
        }
-       
+
        function outputItem( $name, $shared ) {
                $file = wfFindFile( $name );
                if ( $file && $this->filterItem( $file, $shared ) ) {
        function outputItem( $name, $shared ) {
                $file = wfFindFile( $name );
                if ( $file && $this->filterItem( $file, $shared ) ) {
index 7e4b2f7..307570f 100644 (file)
@@ -44,7 +44,7 @@ class EditCLI extends Maintenance {
                $bot = $this->hasOption( 'b' );
                $autoSummary = $this->hasOption( 'a' );
                $noRC = $this->hasOption( 'no-rc' );
                $bot = $this->hasOption( 'b' );
                $autoSummary = $this->hasOption( 'a' );
                $noRC = $this->hasOption( 'no-rc' );
-               
+
                $wgUser = User::newFromName( $userName );
                if ( !$wgUser ) {
                        $this->error( "Invalid username", true );
                $wgUser = User::newFromName( $userName );
                if ( !$wgUser ) {
                        $this->error( "Invalid username", true );
@@ -52,17 +52,17 @@ class EditCLI extends Maintenance {
                if ( $wgUser->isAnon() ) {
                        $wgUser->addToDatabase();
                }
                if ( $wgUser->isAnon() ) {
                        $wgUser->addToDatabase();
                }
-       
+
                $title = Title::newFromText( $this->getArg() );
                if ( !$title ) {
                        $this->error( "Invalid title", true );
                }
                $title = Title::newFromText( $this->getArg() );
                if ( !$title ) {
                        $this->error( "Invalid title", true );
                }
-       
+
                $wgArticle = new Article( $title );
                $wgArticle = new Article( $title );
-       
+
                # Read the text
                $text = $this->getStdin( Maintenance::STDIN_ALL );
                # Read the text
                $text = $this->getStdin( Maintenance::STDIN_ALL );
-               
+
                # Do the edit
                $this->output( "Saving... " );
                $status = $wgArticle->doEdit( $text, $summary,
                # Do the edit
                $this->output( "Saving... " );
                $status = $wgArticle->doEdit( $text, $summary,
index 1e05bcc..8ea00d1 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Simple script that try to find documented hook and hooks actually
  * in the code and show what's missing.
 /**
  * Simple script that try to find documented hook and hooks actually
  * in the code and show what's missing.
- * 
+ *
  * This script assumes that:
  * - hooks names in hooks.txt are at the beginning of a line and single quoted.
  * - hooks names in code are the first parameter of wfRunHooks.
  * This script assumes that:
  * - hooks names in hooks.txt are at the beginning of a line and single quoted.
  * - hooks names in code are the first parameter of wfRunHooks.
@@ -78,17 +78,17 @@ class FindHooks extends Maintenance {
                        $potential = array_merge( $potential, $this->getHooksFromPath( $dir ) );
                        $bad = array_merge( $bad, $this->getBadHooksFromPath( $dir ) );
                }
                        $potential = array_merge( $potential, $this->getHooksFromPath( $dir ) );
                        $bad = array_merge( $bad, $this->getBadHooksFromPath( $dir ) );
                }
-       
+
                $potential = array_unique( $potential );
                $bad = array_unique( $bad );
                $todo = array_diff( $potential, $documented );
                $deprecated = array_diff( $documented, $potential );
                $potential = array_unique( $potential );
                $bad = array_unique( $bad );
                $todo = array_diff( $potential, $documented );
                $deprecated = array_diff( $documented, $potential );
-       
+
                // let's show the results:
                $this->printArray( 'Undocumented', $todo );
                $this->printArray( 'Documented and not found', $deprecated );
                $this->printArray( 'Unclear hook calls', $bad );
                // let's show the results:
                $this->printArray( 'Undocumented', $todo );
                $this->printArray( 'Documented and not found', $deprecated );
                $this->printArray( 'Unclear hook calls', $bad );
-       
+
                if ( count( $todo ) == 0 && count( $deprecated ) == 0 && count( $bad ) == 0 )
                        $this->output( "Looks good!\n" );
        }
                if ( count( $todo ) == 0 && count( $deprecated ) == 0 && count( $bad ) == 0 )
                        $this->output( "Looks good!\n" );
        }
index d26c12e..6c76ec1 100644 (file)
@@ -29,7 +29,7 @@ class FixSlaveDesync extends Maintenance {
        public function getDbType() {
                return self::DB_ADMIN;
        }
        public function getDbType() {
                return self::DB_ADMIN;
        }
-       
+
        public function execute() {
                $this->slaveIndexes = array();
                for ( $i = 1; $i < wfGetLB()->getServerCount(); $i++ ) {
        public function execute() {
                $this->slaveIndexes = array();
                for ( $i = 1; $i < wfGetLB()->getServerCount(); $i++ ) {
index c6046ca..0c1adba 100644 (file)
@@ -1,9 +1,9 @@
 <?php
 /**
 <?php
 /**
- * This script fixes timestamp corruption caused by one or more webservers 
+ * This script fixes timestamp corruption caused by one or more webservers
  * temporarily being set to the wrong time. The time offset must be known and
  * temporarily being set to the wrong time. The time offset must be known and
- * consistent. Start and end times (in 14-character format) restrict the search, 
- * and must bracket the damage. There must be a majority of good timestamps in the 
+ * consistent. Start and end times (in 14-character format) restrict the search,
+ * and must bracket the damage. There must be a majority of good timestamps in the
  * search period.
  *
  * This program is free software; you can redistribute it and/or modify
  * search period.
  *
  * This program is free software; you can redistribute it and/or modify
@@ -23,7 +23,7 @@
  *
  * @ingroup Maintenance
  */
  *
  * @ingroup Maintenance
  */
+
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class FixTimestamps extends Maintenance {
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class FixTimestamps extends Maintenance {
@@ -47,14 +47,14 @@ class FixTimestamps extends Maintenance {
                $res = $dbw->query( "SELECT MIN(rev_id) as minrev, MAX(rev_id) as maxrev FROM $revisionTable " .
                        "WHERE rev_timestamp BETWEEN '{$start}' AND '{$end}'", __METHOD__ );
                $row = $dbw->fetchObject( $res );
                $res = $dbw->query( "SELECT MIN(rev_id) as minrev, MAX(rev_id) as maxrev FROM $revisionTable " .
                        "WHERE rev_timestamp BETWEEN '{$start}' AND '{$end}'", __METHOD__ );
                $row = $dbw->fetchObject( $res );
-       
+
                if ( is_null( $row->minrev ) ) {
                        $this->error( "No revisions in search period.", true );
                }
                if ( is_null( $row->minrev ) ) {
                        $this->error( "No revisions in search period.", true );
                }
-       
+
                $minRev = $row->minrev;
                $maxRev = $row->maxrev;
                $minRev = $row->minrev;
                $maxRev = $row->maxrev;
-       
+
                # Select all timestamps and IDs
                $sql = "SELECT rev_id, rev_timestamp FROM $revisionTable " .
                        "WHERE rev_id BETWEEN $minRev AND $maxRev";
                # Select all timestamps and IDs
                $sql = "SELECT rev_id, rev_timestamp FROM $revisionTable " .
                        "WHERE rev_id BETWEEN $minRev AND $maxRev";
@@ -64,13 +64,13 @@ class FixTimestamps extends Maintenance {
                } else {
                        $expectedSign = 1;
                }
                } else {
                        $expectedSign = 1;
                }
-       
+
                $res = $dbw->query( $sql, __METHOD__ );
                $res = $dbw->query( $sql, __METHOD__ );
-       
+
                $lastNormal = 0;
                $badRevs = array();
                $numGoodRevs = 0;
                $lastNormal = 0;
                $badRevs = array();
                $numGoodRevs = 0;
-       
+
                foreach ( $res as $row ) {
                        $timestamp = wfTimestamp( TS_UNIX, $row->rev_timestamp );
                        $delta = $timestamp - $lastNormal;
                foreach ( $res as $row ) {
                        $timestamp = wfTimestamp( TS_UNIX, $row->rev_timestamp );
                        $delta = $timestamp - $lastNormal;
@@ -89,25 +89,25 @@ class FixTimestamps extends Maintenance {
                                $badRevs[] = $row->rev_id;
                        }
                }
                                $badRevs[] = $row->rev_id;
                        }
                }
-       
+
                $numBadRevs = count( $badRevs );
                if ( $numBadRevs > $numGoodRevs ) {
                        $this->error(
                "The majority of revisions in the search interval are marked as bad.
 
                $numBadRevs = count( $badRevs );
                if ( $numBadRevs > $numGoodRevs ) {
                        $this->error(
                "The majority of revisions in the search interval are marked as bad.
 
-               Are you sure the offset ($offset) has the right sign? Positive means the clock 
+               Are you sure the offset ($offset) has the right sign? Positive means the clock
                was incorrectly set forward, negative means the clock was incorrectly set back.
 
                was incorrectly set forward, negative means the clock was incorrectly set back.
 
-               If the offset is right, then increase the search interval until there are enough 
+               If the offset is right, then increase the search interval until there are enough
                good revisions to provide a majority reference.", true );
                } elseif ( $numBadRevs == 0 ) {
                        $this->output( "No bad revisions found.\n" );
                        exit( 0 );
                }
                good revisions to provide a majority reference.", true );
                } elseif ( $numBadRevs == 0 ) {
                        $this->output( "No bad revisions found.\n" );
                        exit( 0 );
                }
-       
+
                $this->output( sprintf( "Fixing %d revisions (%.2f%% of revisions in search interval)\n",
                        $numBadRevs, $numBadRevs / ( $numGoodRevs + $numBadRevs ) * 100 ) );
                $this->output( sprintf( "Fixing %d revisions (%.2f%% of revisions in search interval)\n",
                        $numBadRevs, $numBadRevs / ( $numGoodRevs + $numBadRevs ) * 100 ) );
-       
+
                $fixup = -$offset;
                $sql = "UPDATE $revisionTable " .
                        "SET rev_timestamp=DATE_FORMAT(DATE_ADD(rev_timestamp, INTERVAL $fixup SECOND), '%Y%m%d%H%i%s') " .
                $fixup = -$offset;
                $sql = "UPDATE $revisionTable " .
                        "SET rev_timestamp=DATE_FORMAT(DATE_ADD(rev_timestamp, INTERVAL $fixup SECOND), '%Y%m%d%H%i%s') " .
index 31775d7..a78522c 100644 (file)
@@ -13,9 +13,9 @@ Description:
 
 How:
   - Generate lots of nasty wiki text.
 
 How:
   - Generate lots of nasty wiki text.
-  - Ask the Parser to render that wiki text to HTML, or ask MediaWiki's forms 
-    to deal with that wiki text.
-  - Check MediaWiki's output for problems. 
+  - Ask the Parser to render that wiki text to HTML, or ask MediaWiki's forms
+       to deal with that wiki text.
+  - Check MediaWiki's output for problems.
   - Repeat.
 
 Why:
   - Repeat.
 
 Why:
@@ -32,7 +32,7 @@ What type of problems are being checked for:
   - Optionally checking for malformed HTML using the W3C validator.
 
 Background:
   - Optionally checking for malformed HTML using the W3C validator.
 
 Background:
-  Many of the wikiFuzz class methods are a modified PHP port, 
+  Many of the wikiFuzz class methods are a modified PHP port,
   of a "shameless" Python port, of LCAMTUF'S MANGELME:
   - http://www.securiteam.com/tools/6Z00N1PBFK.html
   - http://www.securityfocus.com/archive/1/378632/2004-10-15/2004-10-21/0
   of a "shameless" Python port, of LCAMTUF'S MANGELME:
   - http://www.securiteam.com/tools/6Z00N1PBFK.html
   - http://www.securityfocus.com/archive/1/378632/2004-10-15/2004-10-21/0
@@ -43,15 +43,15 @@ Video:
 
 Requirements:
   To run this, you will need:
 
 Requirements:
   To run this, you will need:
-  - Command-line PHP5, with PHP-curl enabled (not all installations have this 
-    enabled - try "apt-get install php5-curl" if you're on Debian to install).
+  - Command-line PHP5, with PHP-curl enabled (not all installations have this
+       enabled - try "apt-get install php5-curl" if you're on Debian to install).
   - the Tidy standalone executable. ("apt-get install tidy").
 
 Optional:
   - If you want to run the curl scripts, you'll need standalone curl installed
   - the Tidy standalone executable. ("apt-get install tidy").
 
 Optional:
   - If you want to run the curl scripts, you'll need standalone curl installed
-    ("apt-get install curl")
+       ("apt-get install curl")
   - For viewing the W3C validator output on a command line, the "html2text"
   - For viewing the W3C validator output on a command line, the "html2text"
-    program may be useful ("apt-get install html2text")
+       program may be useful ("apt-get install html2text")
 
 Saving tests and test results:
   Any of the fuzz tests which find problems are saved for later review.
 
 Saving tests and test results:
   Any of the fuzz tests which find problems are saved for later review.
@@ -65,7 +65,7 @@ Saving tests and test results:
 Wiki configuration for testing:
   You should make some additions to LocalSettings.php in order to catch the most
   errors. Note this configuration is for **TESTING PURPOSES ONLY**, and is IN NO
 Wiki configuration for testing:
   You should make some additions to LocalSettings.php in order to catch the most
   errors. Note this configuration is for **TESTING PURPOSES ONLY**, and is IN NO
-  WAY, SHAPE, OR FORM suitable for deployment on a hostile network. That said, 
+  WAY, SHAPE, OR FORM suitable for deployment on a hostile network. That said,
   personally I find these additions to be the most helpful for testing purposes:
 
   // --------- Start ---------
   personally I find these additions to be the most helpful for testing purposes:
 
   // --------- Start ---------
@@ -99,7 +99,7 @@ Wiki configuration for testing:
   $wgGroupPermissions['*']['makesysop']       = true;
 
   // Enable weird and wonderful options:
   $wgGroupPermissions['*']['makesysop']       = true;
 
   // Enable weird and wonderful options:
-                              // Increase default error reporting level.
+                                                         // Increase default error reporting level.
   error_reporting (E_ALL);    // At a later date could be increased to E_ALL | E_STRICT
   $wgBlockOpenProxies = true; // Some block pages require this to be true in order to test.
   $wgEnableUploads = true;    // enable uploads.
   error_reporting (E_ALL);    // At a later date could be increased to E_ALL | E_STRICT
   $wgBlockOpenProxies = true; // Some block pages require this to be true in order to test.
   $wgEnableUploads = true;    // enable uploads.
@@ -127,14 +127,14 @@ Wiki configuration for testing:
   require_once("extensions/Renameuser/SpecialRenameuser.php");
   require_once("extensions/LinkSearch/LinkSearch.php");
   // --------- End ---------
   require_once("extensions/Renameuser/SpecialRenameuser.php");
   require_once("extensions/LinkSearch/LinkSearch.php");
   // --------- End ---------
-  
+
   If you want to try E_STRICT error logging, add this to the above:
   // --------- Start ---------
   error_reporting (E_ALL | E_STRICT);
   set_error_handler( 'error_handler' );
   function error_handler ($type, $message, $file=__FILE__, $line=__LINE__) {
   If you want to try E_STRICT error logging, add this to the above:
   // --------- Start ---------
   error_reporting (E_ALL | E_STRICT);
   set_error_handler( 'error_handler' );
   function error_handler ($type, $message, $file=__FILE__, $line=__LINE__) {
-     if ($message == "var: Deprecated. Please use the public/private/protected modifiers") return;
-     print "<br />\n<b>Strict Standards:</b> Type: <b>$type</b>:  $message in <b>$file</b> on line <b>$line</b><br />\n";
+        if ($message == "var: Deprecated. Please use the public/private/protected modifiers") return;
+        print "<br />\n<b>Strict Standards:</b> Type: <b>$type</b>:  $message in <b>$file</b> on line <b>$line</b><br />\n";
   }
   // --------- End ---------
 
   }
   // --------- End ---------
 
@@ -152,17 +152,17 @@ Usage:
 Console output:
   - If requested, first any previously failed tests will be rerun.
   - Then new tests will be generated and run. Any tests that fail will be saved,
 Console output:
   - If requested, first any previously failed tests will be rerun.
   - Then new tests will be generated and run. Any tests that fail will be saved,
-    and a brief message about why they failed will be printed on the console.
+       and a brief message about why they failed will be printed on the console.
   - The console will show the number of tests run, time run, number of tests
   - The console will show the number of tests run, time run, number of tests
-    failed, number of tests being done per minute, and the name of the current test.
+       failed, number of tests being done per minute, and the name of the current test.
 
 TODO:
   Some known things that could improve this script:
 
 TODO:
   Some known things that could improve this script:
-  - Logging in with cookie jar storage needed for some tests (as there are some 
-    pages that cannot be tested without being logged in, and which are currently 
-    untested - e.g. Special:Emailuser, Special:Preferences, adding to Watchist).
+  - Logging in with cookie jar storage needed for some tests (as there are some
+       pages that cannot be tested without being logged in, and which are currently
+       untested - e.g. Special:Emailuser, Special:Preferences, adding to Watchist).
   - Testing of Timeline extension (I cannot test as ploticus has/had issues on
   - Testing of Timeline extension (I cannot test as ploticus has/had issues on
-    my architecture).
+       my architecture).
 
 */
 
 
 */
 
@@ -173,41 +173,41 @@ require_once( dirname( __FILE__ ) . '/commandLine.inc' );
 
 // if the user asked for an explanation of command line options.
 if ( isset( $options["help"] ) ) {
 
 // if the user asked for an explanation of command line options.
 if ( isset( $options["help"] ) ) {
-    print <<<ENDS
+       print <<<ENDS
 MediaWiki $wgVersion fuzz tester
 Usage: php {$_SERVER["SCRIPT_NAME"]} [--quiet] [--base-url=<url-to-test-wiki>]
 MediaWiki $wgVersion fuzz tester
 Usage: php {$_SERVER["SCRIPT_NAME"]} [--quiet] [--base-url=<url-to-test-wiki>]
-                           [--directory=<failed-test-path>] [--include-binary]
-                           [--w3c-validate] [--delete-passed-retests] [--help]
-                           [--user=<username>] [--password=<password>]
-                           [--rerun-failed-tests] [--max-errors=<int>] 
-                           [--max-runtime=<num-minutes>]
-                           [--specific-test=<test-name>]
+                                                  [--directory=<failed-test-path>] [--include-binary]
+                                                  [--w3c-validate] [--delete-passed-retests] [--help]
+                                                  [--user=<username>] [--password=<password>]
+                                                  [--rerun-failed-tests] [--max-errors=<int>]
+                                                  [--max-runtime=<num-minutes>]
+                                                  [--specific-test=<test-name>]
 
 Options:
   --quiet                 : Hides passed tests, shows only failed tests.
 
 Options:
   --quiet                 : Hides passed tests, shows only failed tests.
-  --base-url              : URL to a wiki on which to run the tests. 
-                            The "http://" is optional and can be omitted.
+  --base-url              : URL to a wiki on which to run the tests.
+                                                       The "http://" is optional and can be omitted.
   --directory             : Full path to directory for storing failed tests.
   --directory             : Full path to directory for storing failed tests.
-                            Will be created if it does not exist.
+                                                       Will be created if it does not exist.
   --include-binary        : Includes non-alphanumeric characters in the tests.
   --include-binary        : Includes non-alphanumeric characters in the tests.
-  --w3c-validate          : Validates pages using the W3C's web validator. 
-                            Slow. Currently many pages fail validation.
+  --w3c-validate          : Validates pages using the W3C's web validator.
+                                                       Slow. Currently many pages fail validation.
   --user                  : Login name of a valid user on your test wiki.
   --user                  : Login name of a valid user on your test wiki.
-  --password              : Password for the valid user on your test wiki. 
+  --password              : Password for the valid user on your test wiki.
   --delete-passed-retests : Will delete retests that now pass.
   --delete-passed-retests : Will delete retests that now pass.
-                            Requires --rerun-failed-tests to be meaningful.
+                                                       Requires --rerun-failed-tests to be meaningful.
   --rerun-failed-tests    : Whether to rerun any previously failed tests.
   --max-errors            : Maximum number of errors to report before exiting.
   --rerun-failed-tests    : Whether to rerun any previously failed tests.
   --max-errors            : Maximum number of errors to report before exiting.
-                            Does not include errors from --rerun-failed-tests
+                                                       Does not include errors from --rerun-failed-tests
   --max-runtime           : Maximum runtime, in minutes, to run before exiting.
   --max-runtime           : Maximum runtime, in minutes, to run before exiting.
-                            Only applies to new tests, not --rerun-failed-tests
-  --specific-test         : Runs only the specified fuzz test. 
-                            Only applies to new tests, not --rerun-failed-tests
+                                                       Only applies to new tests, not --rerun-failed-tests
+  --specific-test         : Runs only the specified fuzz test.
+                                                       Only applies to new tests, not --rerun-failed-tests
   --keep-passed-tests     : Saves all test files, even those that pass.
   --help                  : Show this help message.
 
 Example:
   --keep-passed-tests     : Saves all test files, even those that pass.
   --help                  : Show this help message.
 
 Example:
-  If you wanted to fuzz test a nightly MediaWiki checkout using cron for 1 hour, 
+  If you wanted to fuzz test a nightly MediaWiki checkout using cron for 1 hour,
   and only wanted to be informed of errors, and did not want to redo previously
   failed tests, and wanted a maximum of 100 errors, then you could do:
   php {$_SERVER["SCRIPT_NAME"]} --quiet --max-errors=100 --max-runtime=60
   and only wanted to be informed of errors, and did not want to redo previously
   failed tests, and wanted a maximum of 100 errors, then you could do:
   php {$_SERVER["SCRIPT_NAME"]} --quiet --max-errors=100 --max-runtime=60
@@ -215,20 +215,20 @@ Example:
 
 ENDS;
 
 
 ENDS;
 
-    exit( 0 );
+       exit( 0 );
 }
 
 
 // if we got command line options, check they look valid.
 $validOptions = array ( "quiet", "base-url", "directory", "include-binary",
 }
 
 
 // if we got command line options, check they look valid.
 $validOptions = array ( "quiet", "base-url", "directory", "include-binary",
-        "w3c-validate", "user", "password", "delete-passed-retests",
-        "rerun-failed-tests", "max-errors",
-        "max-runtime", "specific-test", "keep-passed-tests", "help" );
+               "w3c-validate", "user", "password", "delete-passed-retests",
+               "rerun-failed-tests", "max-errors",
+               "max-runtime", "specific-test", "keep-passed-tests", "help" );
 if ( !empty( $options ) ) {
 if ( !empty( $options ) ) {
-    $unknownArgs = array_diff ( array_keys( $options ), $validOptions );
-    foreach ( $unknownArgs as $invalidArg ) {
-        print "Ignoring invalid command-line option: --$invalidArg\n";
-    }
+       $unknownArgs = array_diff ( array_keys( $options ), $validOptions );
+       foreach ( $unknownArgs as $invalidArg ) {
+               print "Ignoring invalid command-line option: --$invalidArg\n";
+       }
 }
 
 
 }
 
 
@@ -236,17 +236,17 @@ if ( !empty( $options ) ) {
 
 // URL to some wiki on which we can run our tests.
 if ( !empty( $options["base-url"] ) ) {
 
 // URL to some wiki on which we can run our tests.
 if ( !empty( $options["base-url"] ) ) {
-    define( "WIKI_BASE_URL", $options["base-url"] );
+       define( "WIKI_BASE_URL", $options["base-url"] );
 } else {
 } else {
-    define( "WIKI_BASE_URL", $wgServer . $wgScriptPath . '/' );
+       define( "WIKI_BASE_URL", $wgServer . $wgScriptPath . '/' );
 }
 
 // The directory name where we store the output.
 // Example for Windows: "c:\\temp\\wiki-fuzz"
 if ( !empty( $options["directory"] ) ) {
 }
 
 // The directory name where we store the output.
 // Example for Windows: "c:\\temp\\wiki-fuzz"
 if ( !empty( $options["directory"] ) ) {
-    define( "DIRECTORY", $options["directory"] );
+       define( "DIRECTORY", $options["directory"] );
 } else {
 } else {
-    define( "DIRECTORY", "{$wgUploadDirectory}/fuzz-tests" );
+       define( "DIRECTORY", "{$wgUploadDirectory}/fuzz-tests" );
 }
 
 // Should our test fuzz data include binary strings?
 }
 
 // Should our test fuzz data include binary strings?
@@ -261,21 +261,21 @@ define( "VALIDATOR_URL",  "http://validator.w3.org/check" );
 // Location of Tidy standalone executable.
 define( "PATH_TO_TIDY",  "/usr/bin/tidy" );
 
 // Location of Tidy standalone executable.
 define( "PATH_TO_TIDY",  "/usr/bin/tidy" );
 
-// The name of a user who has edited on your wiki. Used 
+// The name of a user who has edited on your wiki. Used
 // when testing the Special:Contributions and Special:Userlogin page.
 if ( !empty( $options["user"] ) ) {
 // when testing the Special:Contributions and Special:Userlogin page.
 if ( !empty( $options["user"] ) ) {
-    define( "USER_ON_WIKI", $options["user"] );
+       define( "USER_ON_WIKI", $options["user"] );
 } else {
 } else {
-    define( "USER_ON_WIKI", "nickj" );
+       define( "USER_ON_WIKI", "nickj" );
 }
 
 // The password of the above user. Used when testing the login page,
 }
 
 // The password of the above user. Used when testing the login page,
-// and to do this we sometimes need to login successfully. 
+// and to do this we sometimes need to login successfully.
 if ( !empty( $options["password"] ) ) {
 if ( !empty( $options["password"] ) ) {
-    define( "USER_PASSWORD", $options["password"] );
+       define( "USER_PASSWORD", $options["password"] );
 } else {
 } else {
-    // And no, this is not a valid password on any public wiki.
-    define( "USER_PASSWORD", "nickj" );
+       // And no, this is not a valid password on any public wiki.
+       define( "USER_PASSWORD", "nickj" );
 }
 
 // If we have a test that failed, and then we run it again, and it passes,
 }
 
 // If we have a test that failed, and then we run it again, and it passes,
@@ -298,22 +298,22 @@ define( "KEEP_PASSED_TESTS", isset( $options["keep-passed-tests"] ) );
 
 // The maximum runtime, if specified.
 if ( !empty( $options["max-runtime"] ) && intval( $options["max-runtime"] ) > 0 ) {
 
 // The maximum runtime, if specified.
 if ( !empty( $options["max-runtime"] ) && intval( $options["max-runtime"] ) > 0 ) {
-    define( "MAX_RUNTIME", intval( $options["max-runtime"] ) );
+       define( "MAX_RUNTIME", intval( $options["max-runtime"] ) );
 }
 
 // The maximum number of problems to find, if specified. Excludes retest errors.
 if ( !empty( $options["max-errors"] ) && intval( $options["max-errors"] ) > 0 ) {
 }
 
 // The maximum number of problems to find, if specified. Excludes retest errors.
 if ( !empty( $options["max-errors"] ) && intval( $options["max-errors"] ) > 0 ) {
-    define( "MAX_ERRORS", intval( $options["max-errors"] ) );
+       define( "MAX_ERRORS", intval( $options["max-errors"] ) );
 }
 
 // if the user has requested a specific test (instead of all tests), and the test they asked for looks valid.
 if ( !empty( $options["specific-test"] ) ) {
 }
 
 // if the user has requested a specific test (instead of all tests), and the test they asked for looks valid.
 if ( !empty( $options["specific-test"] ) ) {
-    if ( class_exists( $options["specific-test"] ) && get_parent_class( $options["specific-test"] ) == "pageTest" ) {
-        define( "SPECIFIC_TEST", $options["specific-test"] );
-    }
-    else {
-        print "Ignoring invalid --specific-test\n";
-    }
+       if ( class_exists( $options["specific-test"] ) && get_parent_class( $options["specific-test"] ) == "pageTest" ) {
+               define( "SPECIFIC_TEST", $options["specific-test"] );
+       }
+       else {
+               print "Ignoring invalid --specific-test\n";
+       }
 }
 
 // Define the file extensions we'll use:
 }
 
 // Define the file extensions we'll use:
@@ -330,541 +330,541 @@ error_reporting( E_ALL | E_STRICT );
 
 class wikiFuzz {
 
 
 class wikiFuzz {
 
-    // Only some HTML tags are understood with params by MediaWiki, the rest are ignored.
-    // List the tags that accept params below, as well as what those params are.
-    public static $data = array(
-            "B"          => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "CAPTION"    => array( "CLASS", "ID", "STYLE", "align", "lang", "dir", "title" ),
-            "CENTER"     => array( "CLASS", "STYLE", "ID", "lang", "dir", "title" ),
-            "DIV"        => array( "CLASS", "STYLE", "ID", "align", "lang", "dir", "title" ),
-            "FONT"       => array( "CLASS", "STYLE", "ID", "lang", "dir", "title", "face", "size", "color" ),
-            "H1"         => array( "STYLE", "CLASS", "ID", "align", "lang", "dir", "title" ),
-            "H2"         => array( "STYLE", "CLASS", "ID", "align", "lang", "dir", "title" ),
-            "HR"         => array( "STYLE", "CLASS", "ID", "WIDTH", "lang", "dir", "title", "size", "noshade" ),
-            "LI"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "type", "value" ),
-            "TABLE"      => array( "STYLE", "CLASS", "ID", "BGCOLOR", "WIDTH", "ALIGN", "BORDER", "CELLPADDING",
-                                   "CELLSPACING", "lang", "dir", "title", "summary", "frame", "rules" ),
-            "TD"         => array( "STYLE", "CLASS", "ID", "BGCOLOR", "WIDTH", "ALIGN", "COLSPAN", "ROWSPAN",
-                                  "VALIGN", "abbr", "axis", "headers", "scope", "nowrap", "height", "lang",
-                                  "dir", "title", "char", "charoff" ),
-            "TH"         => array( "STYLE", "CLASS", "ID", "BGCOLOR", "WIDTH", "ALIGN", "COLSPAN", "ROWSPAN",
-                                  "VALIGN", "abbr", "axis", "headers", "scope", "nowrap", "height", "lang",
-                                  "dir", "title", "char", "charoff" ),
-            "TR"         => array( "CLASS", "STYLE", "ID", "BGCOLOR", "ALIGN", "VALIGN", "lang", "dir", "title", "char", "charoff" ),
-            "UL"         => array( "CLASS", "STYLE", "ID", "lang", "dir", "title", "type" ),
-            "P"          => array( "style", "class", "id", "align", "lang", "dir", "title" ),
-            "blockquote" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "cite" ),
-            "span"       => array( "CLASS", "ID", "STYLE", "align", "lang", "dir", "title" ),
-            "code"       => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "tt"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "small"      => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "big"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "s"          => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "u"          => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "del"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "datetime", "cite" ),
-            "ins"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "datetime", "cite" ),
-            "sub"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "sup"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "ol"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "type", "start" ),
-            "br"         => array( "CLASS", "ID", "STYLE", "title", "clear" ),
-            "cite"       => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "var"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "dl"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "ruby"       => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "rt"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "rp"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "dt"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "dl"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "em"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "strong"     => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "i"          => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
-            "thead"      => array( "CLASS", "ID", "STYLE", "lang", "dir", "title",  'align', 'char', 'charoff', 'valign' ),
-            "tfoot"      => array( "CLASS", "ID", "STYLE", "lang", "dir", "title",  'align', 'char', 'charoff', 'valign' ),
-            "tbody"      => array( "CLASS", "ID", "STYLE", "lang", "dir", "title",  'align', 'char', 'charoff', 'valign' ),
-            "colgroup"   => array( "CLASS", "ID", "STYLE", "lang", "dir", "title",  'align', 'char', 'charoff', 'valign', 'span', 'width' ),
-            "col"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title",  'align', 'char', 'charoff', 'valign', 'span', 'width' ),
-            "pre"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "width" ),
-
-            // extension tags that accept parameters:
-            "sort"         => array( "order", "class" ),
-            "ref"          => array( "name" ),
-            "categorytree" => array( "hideroot", "mode", "style" ),
-            "chemform"     => array( "link", "wikilink", "query" ),
-            "section"      => array( "begin", "new" ),
-
-            // older MW transclusion.
-            "transclude"   => array( "page" ),
-                );
-
-    // The types of the HTML that we will be testing were defined above
-    // Note: this needs to be initialized later to be equal to: array_keys(wikiFuzz::$data);
-    // as such, it also needs to also be publicly modifiable.
-    public static $types;
-
-
-    // Some attribute values.
-    static private $other = array( "&", "=", ":", "?", "\"", "\n", "%n%n%n%n%n%n%n%n%n%n%n%n", "\\" );
-    static private $ints  = array(
-            // various numbers
-            "0", "-1", "127", "-7897", "89000", "808080", "90928345",
-            "0xfffffff", "ffff",
-
-            // Different ways of saying: '
-            "&#0000039;", // Long UTF-8 Unicode encoding
-            "&#39;",  // dec version.
-            "&#x27;", // hex version.
-            "&#xA7;", // malformed hex variant, MSB not zero.
-
-            // Different ways of saying: "
-            "&#0000034;", // Long UTF-8 Unicode encoding
-            "&#34;",
-            "&#x22;", // hex version.
-            "&#xA2;", // malformed hex variant, MSB not zero.
-
-            // Different ways of saying: <
-            "<",
-            "&#0000060",  // Long UTF-8 Unicode encoding without semicolon (Mediawiki wants the colon)
-            "&#0000060;", // Long UTF-8 Unicode encoding with semicolon
-            "&#60;",
-            "&#x3C;",     // hex version.
-            "&#xBC;",     // malformed hex variant, MSB not zero.
-            "&#x0003C;",  // mid-length hex version
-            "&#X00003C;", // slightly longer hex version, with capital "X"
-
-            // Different ways of saying: >
-            ">",
-            "&#0000062;", // Long UTF-8 Unicode encoding
-            "&#62;",
-            "&#x3E;",     // hex version.
-            "&#xBE;",     // malformed variant, MSB not zero.
-
-            // Different ways of saying: [
-            "&#0000091;", // Long UTF-8 Unicode encoding
-            "&#91;",
-            "&#x5B;",     // hex version.
-
-            // Different ways of saying: {{
-            "&#0000123;&#0000123;", // Long UTF-8 Unicode encoding
-            "&#123;&#123;",
-            "&#x7B;&#x7B;",         // hex version.
-
-            // Different ways of saying: |
-            "&#0000124;", // Long UTF-8 Unicode encoding
-            "&#124;",
-            "&#x7C;",     // hex version.
-            "&#xFC;",     // malformed hex variant, MSB not zero.
+       // Only some HTML tags are understood with params by MediaWiki, the rest are ignored.
+       // List the tags that accept params below, as well as what those params are.
+       public static $data = array(
+                       "B"          => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "CAPTION"    => array( "CLASS", "ID", "STYLE", "align", "lang", "dir", "title" ),
+                       "CENTER"     => array( "CLASS", "STYLE", "ID", "lang", "dir", "title" ),
+                       "DIV"        => array( "CLASS", "STYLE", "ID", "align", "lang", "dir", "title" ),
+                       "FONT"       => array( "CLASS", "STYLE", "ID", "lang", "dir", "title", "face", "size", "color" ),
+                       "H1"         => array( "STYLE", "CLASS", "ID", "align", "lang", "dir", "title" ),
+                       "H2"         => array( "STYLE", "CLASS", "ID", "align", "lang", "dir", "title" ),
+                       "HR"         => array( "STYLE", "CLASS", "ID", "WIDTH", "lang", "dir", "title", "size", "noshade" ),
+                       "LI"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "type", "value" ),
+                       "TABLE"      => array( "STYLE", "CLASS", "ID", "BGCOLOR", "WIDTH", "ALIGN", "BORDER", "CELLPADDING",
+                                                                  "CELLSPACING", "lang", "dir", "title", "summary", "frame", "rules" ),
+                       "TD"         => array( "STYLE", "CLASS", "ID", "BGCOLOR", "WIDTH", "ALIGN", "COLSPAN", "ROWSPAN",
+                                                                 "VALIGN", "abbr", "axis", "headers", "scope", "nowrap", "height", "lang",
+                                                                 "dir", "title", "char", "charoff" ),
+                       "TH"         => array( "STYLE", "CLASS", "ID", "BGCOLOR", "WIDTH", "ALIGN", "COLSPAN", "ROWSPAN",
+                                                                 "VALIGN", "abbr", "axis", "headers", "scope", "nowrap", "height", "lang",
+                                                                 "dir", "title", "char", "charoff" ),
+                       "TR"         => array( "CLASS", "STYLE", "ID", "BGCOLOR", "ALIGN", "VALIGN", "lang", "dir", "title", "char", "charoff" ),
+                       "UL"         => array( "CLASS", "STYLE", "ID", "lang", "dir", "title", "type" ),
+                       "P"          => array( "style", "class", "id", "align", "lang", "dir", "title" ),
+                       "blockquote" => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "cite" ),
+                       "span"       => array( "CLASS", "ID", "STYLE", "align", "lang", "dir", "title" ),
+                       "code"       => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "tt"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "small"      => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "big"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "s"          => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "u"          => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "del"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "datetime", "cite" ),
+                       "ins"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "datetime", "cite" ),
+                       "sub"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "sup"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "ol"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "type", "start" ),
+                       "br"         => array( "CLASS", "ID", "STYLE", "title", "clear" ),
+                       "cite"       => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "var"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "dl"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "ruby"       => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "rt"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "rp"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "dt"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "dl"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "em"         => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "strong"     => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "i"          => array( "CLASS", "ID", "STYLE", "lang", "dir", "title" ),
+                       "thead"      => array( "CLASS", "ID", "STYLE", "lang", "dir", "title",  'align', 'char', 'charoff', 'valign' ),
+                       "tfoot"      => array( "CLASS", "ID", "STYLE", "lang", "dir", "title",  'align', 'char', 'charoff', 'valign' ),
+                       "tbody"      => array( "CLASS", "ID", "STYLE", "lang", "dir", "title",  'align', 'char', 'charoff', 'valign' ),
+                       "colgroup"   => array( "CLASS", "ID", "STYLE", "lang", "dir", "title",  'align', 'char', 'charoff', 'valign', 'span', 'width' ),
+                       "col"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title",  'align', 'char', 'charoff', 'valign', 'span', 'width' ),
+                       "pre"        => array( "CLASS", "ID", "STYLE", "lang", "dir", "title", "width" ),
+
+                       // extension tags that accept parameters:
+                       "sort"         => array( "order", "class" ),
+                       "ref"          => array( "name" ),
+                       "categorytree" => array( "hideroot", "mode", "style" ),
+                       "chemform"     => array( "link", "wikilink", "query" ),
+                       "section"      => array( "begin", "new" ),
+
+                       // older MW transclusion.
+                       "transclude"   => array( "page" ),
+                               );
+
+       // The types of the HTML that we will be testing were defined above
+       // Note: this needs to be initialized later to be equal to: array_keys(wikiFuzz::$data);
+       // as such, it also needs to also be publicly modifiable.
+       public static $types;
+
+
+       // Some attribute values.
+       static private $other = array( "&", "=", ":", "?", "\"", "\n", "%n%n%n%n%n%n%n%n%n%n%n%n", "\\" );
+       static private $ints  = array(
+                       // various numbers
+                       "0", "-1", "127", "-7897", "89000", "808080", "90928345",
+                       "0xfffffff", "ffff",
+
+                       // Different ways of saying: '
+                       "&#0000039;", // Long UTF-8 Unicode encoding
+                       "&#39;",  // dec version.
+                       "&#x27;", // hex version.
+                       "&#xA7;", // malformed hex variant, MSB not zero.
+
+                       // Different ways of saying: "
+                       "&#0000034;", // Long UTF-8 Unicode encoding
+                       "&#34;",
+                       "&#x22;", // hex version.
+                       "&#xA2;", // malformed hex variant, MSB not zero.
+
+                       // Different ways of saying: <
+                       "<",
+                       "&#0000060",  // Long UTF-8 Unicode encoding without semicolon (Mediawiki wants the colon)
+                       "&#0000060;", // Long UTF-8 Unicode encoding with semicolon
+                       "&#60;",
+                       "&#x3C;",     // hex version.
+                       "&#xBC;",     // malformed hex variant, MSB not zero.
+                       "&#x0003C;",  // mid-length hex version
+                       "&#X00003C;", // slightly longer hex version, with capital "X"
+
+                       // Different ways of saying: >
+                       ">",
+                       "&#0000062;", // Long UTF-8 Unicode encoding
+                       "&#62;",
+                       "&#x3E;",     // hex version.
+                       "&#xBE;",     // malformed variant, MSB not zero.
+
+                       // Different ways of saying: [
+                       "&#0000091;", // Long UTF-8 Unicode encoding
+                       "&#91;",
+                       "&#x5B;",     // hex version.
+
+                       // Different ways of saying: {{
+                       "&#0000123;&#0000123;", // Long UTF-8 Unicode encoding
+                       "&#123;&#123;",
+                       "&#x7B;&#x7B;",         // hex version.
+
+                       // Different ways of saying: |
+                       "&#0000124;", // Long UTF-8 Unicode encoding
+                       "&#124;",
+                       "&#x7C;",     // hex version.
+                       "&#xFC;",     // malformed hex variant, MSB not zero.
 
                        // a "lignature" - http://www.robinlionheart.com/stds/html4/spchars#ligature
                        // &#8204; == &zwnj;
 
                        // a "lignature" - http://www.robinlionheart.com/stds/html4/spchars#ligature
                        // &#8204; == &zwnj;
-            "&#8204;"
-                );
-
-    // Defines various wiki-related bits of syntax, that can potentially cause 
-    // MediaWiki to do something other than just print that literal text.
-    static private $ext = array(
-            // links, templates, parameters.
-            "[[", "]]", "{{", "}}", "|", "[", "]", "{{{", "}}}", "|]]",
-
-            // wiki tables.
-            "\n{|", "\n|}",
-            "!",
-            "\n!",
-            "!!",
-            "||",
-            "\n|-", "| ", "\n|",
-
-            // section headings.
-            "=", "==", "===", "====", "=====", "======",
-
-            // lists (ordered and unordered) and indentation.
-            "\n*", "*", "\n:", ":",
-            "\n#", "#",
-
-            // definition lists (dl, dt, dd), newline, and newline with pre, and a tab.
-            "\n;", ";", "\n ",
-
-            // Whitespace: newline, tab, space.
-            "\n", "\t", " ",
-
-            // Some XSS attack vectors from http://ha.ckers.org/xss.html 
-            "&#x09;", // tab
-            "&#x0A;", // newline
-            "&#x0D;", // carriage return
-            "\0",     // null character
-            " &#14; ", // spaces and meta characters
-            "'';!--\"<XSS>=&{()}", // compact injection of XSS & SQL tester
-
-            // various NULL fields
-            "%00",
-            "&#00;",
-            "\0",
-
-            // horizontal rule.
-            "-----", "\n-----",
-
-            // signature, redirect, bold, italics.
-            "~~~~", "#REDIRECT [[", "'''", "''",
-
-            // comments.
-            "<!--", "-->",
-
-            // quotes.
-            "\"", "'",
-
-            // tag start and tag end.
-            "<", ">",
-
-            // implicit link creation on URIs.
-            "http://",
-            "https://",
-            "ftp://",
-            "irc://",
-            "news:",
-            'gopher://',
-            'telnet://',
-            'nntp://',
-            'worldwind://',
-            'mailto:',
-
-            // images.
-            "[[image:",
-            ".gif",
-            ".png",
-            ".jpg",
-            ".jpeg",
-            'thumbnail=',
-            'thumbnail',
-            'thumb=',
-            'thumb',
-            'right',
-            'none',
-            'left',
-            'framed',
-            'frame',
-            'enframed',
-            'centre',
-            'center',
-            "Image:",
-            "[[:Image",
-            'px',
-            'upright=',
-            'border',
-
-            // misc stuff to throw at the Parser.
-            '%08X',
-            '/',
-            ":x{|",
-            "\n|+",
-            "<noinclude>",
-            "</noinclude>",
-            " \302\273",
-            " :",
-            " !",
-            " ;",
-            "\302\253",
-            "[[category:",
-            "?=",
-            "(",
-            ")",
-            "]]]",
-            "../",
-            "{{{{",
-            "}}}}",
-            "[[Special:",
-            "<includeonly>",
-            "</includeonly>",
-            "<!--MWTEMPLATESECTION=",
-            '<!--MWTOC-->',
-
-            // implicit link creation on booknum, RFC, and PubMed ID usage (both with and without IDs)
-            "ISBN 2",
-            "RFC 000",
-            "PMID 000",
-            "ISBN ",
-            "RFC ",
-            "PMID ",
-
-            // magic words:
-            '__NOTOC__',
-            '__FORCETOC__',
-            '__NOEDITSECTION__',
-            '__START__',
-            '__NOTITLECONVERT__',
-            '__NOCONTENTCONVERT__',
-            '__END__',
-            '__TOC__',
-            '__NOTC__',
-            '__NOCC__',
-            "__FORCETOC__",
-            "__NEWSECTIONLINK__",
-            "__NOGALLERY__",
-
-            // more magic words / internal templates.
-            '{{PAGENAME}}',
-            '{{PAGENAMEE}}',
-            '{{NAMESPACE}}',
-            "{{MSG:",
-            "}}",
-            "{{MSGNW:",
-            "}}",
-            "{{INT:",
-            "}}",
-            '{{SITENAME}}',
-            "{{NS:",
-            "}}",
-            "{{LOCALURL:",
-            "}}",
-            "{{LOCALURLE:",
-            "}}",
-            "{{SCRIPTPATH}}",
-            "{{GRAMMAR:gentiv|",
-            "}}",
-            "{{REVISIONID}}",
-            "{{SUBPAGENAME}}",
-            "{{SUBPAGENAMEE}}",
-            "{{ns:0}}",
-            "{{fullurle:",
-            "}}",
-            "{{subst::",
-            "}}",
-            "{{UCFIRST:",
-            "}}",
-            "{{UC:",
-            '{{SERVERNAME}}',
-            '{{SERVER}}',
-            "{{RAW:",
-            "}}",
-            "{{PLURAL:",
-            "}}",
-            "{{LCFIRST:",
-            "}}",
-            "{{LC:",
-            "}}",
-            '{{CURRENTWEEK}}',
-            '{{CURRENTDOW}}',
-            "{{INT:{{LC:contribs-showhideminor}}|",
-            "}}",
-            "{{INT:googlesearch|",
-            "}}",
-            "{{BASEPAGENAME}}",
-            "{{CONTENTLANGUAGE}}",
-            "{{PAGESINNAMESPACE:}}",
-            "{{#language:",
-            "}}",
-            "{{#special:",
-            "}}",
-            "{{#special:emailuser",
-            "}}",
-
-            // Some raw link for magic words.
-            "{{NUMBEROFPAGES:R",
-            "}}",
-            "{{NUMBEROFUSERS:R",
-            "}}",
-            "{{NUMBEROFARTICLES:R",
-            "}}",
-            "{{NUMBEROFFILES:R",
-            "}}",
-            "{{NUMBEROFADMINS:R",
-            "}}",
-            "{{padleft:",
-            "}}",
-            "{{padright:",
-            "}}",
-            "{{DEFAULTSORT:",
-            "}}",
-
-            // internal Math "extension":
-            "<math>",
-            "</math>",
-
-            // Parser extension functions:
-            "{{#expr:",
-            "{{#if:",
-            "{{#ifeq:",
-            "{{#ifexist:",
-            "{{#ifexpr:",
-            "{{#switch:",
-            "{{#time:",
-            "}}",
-
-            // references table for the Cite extension.
-            "<references/>",
-
-            // Internal Parser tokens - try inserting some of these.
-            "UNIQ25f46b0524f13e67NOPARSE",
-            "UNIQ17197916557e7cd6-HTMLCommentStrip46238afc3bb0cf5f00000002",
-            "\x07UNIQ17197916557e7cd6-HTMLCommentStrip46238afc3bb0cf5f00000002-QINU",
-
-            // Inputbox extension:
-            "<inputbox>\ntype=search\nsearchbuttonlabel=\n",
-            "</inputbox>",
-
-            // charInsert extension:
-            "<charInsert>",
-            "</charInsert>",
-
-            // wikiHiero extension:
-            "<hiero>",
-            "</hiero>",
-
-            // Image gallery:
-            "<gallery>",
-            "</gallery>",
-
-            // FixedImage extension.
-            "<fundraising/>",
-
-            // Timeline extension: currently untested.
-
-            // Nowiki:
-            "<nOwIkI>",
-            "</nowiki>",
-
-            // an external image to test the external image displaying code
-            "http://debian.org/Pics/debian.png",
-
-            // LabeledSectionTransclusion extension.
-            "{{#lstx:",
-            "}}",
-            "{{#lst:",
-            "}}",
-            "{{#lst:Main Page|",
-            "}}"
-            );
-
-    /**
-     ** Randomly returns one element of the input array.
-     */
-    static public function chooseInput( array $input ) {
-        $randindex = wikiFuzz::randnum( count( $input ) - 1 );
-        return $input[$randindex];
-    }
-
-    // Max number of parameters for HTML attributes.
-    static private $maxparams = 10;
-
-    /** 
-     ** Returns random number between finish and start.
-     */
-    static public function randnum( $finish, $start = 0 ) {
-        return mt_rand( $start, $finish );
-    }
-
-    /**
-     ** Returns a mix of random text and random wiki syntax.
-     */
-    static private function randstring() {
-        $thestring = "";
-
-        for ( $i = 0; $i < 40; $i++ ) {
-            $what = wikiFuzz::randnum( 1 );
-
-            if ( $what == 0 ) { // include some random wiki syntax
-                $which = wikiFuzz::randnum( count( wikiFuzz::$ext ) - 1 );
-                $thestring .= wikiFuzz::$ext[$which];
-            }
-            else { // include some random text
-                $char = INCLUDE_BINARY
-                    // Decimal version:
-                    // "&#" . wikiFuzz::randnum(255) . ";"
-                    // Hex version:
-                    ? "&#x" . str_pad( dechex( wikiFuzz::randnum( 255 ) ), wikiFuzz::randnum( 2, 7 ), "0", STR_PAD_LEFT ) . ";"
-                    // A truly binary version:
-                    // ? chr(wikiFuzz::randnum(0,255))
-                    : chr( wikiFuzz::randnum( 126, 32 ) );
-
-                $length = wikiFuzz::randnum( 8 );
-                $thestring .= str_repeat ( $char, $length );
-            }
-        }
-        return $thestring;
-    }
-
-    /**
-     ** Returns either random text, or random wiki syntax, or random data from "ints",
-     **        or random data from "other".
-     */
-    static private function makestring() {
-        $what = wikiFuzz::randnum( 2 );
-        if ( $what == 0 ) {
-            return wikiFuzz::randstring();
-        }
-        elseif ( $what == 1 ) {
-            return wikiFuzz::$ints[wikiFuzz::randnum( count( wikiFuzz::$ints ) - 1 )];
-        }
-        else {
-            return wikiFuzz::$other[wikiFuzz::randnum( count( wikiFuzz::$other ) - 1 )];
-        }
-    }
-
-
-    /**
-     ** Strips out the stuff that Mediawiki balks at in a page's title.
-     **        Implementation copied/pasted from cleanupTable.inc & cleanupImages.php
-     */
-    static public function makeTitleSafe( $str ) {
-        $legalTitleChars = " %!\"$&'()*,\\-.\\/0-9:;=?@A-Z\\\\^_`a-z~\\x80-\\xFF";
-        return preg_replace_callback(
-                "/([^$legalTitleChars])/",
-                create_function(
-                    // single quotes are essential here,
-                    // or alternative escape all $ as \$
-                    '$matches',
-                    'return sprintf( "\\x%02x", ord( $matches[1] ) );'
-                    ),
-                $str );
-    }
-
-    /**
-     ** Returns a string of fuzz text.
-     */
-    static private function loop() {
-        switch ( wikiFuzz::randnum( 3 ) ) {
-            case 1: // an opening tag, with parameters.
-                $string = "";
-                $i = wikiFuzz::randnum( count( wikiFuzz::$types ) - 1 );
-                $t = wikiFuzz::$types[$i];
-                $arr = wikiFuzz::$data[$t];
-                $string .= "<" . $t . " ";
-                $num_params = min( wikiFuzz::$maxparams, count( $arr ) );
-                for ( $z = 0; $z < $num_params; $z++ ) {
-                    $badparam = $arr[wikiFuzz::randnum( count( $arr ) - 1 )];
-                    $badstring = wikiFuzz::makestring();
-                    $string .= $badparam . "=" . wikiFuzz::getRandQuote() . $badstring . wikiFuzz::getRandQuote() . " ";
-                }
-                $string .= ">\n";
-                return $string;
-            case 2: // a closing tag.
-                $i = wikiFuzz::randnum( count( wikiFuzz::$types ) - 1 );
-                return "</" . wikiFuzz::$types[$i] . ">";
-            case 3: // a random string, between tags.
-                return wikiFuzz::makeString();
-        }
-        return "";    // catch-all, should never be called.
-    }
-
-    /**
-     ** Returns one of the three styles of random quote: ', ", and nothing.
-     */
-    static private function getRandQuote() {
-        switch ( wikiFuzz::randnum( 3 ) ) {
-            case 1 : return "'";
-            case 2 : return "\"";
-            default: return "";
-        }
-    }
-
-    /**
-     ** Returns fuzz text, with the parameter indicating approximately how many lines of text you want.
-     */
-    static public function makeFuzz( $maxtypes = 2 ) {
-        $page = "";
-        for ( $k = 0; $k < $maxtypes; $k++ ) {
-            $page .= wikiFuzz::loop();
-        }
-        return $page;
-    }
+                       "&#8204;"
+                               );
+
+       // Defines various wiki-related bits of syntax, that can potentially cause
+       // MediaWiki to do something other than just print that literal text.
+       static private $ext = array(
+                       // links, templates, parameters.
+                       "[[", "]]", "{{", "}}", "|", "[", "]", "{{{", "}}}", "|]]",
+
+                       // wiki tables.
+                       "\n{|", "\n|}",
+                       "!",
+                       "\n!",
+                       "!!",
+                       "||",
+                       "\n|-", "| ", "\n|",
+
+                       // section headings.
+                       "=", "==", "===", "====", "=====", "======",
+
+                       // lists (ordered and unordered) and indentation.
+                       "\n*", "*", "\n:", ":",
+                       "\n#", "#",
+
+                       // definition lists (dl, dt, dd), newline, and newline with pre, and a tab.
+                       "\n;", ";", "\n ",
+
+                       // Whitespace: newline, tab, space.
+                       "\n", "\t", " ",
+
+                       // Some XSS attack vectors from http://ha.ckers.org/xss.html
+                       "&#x09;", // tab
+                       "&#x0A;", // newline
+                       "&#x0D;", // carriage return
+                       "\0",     // null character
+                       " &#14; ", // spaces and meta characters
+                       "'';!--\"<XSS>=&{()}", // compact injection of XSS & SQL tester
+
+                       // various NULL fields
+                       "%00",
+                       "&#00;",
+                       "\0",
+
+                       // horizontal rule.
+                       "-----", "\n-----",
+
+                       // signature, redirect, bold, italics.
+                       "~~~~", "#REDIRECT [[", "'''", "''",
+
+                       // comments.
+                       "<!--", "-->",
+
+                       // quotes.
+                       "\"", "'",
+
+                       // tag start and tag end.
+                       "<", ">",
+
+                       // implicit link creation on URIs.
+                       "http://",
+                       "https://",
+                       "ftp://",
+                       "irc://",
+                       "news:",
+                       'gopher://',
+                       'telnet://',
+                       'nntp://',
+                       'worldwind://',
+                       'mailto:',
+
+                       // images.
+                       "[[image:",
+                       ".gif",
+                       ".png",
+                       ".jpg",
+                       ".jpeg",
+                       'thumbnail=',
+                       'thumbnail',
+                       'thumb=',
+                       'thumb',
+                       'right',
+                       'none',
+                       'left',
+                       'framed',
+                       'frame',
+                       'enframed',
+                       'centre',
+                       'center',
+                       "Image:",
+                       "[[:Image",
+                       'px',
+                       'upright=',
+                       'border',
+
+                       // misc stuff to throw at the Parser.
+                       '%08X',
+                       '/',
+                       ":x{|",
+                       "\n|+",
+                       "<noinclude>",
+                       "</noinclude>",
+                       " \302\273",
+                       " :",
+                       " !",
+                       " ;",
+                       "\302\253",
+                       "[[category:",
+                       "?=",
+                       "(",
+                       ")",
+                       "]]]",
+                       "../",
+                       "{{{{",
+                       "}}}}",
+                       "[[Special:",
+                       "<includeonly>",
+                       "</includeonly>",
+                       "<!--MWTEMPLATESECTION=",
+                       '<!--MWTOC-->',
+
+                       // implicit link creation on booknum, RFC, and PubMed ID usage (both with and without IDs)
+                       "ISBN 2",
+                       "RFC 000",
+                       "PMID 000",
+                       "ISBN ",
+                       "RFC ",
+                       "PMID ",
+
+                       // magic words:
+                       '__NOTOC__',
+                       '__FORCETOC__',
+                       '__NOEDITSECTION__',
+                       '__START__',
+                       '__NOTITLECONVERT__',
+                       '__NOCONTENTCONVERT__',
+                       '__END__',
+                       '__TOC__',
+                       '__NOTC__',
+                       '__NOCC__',
+                       "__FORCETOC__",
+                       "__NEWSECTIONLINK__",
+                       "__NOGALLERY__",
+
+                       // more magic words / internal templates.
+                       '{{PAGENAME}}',
+                       '{{PAGENAMEE}}',
+                       '{{NAMESPACE}}',
+                       "{{MSG:",
+                       "}}",
+                       "{{MSGNW:",
+                       "}}",
+                       "{{INT:",
+                       "}}",
+                       '{{SITENAME}}',
+                       "{{NS:",
+                       "}}",
+                       "{{LOCALURL:",
+                       "}}",
+                       "{{LOCALURLE:",
+                       "}}",
+                       "{{SCRIPTPATH}}",
+                       "{{GRAMMAR:gentiv|",
+                       "}}",
+                       "{{REVISIONID}}",
+                       "{{SUBPAGENAME}}",
+                       "{{SUBPAGENAMEE}}",
+                       "{{ns:0}}",
+                       "{{fullurle:",
+                       "}}",
+                       "{{subst::",
+                       "}}",
+                       "{{UCFIRST:",
+                       "}}",
+                       "{{UC:",
+                       '{{SERVERNAME}}',
+                       '{{SERVER}}',
+                       "{{RAW:",
+                       "}}",
+                       "{{PLURAL:",
+                       "}}",
+                       "{{LCFIRST:",
+                       "}}",
+                       "{{LC:",
+                       "}}",
+                       '{{CURRENTWEEK}}',
+                       '{{CURRENTDOW}}',
+                       "{{INT:{{LC:contribs-showhideminor}}|",
+                       "}}",
+                       "{{INT:googlesearch|",
+                       "}}",
+                       "{{BASEPAGENAME}}",
+                       "{{CONTENTLANGUAGE}}",
+                       "{{PAGESINNAMESPACE:}}",
+                       "{{#language:",
+                       "}}",
+                       "{{#special:",
+                       "}}",
+                       "{{#special:emailuser",
+                       "}}",
+
+                       // Some raw link for magic words.
+                       "{{NUMBEROFPAGES:R",
+                       "}}",
+                       "{{NUMBEROFUSERS:R",
+                       "}}",
+                       "{{NUMBEROFARTICLES:R",
+                       "}}",
+                       "{{NUMBEROFFILES:R",
+                       "}}",
+                       "{{NUMBEROFADMINS:R",
+                       "}}",
+                       "{{padleft:",
+                       "}}",
+                       "{{padright:",
+                       "}}",
+                       "{{DEFAULTSORT:",
+                       "}}",
+
+                       // internal Math "extension":
+                       "<math>",
+                       "</math>",
+
+                       // Parser extension functions:
+                       "{{#expr:",
+                       "{{#if:",
+                       "{{#ifeq:",
+                       "{{#ifexist:",
+                       "{{#ifexpr:",
+                       "{{#switch:",
+                       "{{#time:",
+                       "}}",
+
+                       // references table for the Cite extension.
+                       "<references/>",
+
+                       // Internal Parser tokens - try inserting some of these.
+                       "UNIQ25f46b0524f13e67NOPARSE",
+                       "UNIQ17197916557e7cd6-HTMLCommentStrip46238afc3bb0cf5f00000002",
+                       "\x07UNIQ17197916557e7cd6-HTMLCommentStrip46238afc3bb0cf5f00000002-QINU",
+
+                       // Inputbox extension:
+                       "<inputbox>\ntype=search\nsearchbuttonlabel=\n",
+                       "</inputbox>",
+
+                       // charInsert extension:
+                       "<charInsert>",
+                       "</charInsert>",
+
+                       // wikiHiero extension:
+                       "<hiero>",
+                       "</hiero>",
+
+                       // Image gallery:
+                       "<gallery>",
+                       "</gallery>",
+
+                       // FixedImage extension.
+                       "<fundraising/>",
+
+                       // Timeline extension: currently untested.
+
+                       // Nowiki:
+                       "<nOwIkI>",
+                       "</nowiki>",
+
+                       // an external image to test the external image displaying code
+                       "http://debian.org/Pics/debian.png",
+
+                       // LabeledSectionTransclusion extension.
+                       "{{#lstx:",
+                       "}}",
+                       "{{#lst:",
+                       "}}",
+                       "{{#lst:Main Page|",
+                       "}}"
+                       );
+
+       /**
+        ** Randomly returns one element of the input array.
+        */
+       static public function chooseInput( array $input ) {
+               $randindex = wikiFuzz::randnum( count( $input ) - 1 );
+               return $input[$randindex];
+       }
+
+       // Max number of parameters for HTML attributes.
+       static private $maxparams = 10;
+
+       /**
+        ** Returns random number between finish and start.
+        */
+       static public function randnum( $finish, $start = 0 ) {
+               return mt_rand( $start, $finish );
+       }
+
+       /**
+        ** Returns a mix of random text and random wiki syntax.
+        */
+       static private function randstring() {
+               $thestring = "";
+
+               for ( $i = 0; $i < 40; $i++ ) {
+                       $what = wikiFuzz::randnum( 1 );
+
+                       if ( $what == 0 ) { // include some random wiki syntax
+                               $which = wikiFuzz::randnum( count( wikiFuzz::$ext ) - 1 );
+                               $thestring .= wikiFuzz::$ext[$which];
+                       }
+                       else { // include some random text
+                               $char = INCLUDE_BINARY
+                                       // Decimal version:
+                                       // "&#" . wikiFuzz::randnum(255) . ";"
+                                       // Hex version:
+                                       ? "&#x" . str_pad( dechex( wikiFuzz::randnum( 255 ) ), wikiFuzz::randnum( 2, 7 ), "0", STR_PAD_LEFT ) . ";"
+                                       // A truly binary version:
+                                       // ? chr(wikiFuzz::randnum(0,255))
+                                       : chr( wikiFuzz::randnum( 126, 32 ) );
+
+                               $length = wikiFuzz::randnum( 8 );
+                               $thestring .= str_repeat ( $char, $length );
+                       }
+               }
+               return $thestring;
+       }
+
+       /**
+        ** Returns either random text, or random wiki syntax, or random data from "ints",
+        **        or random data from "other".
+        */
+       static private function makestring() {
+               $what = wikiFuzz::randnum( 2 );
+               if ( $what == 0 ) {
+                       return wikiFuzz::randstring();
+               }
+               elseif ( $what == 1 ) {
+                       return wikiFuzz::$ints[wikiFuzz::randnum( count( wikiFuzz::$ints ) - 1 )];
+               }
+               else {
+                       return wikiFuzz::$other[wikiFuzz::randnum( count( wikiFuzz::$other ) - 1 )];
+               }
+       }
+
+
+       /**
+        ** Strips out the stuff that Mediawiki balks at in a page's title.
+        **        Implementation copied/pasted from cleanupTable.inc & cleanupImages.php
+        */
+       static public function makeTitleSafe( $str ) {
+               $legalTitleChars = " %!\"$&'()*,\\-.\\/0-9:;=?@A-Z\\\\^_`a-z~\\x80-\\xFF";
+               return preg_replace_callback(
+                               "/([^$legalTitleChars])/",
+                               create_function(
+                                       // single quotes are essential here,
+                                       // or alternative escape all $ as \$
+                                       '$matches',
+                                       'return sprintf( "\\x%02x", ord( $matches[1] ) );'
+                                       ),
+                               $str );
+       }
+
+       /**
+        ** Returns a string of fuzz text.
+        */
+       static private function loop() {
+               switch ( wikiFuzz::randnum( 3 ) ) {
+                       case 1: // an opening tag, with parameters.
+                               $string = "";
+                               $i = wikiFuzz::randnum( count( wikiFuzz::$types ) - 1 );
+                               $t = wikiFuzz::$types[$i];
+                               $arr = wikiFuzz::$data[$t];
+                               $string .= "<" . $t . " ";
+                               $num_params = min( wikiFuzz::$maxparams, count( $arr ) );
+                               for ( $z = 0; $z < $num_params; $z++ ) {
+                                       $badparam = $arr[wikiFuzz::randnum( count( $arr ) - 1 )];
+                                       $badstring = wikiFuzz::makestring();
+                                       $string .= $badparam . "=" . wikiFuzz::getRandQuote() . $badstring . wikiFuzz::getRandQuote() . " ";
+                               }
+                               $string .= ">\n";
+                               return $string;
+                       case 2: // a closing tag.
+                               $i = wikiFuzz::randnum( count( wikiFuzz::$types ) - 1 );
+                               return "</" . wikiFuzz::$types[$i] . ">";
+                       case 3: // a random string, between tags.
+                               return wikiFuzz::makeString();
+               }
+               return "";    // catch-all, should never be called.
+       }
+
+       /**
+        ** Returns one of the three styles of random quote: ', ", and nothing.
+        */
+       static private function getRandQuote() {
+               switch ( wikiFuzz::randnum( 3 ) ) {
+                       case 1 : return "'";
+                       case 2 : return "\"";
+                       default: return "";
+               }
+       }
+
+       /**
+        ** Returns fuzz text, with the parameter indicating approximately how many lines of text you want.
+        */
+       static public function makeFuzz( $maxtypes = 2 ) {
+               $page = "";
+               for ( $k = 0; $k < $maxtypes; $k++ ) {
+                       $page .= wikiFuzz::loop();
+               }
+               return $page;
+       }
 }
 
 
 }
 
 
@@ -876,30 +876,30 @@ class wikiFuzz {
  **        2) the URL we are going to test those parameters on.
  **        3) Any cookies required for the test.
  **        4) Whether Tidy should validate the page. Defaults to true, but can be turned off.
  **        2) the URL we are going to test those parameters on.
  **        3) Any cookies required for the test.
  **        4) Whether Tidy should validate the page. Defaults to true, but can be turned off.
- **        Declared abstract because it should be extended by a class 
+ **        Declared abstract because it should be extended by a class
  **        that supplies these parameters.
  */
 abstract class pageTest {
  **        that supplies these parameters.
  */
 abstract class pageTest {
-    protected $params;
-    protected $pagePath;
-    protected $cookie = "";
-    protected $tidyValidate = true;
+       protected $params;
+       protected $pagePath;
+       protected $cookie = "";
+       protected $tidyValidate = true;
+
+       public function getParams() {
+               return $this->params;
+       }
 
 
-    public function getParams() {
-        return $this->params;
-    }
+       public function getPagePath() {
+               return $this->pagePath;
+       }
 
 
-    public function getPagePath() {
-        return $this->pagePath;
-    }
+       public function getCookie() {
+               return $this->cookie;
+       }
 
 
-    public function getCookie() {
-        return $this->cookie;
-    }
-    
-    public function tidyValidate() {
-       return $this->tidyValidate;
-    }
+       public function tidyValidate() {
+               return $this->tidyValidate;
+       }
 }
 
 
 }
 
 
@@ -907,31 +907,31 @@ abstract class pageTest {
  ** a page test for the "Edit" page. Tests Parser.php and Sanitizer.php.
  */
 class editPageTest extends pageTest {
  ** a page test for the "Edit" page. Tests Parser.php and Sanitizer.php.
  */
 class editPageTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=WIKIFUZZ";
-
-        $this->params = array (
-                "action"        => "submit",
-                "wpMinoredit"   => wikiFuzz::makeFuzz( 2 ),
-                "wpPreview"     => wikiFuzz::makeFuzz( 2 ),
-                "wpSection"     => wikiFuzz::makeFuzz( 2 ),
-                "wpEdittime"    => wikiFuzz::makeFuzz( 2 ),
-                "wpSummary"     => wikiFuzz::makeFuzz( 2 ),
-                "wpScrolltop"   => wikiFuzz::makeFuzz( 2 ),
-                "wpStarttime"   => wikiFuzz::makeFuzz( 2 ),
-                "wpAutoSummary" => wikiFuzz::makeFuzz( 2 ),
-                "wpTextbox1"    => wikiFuzz::makeFuzz( 40 )  // the main wiki text, need lots of this.
-                );
-
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpSection"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpEdittime"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpSummary"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpScrolltop"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpStarttime"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpAutoSummary"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpTextbox1"] );
-    }
+       function __construct() {
+               $this->pagePath = "index.php?title=WIKIFUZZ";
+
+               $this->params = array (
+                               "action"        => "submit",
+                               "wpMinoredit"   => wikiFuzz::makeFuzz( 2 ),
+                               "wpPreview"     => wikiFuzz::makeFuzz( 2 ),
+                               "wpSection"     => wikiFuzz::makeFuzz( 2 ),
+                               "wpEdittime"    => wikiFuzz::makeFuzz( 2 ),
+                               "wpSummary"     => wikiFuzz::makeFuzz( 2 ),
+                               "wpScrolltop"   => wikiFuzz::makeFuzz( 2 ),
+                               "wpStarttime"   => wikiFuzz::makeFuzz( 2 ),
+                               "wpAutoSummary" => wikiFuzz::makeFuzz( 2 ),
+                               "wpTextbox1"    => wikiFuzz::makeFuzz( 40 )  // the main wiki text, need lots of this.
+                               );
+
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpSection"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpEdittime"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpSummary"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpScrolltop"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpStarttime"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpAutoSummary"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpTextbox1"] );
+       }
 }
 
 
 }
 
 
@@ -939,18 +939,18 @@ class editPageTest extends pageTest {
  ** a page test for "Special:Listusers".
  */
 class listusersTest extends pageTest {
  ** a page test for "Special:Listusers".
  */
 class listusersTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Listusers";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Listusers";
 
 
-        $this->params = array (
-                "title"        => wikiFuzz::makeFuzz( 2 ),
-                "group"        => wikiFuzz::makeFuzz( 2 ),
-                "username"     => wikiFuzz::makeFuzz( 2 ),
-                "Go"           => wikiFuzz::makeFuzz( 2 ),
-                "limit"        => wikiFuzz::chooseInput( array( "0", "-1", "---'----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                "offset"       => wikiFuzz::chooseInput( array( "0", "-1", "--------'-----0", "+1", "81343242346234234", wikiFuzz::makeFuzz( 2 ) ) )
-                );
-    }
+               $this->params = array (
+                               "title"        => wikiFuzz::makeFuzz( 2 ),
+                               "group"        => wikiFuzz::makeFuzz( 2 ),
+                               "username"     => wikiFuzz::makeFuzz( 2 ),
+                               "Go"           => wikiFuzz::makeFuzz( 2 ),
+                               "limit"        => wikiFuzz::chooseInput( array( "0", "-1", "---'----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "offset"       => wikiFuzz::chooseInput( array( "0", "-1", "--------'-----0", "+1", "81343242346234234", wikiFuzz::makeFuzz( 2 ) ) )
+                               );
+       }
 }
 
 
 }
 
 
@@ -958,34 +958,34 @@ class listusersTest extends pageTest {
  ** a page test for "Special:Search".
  */
 class searchTest extends pageTest {
  ** a page test for "Special:Search".
  */
 class searchTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Search";
-
-        $this->params = array (
-                "action"        => "index.php?title=Special:Search",
-                "ns0"           => wikiFuzz::makeFuzz( 2 ),
-                "ns1"           => wikiFuzz::makeFuzz( 2 ),
-                "ns2"           => wikiFuzz::makeFuzz( 2 ),
-                "ns3"           => wikiFuzz::makeFuzz( 2 ),
-                "ns4"           => wikiFuzz::makeFuzz( 2 ),
-                "ns5"           => wikiFuzz::makeFuzz( 2 ),
-                "ns6"           => wikiFuzz::makeFuzz( 2 ),
-                "ns7"           => wikiFuzz::makeFuzz( 2 ),
-                "ns8"           => wikiFuzz::makeFuzz( 2 ),
-                "ns9"           => wikiFuzz::makeFuzz( 2 ),
-                "ns10"          => wikiFuzz::makeFuzz( 2 ),
-                "ns11"          => wikiFuzz::makeFuzz( 2 ),
-                "ns12"          => wikiFuzz::makeFuzz( 2 ),
-                "ns13"          => wikiFuzz::makeFuzz( 2 ),
-                "ns14"          => wikiFuzz::makeFuzz( 2 ),
-                "ns15"          => wikiFuzz::makeFuzz( 2 ),
-                "redirs"        => wikiFuzz::makeFuzz( 2 ),
-                "search"        => wikiFuzz::makeFuzz( 2 ),
-                "offset"        => wikiFuzz::chooseInput( array( "", "0", "-1", "--------'-----0", "+1", "81343242346234234", wikiFuzz::makeFuzz( 2 ) ) ),
-                "fulltext"      => wikiFuzz::chooseInput( array( "", "0", "1", "--------'-----0", "+1", wikiFuzz::makeFuzz( 2 ) ) ),
-                "searchx"       => wikiFuzz::chooseInput( array( "", "0", "1", "--------'-----0", "+1", wikiFuzz::makeFuzz( 2 ) ) )
-                    );
-    }
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Search";
+
+               $this->params = array (
+                               "action"        => "index.php?title=Special:Search",
+                               "ns0"           => wikiFuzz::makeFuzz( 2 ),
+                               "ns1"           => wikiFuzz::makeFuzz( 2 ),
+                               "ns2"           => wikiFuzz::makeFuzz( 2 ),
+                               "ns3"           => wikiFuzz::makeFuzz( 2 ),
+                               "ns4"           => wikiFuzz::makeFuzz( 2 ),
+                               "ns5"           => wikiFuzz::makeFuzz( 2 ),
+                               "ns6"           => wikiFuzz::makeFuzz( 2 ),
+                               "ns7"           => wikiFuzz::makeFuzz( 2 ),
+                               "ns8"           => wikiFuzz::makeFuzz( 2 ),
+                               "ns9"           => wikiFuzz::makeFuzz( 2 ),
+                               "ns10"          => wikiFuzz::makeFuzz( 2 ),
+                               "ns11"          => wikiFuzz::makeFuzz( 2 ),
+                               "ns12"          => wikiFuzz::makeFuzz( 2 ),
+                               "ns13"          => wikiFuzz::makeFuzz( 2 ),
+                               "ns14"          => wikiFuzz::makeFuzz( 2 ),
+                               "ns15"          => wikiFuzz::makeFuzz( 2 ),
+                               "redirs"        => wikiFuzz::makeFuzz( 2 ),
+                               "search"        => wikiFuzz::makeFuzz( 2 ),
+                               "offset"        => wikiFuzz::chooseInput( array( "", "0", "-1", "--------'-----0", "+1", "81343242346234234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "fulltext"      => wikiFuzz::chooseInput( array( "", "0", "1", "--------'-----0", "+1", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "searchx"       => wikiFuzz::chooseInput( array( "", "0", "1", "--------'-----0", "+1", wikiFuzz::makeFuzz( 2 ) ) )
+                                       );
+       }
 }
 
 
 }
 
 
@@ -993,28 +993,28 @@ class searchTest extends pageTest {
  ** a page test for "Special:Recentchanges".
  */
 class recentchangesTest extends pageTest {
  ** a page test for "Special:Recentchanges".
  */
 class recentchangesTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Recentchanges";
-
-        $this->params = array (
-                "action"        => wikiFuzz::makeFuzz( 2 ),
-                "title"         => wikiFuzz::makeFuzz( 2 ),
-                "namespace"     => wikiFuzz::chooseInput( range( -1, 15 ) ),
-                "Go"            => wikiFuzz::makeFuzz( 2 ),
-                "invert"        => wikiFuzz::chooseInput( array( "-1", "---'----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                "hideanons"     => wikiFuzz::chooseInput( array( "-1", "------'-------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                'limit'         => wikiFuzz::chooseInput( array( "0", "-1", "---------'----0", "+1", "81340909772349234",  wikiFuzz::makeFuzz( 2 ) ) ),
-                "days"          => wikiFuzz::chooseInput( array( "-1", "----------'---0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                "hideminor"     => wikiFuzz::chooseInput( array( "-1", "-----------'--0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                "hidebots"      => wikiFuzz::chooseInput( array( "-1", "---------'----0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                "hideliu"       => wikiFuzz::chooseInput( array( "-1", "-------'------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                "hidepatrolled" => wikiFuzz::chooseInput( array( "-1", "-----'--------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                "hidemyself"    => wikiFuzz::chooseInput( array( "-1", "--'-----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                'categories_any' => wikiFuzz::chooseInput( array( "-1", "--'-----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                'categories'    => wikiFuzz::chooseInput( array( "-1", "--'-----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                'feed'          => wikiFuzz::chooseInput( array( "-1", "--'-----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) )
-                );
-    }
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Recentchanges";
+
+               $this->params = array (
+                               "action"        => wikiFuzz::makeFuzz( 2 ),
+                               "title"         => wikiFuzz::makeFuzz( 2 ),
+                               "namespace"     => wikiFuzz::chooseInput( range( -1, 15 ) ),
+                               "Go"            => wikiFuzz::makeFuzz( 2 ),
+                               "invert"        => wikiFuzz::chooseInput( array( "-1", "---'----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "hideanons"     => wikiFuzz::chooseInput( array( "-1", "------'-------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'limit'         => wikiFuzz::chooseInput( array( "0", "-1", "---------'----0", "+1", "81340909772349234",  wikiFuzz::makeFuzz( 2 ) ) ),
+                               "days"          => wikiFuzz::chooseInput( array( "-1", "----------'---0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "hideminor"     => wikiFuzz::chooseInput( array( "-1", "-----------'--0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "hidebots"      => wikiFuzz::chooseInput( array( "-1", "---------'----0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "hideliu"       => wikiFuzz::chooseInput( array( "-1", "-------'------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "hidepatrolled" => wikiFuzz::chooseInput( array( "-1", "-----'--------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "hidemyself"    => wikiFuzz::chooseInput( array( "-1", "--'-----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'categories_any' => wikiFuzz::chooseInput( array( "-1", "--'-----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'categories'    => wikiFuzz::chooseInput( array( "-1", "--'-----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'feed'          => wikiFuzz::chooseInput( array( "-1", "--'-----------0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) )
+                               );
+       }
 }
 
 
 }
 
 
@@ -1022,25 +1022,25 @@ class recentchangesTest extends pageTest {
  ** a page test for "Special:Prefixindex".
  */
 class prefixindexTest extends pageTest {
  ** a page test for "Special:Prefixindex".
  */
 class prefixindexTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Prefixindex";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Prefixindex";
 
 
-        $this->params = array (
-                "title"         => "Special:Prefixindex",
-                "namespace"     => wikiFuzz::randnum( -10, 101 ),
-                "Go"            => wikiFuzz::makeFuzz( 2 )
-                );
+               $this->params = array (
+                               "title"         => "Special:Prefixindex",
+                               "namespace"     => wikiFuzz::randnum( -10, 101 ),
+                               "Go"            => wikiFuzz::makeFuzz( 2 )
+                               );
 
 
-        // sometimes we want 'prefix', sometimes we want 'from', and sometimes we want nothing.
-        if ( wikiFuzz::randnum( 3 ) == 0 ) {
-            $this->params["prefix"] = wikiFuzz::chooseInput( array( "-1", "-----'--------0", "+++--+1",
-                                                 wikiFuzz::randnum( -10, 8134 ), wikiFuzz::makeFuzz( 2 ) ) );
-        }
-        if ( wikiFuzz::randnum( 3 ) == 0 ) {
-            $this->params["from"]   = wikiFuzz::chooseInput( array( "-1", "-----'--------0", "+++--+1",
-                                                wikiFuzz::randnum( -10, 8134 ), wikiFuzz::makeFuzz( 2 ) ) );
-        }
-    }
+               // sometimes we want 'prefix', sometimes we want 'from', and sometimes we want nothing.
+               if ( wikiFuzz::randnum( 3 ) == 0 ) {
+                       $this->params["prefix"] = wikiFuzz::chooseInput( array( "-1", "-----'--------0", "+++--+1",
+                                                                                                wikiFuzz::randnum( -10, 8134 ), wikiFuzz::makeFuzz( 2 ) ) );
+               }
+               if ( wikiFuzz::randnum( 3 ) == 0 ) {
+                       $this->params["from"]   = wikiFuzz::chooseInput( array( "-1", "-----'--------0", "+++--+1",
+                                                                                               wikiFuzz::randnum( -10, 8134 ), wikiFuzz::makeFuzz( 2 ) ) );
+               }
+       }
 }
 
 
 }
 
 
@@ -1048,16 +1048,16 @@ class prefixindexTest extends pageTest {
  ** a page test for "Special:MIMEsearch".
  */
 class mimeSearchTest extends pageTest {
  ** a page test for "Special:MIMEsearch".
  */
 class mimeSearchTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:MIMEsearch";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:MIMEsearch";
 
 
-        $this->params = array (
-                "action"        => "index.php?title=Special:MIMEsearch",
-                "mime"          => wikiFuzz::makeFuzz( 3 ),
-                'limit'         => wikiFuzz::chooseInput( array( "0", "-1", "-------'------0", "+1", "81342321351235325",  wikiFuzz::makeFuzz( 2 ) ) ),
-                'offset'        => wikiFuzz::chooseInput( array( "0", "-1", "-----'--------0", "+1", "81341231235365252234324",  wikiFuzz::makeFuzz( 2 ) ) )
-                );
-    }
+               $this->params = array (
+                               "action"        => "index.php?title=Special:MIMEsearch",
+                               "mime"          => wikiFuzz::makeFuzz( 3 ),
+                               'limit'         => wikiFuzz::chooseInput( array( "0", "-1", "-------'------0", "+1", "81342321351235325",  wikiFuzz::makeFuzz( 2 ) ) ),
+                               'offset'        => wikiFuzz::chooseInput( array( "0", "-1", "-----'--------0", "+1", "81341231235365252234324",  wikiFuzz::makeFuzz( 2 ) ) )
+                               );
+       }
 }
 
 
 }
 
 
@@ -1065,19 +1065,19 @@ class mimeSearchTest extends pageTest {
  ** a page test for "Special:Log".
  */
 class specialLogTest extends pageTest {
  ** a page test for "Special:Log".
  */
 class specialLogTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Log";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Log";
 
 
-        $this->params = array (
-                "type"        => wikiFuzz::chooseInput( array( "", wikiFuzz::makeFuzz( 2 ) ) ),
-                "par"         => wikiFuzz::makeFuzz( 2 ),
-                "user"        => wikiFuzz::makeFuzz( 2 ),
-                "page"        => wikiFuzz::makeFuzz( 2 ),
-                "from"        => wikiFuzz::makeFuzz( 2 ),
-                "until"       => wikiFuzz::makeFuzz( 2 ),
-                "title"       => wikiFuzz::makeFuzz( 2 )
-                );
-    }
+               $this->params = array (
+                               "type"        => wikiFuzz::chooseInput( array( "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "par"         => wikiFuzz::makeFuzz( 2 ),
+                               "user"        => wikiFuzz::makeFuzz( 2 ),
+                               "page"        => wikiFuzz::makeFuzz( 2 ),
+                               "from"        => wikiFuzz::makeFuzz( 2 ),
+                               "until"       => wikiFuzz::makeFuzz( 2 ),
+                               "title"       => wikiFuzz::makeFuzz( 2 )
+                               );
+       }
 }
 
 
 }
 
 
@@ -1085,18 +1085,18 @@ class specialLogTest extends pageTest {
  ** a page test for "Special:Userlogin", with a successful login.
  */
 class successfulUserLoginTest extends pageTest {
  ** a page test for "Special:Userlogin", with a successful login.
  */
 class successfulUserLoginTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Userlogin&action=submitlogin&type=login&returnto=" . wikiFuzz::makeFuzz( 2 );
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Userlogin&action=submitlogin&type=login&returnto=" . wikiFuzz::makeFuzz( 2 );
 
 
-        $this->params = array (
-                "wpName"          => USER_ON_WIKI,
-                // sometimes real password, sometimes not:
-                'wpPassword'      => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), USER_PASSWORD ) ),
-                'wpRemember'      => wikiFuzz::makeFuzz( 2 )
-                );
+               $this->params = array (
+                               "wpName"          => USER_ON_WIKI,
+                               // sometimes real password, sometimes not:
+                               'wpPassword'      => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), USER_PASSWORD ) ),
+                               'wpRemember'      => wikiFuzz::makeFuzz( 2 )
+                               );
 
 
-        $this->cookie = "wikidb_session=" .  wikiFuzz::chooseInput( array( "1" , wikiFuzz::makeFuzz( 2 ) ) );
-    }
+               $this->cookie = "wikidb_session=" .  wikiFuzz::chooseInput( array( "1" , wikiFuzz::makeFuzz( 2 ) ) );
+       }
 }
 
 
 }
 
 
@@ -1104,30 +1104,30 @@ class successfulUserLoginTest extends pageTest {
  ** a page test for "Special:Userlogin".
  */
 class userLoginTest extends pageTest {
  ** a page test for "Special:Userlogin".
  */
 class userLoginTest extends pageTest {
-    function __construct() {
+       function __construct() {
 
 
-        $this->pagePath = "index.php?title=Special:Userlogin";
+               $this->pagePath = "index.php?title=Special:Userlogin";
 
 
-        $this->params = array (
-                'wpRetype'        => wikiFuzz::makeFuzz( 2 ),
-                'wpRemember'      => wikiFuzz::makeFuzz( 2 ),
-                'wpRealName'      => wikiFuzz::makeFuzz( 2 ),
-                'wpPassword'      => wikiFuzz::makeFuzz( 2 ),
-                'wpName'          => wikiFuzz::makeFuzz( 2 ),
-                'wpMailmypassword' => wikiFuzz::makeFuzz( 2 ),
-                'wpLoginattempt'  => wikiFuzz::makeFuzz( 2 ),
-                'wpEmail'         => wikiFuzz::makeFuzz( 2 ),
-                'wpDomain'        => wikiFuzz::chooseInput( array( "", "local", wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpCreateaccountMail' => wikiFuzz::chooseInput( array( "", wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpCreateaccount' => wikiFuzz::chooseInput( array( "", wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpCookieCheck'   => wikiFuzz::chooseInput( array( "", wikiFuzz::makeFuzz( 2 ) ) ),
-                'type'            => wikiFuzz::chooseInput( array( "signup", "login", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                'returnto'        => wikiFuzz::makeFuzz( 2 ),
-                'action'          => wikiFuzz::chooseInput( array( "", "submitlogin", wikiFuzz::makeFuzz( 2 ) ) )
-                );
+               $this->params = array (
+                               'wpRetype'        => wikiFuzz::makeFuzz( 2 ),
+                               'wpRemember'      => wikiFuzz::makeFuzz( 2 ),
+                               'wpRealName'      => wikiFuzz::makeFuzz( 2 ),
+                               'wpPassword'      => wikiFuzz::makeFuzz( 2 ),
+                               'wpName'          => wikiFuzz::makeFuzz( 2 ),
+                               'wpMailmypassword' => wikiFuzz::makeFuzz( 2 ),
+                               'wpLoginattempt'  => wikiFuzz::makeFuzz( 2 ),
+                               'wpEmail'         => wikiFuzz::makeFuzz( 2 ),
+                               'wpDomain'        => wikiFuzz::chooseInput( array( "", "local", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpCreateaccountMail' => wikiFuzz::chooseInput( array( "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpCreateaccount' => wikiFuzz::chooseInput( array( "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpCookieCheck'   => wikiFuzz::chooseInput( array( "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'type'            => wikiFuzz::chooseInput( array( "signup", "login", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'returnto'        => wikiFuzz::makeFuzz( 2 ),
+                               'action'          => wikiFuzz::chooseInput( array( "", "submitlogin", wikiFuzz::makeFuzz( 2 ) ) )
+                               );
 
 
-        $this->cookie = "wikidb_session=" . wikiFuzz::chooseInput( array( "1" , wikiFuzz::makeFuzz( 2 ) ) );
-    }
+               $this->cookie = "wikidb_session=" . wikiFuzz::chooseInput( array( "1" , wikiFuzz::makeFuzz( 2 ) ) );
+       }
 }
 
 
 }
 
 
@@ -1135,32 +1135,32 @@ class userLoginTest extends pageTest {
  ** a page test for "Special:Ipblocklist" (also includes unblocking)
  */
 class ipblocklistTest extends pageTest {
  ** a page test for "Special:Ipblocklist" (also includes unblocking)
  */
 class ipblocklistTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Ipblocklist";
-
-        $this->params = array (
-                'wpUnblockAddress' => wikiFuzz::makeFuzz( 2 ),
-                'ip'              => wikiFuzz::chooseInput( array( "20398702394", "", "Nickj2", wikiFuzz::makeFuzz( 2 ),
-                                     // something like an IP address, sometimes invalid:
-                                     ( wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) . "."
-                                       . wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) ) ) ),
-                'id'              => wikiFuzz::makeFuzz( 2 ),
-                'wpUnblockReason' => wikiFuzz::makeFuzz( 2 ),
-                'action'          => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), "success", "submit", "unblock" ) ),
-                'wpEditToken'     => wikiFuzz::makeFuzz( 2 ),
-                'wpBlock'         => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), "" ) ),
-                'limit'           => wikiFuzz::chooseInput( array( "0", "-1", "--------'-----0", "+1",
-                                                 "09700982312351132098234",  wikiFuzz::makeFuzz( 2 ) ) ),
-                'offset'          => wikiFuzz::chooseInput( array( "0", "-1", "------'-------0", "+1",
-                                                 "09700980982341535324234234", wikiFuzz::makeFuzz( 2 ) ) )
-                );
-
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["action"] );
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["ip"] );
-        if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["id"] );
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["wpUnblockAddress"] );
-    }
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Ipblocklist";
+
+               $this->params = array (
+                               'wpUnblockAddress' => wikiFuzz::makeFuzz( 2 ),
+                               'ip'              => wikiFuzz::chooseInput( array( "20398702394", "", "Nickj2", wikiFuzz::makeFuzz( 2 ),
+                                                                        // something like an IP address, sometimes invalid:
+                                                                        ( wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) . "."
+                                                                          . wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) ) ) ),
+                               'id'              => wikiFuzz::makeFuzz( 2 ),
+                               'wpUnblockReason' => wikiFuzz::makeFuzz( 2 ),
+                               'action'          => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), "success", "submit", "unblock" ) ),
+                               'wpEditToken'     => wikiFuzz::makeFuzz( 2 ),
+                               'wpBlock'         => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), "" ) ),
+                               'limit'           => wikiFuzz::chooseInput( array( "0", "-1", "--------'-----0", "+1",
+                                                                                                "09700982312351132098234",  wikiFuzz::makeFuzz( 2 ) ) ),
+                               'offset'          => wikiFuzz::chooseInput( array( "0", "-1", "------'-------0", "+1",
+                                                                                                "09700980982341535324234234", wikiFuzz::makeFuzz( 2 ) ) )
+                               );
+
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["action"] );
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["ip"] );
+               if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["id"] );
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["wpUnblockAddress"] );
+       }
 }
 
 
 }
 
 
@@ -1168,20 +1168,20 @@ class ipblocklistTest extends pageTest {
  ** a page test for "Special:Newimages".
  */
 class newImagesTest extends  pageTest {
  ** a page test for "Special:Newimages".
  */
 class newImagesTest extends  pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Newimages";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Newimages";
 
 
-        $this->params = array (
-                'hidebots'  => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), "1", "", "-1" ) ),
-                'wpIlMatch' => wikiFuzz::makeFuzz( 2 ),
-                'until'     => wikiFuzz::makeFuzz( 2 ),
-                'from'      => wikiFuzz::makeFuzz( 2 )
-                );
+               $this->params = array (
+                               'hidebots'  => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), "1", "", "-1" ) ),
+                               'wpIlMatch' => wikiFuzz::makeFuzz( 2 ),
+                               'until'     => wikiFuzz::makeFuzz( 2 ),
+                               'from'      => wikiFuzz::makeFuzz( 2 )
+                               );
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["until"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["from"] );
-    }
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["until"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["from"] );
+       }
 }
 
 
 }
 
 
@@ -1189,16 +1189,16 @@ class newImagesTest extends  pageTest {
  ** a page test for the "Special:Imagelist" page.
  */
 class imagelistTest extends pageTest {
  ** a page test for the "Special:Imagelist" page.
  */
 class imagelistTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Imagelist";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Imagelist";
 
 
-        $this->params = array (
-                'sort'      => wikiFuzz::chooseInput( array( "bysize", "byname" , "bydate", wikiFuzz::makeFuzz( 2 ) ) ),
-                'limit'     => wikiFuzz::chooseInput( array( "0", "-1", "--------'-----0", "+1", "09700982312351132098234",  wikiFuzz::makeFuzz( 2 ) ) ),
-                'offset'    => wikiFuzz::chooseInput( array( "0", "-1", "------'-------0", "+1", "09700980982341535324234234", wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpIlMatch' => wikiFuzz::makeFuzz( 2 )
-                );
-    }
+               $this->params = array (
+                               'sort'      => wikiFuzz::chooseInput( array( "bysize", "byname" , "bydate", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'limit'     => wikiFuzz::chooseInput( array( "0", "-1", "--------'-----0", "+1", "09700982312351132098234",  wikiFuzz::makeFuzz( 2 ) ) ),
+                               'offset'    => wikiFuzz::chooseInput( array( "0", "-1", "------'-------0", "+1", "09700980982341535324234234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpIlMatch' => wikiFuzz::makeFuzz( 2 )
+                               );
+       }
 }
 
 
 }
 
 
@@ -1206,27 +1206,27 @@ class imagelistTest extends pageTest {
  ** a page test for "Special:Export".
  */
 class specialExportTest extends pageTest {
  ** a page test for "Special:Export".
  */
 class specialExportTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Export";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Export";
 
 
-        $this->params = array (
-                'action'      => wikiFuzz::chooseInput( array( "submit", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                'pages'       => wikiFuzz::makeFuzz( 2 ),
-                'curonly'     => wikiFuzz::chooseInput( array( "", "0", "-1", wikiFuzz::makeFuzz( 2 ) ) ),
-                'listauthors' => wikiFuzz::chooseInput( array( "", "0", "-1", wikiFuzz::makeFuzz( 2 ) ) ),
-                'history'     => wikiFuzz::chooseInput( array( "0", "-1", "------'-------0", "+1", "09700980982341535324234234", wikiFuzz::makeFuzz( 2 ) ) ),
+               $this->params = array (
+                               'action'      => wikiFuzz::chooseInput( array( "submit", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'pages'       => wikiFuzz::makeFuzz( 2 ),
+                               'curonly'     => wikiFuzz::chooseInput( array( "", "0", "-1", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'listauthors' => wikiFuzz::chooseInput( array( "", "0", "-1", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'history'     => wikiFuzz::chooseInput( array( "0", "-1", "------'-------0", "+1", "09700980982341535324234234", wikiFuzz::makeFuzz( 2 ) ) ),
 
 
-                );
+                               );
 
 
-        // For the time being, need to disable "submit" action as Tidy barfs on MediaWiki's XML export.
-        if ( $this->params['action'] == 'submit' ) $this->params['action'] = '';
+               // For the time being, need to disable "submit" action as Tidy barfs on MediaWiki's XML export.
+               if ( $this->params['action'] == 'submit' ) $this->params['action'] = '';
 
 
-        // Sometimes remove the history field.
-        if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["history"] );
-        
-        // page does not produce HTML.
-        $this->tidyValidate = false;
-    }
+               // Sometimes remove the history field.
+               if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["history"] );
+
+               // page does not produce HTML.
+               $this->tidyValidate = false;
+       }
 }
 
 
 }
 
 
@@ -1234,15 +1234,15 @@ class specialExportTest extends pageTest {
  ** a page test for "Special:Booksources".
  */
 class specialBooksourcesTest extends pageTest {
  ** a page test for "Special:Booksources".
  */
 class specialBooksourcesTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Booksources";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Booksources";
 
 
-        $this->params = array (
-                'go'    => wikiFuzz::makeFuzz( 2 ),
-                // ISBN codes have to contain some semi-numeric stuff or will be ignored:
-                'isbn'  => "0X0" . wikiFuzz::makeFuzz( 2 )
-                );
-    }
+               $this->params = array (
+                               'go'    => wikiFuzz::makeFuzz( 2 ),
+                               // ISBN codes have to contain some semi-numeric stuff or will be ignored:
+                               'isbn'  => "0X0" . wikiFuzz::makeFuzz( 2 )
+                               );
+       }
 }
 
 
 }
 
 
@@ -1250,15 +1250,15 @@ class specialBooksourcesTest extends pageTest {
  ** a page test for "Special:Allpages".
  */
 class specialAllpagesTest extends pageTest {
  ** a page test for "Special:Allpages".
  */
 class specialAllpagesTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special%3AAllpages";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special%3AAllpages";
 
 
-        $this->params = array (
-                'from'      => wikiFuzz::makeFuzz( 2 ),
-                'namespace' => wikiFuzz::chooseInput( range( -1, 15 ) ),
-                'go'        => wikiFuzz::makeFuzz( 2 )
-                );
-    }
+               $this->params = array (
+                               'from'      => wikiFuzz::makeFuzz( 2 ),
+                               'namespace' => wikiFuzz::chooseInput( range( -1, 15 ) ),
+                               'go'        => wikiFuzz::makeFuzz( 2 )
+                               );
+       }
 }
 
 
 }
 
 
@@ -1266,19 +1266,19 @@ class specialAllpagesTest extends pageTest {
  ** a page test for the page History.
  */
 class pageHistoryTest extends pageTest {
  ** a page test for the page History.
  */
 class pageHistoryTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Main_Page&action=history";
+       function __construct() {
+               $this->pagePath = "index.php?title=Main_Page&action=history";
 
 
-        $this->params = array (
-                'limit'     => wikiFuzz::chooseInput( array( "-1", "0", "-------'------0", "+1", "8134",  wikiFuzz::makeFuzz( 2 ) ) ),
-                'offset'    => wikiFuzz::chooseInput( array( "-1", "0", "------'-------0", "+1", "9823412312312412435", wikiFuzz::makeFuzz( 2 ) ) ),
-                "go"        => wikiFuzz::chooseInput( array( "first", "last", wikiFuzz::makeFuzz( 2 ) ) ),
-                "dir"       => wikiFuzz::chooseInput( array( "prev", "next", wikiFuzz::makeFuzz( 2 ) ) ),
-                "diff"      => wikiFuzz::chooseInput( array( "-1", "--------'-----0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                "oldid"     => wikiFuzz::chooseInput( array( "prev", "-1", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
-                "feed"      => wikiFuzz::makeFuzz( 2 )
-                );
-    }
+               $this->params = array (
+                               'limit'     => wikiFuzz::chooseInput( array( "-1", "0", "-------'------0", "+1", "8134",  wikiFuzz::makeFuzz( 2 ) ) ),
+                               'offset'    => wikiFuzz::chooseInput( array( "-1", "0", "------'-------0", "+1", "9823412312312412435", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "go"        => wikiFuzz::chooseInput( array( "first", "last", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "dir"       => wikiFuzz::chooseInput( array( "prev", "next", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "diff"      => wikiFuzz::chooseInput( array( "-1", "--------'-----0", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "oldid"     => wikiFuzz::chooseInput( array( "prev", "-1", "+1", "8134", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "feed"      => wikiFuzz::makeFuzz( 2 )
+                               );
+       }
 }
 
 
 }
 
 
@@ -1286,17 +1286,17 @@ class pageHistoryTest extends pageTest {
  ** a page test for the Special:Contributions".
  */
 class contributionsTest extends pageTest {
  ** a page test for the Special:Contributions".
  */
 class contributionsTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Contributions/" . USER_ON_WIKI;
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Contributions/" . USER_ON_WIKI;
 
 
-        $this->params = array (
-                'target'    => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), "newbies", USER_ON_WIKI ) ),
-                'namespace' => wikiFuzz::chooseInput( array( -1, 15, 1, wikiFuzz::makeFuzz( 2 ) ) ),
-                'offset'    => wikiFuzz::chooseInput( array( "0", "-1", "------'-------0", "+1", "982342131232131231241", wikiFuzz::makeFuzz( 2 ) ) ),
-                'bot'       => wikiFuzz::chooseInput( array( "", "-1", "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
-                'go'        => wikiFuzz::chooseInput( array( "-1", 'prev', 'next', wikiFuzz::makeFuzz( 2 ) ) )
-                );
-    }
+               $this->params = array (
+                               'target'    => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ), "newbies", USER_ON_WIKI ) ),
+                               'namespace' => wikiFuzz::chooseInput( array( -1, 15, 1, wikiFuzz::makeFuzz( 2 ) ) ),
+                               'offset'    => wikiFuzz::chooseInput( array( "0", "-1", "------'-------0", "+1", "982342131232131231241", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'bot'       => wikiFuzz::chooseInput( array( "", "-1", "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'go'        => wikiFuzz::chooseInput( array( "-1", 'prev', 'next', wikiFuzz::makeFuzz( 2 ) ) )
+                               );
+       }
 }
 
 
 }
 
 
@@ -1304,66 +1304,66 @@ class contributionsTest extends pageTest {
  ** a page test for viewing a normal page, whilst posting various params.
  */
 class viewPageTest extends pageTest {
  ** a page test for viewing a normal page, whilst posting various params.
  */
 class viewPageTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Main_Page";
-
-        $this->params = array (
-                "useskin"        => wikiFuzz::chooseInput( array( "chick", "cologneblue", "myskin",
-                                        "nostalgia", "simple", "standard", wikiFuzz::makeFuzz( 2 ) ) ),
-                "uselang"        => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ),
-                        "ab", "af", "an", "ar", "arc", "as", "ast", "av", "ay", "az", "ba",
-                        "bat-smg", "be", "bg", "bm", "bn", "bo", "bpy", "br", "bs", "ca",
-                        "ce", "cs", "csb", "cv", "cy", "da", "de", "dv", "dz", "el", "en",
-                        "eo", "es", "et", "eu", "fa", "fi", "fo", "fr", "fur", "fy", "ga",
-                        "gn", "gsw", "gu", "he", "hi", "hr", "hu", "ia", "id", "ii", "is",
-                        "it", "ja", "jv", "ka", "km", "kn", "ko", "ks", "ku", "kv", "la",
-                        "li", "lo", "lt", "lv", "mk", "ml", "ms", "nah", "nap", "nds",
-                        "nds-nl", "nl", "nn", "no", "non", "nv", "oc", "or", "os", "pa",
-                        "pl", "pms", "ps", "pt", "pt-br", "qu", "rmy", "ro", "ru", "sc",
-                        "sd", "sk", "sl", "sq", "sr", "sr-ec", "sr-el",
-                        "su", "sv", "ta", "te", "th", "tr", "tt", "ty", "tyv", "udm",
-                        "ug", "uk", "ur", "utf8", "vec", "vi", "wa", "xal", "yi", "za",
-                        "zh", "zh-cn", "zh-hk", "zh-sg", "zh-tw", "zh-tw" ) ),
-                "returnto"       => wikiFuzz::makeFuzz( 2 ),
-                "feed"           => wikiFuzz::chooseInput( array( "atom", "rss", wikiFuzz::makeFuzz( 2 ) ) ),
-                "rcid"           => wikiFuzz::makeFuzz( 2 ),
-                "action"         => wikiFuzz::chooseInput( array( "view", "raw", "render", wikiFuzz::makeFuzz( 2 ), "markpatrolled" ) ),
-                "printable"      => wikiFuzz::makeFuzz( 2 ),
-                "oldid"          => wikiFuzz::makeFuzz( 2 ),
-                "redirect"       => wikiFuzz::makeFuzz( 2 ),
-                "diff"           => wikiFuzz::makeFuzz( 2 ),
-                "search"         => wikiFuzz::makeFuzz( 2 ),
-                "rdfrom"         => wikiFuzz::makeFuzz( 2 ),  // things from Article.php from here on:
-                "token"          => wikiFuzz::makeFuzz( 2 ),
-                "tbid"           => wikiFuzz::makeFuzz( 2 ),
-                "action"         => wikiFuzz::chooseInput( array( "purge", wikiFuzz::makeFuzz( 2 ) ) ),
-                "wpReason"       => wikiFuzz::makeFuzz( 2 ),
-                "wpEditToken"    => wikiFuzz::makeFuzz( 2 ),
-                "from"           => wikiFuzz::makeFuzz( 2 ),
-                "bot"            => wikiFuzz::makeFuzz( 2 ),
-                "summary"        => wikiFuzz::makeFuzz( 2 ),
-                "direction"      => wikiFuzz::chooseInput( array( "next", "prev", wikiFuzz::makeFuzz( 2 ) ) ),
-                "section"        => wikiFuzz::makeFuzz( 2 ),
-                "preload"        => wikiFuzz::makeFuzz( 2 ),
-
-                );
-
-        // Tidy does not know how to valid atom or rss, so exclude from testing for the time being.
-        if ( $this->params["feed"] == "atom" )     { unset( $this->params["feed"] ); }
-        else if ( $this->params["feed"] == "rss" ) { unset( $this->params["feed"] ); }
-
-        // Raw pages cannot really be validated
-        if ( $this->params["action"] == "raw" ) unset( $this->params["action"] );
-
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["rcid"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["diff"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["rdfrom"] );
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["oldid"] );
-
-        // usually don't want action == purge.
-        if ( wikiFuzz::randnum( 6 ) > 1 ) unset( $this->params["action"] );
-    }
+       function __construct() {
+               $this->pagePath = "index.php?title=Main_Page";
+
+               $this->params = array (
+                               "useskin"        => wikiFuzz::chooseInput( array( "chick", "cologneblue", "myskin",
+                                                                               "nostalgia", "simple", "standard", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "uselang"        => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ),
+                                               "ab", "af", "an", "ar", "arc", "as", "ast", "av", "ay", "az", "ba",
+                                               "bat-smg", "be", "bg", "bm", "bn", "bo", "bpy", "br", "bs", "ca",
+                                               "ce", "cs", "csb", "cv", "cy", "da", "de", "dv", "dz", "el", "en",
+                                               "eo", "es", "et", "eu", "fa", "fi", "fo", "fr", "fur", "fy", "ga",
+                                               "gn", "gsw", "gu", "he", "hi", "hr", "hu", "ia", "id", "ii", "is",
+                                               "it", "ja", "jv", "ka", "km", "kn", "ko", "ks", "ku", "kv", "la",
+                                               "li", "lo", "lt", "lv", "mk", "ml", "ms", "nah", "nap", "nds",
+                                               "nds-nl", "nl", "nn", "no", "non", "nv", "oc", "or", "os", "pa",
+                                               "pl", "pms", "ps", "pt", "pt-br", "qu", "rmy", "ro", "ru", "sc",
+                                               "sd", "sk", "sl", "sq", "sr", "sr-ec", "sr-el",
+                                               "su", "sv", "ta", "te", "th", "tr", "tt", "ty", "tyv", "udm",
+                                               "ug", "uk", "ur", "utf8", "vec", "vi", "wa", "xal", "yi", "za",
+                                               "zh", "zh-cn", "zh-hk", "zh-sg", "zh-tw", "zh-tw" ) ),
+                               "returnto"       => wikiFuzz::makeFuzz( 2 ),
+                               "feed"           => wikiFuzz::chooseInput( array( "atom", "rss", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "rcid"           => wikiFuzz::makeFuzz( 2 ),
+                               "action"         => wikiFuzz::chooseInput( array( "view", "raw", "render", wikiFuzz::makeFuzz( 2 ), "markpatrolled" ) ),
+                               "printable"      => wikiFuzz::makeFuzz( 2 ),
+                               "oldid"          => wikiFuzz::makeFuzz( 2 ),
+                               "redirect"       => wikiFuzz::makeFuzz( 2 ),
+                               "diff"           => wikiFuzz::makeFuzz( 2 ),
+                               "search"         => wikiFuzz::makeFuzz( 2 ),
+                               "rdfrom"         => wikiFuzz::makeFuzz( 2 ),  // things from Article.php from here on:
+                               "token"          => wikiFuzz::makeFuzz( 2 ),
+                               "tbid"           => wikiFuzz::makeFuzz( 2 ),
+                               "action"         => wikiFuzz::chooseInput( array( "purge", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "wpReason"       => wikiFuzz::makeFuzz( 2 ),
+                               "wpEditToken"    => wikiFuzz::makeFuzz( 2 ),
+                               "from"           => wikiFuzz::makeFuzz( 2 ),
+                               "bot"            => wikiFuzz::makeFuzz( 2 ),
+                               "summary"        => wikiFuzz::makeFuzz( 2 ),
+                               "direction"      => wikiFuzz::chooseInput( array( "next", "prev", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "section"        => wikiFuzz::makeFuzz( 2 ),
+                               "preload"        => wikiFuzz::makeFuzz( 2 ),
+
+                               );
+
+               // Tidy does not know how to valid atom or rss, so exclude from testing for the time being.
+               if ( $this->params["feed"] == "atom" )     { unset( $this->params["feed"] ); }
+               else if ( $this->params["feed"] == "rss" ) { unset( $this->params["feed"] ); }
+
+               // Raw pages cannot really be validated
+               if ( $this->params["action"] == "raw" ) unset( $this->params["action"] );
+
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["rcid"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["diff"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["rdfrom"] );
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["oldid"] );
+
+               // usually don't want action == purge.
+               if ( wikiFuzz::randnum( 6 ) > 1 ) unset( $this->params["action"] );
+       }
 }
 
 
 }
 
 
@@ -1371,50 +1371,50 @@ class viewPageTest extends pageTest {
  ** a page test for "Special:Allmessages".
  */
 class specialAllmessagesTest extends pageTest {
  ** a page test for "Special:Allmessages".
  */
 class specialAllmessagesTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Allmessages";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Allmessages";
 
 
-        // only really has one parameter
-        $this->params = array (
-                "ot"     => wikiFuzz::chooseInput( array( "php", "html", wikiFuzz::makeFuzz( 2 ) ) )
-                );
-    }
+               // only really has one parameter
+               $this->params = array (
+                               "ot"     => wikiFuzz::chooseInput( array( "php", "html", wikiFuzz::makeFuzz( 2 ) ) )
+                               );
+       }
 }
 
 /**
  ** a page test for "Special:Newpages".
  */
 class specialNewpages extends pageTest {
 }
 
 /**
  ** a page test for "Special:Newpages".
  */
 class specialNewpages extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Newpages";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Newpages";
 
 
-        $this->params = array (
-                "namespace" => wikiFuzz::chooseInput( range( -1, 15 ) ),
-                "feed"      => wikiFuzz::chooseInput( array( "atom", "rss", wikiFuzz::makeFuzz( 2 ) ) ),
-                'limit'     => wikiFuzz::chooseInput( array( "-1", "0", "-------'------0", "+1", "8134",  wikiFuzz::makeFuzz( 2 ) ) ),
-                'offset'    => wikiFuzz::chooseInput( array( "-1", "0", "------'-------0", "+1", "9823412312312412435", wikiFuzz::makeFuzz( 2 ) ) )
-                );
+               $this->params = array (
+                               "namespace" => wikiFuzz::chooseInput( range( -1, 15 ) ),
+                               "feed"      => wikiFuzz::chooseInput( array( "atom", "rss", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'limit'     => wikiFuzz::chooseInput( array( "-1", "0", "-------'------0", "+1", "8134",  wikiFuzz::makeFuzz( 2 ) ) ),
+                               'offset'    => wikiFuzz::chooseInput( array( "-1", "0", "------'-------0", "+1", "9823412312312412435", wikiFuzz::makeFuzz( 2 ) ) )
+                               );
 
 
-        // Tidy does not know how to valid atom or rss, so exclude from testing for the time being.
-        if ( $this->params["feed"] == "atom" )     { unset( $this->params["feed"] ); }
-        else if ( $this->params["feed"] == "rss" ) { unset( $this->params["feed"] ); }
-    }
+               // Tidy does not know how to valid atom or rss, so exclude from testing for the time being.
+               if ( $this->params["feed"] == "atom" )     { unset( $this->params["feed"] ); }
+               else if ( $this->params["feed"] == "rss" ) { unset( $this->params["feed"] ); }
+       }
 }
 
 /**
  ** a page test for "redirect.php"
  */
 class redirectTest extends pageTest {
 }
 
 /**
  ** a page test for "redirect.php"
  */
 class redirectTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "redirect.php";
+       function __construct() {
+               $this->pagePath = "redirect.php";
 
 
-        $this->params = array (
-                "wpDropdown" => wikiFuzz::makeFuzz( 2 )
-                );
+               $this->params = array (
+                               "wpDropdown" => wikiFuzz::makeFuzz( 2 )
+                               );
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpDropdown"] );
-    }
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpDropdown"] );
+       }
 }
 
 
 }
 
 
@@ -1422,14 +1422,14 @@ class redirectTest extends pageTest {
  ** a page test for "Special:Confirmemail"
  */
 class confirmEmail extends pageTest {
  ** a page test for "Special:Confirmemail"
  */
 class confirmEmail extends pageTest {
-    function __construct() {
-        // sometimes we send a bogus confirmation code, and sometimes we don't.
-        $this->pagePath = "index.php?title=Special:Confirmemail" . wikiFuzz::chooseInput( array( "", "/" . wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 1 ) ) ) );
+       function __construct() {
+               // sometimes we send a bogus confirmation code, and sometimes we don't.
+               $this->pagePath = "index.php?title=Special:Confirmemail" . wikiFuzz::chooseInput( array( "", "/" . wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 1 ) ) ) );
 
 
-        $this->params = array (
-                "token" => wikiFuzz::makeFuzz( 2 )
-                );
-    }
+               $this->params = array (
+                               "token" => wikiFuzz::makeFuzz( 2 )
+                               );
+       }
 }
 
 
 }
 
 
@@ -1438,24 +1438,24 @@ class confirmEmail extends pageTest {
  **        Note: this test would be better if we were logged in.
  */
 class watchlistTest extends pageTest {
  **        Note: this test would be better if we were logged in.
  */
 class watchlistTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Watchlist";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Watchlist";
 
 
-        $this->params = array (
-                "remove"   => wikiFuzz::chooseInput( array( "Remove checked items from watchlist", wikiFuzz::makeFuzz( 2 ) ) ),
-                'days'     => wikiFuzz::chooseInput( array( 0, -1, -230, "--", 3, 9, wikiFuzz::makeFuzz( 2 ) ) ),
-                'hideOwn'  => wikiFuzz::chooseInput( array( "", "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
-                'hideBots' => wikiFuzz::chooseInput( array( "", "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
-                'namespace' => wikiFuzz::chooseInput( array( "", "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
-                'action'   => wikiFuzz::chooseInput( array( "submit", "clear", wikiFuzz::makeFuzz( 2 ) ) ),
-                'id[]'     => wikiFuzz::makeFuzz( 2 ),
-                'edit'     => wikiFuzz::makeFuzz( 2 ),
-                'token'    => wikiFuzz::chooseInput( array( "", "1243213", wikiFuzz::makeFuzz( 2 ) ) )
-                );
+               $this->params = array (
+                               "remove"   => wikiFuzz::chooseInput( array( "Remove checked items from watchlist", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'days'     => wikiFuzz::chooseInput( array( 0, -1, -230, "--", 3, 9, wikiFuzz::makeFuzz( 2 ) ) ),
+                               'hideOwn'  => wikiFuzz::chooseInput( array( "", "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'hideBots' => wikiFuzz::chooseInput( array( "", "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'namespace' => wikiFuzz::chooseInput( array( "", "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'action'   => wikiFuzz::chooseInput( array( "submit", "clear", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'id[]'     => wikiFuzz::makeFuzz( 2 ),
+                               'edit'     => wikiFuzz::makeFuzz( 2 ),
+                               'token'    => wikiFuzz::chooseInput( array( "", "1243213", wikiFuzz::makeFuzz( 2 ) ) )
+                               );
 
 
-        // sometimes we specifiy "reset", and sometimes we don't.
-        if ( wikiFuzz::randnum( 3 ) == 0 ) $this->params["reset"] = wikiFuzz::chooseInput( array( "", "0", "1", wikiFuzz::makeFuzz( 2 ) ) );
-    }
+               // sometimes we specifiy "reset", and sometimes we don't.
+               if ( wikiFuzz::randnum( 3 ) == 0 ) $this->params["reset"] = wikiFuzz::chooseInput( array( "", "0", "1", wikiFuzz::makeFuzz( 2 ) ) );
+       }
 }
 
 
 }
 
 
@@ -1463,16 +1463,16 @@ class watchlistTest extends pageTest {
  ** a page test for "Special:Blockme"
  */
 class specialBlockmeTest extends pageTest {
  ** a page test for "Special:Blockme"
  */
 class specialBlockmeTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Blockme";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Blockme";
 
 
-        $this->params = array ( );
+               $this->params = array ( );
 
 
-        // sometimes we specify "ip", and sometimes we don't.
-        if ( wikiFuzz::randnum( 1 ) == 0 ) {
-            $this->params["ip"] = wikiFuzz::chooseInput( array( "10.12.41.213", wikiFuzz::randnum( -10, 8134 ), wikiFuzz::makeFuzz( 2 ) ) );
-        }
-    }
+               // sometimes we specify "ip", and sometimes we don't.
+               if ( wikiFuzz::randnum( 1 ) == 0 ) {
+                       $this->params["ip"] = wikiFuzz::chooseInput( array( "10.12.41.213", wikiFuzz::randnum( -10, 8134 ), wikiFuzz::makeFuzz( 2 ) ) );
+               }
+       }
 }
 
 
 }
 
 
@@ -1480,32 +1480,32 @@ class specialBlockmeTest extends pageTest {
  ** a page test for "Special:Movepage"
  */
 class specialMovePage extends pageTest {
  ** a page test for "Special:Movepage"
  */
 class specialMovePage extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Movepage";
-
-        $this->params = array (
-                "action"      => wikiFuzz::chooseInput( array( "success", "submit", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpEditToken' => wikiFuzz::chooseInput( array( '', 0, 34987987, wikiFuzz::makeFuzz( 2 ) ) ),
-                'target'      => wikiFuzz::chooseInput( array( "x", wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 2 ) ) ) ),
-                'wpOldTitle'  => wikiFuzz::chooseInput( array( "z", wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 2 ) ), wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpNewTitle'  => wikiFuzz::chooseInput( array( "y", wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 2 ) ), wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpReason'    => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpMovetalk'  => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpDeleteAndMove'  => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpConfirm'   => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                'talkmoved'   => wikiFuzz::chooseInput( array( "1", wikiFuzz::makeFuzz( 2 ), "articleexists", 'notalkpage' ) ),
-                'oldtitle'    => wikiFuzz::makeFuzz( 2 ),
-                'newtitle'    => wikiFuzz::makeFuzz( 2 ),
-                'wpMovetalk'  => wikiFuzz::chooseInput( array( "1", "0", wikiFuzz::makeFuzz( 2 ) ) )
-                );
-
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["wpEditToken"] );
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["target"] );
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["wpNewTitle"] );
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpReason"] );
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpOldTitle"] );
-    }
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Movepage";
+
+               $this->params = array (
+                               "action"      => wikiFuzz::chooseInput( array( "success", "submit", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpEditToken' => wikiFuzz::chooseInput( array( '', 0, 34987987, wikiFuzz::makeFuzz( 2 ) ) ),
+                               'target'      => wikiFuzz::chooseInput( array( "x", wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 2 ) ) ) ),
+                               'wpOldTitle'  => wikiFuzz::chooseInput( array( "z", wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 2 ) ), wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpNewTitle'  => wikiFuzz::chooseInput( array( "y", wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 2 ) ), wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpReason'    => wikiFuzz::chooseInput( array( wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpMovetalk'  => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpDeleteAndMove'  => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpConfirm'   => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'talkmoved'   => wikiFuzz::chooseInput( array( "1", wikiFuzz::makeFuzz( 2 ), "articleexists", 'notalkpage' ) ),
+                               'oldtitle'    => wikiFuzz::makeFuzz( 2 ),
+                               'newtitle'    => wikiFuzz::makeFuzz( 2 ),
+                               'wpMovetalk'  => wikiFuzz::chooseInput( array( "1", "0", wikiFuzz::makeFuzz( 2 ) ) )
+                               );
+
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["wpEditToken"] );
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["target"] );
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["wpNewTitle"] );
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpReason"] );
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpOldTitle"] );
+       }
 }
 
 
 }
 
 
@@ -1513,26 +1513,26 @@ class specialMovePage extends pageTest {
  ** a page test for "Special:Undelete"
  */
 class specialUndelete extends pageTest {
  ** a page test for "Special:Undelete"
  */
 class specialUndelete extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Undelete";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Undelete";
 
 
-        $this->params = array (
-                "action"      => wikiFuzz::chooseInput( array( "submit", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpEditToken' => wikiFuzz::chooseInput( array( '', 0, 34987987, wikiFuzz::makeFuzz( 2 ) ) ),
-                'target'      => wikiFuzz::chooseInput( array( "x", wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 2 ) ) ) ),
-                'timestamp'   => wikiFuzz::chooseInput( array( "125223", wikiFuzz::makeFuzz( 2 ) ) ),
-                'file'        => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                'restore'     => wikiFuzz::chooseInput( array( "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
-                'preview'     => wikiFuzz::chooseInput( array( "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpComment'   => wikiFuzz::makeFuzz( 2 )
-                );
+               $this->params = array (
+                               "action"      => wikiFuzz::chooseInput( array( "submit", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpEditToken' => wikiFuzz::chooseInput( array( '', 0, 34987987, wikiFuzz::makeFuzz( 2 ) ) ),
+                               'target'      => wikiFuzz::chooseInput( array( "x", wikiFuzz::makeTitleSafe( wikiFuzz::makeFuzz( 2 ) ) ) ),
+                               'timestamp'   => wikiFuzz::chooseInput( array( "125223", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'file'        => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'restore'     => wikiFuzz::chooseInput( array( "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'preview'     => wikiFuzz::chooseInput( array( "0", "1", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpComment'   => wikiFuzz::makeFuzz( 2 )
+                               );
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["wpEditToken"] );
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["target"] );
-        if ( wikiFuzz::randnum( 1 ) == 0 ) unset( $this->params["restore"] );
-        if ( wikiFuzz::randnum( 1 ) == 0 ) unset( $this->params["preview"] );
-    }
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["wpEditToken"] );
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["target"] );
+               if ( wikiFuzz::randnum( 1 ) == 0 ) unset( $this->params["restore"] );
+               if ( wikiFuzz::randnum( 1 ) == 0 ) unset( $this->params["preview"] );
+       }
 }
 
 
 }
 
 
@@ -1540,20 +1540,20 @@ class specialUndelete extends pageTest {
  ** a page test for "Special:Unlockdb"
  */
 class specialUnlockdb extends pageTest {
  ** a page test for "Special:Unlockdb"
  */
 class specialUnlockdb extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Unlockdb";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Unlockdb";
 
 
-        $this->params = array (
-                "action"        => wikiFuzz::chooseInput( array( "submit", "success", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpEditToken'   => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpLockConfirm' => wikiFuzz::chooseInput( array( "0", "1", wikiFuzz::makeFuzz( 2 ) ) )
-                );
+               $this->params = array (
+                               "action"        => wikiFuzz::chooseInput( array( "submit", "success", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpEditToken'   => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpLockConfirm' => wikiFuzz::chooseInput( array( "0", "1", wikiFuzz::makeFuzz( 2 ) ) )
+                               );
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpEditToken"] );
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["action"] );
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpLockConfirm"] );
-    }
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpEditToken"] );
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["action"] );
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpLockConfirm"] );
+       }
 }
 
 
 }
 
 
@@ -1561,21 +1561,21 @@ class specialUnlockdb extends pageTest {
  ** a page test for "Special:Lockdb"
  */
 class specialLockdb extends pageTest {
  ** a page test for "Special:Lockdb"
  */
 class specialLockdb extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Lockdb";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Lockdb";
 
 
-        $this->params = array (
-                "action"       => wikiFuzz::chooseInput( array( "submit", "success", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpEditToken'  => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpLockReason' => wikiFuzz::makeFuzz( 2 ),
-                'wpLockConfirm' => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) )
-                );
+               $this->params = array (
+                               "action"       => wikiFuzz::chooseInput( array( "submit", "success", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpEditToken'  => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpLockReason' => wikiFuzz::makeFuzz( 2 ),
+                               'wpLockConfirm' => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) )
+                               );
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpEditToken"] );
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["action"] );
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpLockConfirm"] );
-    }
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpEditToken"] );
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["action"] );
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpLockConfirm"] );
+       }
 }
 
 
 }
 
 
@@ -1583,22 +1583,22 @@ class specialLockdb extends pageTest {
  ** a page test for "Special:Userrights"
  */
 class specialUserrights extends pageTest {
  ** a page test for "Special:Userrights"
  */
 class specialUserrights extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Userrights";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Userrights";
 
 
-        $this->params = array (
-                'wpEditToken'   => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                'user-editname' => wikiFuzz::chooseInput( array( "Nickj2", "Nickj2\n<xyz>", wikiFuzz::makeFuzz( 2 ) ) ),
-                'ssearchuser'   => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                'saveusergroups' => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ), "Save User Groups" ),
-                'member[]'      => wikiFuzz::chooseInput( array( "0", "bot", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                "available[]"   => wikiFuzz::chooseInput( array( "0", "sysop", "bureaucrat", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) )
-                );
+               $this->params = array (
+                               'wpEditToken'   => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'user-editname' => wikiFuzz::chooseInput( array( "Nickj2", "Nickj2\n<xyz>", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'ssearchuser'   => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'saveusergroups' => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ), "Save User Groups" ),
+                               'member[]'      => wikiFuzz::chooseInput( array( "0", "bot", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "available[]"   => wikiFuzz::chooseInput( array( "0", "sysop", "bureaucrat", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) )
+                               );
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params['ssearchuser'] );
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params['saveusergroups'] );
-    }
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params['ssearchuser'] );
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params['saveusergroups'] );
+       }
 }
 
 
 }
 
 
@@ -1606,23 +1606,23 @@ class specialUserrights extends pageTest {
  ** a test for page protection and unprotection.
  */
 class pageProtectionForm extends pageTest {
  ** a test for page protection and unprotection.
  */
 class pageProtectionForm extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Main_Page";
+       function __construct() {
+               $this->pagePath = "index.php?title=Main_Page";
 
 
-        $this->params = array (
-                "action"               => "protect",
-                'wpEditToken'          => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                "mwProtect-level-edit" => wikiFuzz::chooseInput( array( '', 'autoconfirmed', 'sysop', wikiFuzz::makeFuzz( 2 ) ) ),
-                "mwProtect-level-move" => wikiFuzz::chooseInput( array( '', 'autoconfirmed', 'sysop', wikiFuzz::makeFuzz( 2 ) ) ),
-                "mwProtectUnchained"   => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                'mwProtect-reason'     => wikiFuzz::chooseInput( array( "because it was there", wikiFuzz::makeFuzz( 2 ) ) )
-                );
+               $this->params = array (
+                               "action"               => "protect",
+                               'wpEditToken'          => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "mwProtect-level-edit" => wikiFuzz::chooseInput( array( '', 'autoconfirmed', 'sysop', wikiFuzz::makeFuzz( 2 ) ) ),
+                               "mwProtect-level-move" => wikiFuzz::chooseInput( array( '', 'autoconfirmed', 'sysop', wikiFuzz::makeFuzz( 2 ) ) ),
+                               "mwProtectUnchained"   => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               'mwProtect-reason'     => wikiFuzz::chooseInput( array( "because it was there", wikiFuzz::makeFuzz( 2 ) ) )
+                               );
 
 
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["mwProtectUnchained"] );
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params['mwProtect-reason'] );
-    }
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["mwProtectUnchained"] );
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params['mwProtect-reason'] );
+       }
 }
 
 
 }
 
 
@@ -1630,38 +1630,38 @@ class pageProtectionForm extends pageTest {
  ** a page test for "Special:Blockip".
  */
 class specialBlockip extends pageTest {
  ** a page test for "Special:Blockip".
  */
 class specialBlockip extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Blockip";
-
-        $this->params = array (
-                "action"          => wikiFuzz::chooseInput( array( "submit", "",  wikiFuzz::makeFuzz( 2 ) ) ),
-                'wpEditToken'     => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                "wpBlockAddress"  => wikiFuzz::chooseInput( array( "20398702394", "", "Nickj2", wikiFuzz::makeFuzz( 2 ),
-                                      // something like an IP address, sometimes invalid:
-                                     ( wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) . "."
-                                      . wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) ) ) ),
-                "ip"              => wikiFuzz::chooseInput( array( "20398702394", "", "Nickj2", wikiFuzz::makeFuzz( 2 ),
-                                      // something like an IP address, sometimes invalid:
-                                     ( wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) . "."
-                                      . wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) ) ) ),
-                "wpBlockOther"    => wikiFuzz::chooseInput( array( '', 'Nickj2', wikiFuzz::makeFuzz( 2 ) ) ),
-                "wpBlockExpiry"   => wikiFuzz::chooseInput( array( "other", "2 hours", "1 day", "3 days", "1 week", "2 weeks",
-                                          "1 month", "3 months", "6 months", "1 year", "infinite", wikiFuzz::makeFuzz( 2 ) ) ),
-                "wpBlockReason"   => wikiFuzz::chooseInput( array( "because it was there", wikiFuzz::makeFuzz( 2 ) ) ),
-                "wpAnonOnly"      => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                "wpCreateAccount" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                "wpBlock"         => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) )
-                );
-
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpBlockOther"] );
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpBlockExpiry"] );
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpBlockReason"] );
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpAnonOnly"] );
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpCreateAccount"] );
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpBlockAddress"] );
-        if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["ip"] );
-    }
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Blockip";
+
+               $this->params = array (
+                               "action"          => wikiFuzz::chooseInput( array( "submit", "",  wikiFuzz::makeFuzz( 2 ) ) ),
+                               'wpEditToken'     => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "wpBlockAddress"  => wikiFuzz::chooseInput( array( "20398702394", "", "Nickj2", wikiFuzz::makeFuzz( 2 ),
+                                                                         // something like an IP address, sometimes invalid:
+                                                                        ( wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) . "."
+                                                                         . wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) ) ) ),
+                               "ip"              => wikiFuzz::chooseInput( array( "20398702394", "", "Nickj2", wikiFuzz::makeFuzz( 2 ),
+                                                                         // something like an IP address, sometimes invalid:
+                                                                        ( wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) . "."
+                                                                         . wikiFuzz::randnum( 300, -20 ) . "." . wikiFuzz::randnum( 300, -20 ) ) ) ),
+                               "wpBlockOther"    => wikiFuzz::chooseInput( array( '', 'Nickj2', wikiFuzz::makeFuzz( 2 ) ) ),
+                               "wpBlockExpiry"   => wikiFuzz::chooseInput( array( "other", "2 hours", "1 day", "3 days", "1 week", "2 weeks",
+                                                                                 "1 month", "3 months", "6 months", "1 year", "infinite", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "wpBlockReason"   => wikiFuzz::chooseInput( array( "because it was there", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "wpAnonOnly"      => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "wpCreateAccount" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "wpBlock"         => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) )
+                               );
+
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpBlockOther"] );
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpBlockExpiry"] );
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpBlockReason"] );
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpAnonOnly"] );
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpCreateAccount"] );
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["wpBlockAddress"] );
+               if ( wikiFuzz::randnum( 4 ) == 0 ) unset( $this->params["ip"] );
+       }
 }
 
 
 }
 
 
@@ -1669,22 +1669,22 @@ class specialBlockip extends pageTest {
  ** a test for the imagepage.
  */
 class imagepageTest extends pageTest {
  ** a test for the imagepage.
  */
 class imagepageTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Image:Small-email.png";
+       function __construct() {
+               $this->pagePath = "index.php?title=Image:Small-email.png";
 
 
-        $this->params = array (
-                "image"         => wikiFuzz::chooseInput( array( "Small-email.png", wikiFuzz::makeFuzz( 2 ) ) ),
-                "wpReason"      => wikiFuzz::makeFuzz( 2 ),
-                "oldimage"      => wikiFuzz::chooseInput( array( "Small-email.png", wikiFuzz::makeFuzz( 2 ) ) ),
-                "wpEditToken"   => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                );
+               $this->params = array (
+                               "image"         => wikiFuzz::chooseInput( array( "Small-email.png", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "wpReason"      => wikiFuzz::makeFuzz( 2 ),
+                               "oldimage"      => wikiFuzz::chooseInput( array( "Small-email.png", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "wpEditToken"   => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               );
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["image"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpReason"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["oldimage"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpEditToken"] );
-    }
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["image"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpReason"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["oldimage"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpEditToken"] );
+       }
 }
 
 
 }
 
 
@@ -1692,20 +1692,20 @@ class imagepageTest extends pageTest {
  ** a test for page deletion form.
  */
 class pageDeletion extends pageTest {
  ** a test for page deletion form.
  */
 class pageDeletion extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Main_Page&action=delete";
+       function __construct() {
+               $this->pagePath = "index.php?title=Main_Page&action=delete";
 
 
-        $this->params = array (
-                "wpEditToken" => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                "wpReason"    => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                "wpConfirm"   => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                );
+               $this->params = array (
+                               "wpEditToken" => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "wpReason"    => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "wpConfirm"   => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               );
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 5 ) == 0 ) unset( $this->params["wpReason"] );
-        if ( wikiFuzz::randnum( 5 ) == 0 ) unset( $this->params["wpEditToken"] );
-        if ( wikiFuzz::randnum( 5 ) == 0 ) unset( $this->params["wpConfirm"] );
-    }
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 5 ) == 0 ) unset( $this->params["wpReason"] );
+               if ( wikiFuzz::randnum( 5 ) == 0 ) unset( $this->params["wpEditToken"] );
+               if ( wikiFuzz::randnum( 5 ) == 0 ) unset( $this->params["wpConfirm"] );
+       }
 }
 
 
 }
 
 
@@ -1714,30 +1714,30 @@ class pageDeletion extends pageTest {
  ** a test for Revision Deletion.
  */
 class specialRevisionDelete extends pageTest {
  ** a test for Revision Deletion.
  */
 class specialRevisionDelete extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Revisiondelete";
-
-        $this->params = array (
-                "target"               => wikiFuzz::chooseInput( array( "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
-                "oldid"                => wikiFuzz::makeFuzz( 2 ),
-                "oldid[]"              => wikiFuzz::makeFuzz( 2 ),
-                "wpReason"             => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                "revdelete-hide-text"  => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                "revdelete-hide-comment" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                "revdelete-hide-user"  => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                "revdelete-hide-restricted" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                );
-
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["target"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["oldid"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["oldid[]"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpReason"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["revdelete-hide-text"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["revdelete-hide-comment"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["revdelete-hide-user"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["revdelete-hide-restricted"] );
-    }
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Revisiondelete";
+
+               $this->params = array (
+                               "target"               => wikiFuzz::chooseInput( array( "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "oldid"                => wikiFuzz::makeFuzz( 2 ),
+                               "oldid[]"              => wikiFuzz::makeFuzz( 2 ),
+                               "wpReason"             => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "revdelete-hide-text"  => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "revdelete-hide-comment" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "revdelete-hide-user"  => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "revdelete-hide-restricted" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               );
+
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["target"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["oldid"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["oldid[]"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["wpReason"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["revdelete-hide-text"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["revdelete-hide-comment"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["revdelete-hide-user"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["revdelete-hide-restricted"] );
+       }
 }
 
 
 }
 
 
@@ -1745,31 +1745,31 @@ class specialRevisionDelete extends pageTest {
  ** a test for Special:Import.
  */
 class specialImport extends pageTest {
  ** a test for Special:Import.
  */
 class specialImport extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Import";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Import";
 
 
-        $this->params = array (
-                "action"         => "submit",
-                "source"         => wikiFuzz::chooseInput( array( "upload", "interwiki", wikiFuzz::makeFuzz( 2 ) ) ),
-                "MAX_FILE_SIZE"  => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                "xmlimport"      => wikiFuzz::chooseInput( array( "/var/www/hosts/mediawiki/wiki/AdminSettings.php", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                "namespace"      => wikiFuzz::chooseInput( array( wikiFuzz::randnum( 30, -6 ), wikiFuzz::makeFuzz( 2 ) ) ),
-                "interwiki"      => wikiFuzz::makeFuzz( 2 ),
-                "interwikiHistory" => wikiFuzz::makeFuzz( 2 ),
-                "frompage"       => wikiFuzz::makeFuzz( 2 ),
-                );
+               $this->params = array (
+                               "action"         => "submit",
+                               "source"         => wikiFuzz::chooseInput( array( "upload", "interwiki", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "MAX_FILE_SIZE"  => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "xmlimport"      => wikiFuzz::chooseInput( array( "/var/www/hosts/mediawiki/wiki/AdminSettings.php", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "namespace"      => wikiFuzz::chooseInput( array( wikiFuzz::randnum( 30, -6 ), wikiFuzz::makeFuzz( 2 ) ) ),
+                               "interwiki"      => wikiFuzz::makeFuzz( 2 ),
+                               "interwikiHistory" => wikiFuzz::makeFuzz( 2 ),
+                               "frompage"       => wikiFuzz::makeFuzz( 2 ),
+                               );
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["action"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["source"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["MAX_FILE_SIZE"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["xmlimport"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["interwiki"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["interwikiHistory"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["frompage"] );
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["action"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["source"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["MAX_FILE_SIZE"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["xmlimport"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["interwiki"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["interwikiHistory"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["frompage"] );
 
 
-        // Note: Need to do a file upload to fully test this Special page.
-    }
+               // Note: Need to do a file upload to fully test this Special page.
+       }
 }
 
 
 }
 
 
@@ -1777,20 +1777,20 @@ class specialImport extends pageTest {
  ** a test for thumb.php
  */
 class thumbTest extends pageTest {
  ** a test for thumb.php
  */
 class thumbTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "thumb.php";
+       function __construct() {
+               $this->pagePath = "thumb.php";
 
 
-        $this->params = array (
-                "f"  => wikiFuzz::chooseInput( array( "..", "\\", "small-email.png", wikiFuzz::makeFuzz( 2 ) ) ),
-                "w"  => wikiFuzz::chooseInput( array( "80", wikiFuzz::randnum( 6000, -200 ), wikiFuzz::makeFuzz( 2 ) ) ),
-                "r"  => wikiFuzz::chooseInput( array( "0", wikiFuzz::makeFuzz( 2 ) ) ),
-                );
+               $this->params = array (
+                               "f"  => wikiFuzz::chooseInput( array( "..", "\\", "small-email.png", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "w"  => wikiFuzz::chooseInput( array( "80", wikiFuzz::randnum( 6000, -200 ), wikiFuzz::makeFuzz( 2 ) ) ),
+                               "r"  => wikiFuzz::chooseInput( array( "0", wikiFuzz::makeFuzz( 2 ) ) ),
+                               );
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["f"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["w"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["r"] );
-    }
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["f"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["w"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["r"] );
+       }
 }
 
 
 }
 
 
@@ -1798,24 +1798,24 @@ class thumbTest extends pageTest {
  ** a test for trackback.php
  */
 class trackbackTest extends pageTest {
  ** a test for trackback.php
  */
 class trackbackTest extends pageTest {
-    function __construct() {
-        $this->pagePath = "trackback.php";
+       function __construct() {
+               $this->pagePath = "trackback.php";
+
+               $this->params = array (
+                               "url"       => wikiFuzz::makeFuzz( 2 ),
+                               "blog_name" => wikiFuzz::chooseInput( array( "80", wikiFuzz::randnum( 6000, -200 ), wikiFuzz::makeFuzz( 2 ) ) ),
+                               "article"   => wikiFuzz::chooseInput( array( "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "title"     => wikiFuzz::chooseInput( array( "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "excerpt"   => wikiFuzz::makeFuzz( 2 ),
+                               );
 
 
-        $this->params = array (
-                "url"       => wikiFuzz::makeFuzz( 2 ),
-                "blog_name" => wikiFuzz::chooseInput( array( "80", wikiFuzz::randnum( 6000, -200 ), wikiFuzz::makeFuzz( 2 ) ) ),
-                "article"   => wikiFuzz::chooseInput( array( "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
-                "title"     => wikiFuzz::chooseInput( array( "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
-                "excerpt"   => wikiFuzz::makeFuzz( 2 ),
-                );
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["title"] );
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["excerpt"] );
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["title"] );
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["excerpt"] );
-        
-        // page does not produce HTML.
-        $this->tidyValidate = false;
-    }
+               // page does not produce HTML.
+               $this->tidyValidate = false;
+       }
 }
 
 
 }
 
 
@@ -1823,19 +1823,19 @@ class trackbackTest extends pageTest {
  ** a test for profileinfo.php
  */
 class profileInfo extends pageTest {
  ** a test for profileinfo.php
  */
 class profileInfo extends pageTest {
-    function __construct() {
-        $this->pagePath = "profileinfo.php";
+       function __construct() {
+               $this->pagePath = "profileinfo.php";
 
 
-        $this->params = array (
-                "expand"  => wikiFuzz::makeFuzz( 2 ),
-                "sort"    => wikiFuzz::chooseInput( array( "time", "count", "name", wikiFuzz::makeFuzz( 2 ) ) ),
-                "filter"  => wikiFuzz::chooseInput( array( "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
-                );
+               $this->params = array (
+                               "expand"  => wikiFuzz::makeFuzz( 2 ),
+                               "sort"    => wikiFuzz::chooseInput( array( "time", "count", "name", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "filter"  => wikiFuzz::chooseInput( array( "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
+                               );
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["sort"] );
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["filter"] );
-    }
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["sort"] );
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["filter"] );
+       }
 }
 
 
 }
 
 
@@ -1843,18 +1843,18 @@ class profileInfo extends pageTest {
  ** a test for Special:Cite (extension Special page).
  */
 class specialCite extends pageTest {
  ** a test for Special:Cite (extension Special page).
  */
 class specialCite extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Cite";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Cite";
 
 
-        $this->params = array (
-                "page"    => wikiFuzz::chooseInput( array( "\" onmouseover=\"alert(1);\"", "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
-                "id"      => wikiFuzz::chooseInput( array( "-1", "0", "------'-------0", "+1", "-9823412312312412435", wikiFuzz::makeFuzz( 2 ) ) ),
-                );
+               $this->params = array (
+                               "page"    => wikiFuzz::chooseInput( array( "\" onmouseover=\"alert(1);\"", "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "id"      => wikiFuzz::chooseInput( array( "-1", "0", "------'-------0", "+1", "-9823412312312412435", wikiFuzz::makeFuzz( 2 ) ) ),
+                               );
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["page"] );
-        if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["id"] );
-    }
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["page"] );
+               if ( wikiFuzz::randnum( 6 ) == 0 ) unset( $this->params["id"] );
+       }
 }
 
 
 }
 
 
@@ -1862,13 +1862,13 @@ class specialCite extends pageTest {
  ** a test for Special:Filepath (extension Special page).
  */
 class specialFilepath extends pageTest {
  ** a test for Special:Filepath (extension Special page).
  */
 class specialFilepath extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Filepath";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Filepath";
 
 
-        $this->params = array (
-                "file"    => wikiFuzz::chooseInput( array( "Small-email.png", "Small-email.png" . wikiFuzz::makeFuzz( 1 ), wikiFuzz::makeFuzz( 2 ) ) ),
-                );
-    }
+               $this->params = array (
+                               "file"    => wikiFuzz::chooseInput( array( "Small-email.png", "Small-email.png" . wikiFuzz::makeFuzz( 1 ), wikiFuzz::makeFuzz( 2 ) ) ),
+                               );
+       }
 }
 
 
 }
 
 
@@ -1876,22 +1876,22 @@ class specialFilepath extends pageTest {
  ** a test for Special:Makebot (extension Special page).
  */
 class specialMakebot extends pageTest {
  ** a test for Special:Makebot (extension Special page).
  */
 class specialMakebot extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Makebot";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Makebot";
 
 
-        $this->params = array (
-                "username" => wikiFuzz::chooseInput( array( "Nickj2", "192.168.0.2", wikiFuzz::makeFuzz( 1 ) ) ),
-                "dosearch" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                "grant"    => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                "comment"  => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                "token"    => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                );
+               $this->params = array (
+                               "username" => wikiFuzz::chooseInput( array( "Nickj2", "192.168.0.2", wikiFuzz::makeFuzz( 1 ) ) ),
+                               "dosearch" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "grant"    => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "comment"  => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "token"    => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               );
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["dosearch"] );
-        if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["grant"] );
-        if ( wikiFuzz::randnum( 5 ) == 0 ) unset( $this->params["token"] );
-    }
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["dosearch"] );
+               if ( wikiFuzz::randnum( 2 ) == 0 ) unset( $this->params["grant"] );
+               if ( wikiFuzz::randnum( 5 ) == 0 ) unset( $this->params["token"] );
+       }
 }
 
 
 }
 
 
@@ -1899,22 +1899,22 @@ class specialMakebot extends pageTest {
  ** a test for Special:Makesysop (extension Special page).
  */
 class specialMakesysop extends pageTest {
  ** a test for Special:Makesysop (extension Special page).
  */
 class specialMakesysop extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Makesysop";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Makesysop";
 
 
-        $this->params = array (
-                "wpMakesysopUser"   => wikiFuzz::chooseInput( array( "Nickj2", "192.168.0.2", wikiFuzz::makeFuzz( 1 ) ) ),
-                "action"            => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                "wpMakesysopSubmit" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
-                "wpEditToken"       => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                "wpSetBureaucrat"   => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                );
+               $this->params = array (
+                               "wpMakesysopUser"   => wikiFuzz::chooseInput( array( "Nickj2", "192.168.0.2", wikiFuzz::makeFuzz( 1 ) ) ),
+                               "action"            => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "wpMakesysopSubmit" => wikiFuzz::chooseInput( array( "0", "1", "++--34234", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "wpEditToken"       => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               "wpSetBureaucrat"   => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               );
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["wpMakesysopSubmit"] );
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["wpEditToken"] );
-        if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["wpSetBureaucrat"] );
-    }
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["wpMakesysopSubmit"] );
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["wpEditToken"] );
+               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["wpSetBureaucrat"] );
+       }
 }
 
 
 }
 
 
@@ -1922,15 +1922,15 @@ class specialMakesysop extends pageTest {
  ** a test for Special:Renameuser (extension Special page).
  */
 class specialRenameuser extends pageTest {
  ** a test for Special:Renameuser (extension Special page).
  */
 class specialRenameuser extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:Renameuser";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Renameuser";
 
 
-        $this->params = array (
-                "oldusername"   => wikiFuzz::chooseInput( array( "Nickj2", "192.168.0.2", wikiFuzz::makeFuzz( 1 ) ) ),
-                "newusername"   => wikiFuzz::chooseInput( array( "Nickj2", "192.168.0.2", wikiFuzz::makeFuzz( 1 ) ) ),
-                "token"         => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
-                );
-    }
+               $this->params = array (
+                               "oldusername"   => wikiFuzz::chooseInput( array( "Nickj2", "192.168.0.2", wikiFuzz::makeFuzz( 1 ) ) ),
+                               "newusername"   => wikiFuzz::chooseInput( array( "Nickj2", "192.168.0.2", wikiFuzz::makeFuzz( 1 ) ) ),
+                               "token"         => wikiFuzz::chooseInput( array( "20398702394", "", wikiFuzz::makeFuzz( 2 ) ) ),
+                               );
+       }
 }
 
 
 }
 
 
@@ -1938,16 +1938,16 @@ class specialRenameuser extends pageTest {
  ** a test for Special:Linksearch (extension Special page).
  */
 class specialLinksearch extends pageTest {
  ** a test for Special:Linksearch (extension Special page).
  */
 class specialLinksearch extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special%3ALinksearch";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special%3ALinksearch";
 
 
-        $this->params = array (
-                "target" => wikiFuzz::makeFuzz( 2 ),
-                );
+               $this->params = array (
+                               "target" => wikiFuzz::makeFuzz( 2 ),
+                               );
 
 
-        // sometimes we don't want to specify certain parameters.
-        if ( wikiFuzz::randnum( 10 ) == 0 ) unset( $this->params["target"] );
-    }
+               // sometimes we don't want to specify certain parameters.
+               if ( wikiFuzz::randnum( 10 ) == 0 ) unset( $this->params["target"] );
+       }
 }
 
 
 }
 
 
@@ -1955,20 +1955,20 @@ class specialLinksearch extends pageTest {
  ** a test for Special:CategoryTree (extension Special page).
  */
 class specialCategoryTree extends pageTest {
  ** a test for Special:CategoryTree (extension Special page).
  */
 class specialCategoryTree extends pageTest {
-    function __construct() {
-        $this->pagePath = "index.php?title=Special:CategoryTree";
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:CategoryTree";
 
 
-        $this->params = array (
-                "target" => wikiFuzz::makeFuzz( 2 ),
-                "from"   => wikiFuzz::makeFuzz( 2 ),
-                "until"  => wikiFuzz::makeFuzz( 2 ),
-                "showas" => wikiFuzz::makeFuzz( 2 ),
-                "mode"   => wikiFuzz::chooseInput( array( "pages", "categories", "all", wikiFuzz::makeFuzz( 2 ) ) ),
-                );
+               $this->params = array (
+                               "target" => wikiFuzz::makeFuzz( 2 ),
+                               "from"   => wikiFuzz::makeFuzz( 2 ),
+                               "until"  => wikiFuzz::makeFuzz( 2 ),
+                               "showas" => wikiFuzz::makeFuzz( 2 ),
+                               "mode"   => wikiFuzz::chooseInput( array( "pages", "categories", "all", wikiFuzz::makeFuzz( 2 ) ) ),
+                               );
 
 
-        // sometimes we do want to specify certain parameters.
-        if ( wikiFuzz::randnum( 5 ) == 0 ) $this->params["notree"] = wikiFuzz::chooseInput( array( "1", 0, "", wikiFuzz::makeFuzz( 2 ) ) );
-    }
+               // sometimes we do want to specify certain parameters.
+               if ( wikiFuzz::randnum( 5 ) == 0 ) $this->params["notree"] = wikiFuzz::chooseInput( array( "1", 0, "", wikiFuzz::makeFuzz( 2 ) ) );
+       }
 }
 
 
 }
 
 
@@ -1976,40 +1976,40 @@ class specialCategoryTree extends pageTest {
  ** a test for "Special:Chemicalsources" (extension Special page).
  */
 class specialChemicalsourcesTest extends pageTest {
  ** a test for "Special:Chemicalsources" (extension Special page).
  */
 class specialChemicalsourcesTest extends pageTest {
-    function __construct() {
-       $this->pagePath = "index.php?title=Special:Chemicalsources";
-
-       // choose an input format to use.
-       $format =  wikiFuzz::chooseInput(
-                               array(  'go',
-                                       'CAS',
-                                       'EINECS',
-                                       'CHEBI',
-                                       'PubChem',
-                                       'SMILES',
-                                       'InChI',
-                                       'ATCCode',
-                                       'KEGG',
-                                       'RTECS',
-                                       'ECNumber',
-                                       'DrugBank',
-                                       'Formula',
-                                       'Name'
-                                    )
-                               );
-
-        // values for different formats usually start with either letters or numbers.
-        switch ( $format ) {
-               case 'Name'   : $value = "A"; break;
-               case 'InChI'  :
-               case 'SMILES' :
-               case 'Formula': $value = "C"; break;
-               default       : $value = "0"; break;
-        }
-
-        // and then we append the fuzz input.
-        $this->params = array ( $format => $value . wikiFuzz::makeFuzz( 2 ) );
-    }
+       function __construct() {
+               $this->pagePath = "index.php?title=Special:Chemicalsources";
+
+               // choose an input format to use.
+               $format =  wikiFuzz::chooseInput(
+                                       array(  'go',
+                                                       'CAS',
+                                                       'EINECS',
+                                                       'CHEBI',
+                                                       'PubChem',
+                                                       'SMILES',
+                                                       'InChI',
+                                                       'ATCCode',
+                                                       'KEGG',
+                                                       'RTECS',
+                                                       'ECNumber',
+                                                       'DrugBank',
+                                                       'Formula',
+                                                       'Name'
+                                                )
+                                       );
+
+               // values for different formats usually start with either letters or numbers.
+               switch ( $format ) {
+                       case 'Name'   : $value = "A"; break;
+                       case 'InChI'  :
+                       case 'SMILES' :
+                       case 'Formula': $value = "C"; break;
+                       default       : $value = "0"; break;
+               }
+
+               // and then we append the fuzz input.
+               $this->params = array ( $format => $value . wikiFuzz::makeFuzz( 2 ) );
+       }
 }
 
 
 }
 
 
@@ -2024,143 +2024,143 @@ class specialChemicalsourcesTest extends pageTest {
  */
 class api extends pageTest {
 
  */
 class api extends pageTest {
 
-    // API login mode.
-    private static function loginMode() {
-        $arr =  array ( "lgname"        => wikiFuzz::makeFuzz( 2 ),
-                        "lgpassword"    => wikiFuzz::makeFuzz( 2 ),
-                       );
-        // sometimes we want to specify the extra "lgdomain" parameter.
-        if ( wikiFuzz::randnum( 3 ) == 0 ) {
-               $arr["lgdomain"] = wikiFuzz::chooseInput( array( "1", 0, "", wikiFuzz::makeFuzz( 2 ) ) );
-        }
-
-        return $arr;
-    }
-
-    // API OpenSearch mode.
-    private static function opensearchMode() {
-       return array ( "search"        => wikiFuzz::makeFuzz( 2 ) );
-    }
-
-    // API watchlist feed mode.
-    private static function feedwatchlistMode() {
-       // FIXME: add "wikiFuzz::makeFuzz(2)" as possible value below?
-       return array ( "feedformat"    => wikiFuzz::chooseInput( array( "rss", "atom" ) ) );
-    }
-
-    // API query mode.
-    private static function queryMode() {
-       // FIXME: add "wikiFuzz::makeFuzz(2)" as possible params for the elements below?
-       //        Suspect this will stuff up the tests more, but need to check.
-       $params = array (
-                        // FIXME: More titles.
-                        "titles"        => wikiFuzz::chooseInput( array( "Main Page" ) ),
-                        // FIXME: More pageids.                         
-                        "pageids"       => 1,
-                        "prop"          => wikiFuzz::chooseInput( array( "info", "revisions", "watchlist" ) ),
-                        "list"          => wikiFuzz::chooseInput( array( "allpages", "logevents", "watchlist", "usercontribs", "recentchanges", "backlinks", "embeddedin", "imagelinks" ) ),
-                        "meta"          => wikiFuzz::chooseInput( array( "siteinfo" ) ),
-                        "generator"     => wikiFuzz::chooseInput( array( "allpages", "logevents", "watchlist", "info", "revisions" ) ),
-                        "siprop"        => wikiFuzz::chooseInput( array( "general", "namespaces", "general|namespaces" ) ),
-                   );
-         
-         // Add extra parameters based on what list choice we got.
-         switch ( $params["list"] ) {
-               case "usercontribs" : self::addListParams ( $params, "uc", array( "limit", "start", "end", "user", "dir" ) ); break;
-               case "allpages"     : self::addListParams ( $params, "ap", array( "from", "prefix", "namespace", "filterredir", "limit" ) ); break;
-               case "watchlist"    : self::addListParams ( $params, "wl", array( "allrev", "start", "end", "namespace", "dir", "limit", "prop" ) ); break;
-               case "logevents"    : self::addListParams ( $params, "le", array( "limit", "type", "start", "end", "user", "dir" ) ); break;
-               case "recentchanges": self::addListParams ( $params, "rc", array( "limit", "prop", "show", "namespace", "start", "end", "dir" ) ); break;
-               case "backlinks"    : self::addListParams ( $params, "bl", array( "continue", "namespace", "redirect", "limit" ) ); break;
-               case "embeddedin"   : self::addListParams ( $params, "ei", array( "continue", "namespace", "redirect", "limit" ) ); break;
-               case "imagelinks"   : self::addListParams ( $params, "il", array( "continue", "namespace", "redirect", "limit" ) ); break;
-         }
-
-         if ( $params["prop"] == "revisions" ) {
-               self::addListParams ( $params, "rv", array( "prop", "limit", "startid", "endid", "end", "dir" ) );
-         }
-
-         // Sometimes we want redirects, sometimes we don't.
-         if ( wikiFuzz::randnum( 3 ) == 0 ) {
-               $params["redirects"] = wikiFuzz::chooseInput( array( "1", 0, "", wikiFuzz::makeFuzz( 2 ) ) );
-         }
-
-         return $params;
-    }
-
-    // Adds all the elements to the array, using the specified prefix.
-    private static function addListParams( &$array, $prefix, $elements )  {
-       foreach ( $elements as $element ) {
-               $array[$prefix . $element] = self::getParamDetails( $element );
-       }
-    }
-
-    // For a given element name, returns the data for that element.
-    private static function getParamDetails( $element ) {
-       switch ( $element ) {
-               case 'startid'    :
-               case 'endid'      :
-               case 'start'      :
-               case 'end'        :
-               case 'limit'      : return wikiFuzz::chooseInput( array( "0", "-1", "---'----------0", "+1", "8134", "320742734234235", "20060230121212", wikiFuzz::randnum( 9000, -100 ), wikiFuzz::makeFuzz( 2 ) ) );
-               case 'dir'        : return wikiFuzz::chooseInput( array( "newer", "older", wikiFuzz::makeFuzz( 2 ) ) );
-               case 'user'       : return wikiFuzz::chooseInput( array( USER_ON_WIKI, wikiFuzz::makeFuzz( 2 ) ) );
-               case 'namespace'  : return wikiFuzz::chooseInput( array( -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 200000, wikiFuzz::makeFuzz( 2 ) ) );
-               case 'filterredir': return wikiFuzz::chooseInput( array( "all", "redirects", "nonredirectsallpages", wikiFuzz::makeFuzz( 2 ) ) );
-               case 'allrev'     : return wikiFuzz::chooseInput( array( "1", 0, "", wikiFuzz::makeFuzz( 2 ) ) );
-               case 'prop'       : return wikiFuzz::chooseInput( array( "user", "comment", "timestamp", "patrol", "flags", "user|user|comment|flags", wikiFuzz::makeFuzz( 2 ) ) );
-               case 'type'       : return wikiFuzz::chooseInput( array( "block", "protect", "rights", "delete", "upload", "move", "import", "renameuser", "newusers", "makebot", wikiFuzz::makeFuzz( 2 ) ) );
-               case 'hide'       : return wikiFuzz::chooseInput( array( "minor", "bots", "anons", "liu", "liu|bots|", wikiFuzz::makeFuzz( 2 ) ) );
-               case 'show'       : return wikiFuzz::chooseInput( array( 'minor', '!minor', 'bot', '!bot', 'anon', '!anon', wikiFuzz::makeFuzz( 2 ) ) );
-               default           : return wikiFuzz::makeFuzz( 2 );
-       }
-    }
-
-    // Entry point.
-    function __construct() {
-       $this->pagePath = "api.php";
-
-        $modes = array ( "help",
-                        "login",
-                        "opensearch",
-                        "feedwatchlist",
-                        "query" );
-        $action = wikiFuzz::chooseInput( array_merge ( $modes, array( wikiFuzz::makeFuzz( 2 ) ) ) );
-        
-        switch ( $action ) {
-            case "login"         : $this->params = self::loginMode();
-                                   break;
-            case "opensearch"    : $this->params = self::opensearchMode();
-                                   break;
-            case "feedwatchlist" : $this->params = self::feedwatchlistMode();
-                                   break;
-            case "query"         : $this->params = self::queryMode();
-                                   break;
-            case "help"         :
-            default             :  // Do something random - "Crazy Ivan" mode.
-                                   $random_mode = wikiFuzz::chooseInput( $modes ) . "Mode";
-                                   // There is no "helpMode".
-                                   if ( $random_mode == "helpMode" ) $random_mode = "queryMode";
-                                   $this->params = self::$random_mode();
-                                   break;
-        }
-        
-        // Save the selected action.
-        $this->params["action"] = $action;
-
-        // Set the cookie:
-        // FIXME: need to get this cookie dynamically set, rather than hard-coded.
-        $this->cookie = "wikidbUserID=10001; wikidbUserName=Test; wikidb_session=178df0fe68c75834643af65dec9ec98a; wikidbToken=1adc6753d62c44aec950c024d7ae0540";
-
-        // Output format
-        $this->params["format"] = wikiFuzz::chooseInput( array( "json", "jsonfm", "php", "phpfm",
-                                                               "wddx", "wddxfm", "xml", "xmlfm",
-                                                               "yaml", "yamlfm", "raw", "rawfm",
-                                                               wikiFuzz::makeFuzz( 2 ) ) );
-
-        // Page does not produce HTML (sometimes).
-        $this->tidyValidate = false;
-    }
+       // API login mode.
+       private static function loginMode() {
+               $arr =  array ( "lgname"        => wikiFuzz::makeFuzz( 2 ),
+                                               "lgpassword"    => wikiFuzz::makeFuzz( 2 ),
+                                          );
+               // sometimes we want to specify the extra "lgdomain" parameter.
+               if ( wikiFuzz::randnum( 3 ) == 0 ) {
+                       $arr["lgdomain"] = wikiFuzz::chooseInput( array( "1", 0, "", wikiFuzz::makeFuzz( 2 ) ) );
+               }
+
+               return $arr;
+       }
+
+       // API OpenSearch mode.
+       private static function opensearchMode() {
+               return array ( "search"        => wikiFuzz::makeFuzz( 2 ) );
+       }
+
+       // API watchlist feed mode.
+       private static function feedwatchlistMode() {
+               // FIXME: add "wikiFuzz::makeFuzz(2)" as possible value below?
+               return array ( "feedformat"    => wikiFuzz::chooseInput( array( "rss", "atom" ) ) );
+       }
+
+       // API query mode.
+       private static function queryMode() {
+               // FIXME: add "wikiFuzz::makeFuzz(2)" as possible params for the elements below?
+               //        Suspect this will stuff up the tests more, but need to check.
+               $params = array (
+                                        // FIXME: More titles.
+                                        "titles"        => wikiFuzz::chooseInput( array( "Main Page" ) ),
+                                        // FIXME: More pageids.
+                                        "pageids"       => 1,
+                                        "prop"          => wikiFuzz::chooseInput( array( "info", "revisions", "watchlist" ) ),
+                                        "list"          => wikiFuzz::chooseInput( array( "allpages", "logevents", "watchlist", "usercontribs", "recentchanges", "backlinks", "embeddedin", "imagelinks" ) ),
+                                        "meta"          => wikiFuzz::chooseInput( array( "siteinfo" ) ),
+                                        "generator"     => wikiFuzz::chooseInput( array( "allpages", "logevents", "watchlist", "info", "revisions" ) ),
+                                        "siprop"        => wikiFuzz::chooseInput( array( "general", "namespaces", "general|namespaces" ) ),
+                                  );
+
+                // Add extra parameters based on what list choice we got.
+                switch ( $params["list"] ) {
+                       case "usercontribs" : self::addListParams ( $params, "uc", array( "limit", "start", "end", "user", "dir" ) ); break;
+                       case "allpages"     : self::addListParams ( $params, "ap", array( "from", "prefix", "namespace", "filterredir", "limit" ) ); break;
+                       case "watchlist"    : self::addListParams ( $params, "wl", array( "allrev", "start", "end", "namespace", "dir", "limit", "prop" ) ); break;
+                       case "logevents"    : self::addListParams ( $params, "le", array( "limit", "type", "start", "end", "user", "dir" ) ); break;
+                       case "recentchanges": self::addListParams ( $params, "rc", array( "limit", "prop", "show", "namespace", "start", "end", "dir" ) ); break;
+                       case "backlinks"    : self::addListParams ( $params, "bl", array( "continue", "namespace", "redirect", "limit" ) ); break;
+                       case "embeddedin"   : self::addListParams ( $params, "ei", array( "continue", "namespace", "redirect", "limit" ) ); break;
+                       case "imagelinks"   : self::addListParams ( $params, "il", array( "continue", "namespace", "redirect", "limit" ) ); break;
+                }
+
+                if ( $params["prop"] == "revisions" ) {
+                       self::addListParams ( $params, "rv", array( "prop", "limit", "startid", "endid", "end", "dir" ) );
+                }
+
+                // Sometimes we want redirects, sometimes we don't.
+                if ( wikiFuzz::randnum( 3 ) == 0 ) {
+                       $params["redirects"] = wikiFuzz::chooseInput( array( "1", 0, "", wikiFuzz::makeFuzz( 2 ) ) );
+                }
+
+                return $params;
+       }
+
+       // Adds all the elements to the array, using the specified prefix.
+       private static function addListParams( &$array, $prefix, $elements )  {
+               foreach ( $elements as $element ) {
+                       $array[$prefix . $element] = self::getParamDetails( $element );
+               }
+       }
+
+       // For a given element name, returns the data for that element.
+       private static function getParamDetails( $element ) {
+               switch ( $element ) {
+                       case 'startid'    :
+                       case 'endid'      :
+                       case 'start'      :
+                       case 'end'        :
+                       case 'limit'      : return wikiFuzz::chooseInput( array( "0", "-1", "---'----------0", "+1", "8134", "320742734234235", "20060230121212", wikiFuzz::randnum( 9000, -100 ), wikiFuzz::makeFuzz( 2 ) ) );
+                       case 'dir'        : return wikiFuzz::chooseInput( array( "newer", "older", wikiFuzz::makeFuzz( 2 ) ) );
+                       case 'user'       : return wikiFuzz::chooseInput( array( USER_ON_WIKI, wikiFuzz::makeFuzz( 2 ) ) );
+                       case 'namespace'  : return wikiFuzz::chooseInput( array( -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 200000, wikiFuzz::makeFuzz( 2 ) ) );
+                       case 'filterredir': return wikiFuzz::chooseInput( array( "all", "redirects", "nonredirectsallpages", wikiFuzz::makeFuzz( 2 ) ) );
+                       case 'allrev'     : return wikiFuzz::chooseInput( array( "1", 0, "", wikiFuzz::makeFuzz( 2 ) ) );
+                       case 'prop'       : return wikiFuzz::chooseInput( array( "user", "comment", "timestamp", "patrol", "flags", "user|user|comment|flags", wikiFuzz::makeFuzz( 2 ) ) );
+                       case 'type'       : return wikiFuzz::chooseInput( array( "block", "protect", "rights", "delete", "upload", "move", "import", "renameuser", "newusers", "makebot", wikiFuzz::makeFuzz( 2 ) ) );
+                       case 'hide'       : return wikiFuzz::chooseInput( array( "minor", "bots", "anons", "liu", "liu|bots|", wikiFuzz::makeFuzz( 2 ) ) );
+                       case 'show'       : return wikiFuzz::chooseInput( array( 'minor', '!minor', 'bot', '!bot', 'anon', '!anon', wikiFuzz::makeFuzz( 2 ) ) );
+                       default           : return wikiFuzz::makeFuzz( 2 );
+               }
+       }
+
+       // Entry point.
+       function __construct() {
+               $this->pagePath = "api.php";
+
+               $modes = array ( "help",
+                                               "login",
+                                               "opensearch",
+                                               "feedwatchlist",
+                                               "query" );
+               $action = wikiFuzz::chooseInput( array_merge ( $modes, array( wikiFuzz::makeFuzz( 2 ) ) ) );
+
+               switch ( $action ) {
+                       case "login"         : $this->params = self::loginMode();
+                                                                  break;
+                       case "opensearch"    : $this->params = self::opensearchMode();
+                                                                  break;
+                       case "feedwatchlist" : $this->params = self::feedwatchlistMode();
+                                                                  break;
+                       case "query"         : $this->params = self::queryMode();
+                                                                  break;
+                       case "help"         :
+                       default             :  // Do something random - "Crazy Ivan" mode.
+                                                                  $random_mode = wikiFuzz::chooseInput( $modes ) . "Mode";
+                                                                  // There is no "helpMode".
+                                                                  if ( $random_mode == "helpMode" ) $random_mode = "queryMode";
+                                                                  $this->params = self::$random_mode();
+                                                                  break;
+               }
+
+               // Save the selected action.
+               $this->params["action"] = $action;
+
+               // Set the cookie:
+               // FIXME: need to get this cookie dynamically set, rather than hard-coded.
+               $this->cookie = "wikidbUserID=10001; wikidbUserName=Test; wikidb_session=178df0fe68c75834643af65dec9ec98a; wikidbToken=1adc6753d62c44aec950c024d7ae0540";
+
+               // Output format
+               $this->params["format"] = wikiFuzz::chooseInput( array( "json", "jsonfm", "php", "phpfm",
+                                                                                                                          "wddx", "wddxfm", "xml", "xmlfm",
+                                                                                                                          "yaml", "yamlfm", "raw", "rawfm",
+                                                                                                                          wikiFuzz::makeFuzz( 2 ) ) );
+
+               // Page does not produce HTML (sometimes).
+               $this->tidyValidate = false;
+       }
 }
 
 
 }
 
 
@@ -2168,41 +2168,41 @@ class api extends pageTest {
  ** a page test for the GeSHi extension.
  */
 class GeSHi_Test extends pageTest {
  ** a page test for the GeSHi extension.
  */
 class GeSHi_Test extends pageTest {
-       
-    private function getGeSHiContent() {
-        return "<source lang=\"" . $this->getLang() . "\" "
-               . ( wikiFuzz::randnum( 2 ) == 0 ? "line " : "" )
-               . ( wikiFuzz::randnum( 2 ) == 0 ? "strict " : "" )
-               . "start=" . wikiFuzz::chooseInput( array( wikiFuzz::randnum( -6000, 6000 ), wikiFuzz::makeFuzz( 2 ) ) )
-               . ">"
-               . wikiFuzz::makeFuzz( 2 )
-               . "</source>";
-    }
-       
-    private function getLang() {
+
+       private function getGeSHiContent() {
+               return "<source lang=\"" . $this->getLang() . "\" "
+                          . ( wikiFuzz::randnum( 2 ) == 0 ? "line " : "" )
+                          . ( wikiFuzz::randnum( 2 ) == 0 ? "strict " : "" )
+                          . "start=" . wikiFuzz::chooseInput( array( wikiFuzz::randnum( -6000, 6000 ), wikiFuzz::makeFuzz( 2 ) ) )
+                          . ">"
+                          . wikiFuzz::makeFuzz( 2 )
+                          . "</source>";
+       }
+
+       private function getLang() {
        return wikiFuzz::chooseInput( array( "actionscript", "ada", "apache", "applescript", "asm", "asp", "autoit", "bash", "blitzbasic", "bnf", "c", "c_mac", "caddcl", "cadlisp",
        return wikiFuzz::chooseInput( array( "actionscript", "ada", "apache", "applescript", "asm", "asp", "autoit", "bash", "blitzbasic", "bnf", "c", "c_mac", "caddcl", "cadlisp",
-                "cfdg", "cfm", "cpp", "cpp-qt", "csharp", "css", "d", "delphi", "diff", "div", "dos", "eiffel", "fortran", "freebasic", "gml", "groovy", "html4strict", "idl",
-                "ini", "inno", "io", "java", "java5", "javascript", "latex", "lisp", "lua", "matlab", "mirc", "mpasm", "mysql", "nsis", "objc", "ocaml", "ocaml-brief", "oobas",
-                "oracle8", "pascal", "perl", "php", "php-brief", "plsql", "python", "qbasic", "rails", "reg", "robots", "ruby", "sas", "scheme", "sdlbasic", "smalltalk", "smarty",
-                "sql", "tcl", "text", "thinbasic", "tsql", "vb", "vbnet", "vhdl", "visualfoxpro", "winbatch", "xml", "xpp", "z80", wikiFuzz::makeFuzz( 1 ) ) );
-    }
-       
-    function __construct() {
-        $this->pagePath = "index.php?title=WIKIFUZZ";
-
-        $this->params = array (
-                "action"        => "submit",
-                "wpMinoredit"   => "test",
-                "wpPreview"     => "test",
-                "wpSection"     => "test",
-                "wpEdittime"    => "test",
-                "wpSummary"     => "test",
-                "wpScrolltop"   => "test",
-                "wpStarttime"   => "test",
-                "wpAutoSummary" => "test",
-                "wpTextbox1"    => $this->getGeSHiContent() // the main wiki text, contains fake GeSHi content.
-                );
-    }
+                               "cfdg", "cfm", "cpp", "cpp-qt", "csharp", "css", "d", "delphi", "diff", "div", "dos", "eiffel", "fortran", "freebasic", "gml", "groovy", "html4strict", "idl",
+                               "ini", "inno", "io", "java", "java5", "javascript", "latex", "lisp", "lua", "matlab", "mirc", "mpasm", "mysql", "nsis", "objc", "ocaml", "ocaml-brief", "oobas",
+                               "oracle8", "pascal", "perl", "php", "php-brief", "plsql", "python", "qbasic", "rails", "reg", "robots", "ruby", "sas", "scheme", "sdlbasic", "smalltalk", "smarty",
+                               "sql", "tcl", "text", "thinbasic", "tsql", "vb", "vbnet", "vhdl", "visualfoxpro", "winbatch", "xml", "xpp", "z80", wikiFuzz::makeFuzz( 1 ) ) );
+       }
+
+       function __construct() {
+               $this->pagePath = "index.php?title=WIKIFUZZ";
+
+               $this->params = array (
+                               "action"        => "submit",
+                               "wpMinoredit"   => "test",
+                               "wpPreview"     => "test",
+                               "wpSection"     => "test",
+                               "wpEdittime"    => "test",
+                               "wpSummary"     => "test",
+                               "wpScrolltop"   => "test",
+                               "wpStarttime"   => "test",
+                               "wpAutoSummary" => "test",
+                               "wpTextbox1"    => $this->getGeSHiContent() // the main wiki text, contains fake GeSHi content.
+                               );
+       }
 }
 
 
 }
 
 
@@ -2211,64 +2211,64 @@ class GeSHi_Test extends pageTest {
  */
 function selectPageTest( $count ) {
 
  */
 function selectPageTest( $count ) {
 
-    // if the user only wants a specific test, then only ever give them that.
-    if ( defined( "SPECIFIC_TEST" ) ) {
-        $testType = SPECIFIC_TEST;
-        return new $testType ();
-    }
-
-    // Some of the time we test Special pages, the remaining
-    // time we test using the standard edit page.
-    switch ( $count % 100 ) {
-        case 0 : return new successfulUserLoginTest();
-        case 1 : return new listusersTest();
-        case 2 : return new searchTest();
-        case 3 : return new recentchangesTest();
-        case 4 : return new prefixindexTest();
-        case 5 : return new mimeSearchTest();
-        case 6 : return new specialLogTest();
-        case 7 : return new userLoginTest();
-        case 8 : return new ipblocklistTest();
-        case 9 : return new newImagesTest();
-        case 10: return new imagelistTest();
-        case 11: return new specialExportTest();
-        case 12: return new specialBooksourcesTest();
-        case 13: return new specialAllpagesTest();
-        case 14: return new pageHistoryTest();
-        case 15: return new contributionsTest();
-        case 16: return new viewPageTest();
-        case 17: return new specialAllmessagesTest();
-        case 18: return new specialNewpages();
-        case 19: return new searchTest();
-        case 20: return new redirectTest();
-        case 21: return new confirmEmail();
-        case 22: return new watchlistTest();
-        case 23: return new specialBlockmeTest();
-        case 24: return new specialUndelete();
-        case 25: return new specialMovePage();
-        case 26: return new specialUnlockdb();
-        case 27: return new specialLockdb();
-        case 28: return new specialUserrights();
-        case 29: return new pageProtectionForm();
-        case 30: return new specialBlockip();
-        case 31: return new imagepageTest();
-        case 32: return new pageDeletion();
-        case 33: return new specialRevisionDelete();
-        case 34: return new specialImport();
-        case 35: return new thumbTest();
-        case 36: return new trackbackTest();
-        case 37: return new profileInfo();
-        case 38: return new specialCite();
-        case 39: return new specialFilepath();
-        case 40: return new specialMakebot();
-        case 41: return new specialMakesysop();
-        case 42: return new specialRenameuser();
-        case 43: return new specialLinksearch();
-        case 44: return new specialCategoryTree();
-        case 45: return new api();
-        case 45: return new specialChemicalsourcesTest();
-        default: return new editPageTest();
-    }
+       // if the user only wants a specific test, then only ever give them that.
+       if ( defined( "SPECIFIC_TEST" ) ) {
+               $testType = SPECIFIC_TEST;
+               return new $testType ();
+       }
+
+       // Some of the time we test Special pages, the remaining
+       // time we test using the standard edit page.
+       switch ( $count % 100 ) {
+               case 0 : return new successfulUserLoginTest();
+               case 1 : return new listusersTest();
+               case 2 : return new searchTest();
+               case 3 : return new recentchangesTest();
+               case 4 : return new prefixindexTest();
+               case 5 : return new mimeSearchTest();
+               case 6 : return new specialLogTest();
+               case 7 : return new userLoginTest();
+               case 8 : return new ipblocklistTest();
+               case 9 : return new newImagesTest();
+               case 10: return new imagelistTest();
+               case 11: return new specialExportTest();
+               case 12: return new specialBooksourcesTest();
+               case 13: return new specialAllpagesTest();
+               case 14: return new pageHistoryTest();
+               case 15: return new contributionsTest();
+               case 16: return new viewPageTest();
+               case 17: return new specialAllmessagesTest();
+               case 18: return new specialNewpages();
+               case 19: return new searchTest();
+               case 20: return new redirectTest();
+               case 21: return new confirmEmail();
+               case 22: return new watchlistTest();
+               case 23: return new specialBlockmeTest();
+               case 24: return new specialUndelete();
+               case 25: return new specialMovePage();
+               case 26: return new specialUnlockdb();
+               case 27: return new specialLockdb();
+               case 28: return new specialUserrights();
+               case 29: return new pageProtectionForm();
+               case 30: return new specialBlockip();
+               case 31: return new imagepageTest();
+               case 32: return new pageDeletion();
+               case 33: return new specialRevisionDelete();
+               case 34: return new specialImport();
+               case 35: return new thumbTest();
+               case 36: return new trackbackTest();
+               case 37: return new profileInfo();
+               case 38: return new specialCite();
+               case 39: return new specialFilepath();
+               case 40: return new specialMakebot();
+               case 41: return new specialMakesysop();
+               case 42: return new specialRenameuser();
+               case 43: return new specialLinksearch();
+               case 44: return new specialCategoryTree();
+               case 45: return new api();
+               case 45: return new specialChemicalsourcesTest();
+               default: return new editPageTest();
+       }
 }
 
 
 }
 
 
@@ -2278,29 +2278,29 @@ function selectPageTest( $count ) {
  ** Utility function for saving a file. Currently has no error checking.
  */
 function saveFile( $data, $name ) {
  ** Utility function for saving a file. Currently has no error checking.
  */
 function saveFile( $data, $name ) {
-    file_put_contents( $name, $data );
+       file_put_contents( $name, $data );
 }
 
 
 /**
  ** Returns a test as an experimental GET-to-POST URL.
 }
 
 
 /**
  ** Returns a test as an experimental GET-to-POST URL.
- **        This doesn't seem to always work though, and sometimes the output is too long 
+ **        This doesn't seem to always work though, and sometimes the output is too long
  **        to be a valid GET URL, so we also save in other formats.
  */
 function getAsURL( pageTest $test ) {
  **        to be a valid GET URL, so we also save in other formats.
  */
 function getAsURL( pageTest $test ) {
-    $used_question_mark = ( strpos( $test->getPagePath(), "?" ) !== false );
-    $retval = "http://get-to-post.nickj.org/?" . WIKI_BASE_URL . $test->getPagePath();
-    foreach ( $test->getParams() as $param => $value ) {
-        if ( !$used_question_mark ) {
-            $retval .= "?";
-            $used_question_mark = true;
-        }
-        else {
-            $retval .= "&";
-        }
-        $retval .= $param . "=" . urlencode( $value );
-    }
-    return $retval;
+       $used_question_mark = ( strpos( $test->getPagePath(), "?" ) !== false );
+       $retval = "http://get-to-post.nickj.org/?" . WIKI_BASE_URL . $test->getPagePath();
+       foreach ( $test->getParams() as $param => $value ) {
+               if ( !$used_question_mark ) {
+                       $retval .= "?";
+                       $used_question_mark = true;
+               }
+               else {
+                       $retval .= "&";
+               }
+               $retval .= $param . "=" . urlencode( $value );
+       }
+       return $retval;
 }
 
 
 }
 
 
@@ -2308,12 +2308,12 @@ function getAsURL( pageTest $test ) {
  ** Saves a plain-text human-readable version of a test.
  */
 function saveTestAsText( pageTest $test, $filename ) {
  ** Saves a plain-text human-readable version of a test.
  */
 function saveTestAsText( pageTest $test, $filename ) {
-    $str = "Test: " . $test->getPagePath();
-    foreach ( $test->getParams() as $param => $value ) {
-        $str .= "\n$param: $value";
-    }
-    $str .= "\nGet-to-post URL: " . getAsURL( $test ) . "\n";
-    saveFile( $str, $filename );
+       $str = "Test: " . $test->getPagePath();
+       foreach ( $test->getParams() as $param => $value ) {
+               $str .= "\n$param: $value";
+       }
+       $str .= "\nGet-to-post URL: " . getAsURL( $test ) . "\n";
+       saveFile( $str, $filename );
 }
 
 
 }
 
 
@@ -2322,36 +2322,36 @@ function saveTestAsText( pageTest $test, $filename ) {
  **        Resulting script requires PHP-Curl be installed in order to work.
  */
 function saveTestAsPHP( pageTest $test, $filename ) {
  **        Resulting script requires PHP-Curl be installed in order to work.
  */
 function saveTestAsPHP( pageTest $test, $filename ) {
-    $str = "<?php\n"
-        . "\$params = " . var_export( escapeForCurl( $test->getParams() ), true ) . ";\n"
-        . "\$ch = curl_init();\n"
-        . "curl_setopt(\$ch, CURLOPT_POST, 1);\n"
-        . "curl_setopt(\$ch, CURLOPT_POSTFIELDS, \$params );\n"
-        . "curl_setopt(\$ch, CURLOPT_URL, " . var_export( WIKI_BASE_URL . $test->getPagePath(), true ) . ");\n"
-        . "curl_setopt(\$ch, CURLOPT_RETURNTRANSFER,1);\n"
-        .  ( $test->getCookie() ? "curl_setopt(\$ch, CURLOPT_COOKIE, " . var_export( $test->getCookie(), true ) . ");\n" : "" )
-        . "\$result=curl_exec(\$ch);\n"
-        . "curl_close (\$ch);\n"
-        . "print \$result;\n"
-        . "?>\n";
-    saveFile( $str, $filename );
+       $str = "<?php\n"
+               . "\$params = " . var_export( escapeForCurl( $test->getParams() ), true ) . ";\n"
+               . "\$ch = curl_init();\n"
+               . "curl_setopt(\$ch, CURLOPT_POST, 1);\n"
+               . "curl_setopt(\$ch, CURLOPT_POSTFIELDS, \$params );\n"
+               . "curl_setopt(\$ch, CURLOPT_URL, " . var_export( WIKI_BASE_URL . $test->getPagePath(), true ) . ");\n"
+               . "curl_setopt(\$ch, CURLOPT_RETURNTRANSFER,1);\n"
+               .  ( $test->getCookie() ? "curl_setopt(\$ch, CURLOPT_COOKIE, " . var_export( $test->getCookie(), true ) . ");\n" : "" )
+               . "\$result=curl_exec(\$ch);\n"
+               . "curl_close (\$ch);\n"
+               . "print \$result;\n"
+               . "?>\n";
+       saveFile( $str, $filename );
 }
 
 
 /**
  ** Escapes a value so that it can be used on the command line by Curl.
 }
 
 
 /**
  ** Escapes a value so that it can be used on the command line by Curl.
- **        Specifically, "<" and "@" need to be escaped if they are the first character, 
+ **        Specifically, "<" and "@" need to be escaped if they are the first character,
  **        otherwise  curl interprets these as meaning that we want to insert a file.
  */
 function escapeForCurl( array $input_params ) {
  **        otherwise  curl interprets these as meaning that we want to insert a file.
  */
 function escapeForCurl( array $input_params ) {
-    $output_params = array();
-    foreach ( $input_params as $param => $value ) {
-        if ( strlen( $value ) > 0 && ( $value[0] == "@" || $value[0] == "<" ) ) {
-            $value = "\\" . $value;
-        }
-        $output_params[$param] = $value;
-    }
-    return $output_params;
+       $output_params = array();
+       foreach ( $input_params as $param => $value ) {
+               if ( strlen( $value ) > 0 && ( $value[0] == "@" || $value[0] == "<" ) ) {
+                       $value = "\\" . $value;
+               }
+               $output_params[$param] = $value;
+       }
+       return $output_params;
 }
 
 
 }
 
 
@@ -2360,16 +2360,16 @@ function escapeForCurl( array $input_params ) {
  **        Resulting script requires standalone Curl be installed in order to work.
  */
 function saveTestAsCurl( pageTest $test, $filename ) {
  **        Resulting script requires standalone Curl be installed in order to work.
  */
 function saveTestAsCurl( pageTest $test, $filename ) {
-    $str = "#!/bin/bash\n"
-        . "curl --silent --include --globoff \\\n"
-        . ( $test->getCookie() ? " --cookie " . escapeshellarg( $test->getCookie() ) . " \\\n" : "" );
-    foreach ( escapeForCurl( $test->getParams() ) as $param => $value ) {
-        $str .= " -F " . escapeshellarg( $param ) . "=" . escapeshellarg( $value ) . " \\\n";
-    }
-    $str .= " " . escapeshellarg( WIKI_BASE_URL . $test->getPagePath() ); // beginning space matters.
-    $str .= "\n";
-    saveFile( $str, $filename );
-    chmod( $filename, 0755 ); // make executable
+       $str = "#!/bin/bash\n"
+               . "curl --silent --include --globoff \\\n"
+               . ( $test->getCookie() ? " --cookie " . escapeshellarg( $test->getCookie() ) . " \\\n" : "" );
+       foreach ( escapeForCurl( $test->getParams() ) as $param => $value ) {
+               $str .= " -F " . escapeshellarg( $param ) . "=" . escapeshellarg( $value ) . " \\\n";
+       }
+       $str .= " " . escapeshellarg( WIKI_BASE_URL . $test->getPagePath() ); // beginning space matters.
+       $str .= "\n";
+       saveFile( $str, $filename );
+       chmod( $filename, 0755 ); // make executable
 }
 
 
 }
 
 
@@ -2377,7 +2377,7 @@ function saveTestAsCurl( pageTest $test, $filename ) {
  ** Saves the internal data structure to file.
  */
 function saveTestData ( pageTest $test, $filename ) {
  ** Saves the internal data structure to file.
  */
 function saveTestData ( pageTest $test, $filename ) {
-    saveFile( serialize( $test ),  $filename );
+       saveFile( serialize( $test ),  $filename );
 }
 
 
 }
 
 
@@ -2385,11 +2385,11 @@ function saveTestData ( pageTest $test, $filename ) {
  ** saves a test in the various formats.
  */
 function saveTest( pageTest $test, $testname ) {
  ** saves a test in the various formats.
  */
 function saveTest( pageTest $test, $testname ) {
-    $base_name = DIRECTORY . "/" . $testname;
-    saveTestAsText( $test, $base_name . INFO_FILE );
-    saveTestAsPHP ( $test, $base_name . PHP_TEST );
-    saveTestAsCurl( $test, $base_name . CURL_TEST );
-    saveTestData  ( $test, $base_name . DATA_FILE );
+       $base_name = DIRECTORY . "/" . $testname;
+       saveTestAsText( $test, $base_name . INFO_FILE );
+       saveTestAsPHP ( $test, $base_name . PHP_TEST );
+       saveTestAsCurl( $test, $base_name . CURL_TEST );
+       saveTestData  ( $test, $base_name . DATA_FILE );
 }
 
 
 }
 
 
@@ -2400,29 +2400,29 @@ function saveTest( pageTest $test, $testname ) {
  */
 function wikiTestOutput( pageTest $test ) {
 
  */
 function wikiTestOutput( pageTest $test ) {
 
-    $ch = curl_init();
+       $ch = curl_init();
 
 
-    // specify the cookie, if required.
-    if ( $test->getCookie() ) curl_setopt( $ch, CURLOPT_COOKIE, $test->getCookie() );
-    curl_setopt( $ch, CURLOPT_POST, 1 );                          // save form using a POST
+       // specify the cookie, if required.
+       if ( $test->getCookie() ) curl_setopt( $ch, CURLOPT_COOKIE, $test->getCookie() );
+       curl_setopt( $ch, CURLOPT_POST, 1 );                          // save form using a POST
 
 
-    $params = escapeForCurl( $test->getParams() );
-    curl_setopt( $ch, CURLOPT_POSTFIELDS, $params );             // load the POST variables
+       $params = escapeForCurl( $test->getParams() );
+       curl_setopt( $ch, CURLOPT_POSTFIELDS, $params );             // load the POST variables
 
 
-    curl_setopt( $ch, CURLOPT_URL, WIKI_BASE_URL . $test->getPagePath() );  // set url to post to
-    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );                 // return into a variable
+       curl_setopt( $ch, CURLOPT_URL, WIKI_BASE_URL . $test->getPagePath() );  // set url to post to
+       curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );                 // return into a variable
 
 
-    $result = curl_exec ( $ch );
+       $result = curl_exec ( $ch );
 
 
-    // if we encountered an error, then say so, and return an empty string.
-    if ( curl_error( $ch ) ) {
-        print "\nCurl error #: " . curl_errno( $ch ) . " - " . curl_error ( $ch );
-        $result = "";
-    }
+       // if we encountered an error, then say so, and return an empty string.
+       if ( curl_error( $ch ) ) {
+               print "\nCurl error #: " . curl_errno( $ch ) . " - " . curl_error ( $ch );
+               $result = "";
+       }
 
 
-    curl_close ( $ch );
+       curl_close ( $ch );
 
 
-    return $result;
+       return $result;
 }
 
 
 }
 
 
@@ -2433,29 +2433,29 @@ function wikiTestOutput( pageTest $test ) {
  */
 function validateHTML( $text ) {
 
  */
 function validateHTML( $text ) {
 
-    $params = array ( "fragment"   => $text );
+       $params = array ( "fragment"   => $text );
 
 
-    $ch = curl_init();
+       $ch = curl_init();
 
 
-    curl_setopt( $ch, CURLOPT_POST, 1 );                    // save form using a POST
-    curl_setopt( $ch, CURLOPT_POSTFIELDS, $params );        // load the POST variables
-    curl_setopt( $ch, CURLOPT_URL, VALIDATOR_URL );         // set url to post to
-    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );           // return into a variable
+       curl_setopt( $ch, CURLOPT_POST, 1 );                    // save form using a POST
+       curl_setopt( $ch, CURLOPT_POSTFIELDS, $params );        // load the POST variables
+       curl_setopt( $ch, CURLOPT_URL, VALIDATOR_URL );         // set url to post to
+       curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );           // return into a variable
 
 
-    $result = curl_exec ( $ch );
+       $result = curl_exec ( $ch );
 
 
-    // if we encountered an error, then log it, and exit.
-    if ( curl_error( $ch ) ) {
-        trigger_error( "Curl error #: " . curl_errno( $ch ) . " - " . curl_error ( $ch ) );
-        print "Curl error #: " . curl_errno( $ch ) . " - " . curl_error ( $ch ) . " - exiting.\n";
-        exit( 1 );
-    }
+       // if we encountered an error, then log it, and exit.
+       if ( curl_error( $ch ) ) {
+               trigger_error( "Curl error #: " . curl_errno( $ch ) . " - " . curl_error ( $ch ) );
+               print "Curl error #: " . curl_errno( $ch ) . " - " . curl_error ( $ch ) . " - exiting.\n";
+               exit( 1 );
+       }
 
 
-    curl_close ( $ch );
+       curl_close ( $ch );
 
 
-    $valid = ( strpos( $result, "Failed validation" ) === false ? true : false );
+       $valid = ( strpos( $result, "Failed validation" ) === false ? true : false );
 
 
-    return array( $valid, $result );
+       return array( $valid, $result );
 }
 
 
 }
 
 
@@ -2463,20 +2463,20 @@ function validateHTML( $text ) {
  ** Get tidy to check for no HTML errors in the output file (e.g. unescaped strings).
  */
 function tidyCheckFile( $name ) {
  ** Get tidy to check for no HTML errors in the output file (e.g. unescaped strings).
  */
 function tidyCheckFile( $name ) {
-    $file = DIRECTORY . "/" . $name;
-    $command = PATH_TO_TIDY . " -output /tmp/out.html -quiet $file 2>&1";
-    $x = `$command`;
+       $file = DIRECTORY . "/" . $name;
+       $command = PATH_TO_TIDY . " -output /tmp/out.html -quiet $file 2>&1";
+       $x = `$command`;
 
 
-    // Look for the most interesting Tidy errors and warnings.
-    if (   strpos( $x, "end of file while parsing attributes" ) !== false
-            || strpos( $x, "attribute with missing trailing quote mark" ) !== false
-            || strpos( $x, "missing '>' for end of tag" ) !== false
-            || strpos( $x, "Error:" ) !== false ) {
-        print "\nTidy found something - view details with: $command";
-        return false;
-    } else {
-        return true;
-    }
+       // Look for the most interesting Tidy errors and warnings.
+       if (   strpos( $x, "end of file while parsing attributes" ) !== false
+                       || strpos( $x, "attribute with missing trailing quote mark" ) !== false
+                       || strpos( $x, "missing '>' for end of tag" ) !== false
+                       || strpos( $x, "Error:" ) !== false ) {
+               print "\nTidy found something - view details with: $command";
+               return false;
+       } else {
+               return true;
+       }
 }
 
 
 }
 
 
@@ -2485,26 +2485,26 @@ function tidyCheckFile( $name ) {
  **        the last time this was run. This is used to tell if a test caused a DB error.
  */
 function dbErrorLogged() {
  **        the last time this was run. This is used to tell if a test caused a DB error.
  */
 function dbErrorLogged() {
-    static $filesize;
+       static $filesize;
 
 
-    // first time running this function
-    if ( !isset( $filesize ) ) {
-        // create log if it does not exist
-        if ( !file_exists( DB_ERROR_LOG_FILE ) ) {
-            saveFile( "", DB_ERROR_LOG_FILE );
-        }
-        $filesize = filesize( DB_ERROR_LOG_FILE );
-        return false;
-    }
+       // first time running this function
+       if ( !isset( $filesize ) ) {
+               // create log if it does not exist
+               if ( !file_exists( DB_ERROR_LOG_FILE ) ) {
+                       saveFile( "", DB_ERROR_LOG_FILE );
+               }
+               $filesize = filesize( DB_ERROR_LOG_FILE );
+               return false;
+       }
 
 
-    $newsize = filesize( DB_ERROR_LOG_FILE );
-    // if the log has grown, then assume the current test caused it.
-    if ( $newsize != $filesize ) {
-        $filesize = $newsize;
-        return true;
-    }
+       $newsize = filesize( DB_ERROR_LOG_FILE );
+       // if the log has grown, then assume the current test caused it.
+       if ( $newsize != $filesize ) {
+               $filesize = $newsize;
+               return true;
+       }
 
 
-    return false;
+       return false;
 }
 
 // //////////////// TOP-LEVEL PROBLEM-FINDING FUNCTION ////////////////////////
 }
 
 // //////////////// TOP-LEVEL PROBLEM-FINDING FUNCTION ////////////////////////
@@ -2515,90 +2515,90 @@ function dbErrorLogged() {
  */
 function runWikiTest( pageTest $test, &$testname, $can_overwrite = false ) {
 
  */
 function runWikiTest( pageTest $test, &$testname, $can_overwrite = false ) {
 
-    // by default don't overwrite a previous test of the same name.
-    while ( ! $can_overwrite && file_exists( DIRECTORY . "/" . $testname . DATA_FILE ) ) {
-        $testname .= "-" . mt_rand( 0, 9 );
-    }
-
-    $filename = DIRECTORY . "/" . $testname . DATA_FILE;
-
-    // Store the time before and after, to find slow pages.
-    $before = microtime( true );
-
-    // Get MediaWiki to give us the output of this test.
-    $wiki_preview = wikiTestOutput( $test );
-
-    $after = microtime( true );
-
-    // if we received no response, then that's interesting.
-    if ( $wiki_preview == "" ) {
-        print "\nNo response received for: $filename";
-        return false;
-    }
-
-    // save output HTML to file.
-    $html_file = DIRECTORY . "/" . $testname . HTML_FILE;
-    saveFile( $wiki_preview,  $html_file );
-
-    // if there were PHP errors in the output, then that's interesting too.
-    if (       strpos( $wiki_preview, "<b>Warning</b>: "        ) !== false
-            || strpos( $wiki_preview, "<b>Fatal error</b>: "    ) !== false
-            || strpos( $wiki_preview, "<b>Notice</b>: "         ) !== false
-            || strpos( $wiki_preview, "<b>Error</b>: "          ) !== false
-            || strpos( $wiki_preview, "<b>Strict Standards:</b>" ) !== false
-            ) {
-        $error = substr( $wiki_preview, strpos( $wiki_preview, "</b>:" ) + 7, 50 );
-        // Avoid probable PHP bug with bad session ids; http://bugs.php.net/bug.php?id=38224 
-        if ( $error != "Unknown: The session id contains illegal character" ) {
-            print "\nPHP error/warning/notice in HTML output: $html_file ; $error";
-            return false;
-        }
-    }
-
-    // if there was a MediaWiki Backtrace message in the output, then that's also interesting.
-    if ( strpos( $wiki_preview, "Backtrace:" ) !== false ) {
-        print "\nInternal MediaWiki error in HTML output: $html_file";
-        return false;
-    }
-
-    // if there was a Parser error comment in the output, then that's potentially interesting.
-    if ( strpos( $wiki_preview, "!-- ERR" ) !== false ) {
-        print "\nParser Error comment in HTML output: $html_file";
-        return false;
-    }
-
-    // if a database error was logged, then that's definitely interesting.
-    if ( dbErrorLogged() ) {
-        print "\nDatabase Error logged for: $filename";
-        return false;
-    }
-
-    // validate result
-    $valid = true;
-    if ( VALIDATE_ON_WEB ) {
-        list ( $valid, $validator_output ) = validateHTML( $wiki_preview );
-        if ( !$valid ) print "\nW3C web validation failed - view details with: html2text " . DIRECTORY . "/" . $testname . ".validator_output.html";
-    }
-
-    // Get tidy to check the page, unless we already know it produces non-XHTML output.
-    if ( $test->tidyValidate() ) {
-        $valid = tidyCheckFile( $testname . HTML_FILE ) && $valid;
-    }
-
-    // if it took more than 2 seconds to render, then it may be interesting too. (Possible DoS attack?)
-    if ( ( $after - $before ) >= 2 ) {
-        print "\nParticularly slow to render (" . round( $after - $before, 2 ) . " seconds): $filename";
-        return false;
-    }
-
-    if ( $valid ) {
-        // Remove temp HTML file if test was valid:
-        unlink( $html_file );
-    } elseif ( VALIDATE_ON_WEB ) {
-        saveFile( $validator_output,   DIRECTORY . "/" . $testname . ".validator_output.html" );
-    }
-
-    return $valid;
+       // by default don't overwrite a previous test of the same name.
+       while ( ! $can_overwrite && file_exists( DIRECTORY . "/" . $testname . DATA_FILE ) ) {
+               $testname .= "-" . mt_rand( 0, 9 );
+       }
+
+       $filename = DIRECTORY . "/" . $testname . DATA_FILE;
+
+       // Store the time before and after, to find slow pages.
+       $before = microtime( true );
+
+       // Get MediaWiki to give us the output of this test.
+       $wiki_preview = wikiTestOutput( $test );
+
+       $after = microtime( true );
+
+       // if we received no response, then that's interesting.
+       if ( $wiki_preview == "" ) {
+               print "\nNo response received for: $filename";
+               return false;
+       }
+
+       // save output HTML to file.
+       $html_file = DIRECTORY . "/" . $testname . HTML_FILE;
+       saveFile( $wiki_preview,  $html_file );
+
+       // if there were PHP errors in the output, then that's interesting too.
+       if (       strpos( $wiki_preview, "<b>Warning</b>: "        ) !== false
+                       || strpos( $wiki_preview, "<b>Fatal error</b>: "    ) !== false
+                       || strpos( $wiki_preview, "<b>Notice</b>: "         ) !== false
+                       || strpos( $wiki_preview, "<b>Error</b>: "          ) !== false
+                       || strpos( $wiki_preview, "<b>Strict Standards:</b>" ) !== false
+                       ) {
+               $error = substr( $wiki_preview, strpos( $wiki_preview, "</b>:" ) + 7, 50 );
+               // Avoid probable PHP bug with bad session ids; http://bugs.php.net/bug.php?id=38224
+               if ( $error != "Unknown: The session id contains illegal character" ) {
+                       print "\nPHP error/warning/notice in HTML output: $html_file ; $error";
+                       return false;
+               }
+       }
+
+       // if there was a MediaWiki Backtrace message in the output, then that's also interesting.
+       if ( strpos( $wiki_preview, "Backtrace:" ) !== false ) {
+               print "\nInternal MediaWiki error in HTML output: $html_file";
+               return false;
+       }
+
+       // if there was a Parser error comment in the output, then that's potentially interesting.
+       if ( strpos( $wiki_preview, "!-- ERR" ) !== false ) {
+               print "\nParser Error comment in HTML output: $html_file";
+               return false;
+       }
+
+       // if a database error was logged, then that's definitely interesting.
+       if ( dbErrorLogged() ) {
+               print "\nDatabase Error logged for: $filename";
+               return false;
+       }
+
+       // validate result
+       $valid = true;
+       if ( VALIDATE_ON_WEB ) {
+               list ( $valid, $validator_output ) = validateHTML( $wiki_preview );
+               if ( !$valid ) print "\nW3C web validation failed - view details with: html2text " . DIRECTORY . "/" . $testname . ".validator_output.html";
+       }
+
+       // Get tidy to check the page, unless we already know it produces non-XHTML output.
+       if ( $test->tidyValidate() ) {
+               $valid = tidyCheckFile( $testname . HTML_FILE ) && $valid;
+       }
+
+       // if it took more than 2 seconds to render, then it may be interesting too. (Possible DoS attack?)
+       if ( ( $after - $before ) >= 2 ) {
+               print "\nParticularly slow to render (" . round( $after - $before, 2 ) . " seconds): $filename";
+               return false;
+       }
+
+       if ( $valid ) {
+               // Remove temp HTML file if test was valid:
+               unlink( $html_file );
+       } elseif ( VALIDATE_ON_WEB ) {
+               saveFile( $validator_output,   DIRECTORY . "/" . $testname . ".validator_output.html" );
+       }
+
+       return $valid;
 }
 
 
 }
 
 
@@ -2609,60 +2609,60 @@ function runWikiTest( pageTest $test, &$testname, $can_overwrite = false ) {
  **        This function does that retesting.
  */
 function rerunPreviousTests() {
  **        This function does that retesting.
  */
 function rerunPreviousTests() {
-    print "Retesting previously found problems.\n";
-
-    $dir_contents = scandir ( DIRECTORY );
-
-    // sort file into the order a normal person would use.
-    natsort ( $dir_contents );
-
-    foreach ( $dir_contents as $file ) {
-
-        // if file is not a test, then skip it. 
-        // Note we need to escape any periods or will be treated as "any character".
-        $matches = array();
-        if ( !preg_match( "/(.*)" . str_replace( ".", "\.", DATA_FILE ) . "$/", $file, $matches ) ) continue;
-
-        // reload the test.
-        $full_path = DIRECTORY . "/" . $file;
-        $test = unserialize( file_get_contents( $full_path ) );
-
-        // if this is not a valid test, then skip it.
-        if ( ! $test instanceof pageTest ) {
-            print "\nSkipping invalid test - $full_path";
-            continue;
-        }
-
-        // The date format is in Apache log format, which makes it easier to locate 
-        // which retest caused which error in the Apache logs (only happens usually if 
-        // apache segfaults).
-        if ( !QUIET ) print "[" . date ( "D M d H:i:s Y" ) . "] Retesting $file (" . get_class( $test ) . ")";
-
-        // run test
-        $testname = $matches[1];
-        $valid = runWikiTest( $test, $testname, true );
-
-        if ( !$valid ) {
-            saveTest( $test, $testname );
-            if ( QUIET ) {
-                print "\nTest: " . get_class( $test ) . " ; Testname: $testname\n------";
-            } else {
-                print "\n";
-            }
-        }
-        else {
-            if ( !QUIET ) print "\r";
-            if ( DELETE_PASSED_RETESTS ) {
-                $prefix = DIRECTORY . "/" . $testname;
-                if ( is_file( $prefix . DATA_FILE ) ) unlink( $prefix . DATA_FILE );
-                if ( is_file( $prefix . PHP_TEST ) ) unlink( $prefix . PHP_TEST );
-                if ( is_file( $prefix . CURL_TEST ) ) unlink( $prefix . CURL_TEST );
-                if ( is_file( $prefix . INFO_FILE ) ) unlink( $prefix . INFO_FILE );
-            }
-        }
-    }
-
-    print "\nDone retesting.\n";
+       print "Retesting previously found problems.\n";
+
+       $dir_contents = scandir ( DIRECTORY );
+
+       // sort file into the order a normal person would use.
+       natsort ( $dir_contents );
+
+       foreach ( $dir_contents as $file ) {
+
+               // if file is not a test, then skip it.
+               // Note we need to escape any periods or will be treated as "any character".
+               $matches = array();
+               if ( !preg_match( "/(.*)" . str_replace( ".", "\.", DATA_FILE ) . "$/", $file, $matches ) ) continue;
+
+               // reload the test.
+               $full_path = DIRECTORY . "/" . $file;
+               $test = unserialize( file_get_contents( $full_path ) );
+
+               // if this is not a valid test, then skip it.
+               if ( ! $test instanceof pageTest ) {
+                       print "\nSkipping invalid test - $full_path";
+                       continue;
+               }
+
+               // The date format is in Apache log format, which makes it easier to locate
+               // which retest caused which error in the Apache logs (only happens usually if
+               // apache segfaults).
+               if ( !QUIET ) print "[" . date ( "D M d H:i:s Y" ) . "] Retesting $file (" . get_class( $test ) . ")";
+
+               // run test
+               $testname = $matches[1];
+               $valid = runWikiTest( $test, $testname, true );
+
+               if ( !$valid ) {
+                       saveTest( $test, $testname );
+                       if ( QUIET ) {
+                               print "\nTest: " . get_class( $test ) . " ; Testname: $testname\n------";
+                       } else {
+                               print "\n";
+                       }
+               }
+               else {
+                       if ( !QUIET ) print "\r";
+                       if ( DELETE_PASSED_RETESTS ) {
+                               $prefix = DIRECTORY . "/" . $testname;
+                               if ( is_file( $prefix . DATA_FILE ) ) unlink( $prefix . DATA_FILE );
+                               if ( is_file( $prefix . PHP_TEST ) ) unlink( $prefix . PHP_TEST );
+                               if ( is_file( $prefix . CURL_TEST ) ) unlink( $prefix . CURL_TEST );
+                               if ( is_file( $prefix . INFO_FILE ) ) unlink( $prefix . INFO_FILE );
+                       }
+               }
+       }
+
+       print "\nDone retesting.\n";
 }
 
 
 }
 
 
@@ -2671,81 +2671,81 @@ function rerunPreviousTests() {
 
 // first check whether CURL is installed, because sometimes it's not.
 if ( ! function_exists( 'curl_init' ) ) {
 
 // first check whether CURL is installed, because sometimes it's not.
 if ( ! function_exists( 'curl_init' ) ) {
-    die( "Could not find 'curl_init' function. Is the curl extension compiled into PHP?\n" );
+       die( "Could not find 'curl_init' function. Is the curl extension compiled into PHP?\n" );
 }
 
 }
 
-// Initialization of types. wikiFuzz doesn't have a constructor because we want to 
+// Initialization of types. wikiFuzz doesn't have a constructor because we want to
 // access it staticly and not have any globals.
 wikiFuzz::$types = array_keys( wikiFuzz::$data );
 
 // Make directory if doesn't exist
 if ( !is_dir( DIRECTORY ) ) {
 // access it staticly and not have any globals.
 wikiFuzz::$types = array_keys( wikiFuzz::$data );
 
 // Make directory if doesn't exist
 if ( !is_dir( DIRECTORY ) ) {
-    mkdir ( DIRECTORY, 0700 );
+       mkdir ( DIRECTORY, 0700 );
 }
 // otherwise, we first retest the things that we have found in previous runs
 else if ( RERUN_OLD_TESTS ) {
 }
 // otherwise, we first retest the things that we have found in previous runs
 else if ( RERUN_OLD_TESTS ) {
-    rerunPreviousTests();
+       rerunPreviousTests();
 }
 
 // main loop.
 $start_time = date( "U" );
 $num_errors = 0;
 if ( !QUIET ) {
 }
 
 // main loop.
 $start_time = date( "U" );
 $num_errors = 0;
 if ( !QUIET ) {
-    print "Beginning main loop. Results are stored in the " . DIRECTORY . " directory.\n";
-    print "Press CTRL+C to stop testing.\n";
+       print "Beginning main loop. Results are stored in the " . DIRECTORY . " directory.\n";
+       print "Press CTRL+C to stop testing.\n";
 }
 
 for ( $count = 0; true; $count++ ) {
 }
 
 for ( $count = 0; true; $count++ ) {
-    if ( !QUIET ) {
-        // spinning progress indicator.
-        switch( $count % 4 ) {
-            case '0': print "\r/";  break;
-            case '1': print "\r-";  break;
-            case '2': print "\r\\"; break;
-            case '3': print "\r|";  break;
-        }
-        print " $count";
-    }
-
-    // generate a page test to run.
-    $test = selectPageTest( $count );
-
-    $mins = ( date( "U" ) - $start_time ) / 60;
-    if ( !QUIET && $mins > 0 ) {
-        print ".  $num_errors poss errors. "
-            . floor( $mins ) . " mins. "
-            . round ( $count / $mins, 0 ) . " tests/min. "
-            . get_class( $test ); // includes the current test name.
-    }
-
-    // run this test against MediaWiki, and see if the output was valid.
-    $testname = $count;
-    $valid = runWikiTest( $test, $testname, false );
-
-    // save the failed test
-    if ( ! $valid ) {
-        if ( QUIET ) {
-            print "\nTest: " . get_class( $test ) . " ; Testname: $testname\n------";
-        } else {
-            print "\n";
-        }
-        saveTest( $test, $testname );
-        $num_errors += 1;
-    } else if ( KEEP_PASSED_TESTS ) {
-        // print current time, with microseconds (matches "strace" format), and the test name.
-        print " " . date( "H:i:s." ) . substr( current( explode( " ", microtime() ) ), 2 ) . " " . $testname;
-        saveTest( $test, $testname );
-    }
-
-    // stop if we have reached max number of errors.
-    if ( defined( "MAX_ERRORS" ) && $num_errors >= MAX_ERRORS ) {
-        break;
-    }
-
-    // stop if we have reached max number of mins runtime.
-    if ( defined( "MAX_RUNTIME" ) && $mins >= MAX_RUNTIME ) {
-        break;
-    }
+       if ( !QUIET ) {
+               // spinning progress indicator.
+               switch( $count % 4 ) {
+                       case '0': print "\r/";  break;
+                       case '1': print "\r-";  break;
+                       case '2': print "\r\\"; break;
+                       case '3': print "\r|";  break;
+               }
+               print " $count";
+       }
+
+       // generate a page test to run.
+       $test = selectPageTest( $count );
+
+       $mins = ( date( "U" ) - $start_time ) / 60;
+       if ( !QUIET && $mins > 0 ) {
+               print ".  $num_errors poss errors. "
+                       . floor( $mins ) . " mins. "
+                       . round ( $count / $mins, 0 ) . " tests/min. "
+                       . get_class( $test ); // includes the current test name.
+       }
+
+       // run this test against MediaWiki, and see if the output was valid.
+       $testname = $count;
+       $valid = runWikiTest( $test, $testname, false );
+
+       // save the failed test
+       if ( ! $valid ) {
+               if ( QUIET ) {
+                       print "\nTest: " . get_class( $test ) . " ; Testname: $testname\n------";
+               } else {
+                       print "\n";
+               }
+               saveTest( $test, $testname );
+               $num_errors += 1;
+       } else if ( KEEP_PASSED_TESTS ) {
+               // print current time, with microseconds (matches "strace" format), and the test name.
+               print " " . date( "H:i:s." ) . substr( current( explode( " ", microtime() ) ), 2 ) . " " . $testname;
+               saveTest( $test, $testname );
+       }
+
+       // stop if we have reached max number of errors.
+       if ( defined( "MAX_ERRORS" ) && $num_errors >= MAX_ERRORS ) {
+               break;
+       }
+
+       // stop if we have reached max number of mins runtime.
+       if ( defined( "MAX_RUNTIME" ) && $mins >= MAX_RUNTIME ) {
+               break;
+       }
 }
 
 
 }
 
 
index b7036dd..ab2c2aa 100644 (file)
@@ -31,7 +31,7 @@ class GetLagTimes extends Maintenance {
 
                if ( $lb->getServerCount() == 1 ) {
                        $this->error( "This script dumps replication lag times, but you don't seem to have\n"
 
                if ( $lb->getServerCount() == 1 ) {
                        $this->error( "This script dumps replication lag times, but you don't seem to have\n"
-                                                 . "a multi-host db server configuration." );
+                                                 . "a multi-host db server configuration." );
                } else {
                        $lags = $lb->getLagTimes();
                        foreach ( $lags as $n => $lag ) {
                } else {
                        $lags = $lb->getLagTimes();
                        foreach ( $lags as $n => $lag ) {
index 86e43af..755659a 100644 (file)
@@ -19,7 +19,7 @@
  *
  * @ingroup Maintenance
  */
  *
  * @ingroup Maintenance
  */
+
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class GetSlaveServer extends Maintenance {
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class GetSlaveServer extends Maintenance {
index 6eae422..5f47635 100644 (file)
@@ -60,13 +60,13 @@ class BackupReader {
                        call_user_func( $this->importCallback, $rev );
                }
        }
                        call_user_func( $this->importCallback, $rev );
                }
        }
-       
+
        function handleUpload( $revision ) {
                if ( $this->uploads ) {
                        $this->uploadCount++;
                        // $this->report();
                        $this->progress( "upload: " . $revision->getFilename() );
        function handleUpload( $revision ) {
                if ( $this->uploads ) {
                        $this->uploadCount++;
                        // $this->report();
                        $this->progress( "upload: " . $revision->getFilename() );
-                       
+
                        if ( !$this->dryRun ) {
                                // bluuuh hack
                                // call_user_func( $this->uploadCallback, $revision );
                        if ( !$this->dryRun ) {
                                // bluuuh hack
                                // call_user_func( $this->uploadCallback, $revision );
@@ -148,7 +148,7 @@ class BackupReader {
                        array( &$this, 'handleUpload' ) );
                $this->logItemCallback = $importer->setLogItemCallback(
                        array( &$this, 'handleLogItem' ) );
                        array( &$this, 'handleUpload' ) );
                $this->logItemCallback = $importer->setLogItemCallback(
                        array( &$this, 'handleLogItem' ) );
-                       
+
                if ( $this->dryRun ) {
                        $importer->setPageOutCallback( null );
                }
                if ( $this->dryRun ) {
                        $importer->setPageOutCallback( null );
                }
index e0001f9..ad88b07 100644 (file)
@@ -52,10 +52,10 @@ function splitFilename( $filename ) {
 }
 
 /**
 }
 
 /**
- * Find an auxilliary file with the given extension, matching 
- * the give base file path. $maxStrip determines how many extensions 
+ * Find an auxilliary file with the given extension, matching
+ * the give base file path. $maxStrip determines how many extensions
  * may be stripped from the original file name before appending the
  * may be stripped from the original file name before appending the
- * new extension. For example, with $maxStrip = 1 (the default), 
+ * new extension. For example, with $maxStrip = 1 (the default),
  * file files acme.foo.bar.txt and acme.foo.txt would be auxilliary
  * files for acme.foo.bar and the extension ".txt". With $maxStrip = 2,
  * acme.txt would also be acceptable.
  * file files acme.foo.bar.txt and acme.foo.txt would be auxilliary
  * files for acme.foo.bar and the extension ".txt". With $maxStrip = 2,
  * acme.txt would also be acceptable.
@@ -92,22 +92,22 @@ function findAuxFile( $file, $auxExtension, $maxStrip = 1 ) {
 
 # FIXME: Access the api in a saner way and performing just one query (preferably batching files too).
 function getFileCommentFromSourceWiki( $wiki_host, $file ) {
 
 # FIXME: Access the api in a saner way and performing just one query (preferably batching files too).
 function getFileCommentFromSourceWiki( $wiki_host, $file ) {
-    $url = $wiki_host . '/api.php?action=query&format=xml&titles=File:' . rawurlencode( $file ) . '&prop=imageinfo&&iiprop=comment';
-    $body = Http::get( $url );
-    if ( preg_match( '#<ii comment="([^"]*)" />#', $body, $matches ) == 0 ) {
-        return false;
-    }
+       $url = $wiki_host . '/api.php?action=query&format=xml&titles=File:' . rawurlencode( $file ) . '&prop=imageinfo&&iiprop=comment';
+       $body = Http::get( $url );
+       if ( preg_match( '#<ii comment="([^"]*)" />#', $body, $matches ) == 0 ) {
+               return false;
+       }
 
 
-    return html_entity_decode( $matches[1] );
+       return html_entity_decode( $matches[1] );
 }
 
 function getFileUserFromSourceWiki( $wiki_host, $file ) {
 }
 
 function getFileUserFromSourceWiki( $wiki_host, $file ) {
-    $url = $wiki_host . '/api.php?action=query&format=xml&titles=File:' . rawurlencode( $file ) . '&prop=imageinfo&&iiprop=user';
-    $body = Http::get( $url );
-    if ( preg_match( '#<ii user="([^"]*)" />#', $body, $matches ) == 0 ) {
-        return false;
-    }
+       $url = $wiki_host . '/api.php?action=query&format=xml&titles=File:' . rawurlencode( $file ) . '&prop=imageinfo&&iiprop=user';
+       $body = Http::get( $url );
+       if ( preg_match( '#<ii user="([^"]*)" />#', $body, $matches ) == 0 ) {
+               return false;
+       }
 
 
-    return html_entity_decode( $matches[1] );
+       return html_entity_decode( $matches[1] );
 }
 
 }
 
index a3d8ffb..befbe64 100644 (file)
@@ -292,7 +292,7 @@ Options:
 --overwrite            Overwrite existing images with the same name (default is to skip them)
 --limit=<num>          Limit the number of images to process. Ignored or skipped images are not counted.
 --from=<name>          Ignore all files until the one with the given name. Useful for resuming
 --overwrite            Overwrite existing images with the same name (default is to skip them)
 --limit=<num>          Limit the number of images to process. Ignored or skipped images are not counted.
 --from=<name>          Ignore all files until the one with the given name. Useful for resuming
-                        aborted imports. <name> should be the file's canonical database form.
+                                               aborted imports. <name> should be the file's canonical database form.
 --skip-dupes           Skip images that were already uploaded under a different name (check SHA1)
 --sleep=<sec>          Sleep between files. Useful mostly for debugging.
 --user=<username>      Set username of uploader, default 'Maintenance script'
 --skip-dupes           Skip images that were already uploaded under a different name (check SHA1)
 --sleep=<sec>          Sleep between files. Useful mostly for debugging.
 --user=<username>      Set username of uploader, default 'Maintenance script'
@@ -306,7 +306,7 @@ Options:
 --protect=<protect>     Specify the protect value (autoconfirmed,sysop)
 --unprotect             Unprotects all uploaded images
 --source-wiki-url   if specified, take User and Comment data for each imported file from this URL.
 --protect=<protect>     Specify the protect value (autoconfirmed,sysop)
 --unprotect             Unprotects all uploaded images
 --source-wiki-url   if specified, take User and Comment data for each imported file from this URL.
-                    For example, --source-wiki-url="http://en.wikipedia.org/"
+                                       For example, --source-wiki-url="http://en.wikipedia.org/"
 
 TEXT;
        exit( 1 );
 
 TEXT;
        exit( 1 );
index d78c713..bff4cd0 100644 (file)
@@ -62,11 +62,11 @@ function importPages()
        echo <<<XML
 <?xml version="1.0" encoding="UTF-8" ?>
 <mediawiki xmlns="http://www.mediawiki.org/xml/export-0.1/"
        echo <<<XML
 <?xml version="1.0" encoding="UTF-8" ?>
 <mediawiki xmlns="http://www.mediawiki.org/xml/export-0.1/"
-           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-           xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.1/
-                               http://www.mediawiki.org/xml/export-0.1.xsd"
-           version="0.1"
-           xml:lang="en">
+                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                  xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.1/
+                                                          http://www.mediawiki.org/xml/export-0.1.xsd"
+                  version="0.1"
+                  xml:lang="en">
 <!-- generated by importUseModWiki.php -->
 
 XML;
 <!-- generated by importUseModWiki.php -->
 
 XML;
@@ -273,14 +273,14 @@ function recodeText( $string ) {
 function wfUtf8Sequence( $codepoint ) {
        if ( $codepoint <     0x80 ) return chr( $codepoint );
        if ( $codepoint <    0x800 ) return chr( $codepoint >>  6 & 0x3f | 0xc0 ) .
 function wfUtf8Sequence( $codepoint ) {
        if ( $codepoint <     0x80 ) return chr( $codepoint );
        if ( $codepoint <    0x800 ) return chr( $codepoint >>  6 & 0x3f | 0xc0 ) .
-                                     chr( $codepoint       & 0x3f | 0x80 );
-    if ( $codepoint <  0x10000 ) return chr( $codepoint >> 12 & 0x0f | 0xe0 ) .
-                                     chr( $codepoint >>  6 & 0x3f | 0x80 ) .
-                                     chr( $codepoint       & 0x3f | 0x80 );
+                                                                        chr( $codepoint       & 0x3f | 0x80 );
+       if ( $codepoint <  0x10000 ) return chr( $codepoint >> 12 & 0x0f | 0xe0 ) .
+                                                                        chr( $codepoint >>  6 & 0x3f | 0x80 ) .
+                                                                        chr( $codepoint       & 0x3f | 0x80 );
        if ( $codepoint < 0x100000 ) return chr( $codepoint >> 18 & 0x07 | 0xf0 ) . # Double-check this
        if ( $codepoint < 0x100000 ) return chr( $codepoint >> 18 & 0x07 | 0xf0 ) . # Double-check this
-                                        chr( $codepoint >> 12 & 0x3f | 0x80 ) .
-                                     chr( $codepoint >>  6 & 0x3f | 0x80 ) .
-                                     chr( $codepoint       & 0x3f | 0x80 );
+                                                                        chr( $codepoint >> 12 & 0x3f | 0x80 ) .
+                                                                        chr( $codepoint >>  6 & 0x3f | 0x80 ) .
+                                                                        chr( $codepoint       & 0x3f | 0x80 );
        # Doesn't yet handle outside the BMP
        return "&#$codepoint;";
 }
        # Doesn't yet handle outside the BMP
        return "&#$codepoint;";
 }
index a526081..289315d 100644 (file)
@@ -48,7 +48,7 @@ in the load balancer, usually indicating a replication environment.' );
                // Autodetect mode...
                $backgroundMode = wfGetLB()->getServerCount() > 1 ||
                        ( $dbw instanceof DatabaseMysql && version_compare( $dbver, '4.1' ) < 0 );
                // Autodetect mode...
                $backgroundMode = wfGetLB()->getServerCount() > 1 ||
                        ( $dbw instanceof DatabaseMysql && version_compare( $dbver, '4.1' ) < 0 );
-       
+
                if ( $this->hasOption( 'background' ) ) {
                        $backgroundMode = true;
                } elseif ( $this->hasOption( 'quick' ) ) {
                if ( $this->hasOption( 'background' ) ) {
                        $backgroundMode = true;
                } elseif ( $this->hasOption( 'quick' ) ) {
index edd001f..edc1d4a 100644 (file)
@@ -64,7 +64,7 @@ class mcTest extends Maintenance {
                                }
                        }
                        $exectime = $this->microtime_float() - $time_start;
                                }
                        }
                        $exectime = $this->microtime_float() - $time_start;
-       
+
                        $this->output( "set: $set   incr: $incr   get: $get time: $exectime", $server );
                }
        }
                        $this->output( "set: $set   incr: $incr   get: $get time: $exectime", $server );
                }
        }
index 0cfb297..4bfe4a4 100644 (file)
@@ -44,7 +44,7 @@ class MoveBatch extends Maintenance {
                $this->addOption( 'i', "Interval to sleep between moves" );
                $this->addArg( 'listfile', 'List of pages to move, newline delimited', false );
        }
                $this->addOption( 'i', "Interval to sleep between moves" );
                $this->addArg( 'listfile', 'List of pages to move, newline delimited', false );
        }
-       
+
        public function execute() {
                global $wgUser;
 
        public function execute() {
                global $wgUser;
 
@@ -67,7 +67,7 @@ class MoveBatch extends Maintenance {
                        $this->error( "Unable to read file, exiting", true );
                }
                $wgUser = User::newFromName( $user );
                        $this->error( "Unable to read file, exiting", true );
                }
                $wgUser = User::newFromName( $user );
-               
+
                # Setup complete, now start
                $dbw = wfGetDB( DB_MASTER );
                for ( $linenum = 1; !feof( $file ); $linenum++ ) {
                # Setup complete, now start
                $dbw = wfGetDB( DB_MASTER );
                for ( $linenum = 1; !feof( $file ); $linenum++ ) {
@@ -86,8 +86,8 @@ class MoveBatch extends Maintenance {
                                $this->error( "Invalid title on line $linenum" );
                                continue;
                        }
                                $this->error( "Invalid title on line $linenum" );
                                continue;
                        }
-       
-       
+
+
                        $this->output( $source->getPrefixedText() . ' --> ' . $dest->getPrefixedText() );
                        $dbw->begin();
                        $err = $source->moveTo( $dest, false, $reason );
                        $this->output( $source->getPrefixedText() . ' --> ' . $dest->getPrefixedText() );
                        $dbw->begin();
                        $err = $source->moveTo( $dest, false, $reason );
@@ -97,7 +97,7 @@ class MoveBatch extends Maintenance {
                        }
                        $dbw->commit();
                        $this->output( "\n" );
                        }
                        $dbw->commit();
                        $this->output( "\n" );
-       
+
                        if ( $interval ) {
                                sleep( $interval );
                        }
                        if ( $interval ) {
                                sleep( $interval );
                        }
index aa5a7d2..9231152 100644 (file)
@@ -131,14 +131,14 @@ function getSvnRevision( $dir ) {
  * @param $currentVersion String: Version number of the software
  * @param $svnstat String: path to the svnstat file
  * @param $input String: Path to analyze.
  * @param $currentVersion String: Version number of the software
  * @param $svnstat String: path to the svnstat file
  * @param $input String: Path to analyze.
- * @param $exclude String: Additionals path regex to exlcude 
+ * @param $exclude String: Additionals path regex to exlcude
  *                 (LocalSettings.php, AdminSettings.php, .svn and .git directories are always excluded)
  */
 function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath, $currentVersion, $svnstat, $input, $exclude ) {
 
        $template = file_get_contents( $doxygenTemplate );
 
  *                 (LocalSettings.php, AdminSettings.php, .svn and .git directories are always excluded)
  */
 function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath, $currentVersion, $svnstat, $input, $exclude ) {
 
        $template = file_get_contents( $doxygenTemplate );
 
-       // Replace template placeholders by correct values.     
+       // Replace template placeholders by correct values.
        $replacements = array(
                '{{OUTPUT_DIRECTORY}}' => $outputDirectory,
                '{{STRIP_FROM_PATH}}'  => $stripFromPath,
        $replacements = array(
                '{{OUTPUT_DIRECTORY}}' => $outputDirectory,
                '{{STRIP_FROM_PATH}}'  => $stripFromPath,
index ce12f61..a9fa8c1 100644 (file)
@@ -52,7 +52,7 @@ class NamespaceConflictChecker extends Maintenance {
                } else {
                        $retval = $this->checkAll( $fix, $suffix );
                }
                } else {
                        $retval = $this->checkAll( $fix, $suffix );
                }
-       
+
                if ( $retval ) {
                        $this->output( "\nLooks good!\n" );
                } else {
                if ( $retval ) {
                        $this->output( "\nLooks good!\n" );
                } else {
@@ -68,9 +68,9 @@ class NamespaceConflictChecker extends Maintenance {
        private function checkAll( $fix, $suffix = '' ) {
                global $wgContLang, $wgNamespaceAliases, $wgCanonicalNamespaceNames;
                global $wgCapitalLinks;
        private function checkAll( $fix, $suffix = '' ) {
                global $wgContLang, $wgNamespaceAliases, $wgCanonicalNamespaceNames;
                global $wgCapitalLinks;
-               
+
                $spaces = array();
                $spaces = array();
-               
+
                // List interwikis first, so they'll be overridden
                // by any conflicting local namespaces.
                foreach ( $this->getInterwikiList() as $prefix ) {
                // List interwikis first, so they'll be overridden
                // by any conflicting local namespaces.
                foreach ( $this->getInterwikiList() as $prefix ) {
@@ -96,7 +96,7 @@ class NamespaceConflictChecker extends Maintenance {
                foreach ( $wgContLang->getNamespaceAliases() as $name => $ns ) {
                        $spaces[$name] = $ns;
                }
                foreach ( $wgContLang->getNamespaceAliases() as $name => $ns ) {
                        $spaces[$name] = $ns;
                }
-               
+
                // We'll need to check for lowercase keys as well,
                // since we're doing case-sensitive searches in the db.
                foreach ( $spaces as $name => $ns ) {
                // We'll need to check for lowercase keys as well,
                // since we're doing case-sensitive searches in the db.
                foreach ( $spaces as $name => $ns ) {
@@ -119,10 +119,10 @@ class NamespaceConflictChecker extends Maintenance {
                                }
                        }
                }
                                }
                        }
                }
-               
+
                ksort( $spaces );
                asort( $spaces );
                ksort( $spaces );
                asort( $spaces );
-               
+
                $ok = true;
                foreach ( $spaces as $name => $ns ) {
                        $ok = $this->checkNamespace( $ns, $name, $fix, $suffix ) && $ok;
                $ok = true;
                foreach ( $spaces as $name => $ns ) {
                        $ok = $this->checkNamespace( $ns, $name, $fix, $suffix ) && $ok;
@@ -169,7 +169,7 @@ class NamespaceConflictChecker extends Maintenance {
                }
                return $ok;
        }
                }
                return $ok;
        }
-       
+
        /**
         * @todo: do this for reals
         */
        /**
         * @todo: do this for reals
         */
@@ -197,15 +197,15 @@ class NamespaceConflictChecker extends Maintenance {
                        // An interwiki; try an alternate encoding with '-' for ':'
                        $titleSql = $this->db->buildConcat( array( "'$prefix-'", $titleSql ) );
                }
                        // An interwiki; try an alternate encoding with '-' for ':'
                        $titleSql = $this->db->buildConcat( array( "'$prefix-'", $titleSql ) );
                }
-                                     
+
                $sql = "SELECT {$page}_id    AS id,
                $sql = "SELECT {$page}_id    AS id,
-                              {$page}_title AS oldtitle,
-                              $encNamespace + {$page}_namespace AS namespace,
-                              $titleSql     AS title,
-                              {$page}_namespace AS oldnamespace
-                         FROM {$table}
-                        WHERE ( {$page}_namespace=0 OR {$page}_namespace=1 )
-                          AND {$page}_title " . $this->db->buildLike( $name . ':', $this->db->anyString() );
+                                          {$page}_title AS oldtitle,
+                                          $encNamespace + {$page}_namespace AS namespace,
+                                  $titleSql     AS title,
+                                  {$page}_namespace AS oldnamespace
+                                 FROM {$table}
+                                WHERE ( {$page}_namespace=0 OR {$page}_namespace=1 )
+                                  AND {$page}_title " . $this->db->buildLike( $name . ':', $this->db->anyString() );
 
                $result = $this->db->query( $sql, __METHOD__ );
 
 
                $result = $this->db->query( $sql, __METHOD__ );
 
index e38af31..9de3a37 100644 (file)
@@ -103,7 +103,7 @@ class NukeNS extends Maintenance {
                                __METHOD__
                        );
                }
                                __METHOD__
                        );
                }
-       
+
                if ( !$delete ) {
                        $this->output( "To update the database, run the script with the --delete option.\n" );
                }
                if ( !$delete ) {
                        $this->output( "To update the database, run the script with the --delete option.\n" );
                }
index 7294080..46b9b27 100644 (file)
@@ -68,11 +68,11 @@ class Orphans extends Maintenance {
                $dbw = wfGetDB( DB_MASTER );
                $page = $dbw->tableName( 'page' );
                $revision = $dbw->tableName( 'revision' );
                $dbw = wfGetDB( DB_MASTER );
                $page = $dbw->tableName( 'page' );
                $revision = $dbw->tableName( 'revision' );
-       
+
                if ( $fix ) {
                        $this->lockTables( $dbw );
                }
                if ( $fix ) {
                        $this->lockTables( $dbw );
                }
-       
+
                $this->output( "Checking for orphan revision table entries... (this may take a while on a large wiki)\n" );
                $result = $dbw->query( "
                        SELECT *
                $this->output( "Checking for orphan revision table entries... (this may take a while on a large wiki)\n" );
                $result = $dbw->query( "
                        SELECT *
@@ -104,14 +104,14 @@ class Orphans extends Maintenance {
                } else {
                        $this->output( "No orphans! Yay!\n" );
                }
                } else {
                        $this->output( "No orphans! Yay!\n" );
                }
-       
+
                if ( $fix ) {
                        $dbw->unlockTables( __METHOD__ );
                }
        }
 
        /**
                if ( $fix ) {
                        $dbw->unlockTables( __METHOD__ );
                }
        }
 
        /**
-        * @param $fix bool 
+        * @param $fix bool
         * @todo DON'T USE THIS YET! It will remove entries which have children,
         *       but which aren't properly attached (eg if page_latest is bogus
         *       but valid revisions do exist)
         * @todo DON'T USE THIS YET! It will remove entries which have children,
         *       but which aren't properly attached (eg if page_latest is bogus
         *       but valid revisions do exist)
@@ -151,7 +151,7 @@ class Orphans extends Maintenance {
                } else {
                        $this->output( "No childless pages! Yay!\n" );
                }
                } else {
                        $this->output( "No childless pages! Yay!\n" );
                }
-       
+
                if ( $fix ) {
                        $dbw->unlockTables( __METHOD__ );
                }
                if ( $fix ) {
                        $dbw->unlockTables( __METHOD__ );
                }
@@ -165,11 +165,11 @@ class Orphans extends Maintenance {
                $dbw = wfGetDB( DB_MASTER );
                $page     = $dbw->tableName( 'page' );
                $revision = $dbw->tableName( 'revision' );
                $dbw = wfGetDB( DB_MASTER );
                $page     = $dbw->tableName( 'page' );
                $revision = $dbw->tableName( 'revision' );
-       
+
                if ( $fix ) {
                        $dbw->lockTables( $dbw, 'text', __METHOD__ );
                }
                if ( $fix ) {
                        $dbw->lockTables( $dbw, 'text', __METHOD__ );
                }
-       
+
                $this->output( "\nChecking for pages whose page_latest links are incorrect... (this may take a while on a large wiki)\n" );
                $result = $dbw->query( "
                        SELECT *
                $this->output( "\nChecking for pages whose page_latest links are incorrect... (this may take a while on a large wiki)\n" );
                $result = $dbw->query( "
                        SELECT *
@@ -214,7 +214,7 @@ class Orphans extends Maintenance {
                                $this->output( "wtf\n" );
                        }
                }
                                $this->output( "wtf\n" );
                        }
                }
-       
+
                if ( $found ) {
                        $this->output( "Found $found pages with incorrect latest revision.\n" );
                } else {
                if ( $found ) {
                        $this->output( "Found $found pages with incorrect latest revision.\n" );
                } else {
@@ -223,7 +223,7 @@ class Orphans extends Maintenance {
                if ( !$fix && $found > 0 ) {
                        $this->output( "Run again with --fix to remove these entries automatically.\n" );
                }
                if ( !$fix && $found > 0 ) {
                        $this->output( "Run again with --fix to remove these entries automatically.\n" );
                }
-       
+
                if ( $fix ) {
                        $dbw->unlockTables( __METHOD__ );
                }
                if ( $fix ) {
                        $dbw->unlockTables( __METHOD__ );
                }
index 3b3101a..ce350e8 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
 <?php
 /**
- * @file 
+ * @file
  * @ingroup Maintenance
  * @author Simetrical
  */
  * @ingroup Maintenance
  * @author Simetrical
  */
@@ -37,7 +37,7 @@ TEXT;
                $this->addOption( 'throttle', 'Wait this many milliseconds after each category.  Default: 0', false, true );
                $this->addOption( 'force', 'Run regardless of whether the database says it\'s been run already' );
        }
                $this->addOption( 'throttle', 'Wait this many milliseconds after each category.  Default: 0', false, true );
                $this->addOption( 'force', 'Run regardless of whether the database says it\'s been run already' );
        }
-       
+
        public function execute() {
                $begin = $this->getOption( 'begin', '' );
                $maxSlaveLag = $this->getOption( 'max-slave-lag', 10 );
        public function execute() {
                $begin = $this->getOption( 'begin', '' );
                $maxSlaveLag = $this->getOption( 'max-slave-lag', 10 );
@@ -48,7 +48,7 @@ TEXT;
 
        private function doPopulateCategory( $begin, $maxlag, $throttle, $force ) {
                $dbw = wfGetDB( DB_MASTER );
 
        private function doPopulateCategory( $begin, $maxlag, $throttle, $force ) {
                $dbw = wfGetDB( DB_MASTER );
-       
+
                if ( !$force ) {
                        $row = $dbw->selectRow(
                                'updatelog',
                if ( !$force ) {
                        $row = $dbw->selectRow(
                                'updatelog',
@@ -63,7 +63,7 @@ TEXT;
                                return true;
                        }
                }
                                return true;
                        }
                }
-       
+
                $maxlag = intval( $maxlag );
                $throttle = intval( $throttle );
                if ( $begin !== '' ) {
                $maxlag = intval( $maxlag );
                $throttle = intval( $throttle );
                if ( $begin !== '' ) {
@@ -72,7 +72,7 @@ TEXT;
                        $where = null;
                }
                $i = 0;
                        $where = null;
                }
                $i = 0;
-       
+
                while ( true ) {
                        # Find which category to update
                        $row = $dbw->selectRow(
                while ( true ) {
                        # Find which category to update
                        $row = $dbw->selectRow(
@@ -90,7 +90,7 @@ TEXT;
                        }
                        $name = $row->cl_to;
                        $where = 'cl_to > ' . $dbw->addQuotes( $name );
                        }
                        $name = $row->cl_to;
                        $where = 'cl_to > ' . $dbw->addQuotes( $name );
-       
+
                        # Use the row to update the category count
                        $cat = Category::newFromName( $name );
                        if ( !is_object( $cat ) ) {
                        # Use the row to update the category count
                        $cat = Category::newFromName( $name );
                        if ( !is_object( $cat ) ) {
@@ -98,7 +98,7 @@ TEXT;
                        } else {
                                $cat->refreshCounts();
                        }
                        } else {
                                $cat->refreshCounts();
                        }
-       
+
                        ++$i;
                        if ( !( $i % self::REPORTING_INTERVAL ) ) {
                                $this->output( "$name\n" );
                        ++$i;
                        if ( !( $i % self::REPORTING_INTERVAL ) ) {
                                $this->output( "$name\n" );
@@ -106,7 +106,7 @@ TEXT;
                        }
                        usleep( $throttle * 1000 );
                }
                        }
                        usleep( $throttle * 1000 );
                }
-       
+
                if ( $dbw->insert(
                                'updatelog',
                                array( 'ul_key' => 'populate category' ),
                if ( $dbw->insert(
                                'updatelog',
                                array( 'ul_key' => 'populate category' ),
index 4b985b5..32f5d19 100644 (file)
@@ -28,7 +28,7 @@ class PopulateLogSearch extends Maintenance {
        const LOG_SEARCH_BATCH_SIZE = 100;
 
        static $tableMap = array( 'rev' => 'revision', 'fa' => 'filearchive', 'oi' => 'oldimage', 'ar' => 'archive' );
        const LOG_SEARCH_BATCH_SIZE = 100;
 
        static $tableMap = array( 'rev' => 'revision', 'fa' => 'filearchive', 'oi' => 'oldimage', 'ar' => 'archive' );
-       
+
        public function __construct() {
                parent::__construct();
                $this->mDescription = "Migrate log params to new table and index for searching";
        public function __construct() {
                parent::__construct();
                $this->mDescription = "Migrate log params to new table and index for searching";
@@ -45,12 +45,12 @@ class PopulateLogSearch extends Maintenance {
                        return true;
                }
                $end = $db->selectField( 'logging', 'MAX(log_id)', false, __FUNCTION__ );
                        return true;
                }
                $end = $db->selectField( 'logging', 'MAX(log_id)', false, __FUNCTION__ );
-       
+
                # Do remaining chunk
                $end += self::LOG_SEARCH_BATCH_SIZE - 1;
                $blockStart = $start;
                $blockEnd = $start + self::LOG_SEARCH_BATCH_SIZE - 1;
                # Do remaining chunk
                $end += self::LOG_SEARCH_BATCH_SIZE - 1;
                $blockStart = $start;
                $blockEnd = $start + self::LOG_SEARCH_BATCH_SIZE - 1;
-               
+
                $delTypes = array( 'delete', 'suppress' ); // revisiondelete types
                while ( $blockEnd <= $end ) {
                        $this->output( "...doing log_id from $blockStart to $blockEnd\n" );
                $delTypes = array( 'delete', 'suppress' ); // revisiondelete types
                while ( $blockEnd <= $end ) {
                        $this->output( "...doing log_id from $blockStart to $blockEnd\n" );
index 9b6826c..faad442 100644 (file)
@@ -53,11 +53,11 @@ class PopulateRevisionLength extends Maintenance {
                while ( $blockStart <= $end ) {
                        $this->output( "...doing rev_id from $blockStart to $blockEnd\n" );
                        $res = $db->select( 'revision',
                while ( $blockStart <= $end ) {
                        $this->output( "...doing rev_id from $blockStart to $blockEnd\n" );
                        $res = $db->select( 'revision',
-                                           Revision::selectFields(),
-                                           array( "rev_id >= $blockStart",
+                                               Revision::selectFields(),
+                                               array( "rev_id >= $blockStart",
                                                   "rev_id <= $blockEnd",
                                                   "rev_len IS NULL" ),
                                                   "rev_id <= $blockEnd",
                                                   "rev_len IS NULL" ),
-                                           __METHOD__ );
+                                               __METHOD__ );
                        # Go through and update rev_len from these rows.
                        foreach ( $res as $row ) {
                                $rev = new Revision( $row );
                        # Go through and update rev_len from these rows.
                        foreach ( $res as $row ) {
                                $rev = new Revision( $row );
@@ -70,9 +70,9 @@ class PopulateRevisionLength extends Maintenance {
                                else {
                                        # Update the row...
                                        $db->update( 'revision',
                                else {
                                        # Update the row...
                                        $db->update( 'revision',
-                                                    array( 'rev_len' => strlen( $text ) ),
-                                                    array( 'rev_id' => $row->rev_id ),
-                                                    __METHOD__ );
+                                                        array( 'rev_len' => strlen( $text ) ),
+                                                        array( 'rev_id' => $row->rev_id ),
+                                                        __METHOD__ );
                                        $count++;
                                }
                        }
                                        $count++;
                                }
                        }
index 5a06c60..2676409 100644 (file)
@@ -62,7 +62,7 @@ class PopulateSha1 extends Maintenance {
                        $this->output( "Using pipe method\n" );
                        $pipe = popen( $cmd, 'w' );
                }
                        $this->output( "Using pipe method\n" );
                        $pipe = popen( $cmd, 'w' );
                }
-       
+
                $numRows = $res->numRows();
                $i = 0;
                foreach ( $res as $row ) {
                $numRows = $res->numRows();
                $i = 0;
                foreach ( $res as $row ) {
index 8fe7e95..31b372c 100644 (file)
@@ -99,7 +99,7 @@ class PPFuzzTester {
                        $s .= $this->hairs[$hairIndex];
                }
                // Send through the UTF-8 normaliser
                        $s .= $this->hairs[$hairIndex];
                }
                // Send through the UTF-8 normaliser
-               // This resolves a few differences between the old preprocessor and the 
+               // This resolves a few differences between the old preprocessor and the
                // XML-based one, which doesn't like illegals and converts line endings.
                // It's done by the MW UI, so it's a reasonably legitimate thing to do.
                global $wgContLang;
                // XML-based one, which doesn't like illegals and converts line endings.
                // It's done by the MW UI, so it's a reasonably legitimate thing to do.
                global $wgContLang;
@@ -140,7 +140,7 @@ class PPFuzzTest {
 
        function templateHook( $title ) {
                $titleText = $title->getPrefixedDBkey();
 
        function templateHook( $title ) {
                $titleText = $title->getPrefixedDBkey();
-               
+
                if ( !isset( $this->templates[$titleText] ) ) {
                        $finalTitle = $title;
                        if ( count( $this->templates ) >= $this->parent->maxTemplates ) {
                if ( !isset( $this->templates[$titleText] ) ) {
                        $finalTitle = $title;
                        if ( count( $this->templates ) >= $this->parent->maxTemplates ) {
@@ -182,7 +182,7 @@ class PPFuzzTest {
 
        function getReport() {
                $s = "Title: " . $this->title->getPrefixedDBkey() . "\n" .
 
        function getReport() {
                $s = "Title: " . $this->title->getPrefixedDBkey() . "\n" .
-//                     "Output type: {$this->outputType}\n" . 
+//                     "Output type: {$this->outputType}\n" .
                        "Entry point: {$this->entryPoint}\n" .
                        "User: " . ( $this->fancySig ? 'fancy' : 'no-fancy' ) . ' ' . var_export( $this->nickname, true ) . "\n" .
                        "Main text: " . var_export( $this->mainText, true ) . "\n";
                        "Entry point: {$this->entryPoint}\n" .
                        "User: " . ( $this->fancySig ? 'fancy' : 'no-fancy' ) . ' ' . var_export( $this->nickname, true ) . "\n" .
                        "Main text: " . var_export( $this->mainText, true ) . "\n";
index 38d12f2..381d62a 100644 (file)
@@ -9,15 +9,15 @@
  */
 
 function PurgeRedundantText( $delete = false ) {
  */
 
 function PurgeRedundantText( $delete = false ) {
-       
+
        # Data should come off the master, wrapped in a transaction
        $dbw = wfGetDB( DB_MASTER );
        $dbw->begin();
        # Data should come off the master, wrapped in a transaction
        $dbw = wfGetDB( DB_MASTER );
        $dbw->begin();
-       
+
        $tbl_arc = $dbw->tableName( 'archive' );
        $tbl_rev = $dbw->tableName( 'revision' );
        $tbl_txt = $dbw->tableName( 'text' );
        $tbl_arc = $dbw->tableName( 'archive' );
        $tbl_rev = $dbw->tableName( 'revision' );
        $tbl_txt = $dbw->tableName( 'text' );
-       
+
        # Get "active" text records from the revisions table
        echo( "Searching for active text records in revisions table..." );
        $res = $dbw->query( "SELECT DISTINCT rev_text_id FROM $tbl_rev" );
        # Get "active" text records from the revisions table
        echo( "Searching for active text records in revisions table..." );
        $res = $dbw->query( "SELECT DISTINCT rev_text_id FROM $tbl_rev" );
@@ -25,7 +25,7 @@ function PurgeRedundantText( $delete = false ) {
                $cur[] = $row->rev_text_id;
        }
        echo( "done.\n" );
                $cur[] = $row->rev_text_id;
        }
        echo( "done.\n" );
-       
+
        # Get "active" text records from the archive table
        echo( "Searching for active text records in archive table..." );
        $res = $dbw->query( "SELECT DISTINCT ar_text_id FROM $tbl_arc" );
        # Get "active" text records from the archive table
        echo( "Searching for active text records in archive table..." );
        $res = $dbw->query( "SELECT DISTINCT ar_text_id FROM $tbl_arc" );
@@ -33,7 +33,7 @@ function PurgeRedundantText( $delete = false ) {
                $cur[] = $row->ar_text_id;
        }
        echo( "done.\n" );
                $cur[] = $row->ar_text_id;
        }
        echo( "done.\n" );
-       
+
        # Get the IDs of all text records not in these sets
        echo( "Searching for inactive text records..." );
        $set = implode( ', ', $cur );
        # Get the IDs of all text records not in these sets
        echo( "Searching for inactive text records..." );
        $set = implode( ', ', $cur );
@@ -43,11 +43,11 @@ function PurgeRedundantText( $delete = false ) {
                $old[] = $row->old_id;
        }
        echo( "done.\n" );
                $old[] = $row->old_id;
        }
        echo( "done.\n" );
-       
+
        # Inform the user of what we're going to do
        $count = count( $old );
        echo( "$count inactive items found.\n" );
        # Inform the user of what we're going to do
        $count = count( $old );
        echo( "$count inactive items found.\n" );
-       
+
        # Delete as appropriate
        if ( $delete && $count ) {
                echo( "Deleting..." );
        # Delete as appropriate
        if ( $delete && $count ) {
                echo( "Deleting..." );
@@ -55,8 +55,8 @@ function PurgeRedundantText( $delete = false ) {
                $dbw->query( "DELETE FROM $tbl_txt WHERE old_id IN ( $set )" );
                echo( "done.\n" );
        }
                $dbw->query( "DELETE FROM $tbl_txt WHERE old_id IN ( $set )" );
                echo( "done.\n" );
        }
-       
+
        # Done
        $dbw->commit();
        # Done
        $dbw->commit();
-       
+
 }
 }
index ee6f56e..4e2a927 100644 (file)
@@ -29,7 +29,7 @@ class PurgeOldText extends Maintenance {
                $this->mDescription = "Purge old text records from the database";
                $this->addOption( 'purge', 'Performs the deletion' );
        }
                $this->mDescription = "Purge old text records from the database";
                $this->addOption( 'purge', 'Performs the deletion' );
        }
-       
+
        public function execute() {
                $this->purgeRedundantText( $this->hasOption( 'purge' ) );
        }
        public function execute() {
                $this->purgeRedundantText( $this->hasOption( 'purge' ) );
        }
index 63e41f4..100f4b9 100644 (file)
@@ -34,19 +34,19 @@ class ReassignEdits extends Maintenance {
                $this->addArg( 'from', 'Old user to take edits from' );
                $this->addArg( 'to', 'New user to give edits to' );
        }
                $this->addArg( 'from', 'Old user to take edits from' );
                $this->addArg( 'to', 'New user to give edits to' );
        }
-       
+
        public function execute() {
                if ( $this->hasArg( 0 ) && $this->hasArg( 1 ) ) {
                        # Set up the users involved
                        $from = $this->initialiseUser( $this->getArg( 0 ) );
                        $to   = $this->initialiseUser( $this->getArg( 1 ) );
        public function execute() {
                if ( $this->hasArg( 0 ) && $this->hasArg( 1 ) ) {
                        # Set up the users involved
                        $from = $this->initialiseUser( $this->getArg( 0 ) );
                        $to   = $this->initialiseUser( $this->getArg( 1 ) );
-       
+
                        # If the target doesn't exist, and --force is not set, stop here
                        if ( $to->getId() || $this->hasOption( 'force' ) ) {
                                # Reassign the edits
                                $report = $this->hasOption( 'report' );
                                $this->doReassignEdits( $from, $to, !$this->hasOption( 'norc' ), $report );
                        # If the target doesn't exist, and --force is not set, stop here
                        if ( $to->getId() || $this->hasOption( 'force' ) ) {
                                # Reassign the edits
                                $report = $this->hasOption( 'report' );
                                $this->doReassignEdits( $from, $to, !$this->hasOption( 'norc' ), $report );
-                               # If reporting, and there were items, advise the user to run without --report   
+                               # If reporting, and there were items, advise the user to run without --report
                                if ( $report ) {
                                        $this->output( "Run the script again without --report to update.\n" );
                                }
                                if ( $report ) {
                                        $this->output( "Run the script again without --report to update.\n" );
                                }
@@ -93,10 +93,10 @@ class ReassignEdits extends Maintenance {
                } else {
                        $rec = 0;
                }
                } else {
                        $rec = 0;
                }
-       
+
                $total = $cur + $del + $rec;
                $this->output( "\nTotal entries to change: {$total}\n" );
                $total = $cur + $del + $rec;
                $this->output( "\nTotal entries to change: {$total}\n" );
-       
+
                if ( !$report ) {
                        if ( $total ) {
                                # Reassign edits
                if ( !$report ) {
                        if ( $total ) {
                                # Reassign edits
@@ -116,11 +116,11 @@ class ReassignEdits extends Maintenance {
                                }
                        }
                }
                                }
                        }
                }
-       
+
                $dbw->commit();
                return (int)$total;
        }
                $dbw->commit();
                return (int)$total;
        }
-       
+
        /**
         * Return the most efficient set of user conditions
         * i.e. a user => id mapping, or a user_text => text mapping
        /**
         * Return the most efficient set of user conditions
         * i.e. a user => id mapping, or a user_text => text mapping
@@ -133,7 +133,7 @@ class ReassignEdits extends Maintenance {
        private function userConditions( &$user, $idfield, $utfield ) {
                return $user->getId() ? array( $idfield => $user->getId() ) : array( $utfield => $user->getName() );
        }
        private function userConditions( &$user, $idfield, $utfield ) {
                return $user->getId() ? array( $idfield => $user->getId() ) : array( $utfield => $user->getName() );
        }
-       
+
        /**
         * Return user specifications
         * i.e. user => id, user_text => text
        /**
         * Return user specifications
         * i.e. user => id, user_text => text
@@ -146,7 +146,7 @@ class ReassignEdits extends Maintenance {
        private function userSpecification( &$user, $idfield, $utfield ) {
                return array( $idfield => $user->getId(), $utfield => $user->getName() );
        }
        private function userSpecification( &$user, $idfield, $utfield ) {
                return array( $idfield => $user->getId(), $utfield => $user->getName() );
        }
-       
+
        /**
         * Initialise the user object
         *
        /**
         * Initialise the user object
         *
index 53d4c23..7f250bc 100644 (file)
@@ -60,7 +60,7 @@ class RebuildFileCache extends Maintenance {
                $end += $this->mBatchSize - 1;
                $blockStart = $start;
                $blockEnd = $start + $this->mBatchSize - 1;
                $end += $this->mBatchSize - 1;
                $blockStart = $start;
                $blockEnd = $start + $this->mBatchSize - 1;
-       
+
                $dbw = wfGetDB( DB_MASTER );
                // Go through each page and save the output
                while ( $blockEnd <= $end ) {
                $dbw = wfGetDB( DB_MASTER );
                // Go through each page and save the output
                while ( $blockEnd <= $end ) {
@@ -113,7 +113,7 @@ class RebuildFileCache extends Maintenance {
                        wfWaitForSlaves( 5 );
                }
                $this->output( "Done!\n" );
                        wfWaitForSlaves( 5 );
                }
                $this->output( "Done!\n" );
-       
+
                // Remove these to be safe
                if ( isset( $wgTitle ) )
                        unset( $wgTitle );
                // Remove these to be safe
                if ( isset( $wgTitle ) )
                        unset( $wgTitle );
index 83b7cc8..9733457 100644 (file)
@@ -37,7 +37,7 @@ class RebuildLocalisationCache extends Maintenance {
                $this->addOption( 'force', 'Rebuild all files, even ones not out of date' );
                $this->addOption( 'threads', 'Fork more than one thread', false, true );
        }
                $this->addOption( 'force', 'Rebuild all files, even ones not out of date' );
                $this->addOption( 'threads', 'Fork more than one thread', false, true );
        }
-       
+
        public function memoryLimit() {
                return '200M';
        }
        public function memoryLimit() {
                return '200M';
        }
index 0e1fa86..1dcd9a7 100644 (file)
@@ -47,7 +47,7 @@ class RebuildAll extends Maintenance {
                $this->output( "\n\n** Rebuilding links tables -- this can take a long time. It should be safe to abort via ctrl+C if you get bored.\n" );
                $rebuildLinks = $this->runChild( 'RefreshLinks', 'refreshLinks.php' );
                $rebuildLinks->execute();
                $this->output( "\n\n** Rebuilding links tables -- this can take a long time. It should be safe to abort via ctrl+C if you get bored.\n" );
                $rebuildLinks = $this->runChild( 'RefreshLinks', 'refreshLinks.php' );
                $rebuildLinks->execute();
-               
+
                $this->output( "Done.\n" );
        }
 }
                $this->output( "Done.\n" );
        }
 }
index 206939a..335d534 100644 (file)
@@ -35,7 +35,7 @@ class RebuildMessages extends Maintenance {
                } else {
                        $databases = array( $wgDBname );
                }
                } else {
                        $databases = array( $wgDBname );
                }
-       
+
                foreach ( $databases as $db ) {
                        $this->output( "Deleting message cache for {$db}... " );
                        $messageMemc->delete( "{$db}:messages" );
                foreach ( $databases as $db ) {
                        $this->output( "Deleting message cache for {$db}... " );
                        $messageMemc->delete( "{$db}:messages" );
index eb4f621..058255b 100644 (file)
@@ -48,13 +48,13 @@ class RebuildRecentchanges extends Maintenance {
        function rebuildRecentChangesTablePass1()
        {
                $dbw = wfGetDB( DB_MASTER );
        function rebuildRecentChangesTablePass1()
        {
                $dbw = wfGetDB( DB_MASTER );
-       
+
                $dbw->delete( 'recentchanges', '*' );
                $dbw->delete( 'recentchanges', '*' );
-       
+
                $this->output( "Loading from page and revision tables...\n" );
                $this->output( "Loading from page and revision tables...\n" );
-       
+
                global $wgRCMaxAge;
                global $wgRCMaxAge;
-       
+
                $this->output( '$wgRCMaxAge=' . $wgRCMaxAge );
                $days = $wgRCMaxAge / 24 / 3600;
                if ( intval( $days ) == $days ) {
                $this->output( '$wgRCMaxAge=' . $wgRCMaxAge );
                $days = $wgRCMaxAge / 24 / 3600;
                if ( intval( $days ) == $days ) {
@@ -62,7 +62,7 @@ class RebuildRecentchanges extends Maintenance {
                } else {
                                $this->output( " (approx. " .  intval( $days ) . " days)\n" );
                }
                } else {
                                $this->output( " (approx. " .  intval( $days ) . " days)\n" );
                }
-       
+
                $cutoff = time() - $wgRCMaxAge;
                $dbw->insertSelect( 'recentchanges', array( 'page', 'revision' ),
                        array(
                $cutoff = time() - $wgRCMaxAge;
                $dbw->insertSelect( 'recentchanges', array( 'page', 'revision' ),
                        array(
@@ -97,14 +97,14 @@ class RebuildRecentchanges extends Maintenance {
        private function rebuildRecentChangesTablePass2() {
                $dbw = wfGetDB( DB_MASTER );
                list ( $recentchanges, $revision ) = $dbw->tableNamesN( 'recentchanges', 'revision' );
        private function rebuildRecentChangesTablePass2() {
                $dbw = wfGetDB( DB_MASTER );
                list ( $recentchanges, $revision ) = $dbw->tableNamesN( 'recentchanges', 'revision' );
-       
+
                $this->output( "Updating links and size differences...\n" );
                $this->output( "Updating links and size differences...\n" );
-       
+
                # Fill in the rc_last_oldid field, which points to the previous edit
                $sql = "SELECT rc_cur_id,rc_this_oldid,rc_timestamp FROM $recentchanges " .
                  "ORDER BY rc_cur_id,rc_timestamp";
                $res = $dbw->query( $sql, DB_MASTER );
                # Fill in the rc_last_oldid field, which points to the previous edit
                $sql = "SELECT rc_cur_id,rc_this_oldid,rc_timestamp FROM $recentchanges " .
                  "ORDER BY rc_cur_id,rc_timestamp";
                $res = $dbw->query( $sql, DB_MASTER );
-       
+
                $lastCurId = 0;
                $lastOldId = 0;
                foreach ( $res as $obj ) {
                $lastCurId = 0;
                $lastOldId = 0;
                foreach ( $res as $obj ) {
@@ -136,12 +136,12 @@ class RebuildRecentchanges extends Maintenance {
                                # Grab the entry's text size
                                $size = $dbw->selectField( 'revision', 'rev_len', array( 'rev_id' => $obj->rc_this_oldid ) );
                                $size = !is_null( $size ) ? intval( $size ) : 'NULL';
                                # Grab the entry's text size
                                $size = $dbw->selectField( 'revision', 'rev_len', array( 'rev_id' => $obj->rc_this_oldid ) );
                                $size = !is_null( $size ) ? intval( $size ) : 'NULL';
-       
+
                                $sql3 = "UPDATE $recentchanges SET rc_last_oldid=$lastOldId,rc_new=$new,rc_type=$new," .
                                        "rc_old_len=$lastSize,rc_new_len=$size " .
                                        "WHERE rc_cur_id={$lastCurId} AND rc_this_oldid={$obj->rc_this_oldid}";
                                $dbw->query( $sql3 );
                                $sql3 = "UPDATE $recentchanges SET rc_last_oldid=$lastOldId,rc_new=$new,rc_type=$new," .
                                        "rc_old_len=$lastSize,rc_new_len=$size " .
                                        "WHERE rc_cur_id={$lastCurId} AND rc_this_oldid={$obj->rc_this_oldid}";
                                $dbw->query( $sql3 );
-       
+
                                $lastOldId = intval( $obj->rc_this_oldid );
                                $lastSize = $size;
                        }
                                $lastOldId = intval( $obj->rc_this_oldid );
                                $lastSize = $size;
                        }
@@ -154,20 +154,20 @@ class RebuildRecentchanges extends Maintenance {
         */
        private function rebuildRecentChangesTablePass3() {
                $dbw = wfGetDB( DB_MASTER );
         */
        private function rebuildRecentChangesTablePass3() {
                $dbw = wfGetDB( DB_MASTER );
-       
+
                $this->output( "Loading from user, page, and logging tables...\n" );
                $this->output( "Loading from user, page, and logging tables...\n" );
-       
+
                global $wgRCMaxAge, $wgLogTypes, $wgLogRestrictions;
                // Some logs don't go in RC. This should check for that
                $basicRCLogs = array_diff( $wgLogTypes, array_keys( $wgLogRestrictions ) );
                global $wgRCMaxAge, $wgLogTypes, $wgLogRestrictions;
                // Some logs don't go in RC. This should check for that
                $basicRCLogs = array_diff( $wgLogTypes, array_keys( $wgLogRestrictions ) );
-       
+
                // Escape...blah blah
                $selectLogs = array();
                foreach ( $basicRCLogs as $logtype ) {
                        $safetype = $dbw->strencode( $logtype );
                        $selectLogs[] = "'$safetype'";
                }
                // Escape...blah blah
                $selectLogs = array();
                foreach ( $basicRCLogs as $logtype ) {
                        $safetype = $dbw->strencode( $logtype );
                        $selectLogs[] = "'$safetype'";
                }
-       
+
                $cutoff = time() - $wgRCMaxAge;
                list( $logging, $page ) = $dbw->tableNamesN( 'logging', 'page' );
                $dbw->insertSelect( 'recentchanges', array( 'user', "$logging LEFT JOIN $page ON (log_namespace=page_namespace AND log_title=page_title)" ),
                $cutoff = time() - $wgRCMaxAge;
                list( $logging, $page ) = $dbw->tableNamesN( 'logging', 'page' );
                $dbw->insertSelect( 'recentchanges', array( 'user', "$logging LEFT JOIN $page ON (log_namespace=page_namespace AND log_title=page_title)" ),
@@ -208,11 +208,11 @@ class RebuildRecentchanges extends Maintenance {
         */
        private function rebuildRecentChangesTablePass4() {
                global $wgGroupPermissions, $wgUseRCPatrol;
         */
        private function rebuildRecentChangesTablePass4() {
                global $wgGroupPermissions, $wgUseRCPatrol;
-       
+
                $dbw = wfGetDB( DB_MASTER );
                $dbw = wfGetDB( DB_MASTER );
-       
+
                list( $recentchanges, $usergroups, $user ) = $dbw->tableNamesN( 'recentchanges', 'user_groups', 'user' );
                list( $recentchanges, $usergroups, $user ) = $dbw->tableNamesN( 'recentchanges', 'user_groups', 'user' );
-       
+
                $botgroups = $autopatrolgroups = array();
                foreach ( $wgGroupPermissions as $group => $rights ) {
                        if ( isset( $rights['bot'] ) && $rights['bot'] ) {
                $botgroups = $autopatrolgroups = array();
                foreach ( $wgGroupPermissions as $group => $rights ) {
                        if ( isset( $rights['bot'] ) && $rights['bot'] ) {
@@ -226,14 +226,14 @@ class RebuildRecentchanges extends Maintenance {
                if ( !empty( $botgroups ) ) {
                        $botwhere = implode( ',', $botgroups );
                        $botusers = array();
                if ( !empty( $botgroups ) ) {
                        $botwhere = implode( ',', $botgroups );
                        $botusers = array();
-       
+
                        $this->output( "Flagging bot account edits...\n" );
                        $this->output( "Flagging bot account edits...\n" );
-       
+
                        # Find all users that are bots
                        $sql = "SELECT DISTINCT user_name FROM $usergroups, $user " .
                                "WHERE ug_group IN($botwhere) AND user_id = ug_user";
                        $res = $dbw->query( $sql, DB_MASTER );
                        # Find all users that are bots
                        $sql = "SELECT DISTINCT user_name FROM $usergroups, $user " .
                                "WHERE ug_group IN($botwhere) AND user_id = ug_user";
                        $res = $dbw->query( $sql, DB_MASTER );
-       
+
                        foreach ( $res as $obj ) {
                                $botusers[] = $dbw->addQuotes( $obj->user_name );
                        }
                        foreach ( $res as $obj ) {
                                $botusers[] = $dbw->addQuotes( $obj->user_name );
                        }
@@ -250,18 +250,18 @@ class RebuildRecentchanges extends Maintenance {
                if ( !$wgMiserMode && !empty( $autopatrolgroups ) ) {
                        $patrolwhere = implode( ',', $autopatrolgroups );
                        $patrolusers = array();
                if ( !$wgMiserMode && !empty( $autopatrolgroups ) ) {
                        $patrolwhere = implode( ',', $autopatrolgroups );
                        $patrolusers = array();
-       
+
                        $this->output( "Flagging auto-patrolled edits...\n" );
                        $this->output( "Flagging auto-patrolled edits...\n" );
-       
+
                        # Find all users in RC with autopatrol rights
                        $sql = "SELECT DISTINCT user_name FROM $usergroups, $user " .
                                "WHERE ug_group IN($patrolwhere) AND user_id = ug_user";
                        $res = $dbw->query( $sql, DB_MASTER );
                        # Find all users in RC with autopatrol rights
                        $sql = "SELECT DISTINCT user_name FROM $usergroups, $user " .
                                "WHERE ug_group IN($patrolwhere) AND user_id = ug_user";
                        $res = $dbw->query( $sql, DB_MASTER );
-       
+
                        foreach ( $res as $obj ) {
                                $patrolusers[] = $dbw->addQuotes( $obj->user_name );
                        }
                        foreach ( $res as $obj ) {
                                $patrolusers[] = $dbw->addQuotes( $obj->user_name );
                        }
-       
+
                        # Fill in the rc_patrolled field
                        if ( !empty( $patrolusers ) ) {
                                $patrolwhere = implode( ',', $patrolusers );
                        # Fill in the rc_patrolled field
                        if ( !empty( $patrolusers ) ) {
                                $patrolwhere = implode( ',', $patrolusers );
index 9717ebe..10550ea 100644 (file)
@@ -27,7 +27,7 @@
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class RebuildTextIndex extends Maintenance {
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class RebuildTextIndex extends Maintenance {
-       const RTI_CHUNK_SIZE = 500;
+       const RTI_CHUNK_SIZE = 500;
        private $db;
 
        public function __construct() {
        private $db;
 
        public function __construct() {
@@ -46,7 +46,7 @@ class RebuildTextIndex extends Maintenance {
                if ( $wgDBtype == 'postgres' ) {
                        $this->error( "This script is not needed when using Postgres.\n", true );
                }
                if ( $wgDBtype == 'postgres' ) {
                        $this->error( "This script is not needed when using Postgres.\n", true );
                }
-       
+
                $this->db = wfGetDB( DB_MASTER );
                if ( $this->db->getType() == 'sqlite' ) {
                        if ( !$this->db->getFulltextSearchModule() ) {
                $this->db = wfGetDB( DB_MASTER );
                if ( $this->db->getType() == 'sqlite' ) {
                        if ( !$this->db->getFulltextSearchModule() ) {
@@ -56,9 +56,9 @@ class RebuildTextIndex extends Maintenance {
                                $this->error( "Your database schema is not configured for full-text search support. Run update.php.\n" );
                        }
                }
                                $this->error( "Your database schema is not configured for full-text search support. Run update.php.\n" );
                        }
                }
-               
+
                $wgTitle = Title::newFromText( "Rebuild text index script" );
                $wgTitle = Title::newFromText( "Rebuild text index script" );
-       
+
                if ( $this->db->getType() == 'mysql' ) {
                        $this->dropMysqlTextIndex();
                        $this->populateSearchIndex();
                if ( $this->db->getType() == 'mysql' ) {
                        $this->dropMysqlTextIndex();
                        $this->populateSearchIndex();
@@ -67,7 +67,7 @@ class RebuildTextIndex extends Maintenance {
                        $this->clearSearchIndex();
                        $this->populateSearchIndex();
                }
                        $this->clearSearchIndex();
                        $this->populateSearchIndex();
                }
-       
+
                $this->output( "Done.\n" );
        }
 
                $this->output( "Done.\n" );
        }
 
@@ -80,7 +80,7 @@ class RebuildTextIndex extends Maintenance {
                $count = $s->count;
                $this->output( "Rebuilding index fields for {$count} pages...\n" );
                $n = 0;
                $count = $s->count;
                $this->output( "Rebuilding index fields for {$count} pages...\n" );
                $n = 0;
-       
+
                while ( $n < $count ) {
                        if ( $n ) {
                                $this->output( $n . "\n" );
                while ( $n < $count ) {
                        if ( $n ) {
                                $this->output( $n . "\n" );
@@ -92,7 +92,7 @@ class RebuildTextIndex extends Maintenance {
                                array( "page_id BETWEEN $n AND $end", 'page_latest = rev_id', 'rev_text_id = old_id' ),
                                __METHOD__
                                );
                                array( "page_id BETWEEN $n AND $end", 'page_latest = rev_id', 'rev_text_id = old_id' ),
                                __METHOD__
                                );
-       
+
                        foreach ( $res as $s ) {
                                $revtext = Revision::getRevisionText( $s );
                                $u = new SearchUpdate( $s->page_id, $s->page_title, $revtext );
                        foreach ( $res as $s ) {
                                $revtext = Revision::getRevisionText( $s );
                                $u = new SearchUpdate( $s->page_id, $s->page_title, $revtext );
index 2feea68..2a1890d 100644 (file)
@@ -28,7 +28,7 @@ class RefreshImageCount extends Maintenance {
                parent::__construct();
                $this->mDescription = "Resets ss_image count, forcing slaves to pick it up.";
        }
                parent::__construct();
                $this->mDescription = "Resets ss_image count, forcing slaves to pick it up.";
        }
-       
+
        public function execute() {
                $dbw = wfGetDB( DB_MASTER );
 
        public function execute() {
                $dbw = wfGetDB( DB_MASTER );
 
@@ -41,7 +41,7 @@ class RefreshImageCount extends Maintenance {
                $dbw->update( 'site_stats',
                        array( 'ss_images' => null ),
                        array( 'ss_row_id' => 1 ) );
                $dbw->update( 'site_stats',
                        array( 'ss_images' => null ),
                        array( 'ss_row_id' => 1 ) );
-       
+
                // Now this update will be forced to go out
                $dbw->update( 'site_stats',
                        array( 'ss_images' => $count ),
                // Now this update will be forced to go out
                $dbw->update( 'site_stats',
                        array( 'ss_images' => $count ),
index d4eae46..45e77a7 100644 (file)
@@ -109,7 +109,7 @@ class RefreshLinks extends Maintenance {
                        );
                        $num = $dbr->numRows( $res );
                        $this->output( "$num new articles...\n" );
                        );
                        $num = $dbr->numRows( $res );
                        $this->output( "$num new articles...\n" );
-       
+
                        $i = 0;
                        foreach ( $res as $row ) {
                                if ( !( ++$i % $reportingInterval ) ) {
                        $i = 0;
                        foreach ( $res as $row ) {
                                if ( !( ++$i % $reportingInterval ) ) {
@@ -129,9 +129,9 @@ class RefreshLinks extends Maintenance {
                        }
                        $this->output( "Refreshing redirects table.\n" );
                        $this->output( "Starting from page_id $start of $end.\n" );
                        }
                        $this->output( "Refreshing redirects table.\n" );
                        $this->output( "Starting from page_id $start of $end.\n" );
-       
+
                        for ( $id = $start; $id <= $end; $id++ ) {
                        for ( $id = $start; $id <= $end; $id++ ) {
-       
+
                                if ( !( $id % $reportingInterval ) ) {
                                        $this->output( "$id\n" );
                                        wfWaitForSlaves( $maxLag );
                                if ( !( $id % $reportingInterval ) ) {
                                        $this->output( "$id\n" );
                                        wfWaitForSlaves( $maxLag );
@@ -144,7 +144,7 @@ class RefreshLinks extends Maintenance {
                                $this->output( "Starting from page_id $start of $end.\n" );
 
                                for ( $id = $start; $id <= $end; $id++ ) {
                                $this->output( "Starting from page_id $start of $end.\n" );
 
                                for ( $id = $start; $id <= $end; $id++ ) {
-       
+
                                        if ( !( $id % $reportingInterval ) ) {
                                                $this->output( "$id\n" );
                                                wfWaitForSlaves( $maxLag );
                                        if ( !( $id % $reportingInterval ) ) {
                                                $this->output( "$id\n" );
                                                wfWaitForSlaves( $maxLag );
@@ -161,10 +161,10 @@ class RefreshLinks extends Maintenance {
         */
        private function fixRedirect( $id ) {
                global $wgTitle, $wgArticle;
         */
        private function fixRedirect( $id ) {
                global $wgTitle, $wgArticle;
-       
+
                $wgTitle = Title::newFromID( $id );
                $dbw = wfGetDB( DB_MASTER );
                $wgTitle = Title::newFromID( $id );
                $dbw = wfGetDB( DB_MASTER );
-       
+
                if ( is_null( $wgTitle ) ) {
                        // This page doesn't exist (any more)
                        // Delete any redirect table entry for it
                if ( is_null( $wgTitle ) ) {
                        // This page doesn't exist (any more)
                        // Delete any redirect table entry for it
@@ -173,9 +173,9 @@ class RefreshLinks extends Maintenance {
                        return;
                }
                $wgArticle = new Article( $wgTitle );
                        return;
                }
                $wgArticle = new Article( $wgTitle );
-       
+
                $rt = $wgArticle->followRedirect();
                $rt = $wgArticle->followRedirect();
-       
+
                if ( !$rt || !is_object( $rt ) ) {
                        // $wgTitle is not a redirect
                        // Delete any redirect table entry for it
                if ( !$rt || !is_object( $rt ) ) {
                        // $wgTitle is not a redirect
                        // Delete any redirect table entry for it
index 1215a45..5be1b59 100644 (file)
@@ -35,7 +35,7 @@ class RemoveUnusedAccounts extends Maintenance {
        public function execute() {
 
                $this->output( "Remove unused accounts\n\n" );
        public function execute() {
 
                $this->output( "Remove unused accounts\n\n" );
-               
+
                # Do an initial scan for inactive accounts and report the result
                $this->output( "Checking for unused user accounts...\n" );
                $del = array();
                # Do an initial scan for inactive accounts and report the result
                $this->output( "Checking for unused user accounts...\n" );
                $del = array();
@@ -65,7 +65,7 @@ class RemoveUnusedAccounts extends Maintenance {
                }
                $count = count( $del );
                $this->output( "...found {$count}.\n" );
                }
                $count = count( $del );
                $this->output( "...found {$count}.\n" );
-       
+
                # If required, go back and delete each marked account
                if ( $count > 0 && $this->hasOption( 'delete' ) ) {
                        $this->output( "\nDeleting inactive accounts..." );
                # If required, go back and delete each marked account
                if ( $count > 0 && $this->hasOption( 'delete' ) ) {
                        $this->output( "\nDeleting inactive accounts..." );
@@ -80,7 +80,7 @@ class RemoveUnusedAccounts extends Maintenance {
                }
                $this->output( "\n" );
        }
                }
                $this->output( "\n" );
        }
-       
+
        /**
         * Could the specified user account be deemed inactive?
         * (No edits, no deleted edits, no log entries, no current/old uploads)
        /**
         * Could the specified user account be deemed inactive?
         * (No edits, no deleted edits, no log entries, no current/old uploads)
@@ -94,14 +94,14 @@ class RemoveUnusedAccounts extends Maintenance {
                $checks = array( 'revision' => 'rev', 'archive' => 'ar', 'logging' => 'log',
                                                 'image' => 'img', 'oldimage' => 'oi' );
                $count = 0;
                $checks = array( 'revision' => 'rev', 'archive' => 'ar', 'logging' => 'log',
                                                 'image' => 'img', 'oldimage' => 'oi' );
                $count = 0;
-       
+
                $dbo->begin();
                foreach ( $checks as $table => $fprefix ) {
                        $conds = array( $fprefix . '_user' => $id );
                        $count += (int)$dbo->selectField( $table, 'COUNT(*)', $conds, __METHOD__ );
                }
                $dbo->commit();
                $dbo->begin();
                foreach ( $checks as $table => $fprefix ) {
                        $conds = array( $fprefix . '_user' => $id );
                        $count += (int)$dbo->selectField( $table, 'COUNT(*)', $conds, __METHOD__ );
                }
                $dbo->commit();
-       
+
                return $count == 0;
        }
 }
                return $count == 0;
        }
 }
index b59e4e9..adeb540 100644 (file)
@@ -20,7 +20,7 @@
  *
  * @ingroup Maintenance
  */
  *
  * @ingroup Maintenance
  */
+
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class RenameDbPrefix extends Maintenance {
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class RenameDbPrefix extends Maintenance {
@@ -53,17 +53,17 @@ class RenameDbPrefix extends Maintenance {
                        preg_match( '/^[a-zA-Z]+_$/', $this->getOption( 'new' ), $m );
                        $new = isset( $m[0] ) ? $m[0] : false;
                }
                        preg_match( '/^[a-zA-Z]+_$/', $this->getOption( 'new' ), $m );
                        $new = isset( $m[0] ) ? $m[0] : false;
                }
-       
+
                if ( $old === false || $new === false ) {
                        $this->error( "Invalid prefix!", true );
                }
                if ( $old === $new ) {
                        $this->output( "Same prefix. Nothing to rename!\n", true );
                }
                if ( $old === false || $new === false ) {
                        $this->error( "Invalid prefix!", true );
                }
                if ( $old === $new ) {
                        $this->output( "Same prefix. Nothing to rename!\n", true );
                }
-       
+
                $this->output( "Renaming DB prefix for tables of $wgDBname from '$old' to '$new'\n" );
                $count = 0;
                $this->output( "Renaming DB prefix for tables of $wgDBname from '$old' to '$new'\n" );
                $count = 0;
-       
+
                $dbw = wfGetDB( DB_MASTER );
                $res = $dbw->query( "SHOW TABLES LIKE '" . $dbw->escapeLike( $old ) . "%'" );
                foreach ( $res as $row ) {
                $dbw = wfGetDB( DB_MASTER );
                $res = $dbw->query( "SHOW TABLES LIKE '" . $dbw->escapeLike( $old ) . "%'" );
                foreach ( $res as $row ) {
index 89c6341..3cd5099 100644 (file)
@@ -32,7 +32,7 @@ class RenameWiki extends Maintenance {
                $this->addArg( 'olddb', 'Old DB name' );
                $this->addArg( 'newdb', 'New DB name' );
        }
                $this->addArg( 'olddb', 'Old DB name' );
                $this->addArg( 'newdb', 'New DB name' );
        }
-       
+
        public function getDbType() {
                return Maintenance::DB_ADMIN;
        }
        public function getDbType() {
                return Maintenance::DB_ADMIN;
        }
@@ -64,13 +64,13 @@ class RenameWiki extends Maintenance {
                                if ( !preg_match( '!^DB://(.*)$!', $storeURL, $m ) ) {
                                        continue;
                                }
                                if ( !preg_match( '!^DB://(.*)$!', $storeURL, $m ) ) {
                                        continue;
                                }
-       
+
                                $cluster = $m[1];
                                $cluster = $m[1];
-       
+
                                # Hack
                                $wgExternalServers[$cluster][0]['user'] = $wgDBuser;
                                $wgExternalServers[$cluster][0]['password'] = $wgDBpassword;
                                # Hack
                                $wgExternalServers[$cluster][0]['user'] = $wgDBuser;
                                $wgExternalServers[$cluster][0]['password'] = $wgDBpassword;
-       
+
                                $store = new ExternalStoreDB;
                                $extdb =& $store->getMaster( $cluster );
                                $extdb->query( "SET table_type=InnoDB" );
                                $store = new ExternalStoreDB;
                                $extdb =& $store->getMaster( $cluster );
                                $extdb->query( "SET table_type=InnoDB" );
index 36e35c2..4eae473 100644 (file)
@@ -27,7 +27,7 @@
  * @file
  * @ingroup Maintenance
  */
  * @file
  * @ingroup Maintenance
  */
+
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class DumpRenderer extends Maintenance {
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class DumpRenderer extends Maintenance {
@@ -60,22 +60,22 @@ class DumpRenderer extends Maintenance {
                $importer->setRevisionCallback(
                        array( &$this, 'handleRevision' ) );
 
                $importer->setRevisionCallback(
                        array( &$this, 'handleRevision' ) );
 
-               $importer->doImport();          
-               
+               $importer->doImport();
+
                $delta = wfTime() - $this->startTime;
                $this->error( "Rendered {$this->count} pages in " . round($delta, 2) . " seconds " );
                if ($delta > 0)
                        $this->error( round($this->count / $delta, 2) . " pages/sec" );
                $this->error( "\n" );
        }
                $delta = wfTime() - $this->startTime;
                $this->error( "Rendered {$this->count} pages in " . round($delta, 2) . " seconds " );
                if ($delta > 0)
                        $this->error( round($this->count / $delta, 2) . " pages/sec" );
                $this->error( "\n" );
        }
-       
+
        /**
         * Callback function for each revision, turn into HTML and save
         * @param $rev Revision
         */
        public function handleRevision( $rev ) {
                global $wgParserConf;
        /**
         * Callback function for each revision, turn into HTML and save
         * @param $rev Revision
         */
        public function handleRevision( $rev ) {
                global $wgParserConf;
-               
+
                $title = $rev->getTitle();
                if ( !$title ) {
                        $this->error( "Got bogus revision with null title!" );
                $title = $rev->getTitle();
                if ( !$title ) {
                        $this->error( "Got bogus revision with null title!" );
index ab68e06..970b392 100644 (file)
@@ -35,7 +35,7 @@ class BatchedQueryRunner extends Maintenance {
        public function execute() {
                if ( !$this->hasArg() )
                        $this->error( "No query specified. Specify the query as a command line parameter.", true );
        public function execute() {
                if ( !$this->hasArg() )
                        $this->error( "No query specified. Specify the query as a command line parameter.", true );
-               
+
                $query = $this->getArg();
                $wait = $this->getOption( 'wait', 5 );
                $n = 1;
                $query = $this->getArg();
                $wait = $this->getOption( 'wait', 5 );
                $n = 1;
index 1e66377..1a2dc42 100644 (file)
@@ -23,7 +23,7 @@
  * @author Tim Starling
  * @author Ashar Voultoiz
  */
  * @author Tim Starling
  * @author Ashar Voultoiz
  */
+
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class ShowJobs extends Maintenance {
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class ShowJobs extends Maintenance {
index bc2745f..8daf507 100644 (file)
@@ -44,18 +44,18 @@ class ShowStats extends Maintenance {
                        'ss_admins' => 'Number of admins',
                        'ss_images' => 'Number of images',
                );
                        'ss_admins' => 'Number of admins',
                        'ss_images' => 'Number of images',
                );
-       
+
                // Get cached stats from slave database
                $dbr = wfGetDB( DB_SLAVE );
                $stats = $dbr->selectRow( 'site_stats', '*', '', __METHOD__ );
                // Get cached stats from slave database
                $dbr = wfGetDB( DB_SLAVE );
                $stats = $dbr->selectRow( 'site_stats', '*', '', __METHOD__ );
-       
+
                // Get maximum size for each column
                $max_length_value = $max_length_desc = 0;
                foreach ( $fields as $field => $desc ) {
                        $max_length_value = max( $max_length_value, strlen( $stats->$field ) );
                        $max_length_desc  = max( $max_length_desc , strlen( $desc ) ) ;
                }
                // Get maximum size for each column
                $max_length_value = $max_length_desc = 0;
                foreach ( $fields as $field => $desc ) {
                        $max_length_value = max( $max_length_value, strlen( $stats->$field ) );
                        $max_length_desc  = max( $max_length_desc , strlen( $desc ) ) ;
                }
-       
+
                // Show them
                foreach ( $fields as $field => $desc ) {
                        $this->output( sprintf( "%-{$max_length_desc}s: %{$max_length_value}d\n", $desc, $stats->$field ) );
                // Show them
                foreach ( $fields as $field => $desc ) {
                        $this->output( sprintf( "%-{$max_length_desc}s: %{$max_length_value}d\n", $desc, $stats->$field ) );
index 7249cc7..e601f88 100644 (file)
@@ -39,7 +39,7 @@ class MwSql extends Maintenance {
                        $promptObject = new SqlPromptPrinter( "> " );
                        $promptCallback = $promptObject->cb();
                }
                        $promptObject = new SqlPromptPrinter( "> " );
                        $promptCallback = $promptObject->cb();
                }
-       
+
                if ( !$file )
                        $this->error( "Unable to open input file", true );
 
                if ( !$file )
                        $this->error( "Unable to open input file", true );
 
@@ -69,7 +69,7 @@ class MwSql extends Maintenance {
                        $this->output( "Query OK, $affected row(s) affected\n" );
                }
        }
                        $this->output( "Query OK, $affected row(s) affected\n" );
                }
        }
-       
+
        public function getDbType() {
                return Maintenance::DB_ADMIN;
        }
        public function getDbType() {
                return Maintenance::DB_ADMIN;
        }
index c920104..238fe82 100644 (file)
@@ -1,5 +1,5 @@
 <?php
 <?php
+
 /**
  * This class contains code common to different SQLite-related maintenance scripts
  */
 /**
  * This class contains code common to different SQLite-related maintenance scripts
  */
@@ -17,7 +17,7 @@ class Sqlite {
        }
 
        /**
        }
 
        /**
-        * Checks given files for correctness of SQL syntax. MySQL DDL will be converted to 
+        * Checks given files for correctness of SQL syntax. MySQL DDL will be converted to
         * SQLite-compatible during processing.
         * Will throw exceptions on SQL errors
         * @return mixed true if no error or error string in case of errors
         * SQLite-compatible during processing.
         * Will throw exceptions on SQL errors
         * @return mixed true if no error or error string in case of errors
@@ -29,7 +29,7 @@ class Sqlite {
                if ( !is_array( $files ) ) {
                        $files = array( $files );
                }
                if ( !is_array( $files ) ) {
                        $files = array( $files );
                }
-               
+
                $allowedTypes = array_flip( array(
                        'integer',
                        'real',
                $allowedTypes = array_flip( array(
                        'integer',
                        'real',
index ef70d32..6a28328 100644 (file)
@@ -42,12 +42,12 @@ class SqliteMaintenance extends Maintenance {
 
        public function execute() {
                global $wgDBtype;
 
        public function execute() {
                global $wgDBtype;
-               
+
                // Should work even if we use a non-SQLite database
                if ( $this->hasOption( 'check-syntax' ) ) {
                        $this->checkSyntax();
                }
                // Should work even if we use a non-SQLite database
                if ( $this->hasOption( 'check-syntax' ) ) {
                        $this->checkSyntax();
                }
-               
+
                if ( $wgDBtype != 'sqlite' ) {
                        $this->error( "This maintenance script requires a SQLite database.\n" );
                        return;
                if ( $wgDBtype != 'sqlite' ) {
                        $this->error( "This maintenance script requires a SQLite database.\n" );
                        return;
@@ -124,7 +124,7 @@ class SqliteMaintenance extends Maintenance {
                if ( $result === true ) {
                        $this->output( "SQL syntax check: no errors detected.\n" );
                } else {
                if ( $result === true ) {
                        $this->output( "SQL syntax check: no errors detected.\n" );
                } else {
-                       $this->error( "Error: $result\n" ); 
+                       $this->error( "Error: $result\n" );
                }
        }
 }
                }
        }
 }
index e0b4e80..c288d68 100644 (file)
@@ -164,7 +164,7 @@ class CheckStorage {
 
                        // Check external concat blobs for the right header
                        $this->checkExternalConcatBlobs( $externalConcatBlobs );
 
                        // Check external concat blobs for the right header
                        $this->checkExternalConcatBlobs( $externalConcatBlobs );
-                       
+
                        // Check external normal blobs for existence
                        if ( count( $externalNormalBlobs ) ) {
                                if ( is_null( $this->dbStore ) ) {
                        // Check external normal blobs for existence
                        if ( count( $externalNormalBlobs ) ) {
                                if ( is_null( $this->dbStore ) ) {
@@ -346,7 +346,7 @@ class CheckStorage {
                if ( is_null( $this->dbStore ) ) {
                        $this->dbStore = new ExternalStoreDB;
                }
                if ( is_null( $this->dbStore ) ) {
                        $this->dbStore = new ExternalStoreDB;
                }
-               
+
                foreach ( $externalConcatBlobs as $cluster => $oldIds ) {
                        $blobIds = array_keys( $oldIds );
                        $extDb =& $this->dbStore->getSlave( $cluster );
                foreach ( $externalConcatBlobs as $cluster => $oldIds ) {
                        $blobIds = array_keys( $oldIds );
                        $extDb =& $this->dbStore->getSlave( $cluster );
@@ -383,7 +383,7 @@ class CheckStorage {
 
                $revFileName = "$wgTmpDirectory/broken-revlist-$wgDBname";
                $filteredXmlFileName = "$wgTmpDirectory/filtered-$wgDBname.xml";
 
                $revFileName = "$wgTmpDirectory/broken-revlist-$wgDBname";
                $filteredXmlFileName = "$wgTmpDirectory/filtered-$wgDBname.xml";
-               
+
                // Write revision list
                if ( !file_put_contents( $revFileName, implode( "\n", $revIds ) ) ) {
                        echo "Error writing revision list, can't restore text\n";
                // Write revision list
                if ( !file_put_contents( $revFileName, implode( "\n", $revIds ) ) ) {
                        echo "Error writing revision list, can't restore text\n";
@@ -416,7 +416,7 @@ class CheckStorage {
                $dbw = wfGetDB( DB_MASTER );
                $dbr->ping();
                $dbw->ping();
                $dbw = wfGetDB( DB_MASTER );
                $dbr->ping();
                $dbw->ping();
-               
+
                $source = new ImportStreamSource( $file );
                $importer = new WikiImporter( $source );
                $importer->setRevisionCallback( array( &$this, 'importRevision' ) );
                $source = new ImportStreamSource( $file );
                $importer = new WikiImporter( $source );
                $importer->setRevisionCallback( array( &$this, 'importRevision' ) );
@@ -429,8 +429,8 @@ class CheckStorage {
                $id = $revision->getID();
                $text = $revision->getText();
                if ( $text === '' ) {
                $id = $revision->getID();
                $text = $revision->getText();
                if ( $text === '' ) {
-                       // This is what happens if the revision was broken at the time the 
-                       // dump was made. Unfortunately, it also happens if the revision was 
+                       // This is what happens if the revision was broken at the time the
+                       // dump was made. Unfortunately, it also happens if the revision was
                        // legitimately blank, so there's no way to tell the difference. To
                        // be safe, we'll skip it and leave it broken
                        $id = $id ? $id : '';
                        // legitimately blank, so there's no way to tell the difference. To
                        // be safe, we'll skip it and leave it broken
                        $id = $id ? $id : '';
index 69964ff..93be5f7 100644 (file)
@@ -66,7 +66,7 @@ define( 'LS_INDIVIDUAL', 0 );
 define( 'LS_CHUNKED', 1 );
 
 /** @todo document */
 define( 'LS_CHUNKED', 1 );
 
 /** @todo document */
-function compressWithConcat( $startId, $maxChunkSize, $beginDate, 
+function compressWithConcat( $startId, $maxChunkSize, $beginDate,
        $endDate, $extdb="", $maxPageId = false )
 {
        $fname = 'compressWithConcat';
        $endDate, $extdb="", $maxPageId = false )
 {
        $fname = 'compressWithConcat';
@@ -93,12 +93,12 @@ function compressWithConcat( $startId, $maxChunkSize, $beginDate,
                $pageConds[] = 'page_namespace<>0';
        }
        if ( $queryExtra ) {
                $pageConds[] = 'page_namespace<>0';
        }
        if ( $queryExtra ) {
-                $pageConds[] = $queryExtra;
+                               $pageConds[] = $queryExtra;
        }
         */
 
        # For each article, get a list of revisions which fit the criteria
        }
         */
 
        # For each article, get a list of revisions which fit the criteria
-       
+
        # No recompression, use a condition on old_flags
        # Don't compress object type entities, because that might produce data loss when
        # overwriting bulk storage concat rows. Don't compress external references, because
        # No recompression, use a condition on old_flags
        # Don't compress object type entities, because that might produce data loss when
        # overwriting bulk storage concat rows. Don't compress external references, because
@@ -141,10 +141,10 @@ function compressWithConcat( $startId, $maxChunkSize, $beginDate,
                wfWaitForSlaves( 5 );
 
                # Wake up
                wfWaitForSlaves( 5 );
 
                # Wake up
-               $dbr->ping();           
+               $dbr->ping();
 
                # Get the page row
 
                # Get the page row
-               $pageRes = $dbr->select( 'page', 
+               $pageRes = $dbr->select( 'page',
                        array('page_id', 'page_namespace', 'page_title','page_latest'),
                        $pageConds + array('page_id' => $pageId), $fname );
                if ( $dbr->numRows( $pageRes ) == 0 ) {
                        array('page_id', 'page_namespace', 'page_title','page_latest'),
                        $pageConds + array('page_id' => $pageId), $fname );
                if ( $dbr->numRows( $pageRes ) == 0 ) {
@@ -158,10 +158,10 @@ function compressWithConcat( $startId, $maxChunkSize, $beginDate,
 
                # Load revisions
                $revRes = $dbw->select( $tables, $fields,
 
                # Load revisions
                $revRes = $dbw->select( $tables, $fields,
-                       array_merge( array( 
-                               'rev_page' => $pageRow->page_id, 
+                       array_merge( array(
+                               'rev_page' => $pageRow->page_id,
                                # Don't operate on the current revision
                                # Don't operate on the current revision
-                               # Use < instead of <> in case the current revision has changed 
+                               # Use < instead of <> in case the current revision has changed
                                # since the page select, which wasn't locking
                                'rev_id < ' . $pageRow->page_latest
                        ), $conds ),
                                # since the page select, which wasn't locking
                                'rev_id < ' . $pageRow->page_latest
                        ), $conds ),
index b91799e..bc05b34 100644 (file)
@@ -39,9 +39,9 @@ $defaults = array(
        'c' => 20,
        's' => 0,
        'b' => '',
        'c' => 20,
        's' => 0,
        'b' => '',
-    'e' => '',
-    'extdb' => '',
-    'endid' => false,
+       'e' => '',
+       'extdb' => '',
+       'endid' => false,
 );
 
 $options = $options + $defaults;
 );
 
 $options = $options + $defaults;
@@ -58,8 +58,8 @@ if ( $options['extdb'] != '' ) {
 
 $success = true;
 if ( $options['t'] == 'concat' ) {
 
 $success = true;
 if ( $options['t'] == 'concat' ) {
-    $success = compressWithConcat( $options['s'], $options['c'], $options['b'],
-        $options['e'], $options['extdb'], $options['endid'] );
+       $success = compressWithConcat( $options['s'], $options['c'], $options['b'],
+               $options['e'], $options['extdb'], $options['endid'] );
 } else {
        compressOldPages( $options['s'], $options['extdb'] );
 }
 } else {
        compressOldPages( $options['s'], $options['extdb'] );
 }
index c47ac5b..db460b2 100644 (file)
@@ -36,7 +36,7 @@ class DumpRev extends Maintenance {
                if ( !$row ) {
                        $this->error( "Row not found", true );
                }
                if ( !$row ) {
                        $this->error( "Row not found", true );
                }
-       
+
                $flags = explode( ',',  $row->old_flags );
                $text = $row->old_text;
                if ( in_array( 'external', $flags ) ) {
                $flags = explode( ',',  $row->old_flags );
                $text = $row->old_text;
                if ( in_array( 'external', $flags ) ) {
@@ -65,7 +65,7 @@ class DumpRev extends Maintenance {
                        $obj = unserialize( $text );
                        $text = $obj->getText();
                }
                        $obj = unserialize( $text );
                        $text = $obj->getText();
                }
-       
+
                if ( is_object( $text ) ) {
                        $this->error( "Unexpectedly got object of type: " . get_class( $text ) );
                } else {
                if ( is_object( $text ) ) {
                        $this->error( "Unexpectedly got object of type: " . get_class( $text ) );
                } else {
index 73c21d5..f820528 100644 (file)
@@ -14,7 +14,7 @@ class FixBug20757 extends Maintenance {
                $this->addOption( 'dry-run', 'Report only' );
                $this->addOption( 'start', 'old_id to start at', false, true );
        }
                $this->addOption( 'dry-run', 'Report only' );
                $this->addOption( 'start', 'old_id to start at', false, true );
        }
-       
+
        function execute() {
                $dbr = wfGetDB( DB_SLAVE );
                $dbw = wfGetDB( DB_MASTER );
        function execute() {
                $dbr = wfGetDB( DB_SLAVE );
                $dbw = wfGetDB( DB_MASTER );
@@ -144,7 +144,7 @@ class FixBug20757 extends Maintenance {
                                                print "$primaryId: unrecoverable: secondary row is missing\n";
                                                ++$numBad;
                                        } elseif ( $this->isUnbrokenStub( $stub, $secondaryRow ) ) {
                                                print "$primaryId: unrecoverable: secondary row is missing\n";
                                                ++$numBad;
                                        } elseif ( $this->isUnbrokenStub( $stub, $secondaryRow ) ) {
-                                               // Not broken yet, and not in the tracked clusters so it won't get 
+                                               // Not broken yet, and not in the tracked clusters so it won't get
                                                // broken by the current RCT run.
                                                ++$numGood;
                                        } elseif ( strpos( $secondaryRow->old_flags, 'external' ) !== false ) {
                                                // broken by the current RCT run.
                                                ++$numGood;
                                        } elseif ( strpos( $secondaryRow->old_flags, 'external' ) !== false ) {
@@ -205,7 +205,7 @@ class FixBug20757 extends Maintenance {
                                                __METHOD__
                                        );
 
                                                __METHOD__
                                        );
 
-                                       // Add a blob_tracking row so that the new reference can be recompressed 
+                                       // Add a blob_tracking row so that the new reference can be recompressed
                                        // without needing to run trackBlobs.php again
                                        $dbw->insert( 'blob_tracking',
                                                array(
                                        // without needing to run trackBlobs.php again
                                        $dbw->insert( 'blob_tracking',
                                                array(
index 80d8646..928cbf9 100644 (file)
@@ -48,12 +48,12 @@ function moveToExternal( $cluster, $maxID, $minID = 1 ) {
        for ( $block = 0; $block < $numBlocks; $block++ ) {
                $blockStart = $block * $blockSize + $minID;
                $blockEnd = $blockStart + $blockSize - 1;
        for ( $block = 0; $block < $numBlocks; $block++ ) {
                $blockStart = $block * $blockSize + $minID;
                $blockEnd = $blockStart + $blockSize - 1;
-               
+
                if ( !( $block % REPORTING_INTERVAL ) ) {
                        print "oldid=$blockStart, moved=$numMoved\n";
                        wfWaitForSlaves( 2 );
                }
                if ( !( $block % REPORTING_INTERVAL ) ) {
                        print "oldid=$blockStart, moved=$numMoved\n";
                        wfWaitForSlaves( 2 );
                }
-               
+
                $res = $dbr->select( 'text', array( 'old_id', 'old_flags', 'old_text' ),
                        array(
                                "old_id BETWEEN $blockStart AND $blockEnd",
                $res = $dbr->select( 'text', array( 'old_id', 'old_flags', 'old_text' ),
                        array(
                                "old_id BETWEEN $blockStart AND $blockEnd",
@@ -68,7 +68,7 @@ function moveToExternal( $cluster, $maxID, $minID = 1 ) {
                        } else {
                                $flags = "{$row->old_flags},external";
                        }
                        } else {
                                $flags = "{$row->old_flags},external";
                        }
-                       
+
                        if ( strpos( $flags, 'object' ) !== false ) {
                                $obj = unserialize( $text );
                                $className = strtolower( get_class( $obj ) );
                        if ( strpos( $flags, 'object' ) !== false ) {
                                $obj = unserialize( $text );
                                $className = strtolower( get_class( $obj ) );
index e371dbc..55677e8 100644 (file)
@@ -39,7 +39,7 @@ class OrphanStats extends Maintenance {
                        $this->error( "blob_orphans doesn't seem to exist, need to run trackBlobs.php first", true );
                }
                $res = $dbr->select( 'blob_orphans', '*', false, __METHOD__ );
                        $this->error( "blob_orphans doesn't seem to exist, need to run trackBlobs.php first", true );
                }
                $res = $dbr->select( 'blob_orphans', '*', false, __METHOD__ );
-               
+
                $num = 0;
                $totalSize = 0;
                $hashes = array();
                $num = 0;
                $totalSize = 0;
                $hashes = array();
@@ -48,7 +48,7 @@ class OrphanStats extends Maintenance {
                foreach ( $res as $boRow ) {
                        $extDB = $this->getDB( $boRow->bo_cluster );
                        $blobRow = $extDB->selectRow( 'blobs', '*', array( 'blob_id' => $boRow->bo_blob_id ), __METHOD__ );
                foreach ( $res as $boRow ) {
                        $extDB = $this->getDB( $boRow->bo_cluster );
                        $blobRow = $extDB->selectRow( 'blobs', '*', array( 'blob_id' => $boRow->bo_blob_id ), __METHOD__ );
-                       
+
                        $num++;
                        $size = strlen( $blobRow->blob_text );
                        $totalSize += $size;
                        $num++;
                        $size = strlen( $blobRow->blob_text );
                        $totalSize += $size;
index 575a148..db53b25 100644 (file)
@@ -7,8 +7,8 @@ if ( count( $args ) < 1 ) {
        echo "Usage: php recompressTracked.php [options] <cluster> [... <cluster>...]
 Moves blobs indexed by trackBlobs.php to a specified list of destination clusters, and recompresses them in the process. Restartable.
 
        echo "Usage: php recompressTracked.php [options] <cluster> [... <cluster>...]
 Moves blobs indexed by trackBlobs.php to a specified list of destination clusters, and recompresses them in the process. Restartable.
 
-Options: 
-    --procs <procs>         Set the number of child processes (default 1)
+Options:
+       --procs <procs>         Set the number of child processes (default 1)
        --copy-only             Copy only, do not update the text table. Restart without this option to complete.
        --debug-log <file>      Log debugging data to the specified file
        --info-log <file>       Log progress messages to the specified file
        --copy-only             Copy only, do not update the text table. Restart without this option to complete.
        --debug-log <file>      Log debugging data to the specified file
        --info-log <file>       Log progress messages to the specified file
@@ -109,8 +109,8 @@ class RecompressTracked {
 
        /**
         * Wait until the selected slave has caught up to the master.
 
        /**
         * Wait until the selected slave has caught up to the master.
-        * This allows us to use the slave for things that were committed in a 
-        * previous part of this batch process. 
+        * This allows us to use the slave for things that were committed in a
+        * previous part of this batch process.
         */
        function syncDBs() {
                $dbw = wfGetDB( DB_MASTER );
         */
        function syncDBs() {
                $dbw = wfGetDB( DB_MASTER );
@@ -496,7 +496,7 @@ class RecompressTracked {
         *
         * This is done in a single transaction to provide restartable behaviour
         * without data loss.
         *
         * This is done in a single transaction to provide restartable behaviour
         * without data loss.
-        * 
+        *
         * The transaction is kept short to reduce locking.
         */
        function moveTextRow( $textId, $url ) {
         * The transaction is kept short to reduce locking.
         */
        function moveTextRow( $textId, $url ) {
@@ -592,7 +592,7 @@ class RecompressTracked {
                        $this->finishIncompleteMoves( array( 'bt_text_id' => $textIds ) );
                        $this->syncDBs();
                }
                        $this->finishIncompleteMoves( array( 'bt_text_id' => $textIds ) );
                        $this->syncDBs();
                }
-               
+
                $trx = new CgzCopyTransaction( $this, $this->orphanBlobClass );
 
                $res = wfGetDB( DB_SLAVE )->select(
                $trx = new CgzCopyTransaction( $this, $this->orphanBlobClass );
 
                $res = wfGetDB( DB_SLAVE )->select(
@@ -613,7 +613,7 @@ class RecompressTracked {
                                $this->critical( "Error: cannot load revision text for old_id=$textId" );
                                continue;
                        }
                                $this->critical( "Error: cannot load revision text for old_id=$textId" );
                                continue;
                        }
-                       
+
                        if ( !$trx->addItem( $text, $row->old_id ) ) {
                                $this->debug( "[orphan]: committing blob with " . $trx->getSize() . " rows" );
                                $trx->commit();
                        if ( !$trx->addItem( $text, $row->old_id ) ) {
                                $this->debug( "[orphan]: committing blob with " . $trx->getSize() . " rows" );
                                $trx->commit();
@@ -625,7 +625,7 @@ class RecompressTracked {
                $trx->commit();
        }
 
                $trx->commit();
        }
 
-       /** 
+       /**
         * Wait for slaves (quietly)
         */
        function waitForSlaves() {
         * Wait for slaves (quietly)
         */
        function waitForSlaves() {
@@ -704,8 +704,8 @@ class CgzCopyTransaction {
 
                // Check to see if the target text_ids have been moved already.
                //
 
                // Check to see if the target text_ids have been moved already.
                //
-               // We originally read from the slave, so this can happen when a single 
-               // text_id is shared between multiple pages. It's rare, but possible 
+               // We originally read from the slave, so this can happen when a single
+               // text_id is shared between multiple pages. It's rare, but possible
                // if a delete/move/undelete cycle splits up a null edit.
                //
                // We do a locking read to prevent closer-run race conditions.
                // if a delete/move/undelete cycle splits up a null edit.
                //
                // We do a locking read to prevent closer-run race conditions.
index cd8ef34..2269e37 100644 (file)
@@ -28,11 +28,11 @@ function resolveStubs() {
 
        for ( $b = 0; $b < $numBlocks; $b++ ) {
                wfWaitForSlaves( 2 );
 
        for ( $b = 0; $b < $numBlocks; $b++ ) {
                wfWaitForSlaves( 2 );
-               
+
                printf( "%5.2f%%\n", $b / $numBlocks * 100 );
                $start = intval( $maxID / $numBlocks ) * $b + 1;
                $end = intval( $maxID / $numBlocks ) * ( $b + 1 );
                printf( "%5.2f%%\n", $b / $numBlocks * 100 );
                $start = intval( $maxID / $numBlocks ) * $b + 1;
                $end = intval( $maxID / $numBlocks ) * ( $b + 1 );
-               
+
                $res = $dbr->select( 'text', array( 'old_id', 'old_text', 'old_flags' ),
                        "old_id>=$start AND old_id<=$end " .
                        "AND old_flags LIKE '%object%' AND old_flags NOT LIKE '%external%' " .
                $res = $dbr->select( 'text', array( 'old_id', 'old_text', 'old_flags' ),
                        "old_id>=$start AND old_id<=$end " .
                        "AND old_flags LIKE '%object%' AND old_flags NOT LIKE '%external%' " .
@@ -40,7 +40,7 @@ function resolveStubs() {
                        $fname );
                foreach ( $res as $row ) {
                        resolveStub( $row->old_id, $row->old_text, $row->old_flags );
                        $fname );
                foreach ( $res as $row ) {
                        resolveStub( $row->old_id, $row->old_text, $row->old_flags );
-               }               
+               }
        }
        print "100%\n";
 }
        }
        print "100%\n";
 }
index 9b43dbe..15aeec3 100644 (file)
@@ -55,7 +55,7 @@ class TrackBlobs {
                        'AND LOWER(CONVERT(LEFT(old_text,22) USING latin1)) = \'o:15:"historyblobstub"\'',
                        __METHOD__
                );
                        'AND LOWER(CONVERT(LEFT(old_text,22) USING latin1)) = \'o:15:"historyblobstub"\'',
                        __METHOD__
                );
-               
+
                if ( $exists ) {
                        echo "Integrity check failed: found HistoryBlobStub objects in your text table.\n" .
                                "This script could destroy these objects if it continued. Run resolveStubs.php\n" .
                if ( $exists ) {
                        echo "Integrity check failed: found HistoryBlobStub objects in your text table.\n" .
                                "This script could destroy these objects if it continued. Run resolveStubs.php\n" .
@@ -343,7 +343,7 @@ class TrackBlobs {
                        // Find actual blobs that weren't tracked by the previous passes
                        // This is a set-theoretic difference A \ B, or in bitwise terms, A & ~B
                        $orphans = gmp_and( $actualBlobs, gmp_com( $this->trackedBlobs[$cluster] ) );
                        // Find actual blobs that weren't tracked by the previous passes
                        // This is a set-theoretic difference A \ B, or in bitwise terms, A & ~B
                        $orphans = gmp_and( $actualBlobs, gmp_com( $this->trackedBlobs[$cluster] ) );
-                       
+
                        // Traverse the orphan list
                        $insertBatch = array();
                        $id = 0;
                        // Traverse the orphan list
                        $insertBatch = array();
                        $id = 0;
index 6a8dbf1..43672ea 100644 (file)
 --
 CREATE TABLE /*_*/user (
   user_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
 --
 CREATE TABLE /*_*/user (
   user_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
-  
+
   -- Usernames must be unique, must not be in the form of
   -- an IP address. _Shouldn't_ allow slashes or case
   -- conflicts. Spaces are allowed, and are _not_ converted
   -- to underscores like titles. See the User::newFromName() for
   -- the specific tests that usernames have to pass.
   user_name varchar(255) binary NOT NULL default '',
   -- Usernames must be unique, must not be in the form of
   -- an IP address. _Shouldn't_ allow slashes or case
   -- conflicts. Spaces are allowed, and are _not_ converted
   -- to underscores like titles. See the User::newFromName() for
   -- the specific tests that usernames have to pass.
   user_name varchar(255) binary NOT NULL default '',
-  
+
   -- Optional 'real name' to be displayed in credit listings
   user_real_name varchar(255) binary NOT NULL default '',
   -- Optional 'real name' to be displayed in credit listings
   user_real_name varchar(255) binary NOT NULL default '',
-  
+
   -- Password hashes, see User::crypt() and User::comparePasswords()
   -- in User.php for the algorithm
   user_password tinyblob NOT NULL,
   -- Password hashes, see User::crypt() and User::comparePasswords()
   -- in User.php for the algorithm
   user_password tinyblob NOT NULL,
-  
+
   -- When using 'mail me a new password', a random
   -- password is generated and the hash stored here.
   -- The previous password is left in place until
   -- When using 'mail me a new password', a random
   -- password is generated and the hash stored here.
   -- The previous password is left in place until
@@ -74,7 +74,7 @@ CREATE TABLE /*_*/user (
   -- at which point the hash is moved to user_password
   -- and the old password is invalidated.
   user_newpassword tinyblob NOT NULL,
   -- at which point the hash is moved to user_password
   -- and the old password is invalidated.
   user_newpassword tinyblob NOT NULL,
-  
+
   -- Timestamp of the last time when a new password was
   -- sent, for throttling purposes
   user_newpass_time binary(14),
   -- Timestamp of the last time when a new password was
   -- sent, for throttling purposes
   user_newpass_time binary(14),
@@ -82,41 +82,41 @@ CREATE TABLE /*_*/user (
   -- Note: email should be restricted, not public info.
   -- Same with passwords.
   user_email tinytext NOT NULL,
   -- Note: email should be restricted, not public info.
   -- Same with passwords.
   user_email tinytext NOT NULL,
-  
+
   -- Newline-separated list of name=value defining the user
   -- preferences
   -- Now obsolete in favour of user_properties table;
   -- old values will be migrated from here transparently.
   user_options blob NOT NULL,
   -- Newline-separated list of name=value defining the user
   -- preferences
   -- Now obsolete in favour of user_properties table;
   -- old values will be migrated from here transparently.
   user_options blob NOT NULL,
-  
+
   -- This is a timestamp which is updated when a user
   -- logs in, logs out, changes preferences, or performs
   -- some other action requiring HTML cache invalidation
   -- to ensure that the UI is updated.
   user_touched binary(14) NOT NULL default '',
   -- This is a timestamp which is updated when a user
   -- logs in, logs out, changes preferences, or performs
   -- some other action requiring HTML cache invalidation
   -- to ensure that the UI is updated.
   user_touched binary(14) NOT NULL default '',
-  
+
   -- A pseudorandomly generated value that is stored in
   -- a cookie when the "remember password" feature is
   -- used (previously, a hash of the password was used, but
   -- this was vulnerable to cookie-stealing attacks)
   user_token binary(32) NOT NULL default '',
   -- A pseudorandomly generated value that is stored in
   -- a cookie when the "remember password" feature is
   -- used (previously, a hash of the password was used, but
   -- this was vulnerable to cookie-stealing attacks)
   user_token binary(32) NOT NULL default '',
-  
+
   -- Initially NULL; when a user's e-mail address has been
   -- validated by returning with a mailed token, this is
   -- set to the current timestamp.
   user_email_authenticated binary(14),
   -- Initially NULL; when a user's e-mail address has been
   -- validated by returning with a mailed token, this is
   -- set to the current timestamp.
   user_email_authenticated binary(14),
-  
+
   -- Randomly generated token created when the e-mail address
   -- is set and a confirmation test mail sent.
   user_email_token binary(32),
   -- Randomly generated token created when the e-mail address
   -- is set and a confirmation test mail sent.
   user_email_token binary(32),
-  
+
   -- Expiration date for the user_email_token
   user_email_token_expires binary(14),
   -- Expiration date for the user_email_token
   user_email_token_expires binary(14),
-  
+
   -- Timestamp of account registration.
   -- Accounts predating this schema addition may contain NULL.
   user_registration binary(14),
   -- Timestamp of account registration.
   -- Accounts predating this schema addition may contain NULL.
   user_registration binary(14),
-  
+
   -- Count of edits and edit-like actions.
   --
   -- *NOT* intended to be an accurate copy of COUNT(*) WHERE rev_user=user_id
   -- Count of edits and edit-like actions.
   --
   -- *NOT* intended to be an accurate copy of COUNT(*) WHERE rev_user=user_id
@@ -145,7 +145,7 @@ CREATE INDEX /*i*/user_email_token ON /*_*/user (user_email_token);
 CREATE TABLE /*_*/user_groups (
   -- Key to user_id
   ug_user int unsigned NOT NULL default 0,
 CREATE TABLE /*_*/user_groups (
   -- Key to user_id
   ug_user int unsigned NOT NULL default 0,
-  
+
   -- Group names are short symbolic string keys.
   -- The set of group names is open-ended, though in practice
   -- only some predefined ones are likely to be used.
   -- Group names are short symbolic string keys.
   -- The set of group names is open-ended, though in practice
   -- only some predefined ones are likely to be used.
@@ -193,10 +193,10 @@ CREATE INDEX /*i*/un_user_ip ON /*_*/user_newtalk (user_ip);
 CREATE TABLE /*_*/user_properties (
   -- Foreign key to user.user_id
   up_user int NOT NULL,
 CREATE TABLE /*_*/user_properties (
   -- Foreign key to user.user_id
   up_user int NOT NULL,
-  
+
   -- Name of the option being saved. This is indexed for bulk lookup.
   up_property varbinary(32) NOT NULL,
   -- Name of the option being saved. This is indexed for bulk lookup.
   up_property varbinary(32) NOT NULL,
-  
+
   -- Property value as a string.
   up_value blob
 ) /*$wgDBTableOptions*/;
   -- Property value as a string.
   up_value blob
 ) /*$wgDBTableOptions*/;
@@ -212,33 +212,33 @@ CREATE TABLE /*_*/page (
   -- Unique identifier number. The page_id will be preserved across
   -- edits and rename operations, but not deletions and recreations.
   page_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
   -- Unique identifier number. The page_id will be preserved across
   -- edits and rename operations, but not deletions and recreations.
   page_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
-  
+
   -- A page name is broken into a namespace and a title.
   -- The namespace keys are UI-language-independent constants,
   -- defined in includes/Defines.php
   page_namespace int NOT NULL,
   -- A page name is broken into a namespace and a title.
   -- The namespace keys are UI-language-independent constants,
   -- defined in includes/Defines.php
   page_namespace int NOT NULL,
-  
+
   -- The rest of the title, as text.
   -- Spaces are transformed into underscores in title storage.
   page_title varchar(255) binary NOT NULL,
   -- The rest of the title, as text.
   -- Spaces are transformed into underscores in title storage.
   page_title varchar(255) binary NOT NULL,
-  
+
   -- Comma-separated set of permission keys indicating who
   -- can move or edit the page.
   page_restrictions tinyblob NOT NULL,
   -- Comma-separated set of permission keys indicating who
   -- can move or edit the page.
   page_restrictions tinyblob NOT NULL,
-  
+
   -- Number of times this page has been viewed.
   page_counter bigint unsigned NOT NULL default 0,
   -- Number of times this page has been viewed.
   page_counter bigint unsigned NOT NULL default 0,
-  
+
   -- 1 indicates the article is a redirect.
   page_is_redirect tinyint unsigned NOT NULL default 0,
   -- 1 indicates the article is a redirect.
   page_is_redirect tinyint unsigned NOT NULL default 0,
-  
+
   -- 1 indicates this is a new entry, with only one edit.
   -- Not all pages with one edit are new pages.
   page_is_new tinyint unsigned NOT NULL default 0,
   -- 1 indicates this is a new entry, with only one edit.
   -- Not all pages with one edit are new pages.
   page_is_new tinyint unsigned NOT NULL default 0,
-  
+
   -- Random value between 0 and 1, used for Special:Randompage
   page_random real unsigned NOT NULL,
   -- Random value between 0 and 1, used for Special:Randompage
   page_random real unsigned NOT NULL,
-  
+
   -- This timestamp is updated whenever the page changes in
   -- a way requiring it to be re-rendered, invalidating caches.
   -- Aside from editing this includes permission changes,
   -- This timestamp is updated whenever the page changes in
   -- a way requiring it to be re-rendered, invalidating caches.
   -- Aside from editing this includes permission changes,
@@ -250,7 +250,7 @@ CREATE TABLE /*_*/page (
   -- This may be 0 during page creation, but that shouldn't
   -- happen outside of a transaction... hopefully.
   page_latest int unsigned NOT NULL,
   -- This may be 0 during page creation, but that shouldn't
   -- happen outside of a transaction... hopefully.
   page_latest int unsigned NOT NULL,
-  
+
   -- Uncompressed length in bytes of the page's current source text.
   page_len int unsigned NOT NULL
 ) /*$wgDBTableOptions*/;
   -- Uncompressed length in bytes of the page's current source text.
   page_len int unsigned NOT NULL
 ) /*$wgDBTableOptions*/;
@@ -267,38 +267,38 @@ CREATE INDEX /*i*/page_len ON /*_*/page (page_len);
 --
 CREATE TABLE /*_*/revision (
   rev_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
 --
 CREATE TABLE /*_*/revision (
   rev_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
-  
+
   -- Key to page_id. This should _never_ be invalid.
   rev_page int unsigned NOT NULL,
   -- Key to page_id. This should _never_ be invalid.
   rev_page int unsigned NOT NULL,
-  
+
   -- Key to text.old_id, where the actual bulk text is stored.
   -- It's possible for multiple revisions to use the same text,
   -- for instance revisions where only metadata is altered
   -- or a rollback to a previous version.
   rev_text_id int unsigned NOT NULL,
   -- Key to text.old_id, where the actual bulk text is stored.
   -- It's possible for multiple revisions to use the same text,
   -- for instance revisions where only metadata is altered
   -- or a rollback to a previous version.
   rev_text_id int unsigned NOT NULL,
-  
+
   -- Text comment summarizing the change.
   -- This text is shown in the history and other changes lists,
   -- rendered in a subset of wiki markup by Linker::formatComment()
   rev_comment tinyblob NOT NULL,
   -- Text comment summarizing the change.
   -- This text is shown in the history and other changes lists,
   -- rendered in a subset of wiki markup by Linker::formatComment()
   rev_comment tinyblob NOT NULL,
-  
+
   -- Key to user.user_id of the user who made this edit.
   -- Stores 0 for anonymous edits and for some mass imports.
   rev_user int unsigned NOT NULL default 0,
   -- Key to user.user_id of the user who made this edit.
   -- Stores 0 for anonymous edits and for some mass imports.
   rev_user int unsigned NOT NULL default 0,
-  
+
   -- Text username or IP address of the editor.
   rev_user_text varchar(255) binary NOT NULL default '',
   -- Text username or IP address of the editor.
   rev_user_text varchar(255) binary NOT NULL default '',
-  
+
   -- Timestamp
   rev_timestamp binary(14) NOT NULL default '',
   -- Timestamp
   rev_timestamp binary(14) NOT NULL default '',
-  
+
   -- Records whether the user marked the 'minor edit' checkbox.
   -- Many automated edits are marked as minor.
   rev_minor_edit tinyint unsigned NOT NULL default 0,
   -- Records whether the user marked the 'minor edit' checkbox.
   -- Many automated edits are marked as minor.
   rev_minor_edit tinyint unsigned NOT NULL default 0,
-  
+
   -- Not yet used; reserved for future changes to the deletion system.
   rev_deleted tinyint unsigned NOT NULL default 0,
   -- Not yet used; reserved for future changes to the deletion system.
   rev_deleted tinyint unsigned NOT NULL default 0,
-  
+
   -- Length of this revision in bytes
   rev_len int unsigned,
 
   -- Length of this revision in bytes
   rev_len int unsigned,
 
@@ -330,11 +330,11 @@ CREATE TABLE /*_*/text (
   --
   -- revision.rev_text_id is a key to this column
   old_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
   --
   -- revision.rev_text_id is a key to this column
   old_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
-  
+
   -- Depending on the contents of the old_flags field, the text
   -- may be convenient plain text, or it may be funkily encoded.
   old_text mediumblob NOT NULL,
   -- Depending on the contents of the old_flags field, the text
   -- may be convenient plain text, or it may be funkily encoded.
   old_text mediumblob NOT NULL,
-  
+
   -- Comma-separated list of flags:
   -- gzip: text is compressed with PHP's gzdeflate() function.
   -- utf8: text was stored as UTF-8.
   -- Comma-separated list of flags:
   -- gzip: text is compressed with PHP's gzdeflate() function.
   -- utf8: text was stored as UTF-8.
@@ -358,7 +358,7 @@ CREATE TABLE /*_*/text (
 CREATE TABLE /*_*/archive (
   ar_namespace int NOT NULL default 0,
   ar_title varchar(255) binary NOT NULL default '',
 CREATE TABLE /*_*/archive (
   ar_namespace int NOT NULL default 0,
   ar_title varchar(255) binary NOT NULL default '',
-  
+
   -- Newly deleted pages will not store text in this table,
   -- but will reference the separately existing text rows.
   -- This field is retained for backwards compatibility,
   -- Newly deleted pages will not store text in this table,
   -- but will reference the separately existing text rows.
   -- This field is retained for backwards compatibility,
@@ -366,26 +366,26 @@ CREATE TABLE /*_*/archive (
   -- upgrading from 1.4 to 1.5.
   -- Text may be gzipped or otherwise funky.
   ar_text mediumblob NOT NULL,
   -- upgrading from 1.4 to 1.5.
   -- Text may be gzipped or otherwise funky.
   ar_text mediumblob NOT NULL,
-  
+
   -- Basic revision stuff...
   ar_comment tinyblob NOT NULL,
   ar_user int unsigned NOT NULL default 0,
   ar_user_text varchar(255) binary NOT NULL,
   ar_timestamp binary(14) NOT NULL default '',
   ar_minor_edit tinyint NOT NULL default 0,
   -- Basic revision stuff...
   ar_comment tinyblob NOT NULL,
   ar_user int unsigned NOT NULL default 0,
   ar_user_text varchar(255) binary NOT NULL,
   ar_timestamp binary(14) NOT NULL default '',
   ar_minor_edit tinyint NOT NULL default 0,
-  
+
   -- See ar_text note.
   ar_flags tinyblob NOT NULL,
   -- See ar_text note.
   ar_flags tinyblob NOT NULL,
-  
+
   -- When revisions are deleted, their unique rev_id is stored
   -- here so it can be retained after undeletion. This is necessary
   -- to retain permalinks to given revisions after accidental delete
   -- cycles or messy operations like history merges.
   -- When revisions are deleted, their unique rev_id is stored
   -- here so it can be retained after undeletion. This is necessary
   -- to retain permalinks to given revisions after accidental delete
   -- cycles or messy operations like history merges.
-  -- 
+  --
   -- Old entries from 1.4 will be NULL here, and a new rev_id will
   -- be created on undeletion for those revisions.
   ar_rev_id int unsigned,
   -- Old entries from 1.4 will be NULL here, and a new rev_id will
   -- be created on undeletion for those revisions.
   ar_rev_id int unsigned,
-  
+
   -- For newly deleted revisions, this is the text.old_id key to the
   -- actual stored text. To avoid breaking the block-compression scheme
   -- and otherwise making storage changes harder, the actual text is
   -- For newly deleted revisions, this is the text.old_id key to the
   -- actual stored text. To avoid breaking the block-compression scheme
   -- and otherwise making storage changes harder, the actual text is
@@ -403,13 +403,13 @@ CREATE TABLE /*_*/archive (
   -- Length of this revision in bytes
   ar_len int unsigned,
 
   -- Length of this revision in bytes
   ar_len int unsigned,
 
-  -- Reference to page_id. Useful for sysadmin fixing of large pages 
+  -- Reference to page_id. Useful for sysadmin fixing of large pages
   -- merged together in the archives, or for cleanly restoring a page
   -- at its original ID number if possible.
   --
   -- Will be NULL for pages deleted prior to 1.11.
   ar_page_id int unsigned,
   -- merged together in the archives, or for cleanly restoring a page
   -- at its original ID number if possible.
   --
   -- Will be NULL for pages deleted prior to 1.11.
   ar_page_id int unsigned,
-  
+
   -- Original previous revision
   ar_parent_id int unsigned default NULL
 ) /*$wgDBTableOptions*/;
   -- Original previous revision
   ar_parent_id int unsigned default NULL
 ) /*$wgDBTableOptions*/;
@@ -425,7 +425,7 @@ CREATE INDEX /*i*/ar_page_revid ON /*_*/archive (ar_namespace, ar_title, ar_rev_
 CREATE TABLE /*_*/pagelinks (
   -- Key to the page_id of the page containing the link.
   pl_from int unsigned NOT NULL default 0,
 CREATE TABLE /*_*/pagelinks (
   -- Key to the page_id of the page containing the link.
   pl_from int unsigned NOT NULL default 0,
-  
+
   -- Key to page_namespace/page_title of the target page.
   -- The target page may or may not exist, and due to renames
   -- and deletions may refer to different page records as time
   -- Key to page_namespace/page_title of the target page.
   -- The target page may or may not exist, and due to renames
   -- and deletions may refer to different page records as time
@@ -444,7 +444,7 @@ CREATE UNIQUE INDEX /*i*/pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,p
 CREATE TABLE /*_*/templatelinks (
   -- Key to the page_id of the page containing the link.
   tl_from int unsigned NOT NULL default 0,
 CREATE TABLE /*_*/templatelinks (
   -- Key to the page_id of the page containing the link.
   tl_from int unsigned NOT NULL default 0,
-  
+
   -- Key to page_namespace/page_title of the target page.
   -- The target page may or may not exist, and due to renames
   -- and deletions may refer to different page records as time
   -- Key to page_namespace/page_title of the target page.
   -- The target page may or may not exist, and due to renames
   -- and deletions may refer to different page records as time
@@ -465,7 +465,7 @@ CREATE UNIQUE INDEX /*i*/tl_namespace ON /*_*/templatelinks (tl_namespace,tl_tit
 CREATE TABLE /*_*/imagelinks (
   -- Key to page_id of the page containing the image / media link.
   il_from int unsigned NOT NULL default 0,
 CREATE TABLE /*_*/imagelinks (
   -- Key to page_id of the page containing the image / media link.
   il_from int unsigned NOT NULL default 0,
-  
+
   -- Filename of target image.
   -- This is also the page_title of the file's description page;
   -- all such pages are in namespace 6 (NS_FILE).
   -- Filename of target image.
   -- This is also the page_title of the file's description page;
   -- all such pages are in namespace 6 (NS_FILE).
@@ -483,12 +483,12 @@ CREATE UNIQUE INDEX /*i*/il_to ON /*_*/imagelinks (il_to,il_from);
 CREATE TABLE /*_*/categorylinks (
   -- Key to page_id of the page defined as a category member.
   cl_from int unsigned NOT NULL default 0,
 CREATE TABLE /*_*/categorylinks (
   -- Key to page_id of the page defined as a category member.
   cl_from int unsigned NOT NULL default 0,
-  
+
   -- Name of the category.
   -- This is also the page_title of the category's description page;
   -- all such pages are in namespace 14 (NS_CATEGORY).
   cl_to varchar(255) binary NOT NULL default '',
   -- Name of the category.
   -- This is also the page_title of the category's description page;
   -- all such pages are in namespace 14 (NS_CATEGORY).
   cl_to varchar(255) binary NOT NULL default '',
-  
+
   -- A binary string obtained by applying a sortkey generation algorithm
   -- (Language::convertToSortkey()) to page_title, or cl_sortkey_prefix . "\0"
   -- . page_title if cl_sortkey_prefix is nonempty.
   -- A binary string obtained by applying a sortkey generation algorithm
   -- (Language::convertToSortkey()) to page_title, or cl_sortkey_prefix . "\0"
   -- . page_title if cl_sortkey_prefix is nonempty.
@@ -500,7 +500,7 @@ CREATE TABLE /*_*/categorylinks (
   -- conversion algorithm is run.  We store this so that we can update
   -- collations without reparsing all pages.
   cl_sortkey_prefix varchar(255) binary NOT NULL default '',
   -- conversion algorithm is run.  We store this so that we can update
   -- collations without reparsing all pages.
   cl_sortkey_prefix varchar(255) binary NOT NULL default '',
-  
+
   -- This isn't really used at present. Provided for an optional
   -- sorting method by approximate addition time.
   cl_timestamp timestamp NOT NULL,
   -- This isn't really used at present. Provided for an optional
   -- sorting method by approximate addition time.
   cl_timestamp timestamp NOT NULL,
@@ -532,7 +532,7 @@ CREATE INDEX /*i*/cl_timestamp ON /*_*/categorylinks (cl_to,cl_timestamp);
 -- For finding rows with outdated collation
 CREATE INDEX /*i*/cl_collation ON /*_*/categorylinks (cl_collation);
 
 -- For finding rows with outdated collation
 CREATE INDEX /*i*/cl_collation ON /*_*/categorylinks (cl_collation);
 
--- 
+--
 -- Track all existing categories.  Something is a category if 1) it has an en-
 -- try somewhere in categorylinks, or 2) it once did.  Categories might not
 -- have corresponding pages, so they need to be tracked separately.
 -- Track all existing categories.  Something is a category if 1) it has an en-
 -- try somewhere in categorylinks, or 2) it once did.  Categories might not
 -- have corresponding pages, so they need to be tracked separately.
@@ -576,15 +576,15 @@ CREATE TABLE /*_*/externallinks (
   el_to blob NOT NULL,
 
   -- In the case of HTTP URLs, this is the URL with any username or password
   el_to blob NOT NULL,
 
   -- In the case of HTTP URLs, this is the URL with any username or password
-  -- removed, and with the labels in the hostname reversed and converted to 
+  -- removed, and with the labels in the hostname reversed and converted to
   -- lower case. An extra dot is added to allow for matching of either
   -- example.com or *.example.com in a single scan.
   -- lower case. An extra dot is added to allow for matching of either
   -- example.com or *.example.com in a single scan.
-  -- Example: 
+  -- Example:
   --      http://user:password@sub.example.com/page.html
   --   becomes
   --      http://com.example.sub./page.html
   -- which allows for fast searching for all pages under example.com with the
   --      http://user:password@sub.example.com/page.html
   --   becomes
   --      http://com.example.sub./page.html
   -- which allows for fast searching for all pages under example.com with the
-  -- clause: 
+  -- clause:
   --      WHERE el_index LIKE 'http://com.example.%'
   el_index blob NOT NULL
 ) /*$wgDBTableOptions*/;
   --      WHERE el_index LIKE 'http://com.example.%'
   el_index blob NOT NULL
 ) /*$wgDBTableOptions*/;
@@ -608,13 +608,13 @@ CREATE TABLE /*_*/external_user (
 CREATE UNIQUE INDEX /*i*/eu_external_id ON /*_*/external_user (eu_external_id);
 
 
 CREATE UNIQUE INDEX /*i*/eu_external_id ON /*_*/external_user (eu_external_id);
 
 
--- 
+--
 -- Track interlanguage links
 --
 CREATE TABLE /*_*/langlinks (
   -- page_id of the referring page
   ll_from int unsigned NOT NULL default 0,
 -- Track interlanguage links
 --
 CREATE TABLE /*_*/langlinks (
   -- page_id of the referring page
   ll_from int unsigned NOT NULL default 0,
-  
+
   -- Language code of the target
   ll_lang varbinary(20) NOT NULL default '',
 
   -- Language code of the target
   ll_lang varbinary(20) NOT NULL default '',
 
@@ -626,13 +626,13 @@ CREATE UNIQUE INDEX /*i*/ll_from ON /*_*/langlinks (ll_from, ll_lang);
 CREATE INDEX /*i*/ll_lang ON /*_*/langlinks (ll_lang, ll_title);
 
 
 CREATE INDEX /*i*/ll_lang ON /*_*/langlinks (ll_lang, ll_title);
 
 
--- 
+--
 -- Track inline interwiki links
 --
 CREATE TABLE /*_*/iwlinks (
   -- page_id of the referring page
   iwl_from int unsigned NOT NULL default 0,
 -- Track inline interwiki links
 --
 CREATE TABLE /*_*/iwlinks (
   -- page_id of the referring page
   iwl_from int unsigned NOT NULL default 0,
-  
+
   -- Interwiki prefix code of the target
   iwl_prefix varbinary(20) NOT NULL default '',
 
   -- Interwiki prefix code of the target
   iwl_prefix varbinary(20) NOT NULL default '',
 
@@ -651,26 +651,26 @@ CREATE UNIQUE INDEX /*i*/iwl_prefix_title_from ON /*_*/iwlinks (iwl_prefix, iwl_
 CREATE TABLE /*_*/site_stats (
   -- The single row should contain 1 here.
   ss_row_id int unsigned NOT NULL,
 CREATE TABLE /*_*/site_stats (
   -- The single row should contain 1 here.
   ss_row_id int unsigned NOT NULL,
-  
+
   -- Total number of page views, if hit counters are enabled.
   ss_total_views bigint unsigned default 0,
   -- Total number of page views, if hit counters are enabled.
   ss_total_views bigint unsigned default 0,
-  
+
   -- Total number of edits performed.
   ss_total_edits bigint unsigned default 0,
   -- Total number of edits performed.
   ss_total_edits bigint unsigned default 0,
-  
+
   -- An approximate count of pages matching the following criteria:
   -- * in namespace 0
   -- * not a redirect
   -- * contains the text '[['
   -- See Article::isCountable() in includes/Article.php
   ss_good_articles bigint unsigned default 0,
   -- An approximate count of pages matching the following criteria:
   -- * in namespace 0
   -- * not a redirect
   -- * contains the text '[['
   -- See Article::isCountable() in includes/Article.php
   ss_good_articles bigint unsigned default 0,
-  
+
   -- Total pages, theoretically equal to SELECT COUNT(*) FROM page; except faster
   ss_total_pages bigint default '-1',
 
   -- Number of users, theoretically equal to SELECT COUNT(*) FROM user;
   ss_users bigint default '-1',
   -- Total pages, theoretically equal to SELECT COUNT(*) FROM page; except faster
   ss_total_pages bigint default '-1',
 
   -- Number of users, theoretically equal to SELECT COUNT(*) FROM user;
   ss_users bigint default '-1',
-  
+
   -- Number of users that still edit
   ss_active_users bigint default '-1',
 
   -- Number of users that still edit
   ss_active_users bigint default '-1',
 
@@ -704,26 +704,26 @@ CREATE TABLE /*_*/hitcounter (
 CREATE TABLE /*_*/ipblocks (
   -- Primary key, introduced for privacy.
   ipb_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
 CREATE TABLE /*_*/ipblocks (
   -- Primary key, introduced for privacy.
   ipb_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
-  
+
   -- Blocked IP address in dotted-quad form or user name.
   ipb_address tinyblob NOT NULL,
   -- Blocked IP address in dotted-quad form or user name.
   ipb_address tinyblob NOT NULL,
-  
+
   -- Blocked user ID or 0 for IP blocks.
   ipb_user int unsigned NOT NULL default 0,
   -- Blocked user ID or 0 for IP blocks.
   ipb_user int unsigned NOT NULL default 0,
-  
+
   -- User ID who made the block.
   ipb_by int unsigned NOT NULL default 0,
   -- User ID who made the block.
   ipb_by int unsigned NOT NULL default 0,
-  
+
   -- User name of blocker
   ipb_by_text varchar(255) binary NOT NULL default '',
   -- User name of blocker
   ipb_by_text varchar(255) binary NOT NULL default '',
-  
+
   -- Text comment made by blocker.
   ipb_reason tinyblob NOT NULL,
   -- Text comment made by blocker.
   ipb_reason tinyblob NOT NULL,
-  
+
   -- Creation (or refresh) date in standard YMDHMS form.
   -- IP blocks expire automatically.
   ipb_timestamp binary(14) NOT NULL default '',
   -- Creation (or refresh) date in standard YMDHMS form.
   -- IP blocks expire automatically.
   ipb_timestamp binary(14) NOT NULL default '',
-  
+
   -- Indicates that the IP address was banned because a banned
   -- user accessed a page through it. If this is 1, ipb_address
   -- will be hidden, and the block identified by block ID number.
   -- Indicates that the IP address was banned because a banned
   -- user accessed a page through it. If this is 1, ipb_address
   -- will be hidden, and the block identified by block ID number.
@@ -737,11 +737,11 @@ CREATE TABLE /*_*/ipblocks (
 
   -- Block triggers autoblocks
   ipb_enable_autoblock bool NOT NULL default '1',
 
   -- Block triggers autoblocks
   ipb_enable_autoblock bool NOT NULL default '1',
-  
+
   -- Time at which the block will expire.
   -- May be "infinity"
   ipb_expiry varbinary(14) NOT NULL default '',
   -- Time at which the block will expire.
   -- May be "infinity"
   ipb_expiry varbinary(14) NOT NULL default '',
-  
+
   -- Start and end of an address range, in hexadecimal
   -- Size chosen to allow IPv6
   ipb_range_start tinyblob NOT NULL,
   -- Start and end of an address range, in hexadecimal
   -- Size chosen to allow IPv6
   ipb_range_start tinyblob NOT NULL,
@@ -752,12 +752,12 @@ CREATE TABLE /*_*/ipblocks (
 
   -- Block prevents user from accessing Special:Emailuser
   ipb_block_email bool NOT NULL default 0,
 
   -- Block prevents user from accessing Special:Emailuser
   ipb_block_email bool NOT NULL default 0,
-  
+
   -- Block allows user to edit their own talk page
   ipb_allow_usertalk bool NOT NULL default 0
 
 ) /*$wgDBTableOptions*/;
   -- Block allows user to edit their own talk page
   ipb_allow_usertalk bool NOT NULL default 0
 
 ) /*$wgDBTableOptions*/;
-  
+
 -- Unique index to support "user already blocked" messages
 -- Any new options which prevent collisions should be included
 CREATE UNIQUE INDEX /*i*/ipb_address ON /*_*/ipblocks (ipb_address(255), ipb_user, ipb_auto, ipb_anon_only);
 -- Unique index to support "user already blocked" messages
 -- Any new options which prevent collisions should be included
 CREATE UNIQUE INDEX /*i*/ipb_address ON /*_*/ipblocks (ipb_address(255), ipb_user, ipb_auto, ipb_anon_only);
@@ -776,44 +776,44 @@ CREATE TABLE /*_*/image (
   -- This is also the title of the associated description page,
   -- which will be in namespace 6 (NS_FILE).
   img_name varchar(255) binary NOT NULL default '' PRIMARY KEY,
   -- This is also the title of the associated description page,
   -- which will be in namespace 6 (NS_FILE).
   img_name varchar(255) binary NOT NULL default '' PRIMARY KEY,
-  
+
   -- File size in bytes.
   img_size int unsigned NOT NULL default 0,
   -- File size in bytes.
   img_size int unsigned NOT NULL default 0,
-  
+
   -- For images, size in pixels.
   img_width int NOT NULL default 0,
   img_height int NOT NULL default 0,
   -- For images, size in pixels.
   img_width int NOT NULL default 0,
   img_height int NOT NULL default 0,
-  
+
   -- Extracted EXIF metadata stored as a serialized PHP array.
   img_metadata mediumblob NOT NULL,
   -- Extracted EXIF metadata stored as a serialized PHP array.
   img_metadata mediumblob NOT NULL,
-  
+
   -- For images, bits per pixel if known.
   img_bits int NOT NULL default 0,
   -- For images, bits per pixel if known.
   img_bits int NOT NULL default 0,
-  
+
   -- Media type as defined by the MEDIATYPE_xxx constants
   img_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
   -- Media type as defined by the MEDIATYPE_xxx constants
   img_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
-  
+
   -- major part of a MIME media type as defined by IANA
   -- see http://www.iana.org/assignments/media-types/
   img_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown",
   -- major part of a MIME media type as defined by IANA
   -- see http://www.iana.org/assignments/media-types/
   img_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown",
-  
+
   -- minor part of a MIME media type as defined by IANA
   -- the minor parts are not required to adher to any standard
   -- but should be consistent throughout the database
   -- see http://www.iana.org/assignments/media-types/
   img_minor_mime varbinary(100) NOT NULL default "unknown",
   -- minor part of a MIME media type as defined by IANA
   -- the minor parts are not required to adher to any standard
   -- but should be consistent throughout the database
   -- see http://www.iana.org/assignments/media-types/
   img_minor_mime varbinary(100) NOT NULL default "unknown",
-  
+
   -- Description field as entered by the uploader.
   -- This is displayed in image upload history and logs.
   img_description tinyblob NOT NULL,
   -- Description field as entered by the uploader.
   -- This is displayed in image upload history and logs.
   img_description tinyblob NOT NULL,
-  
+
   -- user_id and user_name of uploader.
   img_user int unsigned NOT NULL default 0,
   img_user_text varchar(255) binary NOT NULL,
   -- user_id and user_name of uploader.
   img_user int unsigned NOT NULL default 0,
   img_user_text varchar(255) binary NOT NULL,
-  
+
   -- Time of the upload.
   img_timestamp varbinary(14) NOT NULL default '',
   -- Time of the upload.
   img_timestamp varbinary(14) NOT NULL default '',
-  
+
   -- SHA-1 content hash in base-36
   img_sha1 varbinary(32) NOT NULL default ''
 ) /*$wgDBTableOptions*/;
   -- SHA-1 content hash in base-36
   img_sha1 varbinary(32) NOT NULL default ''
 ) /*$wgDBTableOptions*/;
@@ -835,11 +835,11 @@ CREATE INDEX /*i*/img_sha1 ON /*_*/image (img_sha1);
 CREATE TABLE /*_*/oldimage (
   -- Base filename: key to image.img_name
   oi_name varchar(255) binary NOT NULL default '',
 CREATE TABLE /*_*/oldimage (
   -- Base filename: key to image.img_name
   oi_name varchar(255) binary NOT NULL default '',
-  
+
   -- Filename of the archived file.
   -- This is generally a timestamp and '!' prepended to the base name.
   oi_archive_name varchar(255) binary NOT NULL default '',
   -- Filename of the archived file.
   -- This is generally a timestamp and '!' prepended to the base name.
   oi_archive_name varchar(255) binary NOT NULL default '',
-  
+
   -- Other fields as in image...
   oi_size int unsigned NOT NULL default 0,
   oi_width int NOT NULL default 0,
   -- Other fields as in image...
   oi_size int unsigned NOT NULL default 0,
   oi_width int NOT NULL default 0,
@@ -871,30 +871,30 @@ CREATE INDEX /*i*/oi_sha1 ON /*_*/oldimage (oi_sha1);
 CREATE TABLE /*_*/filearchive (
   -- Unique row id
   fa_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
 CREATE TABLE /*_*/filearchive (
   -- Unique row id
   fa_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
-  
+
   -- Original base filename; key to image.img_name, page.page_title, etc
   fa_name varchar(255) binary NOT NULL default '',
   -- Original base filename; key to image.img_name, page.page_title, etc
   fa_name varchar(255) binary NOT NULL default '',
-  
+
   -- Filename of archived file, if an old revision
   fa_archive_name varchar(255) binary default '',
   -- Filename of archived file, if an old revision
   fa_archive_name varchar(255) binary default '',
-  
+
   -- Which storage bin (directory tree or object store) the file data
   -- is stored in. Should be 'deleted' for files that have been deleted;
   -- any other bin is not yet in use.
   fa_storage_group varbinary(16),
   -- Which storage bin (directory tree or object store) the file data
   -- is stored in. Should be 'deleted' for files that have been deleted;
   -- any other bin is not yet in use.
   fa_storage_group varbinary(16),
-  
+
   -- SHA-1 of the file contents plus extension, used as a key for storage.
   -- eg 8f8a562add37052a1848ff7771a2c515db94baa9.jpg
   --
   -- If NULL, the file was missing at deletion time or has been purged
   -- from the archival storage.
   fa_storage_key varbinary(64) default '',
   -- SHA-1 of the file contents plus extension, used as a key for storage.
   -- eg 8f8a562add37052a1848ff7771a2c515db94baa9.jpg
   --
   -- If NULL, the file was missing at deletion time or has been purged
   -- from the archival storage.
   fa_storage_key varbinary(64) default '',
-  
+
   -- Deletion information, if this file is deleted.
   fa_deleted_user int,
   fa_deleted_timestamp binary(14) default '',
   fa_deleted_reason text,
   -- Deletion information, if this file is deleted.
   fa_deleted_user int,
   fa_deleted_timestamp binary(14) default '',
   fa_deleted_reason text,
-  
+
   -- Duped fields from image
   fa_size int unsigned default 0,
   fa_width int default 0,
   -- Duped fields from image
   fa_size int unsigned default 0,
   fa_width int default 0,
@@ -932,52 +932,52 @@ CREATE TABLE /*_*/recentchanges (
   rc_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
   rc_timestamp varbinary(14) NOT NULL default '',
   rc_cur_time varbinary(14) NOT NULL default '',
   rc_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
   rc_timestamp varbinary(14) NOT NULL default '',
   rc_cur_time varbinary(14) NOT NULL default '',
-  
+
   -- As in revision
   rc_user int unsigned NOT NULL default 0,
   rc_user_text varchar(255) binary NOT NULL,
   -- As in revision
   rc_user int unsigned NOT NULL default 0,
   rc_user_text varchar(255) binary NOT NULL,
-  
+
   -- When pages are renamed, their RC entries do _not_ change.
   rc_namespace int NOT NULL default 0,
   rc_title varchar(255) binary NOT NULL default '',
   -- When pages are renamed, their RC entries do _not_ change.
   rc_namespace int NOT NULL default 0,
   rc_title varchar(255) binary NOT NULL default '',
-  
+
   -- as in revision...
   rc_comment varchar(255) binary NOT NULL default '',
   rc_minor tinyint unsigned NOT NULL default 0,
   -- as in revision...
   rc_comment varchar(255) binary NOT NULL default '',
   rc_minor tinyint unsigned NOT NULL default 0,
-  
+
   -- Edits by user accounts with the 'bot' rights key are
   -- marked with a 1 here, and will be hidden from the
   -- default view.
   rc_bot tinyint unsigned NOT NULL default 0,
   -- Edits by user accounts with the 'bot' rights key are
   -- marked with a 1 here, and will be hidden from the
   -- default view.
   rc_bot tinyint unsigned NOT NULL default 0,
-  
+
   rc_new tinyint unsigned NOT NULL default 0,
   rc_new tinyint unsigned NOT NULL default 0,
-  
+
   -- Key to page_id (was cur_id prior to 1.5).
   -- This will keep links working after moves while
   -- retaining the at-the-time name in the changes list.
   rc_cur_id int unsigned NOT NULL default 0,
   -- Key to page_id (was cur_id prior to 1.5).
   -- This will keep links working after moves while
   -- retaining the at-the-time name in the changes list.
   rc_cur_id int unsigned NOT NULL default 0,
-  
+
   -- rev_id of the given revision
   rc_this_oldid int unsigned NOT NULL default 0,
   -- rev_id of the given revision
   rc_this_oldid int unsigned NOT NULL default 0,
-  
+
   -- rev_id of the prior revision, for generating diff links.
   rc_last_oldid int unsigned NOT NULL default 0,
   -- rev_id of the prior revision, for generating diff links.
   rc_last_oldid int unsigned NOT NULL default 0,
-  
+
   -- These may no longer be used, with the new move log.
   rc_type tinyint unsigned NOT NULL default 0,
   rc_moved_to_ns tinyint unsigned NOT NULL default 0,
   rc_moved_to_title varchar(255) binary NOT NULL default '',
   -- These may no longer be used, with the new move log.
   rc_type tinyint unsigned NOT NULL default 0,
   rc_moved_to_ns tinyint unsigned NOT NULL default 0,
   rc_moved_to_title varchar(255) binary NOT NULL default '',
-  
+
   -- If the Recent Changes Patrol option is enabled,
   -- users may mark edits as having been reviewed to
   -- remove a warning flag on the RC list.
   -- A value of 1 indicates the page has been reviewed.
   rc_patrolled tinyint unsigned NOT NULL default 0,
   -- If the Recent Changes Patrol option is enabled,
   -- users may mark edits as having been reviewed to
   -- remove a warning flag on the RC list.
   -- A value of 1 indicates the page has been reviewed.
   rc_patrolled tinyint unsigned NOT NULL default 0,
-  
+
   -- Recorded IP address the edit was made from, if the
   -- $wgPutIPinRC option is enabled.
   rc_ip varbinary(40) NOT NULL default '',
   -- Recorded IP address the edit was made from, if the
   -- $wgPutIPinRC option is enabled.
   rc_ip varbinary(40) NOT NULL default '',
-  
+
   -- Text length in characters before
   -- and after the edit
   rc_old_len int,
   -- Text length in characters before
   -- and after the edit
   rc_old_len int,
@@ -1008,17 +1008,17 @@ CREATE INDEX /*i*/rc_user_text ON /*_*/recentchanges (rc_user_text, rc_timestamp
 CREATE TABLE /*_*/watchlist (
   -- Key to user.user_id
   wl_user int unsigned NOT NULL,
 CREATE TABLE /*_*/watchlist (
   -- Key to user.user_id
   wl_user int unsigned NOT NULL,
-  
+
   -- Key to page_namespace/page_title
   -- Note that users may watch pages which do not exist yet,
   -- or existed in the past but have been deleted.
   wl_namespace int NOT NULL default 0,
   wl_title varchar(255) binary NOT NULL default '',
   -- Key to page_namespace/page_title
   -- Note that users may watch pages which do not exist yet,
   -- or existed in the past but have been deleted.
   wl_namespace int NOT NULL default 0,
   wl_title varchar(255) binary NOT NULL default '',
-  
+
   -- Timestamp when user was last sent a notification e-mail;
   -- cleared when the user visits the page.
   wl_notificationtimestamp varbinary(14)
   -- Timestamp when user was last sent a notification e-mail;
   -- cleared when the user visits the page.
   wl_notificationtimestamp varbinary(14)
-  
+
 ) /*$wgDBTableOptions*/;
 
 CREATE UNIQUE INDEX /*i*/wl_user ON /*_*/watchlist (wl_user, wl_namespace, wl_title);
 ) /*$wgDBTableOptions*/;
 
 CREATE UNIQUE INDEX /*i*/wl_user ON /*_*/watchlist (wl_user, wl_namespace, wl_title);
@@ -1032,17 +1032,17 @@ CREATE INDEX /*i*/namespace_title ON /*_*/watchlist (wl_namespace, wl_title);
 CREATE TABLE /*_*/math (
   -- Binary MD5 hash of the latex fragment, used as an identifier key.
   math_inputhash varbinary(16) NOT NULL,
 CREATE TABLE /*_*/math (
   -- Binary MD5 hash of the latex fragment, used as an identifier key.
   math_inputhash varbinary(16) NOT NULL,
-  
+
   -- Not sure what this is, exactly...
   math_outputhash varbinary(16) NOT NULL,
   -- Not sure what this is, exactly...
   math_outputhash varbinary(16) NOT NULL,
-  
+
   -- texvc reports how well it thinks the HTML conversion worked;
   -- if it's a low level the PNG rendering may be preferred.
   math_html_conservativeness tinyint NOT NULL,
   -- texvc reports how well it thinks the HTML conversion worked;
   -- if it's a low level the PNG rendering may be preferred.
   math_html_conservativeness tinyint NOT NULL,
-  
+
   -- HTML output from texvc, if any
   math_html text,
   -- HTML output from texvc, if any
   math_html text,
-  
+
   -- MathML output from texvc, if any
   math_mathml text
 ) /*$wgDBTableOptions*/;
   -- MathML output from texvc, if any
   math_mathml text
 ) /*$wgDBTableOptions*/;
@@ -1061,10 +1061,10 @@ CREATE UNIQUE INDEX /*i*/math_inputhash ON /*_*/math (math_inputhash);
 CREATE TABLE /*_*/searchindex (
   -- Key to page_id
   si_page int unsigned NOT NULL,
 CREATE TABLE /*_*/searchindex (
   -- Key to page_id
   si_page int unsigned NOT NULL,
-  
+
   -- Munged version of title
   si_title varchar(255) NOT NULL default '',
   -- Munged version of title
   si_title varchar(255) NOT NULL default '',
-  
+
   -- Munged version of body text
   si_text mediumtext NOT NULL
 ) ENGINE=MyISAM;
   -- Munged version of body text
   si_text mediumtext NOT NULL
 ) ENGINE=MyISAM;
@@ -1080,22 +1080,22 @@ CREATE FULLTEXT INDEX /*i*/si_text ON /*_*/searchindex (si_text);
 CREATE TABLE /*_*/interwiki (
   -- The interwiki prefix, (e.g. "Meatball", or the language prefix "de")
   iw_prefix varchar(32) NOT NULL,
 CREATE TABLE /*_*/interwiki (
   -- The interwiki prefix, (e.g. "Meatball", or the language prefix "de")
   iw_prefix varchar(32) NOT NULL,
-  
+
   -- The URL of the wiki, with "$1" as a placeholder for an article name.
   -- Any spaces in the name will be transformed to underscores before
   -- insertion.
   iw_url blob NOT NULL,
   -- The URL of the wiki, with "$1" as a placeholder for an article name.
   -- Any spaces in the name will be transformed to underscores before
   -- insertion.
   iw_url blob NOT NULL,
-  
+
   -- The URL of the file api.php
   iw_api blob NOT NULL,
 
   -- The name of the database (for a connection to be established with wfGetLB( 'wikiid' ))
   iw_wikiid varchar(64) NOT NULL,
   -- The URL of the file api.php
   iw_api blob NOT NULL,
 
   -- The name of the database (for a connection to be established with wfGetLB( 'wikiid' ))
   iw_wikiid varchar(64) NOT NULL,
-  
+
   -- A boolean value indicating whether the wiki is in this project
   -- (used, for example, to detect redirect loops)
   iw_local bool NOT NULL,
   -- A boolean value indicating whether the wiki is in this project
   -- (used, for example, to detect redirect loops)
   iw_local bool NOT NULL,
-  
+
   -- Boolean value indicating whether interwiki transclusions are allowed.
   iw_trans tinyint NOT NULL default 0
 ) /*$wgDBTableOptions*/;
   -- Boolean value indicating whether interwiki transclusions are allowed.
   iw_trans tinyint NOT NULL default 0
 ) /*$wgDBTableOptions*/;
@@ -1109,10 +1109,10 @@ CREATE UNIQUE INDEX /*i*/iw_prefix ON /*_*/interwiki (iw_prefix);
 CREATE TABLE /*_*/querycache (
   -- A key name, generally the base name of of the special page.
   qc_type varbinary(32) NOT NULL,
 CREATE TABLE /*_*/querycache (
   -- A key name, generally the base name of of the special page.
   qc_type varbinary(32) NOT NULL,
-  
+
   -- Some sort of stored value. Sizes, counts...
   qc_value int unsigned NOT NULL default 0,
   -- Some sort of stored value. Sizes, counts...
   qc_value int unsigned NOT NULL default 0,
-  
+
   -- Target namespace+title
   qc_namespace int NOT NULL default 0,
   qc_title varchar(255) binary NOT NULL default ''
   -- Target namespace+title
   qc_namespace int NOT NULL default 0,
   qc_title varchar(255) binary NOT NULL default ''
@@ -1153,25 +1153,25 @@ CREATE TABLE /*_*/logging (
   -- action field, but only the type controls categorization.
   log_type varbinary(32) NOT NULL default '',
   log_action varbinary(32) NOT NULL default '',
   -- action field, but only the type controls categorization.
   log_type varbinary(32) NOT NULL default '',
   log_action varbinary(32) NOT NULL default '',
-  
+
   -- Timestamp. Duh.
   log_timestamp binary(14) NOT NULL default '19700101000000',
   -- Timestamp. Duh.
   log_timestamp binary(14) NOT NULL default '19700101000000',
-  
+
   -- The user who performed this action; key to user_id
   log_user int unsigned NOT NULL default 0,
   -- The user who performed this action; key to user_id
   log_user int unsigned NOT NULL default 0,
-  
+
   -- Name of the user who performed this action
   log_user_text varchar(255) binary NOT NULL default '',
   -- Name of the user who performed this action
   log_user_text varchar(255) binary NOT NULL default '',
-  
+
   -- Key to the page affected. Where a user is the target,
   -- this will point to the user page.
   log_namespace int NOT NULL default 0,
   log_title varchar(255) binary NOT NULL default '',
   log_page int unsigned NULL,
   -- Key to the page affected. Where a user is the target,
   -- this will point to the user page.
   log_namespace int NOT NULL default 0,
   log_title varchar(255) binary NOT NULL default '',
   log_page int unsigned NULL,
-  
+
   -- Freeform text. Interpreted as edit history comments.
   log_comment varchar(255) NOT NULL default '',
   -- Freeform text. Interpreted as edit history comments.
   log_comment varchar(255) NOT NULL default '',
-  
+
   -- LF separated list of miscellaneous parameters
   log_params blob NOT NULL,
 
   -- LF separated list of miscellaneous parameters
   log_params blob NOT NULL,
 
@@ -1213,7 +1213,7 @@ CREATE INDEX /*i*/tb_page ON /*_*/trackbacks (tb_page);
 -- Jobs performed by parallel apache threads or a command-line daemon
 CREATE TABLE /*_*/job (
   job_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
 -- Jobs performed by parallel apache threads or a command-line daemon
 CREATE TABLE /*_*/job (
   job_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
-  
+
   -- Command name
   -- Limited to 60 to prevent key length overflow
   job_cmd varbinary(60) NOT NULL default '',
   -- Command name
   -- Limited to 60 to prevent key length overflow
   job_cmd varbinary(60) NOT NULL default '',
@@ -1266,14 +1266,14 @@ CREATE INDEX /*i*/rd_ns_title ON /*_*/redirect (rd_namespace,rd_title,rd_from);
 CREATE TABLE /*_*/querycachetwo (
   -- A key name, generally the base name of of the special page.
   qcc_type varbinary(32) NOT NULL,
 CREATE TABLE /*_*/querycachetwo (
   -- A key name, generally the base name of of the special page.
   qcc_type varbinary(32) NOT NULL,
-  
+
   -- Some sort of stored value. Sizes, counts...
   qcc_value int unsigned NOT NULL default 0,
   -- Some sort of stored value. Sizes, counts...
   qcc_value int unsigned NOT NULL default 0,
-  
+
   -- Target namespace+title
   qcc_namespace int NOT NULL default 0,
   qcc_title varchar(255) binary NOT NULL default '',
   -- Target namespace+title
   qcc_namespace int NOT NULL default 0,
   qcc_title varchar(255) binary NOT NULL default '',
-  
+
   -- Target namespace+title2
   qcc_namespacetwo int NOT NULL default 0,
   qcc_titletwo varchar(255) binary NOT NULL default ''
   -- Target namespace+title2
   qcc_namespacetwo int NOT NULL default 0,
   qcc_titletwo varchar(255) binary NOT NULL default ''
@@ -1364,7 +1364,7 @@ CREATE INDEX /*i*/change_tag_tag_id ON /*_*/change_tag (ct_tag,ct_rc_id,ct_rev_i
 -- Rollup table to pull a LIST of tags simply without ugly GROUP_CONCAT
 -- that only works on MySQL 4.1+
 CREATE TABLE /*_*/tag_summary (
 -- Rollup table to pull a LIST of tags simply without ugly GROUP_CONCAT
 -- that only works on MySQL 4.1+
 CREATE TABLE /*_*/tag_summary (
-  -- RCID for the change  
+  -- RCID for the change
   ts_rc_id int NULL,
   -- LOGID for the change
   ts_log_id int NULL,
   ts_rc_id int NULL,
   -- LOGID for the change
   ts_log_id int NULL,
@@ -1398,7 +1398,7 @@ CREATE INDEX /*i*/lc_lang_key ON /*_*/l10n_cache (lc_lang, lc_key);
 CREATE TABLE /*_*/msg_resource (
   -- Resource name
   mr_resource varbinary(255) NOT NULL,
 CREATE TABLE /*_*/msg_resource (
   -- Resource name
   mr_resource varbinary(255) NOT NULL,
-  -- Language code 
+  -- Language code
   mr_lang varbinary(32) NOT NULL,
   -- JSON blob
   mr_blob mediumblob NOT NULL,
   mr_lang varbinary(32) NOT NULL,
   -- JSON blob
   mr_blob mediumblob NOT NULL,
index 954c59a..e0c0f24 100644 (file)
@@ -72,8 +72,8 @@ class SeleniumTester extends Maintenance {
        protected function startServer() {
                if ( $this->seleniumServerExecPath == '' ) {
                        die ( "The selenium server exec path is not set in " .
        protected function startServer() {
                if ( $this->seleniumServerExecPath == '' ) {
                        die ( "The selenium server exec path is not set in " .
-                             "selenium_settings.ini. Cannot start server \n" .
-                             "as requested - terminating RunSeleniumTests\n" );
+                                 "selenium_settings.ini. Cannot start server \n" .
+                                 "as requested - terminating RunSeleniumTests\n" );
                }
                $this->serverManager = new SeleniumServerManager( 'true',
                        $this->selenium->getPort(),
                }
                $this->serverManager = new SeleniumServerManager( 'true',
                        $this->selenium->getPort(),
@@ -117,21 +117,21 @@ class SeleniumTester extends Maintenance {
                        $jUnitListener = new PHPUnit_Util_Log_JUnit( $this->selenium->getJUnitLogFile(), true );
                        $result->addListener( $jUnitListener );
                }
                        $jUnitListener = new PHPUnit_Util_Log_JUnit( $this->selenium->getJUnitLogFile(), true );
                        $result->addListener( $jUnitListener );
                }
-               
+
                foreach ( $seleniumTestSuites as $testSuiteName => $testSuiteFile ) {
                        require( $testSuiteFile );
                foreach ( $seleniumTestSuites as $testSuiteName => $testSuiteFile ) {
                        require( $testSuiteFile );
-                       $suite = new $testSuiteName();
-                       $suite->setName( $testSuiteName );
+                       $suite = new $testSuiteName();
+                       $suite->setName( $testSuiteName );
                        $suite->addTests();
                        $suite->addTests();
-                       
+
                        try {
                                $suite->run( $result );
                        } catch ( Testing_Selenium_Exception $e ) {
                        try {
                                $suite->run( $result );
                        } catch ( Testing_Selenium_Exception $e ) {
-                               $suite->tearDown(); 
+                               $suite->tearDown();
                                throw new MWException( $e->getMessage() );
                        }
                }
                                throw new MWException( $e->getMessage() );
                        }
                }
-               
+
                if ( $this->selenium->getJUnitLogFile() ) {
                        $jUnitListener->flush();
                }
                if ( $this->selenium->getJUnitLogFile() ) {
                        $jUnitListener->flush();
                }
@@ -139,7 +139,7 @@ class SeleniumTester extends Maintenance {
 
        public function execute() {
                global $wgServer, $wgScriptPath, $wgHooks;
 
        public function execute() {
                global $wgServer, $wgScriptPath, $wgHooks;
-               
+
                $seleniumSettings;
                $seleniumBrowsers;
                $seleniumTestSuites;
                $seleniumSettings;
                $seleniumBrowsers;
                $seleniumTestSuites;
@@ -147,23 +147,23 @@ class SeleniumTester extends Maintenance {
                $configFile = $this->getOption( 'seleniumConfig', '' );
                if ( strlen( $configFile ) > 0 ) {
                        $this->output("Using Selenium Configuration file: " . $configFile . "\n");
                $configFile = $this->getOption( 'seleniumConfig', '' );
                if ( strlen( $configFile ) > 0 ) {
                        $this->output("Using Selenium Configuration file: " . $configFile . "\n");
-                       SeleniumConfig::getSeleniumSettings( $seleniumSettings, 
+                       SeleniumConfig::getSeleniumSettings( $seleniumSettings,
                                $seleniumBrowsers,
                                $seleniumTestSuites,
                                $configFile );
                } else if ( !isset( $wgHooks['SeleniumSettings'] ) ) {
                        $this->output("No command line configuration file or configuration hook found.\n");
                                $seleniumBrowsers,
                                $seleniumTestSuites,
                                $configFile );
                } else if ( !isset( $wgHooks['SeleniumSettings'] ) ) {
                        $this->output("No command line configuration file or configuration hook found.\n");
-                       SeleniumConfig::getSeleniumSettings( $seleniumSettings, 
+                       SeleniumConfig::getSeleniumSettings( $seleniumSettings,
                                $seleniumBrowsers,
                                $seleniumTestSuites
                                $seleniumBrowsers,
                                $seleniumTestSuites
-                                                                                                       );
+                                                                                                       );
                } else {
                        $this->output("Using 'SeleniumSettings' hook for configuration.\n");
                } else {
                        $this->output("Using 'SeleniumSettings' hook for configuration.\n");
-                       wfRunHooks('SeleniumSettings', array( $seleniumSettings, 
+                       wfRunHooks('SeleniumSettings', array( $seleniumSettings,
                                $seleniumBrowsers,
                                $seleniumTestSuites ) );
                }
                                $seleniumBrowsers,
                                $seleniumTestSuites ) );
                }
-               
+
                // State for starting/stopping the Selenium server has nothing to do with the Selenium
                // class. Keep this state local to SeleniumTester class. Using getOption() is clumsy, but
                // the Maintenance class does not have a setOption()
                // State for starting/stopping the Selenium server has nothing to do with the Selenium
                // class. Keep this state local to SeleniumTester class. Using getOption() is clumsy, but
                // the Maintenance class does not have a setOption()
@@ -186,7 +186,7 @@ class SeleniumTester extends Maintenance {
                // Setup Selenium class
                $this->selenium = new Selenium( );
                $this->selenium->setAvailableBrowsers( $seleniumBrowsers );
                // Setup Selenium class
                $this->selenium = new Selenium( );
                $this->selenium->setAvailableBrowsers( $seleniumBrowsers );
-               $this->selenium->setRunAgainstGrid( $this->getOption( 'runAgainstGrid', $seleniumSettings['runAgainstGrid'] ) );                
+               $this->selenium->setRunAgainstGrid( $this->getOption( 'runAgainstGrid', $seleniumSettings['runAgainstGrid'] ) );
                $this->selenium->setUrl( $this->getOption( 'wikiUrl', $seleniumSettings['wikiUrl'] ) );
                $this->selenium->setBrowser( $this->getOption( 'testBrowser', $seleniumSettings['testBrowser'] ) );
                $this->selenium->setPort( $this->getOption( 'port', $seleniumSettings['port'] ) );
                $this->selenium->setUrl( $this->getOption( 'wikiUrl', $seleniumSettings['wikiUrl'] ) );
                $this->selenium->setBrowser( $this->getOption( 'testBrowser', $seleniumSettings['testBrowser'] ) );
                $this->selenium->setPort( $this->getOption( 'port', $seleniumSettings['port'] ) );
index 886d92c..7793e6b 100644 (file)
@@ -39,13 +39,13 @@ Options:
   --quiet          Suppress notification of passed tests (shows only failed tests)
   --show-output    Show expected and actual output
   --color[=yes|no] Override terminal detection and force color output on or off
   --quiet          Suppress notification of passed tests (shows only failed tests)
   --show-output    Show expected and actual output
   --color[=yes|no] Override terminal detection and force color output on or off
-                   use wgCommandLineDarkBg = true; if your term is dark
+                                  use wgCommandLineDarkBg = true; if your term is dark
   --regex          Only run tests whose descriptions which match given regex
   --file=<testfile> Run test cases from a custom file instead of parserTests.txt
   --record         Record tests in database
   --compare        Compare with recorded results, without updating the database.
   --setversion     When using --record, set the version string to use (useful
   --regex          Only run tests whose descriptions which match given regex
   --file=<testfile> Run test cases from a custom file instead of parserTests.txt
   --record         Record tests in database
   --compare        Compare with recorded results, without updating the database.
   --setversion     When using --record, set the version string to use (useful
-                   with git-svn so that you can get the exact revision)
+                                  with git-svn so that you can get the exact revision)
   --keep-uploads   Re-use the same upload directory for each test, don't delete it
   --fuzz           Do a fuzz test instead of a normal test
   --seed <n>       Start the fuzz test from the specified seed
   --keep-uploads   Re-use the same upload directory for each test, don't delete it
   --fuzz           Do a fuzz test instead of a normal test
   --seed <n>       Start the fuzz test from the specified seed
index 1443a6d..75276ae 100644 (file)
@@ -38,7 +38,7 @@ class UpdateMediaWiki extends Maintenance {
        private function compatChecks() {
                $test = new PhpXmlBugTester();
                if ( !$test->ok ) {
        private function compatChecks() {
                $test = new PhpXmlBugTester();
                if ( !$test->ok ) {
-                       $this->error( 
+                       $this->error(
                                "Your system has a combination of PHP and libxml2 versions which is buggy\n" .
                                "and can cause hidden data corruption in MediaWiki and other web apps.\n" .
                                "Upgrade to PHP 5.2.9 or later and libxml2 2.7.3 or later!\n" .
                                "Your system has a combination of PHP and libxml2 versions which is buggy\n" .
                                "and can cause hidden data corruption in MediaWiki and other web apps.\n" .
                                "Upgrade to PHP 5.2.9 or later and libxml2 2.7.3 or later!\n" .
index 1e434eb..636d9fc 100644 (file)
@@ -41,7 +41,7 @@ class UpdateArticleCount extends Maintenance {
                $this->namespaces = $wgContentNamespaces;
                $this->output( "Counting articles..." );
                $result = $this->count();
                $this->namespaces = $wgContentNamespaces;
                $this->output( "Counting articles..." );
                $result = $this->count();
-       
+
                if ( $result !== false ) {
                        $this->output( "found {$result}.\n" );
                        if ( $this->hasOption( 'update' ) ) {
                if ( $result !== false ) {
                        $this->output( "found {$result}.\n" );
                        if ( $this->hasOption( 'update' ) ) {
index 7b91660..1066fe1 100644 (file)
@@ -25,7 +25,7 @@ TEXT;
 
                #$this->addOption( 'force', 'Run on all rows, even if the collation is supposed to be up-to-date.' );
        }
 
                #$this->addOption( 'force', 'Run on all rows, even if the collation is supposed to be up-to-date.' );
        }
-       
+
        public function execute() {
                global $wgCategoryCollation, $wgContLang;
 
        public function execute() {
                global $wgCategoryCollation, $wgContLang;
 
index 5053d58..7899628 100644 (file)
@@ -61,8 +61,8 @@ class UpdateDoubleWidthSearch extends Maintenance {
                $searchindex = $dbw->tableName( 'searchindex' );
                $regexp = '[[:<:]]u8efbd([89][1-9a]|8[b-f]|90)[[:>:]]';
                $sql = "SELECT si_page FROM $searchindex
                $searchindex = $dbw->tableName( 'searchindex' );
                $regexp = '[[:<:]]u8efbd([89][1-9a]|8[b-f]|90)[[:>:]]';
                $sql = "SELECT si_page FROM $searchindex
-                 WHERE ( si_text RLIKE '$regexp' )
-                    OR ( si_title RLIKE '$regexp' )";
+                                WHERE ( si_text RLIKE '$regexp' )
+                                       OR ( si_title RLIKE '$regexp' )";
                return $dbw->query( $sql, __METHOD__ );
        }
 }
                return $dbw->query( $sql, __METHOD__ );
        }
 }
index 2bf68dd..23d8aa2 100644 (file)
@@ -44,7 +44,7 @@ class UpdateRestrictions extends Maintenance {
                        $this->error( "Nothing to do.", true );
                }
                $end = $db->selectField( 'page', 'MAX(page_id)', false, __METHOD__ );
                        $this->error( "Nothing to do.", true );
                }
                $end = $db->selectField( 'page', 'MAX(page_id)', false, __METHOD__ );
-       
+
                # Do remaining chunk
                $end += $this->mBatchSize - 1;
                $blockStart = $start;
                # Do remaining chunk
                $end += $this->mBatchSize - 1;
                $blockStart = $start;
index 6f8cb6e..eede109 100644 (file)
@@ -27,7 +27,7 @@
  * @file
  * @ingroup Maintenance
  */
  * @file
  * @ingroup Maintenance
  */
+
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class UpdateSearchIndex extends Maintenance {
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class UpdateSearchIndex extends Maintenance {
@@ -62,7 +62,7 @@ class UpdateSearchIndex extends Maintenance {
                        }
                }
                $lockTime = $this->getOption( 'l', 20 );
                        }
                }
                $lockTime = $this->getOption( 'l', 20 );
-               
+
                $this->doUpdateSearchIndex( $start, $end, $lockTime );
                if ( is_writable( dirname( realpath( $posFile ) ) ) ) {
                        $file = fopen( $posFile, 'w' );
                $this->doUpdateSearchIndex( $start, $end, $lockTime );
                if ( is_writable( dirname( realpath( $posFile ) ) ) ) {
                        $file = fopen( $posFile, 'w' );
@@ -76,7 +76,7 @@ class UpdateSearchIndex extends Maintenance {
                        $this->output( "*** Couldn't write to the $posFile!\n" );
                }
        }
                        $this->output( "*** Couldn't write to the $posFile!\n" );
                }
        }
-       
+
        private function doUpdateSearchIndex( $start, $end, $maxLockTime ) {
                global $wgDisableSearchUpdate;
 
        private function doUpdateSearchIndex( $start, $end, $maxLockTime ) {
                global $wgDisableSearchUpdate;
 
index f457eb4..b0c8b73 100644 (file)
@@ -21,7 +21,7 @@
  * @file
  * @ingroup Maintenance
  */
  * @file
  * @ingroup Maintenance
  */
+
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class UpdateSpecialPages extends Maintenance {
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class UpdateSpecialPages extends Maintenance {
index 8803910..20429eb 100644 (file)
@@ -102,11 +102,11 @@ class FiveUpgrade extends Maintenance {
        function newConnection() {
                $lb = wfGetLBFactory()->newMainLB();
                $db = $lb->getConnection( DB_MASTER );
        function newConnection() {
                $lb = wfGetLBFactory()->newMainLB();
                $db = $lb->getConnection( DB_MASTER );
-               
+
                $this->loadBalancers[] = $lb;
                return $db;
        }
                $this->loadBalancers[] = $lb;
                return $db;
        }
-       
+
        /**
         * Commit transactions and close the connections when we're done...
         */
        /**
         * Commit transactions and close the connections when we're done...
         */
@@ -385,40 +385,40 @@ class FiveUpgrade extends Maintenance {
 
                $this->log( "Creating page and revision tables..." );
                $this->dbw->query( "CREATE TABLE $page (
 
                $this->log( "Creating page and revision tables..." );
                $this->dbw->query( "CREATE TABLE $page (
-                       page_id int(8) unsigned NOT NULL auto_increment,
-                       page_namespace int NOT NULL,
-                       page_title varchar(255) binary NOT NULL,
-                       page_restrictions tinyblob NOT NULL default '',
-                       page_counter bigint(20) unsigned NOT NULL default '0',
-                       page_is_redirect tinyint(1) unsigned NOT NULL default '0',
-                       page_is_new tinyint(1) unsigned NOT NULL default '0',
-                       page_random real unsigned NOT NULL,
-                       page_touched char(14) binary NOT NULL default '',
-                       page_latest int(8) unsigned NOT NULL,
-                       page_len int(8) unsigned NOT NULL,
-
-                       PRIMARY KEY page_id (page_id),
-                       UNIQUE INDEX name_title (page_namespace,page_title),
-                       INDEX (page_random),
-                       INDEX (page_len)
+                       page_id int(8) unsigned NOT NULL auto_increment,
+                       page_namespace int NOT NULL,
+                       page_title varchar(255) binary NOT NULL,
+                       page_restrictions tinyblob NOT NULL default '',
+                       page_counter bigint(20) unsigned NOT NULL default '0',
+                       page_is_redirect tinyint(1) unsigned NOT NULL default '0',
+                       page_is_new tinyint(1) unsigned NOT NULL default '0',
+                       page_random real unsigned NOT NULL,
+                       page_touched char(14) binary NOT NULL default '',
+                       page_latest int(8) unsigned NOT NULL,
+                       page_len int(8) unsigned NOT NULL,
+
+                       PRIMARY KEY page_id (page_id),
+                       UNIQUE INDEX name_title (page_namespace,page_title),
+                       INDEX (page_random),
+                       INDEX (page_len)
                        ) TYPE=InnoDB", __METHOD__ );
                $this->dbw->query( "CREATE TABLE $revision (
                        ) TYPE=InnoDB", __METHOD__ );
                $this->dbw->query( "CREATE TABLE $revision (
-                       rev_id int(8) unsigned NOT NULL auto_increment,
-                       rev_page int(8) unsigned NOT NULL,
-                       rev_text_id int(8) unsigned NOT NULL,
-                       rev_comment tinyblob NOT NULL default '',
-                       rev_user int(5) unsigned NOT NULL default '0',
-                       rev_user_text varchar(255) binary NOT NULL default '',
-                       rev_timestamp char(14) binary NOT NULL default '',
-                       rev_minor_edit tinyint(1) unsigned NOT NULL default '0',
+                       rev_id int(8) unsigned NOT NULL auto_increment,
+                       rev_page int(8) unsigned NOT NULL,
+                       rev_text_id int(8) unsigned NOT NULL,
+                       rev_comment tinyblob NOT NULL default '',
+                       rev_user int(5) unsigned NOT NULL default '0',
+                       rev_user_text varchar(255) binary NOT NULL default '',
+                       rev_timestamp char(14) binary NOT NULL default '',
+                       rev_minor_edit tinyint(1) unsigned NOT NULL default '0',
                        rev_deleted tinyint(1) unsigned NOT NULL default '0',
 
                        rev_deleted tinyint(1) unsigned NOT NULL default '0',
 
-                       PRIMARY KEY rev_page_id (rev_page, rev_id),
-                       UNIQUE INDEX rev_id (rev_id),
-                       INDEX rev_timestamp (rev_timestamp),
-                       INDEX page_timestamp (rev_page,rev_timestamp),
-                       INDEX user_timestamp (rev_user,rev_timestamp),
-                       INDEX usertext_timestamp (rev_user_text,rev_timestamp)
+                       PRIMARY KEY rev_page_id (rev_page, rev_id),
+                       UNIQUE INDEX rev_id (rev_id),
+                       INDEX rev_timestamp (rev_timestamp),
+                       INDEX page_timestamp (rev_page,rev_timestamp),
+                       INDEX user_timestamp (rev_user,rev_timestamp),
+                       INDEX usertext_timestamp (rev_user_text,rev_timestamp)
                        ) TYPE=InnoDB", __METHOD__ );
 
                $maxold = intval( $this->dbw->selectField( 'old', 'max(old_id)', '', __METHOD__ ) );
                        ) TYPE=InnoDB", __METHOD__ );
 
                $maxold = intval( $this->dbw->selectField( 'old', 'max(old_id)', '', __METHOD__ ) );
@@ -452,9 +452,9 @@ class FiveUpgrade extends Maintenance {
                $result = $this->dbr->query(
                        "SELECT cur_id, cur_namespace, cur_title, $cur_text AS text, cur_comment,
                        cur_user, cur_user_text, cur_timestamp, cur_minor_edit, $cur_flags AS flags
                $result = $this->dbr->query(
                        "SELECT cur_id, cur_namespace, cur_title, $cur_text AS text, cur_comment,
                        cur_user, cur_user_text, cur_timestamp, cur_minor_edit, $cur_flags AS flags
-                       FROM $cur
-                       ORDER BY cur_id", __METHOD__ );
-               $add = array();
+                       FROM $cur
+                       ORDER BY cur_id", __METHOD__ );
+               $add = array();
                foreach ( $result as $row ) {
                        $add[] = array(
                                'old_namespace'  => $row->cur_namespace,
                foreach ( $result as $row ) {
                        $add[] = array(
                                'old_namespace'  => $row->cur_namespace,
@@ -511,10 +511,10 @@ class FiveUpgrade extends Maintenance {
                $this->setChunkScale( $chunksize, $maxcur, 'page', __METHOD__ );
                $result = $this->dbr->query( "
                        SELECT cur_id, cur_namespace, cur_title, cur_restrictions, cur_counter, cur_is_redirect, cur_is_new,
                $this->setChunkScale( $chunksize, $maxcur, 'page', __METHOD__ );
                $result = $this->dbr->query( "
                        SELECT cur_id, cur_namespace, cur_title, cur_restrictions, cur_counter, cur_is_redirect, cur_is_new,
-                               cur_random, cur_touched, rev_id, LENGTH(cur_text) AS len
-                       FROM $cur,$revision
-                       WHERE cur_id=rev_page AND rev_timestamp=cur_timestamp AND rev_id > {$maxold}
-                       ORDER BY cur_id", __METHOD__ );
+                                       cur_random, cur_touched, rev_id, LENGTH(cur_text) AS len
+                       FROM $cur,$revision
+                       WHERE cur_id=rev_page AND rev_timestamp=cur_timestamp AND rev_id > {$maxold}
+                       ORDER BY cur_id", __METHOD__ );
                $add = array();
                foreach ( $result as $row ) {
                        $add[] = array(
                $add = array();
                foreach ( $result as $row ) {
                        $add[] = array(
@@ -1246,14 +1246,14 @@ END
                                $dbw->query( <<<END
 INSERT
   INTO $old
                                $dbw->query( <<<END
 INSERT
   INTO $old
-      (old_namespace, old_title,      old_text,
-       old_comment,   old_user,       old_user_text,
-       old_timestamp, old_minor_edit, old_flags,
-       inverse_timestamp)
+         (old_namespace, old_title,      old_text,
+          old_comment,   old_user,       old_user_text,
+          old_timestamp, old_minor_edit, old_flags,
+          inverse_timestamp)
 SELECT cur_namespace, cur_title,      cur_text,
 SELECT cur_namespace, cur_title,      cur_text,
-       cur_comment,   cur_user,       cur_user_text,
-       cur_timestamp, cur_minor_edit, '',
-       inverse_timestamp
+          cur_comment,   cur_user,       cur_user_text,
+          cur_timestamp, cur_minor_edit, '',
+          inverse_timestamp
   FROM $cur
  WHERE cur_namespace=$ns
    AND cur_title=$title
   FROM $cur
  WHERE cur_namespace=$ns
    AND cur_title=$title
index 76a75c5..398e7e1 100644 (file)
@@ -185,7 +185,7 @@ class UserDupes {
                $user = $this->db->tableName( 'user' );
                $result = $this->db->query(
                         "SELECT user_name,COUNT(*) AS n
                $user = $this->db->tableName( 'user' );
                $result = $this->db->query(
                         "SELECT user_name,COUNT(*) AS n
-                           FROM $user
+                               FROM $user
                        GROUP BY user_name
                          HAVING n > 1", $fname );
 
                        GROUP BY user_name
                          HAVING n > 1", $fname );
 
@@ -215,7 +215,7 @@ class UserDupes {
                $firstId  = $firstRow->user_id;
                wfOut( "Record that will be used for '$name' is user_id=$firstId\n" );
 
                $firstId  = $firstRow->user_id;
                wfOut( "Record that will be used for '$name' is user_id=$firstId\n" );
 
-               foreach ( $result as $row ) {           
+               foreach ( $result as $row ) {
                        $dupeId = $row->user_id;
                        wfOut( "... dupe id $dupeId: " );
                        $edits = $this->editCount( $dupeId );
                        $dupeId = $row->user_id;
                        wfOut( "... dupe id $dupeId: " );
                        $edits = $this->editCount( $dupeId );
index 88dfc3d..deb12bc 100644 (file)
@@ -83,7 +83,7 @@ class userOptions {
 
        #
        # Modes.
 
        #
        # Modes.
-       # 
+       #
 
        /** List default options and their value */
        private function LISTER( ) {
 
        /** List default options and their value */
        private function LISTER( ) {
@@ -174,7 +174,7 @@ class userOptions {
                                        print "Setting {$this->mAnOption} for $username from '{$this->mOldValue}' to '{$this->mNewValue}'): ";
                                }
 
                                        print "Setting {$this->mAnOption} for $username from '{$this->mOldValue}' to '{$this->mNewValue}'): ";
                                }
 
-                               // Change value 
+                               // Change value
                                $user->setOption( $this->mAnOption, $this->mNewValue );
 
                                // Will not save the settings if run with --dry
                                $user->setOption( $this->mAnOption, $this->mNewValue );
 
                                // Will not save the settings if run with --dry
@@ -212,25 +212,25 @@ This script pass through all users and change one of their options.
 The new option is NOT validated.
 
 Usage:
 The new option is NOT validated.
 
 Usage:
-    php userOptions.php --list
-    php userOptions.php [user option] --usage
-    php userOptions.php [options] <user option> --old <old value> --new <new value>
+       php userOptions.php --list
+       php userOptions.php [user option] --usage
+       php userOptions.php [options] <user option> --old <old value> --new <new value>
 
 Switchs:
 
 Switchs:
-    --list : list available user options and their default value
+       --list : list available user options and their default value
 
 
-    --usage : report all options statistics or just one if you specify it.
+       --usage : report all options statistics or just one if you specify it.
 
 
-    --old <old value> : the value to look for
-    --new <new value> : new value to update users with
+       --old <old value> : the value to look for
+       --new <new value> : new value to update users with
 
 Options:
 
 Options:
-    --nowarn: hides the 5 seconds warning
-    --quiet : do not print what is happening
-    --dry   : do not save user settings back to database
+       --nowarn: hides the 5 seconds warning
+       --quiet : do not print what is happening
+       --dry   : do not save user settings back to database
 
 USAGE;
 
 USAGE;
-    exit( 0 );
+       exit( 0 );
        }
 
        /** The warning message and countdown */
        }
 
        /** The warning message and countdown */