* Proper redirect deletion
authorVictor Vasiliev <vasilievvv@users.mediawiki.org>
Sat, 29 Dec 2007 14:43:17 +0000 (14:43 +0000)
committerVictor Vasiliev <vasilievvv@users.mediawiki.org>
Sat, 29 Dec 2007 14:43:17 +0000 (14:43 +0000)
* Don't use ImagePage on redirects

includes/Article.php
includes/Wiki.php
includes/filerepo/File.php
includes/filerepo/FileRepo.php

index 6e4fac4..d867ce4 100644 (file)
@@ -2263,6 +2263,7 @@ class Article {
                        $dbw->delete( 'externallinks', array( 'el_from' => $id ) );
                        $dbw->delete( 'langlinks', array( 'll_from' => $id ) );
                        $dbw->delete( 'redirect', array( 'rd_from' => $id ) );
+                       $dbw->delete( 'imageredirects', array( 'ir_from' => $t ) );
                }
 
                # If using cleanup triggers, we can skip some manual deletes
index 4920ff2..7945c7a 100644 (file)
@@ -219,12 +219,17 @@ class MediaWiki {
                }
 
                switch( $title->getNamespace() ) {
-               case NS_IMAGE:
-                       return new ImagePage( $title );
-               case NS_CATEGORY:
-                       return new CategoryPage( $title );
-               default:
-                       return new Article( $title );
+                       case NS_IMAGE:
+                               $file = RepoGroup::singleton()->findFile( $title->getText() );
+                               if( $file && $file->getRedirectedFrom() ) {
+                                       return new Article( $title );
+                               } else {
+                                       return new ImagePage( $title );
+                               }
+                       case NS_CATEGORY:
+                               return new CategoryPage( $title );
+                       default:
+                               return new Article( $title );
                }
        }
 
index 7e222a0..36729e1 100644 (file)
@@ -46,7 +46,7 @@ abstract class File {
        /**
         * The following member variables are not lazy-initialised
         */
-       var $repo, $title, $lastError;
+       var $repo, $title, $lastError, $redirected;
 
        /**
         * Call this constructor from child classes
@@ -1136,6 +1136,9 @@ abstract class File {
                        return '';
                }
        }
+       
+       function getRedirectedFrom()   { return $this->redirected; }
+       function setRedirectedFrom( $v ) { $this->redirected = $v; }
 }
 /**
  * Aliases for backwards compatibility with 1.6
index 90d284f..648acf0 100644 (file)
@@ -90,11 +90,13 @@ abstract class FileRepo {
                        return false;
                }
                if ( $img->exists() && ( !$time || $img->getTimestamp() <= $time ) ) {
+                       $img->setRedirectedFrom( $redirected );
                        return $img;
                }
                # Now try an old version of the file
                $img = $this->newFile( $title, $time );
                if ( $img->exists() ) {
+                       $img->setRedirectedFrom( $redirected );
                        return $img;
                }