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