Pppery has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/400464 )
Change subject: Publisher add/remove functions now take user ids array
......................................................................
Publisher add/remove functions now take user ids array
Bug: T183658
Change-Id: Iec336c09248ed68dbb6f65e7cf29c416fc017844
---
M includes/NewsletterDb.php
M includes/NewsletterEditPage.php
M includes/NewsletterStore.php
M includes/content/NewsletterDataUpdate.php
M tests/NewsletterDbTest.php
5 files changed, 36 insertions(+), 39 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Newsletter
refs/changes/64/400464/1
diff --git a/includes/NewsletterDb.php b/includes/NewsletterDb.php
index 90e3d8d..46d40bc 100644
--- a/includes/NewsletterDb.php
+++ b/includes/NewsletterDb.php
@@ -88,15 +88,19 @@
/**
* @param Newsletter $newsletter
- * @param User $user
+ * @param array $userIds
*
* @return bool success of the action
*/
- public function addPublisher( Newsletter $newsletter, User $user ) {
- $rowData = [
- 'nlp_newsletter_id' => $newsletter->getId(),
- 'nlp_publisher_id' => $user->getId(),
- ];
+ public function addPublisher( Newsletter $newsletter, $userIds ) {
+ $newsletterId = $newsletter->getId();
+ $rowData = [];
+ foreach ( $userIds as $userId ) {
+ $rowData[] = [
+ 'nlp_newsletter_id' => $newsletterId,
+ 'nlp_publisher_id' => $userId
+ ];
+ }
$dbw = $this->lb->getConnection( DB_MASTER );
$dbw->insert( 'nl_publishers', $rowData, __METHOD__, [ 'IGNORE'
] );
@@ -109,14 +113,14 @@
/**
* @param Newsletter $newsletter
- * @param User $user
+ * @param array $userIds
*
* @return bool success of the action
*/
- public function removePublisher( Newsletter $newsletter, User $user ) {
+ public function removePublisher( Newsletter $newsletter, $userIds ) {
$rowData = [
'nlp_newsletter_id' => $newsletter->getId(),
- 'nlp_publisher_id' => $user->getId(),
+ 'nlp_publisher_id' => $userIds
];
$dbw = $this->lb->getConnection( DB_MASTER );
diff --git a/includes/NewsletterEditPage.php b/includes/NewsletterEditPage.php
index 4c0a14f..88480a7 100644
--- a/includes/NewsletterEditPage.php
+++ b/includes/NewsletterEditPage.php
@@ -317,7 +317,8 @@
);
if ( $result->isGood() ) {
$this->newsletter->subscribe( $this->user );
-
NewsletterStore::getDefaultInstance()->addPublisher( $this->newsletter,
$this->user );
+ $store = NewsletterStore::getDefaultInstance();
+ $store->addPublisher( $this->newsletter, [
$this->user->getId() ] );
$this->out->addWikiMsg(
'newsletter-create-confirmation', $this->newsletter->getName() );
return Status::newGood();
} else {
@@ -413,10 +414,7 @@
// Check if people has been added
if ( $added ) {
- // @todo Do this in a batch..
- foreach ( $added as $auId ) {
- $store->addPublisher( $this->newsletter,
User::newFromId( $auId ) );
- }
+ $store->addPublisher( $this->newsletter, $added );
// Adds the new publishers to subscription list
$store->addSubscription( $this->newsletter, $added );
$this->newsletter->notifyPublishers(
@@ -424,11 +422,9 @@
);
}
- // Check if people has been removed
+ // Check if people have been removed
if ( $removed ) {
- foreach ( $removed as $ruId ) {
- $store->removePublisher( $this->newsletter,
User::newFromId( $ruId ) );
- }
+ $store->removePublisher( $this->newsletter, $removed );
$this->newsletter->notifyPublishers(
$removed, $user,
Newsletter::NEWSLETTER_PUBLISHERS_REMOVED
);
diff --git a/includes/NewsletterStore.php b/includes/NewsletterStore.php
index c76221d..ecedf22 100644
--- a/includes/NewsletterStore.php
+++ b/includes/NewsletterStore.php
@@ -65,28 +65,32 @@
/**
* @param Newsletter $newsletter
- * @param User $user
+ * @param array $userIds
*
* @return bool success of the action
*/
- public function addPublisher( Newsletter $newsletter, User $user ) {
- $success = $this->db->addPublisher( $newsletter, $user );
+ public function addPublisher( Newsletter $newsletter, $userIds ) {
+ $success = $this->db->addPublisher( $newsletter, $userIds );
if ( $success ) {
- $this->logger->logPublisherAdded( $newsletter, $user );
+ foreach ( $userIds as $userId ) {
+ $this->logger->logPublisherAdded( $newsletter,
User::newFromId( $userId ) );
+ }
}
return $success;
}
/**
* @param Newsletter $newsletter
- * @param User $user
+ * @param array $userIds
*
* @return bool success of the action
*/
- public function removePublisher( Newsletter $newsletter, User $user ) {
- $success = $this->db->removePublisher( $newsletter, $user );
+ public function removePublisher( Newsletter $newsletter, $userIds ) {
+ $success = $this->db->removePublisher( $newsletter, $userIds );
if ( $success ) {
- $this->logger->logPublisherRemoved( $newsletter, $user
);
+ foreach ( $userIds as $userId ) {
+ $this->logger->logPublisherRemoved(
$newsletter, User::newFromId( $userId ) );
+ }
}
return $success;
}
diff --git a/includes/content/NewsletterDataUpdate.php
b/includes/content/NewsletterDataUpdate.php
index 76a61ee..1f08dd0 100644
--- a/includes/content/NewsletterDataUpdate.php
+++ b/includes/content/NewsletterDataUpdate.php
@@ -122,24 +122,17 @@
$added = array_diff( $updatedPublishersIds, $oldPublishersIds );
$removed = array_diff( $oldPublishersIds, $updatedPublishersIds
);
- // Check if people has been added
+ // Check if people have been added
if ( $added ) {
- // @todo Do this in a batch..
- foreach ( $added as $auId ) {
- $store->addPublisher( $newsletter,
User::newFromId( $auId ) );
- }
- // Adds the new publishers to subscription list
- $store->addSubscription( $newsletter, $added );
+ $store->addPublisher( $newsletter, $added );
$this->newsletter->notifyPublishers(
$added, $user,
Newsletter::NEWSLETTER_PUBLISHERS_ADDED
);
}
- // Check if people has been removed
+ // Check if people have been removed
if ( $removed ) {
- foreach ( $removed as $ruId ) {
- $store->removePublisher( $newsletter,
User::newFromId( $ruId ) );
- }
+ $store->removePublisher( $newsletter, $added );
$this->newsletter->notifyPublishers(
$removed, $user,
Newsletter::NEWSLETTER_PUBLISHERS_REMOVED
);
diff --git a/tests/NewsletterDbTest.php b/tests/NewsletterDbTest.php
index 7c996aa..0fb4e5a 100644
--- a/tests/NewsletterDbTest.php
+++ b/tests/NewsletterDbTest.php
@@ -123,7 +123,7 @@
->method( 'insert' )
->with(
'nl_publishers',
- [ 'nlp_newsletter_id' => 1, 'nlp_publisher_id'
=> $user->getId() ]
+ [ [ 'nlp_newsletter_id' => 1,
'nlp_publisher_id' => $user->getId() ] ]
);
$mockWriteDb
->expects( $this->once() )
@@ -132,7 +132,7 @@
$table = new NewsletterDb( $this->getMockLoadBalancer(
$mockWriteDb ) );
- $result = $table->addPublisher( $this->getTestNewsletter(),
$user );
+ $result = $table->addPublisher( $this->getTestNewsletter(), [
$user->getId() ] );
$this->assertTrue( $result );
}
--
To view, visit https://gerrit.wikimedia.org/r/400464
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iec336c09248ed68dbb6f65e7cf29c416fc017844
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Newsletter
Gerrit-Branch: master
Gerrit-Owner: Pppery <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits