2016-12-01 00:17:30 +00:00
{
"name" : "Echo" ,
"author" : [
"Andrew Garrett" ,
"Ryan Kaldari" ,
"Benny Situ" ,
"Luke Welling" ,
"Kunal Mehta" ,
"Moriel Schottlender" ,
2018-05-09 14:52:05 +00:00
"Jon Robson" ,
"Roan Kattouw"
2016-12-01 00:17:30 +00:00
] ,
"url" : "https://www.mediawiki.org/wiki/Extension:Echo" ,
"descriptionmsg" : "echo-desc" ,
"license-name" : "MIT" ,
"type" : "specialpage" ,
2017-03-22 21:23:56 +00:00
"requires" : {
2021-04-27 17:45:14 +00:00
"MediaWiki" : ">= 1.37.0"
2017-03-22 21:23:56 +00:00
} ,
2016-12-01 00:17:30 +00:00
"APIMetaModules" : {
2021-08-13 15:53:55 +00:00
"notifications" : {
"class" : "ApiEchoNotifications" ,
"services" : [ "MainConfig" ]
} ,
2021-10-01 19:54:27 +00:00
"unreadnotificationpages" : {
"class" : "ApiEchoUnreadNotificationPages" ,
"services" : [ "PageStore" , "TitleFactory" ]
}
2016-12-01 00:17:30 +00:00
} ,
"APIModules" : {
"echomarkread" : "ApiEchoMarkRead" ,
2017-06-08 16:38:06 +00:00
"echomarkseen" : "ApiEchoMarkSeen" ,
2020-04-28 03:39:40 +00:00
"echoarticlereminder" : "ApiEchoArticleReminder" ,
2021-03-30 22:14:16 +00:00
"echomute" : {
"class" : "ApiEchoMute" ,
"services" : [
2021-06-24 19:21:49 +00:00
"CentralIdLookup" ,
2021-03-30 22:14:16 +00:00
"UserOptionsManager"
]
}
2016-12-01 00:17:30 +00:00
} ,
"DefaultUserOptions" : {
2019-12-10 00:13:29 +00:00
"echo-email-frequency" : 0 ,
"echo-dont-email-read-notifications" : false
2016-12-01 00:17:30 +00:00
} ,
"ExtensionFunctions" : [
2022-04-08 00:28:15 +00:00
"MediaWiki\\Extension\\Notifications\\Hooks::initEchoExtension"
2016-12-01 00:17:30 +00:00
] ,
"JobClasses" : {
"EchoNotificationJob" : "EchoNotificationJob" ,
2020-05-22 22:02:34 +00:00
"EchoNotificationDeleteJob" : "EchoNotificationDeleteJob" ,
2022-04-08 00:38:27 +00:00
"EchoPushNotificationRequest" : "MediaWiki\\Extension\\Notifications\\Push\\NotificationRequestJob"
2016-12-01 00:17:30 +00:00
} ,
"SpecialPages" : {
"Notifications" : "SpecialNotifications" ,
2021-03-30 22:14:16 +00:00
"DisplayNotificationsConfiguration" : {
"class" : "SpecialDisplayNotificationsConfiguration" ,
"services" : [
2021-06-29 13:43:25 +00:00
"EchoAttributeManager" ,
2021-03-30 22:14:16 +00:00
"UserOptionsManager"
]
} ,
2016-12-01 00:17:30 +00:00
"NotificationsMarkRead" : "SpecialNotificationsMarkRead"
} ,
2020-08-11 20:34:21 +00:00
"AvailableRights" : [
"manage-all-push-subscriptions"
] ,
"GroupPermissions" : {
"push-subscription-manager" : {
"manage-all-push-subscriptions" : true
}
} ,
2016-12-01 00:17:30 +00:00
"MessagesDirs" : {
"Echo" : [
2016-12-07 10:02:11 +00:00
"i18n" ,
"i18n/api"
2016-12-01 00:17:30 +00:00
]
} ,
"ExtensionMessagesFiles" : {
"EchoAliases" : "Echo.alias.php"
} ,
2019-10-01 20:15:25 +00:00
"QUnitTestModule" : {
"localBasePath" : "" ,
"remoteExtPath" : "Echo" ,
tests: Fix QUnit warnings and resolve complex test_NotificationBadge
== Problem 1 ==
As of I09c27a084100b223, tests/qunit/index.js or equiv was used to
load test files asynchronously from a using() callback. This was
untracked by RL or QUnit, and thus sometimes ended up finishing after
the test runner was already done executing all tests. In CI this
means the tests are sometimes never loaded and the browser (or Node)
process already killed before they even have a chance to arrive.
Prior to QUnit 2.17, this was no way of detecting this. As of
QUnit 2.17 (core upgraded last week) when running tests manually
the following helpful warnings appear in the console:
> [warning] Unexpected test after runEnd.
> [warning] This is unstable and will fail in QUnit 3.0.
> test @ qunit.js
> tests/qunit/model/test_mw.echo.dm.SeenTimeModel.js
> require
There were about 1072 instances of this warning, all from Echo.
Fix this problem by removing the async callbacks and specifying the
two modules as normal dependencies instead.
== Problem 2 ==
Class NotificationBadge was being loaded in a strange way out of
bound. This was a violation of module boundaries and should not be
needed other than for a temporary hack or other tech debt. More
generally when a test uses `packageFiles` this is a likely sign of
tech debt or misunderstandings.
Instead, depend on `ext.echo.mobile` and export/import the class
as normal.
After this, the test module can use `scripts` instead.
== Problem 3 ==
The `ext.echo.mobile` uses a Mustache template which the test
was also duplicating a reference to. This is no longer needed now.
Due to the `qunit/index.js` file carefully splitting the operations
between template assignment and file loading, I wondered whether
it was meaning to replace or mock it with something else, but it
simply refers to the same file and only does this because it wasn't
using the module directly. This is now resolved.
If you do need to mock in the future, this can simply be done
by assigning `NotificationBadge.prototype.template` from a
beforeEach() callback in the test suite, or by supporting it
property as a constructor option in NotificationBadge.js and
assigning `this.template` there, which is supported by the
mobile `View` class already it seems and would follow DI patterns
more effectively.
== Problem 4 ==
Most of the Echo tests were ignored sometimes and executed other
times.
The test for `ext.echo.mobile` in particular though was never
executed in CI specifically because:
> Undefined module: 'mobile.startup'
This became a hard error with this patch, which is fixed by
the CI config change with Ie9dabe3269c56fa76db8e51.
Bug: T299780
Change-Id: Ie4a87f3b8085fd6ae53ec586c1782cc266d5288a
2022-03-01 23:16:33 +00:00
"dependencies" : [
"ext.echo.dm" ,
"ext.echo.mobile"
] ,
"scripts" : [
2019-10-01 20:15:25 +00:00
"tests/qunit/mobile/test_NotificationBadge.js" ,
2020-08-03 10:52:29 +00:00
"tests/qunit/model/test_mw.echo.dm.BundleNotificationItem.js" ,
"tests/qunit/model/test_mw.echo.dm.CrossWikiNotificationItem.js" ,
"tests/qunit/model/test_mw.echo.dm.FiltersModel.js" ,
"tests/qunit/model/test_mw.echo.dm.NotificationGroupsList.js" ,
"tests/qunit/model/test_mw.echo.dm.NotificationItem.js" ,
"tests/qunit/model/test_mw.echo.dm.NotificationsList.js" ,
"tests/qunit/model/test_mw.echo.dm.PaginationModel.js" ,
"tests/qunit/model/test_mw.echo.dm.SeenTimeModel.js" ,
"tests/qunit/model/test_mw.echo.dm.SourcePagesModel.js" ,
"tests/qunit/model/test_mw.echo.dm.UnreadNotificationCounter.js"
2019-10-01 20:15:25 +00:00
]
} ,
2016-12-01 00:17:30 +00:00
"ResourceModules" : {
2018-07-26 17:42:56 +00:00
"ext.echo.logger" : {
2019-07-20 07:07:05 +00:00
"packageFiles" : [
"logger/mw.echo.Logger.js" ,
{
"name" : "logger/config.json" ,
2022-04-08 00:28:15 +00:00
"callback" : "MediaWiki\\Extension\\Notifications\\Hooks::getLoggerConfigVars"
2019-07-20 07:07:05 +00:00
}
2018-07-26 17:42:56 +00:00
] ,
"dependencies" : [
2019-07-20 07:07:05 +00:00
"oojs" ,
"mediawiki.user"
2018-07-26 17:42:56 +00:00
] ,
"targets" : [
"desktop" ,
"mobile"
]
} ,
2016-12-01 00:17:30 +00:00
"ext.echo.ui.desktop" : {
"scripts" : [
"ui/mw.echo.ui.BadgeLinkWidget.js" ,
"ui/mw.echo.ui.NotificationBadgeWidget.js"
] ,
"styles" : [
"styles/mw.echo.ui.NotificationBadgeWidget.less"
] ,
"dependencies" : [
"ext.echo.ui" ,
"ext.echo.styles.badge" ,
"mediawiki.util" ,
2018-06-09 07:19:33 +00:00
"mediawiki.api"
2016-12-01 00:17:30 +00:00
] ,
"targets" : [
"desktop"
]
} ,
"ext.echo.ui" : {
"scripts" : [
2019-03-19 19:48:39 +00:00
"controller/mw.echo.Controller.js" ,
2016-12-01 00:17:30 +00:00
"ui/mw.echo.ui.js" ,
"ui/mw.echo.ui.SortedListWidget.js" ,
"ui/mw.echo.ui.SubGroupListWidget.js" ,
"ui/mw.echo.ui.NotificationsListWidget.js" ,
"ui/mw.echo.ui.PlaceholderItemWidget.js" ,
"ui/mw.echo.ui.ToggleReadCircleButtonWidget.js" ,
"ui/mw.echo.ui.NotificationItemWidget.js" ,
"ui/mw.echo.ui.SingleNotificationItemWidget.js" ,
"ui/mw.echo.ui.CrossWikiNotificationItemWidget.js" ,
"ui/mw.echo.ui.BundleNotificationItemWidget.js" ,
"ui/mw.echo.ui.ClonedNotificationItemWidget.js" ,
"ui/mw.echo.ui.ActionMenuPopupWidget.js" ,
"ui/mw.echo.ui.MenuItemWidget.js" ,
"ui/mw.echo.ui.NotificationsWrapper.js" ,
"ui/mw.echo.ui.ConfirmationPopupWidget.js" ,
"ext.echo.moment-hack.js"
] ,
"styles" : [
2019-10-09 23:53:27 +00:00
"styles/mw.echo.ui.mobile.less" ,
2016-12-01 00:17:30 +00:00
"styles/mw.echo.ui.overlay.less" ,
"styles/mw.echo.ui.NotificationItemWidget.less" ,
"styles/mw.echo.ui.ToggleReadCircleButtonWidget.less" ,
"styles/mw.echo.ui.CrossWikiNotificationItemWidget.less" ,
"styles/mw.echo.ui.NotificationsListWidget.less" ,
"styles/mw.echo.ui.PlaceholderItemWidget.less" ,
"styles/mw.echo.ui.SubGroupListWidget.less" ,
"styles/mw.echo.ui.ActionMenuPopupWidget.less" ,
"styles/mw.echo.ui.MenuItemWidget.less" ,
"styles/mw.echo.ui.NotificationsWrapper.less" ,
"styles/mw.echo.ui.ConfirmationPopupWidget.less"
] ,
"skinStyles" : {
2019-06-28 02:43:24 +00:00
"modern" : [
"styles/mw.echo.ui.overlay.monobook.less"
] ,
2016-12-01 00:17:30 +00:00
"monobook" : [
"styles/mw.echo.ui.overlay.monobook.less"
] ,
"vector" : [
"styles/mw.echo.ui.overlay.vector.less"
] ,
2022-01-10 20:50:04 +00:00
"vector-2022" : [
"styles/mw.echo.ui.overlay.vector.less"
] ,
2016-12-01 00:17:30 +00:00
"minerva" : [
"styles/mw.echo.ui.overlay.minerva.less"
2020-08-31 11:56:04 +00:00
] ,
"wikimediaapiportal" : [
"styles/mw.echo.ui.overlay.wikimediaapiportal.less"
2016-12-01 00:17:30 +00:00
]
} ,
"dependencies" : [
2019-03-19 19:48:39 +00:00
"ext.echo.api" ,
"ext.echo.dm" ,
2016-12-01 00:17:30 +00:00
"ext.echo.logger" ,
2017-03-02 05:01:56 +00:00
"ext.echo.secondaryicons" ,
2019-03-19 19:48:39 +00:00
"oojs" ,
2016-12-01 00:17:30 +00:00
"oojs-ui-core" ,
"oojs-ui-widgets" ,
"moment" ,
"mediawiki.jqueryMsg" ,
"mediawiki.language" ,
"mediawiki.Title" ,
"oojs-ui.styles.icons-user" ,
"oojs-ui.styles.icons-alerts" ,
"oojs-ui.styles.icons-content" ,
"oojs-ui.styles.icons-interactions" ,
2017-06-01 00:43:00 +00:00
"oojs-ui.styles.icons-moderation" ,
"oojs-ui.styles.icons-movement"
2016-12-01 00:17:30 +00:00
] ,
"messages" : [
"echo-badge-count" ,
"echo-overlay-link" ,
"echo-mark-all-as-read" ,
"echo-mark-wiki-as-read" ,
"echo-notification-alert" ,
"echo-notification-notice" ,
"echo-notification-loginrequired" ,
"echo-notification-popup-loginrequired" ,
"notification-link-text-expand-all" ,
"notification-link-text-collapse-all" ,
"notification-link-text-expand-alert-count" ,
"notification-link-text-expand-notice-count" ,
"notification-link-text-expand-all-count" ,
"notification-timestamp-ago-seconds" ,
"notification-timestamp-ago-minutes" ,
"notification-timestamp-ago-hours" ,
"notification-timestamp-ago-days" ,
"notification-timestamp-ago-months" ,
"notification-timestamp-ago-years" ,
"notification-timestamp-today" ,
"notification-timestamp-yesterday" ,
"echo-notification-markasread" ,
"echo-notification-markasunread" ,
"echo-notification-markasread-tooltip" ,
"echo-notification-more-options-tooltip" ,
"echo-notification-alert-text-only" ,
"echo-notification-notice-text-only" ,
"echo-email-batch-bullet" ,
"echo-notification-placeholder" ,
"tooltip-pt-notifications-alert" ,
"tooltip-pt-notifications-notice" ,
"mytalk" ,
"mypreferences" ,
"sunday" ,
"monday" ,
"tuesday" ,
"wednesday" ,
"thursday" ,
"friday" ,
"saturday"
] ,
"targets" : [
"desktop" ,
"mobile"
]
} ,
"ext.echo.dm" : {
"scripts" : [
"model/mw.echo.dm.js" ,
"model/mw.echo.dm.SourcePagesModel.js" ,
"model/mw.echo.dm.PaginationModel.js" ,
"model/mw.echo.dm.FiltersModel.js" ,
"model/mw.echo.dm.SeenTimeModel.js" ,
"model/mw.echo.dm.ModelManager.js" ,
"model/mw.echo.dm.SortedList.js" ,
"model/mw.echo.dm.NotificationItem.js" ,
"model/mw.echo.dm.CrossWikiNotificationItem.js" ,
"model/mw.echo.dm.BundleNotificationItem.js" ,
"model/mw.echo.dm.NotificationsList.js" ,
"model/mw.echo.dm.NotificationGroupsList.js" ,
"model/mw.echo.dm.UnreadNotificationCounter.js"
] ,
"dependencies" : [
"oojs" ,
2019-03-19 20:00:00 +00:00
"ext.echo.init" ,
2016-12-01 00:17:30 +00:00
"ext.echo.api" ,
"moment"
] ,
"messages" : [
"echo-api-failure" ,
"echo-notification-loginrequired" ,
"echo-api-failure-cross-wiki"
] ,
"targets" : [
"desktop" ,
"mobile"
]
} ,
"ext.echo.api" : {
"scripts" : [
"api/mw.echo.api.js" ,
"api/mw.echo.api.PromisePrioritizer.js" ,
"api/mw.echo.api.EchoApi.js" ,
"api/mw.echo.api.APIHandler.js" ,
"api/mw.echo.api.LocalAPIHandler.js" ,
"api/mw.echo.api.ForeignAPIHandler.js" ,
"api/mw.echo.api.NetworkHandler.js"
] ,
"dependencies" : [
"mediawiki.api" ,
"mediawiki.ForeignApi" ,
"oojs"
] ,
"targets" : [
"desktop" ,
"mobile"
]
} ,
2019-10-01 20:15:25 +00:00
"ext.echo.mobile" : {
"templates" : {
"NotificationBadge.mustache" : "mobile/NotificationBadge.mustache"
} ,
"styles" : [
"mobile/overlay.less" ,
"mobile/notificationsFilterOverlay.less"
] ,
"messages" : [
"notifications" ,
"echo-mobile-notifications-filter-title" ,
"echo-mark-all-as-read-confirmation"
] ,
"dependencies" : [
"mediawiki.util" ,
"mediawiki.router" ,
"ext.echo.ui" ,
"oojs-ui.styles.icons-interactions"
] ,
"packageFiles" : [
"mobile/notifications.js" ,
"mobile/list.js" ,
2022-06-10 15:09:50 +00:00
{
"name" : "mobile/config.json" ,
"callback" : "MediaWiki\\Extension\\Notifications\\Hooks::getConfigVars"
} ,
2019-10-01 20:15:25 +00:00
"mobile/overlay.js" ,
"mobile/NotificationBadge.js" ,
"mobile/notificationsFilterOverlay.js"
] ,
"targets" : [
"desktop" ,
"mobile"
]
} ,
2016-12-01 00:17:30 +00:00
"ext.echo.init" : {
2019-07-03 23:04:14 +00:00
"packageFiles" : [
"ext.echo.init.js" ,
{
"name" : "config.json" ,
2022-04-08 00:28:15 +00:00
"callback" : "MediaWiki\\Extension\\Notifications\\Hooks::getConfigVars"
2019-07-03 23:04:14 +00:00
}
2016-12-01 00:17:30 +00:00
] ,
"dependencies" : [
"ext.echo.api" ,
2019-07-11 11:52:14 +00:00
"mediawiki.jqueryMsg" ,
2016-12-01 00:17:30 +00:00
"mediawiki.Uri"
] ,
2019-06-25 02:22:58 +00:00
"messages" : [
"echo-badge-count" ,
2019-07-19 14:08:06 +00:00
"echo-displaysnippet-title" ,
2019-06-25 02:22:58 +00:00
"parentheses"
] ,
2016-12-01 00:17:30 +00:00
"targets" : [
2019-03-19 20:00:00 +00:00
"desktop" ,
"mobile"
2016-12-01 00:17:30 +00:00
]
} ,
"ext.echo.styles.badge" : {
2017-04-04 18:40:09 +00:00
"styles" : [
"nojs/mw.echo.badge.less"
] ,
2016-12-01 00:17:30 +00:00
"skinStyles" : {
2019-10-01 20:15:25 +00:00
"minerva" : [
"nojs/mw.echo.badge.minerva.less"
] ,
2016-12-01 00:17:30 +00:00
"monobook" : [
"nojs/mw.echo.badge.monobook.less"
] ,
"vector" : [
"nojs/mw.echo.badge.vector.less"
2022-01-10 20:50:04 +00:00
] ,
"vector-2022" : [
"nojs/mw.echo.badge.vector.less"
2017-04-04 18:40:09 +00:00
]
2016-12-01 00:17:30 +00:00
} ,
"targets" : [
"desktop" ,
"mobile"
]
} ,
"ext.echo.styles.notifications" : {
"styles" : [
"nojs/mw.echo.notifications.less" ,
"styles/LabelIconWidget.less"
] ,
"targets" : [
"desktop" ,
"mobile"
]
} ,
"ext.echo.styles.alert" : {
"styles" : [
"nojs/mw.echo.alert.less"
] ,
"skinStyles" : {
"monobook" : [
"nojs/mw.echo.alert.monobook.less"
]
} ,
"targets" : [
"desktop" ,
"mobile"
]
} ,
"ext.echo.special" : {
"scripts" : [
"ui/mw.echo.ui.PaginationWidget.js" ,
"ui/mw.echo.ui.DatedSubGroupListWidget.js" ,
"ui/mw.echo.ui.DatedNotificationsWidget.js" ,
"ui/mw.echo.ui.ReadStateButtonSelectWidget.js" ,
"ui/mw.echo.ui.PageNotificationsOptionWidget.js" ,
"ui/mw.echo.ui.PageFilterWidget.js" ,
"ui/mw.echo.ui.CrossWikiUnreadFilterWidget.js" ,
"ui/mw.echo.ui.NotificationsInboxWidget.js" ,
"ui/mw.echo.ui.SpecialHelpMenuWidget.js" ,
"special/ext.echo.special.js"
] ,
"styles" : [
"styles/mw.echo.ui.PaginationWidget.less" ,
"styles/mw.echo.ui.DatedSubGroupListWidget.less" ,
"styles/mw.echo.ui.DatedNotificationsWidget.less" ,
"styles/mw.echo.ui.NotificationsInboxWidget.less" ,
"styles/mw.echo.ui.PageNotificationsOptionWidget.less" ,
"styles/mw.echo.ui.PageFilterWidget.less" ,
"styles/mw.echo.ui.CrossWikiUnreadFilterWidget.less" ,
"styles/mw.echo.ui.SpecialHelpMenuWidget.less"
] ,
2020-07-27 20:13:41 +00:00
"skinStyles" : {
"minerva" : [
"styles/mw.echo.ui.NotificationsInboxWidget.minerva.less"
]
} ,
2016-12-01 00:17:30 +00:00
"dependencies" : [
"ext.echo.ui" ,
"mediawiki.Uri" ,
"ext.echo.styles.special"
] ,
"messages" : [
"notification-inbox-filter-read" ,
"notification-inbox-filter-unread" ,
"notification-inbox-filter-all" ,
"echo-notification-placeholder-filters" ,
"echo-specialpage-pagination-numnotifications" ,
"echo-specialpage-pagination-range" ,
"echo-specialpage-pagefilters-title" ,
"echo-specialpage-pagefilters-subtitle" ,
"echo-mark-all-as-read" ,
"echo-learn-more" ,
"mypreferences" ,
2020-02-06 22:15:59 +00:00
"echo-specialpage-section-markread" ,
2020-08-17 02:36:57 +00:00
"echo-specialpage-pagefilterwidget-aria-label" ,
"echo-specialpage-special-help-menu-widget-aria-label"
2016-12-01 00:17:30 +00:00
] ,
"targets" : [
"desktop" ,
"mobile"
]
} ,
"ext.echo.styles.special" : {
"styles" : [
"nojs/mw.echo.special.less"
] ,
"targets" : [
"desktop" ,
"mobile"
]
}
} ,
"ResourceFileModulePaths" : {
"localBasePath" : "modules" ,
"remoteExtPath" : "Echo/modules"
} ,
"Hooks" : {
2022-04-08 00:28:15 +00:00
"LoadExtensionSchemaUpdates" : "MediaWiki\\Extension\\Notifications\\Hooks::onLoadExtensionSchemaUpdates" ,
"GetPreferences" : "MediaWiki\\Extension\\Notifications\\Hooks::getPreferences" ,
"BeforePageDisplay" : "MediaWiki\\Extension\\Notifications\\Hooks::beforePageDisplay" ,
"ResourceLoaderRegisterModules" : "MediaWiki\\Extension\\Notifications\\Hooks::onResourceLoaderRegisterModules" ,
"UserGroupsChanged" : "MediaWiki\\Extension\\Notifications\\Hooks::onUserGroupsChanged" ,
"LoadUserOptions" : "MediaWiki\\Extension\\Notifications\\Hooks::onLoadUserOptions" ,
"SaveUserOptions" : "MediaWiki\\Extension\\Notifications\\Hooks::onSaveUserOptions" ,
"UserGetDefaultOptions" : "MediaWiki\\Extension\\Notifications\\Hooks::onUserGetDefaultOptions" ,
"UserClearNewTalkNotification" : "MediaWiki\\Extension\\Notifications\\Hooks::onUserClearNewTalkNotification" ,
"EmailUserComplete" : "MediaWiki\\Extension\\Notifications\\Hooks::onEmailUserComplete" ,
"LoginFormValidErrorMessages" : "MediaWiki\\Extension\\Notifications\\Hooks::onLoginFormValidErrorMessages" ,
"OutputPageCheckLastModified" : "MediaWiki\\Extension\\Notifications\\Hooks::onOutputPageCheckLastModified" ,
"ArticleDeleteComplete" : "MediaWiki\\Extension\\Notifications\\Hooks::onArticleDeleteComplete" ,
"ArticleUndelete" : "MediaWiki\\Extension\\Notifications\\Hooks::onArticleUndelete" ,
"UserMergeAccountFields" : "MediaWiki\\Extension\\Notifications\\Hooks::onUserMergeAccountFields" ,
"MergeAccountFromTo" : "MediaWiki\\Extension\\Notifications\\Hooks::onMergeAccountFromTo" ,
"UserMergeAccountDeleteTables" : "MediaWiki\\Extension\\Notifications\\Hooks::onUserMergeAccountDeleteTables" ,
"EchoGetBundleRules" : "MediaWiki\\Extension\\Notifications\\Hooks::onEchoGetBundleRules" ,
"EchoAbortEmailNotification" : "MediaWiki\\Extension\\Notifications\\Hooks::onEchoAbortEmailNotification" ,
"PageSaveComplete" : "MediaWiki\\Extension\\Notifications\\Hooks::onPageSaveComplete" ,
"LocalUserCreated" : "MediaWiki\\Extension\\Notifications\\Hooks::onLocalUserCreated" ,
"RollbackComplete" : "MediaWiki\\Extension\\Notifications\\Hooks::onRollbackComplete" ,
"UserSaveSettings" : "MediaWiki\\Extension\\Notifications\\Hooks::onUserSaveSettings" ,
"AbortTalkPageEmailNotification" : "MediaWiki\\Extension\\Notifications\\Hooks::onAbortTalkPageEmailNotification" ,
"SendWatchlistEmailNotification" : "MediaWiki\\Extension\\Notifications\\Hooks::onSendWatchlistEmailNotification" ,
"GetNewMessagesAlert" : "MediaWiki\\Extension\\Notifications\\Hooks::abortNewMessagesAlert" ,
"LinksUpdateComplete" : "MediaWiki\\Extension\\Notifications\\Hooks::onLinksUpdateComplete" ,
"SpecialMuteModifyFormFields" : "MediaWiki\\Extension\\Notifications\\Hooks::onSpecialMuteModifyFormFields" ,
2020-06-03 09:20:46 +00:00
"RecentChange_save" : "main" ,
2022-04-08 00:28:15 +00:00
"ApiMain::moduleManager" : "MediaWiki\\Extension\\Notifications\\Hooks::onApiMainModuleManager" ,
"SkinTemplateNavigation::Universal" : "MediaWiki\\Extension\\Notifications\\Hooks::onSkinTemplateNavigationUniversal"
2016-12-01 00:17:30 +00:00
} ,
2020-06-03 09:20:46 +00:00
"HookHandlers" : {
"main" : {
2022-04-08 00:28:15 +00:00
"class" : "MediaWiki\\Extension\\Notifications\\Hooks" ,
2020-06-03 09:20:46 +00:00
"services" : [ "MainConfig" ]
}
} ,
2016-12-01 00:17:30 +00:00
"config" : {
"EchoEnableEmailBatch" : {
"value" : true
} ,
"EchoUseJobQueue" : {
"value" : false
} ,
"EchoEmailFooterAddress" : {
"value" : ""
} ,
"EchoCluster" : {
"value" : false
} ,
"EchoSharedTrackingDB" : {
"value" : false
} ,
"EchoSharedTrackingCluster" : {
"value" : false
} ,
2019-10-04 00:01:00 +00:00
"EchoSeenTimeCacheType" : {
"value" : null
} ,
2016-12-01 00:17:30 +00:00
"EchoMaxUpdateCount" : {
"value" : 2000
} ,
"EchoMaxMentionsCount" : {
"value" : 50
} ,
"EchoMentionStatusNotifications" : {
"value" : false
} ,
"EchoMentionsOnMultipleSectionEdits" : {
"value" : true
} ,
"EchoMentionOnChanges" : {
"value" : true
} ,
"EchoBundleEmailInterval" : {
"value" : 0
} ,
"DefaultNotifyTypeAvailability" : {
"value" : {
"web" : true ,
"email" : true
}
} ,
"NotifyTypeAvailabilityByCategory" : {
"value" : {
2019-04-20 00:45:33 +00:00
"system-noemail" : {
"web" : true ,
"email" : false
} ,
2019-08-27 22:18:00 +00:00
"system-emailonly" : {
"web" : false ,
"email" : true
} ,
2016-12-01 00:17:30 +00:00
"emailuser" : {
"web" : true ,
"email" : false
} ,
2019-04-12 23:58:18 +00:00
"article-linked" : {
"web" : true ,
"email" : false
} ,
2016-12-01 00:17:30 +00:00
"mention-failure" : {
"web" : true ,
"email" : false
} ,
"mention-success" : {
"web" : true ,
"email" : false
2019-04-10 20:54:51 +00:00
} ,
"thank-you-edit" : {
"web" : true ,
"email" : false
2016-12-01 00:17:30 +00:00
}
} ,
"merge_strategy" : "array_plus_2d"
} ,
"EchoNotifiers" : {
"value" : {
"web" : [
"EchoNotifier" ,
"notifyWithNotification"
] ,
"email" : [
"EchoNotifier" ,
"notifyWithEmail"
]
}
} ,
"EchoAgentBlacklist" : {
"value" : [ ]
} ,
"EchoOnWikiBlacklist" : {
"value" : "Echo-blacklist"
} ,
2016-11-10 04:37:10 +00:00
"EchoPerUserBlacklist" : {
"value" : false
} ,
2016-12-01 00:17:30 +00:00
"EchoPerUserWhitelistFormat" : {
"value" : "%s/Echo-whitelist"
} ,
"EchoCrossWikiNotifications" : {
"value" : false
} ,
"EchoNotificationCategories" : {
"value" : {
"system" : {
"priority" : 9 ,
"no-dismiss" : [
"all"
]
} ,
2019-04-20 00:45:33 +00:00
"system-noemail" : {
"priority" : 9 ,
"no-dismiss" : [
2020-01-06 18:59:51 +00:00
"all"
2019-04-20 00:45:33 +00:00
]
} ,
2019-08-27 22:18:00 +00:00
"system-emailonly" : {
"priority" : 9 ,
"no-dismiss" : [
2020-01-06 18:59:51 +00:00
"all"
2019-08-27 22:18:00 +00:00
]
} ,
2016-12-01 00:17:30 +00:00
"user-rights" : {
"priority" : 9 ,
"tooltip" : "echo-pref-tooltip-user-rights"
} ,
"other" : {
"no-dismiss" : [
"all"
]
} ,
"edit-user-talk" : {
"priority" : 1 ,
"no-dismiss" : [
"web"
] ,
"tooltip" : "echo-pref-tooltip-edit-user-talk"
} ,
"reverted" : {
"priority" : 9 ,
"tooltip" : "echo-pref-tooltip-reverted"
} ,
"article-linked" : {
"priority" : 5 ,
"tooltip" : "echo-pref-tooltip-article-linked"
} ,
"mention" : {
"priority" : 4 ,
"tooltip" : "echo-pref-tooltip-mention"
} ,
"mention-failure" : {
"priority" : 4 ,
"tooltip" : "echo-pref-tooltip-mention-failure"
} ,
"mention-success" : {
"priority" : 4 ,
"tooltip" : "echo-pref-tooltip-mention-success"
} ,
"emailuser" : {
"priority" : 9 ,
"tooltip" : "echo-pref-tooltip-emailuser"
2017-06-01 12:08:51 +00:00
} ,
"article-reminder" : {
"priority" : 1 ,
"tooltip" : "echo-pref-tooltip-article-reminder"
2019-04-10 20:54:51 +00:00
} ,
"thank-you-edit" : {
"priority" : 9 ,
"tooltip" : "echo-pref-tooltip-thank-you-edit"
2019-12-09 02:42:55 +00:00
} ,
"watchlist" : {
"priority" : 5 ,
"tooltip" : "echo-pref-tooltip-watchlist"
} ,
"minor-watchlist" : {
"priority" : 6 ,
"tooltip" : "echo-pref-tooltip-minor-watchlist"
2016-12-01 00:17:30 +00:00
}
} ,
"merge_strategy" : "array_plus_2d"
} ,
"EchoNotificationIcons" : {
"value" : {
2022-05-11 11:51:52 +00:00
"watchlist-progressive" : {
"path" : {
"ltr" : "Echo/modules/icons/watchlist-ltr-progressive.svg" ,
"rtl" : "Echo/modules/icons/watchlist-rtl-progressive.svg"
}
} ,
2016-12-01 00:17:30 +00:00
"placeholder" : {
2018-03-23 01:27:28 +00:00
"path" : "Echo/modules/icons/notice.svg"
2016-12-01 00:17:30 +00:00
} ,
"chat" : {
"path" : {
2018-03-23 01:27:28 +00:00
"ltr" : "Echo/modules/icons/speechBubbles-ltr-progressive.svg" ,
"rtl" : "Echo/modules/icons/speechBubbles-rtl-progressive.svg"
2016-12-01 00:17:30 +00:00
}
} ,
2018-03-23 01:27:28 +00:00
"edit" : {
"path" : "Echo/modules/icons/edit-progressive.svg"
} ,
2016-12-01 00:17:30 +00:00
"edit-user-talk" : {
2018-03-23 01:27:28 +00:00
"path" : "Echo/modules/icons/edit-user-talk-progressive.svg"
2016-12-01 00:17:30 +00:00
} ,
"linked" : {
2018-03-23 01:27:28 +00:00
"path" : "Echo/modules/icons/link-progressive.svg"
2016-12-01 00:17:30 +00:00
} ,
"mention" : {
2018-03-23 01:27:28 +00:00
"path" : "Echo/modules/icons/mention-progressive.svg"
2016-12-01 00:17:30 +00:00
} ,
"mention-failure" : {
"path" : "Echo/modules/icons/mention-failure.svg"
} ,
"mention-success" : {
2018-03-24 15:21:33 +00:00
"path" : "Echo/modules/icons/mention-success-constructive.svg"
2016-12-01 00:17:30 +00:00
} ,
"mention-status-bundle" : {
2018-03-23 01:27:28 +00:00
"path" : "Echo/modules/icons/mention-status-bundle-progressive.svg"
2016-12-01 00:17:30 +00:00
} ,
"reviewed" : {
2018-03-23 01:27:28 +00:00
"path" : "Echo/modules/icons/articleCheck-progressive.svg"
2016-12-01 00:17:30 +00:00
} ,
"revert" : {
"path" : "Echo/modules/icons/revert.svg"
} ,
"user-rights" : {
2018-03-23 01:27:28 +00:00
"path" : "Echo/modules/icons/user-rights-progressive.svg"
2016-12-01 00:17:30 +00:00
} ,
"emailuser" : {
2018-03-24 15:21:33 +00:00
"path" : "Echo/modules/icons/message-constructive.svg"
2016-12-01 00:17:30 +00:00
} ,
"help" : {
2019-03-30 22:23:11 +00:00
"path" : {
"ltr" : "Echo/modules/icons/helpNotice-ltr.svg" ,
"rtl" : "Echo/modules/icons/helpNotice-rtl.svg"
}
2016-12-01 00:17:30 +00:00
} ,
"global" : {
2018-03-23 01:27:28 +00:00
"path" : "Echo/modules/icons/global-progressive.svg"
2016-12-01 00:17:30 +00:00
} ,
"site" : {
"url" : false
2017-06-01 12:08:51 +00:00
} ,
"article-reminder" : {
2018-03-23 01:27:28 +00:00
"path" : "Echo/modules/icons/global-progressive.svg"
2016-12-01 00:17:30 +00:00
}
} ,
"merge_strategy" : "array_plus_2d"
} ,
2017-03-02 05:01:56 +00:00
"EchoSecondaryIcons" : {
"value" : {
"linked" : {
2018-03-23 01:27:28 +00:00
"path" : "Echo/modules/icons/link-progressive.svg"
2017-03-02 05:01:56 +00:00
} ,
"changes" : {
"path" : "Echo/modules/icons/changes.svg"
} ,
"thanks" : {
"path" : {
2018-03-23 01:27:28 +00:00
"ltr" : "Echo/modules/icons/userTalk-ltr.svg" ,
"rtl" : "Echo/modules/icons/userTalk-rtl.svg"
2017-03-02 05:01:56 +00:00
}
} ,
2020-04-28 03:39:40 +00:00
"unbell" : {
"path" : "Echo/modules/icons/unbell.svg"
} ,
2017-03-02 05:01:56 +00:00
"userSpeechBubble" : {
"path" : "Echo/modules/icons/user-speech-bubble.svg"
}
} ,
"merge_strategy" : "array_plus_2d"
} ,
2016-12-01 00:17:30 +00:00
"EchoNotifications" : {
"value" : {
"welcome" : {
"user-locators" : [
"EchoUserLocator::locateEventAgent"
] ,
2018-10-26 23:46:16 +00:00
"canNotifyAgent" : true ,
2019-04-20 00:45:33 +00:00
"category" : "system-noemail" ,
2016-12-01 00:17:30 +00:00
"group" : "positive" ,
"section" : "message" ,
"presentation-model" : "EchoWelcomePresentationModel"
} ,
"edit-user-talk" : {
"presentation-model" : "EchoEditUserTalkPresentationModel" ,
"user-locators" : [
"EchoUserLocator::locateTalkPageOwner"
] ,
"category" : "edit-user-talk" ,
"group" : "interactive" ,
"section" : "alert" ,
"bundle" : {
"web" : true ,
2017-10-20 09:26:24 +00:00
"email" : false ,
"expandable" : true
2016-12-01 00:17:30 +00:00
} ,
"immediate" : true
} ,
"reverted" : {
"presentation-model" : "EchoRevertedPresentationModel" ,
"user-locators" : [
[
"EchoUserLocator::locateFromEventExtra" ,
[
"reverted-user-id"
]
]
] ,
"category" : "reverted" ,
"group" : "negative" ,
"section" : "alert"
} ,
"page-linked" : {
"presentation-model" : "EchoPageLinkedPresentationModel" ,
"user-locators" : [
"EchoUserLocator::locateArticleCreator"
] ,
"category" : "article-linked" ,
"group" : "neutral" ,
"section" : "message" ,
"bundle" : {
"web" : true ,
"email" : true ,
"expandable" : true
}
} ,
2019-12-09 02:42:55 +00:00
"minor-watchlist-change" : {
"user-locators" : [
"EchoUserLocator::locateUsersWatchingTitle"
] ,
"category" : "minor-watchlist" ,
"group" : "interactive" ,
2022-05-11 11:52:43 +00:00
"section" : "message" ,
2019-12-09 02:42:55 +00:00
"presentation-model" : "EchoWatchlistChangePresentationModel" ,
"bundle" : {
"web" : true ,
"email" : true ,
"expandable" : true
}
} ,
"watchlist-change" : {
"user-locators" : [
"EchoUserLocator::locateUsersWatchingTitle"
] ,
2022-05-11 11:52:43 +00:00
"section" : "message" ,
2019-12-09 02:42:55 +00:00
"category" : "watchlist" ,
"group" : "interactive" ,
"presentation-model" : "EchoWatchlistChangePresentationModel" ,
"bundle" : {
"web" : true ,
"email" : true ,
"expandable" : true
}
} ,
2016-12-01 00:17:30 +00:00
"mention" : {
"user-locators" : [
[
"EchoUserLocator::locateFromEventExtra" ,
[
"mentioned-users"
]
]
] ,
"category" : "mention" ,
"group" : "interactive" ,
"section" : "alert" ,
"presentation-model" : "EchoMentionPresentationModel"
} ,
2018-01-19 21:26:49 +00:00
"mention-summary" : {
"user-locators" : [
[
"EchoUserLocator::locateFromEventExtra" ,
[
"mentioned-users"
]
]
] ,
"category" : "mention" ,
"group" : "interactive" ,
"section" : "alert" ,
"presentation-model" : "EchoMentionInSummaryPresentationModel"
} ,
2016-12-01 00:17:30 +00:00
"mention-failure" : {
"user-locators" : [
[
"EchoUserLocator::locateEventAgent"
]
] ,
2018-10-26 23:46:16 +00:00
"canNotifyAgent" : true ,
2016-12-01 00:17:30 +00:00
"category" : "mention-failure" ,
"bundle" : {
"web" : true ,
"expandable" : true
} ,
"group" : "negative" ,
"section" : "alert" ,
"presentation-model" : "EchoMentionStatusPresentationModel"
} ,
"mention-failure-too-many" : {
"user-locators" : [
[
"EchoUserLocator::locateEventAgent"
]
] ,
2018-10-26 23:46:16 +00:00
"canNotifyAgent" : true ,
2016-12-01 00:17:30 +00:00
"category" : "mention-failure" ,
"group" : "negative" ,
"section" : "alert" ,
"presentation-model" : "EchoMentionStatusPresentationModel"
} ,
"mention-success" : {
"user-locators" : [
[
"EchoUserLocator::locateEventAgent"
]
] ,
2018-10-26 23:46:16 +00:00
"canNotifyAgent" : true ,
2016-12-01 00:17:30 +00:00
"category" : "mention-success" ,
"bundle" : {
"web" : true ,
"expandable" : true
} ,
"group" : "positive" ,
2022-08-05 23:26:31 +00:00
"section" : "message" ,
2016-12-01 00:17:30 +00:00
"presentation-model" : "EchoMentionStatusPresentationModel"
} ,
"user-rights" : {
"user-locators" : [
[
"EchoUserLocator::locateFromEventExtra" ,
[
"user"
]
]
] ,
"category" : "user-rights" ,
"group" : "neutral" ,
"section" : "alert" ,
"presentation-model" : "EchoUserRightsPresentationModel"
} ,
"emailuser" : {
"presentation-model" : "EchoEmailUserPresentationModel" ,
"user-locators" : [
[
"EchoUserLocator::locateFromEventExtra" ,
[
"to-user-id"
]
]
] ,
"category" : "emailuser" ,
"group" : "neutral" ,
"section" : "alert"
} ,
"foreign" : {
"presentation-model" : "EchoForeignPresentationModel" ,
"user-locators" : [
"EchoUserLocator::locateEventAgent"
] ,
"category" : "foreign" ,
"group" : "positive" ,
"section" : "alert"
} ,
"thank-you-edit" : {
"user-locators" : [
"EchoUserLocator::locateEventAgent"
] ,
2018-10-26 23:46:16 +00:00
"canNotifyAgent" : true ,
2019-04-10 20:54:51 +00:00
"category" : "thank-you-edit" ,
2016-12-01 00:17:30 +00:00
"group" : "positive" ,
"presentation-model" : "EchoEditThresholdPresentationModel" ,
"section" : "message"
2017-06-01 12:08:51 +00:00
} ,
"article-reminder" : {
"user-locators" : [
"EchoUserLocator::locateEventAgent"
] ,
2018-10-26 23:46:16 +00:00
"canNotifyAgent" : true ,
2017-06-01 12:08:51 +00:00
"category" : "article-reminder" ,
"group" : "positive" ,
"presentation-model" : "EchoArticleReminderPresentationModel" ,
"section" : "message"
2016-12-01 00:17:30 +00:00
}
} ,
"merge_strategy" : "array_plus_2d"
} ,
"EchoCacheVersion" : {
"value" : "1.12"
} ,
"EchoEventLoggingVersion" : {
"value" : "1.12"
} ,
"EchoEventLoggingSchemas" : {
"value" : {
"Echo" : {
2018-07-26 18:48:32 +00:00
"enabled" : false
2016-12-01 00:17:30 +00:00
} ,
"EchoMail" : {
2018-07-26 18:48:32 +00:00
"enabled" : false
2016-12-01 00:17:30 +00:00
} ,
"EchoInteraction" : {
2018-07-26 18:48:32 +00:00
"enabled" : false
2016-12-01 00:17:30 +00:00
}
} ,
"merge_strategy" : "array_plus_2d"
2017-06-01 12:08:51 +00:00
} ,
"AllowArticleReminderNotification" : {
"value" : false ,
"description" : "This is a feature flag to the Article Reminder notification"
2018-01-19 21:26:49 +00:00
} ,
"EchoMaxMentionsInEditSummary" : {
"value" : 0 ,
"description" : "Maximum nubmer of users that will be notified that they were linked from an edit summary or 0 for no notifications"
2019-06-10 15:29:05 +00:00
} ,
"EchoPollForUpdates" : {
"value" : 0 ,
2019-06-25 02:22:58 +00:00
"description" : "This is the polling rate i.e. the time after which we check for notifications count on the client side. It also controls whether notification count will be displayed in browser title. If polling rate is 0 this means polling is disabled and notification count is also not shown in browser title"
2019-12-09 02:42:55 +00:00
} ,
"EchoWatchlistNotifications" : {
"value" : false ,
"description" : "Feature flag to enable Echo notifications whenever a page on a user's watchlist is changed, replacing the built-in preference to send emails in that circumstance."
} ,
"EchoWatchlistEmailOncePerPage" : {
"value" : true ,
"description" : "Whether to send email notifications each time a watched page is edited (if false) or only the first time the page is changed before being visited again by the user (if true)"
2020-05-15 17:19:03 +00:00
} ,
"EchoEnablePush" : {
"value" : false ,
"description" : "Whether to enable push notifications"
2020-05-22 22:02:34 +00:00
} ,
2020-06-02 23:21:36 +00:00
"EchoPushServiceBaseUrl" : {
2020-05-22 22:02:34 +00:00
"value" : false ,
"description" : "Request endpoint URL for the push notification service"
2020-08-12 21:33:06 +00:00
} ,
"EchoPushMaxSubscriptionsPerUser" : {
"value" : 0 ,
"description" : "Maximum number of push subscriptions that may be stored in the DB at any given time for a single central user ID."
2016-12-01 00:17:30 +00:00
}
} ,
2018-07-26 18:48:32 +00:00
"attributes" : {
"EventLogging" : {
"Schemas" : {
2021-07-27 18:54:39 +00:00
"EchoInteraction" : "/analytics/legacy/echointeraction/1.0.0" ,
"EchoMail" : "/analytics/legacy/echomail/1.0.0"
2018-07-26 18:48:32 +00:00
}
}
} ,
2017-06-26 18:03:04 +00:00
"manifest_version" : 2 ,
"AutoloadClasses" : {
2018-08-30 01:03:16 +00:00
"ApiCrossWiki" : "includes/api/ApiCrossWiki.php" ,
2017-06-08 16:38:06 +00:00
"ApiEchoArticleReminder" : "includes/api/ApiEchoArticleReminder.php" ,
2017-06-26 18:03:04 +00:00
"ApiEchoMarkRead" : "includes/api/ApiEchoMarkRead.php" ,
"ApiEchoMarkSeen" : "includes/api/ApiEchoMarkSeen.php" ,
2020-04-28 03:39:40 +00:00
"ApiEchoMute" : "includes/api/ApiEchoMute.php" ,
2017-06-26 18:03:04 +00:00
"ApiEchoNotifications" : "includes/api/ApiEchoNotifications.php" ,
"ApiEchoUnreadNotificationPages" : "includes/api/ApiEchoUnreadNotificationPages.php" ,
"BackfillUnreadWikis" : "maintenance/backfillUnreadWikis.php" ,
"Bundleable" : "includes/Bundleable.php" ,
"Bundler" : "includes/Bundler.php" ,
"EchoAbstractEntity" : "includes/model/AbstractEntity.php" ,
"EchoAbstractMapper" : "includes/mapper/AbstractMapper.php" ,
2018-01-21 20:52:43 +00:00
"EchoArrayList" : "includes/EchoArrayList.php" ,
2017-06-26 18:03:04 +00:00
"EchoAttributeManager" : "includes/AttributeManager.php" ,
2018-01-21 20:52:43 +00:00
"EchoCachedList" : "includes/EchoCachedList.php" ,
2017-06-26 18:03:04 +00:00
"EchoCallbackIterator" : "includes/iterator/CallbackIterator.php" ,
"EchoCatchableFatalErrorException" : "includes/exception/CatchableFatalErrorException.php" ,
2018-01-21 20:52:43 +00:00
"EchoContainmentList" : "includes/EchoContainmentList.php" ,
"EchoContainmentSet" : "includes/EchoContainmentSet.php" ,
2017-06-26 18:03:04 +00:00
"EchoDataOutputFormatter" : "includes/DataOutputFormatter.php" ,
"EchoDeferredMarkAsDeletedUpdate" : "includes/DeferredMarkAsDeletedUpdate.php" ,
2018-01-21 20:52:43 +00:00
"EchoDiffGroup" : "includes/EchoDiffGroup.php" ,
"EchoDiffParser" : "includes/EchoDiffParser.php" ,
2017-06-26 18:03:04 +00:00
"EchoDiscussionParser" : "includes/DiscussionParser.php" ,
"EchoEditThresholdPresentationModel" : "includes/formatters/EditThresholdPresentationModel.php" ,
"EchoEditUserTalkPresentationModel" : "includes/formatters/EditUserTalkPresentationModel.php" ,
2017-06-01 12:08:51 +00:00
"EchoArticleReminderPresentationModel" : "includes/formatters/ArticleReminderPresentationModel.php" ,
2017-06-26 18:03:04 +00:00
"EchoEmailFormat" : "includes/EmailFormat.php" ,
"EchoEmailFrequency" : "includes/EmailFrequency.php" ,
"EchoEmailUserPresentationModel" : "includes/formatters/EmailUserPresentationModel.php" ,
"EchoEvent" : "includes/model/Event.php" ,
"EchoEventDigestFormatter" : "includes/formatters/EchoEventDigestFormatter.php" ,
"EchoEventFormatter" : "includes/formatters/EchoEventFormatter.php" ,
"EchoEventMapper" : "includes/mapper/EventMapper.php" ,
"EchoEventPresentationModel" : "includes/formatters/EventPresentationModel.php" ,
"EchoFilteredSequentialIterator" : "includes/iterator/FilteredSequentialIterator.php" ,
"EchoFlyoutFormatter" : "includes/formatters/EchoFlyoutFormatter.php" ,
"EchoForeignNotifications" : "includes/ForeignNotifications.php" ,
"EchoForeignPresentationModel" : "includes/formatters/EchoForeignPresentationModel.php" ,
"EchoForeignWikiRequest" : "includes/ForeignWikiRequest.php" ,
"EchoHtmlDigestEmailFormatter" : "includes/formatters/EchoHtmlDigestEmailFormatter.php" ,
"EchoHtmlEmailFormatter" : "includes/formatters/EchoHtmlEmailFormatter.php" ,
"EchoIcon" : "includes/formatters/EchoIcon.php" ,
"EchoLocalCache" : "includes/cache/LocalCache.php" ,
2018-01-19 21:26:49 +00:00
"EchoMentionInSummaryPresentationModel" : "includes/formatters/MentionInSummaryPresentationModel.php" ,
2017-06-26 18:03:04 +00:00
"EchoMentionPresentationModel" : "includes/formatters/MentionPresentationModel.php" ,
"EchoMentionStatusPresentationModel" : "includes/formatters/MentionStatusPresentationModel.php" ,
"EchoModelFormatter" : "includes/formatters/EchoModelFormatter.php" ,
"EchoModerationController" : "includes/controller/ModerationController.php" ,
"EchoMultipleIterator" : "includes/iterator/MultipleIterator.php" ,
"EchoNotRecursiveIterator" : "includes/iterator/NotRecursiveIterator.php" ,
"EchoNotification" : "includes/model/Notification.php" ,
"EchoNotificationController" : "includes/controller/NotificationController.php" ,
"EchoNotificationDeleteJob" : "includes/jobs/NotificationDeleteJob.php" ,
"EchoNotificationJob" : "includes/jobs/NotificationJob.php" ,
"EchoNotificationMapper" : "includes/mapper/NotificationMapper.php" ,
"EchoNotifier" : "includes/Notifier.php" ,
2018-01-21 20:52:43 +00:00
"EchoOnWikiList" : "includes/EchoOnWikiList.php" ,
2017-06-26 18:03:04 +00:00
"EchoPageLinkedPresentationModel" : "includes/formatters/PageLinkedPresentationModel.php" ,
"EchoPlainTextDigestEmailFormatter" : "includes/formatters/EchoPlainTextDigestEmailFormatter.php" ,
"EchoPlainTextEmailFormatter" : "includes/formatters/EchoPlainTextEmailFormatter.php" ,
2019-04-05 20:50:03 +00:00
"EchoPresentationModelSection" : "includes/formatters/PresentationModelSection.php" ,
2017-06-26 18:03:04 +00:00
"EchoRevertedPresentationModel" : "includes/formatters/RevertedPresentationModel.php" ,
"EchoRevisionLocalCache" : "includes/cache/RevisionLocalCache.php" ,
"EchoSeenTime" : "includes/SeenTime.php" ,
2020-05-15 17:19:03 +00:00
"EchoServices" : "includes/EchoServices.php" ,
2018-01-19 21:26:49 +00:00
"EchoSummaryParser" : "includes/EchoSummaryParser.php" ,
2017-06-26 18:03:04 +00:00
"EchoSuppressionRowUpdateGenerator" : "includes/schemaUpdate.php" ,
"EchoTargetPage" : "includes/model/TargetPage.php" ,
"EchoTargetPageMapper" : "includes/mapper/TargetPageMapper.php" ,
"EchoTitleLocalCache" : "includes/cache/TitleLocalCache.php" ,
"EchoUnreadWikis" : "includes/UnreadWikis.php" ,
"EchoUserLocator" : "includes/UserLocator.php" ,
"EchoUserNotificationGateway" : "includes/gateway/UserNotificationGateway.php" ,
"EchoUserRightsPresentationModel" : "includes/formatters/UserRightsPresentationModel.php" ,
"EchoWelcomePresentationModel" : "includes/formatters/WelcomePresentationModel.php" ,
2019-12-09 02:42:55 +00:00
"EchoWatchlistChangePresentationModel" : "includes/formatters/WatchlistChangePresentationModel.php" ,
2017-06-26 18:03:04 +00:00
"GenerateSampleNotifications" : "maintenance/generateSampleNotifications.php" ,
"MWEchoDbFactory" : "includes/EchoDbFactory.php" ,
"MWEchoEmailBatch" : "includes/EmailBatch.php" ,
"MWEchoEventLogging" : "includes/EventLogging.php" ,
"MWEchoNotifUser" : "includes/NotifUser.php" ,
"NotificationPager" : "includes/special/NotificationPager.php" ,
"ProcessEchoEmailBatch" : "maintenance/processEchoEmailBatch.php" ,
2019-04-13 00:48:01 +00:00
"RecomputeNotifCounts" : "maintenance/recomputeNotifCounts.php" ,
2017-06-26 18:03:04 +00:00
"RemoveInvalidNotification" : "maintenance/removeInvalidNotification.php" ,
"RemoveOrphanedEvents" : "maintenance/removeOrphanedEvents.php" ,
"ResourceLoaderEchoImageModule" : "includes/ResourceLoaderEchoImageModule.php" ,
"SpecialDisplayNotificationsConfiguration" : "includes/special/SpecialDisplayNotificationsConfiguration.php" ,
"SpecialNotifications" : "includes/special/SpecialNotifications.php" ,
"SpecialNotificationsFormatter" : "includes/formatters/SpecialNotificationsFormatter.php" ,
"SpecialNotificationsMarkRead" : "includes/special/SpecialNotificationsMarkRead.php" ,
2017-08-23 14:38:58 +00:00
"UpdateEchoSchemaForSuppression" : "maintenance/updateEchoSchemaForSuppression.php" ,
2022-04-08 00:38:27 +00:00
"EchoUpdatePerUserBlacklist" : "maintenance/updatePerUserBlacklist.php" ,
"EchoPush\\PushNotifier" : "includes/Push/PushNotifier.php" ,
"MediaWiki\\Extension\\Notifications\\Push\\PushNotifier" : "includes/Push/PushNotifier.php"
2019-12-30 23:23:54 +00:00
} ,
2020-04-18 23:44:11 +00:00
"AutoloadNamespaces" : {
2022-04-08 00:28:15 +00:00
"MediaWiki\\Extension\\Notifications\\" : "includes/"
2020-04-18 23:44:11 +00:00
} ,
2019-12-30 23:23:54 +00:00
"TestAutoloadClasses" : {
"EchoAbstractMapperStub" : "tests/phpunit/mapper/EchoAbstractMapperStub.php" ,
2019-12-09 11:02:40 +00:00
"EchoExecuteFirstArgumentStub" : "tests/phpunit/mapper/EchoExecuteFirstArgumentStub.php"
2020-05-15 17:19:03 +00:00
} ,
"ServiceWiringFiles" : [
"ServiceWiring.php"
] ,
"ConfigRegistry" : {
"Echo" : "GlobalVarConfig::newInstance"
2017-06-26 18:03:04 +00:00
}
2019-06-28 00:05:55 +00:00
}