Revision: 46319
Author:   aaron
Date:     2009-01-27 04:02:37 +0000 (Tue, 27 Jan 2009)

Log Message:
-----------
Make pristine precedence actually work if set

Modified Paths:
--------------
    trunk/extensions/FlaggedRevs/FlaggedRevision.php

Modified: trunk/extensions/FlaggedRevs/FlaggedRevision.php
===================================================================
--- trunk/extensions/FlaggedRevs/FlaggedRevision.php    2009-01-27 03:47:01 UTC 
(rev 46318)
+++ trunk/extensions/FlaggedRevs/FlaggedRevision.php    2009-01-27 04:02:37 UTC 
(rev 46319)
@@ -111,7 +111,6 @@
                        $columns += self::selectTextFields();
                }
                $options = array();
-               $row = null;
                # Short-circuit query
                $pageId = $title->getArticleID( $flags & FR_FOR_UPDATE ? 
GAID_FOR_UPDATE : 0 );
                # Short-circuit query
@@ -127,11 +126,10 @@
                                        'fr_page_id = fp_page_id',
                                        'fp_stable = fr_rev_id' ),
                                __METHOD__  );
-                       if( !$row )
-                               return null;
+                       if( !$row ) return null;
                } else {
-                       if( $flags & FR_FOR_UPDATE )
-                               $options[] = 'FOR UPDATE';
+                       if( $flags & FR_FOR_UPDATE ) $options[] = 'FOR UPDATE';
+                       $row = null;
                        # Get visiblity settings...
                        $config = FlaggedRevs::getPageVisibilitySettings( 
$title, true );
                        $dbw = wfGetDB( DB_MASTER );
@@ -144,18 +142,19 @@
                                                'fr_quality = 2',
                                                'rev_id = fr_rev_id',
                                                'rev_page = fr_page_id',
-                                               'rev_deleted & 
'.Revision::DELETED_TEXT => 0),
+                                               'rev_deleted & 
'.Revision::DELETED_TEXT => 0 ),
                                        __METHOD__,
-                                       $options );
+                                       $options
+                               );
                                # Looks like a plausible revision
-                               $row = $prow ? $prow : null;
+                               $row = $prow ? $prow : $row;
                        }
+                       if( $row && $config['select'] == FLAGGED_VIS_PRISTINE ) 
{
+                               // we have what we want already
                        # Look for the latest quality revision...
-                       if( FlaggedRevs::qualityVersions() && $config['select'] 
!= FLAGGED_VIS_LATEST ) {
-                               // If we found a pristine rev above, this one 
must be newer, unless
-                               // we specifically want pristine revs to have 
precedence...
-                               $newerClause = ($row && $config['select'] != 
FLAGGED_VIS_PRISTINE) ?
-                                       "fr_rev_id > {$row->fr_rev_id}" : "1 = 
1";
+                       } else if( FlaggedRevs::qualityVersions() && 
$config['select'] != FLAGGED_VIS_LATEST ) {
+                               // If we found a pristine rev above, this one 
must be newer...
+                               $newerClause = $row ? "fr_rev_id > 
{$row->fr_rev_id}" : "1 = 1";
                                $qrow = $dbw->selectRow( 
array('flaggedrevs','revision'),
                                        $columns,
                                        array( 'fr_page_id' => $pageId,
@@ -163,9 +162,10 @@
                                                $newerClause,
                                                'rev_id = fr_rev_id',
                                                'rev_page = fr_page_id',
-                                               'rev_deleted & 
'.Revision::DELETED_TEXT => 0),
+                                               'rev_deleted & 
'.Revision::DELETED_TEXT => 0 ),
                                        __METHOD__,
-                                       $options );
+                                       $options
+                               );
                                $row = $qrow ? $qrow : $row;
                        }
                        # Do we have one? If not, try the latest reviewed 
revision...
@@ -175,11 +175,11 @@
                                        array( 'fr_page_id' => $pageId,
                                                'rev_id = fr_rev_id',
                                                'rev_page = fr_page_id',
-                                               'rev_deleted & 
'.Revision::DELETED_TEXT => 0),
+                                               'rev_deleted & 
'.Revision::DELETED_TEXT => 0 ),
                                        __METHOD__,
-                                       $options );
-                               if( !$row )
-                                       return null;
+                                       $options
+                               );
+                               if( !$row ) return null;
                        }
                }
                $frev = new FlaggedRevision( $row );



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

Reply via email to