https://www.mediawiki.org/wiki/Special:Code/MediaWiki/114875

Revision: 114875
Author:   bsitu
Date:     2012-04-13 00:41:19 +0000 (Fri, 13 Apr 2012)
Log Message:
-----------
alter pagetriage page deletion process

Modified Paths:
--------------
    trunk/extensions/PageTriage/PageTriage.hooks.php
    trunk/extensions/PageTriage/includes/ArticleMetadata.php
    trunk/extensions/PageTriage/includes/PageTriage.php

Modified: trunk/extensions/PageTriage/PageTriage.hooks.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.hooks.php    2012-04-13 00:22:43 UTC 
(rev 114874)
+++ trunk/extensions/PageTriage/PageTriage.hooks.php    2012-04-13 00:41:19 UTC 
(rev 114875)
@@ -108,8 +108,8 @@
         */
        public static function onArticleDeleteComplete( $article, $user, 
$reason, $id ) {
                // delete everything
-               $articleMetadata = new ArticleMetadata( array( $id ) );
-               $articleMetadata->deleteMetadata();
+               $pageTriage = new PageTriage( $id );
+               $pageTriage->deleteFromPageTriage();
                return true;
        }
 

Modified: trunk/extensions/PageTriage/includes/ArticleMetadata.php
===================================================================
--- trunk/extensions/PageTriage/includes/ArticleMetadata.php    2012-04-13 
00:22:43 UTC (rev 114874)
+++ trunk/extensions/PageTriage/includes/ArticleMetadata.php    2012-04-13 
00:41:19 UTC (rev 114875)
@@ -24,40 +24,17 @@
         *
         * @param $pageId - the page id to be deleted
         */
-       public function deleteMetadata( $pageId = null ) {
-               if ( is_null( $pageId ) ) {
-                       $pageId = $this->mPageId;
-               }
-
-               if ( $pageId ) {
-                       // $pageId can be an array or a single value.
+       public function deleteMetadata() {
+               if ( $this->mPageId ) {
                        $dbw  = wfGetDB( DB_MASTER );
-       
-                       $dbw->begin();
                        $dbw->delete(
                                'pagetriage_page_tags',
-                               array( 'ptrpt_page_id' => $pageId ),
+                               array( 'ptrpt_page_id' => $this->mPageId ),
                                __METHOD__,
                                array()
                        );
-       
-                       $dbw->delete(
-                               'pagetriage_page',
-                               array( 'ptrp_page_id' => $pageId ),
-                               __METHOD__,
-                               array()
-                       );
-       
-                       $dbw->delete(
-                               'pagetriage_log',
-                               array( 'ptrl_page_id' => $pageId ),
-                               __METHOD__,
-                               array()
-                       );
-       
                        // also remove it from the cache
-                       $this->flushMetadataFromCache( $pageId );
-                       $dbw->commit();
+                       $this->flushMetadataFromCache();
                }
 
                return true;
@@ -85,7 +62,6 @@
                                $wgMemc->replace( $keyPrefix . '-' . $val, 
array_merge( $data, $update ), 86400 );
                        }
                }
-               
        }
 
        /**
@@ -158,13 +134,8 @@
        public function getMetadata() {
                $articles = $this->mPageId;
                $metaData = $this->getMetadataFromCache();
+               $articles = self::getPageWithoutMetadata( $articles, $metaData 
);
 
-               foreach ( $articles as $key => $pageId ) {
-                       if ( isset( $metaData[$pageId] ) ) {
-                               unset( $articles[$key] );
-                       }
-               }
-
                // Grab metadata from database after cache attempt
                if ( $articles ) {
                        $dbr = wfGetDB( DB_SLAVE );
@@ -185,11 +156,7 @@
                                }
                        }
 
-                       foreach ( $articles as $key => $pageId ) {
-                               if ( isset( $pageData[$pageId] ) ) {
-                                       unset( $articles[$key] );
-                               }
-                       }
+                       $articles = self::getPageWithoutMetadata( $articles, 
$pageData );
                        // Compile the data if it is not available
                        if ( $articles ) {
                                $acp = ArticleCompileProcessor::newFromPageId( 
$articles );
@@ -209,6 +176,18 @@
        }
 
        /**
+        * Get the pages without metadata yet
+        */
+       private static function getPageWithoutMetadata( $articles, $data ) {
+               foreach ( $articles as $key => $pageId ) {
+                       if ( isset( $data[$pageId] ) ) {
+                               unset( $articles[$key] );
+                       }
+               }
+               return $articles;
+       }
+       
+       /**
         * Return a list of valid metadata
         * @return array
         */

Modified: trunk/extensions/PageTriage/includes/PageTriage.php
===================================================================
--- trunk/extensions/PageTriage/includes/PageTriage.php 2012-04-13 00:22:43 UTC 
(rev 114874)
+++ trunk/extensions/PageTriage/includes/PageTriage.php 2012-04-13 00:41:19 UTC 
(rev 114875)
@@ -10,6 +10,7 @@
 
        // additional property
        protected $mLoaded;
+       protected $mArticleMetadata;
 
        /**
         * @param $pageId int
@@ -174,6 +175,39 @@
                $dbw->insert( 'pagetriage_log', $row, __METHOD__ );
        }
        
+       protected function loadArticleMetadata() {
+               if ( !$this->mArticleMetadata ) {
+                       $this->mArticleMetadata = new ArticleMetadata( array( 
$this->mPageId ));
+               }
+       }
+       
+       /**
+        * Delete the page from page triage queue and log
+        */
+       public function deleteFromPageTriage() {
+               $dbw = wfGetDB( DB_MASTER );
+
+               $this->loadArticleMetadata();
+
+               $dbw->begin();
+
+               $dbw->delete(
+                               'pagetriage_page',
+                               array( 'ptrp_page_id' => $this->mPageId ),
+                               __METHOD__,
+                               array()
+               );
+               $dbw->delete(
+                               'pagetriage_log',
+                               array( 'ptrl_page_id' => $this->mPageId ),
+                               __METHOD__,
+                               array()
+               );
+               $this->mArticleMetadata->deleteMetadata();
+
+               $dbw->commit();
+       }
+       
 }
 
 class PageTriageMissingRevisionException extends MWException {}
\ No newline at end of file


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to