jenkins-bot has submitted this change and it was merged.

Change subject: Use UserArray instead of separate Users in user locator
......................................................................


Use UserArray instead of separate Users in user locator

Change-Id: Idc0cf4c8853d10b437f15fe127df056d478d4549
---
M Newsletter.hooks.php
M extension.json
R includes/Echo/EchoNewsletterFormatter.php
A includes/Echo/EchoNewsletterUserLocator.php
4 files changed, 24 insertions(+), 31 deletions(-)

Approvals:
  01tonythomas: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/Newsletter.hooks.php b/Newsletter.hooks.php
index 3298bb2..9c86f59 100755
--- a/Newsletter.hooks.php
+++ b/Newsletter.hooks.php
@@ -17,10 +17,14 @@
                        'priority' => 3,
                        'tooltip' => 'echo-pref-tooltip-newsletter',
                );
+               // @todo rename event as this is misleading - we're not really 
subscribing here
                $notifications['subscribe-newsletter'] = array(
                        'primary-link' => array(
                                'message' => 
'newsletter-notification-link-text-new-issue',
                                'destination' => 'new-issue'
+                       ),
+                       'user-locators' => array(
+                               
'EchoNewsletterUserLocator::locateNewsletterSubscribedUsers',
                        ),
                        'formatter-class' => 'EchoNewsletterFormatter',
                        'title-message' => 'newsletter-notification-title',
@@ -29,33 +33,6 @@
                        'flyout-params' => array( 'newsletter', 'title' ),
 
                );
-               return true;
-       }
-
-       /**
-        * Add user to be notified on echo event
-        *
-        * @todo Use the JobQueue for this to make sure it scales amazingly
-        *
-        * @param EchoEvent $event
-        * @param User[] $users
-        * @return bool
-        */
-       public static function onEchoGetDefaultNotifiedUsers( $event, &$users ) 
{
-               $eventType = $event->getType();
-               if ( $eventType === 'subscribe-newsletter' ) {
-                       $extra = $event->getExtra();
-
-                       $db = NewsletterDb::newFromGlobalState();
-                       $userIds = $db->getUserIdsSubscribedToNewsletter( 
$extra['newsletterId'] );
-
-                       //TODO queries to the user table should be done in 
batches using UserArray::newFromIds
-                       foreach ( $userIds as $userId ) {
-                               $recipient = User::newFromId( $userId );
-                               $users[$userId] = $recipient;
-                       }
-               }
-
                return true;
        }
 
diff --git a/extension.json b/extension.json
index 57aa6df..936d903 100644
--- a/extension.json
+++ b/extension.json
@@ -47,7 +47,8 @@
                "ApiNewsletter": "includes/api/ApiNewsletter.php",
                "ApiNewsletterManage": "includes/api/ApiNewsletterManage.php",
                "NewsletterDb": "includes/NewsletterDb.php",
-               "EchoNewsletterFormatter": 
"includes/EchoNewsletterFormatter.php",
+               "EchoNewsletterFormatter": 
"includes/Echo/EchoNewsletterFormatter.php",
+               "EchoNewsletterUserLocator": 
"includes/Echo/EchoNewsletterUserLocator.php",
                "Newsletter": "includes/Newsletter.php"
        },
        "ResourceModules": {
@@ -74,9 +75,6 @@
                ],
                "BeforeCreateEchoEvent": [
                        "NewsletterHooks::onBeforeCreateEchoEvent"
-               ],
-               "EchoGetDefaultNotifiedUsers": [
-                       "NewsletterHooks::onEchoGetDefaultNotifiedUsers"
                ],
                "UnitTestsList": [
                        "NewsletterHooks::onUnitTestsList"
diff --git a/includes/EchoNewsletterFormatter.php 
b/includes/Echo/EchoNewsletterFormatter.php
similarity index 100%
rename from includes/EchoNewsletterFormatter.php
rename to includes/Echo/EchoNewsletterFormatter.php
diff --git a/includes/Echo/EchoNewsletterUserLocator.php 
b/includes/Echo/EchoNewsletterUserLocator.php
new file mode 100644
index 0000000..b8cb733
--- /dev/null
+++ b/includes/Echo/EchoNewsletterUserLocator.php
@@ -0,0 +1,18 @@
+<?php
+
+class EchoNewsletterUserLocator {
+       /**
+        * Locate all users subscribed to a newsletter.
+        *
+        * @param EchoEvent $event
+        * @return UserArray
+        */
+       public static function locateNewsletterSubscribedUsers( EchoEvent 
$event ) {
+               $extra = $event->getExtra();
+               $ids = NewsletterDb::newFromGlobalState()
+                       ->getUserIdsSubscribedToNewsletter( 
$extra['newsletterId'] );
+
+               return UserArray::newFromIDs( $ids );
+
+       }
+}

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Idc0cf4c8853d10b437f15fe127df056d478d4549
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/extensions/Newsletter
Gerrit-Branch: master
Gerrit-Owner: Glaisher <glaisher.w...@gmail.com>
Gerrit-Reviewer: 01tonythomas <01tonytho...@gmail.com>
Gerrit-Reviewer: Addshore <addshorew...@gmail.com>
Gerrit-Reviewer: Glaisher <glaisher.w...@gmail.com>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to