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