__FILE__, 'name' => 'Echo', 'url' => 'http://www.mediawiki.org/wiki/Echo_(Notifications)', 'author' => array( 'Andrew Garrett', ), 'descriptionmsg' => 'echo-desc', ); $dir = dirname( __FILE__ ) . '/'; $wgExtensionMessagesFiles['Echo'] = $dir . 'Echo.i18n.php'; $wgExtensionMessagesFiles['EchoAliases'] = $dir . 'Echo.alias.php'; $wgAutoloadClasses['EchoHooks'] = "$dir/Hooks.php"; $wgAutoloadClasses['EchoSubscription'] = "$dir/model/Subscription.php"; $wgAutoloadClasses['EchoEvent'] = "$dir/model/Event.php"; $wgAutoloadClasses['EchoNotification'] = "$dir/model/Notification.php"; $wgAutoloadClasses['MWEchoEmailBatch'] = "$dir/includes/EmailBatch.php"; // Formatters $wgAutoloadClasses['EchoNotificationFormatter'] = "$dir/formatters/NotificationFormatter.php"; $wgAutoloadClasses['EchoBasicFormatter'] = "$dir/formatters/BasicFormatter.php"; $wgAutoloadClasses['EchoEditFormatter'] = "$dir/formatters/EditFormatter.php"; $wgAutoloadClasses['EchoCommentFormatter'] = "$dir/formatters/CommentFormatter.php"; // Internal stuff $wgAutoloadClasses['EchoNotifier'] = "$dir/Notifier.php"; $wgAutoloadClasses['EchoNotificationController'] = "$dir/controller/NotificationController.php"; $wgAutoloadClasses['EchoDiscussionParser'] = "$dir/includes/DiscussionParser.php"; // Job queue $wgAutoloadClasses['EchoNotificationJob'] = "$dir/jobs/NotificationJob.php"; $wgJobClasses['EchoNotificationJob'] = 'EchoNotificationJob'; // API $wgAutoloadClasses['ApiEchoNotifications'] = "$dir/api/ApiEchoNotifications.php"; $wgAPIMetaModules['notifications'] = 'ApiEchoNotifications'; // Special page $wgAutoloadClasses['SpecialNotifications'] = "$dir/special/SpecialNotifications.php"; $wgSpecialPages['Notifications'] = 'SpecialNotifications'; // Housekeeping hooks $wgHooks['LoadExtensionSchemaUpdates'][] = 'EchoHooks::getSchemaUpdates'; $wgHooks['GetPreferences'][] = 'EchoHooks::getPreferences'; $wgHooks['PersonalUrls'][] = 'EchoHooks::onPersonalUrls'; $wgHooks['BeforePageDisplay'][] = 'EchoHooks::beforePageDisplay'; $wgHooks['MakeGlobalVariablesScript'][] = 'EchoHooks::makeGlobalVariablesScript'; $wgHooks['UnitTestsList'][] = 'EchoHooks::getUnitTests'; $echoResourceTemplate = array( 'localBasePath' => "$dir/modules", 'remoteExtPath' => 'Echo/modules', 'group' => 'ext.echo', ); $wgResourceModules += array( 'ext.echo.base' => $echoResourceTemplate + array( 'styles' => 'base/ext.echo.base.css', 'scripts' => 'base/ext.echo.base.js', ), 'ext.echo.overlay' => $echoResourceTemplate + array( 'scripts' => array( 'overlay/ext.echo.overlay.js', ), 'styles' => 'overlay/ext.echo.overlay.css', 'dependencies' => array( 'ext.echo.base', 'mediawiki.api', 'mediawiki.jqueryMsg', 'jquery.badge', 'ext.echo.icons', ), 'messages' => array( 'echo-link-new', 'echo-link', 'echo-overlay-title', 'echo-overlay-link', 'echo-none', ), ), 'ext.echo.special' => $echoResourceTemplate + array( 'scripts' => array( 'special/ext.echo.special.js', ), 'styles' => 'special/ext.echo.special.css', 'dependencies' => array( 'ext.echo.base', 'mediawiki.api', 'mediawiki.jqueryMsg', 'ext.echo.icons', ), 'messages' => array( 'echo-load-more-error', ), ), 'ext.echo.icons' => $echoResourceTemplate + array( 'styles' => 'icons/icons.css', ), ); /** * This Echo hook can be used to define users who are by default interested in * certain events. * For example, it can be used to say that users are by default interested in * their own user talk page being edited. In fact, that is what it is used for * internally. */ $wgHooks['EchoGetDefaultNotifiedUsers'][] = 'EchoHooks::getDefaultNotifiedUsers'; $wgHooks['EchoGetNotificationTypes'][] = 'EchoHooks::getNotificationTypes'; // Hook appropriate events $wgHooks['ArticleSaveComplete'][] = 'EchoHooks::onArticleSaved'; $wgHooks['AddNewAccount'][] = 'EchoHooks::onAccountCreated'; $wgHooks['ArticleRollbackComplete'][] = 'EchoHooks::onRollbackComplete'; // Disable ordinary email notifications $wgHooks['AbortEmailNotification'][] = 'EchoHooks::abortEmailNotification'; // Disable the yellow bar of death $wgHooks['ArticleEditUpdateNewTalk'][] = 'EchoHooks::abortNewTalkNotification'; // Configuration // Enable notifications for all logged in users by default $wgDefaultUserOptions['echo-notify-link'] = 'true'; $wgEchoDisableStandardEmail = true; // Whether to turn on email batch function $wgEchoEnableEmailBatch = true; // The organization address, the value should be defined in LocalSettings.php $wgEchoEmailFooterAddress = ''; // The max notification count showed in badge $wgEchoMaxNotificationCount = 99; $wgEchoDefaultNotificationTypes = array( // Welcome events do not use subscription, and will only trigger notify, not email. 'all' => array( 'notify' => true, 'email' => true, ), 'reverted' => array( 'notify' => true, 'email' => false, ) ); $wgEchoNotifiers = array( 'notify' => array( 'EchoNotifier', 'notifyWithNotification' ), 'email' => array( 'EchoNotifier', 'notifyWithEmail' ), ); // Event types that should have notifications enabled. // The list here only includes event types handled by Echo itself. Other // extensions can add to this list through the BeforeCreateEchoEvent hook. $wgEchoEnabledEvents = array( 'edit-user-talk', //'add-comment', //'add-talkpage-topic', 'welcome', 'reverted', ); // This array stores the category and priority for enabled events // if an event is not specified, it means the event belongs to the // 'other' category with priority 10, which is the lowest, // priority is ranging from 1 to 10 $wgEchoEventDetails = array( 'edit-user-talk' => array( 'category' => 'edit-user-talk', 'priority' => 1 ), 'reverted' => array( 'category' => 'edit-revert', 'priority' => 9 ), ); // Definitions of the notifications built into Echo $wgEchoNotificationFormatters = array( 'edit-user-talk' => array( 'type' => 'edit', 'title-message' => 'notification-edit-talk-page', 'title-params' => array( 'agent', 'user', 'difflink' ), 'payload' => array( 'summary' ), 'email-subject-message' => 'notification-edit-talk-page-email-subject', 'email-subject-params' => array( 'agent' ), 'email-body-message' => 'notification-edit-talk-page-email-body', 'email-body-params' => array( 'agent', 'difflink', 'user', 'summary', 'email-footer' ), 'email-body-batch-message' => 'notification-edit-talk-page-email-batch-body', 'email-body-batch-params' => array( 'agent', 'difflink', 'summary' ), 'icon' => 'chat', ), 'edit' => array( 'type' => 'edit', 'title-message' => 'notification-edit', 'title-params' => array( 'agent', 'title', 'difflink', 'user', 'summary' ), 'email-subject-message' => 'notification-edit-email-subject', 'email-subject-params' => array( 'agent', 'title' ), 'email-body-message' => 'notification-edit-email-body', 'email-body-params' => array( 'agent', 'title', 'difflink', 'user', 'summary', 'email-footer' ), 'email-body-batch-message' => 'notification-edit-email-batch-body', 'email-body-batch-params' => array( 'agent', 'title', 'difflink', 'summary' ), 'icon' => 'w', ), 'add-comment' => array( 'type' => 'comment', 'title-message' => 'notification-add-comment', 'title-message-yours' => 'notification-add-comment-yours', 'title-params' => array( 'agent', 'subject', 'title', 'content-page' ), 'payload' => array( 'snippet' ), 'icon' => 'chat', ), 'add-talkpage-topic' => array( 'type' => 'comment', 'title-message' => 'notification-add-talkpage-topic', 'title-message-yours' => 'notification-add-talkpage-topic-yours', 'title-params' => array( 'agent', 'subject', 'title', 'content-page' ), 'payload' => array( 'snippet' ), 'icon' => 'chat', ), 'welcome' => array( 'type' => 'welcome', 'title-message' => 'notification-new-user', 'title-params' => array( 'agent' ), 'payload' => array( 'welcome' ), 'icon' => 'w', ), 'reverted' => array( 'type' => 'edit', 'title-message' => 'notification-reverted', 'title-params' => array( 'agent', 'title', 'difflink', 'number' ), 'payload' => array( 'summary' ), 'email-subject-message' => 'notification-reverted-email-subject', 'email-subject-params' => array( 'agent', 'title', 'summary' ), 'email-body-message' => 'notification-reverted-email-body', 'email-body-params' => array( 'agent', 'title', 'difflink', 'user', 'summary', 'email-footer' ), 'email-body-batch-message' => 'notification-reverted-email-batch-body', 'email-body-batch-params' => array( 'agent', 'title', 'difflink', 'summary' ), 'icon' => 'revert', ) );