https://www.mediawiki.org/wiki/Special:Code/MediaWiki/114756
Revision: 114756
Author: bsitu
Date: 2012-04-06 01:02:35 +0000 (Fri, 06 Apr 2012)
Log Message:
-----------
sync patrol and pagetriage queue
Modified Paths:
--------------
trunk/extensions/PageTriage/PageTriage.hooks.php
trunk/extensions/PageTriage/PageTriage.php
trunk/extensions/PageTriage/includes/PageTriage.php
Modified: trunk/extensions/PageTriage/PageTriage.hooks.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.hooks.php 2012-04-06 00:45:51 UTC
(rev 114755)
+++ trunk/extensions/PageTriage/PageTriage.hooks.php 2012-04-06 01:02:35 UTC
(rev 114756)
@@ -158,4 +158,26 @@
return true;
}
+
+ /**
+ * Sync records from patrol queue to triage queue
+ *
+ * 'MarkPatrolledComplete': after an edit is marked patrolled
+ * $rcid: ID of the revision marked as patrolled
+ * $user: user (object) who marked the edit patrolled
+ * $wcOnlySysopsCanPatrol: config setting indicating whether the user
+ * must be a sysop to patrol the edit
+ */
+ public static function onMarkPatrolledComplete( $rcid, &$user,
$wcOnlySysopsCanPatrol ) {
+ $rc = RecentChange::newFromId( $rcid );
+
+ if ( $rc ) {
+ $pt = new PageTriage( $rc->getAttribute( 'rc_cur_id' )
);
+ if ( $pt->addToPageTriageQueue() ) {
+ $pt->setTriageStatus( '1', $user, true );
+ }
+ }
+
+ return true;
+ }
}
Modified: trunk/extensions/PageTriage/PageTriage.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.php 2012-04-06 00:45:51 UTC (rev
114755)
+++ trunk/extensions/PageTriage/PageTriage.php 2012-04-06 01:02:35 UTC (rev
114756)
@@ -86,6 +86,7 @@
$wgHooks['GetPreferences'][] = 'PageTriageHooks::onGetPreferences';
$wgHooks['ArticleViewHeader'][] = 'PageTriageHooks::onArticleViewHeader';
$wgHooks['ArticleDeleteComplete'][] =
'PageTriageHooks::onArticleDeleteComplete';
+$wgHooks['MarkPatrolledComplete'][] =
'PageTriageHooks::onMarkPatrolledComplete';
$wgPageTriageMarkPatrolledLinkExpiry = 3600 * 24 * 30; // 30 days
Modified: trunk/extensions/PageTriage/includes/PageTriage.php
===================================================================
--- trunk/extensions/PageTriage/includes/PageTriage.php 2012-04-06 00:45:51 UTC
(rev 114755)
+++ trunk/extensions/PageTriage/includes/PageTriage.php 2012-04-06 01:02:35 UTC
(rev 114756)
@@ -9,12 +9,14 @@
// additional property
protected $mMetadata;
+ protected $mLoaded;
/**
* @param $pageId int
*/
public function __construct( $pageId ) {
$this->mPageId = intval( $pageId );
+ $this->mLoaded = false;
}
/**
@@ -22,9 +24,16 @@
* @return bool
*/
public function addToPageTriageQueue() {
+ if ( $this->retrieve() ) {
+ if ( $this->mReviewed ) {
+ $this->setTriageStatus( '0' );
+ }
+ return true;
+ }
+
$dbr = wfGetDB( DB_SLAVE );
$dbw = wfGetDB( DB_MASTER );
-
+
// Pull page creation date from database
$res = $dbr->selectRow(
'revision',
@@ -32,19 +41,19 @@
array( 'rev_page' => $this->mPageId ),
__METHOD__
);
-
+
if ( !$res ) {
return false;
}
-
+
$row = array(
'ptrp_page_id' => $this->mPageId,
'ptrp_reviewed' => '0',
'ptrp_timestamp' => $res->creation_date
);
+
+ $dbw->insert( 'pagetriage_page', $row, __METHOD__, array(
'IGNORE' ) );
- $dbw->replace( 'pagetriage_page', array( 'ptrp_page_id' ),
$row, __METHOD__ );
-
return true;
}
@@ -52,27 +61,39 @@
* set the triage status of an article in pagetriage queue
* @param $reviewed string - '1'/'0'
* @param $user User
+ * @param $fromRc bool
*/
- public function setTriageStatus( $reviewed, User $user = null ) {
- $dbw = wfGetDB( DB_MASTER );
+ public function setTriageStatus( $reviewed, User $user = null, $fromRc
= false ) {
+
+ if ( !in_array( $reviewed, array( '1', '0') ) ) {
+ $reviewed = '0';
+ }
- $row = array();
- if ( $reviewed === '1' ) {
- $row['ptrp_reviewed'] = '1';
- } else {
- $row['ptrp_reviewed'] = '0';
+ if ( !$this->retrieve() || $this->mReviewed == $reviewed ) {
+ return;
}
- $this->mReviewed = $row['ptrp_reviewed'];
+ $dbw = wfGetDB( DB_MASTER );
+ $row = array( 'ptrp_reviewed' => $reviewed );
+ $this->mReviewed = $reviewed;
+
$dbw->begin();
+ //@Todo - case for marking a page as untriaged and make sure
this logic is correct
+ if ( !$fromRc && $this->mReviewed && !is_null( $user ) ) {
+ $rc = RecentChange::newFromConds( array( 'rc_cur_id' =>
$this->mPageId, 'rc_new' => '1' ) );
+ if ( $rc && !$rc->getAttribute('rc_patrolled') ) {
+ $rc->reallyMarkPatrolled();
+ PatrolLog::record( $rc, false, $user );
+ }
+ }
+
$dbw->update( 'pagetriage_page', $row, array( 'ptrp_page_id' =>
$this->mPageId ), __METHOD__ );
-
// Log it if set by user
if ( $dbw->affectedRows() > 0 && !is_null( $user ) &&
!$user->isAnon() ) {
$this->logUserTriageAction( $user );
}
- $dbw->commit();
+ $dbw->commit();
}
/**
@@ -80,6 +101,10 @@
* @return bool
*/
public function retrieve() {
+ if ( $this->mLoaded ) {
+ return true;
+ }
+
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->selectRow(
@@ -88,13 +113,14 @@
array( 'ptrp_page_id' => $this->mPageId ),
__METHOD__
);
-
+
if ( !$res ) {
return false;
}
-
+
$this->mReviewed = $res->ptrp_reviewed;
$this->mTimestamp = $res->ptrp_timestamp;
+ $this->mLoaded = true;
return true;
}
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs