-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathServiceWiring.php
109 lines (94 loc) · 3.51 KB
/
ServiceWiring.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
use MediaWiki\Extension\Notifications\AttributeManager;
use MediaWiki\Extension\Notifications\Cache\RevisionLocalCache;
use MediaWiki\Extension\Notifications\Cache\TitleLocalCache;
use MediaWiki\Extension\Notifications\Push\NotificationServiceClient;
use MediaWiki\Extension\Notifications\Push\SubscriptionManager;
use MediaWiki\Logger\LoggerFactory;
use MediaWiki\MediaWikiServices;
use MediaWiki\Storage\NameTableStore;
// PHP unit does not understand code coverage for this file
// as the @covers annotation cannot cover a specific file.
// Whether the services return without error is checked in ServiceWiringTest.php
// @codeCoverageIgnoreStart
return [
'EchoAttributeManager' => static function ( MediaWikiServices $services ): AttributeManager {
$userGroupManager = $services->getUserGroupManager();
$echoConfig = $services->getConfigFactory()->makeConfig( 'Echo' );
$notifications = $echoConfig->get( 'EchoNotifications' );
$categories = $echoConfig->get( 'EchoNotificationCategories' );
$typeAvailability = $echoConfig->get( 'DefaultNotifyTypeAvailability' );
$typeAvailabilityByCategory = $echoConfig->get( 'NotifyTypeAvailabilityByCategory' );
return new AttributeManager(
$notifications,
$categories,
$typeAvailability,
$typeAvailabilityByCategory,
$userGroupManager,
$services->getUserOptionsLookup()
);
},
'EchoPushNotificationServiceClient' => static function (
MediaWikiServices $services
): NotificationServiceClient {
$echoConfig = $services->getConfigFactory()->makeConfig( 'Echo' );
$httpRequestFactory = $services->getHttpRequestFactory();
$url = $echoConfig->get( 'EchoPushServiceBaseUrl' );
$client = new NotificationServiceClient( $httpRequestFactory, $url );
$client->setLogger( LoggerFactory::getInstance( 'Echo' ) );
return $client;
},
'EchoPushSubscriptionManager' => static function ( MediaWikiServices $services ): SubscriptionManager {
$echoConfig = $services->getConfigFactory()->makeConfig( 'Echo' );
// Use shared DB/cluster for push subscriptions
$cluster = $echoConfig->get( 'EchoSharedTrackingCluster' );
$database = $echoConfig->get( 'EchoSharedTrackingDB' );
$loadBalancerFactory = $services->getDBLoadBalancerFactory();
$loadBalancer = $cluster
? $loadBalancerFactory->getExternalLB( $cluster )
: $loadBalancerFactory->getMainLB( $database );
$dbw = $loadBalancer->getConnection( DB_PRIMARY, [], $database );
$dbr = $loadBalancer->getConnection( DB_REPLICA, [], $database );
$pushProviderStore = new NameTableStore(
$loadBalancer,
$services->getMainWANObjectCache(),
LoggerFactory::getInstance( 'Echo' ),
'echo_push_provider',
'epp_id',
'epp_name',
null,
$database
);
$pushTopicStore = new NameTableStore(
$loadBalancer,
$services->getMainWANObjectCache(),
LoggerFactory::getInstance( 'Echo' ),
'echo_push_topic',
'ept_id',
'ept_text',
null,
$database
);
$maxSubscriptionsPerUser = $echoConfig->get( 'EchoPushMaxSubscriptionsPerUser' );
return new SubscriptionManager(
$dbw,
$dbr,
$pushProviderStore,
$pushTopicStore,
$maxSubscriptionsPerUser
);
},
'EchoTitleLocalCache' => static function ( MediaWikiServices $services ): TitleLocalCache {
return new TitleLocalCache(
$services->getPageStore(),
$services->getTitleFactory()
);
},
'EchoRevisionLocalCache' => static function ( MediaWikiServices $services ): RevisionLocalCache {
return new RevisionLocalCache(
$services->getConnectionProvider(),
$services->getRevisionStore()
);
}
];
// @codeCoverageIgnoreEnd