Addshore has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/234299

Change subject: Avoid 2 db calls in NewsletterManageTablePager
......................................................................

Avoid 2 db calls in NewsletterManageTablePager

Use a join instead!

Change-Id: I9c301200a1e08cc770db7d6593d847243b346203
---
M includes/NewsletterManageTablePager.php
1 file changed, 21 insertions(+), 37 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Newsletter 
refs/changes/99/234299/1

diff --git a/includes/NewsletterManageTablePager.php 
b/includes/NewsletterManageTablePager.php
index 6b5c953..304a192 100644
--- a/includes/NewsletterManageTablePager.php
+++ b/includes/NewsletterManageTablePager.php
@@ -2,8 +2,6 @@
 
 class NewsletterManageTablePager extends TablePager {
 
-       private $newsletterOwners = array();
-
        /**
         * @var null|string[]
         */
@@ -22,28 +20,17 @@
        }
 
        public function getQueryInfo() {
-               $info = array(
-                       'tables' => array( 'nl_publishers' ),
+               return array(
+                       'tables' => array( 'nl_publishers', 'nl_newsletters' ),
                        'fields' => array(
                                'newsletter_id',
                                'publisher_id',
+                               'is_owner' => ( 'publisher_id = nl_owner_id' ),
+                       ),
+                       'join_conds' => array(
+                               'nl_newsletters' => array( 'LEFT JOIN', 
'newsletter_id = nl_id' ),
                        ),
                );
-
-               // get user ids of all newsletter owners
-               $dbr = wfGetDB( DB_SLAVE );
-               $res = $dbr->select(
-                       'nl_newsletters',
-                       array( 'nl_owner_id', 'nl_id' ),
-                       array(),
-                       __METHOD__,
-                       array( 'DISTINCT' )
-               );
-               foreach ( $res as $row ) {
-                       $this->newsletterOwners[$row->nl_id] = 
$row->nl_owner_id;
-               }
-
-               return $info;
        }
 
        public function formatValue( $field, $value ) {
@@ -82,8 +69,7 @@
                                                        'type' => 'checkbox',
                                                        'disabled' => 'true',
                                                        'id' => 
'newslettermanage',
-                                                       'checked' => 
$this->newsletterOwners[$this->mCurrentRow->newsletter_id]
-                                                       === 
$this->mCurrentRow->publisher_id ? true : false,
+                                                       'checked' => 
$this->mCurrentRow->is_owner ? true : false,
                                                )
                                        ) . $this->msg( 
'newsletter-owner-radiobutton-label' );
 
@@ -93,28 +79,26 @@
                                                        'type' => 'checkbox',
                                                        'disabled' => 'true',
                                                        'id' => 
'newslettermanage',
-                                                       'checked' => 
$this->newsletterOwners[$this->mCurrentRow->newsletter_id]
-                                                       === 
$this->mCurrentRow->publisher_id ? false : true,
+                                                       'checked' => 
$this->mCurrentRow->is_owner ? false : true,
                                                )
                                        ) . $this->msg( 
'newsletter-publisher-radiobutton-label' );
 
                                return $radioOwner . $radioPublisher;
                        case 'action' :
-                               $remButton = HTML::element(
-                                       'input',
-                                       array(
-                                               'type' => 'button',
-                                               'value' => 'Remove',
-                                               'name' => $previous,
-                                               'id' => 
$this->mCurrentRow->publisher_id,
-                                       )
-                               );
+                               $isCurrentUser = 
$this->mCurrentRow->publisher_id == $this->getUser()->getId();
 
-                               return ( 
$this->newsletterOwners[$this->mCurrentRow->newsletter_id] !==
-                                       $this->mCurrentRow->publisher_id &&
-                                       
$this->newsletterOwners[$this->mCurrentRow->newsletter_id] ==
-                                       $this->getUser()->getId() ) ? 
$remButton : '';
-
+                               if ( !$this->mCurrentRow->is_owner && 
!$isCurrentUser ) {
+                                       return HTML::element(
+                                               'input',
+                                               array(
+                                                       'type' => 'button',
+                                                       'value' => 'Remove',
+                                                       'name' => $previous,
+                                                       'id' => 
$this->mCurrentRow->publisher_id,
+                                               )
+                                       );
+                               }
+                               return '';
                }
        }
 

-- 
To view, visit https://gerrit.wikimedia.org/r/234299
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9c301200a1e08cc770db7d6593d847243b346203
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Newsletter
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>

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

Reply via email to