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