{"master":{"name":"Echo","author":["Andrew Garrett","Ryan Kaldari","Benny Situ","Luke Welling","Kunal Mehta","Moriel Schottlender","Jon Robson","Roan Kattouw"],"url":"https:\/\/www.mediawiki.org\/wiki\/Extension:Echo","descriptionmsg":"echo-desc","license-name":"MIT","type":"specialpage","requires":{"MediaWiki":">= 1.47.0"},"APIMetaModules":{"notifications":{"class":"MediaWiki\\Extension\\Notifications\\Api\\ApiEchoNotifications","services":["EchoAttributeManager","MainConfig","JsonCodec"]},"unreadnotificationpages":{"class":"MediaWiki\\Extension\\Notifications\\Api\\ApiEchoUnreadNotificationPages","services":["EchoAttributeManager","PageStore","TitleFactory"]}},"APIModules":{"echomarkread":"MediaWiki\\Extension\\Notifications\\Api\\ApiEchoMarkRead","echomarkseen":"MediaWiki\\Extension\\Notifications\\Api\\ApiEchoMarkSeen","echocreateevent":{"class":"MediaWiki\\Extension\\Notifications\\Api\\ApiEchoCreateEvent","services":["UserNameUtils"]},"echoarticlereminder":"MediaWiki\\Extension\\Notifications\\Api\\ApiEchoArticleReminder","echomute":{"class":"MediaWiki\\Extension\\Notifications\\Api\\ApiEchoMute","services":["CentralIdLookup","LinkBatchFactory","UserOptionsManager"]}},"DefaultUserOptions":{"echo-email-frequency":0,"echo-dont-email-read-notifications":false},"ConditionalUserOptions":{"echo-subscriptions-web-reverted":[[false,["registered-after","20240208200000"]]],"echo-subscriptions-web-article-linked":[[true,["registered-after","20240208200000"]]],"echo-subscriptions-email-mention":[[true,["registered-after","20240208200000"]]],"echo-subscriptions-email-article-linked":[[true,["registered-after","20240208200000"]]]},"ExtensionFunctions":["MediaWiki\\Extension\\Notifications\\Hooks::initEchoExtension"],"JobClasses":{"EchoNotificationJob":"MediaWiki\\Extension\\Notifications\\Jobs\\NotificationJob","EchoNotificationDeleteJob":{"class":"MediaWiki\\Extension\\Notifications\\Jobs\\NotificationDeleteJob","services":["JobQueueGroup","UserFactory"]},"EchoPushNotificationRequest":"MediaWiki\\Extension\\Notifications\\Push\\NotificationRequestJob"},"SpecialPages":{"Notifications":"MediaWiki\\Extension\\Notifications\\Special\\SpecialNotifications","DisplayNotificationsConfiguration":{"class":"MediaWiki\\Extension\\Notifications\\Special\\SpecialDisplayNotificationsConfiguration","services":["EchoAttributeManager","UserOptionsManager"]},"NotificationsMarkRead":"MediaWiki\\Extension\\Notifications\\Special\\SpecialNotificationsMarkRead"},"NotificationHandlers":[{"types":["*"],"class":"MediaWiki\\Extension\\Notifications\\EchoNotificationHandler"}],"AvailableRights":["manage-all-push-subscriptions","echo-create","echo-read-notifications"],"GrantPermissions":{"echo-read-notifications":{"echo-read-notifications":true}},"GrantPermissionGroups":{"echo-read-notifications":"private-information"},"GrantRiskGroups":{"echo-read-notifications":"low"},"GroupPermissions":{"*":{"echo-read-notifications":true},"push-subscription-manager":{"manage-all-push-subscriptions":true}},"ExtensionMessagesFiles":{"EchoAliases":"Echo.alias.php"},"QUnitTestModule":{"localBasePath":"","remoteExtPath":"Echo","dependencies":["ext.echo.dm"],"scripts":["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"]},"Hooks":{"LoadExtensionSchemaUpdates":"schema","GetPreferences":"main","BeforePageDisplay":"main","ResourceLoaderRegisterModules":"main","UserGroupsChanged":"main","BlockIpComplete":"main","UnblockUserComplete":"main","LoadUserOptions":"main","SaveUserOptions":"main","UserGetDefaultOptions":"main","UserClearNewTalkNotification":"main","EmailUserComplete":"main","LoginFormValidErrorMessages":"main","OutputPageCheckLastModified":"main","ArticleUndelete":"main","UserMergeAccountFields":"usermerge","MergeAccountFromTo":"usermerge","UserMergeAccountDeleteTables":"usermerge","RollbackComplete":"main","UserSaveSettings":"main","GetNewMessagesAlert":"main","LinksUpdateComplete":"main","SpecialMuteModifyFormFields":"main","RecentChange_save":"main","ApiMain::moduleManager":"main","SkinTemplateNavigation::Universal":"main","PreferencesGetIcon":"main"},"HookHandlers":{"main":{"class":"MediaWiki\\Extension\\Notifications\\Hooks","services":["AuthManager","CentralIdLookup","MainConfig","EchoAttributeManager","HookContainer","ContentLanguage","LinkRenderer","NamespaceInfo","NotificationService","PermissionManager","StatsFactory","TalkPageNotificationManager","UserEditTracker","UserFactory","UserOptionsManager"],"optional_services":["MobileFrontend.Context"]},"schema":{"class":"MediaWiki\\Extension\\Notifications\\SchemaHooks"},"usermerge":{"class":"MediaWiki\\Extension\\Notifications\\UserMergeHooks","services":["EchoAttributeManager"]}},"DomainEventIngresses":[{"events":["PageDeleted","PageLatestRevisionChanged"],"class":"MediaWiki\\Extension\\Notifications\\MediaWikiEventIngress\\PageEventIngress","services":["RevisionStore","UserEditTracker","EchoEventMapper","UserIdentityUtils"]}],"NotificationMiddleware":[{"class":"MediaWiki\\Extension\\Notifications\\Notifications\\RecentChangeNotificationMiddleware","services":["MainConfig","UserFactory","EchoAttributeManager"]}],"DeprecatedHooks":{"EventInsertComplete":{"deprecatedVersion":"1.46"}},"config":{"EchoEnableEmailBatch":{"value":true},"EchoUseJobQueue":{"value":false},"EchoEmailFooterAddress":{"value":""},"EchoCluster":{"value":false},"EchoSharedTrackingDB":{"value":false},"EchoSharedTrackingCluster":{"value":false},"EchoSeenTimeCacheType":{"value":null},"EchoMaxUpdateCount":{"value":10000},"EchoMaxNotificationAge":{"value":157783680},"EchoMaxMentionsCount":{"value":50},"EchoMentionStatusNotifications":{"value":false},"EchoMentionsOnMultipleSectionEdits":{"value":true},"EchoMentionOnChanges":{"value":true},"EchoBundleEmailInterval":{"value":0},"DefaultNotifyTypeAvailability":{"value":{"web":true,"email":true}},"NotifyTypeAvailabilityByCategory":{"value":{"system-noemail":{"web":true,"email":false},"system-emailonly":{"web":false,"email":true},"block":{"web":true,"email":false},"emailuser":{"web":true,"email":false},"article-linked":{"web":true,"email":false},"mention-failure":{"web":true,"email":false},"mention-success":{"web":true,"email":false},"thank-you-edit":{"web":true,"email":false},"verify-email-reminder":{"web":true,"email":true}},"merge_strategy":"array_plus_2d"},"EchoNotifiers":{"value":{"web":"MediaWiki\\Extension\\Notifications\\Notifier::notifyWithNotification","email":"MediaWiki\\Extension\\Notifications\\Notifier::notifyWithEmail"}},"EchoAgentBlacklist":{"value":[]},"EchoOnWikiBlacklist":{"value":"Echo-blacklist"},"EchoPerUserBlacklist":{"value":false},"EchoPerUserWhitelistFormat":{"value":"%s\/Echo-whitelist"},"EchoCrossWikiNotifications":{"value":false},"EchoNotificationCategories":{"value":{"system":{"priority":9,"no-dismiss":["all"]},"system-noemail":{"priority":9,"no-dismiss":["all"]},"system-emailonly":{"priority":9,"no-dismiss":["all"]},"user-rights":{"priority":9},"block":{"priority":9,"tooltip":"echo-pref-tooltip-block"},"other":{"no-dismiss":["all"]},"edit-user-talk":{"priority":1,"no-dismiss":["web"]},"edit-user-page":{"priority":1},"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},"article-reminder":{"priority":1,"tooltip":"echo-pref-tooltip-article-reminder"},"thank-you-edit":{"priority":9,"tooltip":"echo-pref-tooltip-thank-you-edit"},"watchlist":{"priority":5,"tooltip":"echo-pref-tooltip-watchlist"},"minor-watchlist":{"priority":6,"tooltip":"echo-pref-tooltip-minor-watchlist"},"api-triggered":{"priority":9,"tooltip":"echo-pref-tooltip-api-triggered"},"verify-email-reminder":{"priority":1,"tooltip":"echo-pref-tooltip-verify-email-reminder"}},"merge_strategy":"array_plus_2d"},"EchoNotificationIcons":{"value":{"alert":{"path":"Echo\/modules\/icons\/alert.svg","url":false},"watchlist-progressive":{"path":{"ltr":"Echo\/modules\/icons\/watchlist-ltr-progressive.svg","rtl":"Echo\/modules\/icons\/watchlist-rtl-progressive.svg"}},"placeholder":{"path":"Echo\/modules\/icons\/notice.svg"},"chat":{"path":{"ltr":"Echo\/modules\/icons\/speechBubbles-ltr-progressive.svg","rtl":"Echo\/modules\/icons\/speechBubbles-rtl-progressive.svg"}},"edit":{"path":"Echo\/modules\/icons\/edit-progressive.svg"},"edit-user-page":{"path":"Echo\/modules\/icons\/edit-user-page.svg"},"edit-user-talk":{"path":"Echo\/modules\/icons\/edit-user-talk-progressive.svg"},"linked":{"path":"Echo\/modules\/icons\/link-progressive.svg"},"mention":{"path":"Echo\/modules\/icons\/mention-progressive.svg"},"mention-failure":{"path":"Echo\/modules\/icons\/mention-failure.svg"},"mention-success":{"path":"Echo\/modules\/icons\/mention-success-constructive.svg"},"mention-status-bundle":{"path":"Echo\/modules\/icons\/mention-status-bundle-progressive.svg"},"reviewed":{"path":"Echo\/modules\/icons\/articleCheck-progressive.svg"},"revert":{"path":"Echo\/modules\/icons\/revert.svg"},"user-rights":{"path":"Echo\/modules\/icons\/user-rights-progressive.svg"},"block":{"path":"Echo\/modules\/icons\/user-rights-progressive.svg"},"emailuser":{"path":"Echo\/modules\/icons\/message-constructive.svg"},"help":{"path":{"ltr":"Echo\/modules\/icons\/helpNotice-ltr.svg","rtl":"Echo\/modules\/icons\/helpNotice-rtl.svg"}},"global":{"path":"Echo\/modules\/icons\/global-progressive.svg"},"site":{"url":false},"article-reminder":{"path":"Echo\/modules\/icons\/global-progressive.svg"},"robot":{"path":"Echo\/modules\/icons\/robot.svg"}},"merge_strategy":"array_plus_2d"},"EchoSecondaryIcons":{"value":{"linked":{"path":"Echo\/modules\/icons\/link-progressive.svg"},"changes":{"path":"Echo\/modules\/icons\/changes.svg"},"thanks":{"path":{"ltr":"Echo\/modules\/icons\/userTalk-ltr.svg","rtl":"Echo\/modules\/icons\/userTalk-rtl.svg"}},"unbell":{"path":"Echo\/modules\/icons\/unbell.svg"},"userSpeechBubble":{"path":"Echo\/modules\/icons\/user-speech-bubble.svg"}},"merge_strategy":"array_plus_2d"},"EchoNotifications":{"value":{"welcome":{"user-locators":["MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"],"canNotifyAgent":true,"category":"system-noemail","group":"positive","section":"message","presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoWelcomePresentationModel"},"edit-user-page":{"presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoEditUserPagePresentationModel","user-locators":["MediaWiki\\Extension\\Notifications\\UserLocator::locateUserPageOwner"],"category":"edit-user-page","group":"interactive","section":"alert","bundle":{"web":true,"email":false,"expandable":true},"immediate":true},"edit-user-talk":{"presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoEditUserTalkPresentationModel","user-locators":["MediaWiki\\Extension\\Notifications\\UserLocator::locateTalkPageOwner"],"category":"edit-user-talk","group":"interactive","section":"alert","bundle":{"web":true,"email":false,"expandable":true},"immediate":true},"reverted":{"presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoRevertedPresentationModel","user-locators":[["MediaWiki\\Extension\\Notifications\\UserLocator::locateFromEventExtra",["reverted-user-id"]]],"category":"reverted","group":"negative","section":"alert"},"page-linked":{"presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoPageLinkedPresentationModel","user-locators":["MediaWiki\\Extension\\Notifications\\UserLocator::locateArticleCreator"],"category":"article-linked","group":"neutral","section":"message","bundle":{"web":true,"email":true,"expandable":true},"apply-page-link-mute":true},"minor-watchlist-change":{"user-locators":["MediaWiki\\Extension\\Notifications\\UserLocator::locateUsersWatchingTitle"],"category":"minor-watchlist","group":"interactive","section":"message","presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoWatchlistChangePresentationModel","bundle":{"web":true,"email":true,"expandable":true}},"watchlist-change":{"user-locators":["MediaWiki\\Extension\\Notifications\\UserLocator::locateUsersWatchingTitle"],"section":"message","category":"watchlist","group":"interactive","presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoWatchlistChangePresentationModel","bundle":{"web":true,"email":true,"expandable":true}},"mention":{"user-locators":[["MediaWiki\\Extension\\Notifications\\UserLocator::locateFromEventExtra",["mentioned-users"]]],"category":"mention","group":"interactive","section":"alert","presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionPresentationModel"},"mention-summary":{"user-locators":[["MediaWiki\\Extension\\Notifications\\UserLocator::locateFromEventExtra",["mentioned-users"]]],"category":"mention","group":"interactive","section":"alert","presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionInSummaryPresentationModel"},"mention-failure":{"user-locators":[["MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"]],"canNotifyAgent":true,"category":"mention-failure","bundle":{"web":true,"expandable":true},"group":"negative","section":"alert","presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionStatusPresentationModel"},"mention-failure-too-many":{"user-locators":[["MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"]],"canNotifyAgent":true,"category":"mention-failure","group":"negative","section":"alert","presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionStatusPresentationModel"},"mention-success":{"user-locators":[["MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"]],"canNotifyAgent":true,"category":"mention-success","bundle":{"web":true,"expandable":true},"group":"positive","section":"message","presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionStatusPresentationModel"},"user-rights":{"category":"user-rights","group":"neutral","section":"alert","presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoUserRightsPresentationModel"},"user-blocked":{"category":"block","group":"negative","section":"alert","presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoUserBlockStatusPresentationModel"},"user-unblocked":{"category":"block","group":"negative","section":"alert","presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoUserBlockStatusPresentationModel"},"emailuser":{"presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoEmailUserPresentationModel","category":"emailuser","group":"neutral","section":"alert"},"verify-email-reminder":{"presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoVerifyEmailReminderPresentationModel","category":"verify-email-reminder","group":"negative","section":"alert"},"foreign":{"presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoForeignPresentationModel","user-locators":["MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"],"category":"foreign","group":"positive","section":"alert"},"thank-you-edit":{"user-locators":["MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"],"canNotifyAgent":true,"category":"thank-you-edit","group":"positive","presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoEditThresholdPresentationModel","section":"message"},"article-reminder":{"user-locators":["MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"],"canNotifyAgent":true,"category":"article-reminder","group":"positive","presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoArticleReminderPresentationModel","section":"message"},"api-alert":{"canNotifyAgent":true,"category":"api-triggered","group":"neutral","section":"alert","presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoManualPresentationModel"},"api-notice":{"canNotifyAgent":true,"category":"api-triggered","group":"neutral","section":"message","presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoManualPresentationModel"},"mediawiki.simple":{"category":"other","group":"neutral","section":"message","presentation-model":"MediaWiki\\Extension\\Notifications\\Formatters\\EchoSimpleMessagePresentationModel"}},"merge_strategy":"array_plus_2d"},"EchoCacheVersion":{"value":"1.12"},"AllowArticleReminderNotification":{"value":false,"description":"This is a feature flag to the Article Reminder notification"},"EchoBlockNotifications":{"value":true,"description":"Feature flag to enable Echo notifications when local users are blocked."},"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"},"EchoMentionsInEditSummaryBots":{"value":false,"description":"Whether to allow mentions by bot accounts in edit summaries to trigger notifications (subject to EchoMaxMentionsInEditSummary limit)"},"EchoPollForUpdates":{"value":0,"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"},"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)"},"EchoEnableApiEvents":{"value":false,"description":"Whether to enable the API for creating custom Echo events"},"EchoEnablePush":{"value":false,"description":"Whether to enable push notifications"},"EchoPushServiceBaseUrl":{"value":false,"description":"Request endpoint URL for the push notification service"},"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."}},"ServiceWiringFiles":["ServiceWiring.php"],"ConfigRegistry":{"Echo":"MediaWiki\\Config\\GlobalVarConfig::newInstance"},"InstallerTasks":[{"class":"MediaWiki\\Extension\\Notifications\\InstallSchemaTask"}],"repository":"https:\/\/gerrit.wikimedia.org\/r\/mediawiki\/extensions\/Echo"}}