PG hack for temporary tables breaks MySQL 4.1. :P special-case it
[lhc/web/wiklou.git] / maintenance / remove-brokenlinks.php
index 17886c7..d61ff85 100644 (file)
@@ -1,39 +1,25 @@
-<?
-
-# Remove spurious brokenlinks
-
-if ( ! is_readable( "../LocalSettings.php" ) ) {
-       print "A copy of your installation's LocalSettings.php\n" .
-         "must exist in the source directory.\n";
-       exit();
-}
-
-$wgCommandLineMode = true;
-$DP = "../includes";
-include_once( "../LocalSettings.php" );
-include_once( "../AdminSettings.php" );
-
-$sep = strchr( $include_path = ini_get( "include_path" ), ";" ) ? ";" : ":";
-ini_set( "include_path", "$IP$sep$include_path" );
-
-include_once( "Setup.php" );
-include_once( "./rebuildrecentchanges.inc" );
+<?php
+/**
+ * Remove spurious brokenlinks
+ * @package MediaWiki
+ * @subpackage Maintenance
+ */
+
+/** */
+require_once( "commandLine.inc" );
+require_once( "./rebuildrecentchanges.inc" );
 $wgTitle = Title::newFromText( "Rebuild brokenlinks script" );
-set_time_limit(0);
-
-$wgDBuser                      = $wgDBadminuser;
-$wgDBpassword          = $wgDBadminpassword;
-
-
-# That above is common code and should be hidden away :(
 
 $n = 0;
 
 echo "Checking for broken brokenlinks...\n";
 
-$sql = "SELECT cur_namespace,cur_title,cur_id FROM cur";
-$res = wfQuery( $sql, DB_WRITE );
-while( $s = wfFetchObject( $res ) ) {
+$dbw =& wfGetDB( DB_MASTER );
+extract( $dbw->tableNames( 'brokenlinks', 'cur', 'linkscc' );
+
+$res = $dbw->select( 'cur', array( 'cur_namespace', 'cur_title', 'cur_id' ), false );
+
+while( $s = $dbw->fetchObject( $res ) ) {
        $n++;
        if(($n % 500) == 0) {
                echo "$n\n";
@@ -41,21 +27,22 @@ while( $s = wfFetchObject( $res ) ) {
        $title = Title::makeTitle( $s->cur_namespace, $s->cur_title );
        if($title) {
                $t = $title->getPrefixedDBKey();
-               $tt = wfStrencode( $t );
+               $tt = $dbw->strencode( $t );
                $any = false;
-               $sql2 = "SELECT bl_from,cur_id,cur_namespace,cur_title FROM brokenlinks,cur WHERE bl_to='$tt' AND cur_id=bl_from";
-               $res2 = wfQuery( $sql2, DB_WRITE );
-               while( $s = wfFetchObject( $res2 ) ) {
+               $sql2 = "SELECT bl_from,cur_id,cur_namespace,cur_title FROM $brokenlinks,$cur " .
+                       "WHERE bl_to='$tt' AND cur_id=bl_from";
+               $res2 = $dbw->query( $sql2 );
+               while( $s = $dbw->fetchObject( $res2 ) ) {
                        $from = Title::makeTitle( $s->cur_namespace, $s->cur_title );
                        $xt = $from->getPrefixedText();
                        echo "Found bad brokenlink to [[$t]] from page #$s->cur_id [[$xt]]!\n";
                        $any = true;
                }
-               wfFreeResult( $res2 );
+               $dbw->freeResult( $res2 );
                if($any) {
                        echo "Removing brokenlinks to [[$t]]...\n";
-                       $sql3 = "DELETE FROM brokenlinks WHERE bl_to='$tt'";
-                       $res3 = wfQuery( $sql3, DB_WRITE );
+                       $sql3 = "DELETE FROM $brokenlinks WHERE bl_to='$tt'";
+                       $res3 = $dbw->query( $sql3 );
                        #echo "-- $sql3\n";
                }
        } else {
@@ -65,7 +52,7 @@ while( $s = wfFetchObject( $res ) ) {
 echo "Done at $n.\n\n";
 
 echo "Clearing linkscc table...\n";
-$sql4 = "DELETE FROM linkscc";
-wfQuery( $sql4, DB_WRITE );
+$sql4 = "DELETE FROM $linkscc";
+wfQuery( $sql4, DB_MASTER );
 
 ?>