BryanDavis has uploaded a new change for review.

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

Change subject: Move Echo configuration into BeforeCreateEchoEvent hook
......................................................................

Move Echo configuration into BeforeCreateEchoEvent hook

Move configuration of $wgEchoNotifications and
$wgEchoNotificationCategories into a function to be invoked by the
BeforeCreateEchoEvent hook. Also rename efEchoGetDefaultNotifiedUsers to
efOpenStackGetDefaultNotifiedUsers for more consistent pseudo
namespacing and group all Echo configuration together in the source
file.

Change-Id: I68cf444dacf37d17e38b968edcfcc88193d46681
---
M OpenStackManager.php
1 file changed, 112 insertions(+), 97 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/OpenStackManager 
refs/changes/69/144469/1

diff --git a/OpenStackManager.php b/OpenStackManager.php
index e08321a..ace82f6 100644
--- a/OpenStackManager.php
+++ b/OpenStackManager.php
@@ -304,103 +304,6 @@
 # Schema changes
 $wgHooks['LoadExtensionSchemaUpdates'][] = 'efOpenStackSchemaUpdates';
 
-$wgHooks['EchoGetDefaultNotifiedUsers'][] = 'efEchoGetDefaultNotifiedUsers';
-
-/**
- * Handler for EchoGetDefaultNotifiedUsers hook.
- * @param $event EchoEvent to get implicitly subscribed users for
- * @param &$users array to append implicitly subscribed users to.
- * @return bool true in all cases
- */
-function efEchoGetDefaultNotifiedUsers ( $event, &$users ) {
-       if ( $event->getType() == 'osm-instance-build-completed' || 
$event->getType() == 'osm-instance-deleted' ) {
-               $extra = $event->getExtra(); // Sigh. PHP 5.3 compatability.
-               foreach ( OpenStackNovaProject::getProjectByName( 
$extra['projectName'] )->getRoles() as $role ) {
-                       if ( $role->getRoleName() == 'projectadmin' ) {
-                               foreach ( $role->getMembers() as $roleMember ) {
-                                       $roleMemberUser = User::newFromName( 
$roleMember );
-                                       $users[$roleMemberUser->getId()] = 
$roleMemberUser;
-                               }
-                       }
-               }
-       } elseif ( $event->getType() == 'osm-instance-reboot-completed' ) {
-               $users[$event->getAgent()->getId()] = $event->getAgent(); // 
Only notify the person who did it to say the reboot was completed.
-       } elseif ( $event->getType() == 'osm-projectmembers-add' ) {
-               $extra = $event->getExtra(); // PHP 5.3 back-compat...
-               $users[$extra['userAdded']] = User::newFromId( 
$extra['userAdded'] );
-       }
-       unset( $users[0] );
-       return true;
-}
-
-$wgEchoNotifications['osm-instance-build-completed'] = array(
-       'formatter-class' => 'OpenStackManagerNotificationFormatter',
-       'category' => 'osm-instance-build-completed',
-       'title-message' => 'notification-osm-instance-build-completed',
-       'title-params' => array( 'agent', 'title', 'instance' ),
-       'icon' => 'placeholder',
-       'payload' => array( 'summary' ),
-       'email-subject-message' => 
'notification-osm-instance-build-completed-email-subject',
-       'email-subject-params' => array( 'instance' ),
-       'email-body-batch-message' => 
'notification-osm-instance-build-completed-email-body-batch',
-       'email-body-batch-params' => array( 'agent', 'title', 'instance' ),
-);
-$wgEchoNotificationCategories['osm-instance-build-completed'] = array(
-       'priority' => 10
-);
-$wgDefaultUserOptions["echo-subscriptions-web-osm-instance-build-completed"] = 
true;
-$wgDefaultUserOptions["echo-subscriptions-email-osm-instance-build-completed"] 
= true;
-
-$wgEchoNotifications['osm-instance-reboot-completed'] = array(
-       'formatter-class' => 'OpenStackManagerNotificationFormatter',
-       'category' => 'osm-instance-reboot-completed',
-       'title-message' => 'notification-osm-instance-reboot-completed',
-       'title-params' => array( 'agent', 'title', 'instance' ),
-       'icon' => 'placeholder',
-       'payload' => array( 'summary' ),
-       'email-subject-message' => 
'notification-osm-instance-reboot-completed-email-subject',
-       'email-subject-params' => array( 'instance' ),
-       'email-body-batch-message' => 
'notification-osm-instance-reboot-completed-email-body-batch',
-       'email-body-batch-params' => array( 'agent', 'title', 'instance' ),
-);
-$wgEchoNotificationCategories['osm-instance-reboot-completed'] = array(
-       'priority' => 10
-);
-$wgDefaultUserOptions["echo-subscriptions-web-osm-instance-reboot-completed"] 
= true;
-
-$wgEchoNotifications['osm-instance-deleted'] = array(
-       'formatter-class' => 'OpenStackManagerNotificationFormatter',
-       'category' => 'osm-instance-deleted',
-       'title-message' => 'notification-osm-instance-deleted',
-       'title-params' => array( 'agent', 'title', 'instance' ),
-       'icon' => 'trash',
-       'payload' => array( 'summary' ),
-       'email-subject-message' => 
'notification-osm-instance-deleted-email-subject',
-       'email-subject-params' => array( 'instance' ),
-       'email-body-batch-message' => 
'notification-osm-instance-deleted-email-body-batch',
-       'email-body-batch-params' => array( 'agent', 'title', 'instance' ),
-);
-$wgEchoNotificationCategories['osm-instance-deleted'] = array(
-       'priority' => 10
-);
-$wgDefaultUserOptions["echo-subscriptions-web-osm-instance-deleted"] = true;
-$wgDefaultUserOptions["echo-subscriptions-email-osm-instance-deleted"] = true;
-
-$wgEchoNotifications['osm-projectmembers-add'] = array(
-       'formatter-class' => 'EchoBasicFormatter',
-       'category' => 'osm-projectmembers-add',
-       'title-message' => 'notification-osm-projectmember-added',
-       'title-params' => array( 'agent', 'title' ),
-       'icon' => 'placeholder',
-       'payload' => array( 'summary' ),
-       'email-subject-message' => 
'notification-osm-projectmember-added-email-subject',
-       'email-subject-params' => array(),
-       'email-body-batch-message' => 
'notification-osm-projectmember-added-email-body-batch',
-       'email-body-batch-params' => array( 'agent', 'title' ),
-);
-$wgDefaultUserOptions["echo-subscriptions-web-osm-projectmembers-add"] = true;
-$wgDefaultUserOptions["echo-subscriptions-email-osm-projectmembers-add"] = 
true;
-
 /**
  * @param $updater DatabaseUpdater
  * @return bool
@@ -428,6 +331,118 @@
        return true;
 }
 
+# Echo integration
+$wgHooks['onBeforeCreateEchoEvent'] = 'efOpenStackOnBeforeCreateEchoEvent';
+$wgHooks['EchoGetDefaultNotifiedUsers'][] = 
'efOpenStackGetDefaultNotifiedUsers';
+$wgDefaultUserOptions['echo-subscriptions-web-osm-instance-build-completed'] = 
true;
+$wgDefaultUserOptions['echo-subscriptions-email-osm-instance-build-completed'] 
= true;
+$wgDefaultUserOptions['echo-subscriptions-web-osm-instance-reboot-completed'] 
= true;
+$wgDefaultUserOptions['echo-subscriptions-web-osm-instance-deleted'] = true;
+$wgDefaultUserOptions['echo-subscriptions-email-osm-instance-deleted'] = true;
+$wgDefaultUserOptions['echo-subscriptions-web-osm-projectmembers-add'] = true;
+$wgDefaultUserOptions['echo-subscriptions-email-osm-projectmembers-add'] = 
true;
+
+/**
+ * Add OSM events to Echo.
+ *
+ * @param array $notifications Echo notifications
+ * @param array $notificationCategories Echo notification categories
+ */
+function efOpenStackOnBeforeCreateEchoEvent(
+       &$notifications, &$notificationCategories
+) {
+       $notifications['osm-instance-build-completed'] = array(
+               'formatter-class' => 'OpenStackManagerNotificationFormatter',
+               'category' => 'osm-instance-build-completed',
+               'title-message' => 'notification-osm-instance-build-completed',
+               'title-params' => array( 'agent', 'title', 'instance' ),
+               'icon' => 'placeholder',
+               'payload' => array( 'summary' ),
+               'email-subject-message' => 
'notification-osm-instance-build-completed-email-subject',
+               'email-subject-params' => array( 'instance' ),
+               'email-body-batch-message' => 
'notification-osm-instance-build-completed-email-body-batch',
+               'email-body-batch-params' => array( 'agent', 'title', 
'instance' ),
+       );
+       $notificationCategories['osm-instance-build-completed'] = array(
+               'priority' => 10
+       );
+
+       $notifications['osm-instance-reboot-completed'] = array(
+               'formatter-class' => 'OpenStackManagerNotificationFormatter',
+               'category' => 'osm-instance-reboot-completed',
+               'title-message' => 'notification-osm-instance-reboot-completed',
+               'title-params' => array( 'agent', 'title', 'instance' ),
+               'icon' => 'placeholder',
+               'payload' => array( 'summary' ),
+               'email-subject-message' => 
'notification-osm-instance-reboot-completed-email-subject',
+               'email-subject-params' => array( 'instance' ),
+               'email-body-batch-message' => 
'notification-osm-instance-reboot-completed-email-body-batch',
+               'email-body-batch-params' => array( 'agent', 'title', 
'instance' ),
+       );
+       $notificationCategories['osm-instance-reboot-completed'] = array(
+               'priority' => 10
+       );
+
+       $notifications['osm-instance-deleted'] = array(
+               'formatter-class' => 'OpenStackManagerNotificationFormatter',
+               'category' => 'osm-instance-deleted',
+               'title-message' => 'notification-osm-instance-deleted',
+               'title-params' => array( 'agent', 'title', 'instance' ),
+               'icon' => 'trash',
+               'payload' => array( 'summary' ),
+               'email-subject-message' => 
'notification-osm-instance-deleted-email-subject',
+               'email-subject-params' => array( 'instance' ),
+               'email-body-batch-message' => 
'notification-osm-instance-deleted-email-body-batch',
+               'email-body-batch-params' => array( 'agent', 'title', 
'instance' ),
+       );
+       $notificationCategories['osm-instance-deleted'] = array(
+               'priority' => 10
+       );
+
+       $notifications['osm-projectmembers-add'] = array(
+               'formatter-class' => 'EchoBasicFormatter',
+               'category' => 'osm-projectmembers-add',
+               'title-message' => 'notification-osm-projectmember-added',
+               'title-params' => array( 'agent', 'title' ),
+               'icon' => 'placeholder',
+               'payload' => array( 'summary' ),
+               'email-subject-message' => 
'notification-osm-projectmember-added-email-subject',
+               'email-subject-params' => array(),
+               'email-body-batch-message' => 
'notification-osm-projectmember-added-email-body-batch',
+               'email-body-batch-params' => array( 'agent', 'title' ),
+       );
+
+       return true;
+}
+
+/**
+ * Define who gets notifications for an event.
+ *
+ * @param $event EchoEvent to get implicitly subscribed users for
+ * @param &$users array to append implicitly subscribed users to.
+ * @return bool true in all cases
+ */
+function efOpenStackGetDefaultNotifiedUsers ( $event, &$users ) {
+       if ( $event->getType() == 'osm-instance-build-completed' || 
$event->getType() == 'osm-instance-deleted' ) {
+               $extra = $event->getExtra(); // Sigh. PHP 5.3 compatability.
+               foreach ( OpenStackNovaProject::getProjectByName( 
$extra['projectName'] )->getRoles() as $role ) {
+                       if ( $role->getRoleName() == 'projectadmin' ) {
+                               foreach ( $role->getMembers() as $roleMember ) {
+                                       $roleMemberUser = User::newFromName( 
$roleMember );
+                                       $users[$roleMemberUser->getId()] = 
$roleMemberUser;
+                               }
+                       }
+               }
+       } elseif ( $event->getType() == 'osm-instance-reboot-completed' ) {
+               $users[$event->getAgent()->getId()] = $event->getAgent(); // 
Only notify the person who did it to say the reboot was completed.
+       } elseif ( $event->getType() == 'osm-projectmembers-add' ) {
+               $extra = $event->getExtra(); // PHP 5.3 back-compat...
+               $users[$extra['userAdded']] = User::newFromId( 
$extra['userAdded'] );
+       }
+       unset( $users[0] );
+       return true;
+}
+
 $wgHooks['BeforePageDisplay'][] = 'efOpenStackBeforePageDisplay';
 
 /**

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I68cf444dacf37d17e38b968edcfcc88193d46681
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/OpenStackManager
Gerrit-Branch: master
Gerrit-Owner: BryanDavis <[email protected]>

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

Reply via email to