Suboptimal solution for one of the issues behind bug 12049 (i.e. that
authorRobert Stojnić <rainman@users.mediawiki.org>
Thu, 3 Apr 2008 15:09:56 +0000 (15:09 +0000)
committerRobert Stojnić <rainman@users.mediawiki.org>
Thu, 3 Apr 2008 15:09:56 +0000 (15:09 +0000)
don't get deleted from search index) :
* hooks ArticleDelete[Complete] are now called from FileDeleteForm as well,
  this seems to be the expected behavior by most extensions (OAI, TitleKey,
  Rsync, ...).
* delete via API however still misses these hooks

Other possible solutions:
* move hooks into backend - bad since we want a clean backend
* create FileDelete hook (per bug 11276) - seems to me as unnecessary
  duplication of code logic since article might or might not be
  deleted during file deletion
* make a new Article function and wrap calls - will pollute clean Article
  doDelete and doDeleteArticle calls

includes/FileDeleteForm.php

index 8a6f058..8d6fc9a 100644 (file)
@@ -91,8 +91,11 @@ class FileDeleteForm {
                                $status = $this->file->delete( $reason, $suppress );
                                if( $status->ok ) {
                                        // Need to delete the associated article
-                                       $article = new Article( $this->title );
-                                       $article->doDeleteArticle( $reason, $suppress );
+                                       $article = new Article( $this->title );                                 
+                                       if( wfRunHooks('ArticleDelete', array(&$article, &$wgUser, &$reason)) ){                                                                                                
+                                               if( $article->doDeleteArticle( $reason, $suppress ) )
+                                                       wfRunHooks('ArticleDeleteComplete', array(&$article, &$wgUser, $reason));
+                                       }
                                }
                        }
                        if( $status->isGood() ) wfRunHooks('FileDeleteComplete', array(