https://www.mediawiki.org/wiki/Special:Code/MediaWiki/114861
Revision: 114861
Author: bsitu
Date: 2012-04-12 00:55:03 +0000 (Thu, 12 Apr 2012)
Log Message:
-----------
Add page triage page id validation
Modified Paths:
--------------
trunk/extensions/PageTriage/PageTriage.php
trunk/extensions/PageTriage/api/ApiPageTriageGetMetadata.php
trunk/extensions/PageTriage/includes/ArticleMetadata.php
trunk/extensions/PageTriage/includes/PageTriage.php
Modified: trunk/extensions/PageTriage/PageTriage.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.php 2012-04-12 00:32:44 UTC (rev
114860)
+++ trunk/extensions/PageTriage/PageTriage.php 2012-04-12 00:55:03 UTC (rev
114861)
@@ -80,7 +80,6 @@
$wgAutoloadClasses['ApiPageTriageAction'] = $dir .
'api/ApiPageTriageAction.php';
// custom exceptions
-$wgAutoloadClasses['MWArticleMetadataMissingPageIdException'] = $dir .
'includes/ArticleMetadata.php';
$wgAutoloadClasses['MWPageTriageUtilInvalidNumberException'] = $dir .
'includes/PageTriageUtil.php';
$wgAutoloadClasses['MWPageTriageMissingRevisionException'] = $dir .
'includes/PageTriage.php';
Modified: trunk/extensions/PageTriage/api/ApiPageTriageGetMetadata.php
===================================================================
--- trunk/extensions/PageTriage/api/ApiPageTriageGetMetadata.php
2012-04-12 00:32:44 UTC (rev 114860)
+++ trunk/extensions/PageTriage/api/ApiPageTriageGetMetadata.php
2012-04-12 00:55:03 UTC (rev 114861)
@@ -11,7 +11,7 @@
$this->dieUsage( 'Too many pages in the request',
'exceed-page-limit' );
}
- $articleMetadata = new ArticleMetadata( $params['page_id'] );
+ $articleMetadata = new ArticleMetadata( $params['page_id'],
false );
$metaData = $articleMetadata->getMetadata();
$result = array( 'result' => 'success', 'page' => $metaData );
Modified: trunk/extensions/PageTriage/includes/ArticleMetadata.php
===================================================================
--- trunk/extensions/PageTriage/includes/ArticleMetadata.php 2012-04-12
00:32:44 UTC (rev 114860)
+++ trunk/extensions/PageTriage/includes/ArticleMetadata.php 2012-04-12
00:55:03 UTC (rev 114861)
@@ -9,15 +9,14 @@
/**
* @param $pageId array - list of page id
+ * @param $validated bool - whether the page ids are validated
*/
- public function __construct( array $pageId ) {
- $pageId = self::validatePageId( $pageId );
-
- if ( !$pageId ) {
- throw new MWArticleMetadataMissingPageIdException(
'Missing page id' );
+ public function __construct( array $pageId, $validated = true ) {
+ if ( $validated ) {
+ $this->mPageId = $pageId;
+ } else {
+ $this->mPageId = self::validatePageId( $pageId );
}
-
- $this->mPageId = $pageId;
}
/**
@@ -26,39 +25,41 @@
* @param $pageId - the page id to be deleted
*/
public function deleteMetadata( $pageId = null ) {
- if( is_null($pageId) ) {
+ if ( is_null( $pageId ) ) {
$pageId = $this->mPageId;
}
- // $pageId can be an array or a single value.
- $dbw = wfGetDB( DB_MASTER );
+ if ( $pageId ) {
+ // $pageId can be an array or a single value.
+ $dbw = wfGetDB( DB_MASTER );
+
+ $dbw->begin();
+ $dbw->delete(
+ 'pagetriage_page_tags',
+ array( 'ptrpt_page_id' => $pageId ),
+ __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();
+ }
- $dbw->begin();
- $dbw->delete(
- 'pagetriage_page_tags',
- array( 'ptrpt_page_id' => $pageId ),
- __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();
-
return true;
}
@@ -200,7 +201,7 @@
array( 'ptrt_tag_id', 'ptrt_tag_name' ),
array( ),
__METHOD__
- );
+ );
foreach ( $res as $row ) {
$tags[$row->ptrt_tag_name] = $row->ptrt_tag_id;
@@ -210,25 +211,53 @@
}
/**
- * Typecast the value in page id array to int
+ * Typecast the value in page id array to int and verify that it's
+ * in page triage queue
* @param $pageIds array
* @return array
*/
public static function validatePageId( array $pageIds ) {
+ static $cache = array();
+
$cleanUp = array();
- foreach ( $pageIds as $val ) {
+ foreach ( $pageIds as $key => $val ) {
$casted = intval( $val );
if ( $casted ) {
- $cleanUp[] = $casted;
+ if ( isset( $cache[$casted] ) ) {
+ if ( $cache[$casted] ) {
+ $cleanUp[] = $casted;
+ }
+ unset( $pageIds[$key] );
+ } else {
+ $pageIds[$key] = $casted;
+ $cahce[$casted] = false;
+ }
+ } else {
+ unset( $pageIds[$key] );
}
}
+
+ if ( $pageIds ) {
+ $dbr = wfGetDB( DB_SLAVE );
+
+ $res = $dbr->select(
+ array( 'pagetriage_page' ),
+ array( 'ptrp_page_id' ),
+ array( 'ptrp_page_id' => $pageIds ),
+ __METHOD__
+ );
+
+ foreach ( $res as $row ) {
+ $cleanUp[] = $row->ptrp_page_id;
+ $cache[$row->ptrp_page_id] = true;
+ }
+ }
+
return $cleanUp;
}
}
-class MWArticleMetadataMissingPageIdException extends MWException {}
-
/**
* Compiling metadata for articles
*/
@@ -242,7 +271,7 @@
/**
* @param $pageId array - list of page id
*/
- private function __construct( array $pageId ) {
+ private function __construct( $pageId ) {
$this->mPageId = $pageId;
$this->component = array(
@@ -260,11 +289,13 @@
/**
* Factory for creating an instance
* @param $pageId array
+ * @param $validated bool - whether page ids are validated
* @return ArticleCompileProcessor|false
*/
- public static function newFromPageId( $pageId = array() ) {
- $pageId = ArticleMetadata::validatePageId( $pageId );
-
+ public static function newFromPageId( array $pageId, $validated = true
) {
+ if ( !$validated ) {
+ $pageId = ArticleMetadata::validatePageId( $pageId );
+ }
if ( $pageId ) {
return new ArticleCompileProcessor( $pageId );
} else {
Modified: trunk/extensions/PageTriage/includes/PageTriage.php
===================================================================
--- trunk/extensions/PageTriage/includes/PageTriage.php 2012-04-12 00:32:44 UTC
(rev 114860)
+++ trunk/extensions/PageTriage/includes/PageTriage.php 2012-04-12 00:55:03 UTC
(rev 114861)
@@ -9,7 +9,6 @@
protected $mDeleted;
// additional property
- protected $mMetadata;
protected $mLoaded;
/**
@@ -157,28 +156,7 @@
return true;
}
- public function retrieveTriageLog() {
- // get the triage log
- }
-
- public function loadMetadata() {
- $metaData = new ArticleMetadata( array( $this->mPageId ) );
- $this->mMetadata = $metaData->getMetadata();
- }
-
/**
- * Get the metadata for this page
- * @return array
- */
- public function getMetadata() {
- if ( is_null( $this->mMetadata ) ) {
- $this->loadMetadata();
- }
-
- return $this->mMetadata;
- }
-
- /**
* Log the user triage action
* @param $user User
*/
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs