Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 71
0.00% covered (danger)
0.00%
0 / 71
CRAP
0.00% covered (danger)
0.00%
0 / 1
GrowthExperimentsServices
0.00% covered (danger)
0.00%
0 / 71
0.00% covered (danger)
0.00%
0 / 71
5112
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 wrap
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getChangeMentorFactory
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getGrowthConfig
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getGrowthWikiConfig
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getLoadBalancer
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getExperimentUserManager
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getHomepageModuleRegistry
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getImageRecommendationProvider
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getImageRecommendationProviderUncached
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getLinkRecommendationHelper
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getLinkRecommendationProvider
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getLinkRecommendationStore
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getLinkRecommendationUpdater
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getLinkSubmissionRecorder
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getMenteeOverviewDataProvider
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getDatabaseMenteeOverviewDataProvider
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getUncachedMenteeOverviewDataProvider
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getMenteeOverviewDataUpdater
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getMentorDashboardModuleRegistry
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getMentorManager
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getMentorProvider
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getMentorProviderStructured
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getMentorRemover
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getMentorStatusManager
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getMentorStore
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getMentorWriter
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getDatabaseMentorStore
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getMetricsFactory
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getNewcomerTasksConfigurationLoader
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getNewcomerTasksConfigurationValidator
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getNewcomerTasksUserOptionsLookup
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getProtectionFilter
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getLinkRecommendationFilter
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getImageRecommendationFilter
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getPersonalizedPraiseLogger
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getPersonalizedPraiseNotificationsDispatcher
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getPersonalizedPraiseSettings
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getPraiseworthyConditionsLookup
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getPraiseworthyMenteeSuggester
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getQuestionPosterFactory
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getReassignMenteesFactory
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getStarredMenteesStore
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getSuggestionsInfo
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getTaskSuggesterFactory
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getTaskTypeHandlerRegistry
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getTipsAssembler
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getTipNodeRenderer
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getWelcomeSurveyFactory
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getWikiPageConfig
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getWikiPageConfigLoader
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getWikiPageConfigValidatorFactory
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getWikiPageConfigWriterFactory
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getImageRecommendationMetadataService
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getImageRecommendationMetadataProvider
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getImageRecommendationSubmissionLogFactory
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getSectionImageRecommendationSubmissionLogFactory
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getLinkRecommendationSubmissionLogFactory
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getAddImageSubmissionHandler
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getGrowthExperimentsCampaignConfig
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getTemplateBasedTaskSubmissionHandler
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getNewcomerTasksChangeTagsManager
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getImageRecommendationApiHandler
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getUserImpactLookup
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getUncachedUserImpactLookup
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getUserImpactStore
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getUserImpactFormatter
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getUserDatabaseHelper
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getEventGateImageSuggestionFeedbackUpdater
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getAddLinkSubmissionHandler
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getLevelingUpManager
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace GrowthExperiments;
4
5use GrowthExperiments\Config\Validation\ConfigValidatorFactory;
6use GrowthExperiments\Config\WikiPageConfig;
7use GrowthExperiments\Config\WikiPageConfigLoader;
8use GrowthExperiments\Config\WikiPageConfigWriterFactory;
9use GrowthExperiments\EventLogging\PersonalizedPraiseLogger;
10use GrowthExperiments\HelpPanel\QuestionPoster\QuestionPosterFactory;
11use GrowthExperiments\HelpPanel\Tips\TipNodeRenderer;
12use GrowthExperiments\HelpPanel\Tips\TipsAssembler;
13use GrowthExperiments\Homepage\HomepageModuleRegistry;
14use GrowthExperiments\LevelingUp\LevelingUpManager;
15use GrowthExperiments\MentorDashboard\MenteeOverview\DatabaseMenteeOverviewDataProvider;
16use GrowthExperiments\MentorDashboard\MenteeOverview\MenteeOverviewDataProvider;
17use GrowthExperiments\MentorDashboard\MenteeOverview\MenteeOverviewDataUpdater;
18use GrowthExperiments\MentorDashboard\MenteeOverview\StarredMenteesStore;
19use GrowthExperiments\MentorDashboard\MenteeOverview\UncachedMenteeOverviewDataProvider;
20use GrowthExperiments\MentorDashboard\MentorDashboardModuleRegistry;
21use GrowthExperiments\MentorDashboard\MentorTools\MentorStatusManager;
22use GrowthExperiments\MentorDashboard\PersonalizedPraise\PersonalizedPraiseNotificationsDispatcher;
23use GrowthExperiments\MentorDashboard\PersonalizedPraise\PersonalizedPraiseSettings;
24use GrowthExperiments\MentorDashboard\PersonalizedPraise\PraiseworthyConditionsLookup;
25use GrowthExperiments\MentorDashboard\PersonalizedPraise\PraiseworthyMenteeSuggester;
26use GrowthExperiments\Mentorship\ChangeMentorFactory;
27use GrowthExperiments\Mentorship\MentorManager;
28use GrowthExperiments\Mentorship\MentorRemover;
29use GrowthExperiments\Mentorship\Provider\AbstractStructuredMentorProvider;
30use GrowthExperiments\Mentorship\Provider\IMentorWriter;
31use GrowthExperiments\Mentorship\Provider\MentorProvider;
32use GrowthExperiments\Mentorship\ReassignMenteesFactory;
33use GrowthExperiments\Mentorship\Store\DatabaseMentorStore;
34use GrowthExperiments\Mentorship\Store\MentorStore;
35use GrowthExperiments\NewcomerTasks\AddImage\AddImageSubmissionHandler;
36use GrowthExperiments\NewcomerTasks\AddImage\EventBus\EventGateImageSuggestionFeedbackUpdater;
37use GrowthExperiments\NewcomerTasks\AddImage\ImageRecommendationApiHandler;
38use GrowthExperiments\NewcomerTasks\AddImage\ImageRecommendationMetadataProvider;
39use GrowthExperiments\NewcomerTasks\AddImage\ImageRecommendationMetadataService;
40use GrowthExperiments\NewcomerTasks\AddImage\ImageRecommendationProvider;
41use GrowthExperiments\NewcomerTasks\AddImage\ImageRecommendationSubmissionLogFactory;
42use GrowthExperiments\NewcomerTasks\AddLink\AddLinkSubmissionHandler;
43use GrowthExperiments\NewcomerTasks\AddLink\LinkRecommendationHelper;
44use GrowthExperiments\NewcomerTasks\AddLink\LinkRecommendationProvider;
45use GrowthExperiments\NewcomerTasks\AddLink\LinkRecommendationStore;
46use GrowthExperiments\NewcomerTasks\AddLink\LinkRecommendationSubmissionLogFactory;
47use GrowthExperiments\NewcomerTasks\AddLink\LinkRecommendationUpdater;
48use GrowthExperiments\NewcomerTasks\AddLink\LinkSubmissionRecorder;
49use GrowthExperiments\NewcomerTasks\AddSectionImage\SectionImageRecommendationSubmissionLogFactory;
50use GrowthExperiments\NewcomerTasks\CampaignConfig;
51use GrowthExperiments\NewcomerTasks\ConfigurationLoader\ConfigurationLoader;
52use GrowthExperiments\NewcomerTasks\ConfigurationLoader\ConfigurationValidator;
53use GrowthExperiments\NewcomerTasks\ImageRecommendationFilter;
54use GrowthExperiments\NewcomerTasks\LinkRecommendationFilter;
55use GrowthExperiments\NewcomerTasks\NewcomerTasksChangeTagsManager;
56use GrowthExperiments\NewcomerTasks\NewcomerTasksInfo;
57use GrowthExperiments\NewcomerTasks\NewcomerTasksUserOptionsLookup;
58use GrowthExperiments\NewcomerTasks\ProtectionFilter;
59use GrowthExperiments\NewcomerTasks\TaskSuggester\TaskSuggesterFactory;
60use GrowthExperiments\NewcomerTasks\TaskType\TaskTypeHandlerRegistry;
61use GrowthExperiments\NewcomerTasks\TemplateBasedTaskSubmissionHandler;
62use GrowthExperiments\PeriodicMetrics\MetricsFactory;
63use GrowthExperiments\UserImpact\UserImpactFormatter;
64use GrowthExperiments\UserImpact\UserImpactLookup;
65use GrowthExperiments\UserImpact\UserImpactStore;
66use MediaWiki\Config\Config;
67use MediaWiki\MediaWikiServices;
68use Wikimedia\Rdbms\ILoadBalancer;
69
70/**
71 * A simple wrapper for MediaWikiServices, to support type safety when accessing
72 * services defined by this extension.
73 */
74class GrowthExperimentsServices {
75
76    /** @var MediaWikiServices */
77    private $coreServices;
78
79    /**
80     * @param MediaWikiServices $coreServices
81     */
82    public function __construct( MediaWikiServices $coreServices ) {
83        $this->coreServices = $coreServices;
84    }
85
86    /**
87     * Static version of the constructor, for nicer syntax.
88     * @param MediaWikiServices $coreServices
89     * @return static
90     */
91    public static function wrap( MediaWikiServices $coreServices ) {
92        return new static( $coreServices );
93    }
94
95    // Service aliases
96    // phpcs:disable MediaWiki.Commenting.FunctionComment
97
98    public function getChangeMentorFactory(): ChangeMentorFactory {
99        return $this->coreServices->get( 'GrowthExperimentsChangeMentorFactory' );
100    }
101
102    public function getGrowthConfig(): Config {
103        return $this->coreServices->get( 'GrowthExperimentsConfig' );
104    }
105
106    public function getGrowthWikiConfig(): Config {
107        return $this->coreServices->get( 'GrowthExperimentsCommunityConfig' );
108    }
109
110    public function getLoadBalancer(): ILoadBalancer {
111        return $this->coreServices->getDBLoadBalancerFactory()->getLoadBalancer( SchemaHooks::VIRTUAL_DOMAIN );
112    }
113
114    public function getExperimentUserManager(): ExperimentUserManager {
115        return $this->coreServices->get( 'GrowthExperimentsExperimentUserManager' );
116    }
117
118    public function getHomepageModuleRegistry(): HomepageModuleRegistry {
119        return $this->coreServices->get( 'GrowthExperimentsHomepageModuleRegistry' );
120    }
121
122    public function getImageRecommendationProvider(): ImageRecommendationProvider {
123        return $this->coreServices->get( 'GrowthExperimentsImageRecommendationProvider' );
124    }
125
126    public function getImageRecommendationProviderUncached(): ImageRecommendationProvider {
127        return $this->coreServices->get( 'GrowthExperimentsImageRecommendationProviderUncached' );
128    }
129
130    public function getLinkRecommendationHelper(): LinkRecommendationHelper {
131        return $this->coreServices->get( 'GrowthExperimentsLinkRecommendationHelper' );
132    }
133
134    public function getLinkRecommendationProvider(): LinkRecommendationProvider {
135        return $this->coreServices->get( 'GrowthExperimentsLinkRecommendationProvider' );
136    }
137
138    public function getLinkRecommendationStore(): LinkRecommendationStore {
139        return $this->coreServices->get( 'GrowthExperimentsLinkRecommendationStore' );
140    }
141
142    public function getLinkRecommendationUpdater(): LinkRecommendationUpdater {
143        return $this->coreServices->get( 'GrowthExperimentsLinkRecommendationUpdater' );
144    }
145
146    public function getLinkSubmissionRecorder(): LinkSubmissionRecorder {
147        return $this->coreServices->get( 'GrowthExperimentsLinkSubmissionRecorder' );
148    }
149
150    public function getMenteeOverviewDataProvider(): MenteeOverviewDataProvider {
151        return $this->getDatabaseMenteeOverviewDataProvider();
152    }
153
154    public function getDatabaseMenteeOverviewDataProvider(): DatabaseMenteeOverviewDataProvider {
155        return $this->coreServices->get( 'GrowthExperimentsMenteeOverviewDataProvider' );
156    }
157
158    public function getUncachedMenteeOverviewDataProvider(): UncachedMenteeOverviewDataProvider {
159        return $this->coreServices->get( 'GrowthExperimentsMenteeOverviewDataProviderUncached' );
160    }
161
162    public function getMenteeOverviewDataUpdater(): MenteeOverviewDataUpdater {
163        return $this->coreServices->get( 'GrowthExperimentsMenteeOverviewDataUpdater' );
164    }
165
166    public function getMentorDashboardModuleRegistry(): MentorDashboardModuleRegistry {
167        return $this->coreServices->get( 'GrowthExperimentsMentorDashboardModuleRegistry' );
168    }
169
170    public function getMentorManager(): MentorManager {
171        return $this->coreServices->get( 'GrowthExperimentsMentorManager' );
172    }
173
174    public function getMentorProvider(): MentorProvider {
175        return $this->coreServices->get( 'GrowthExperimentsMentorProvider' );
176    }
177
178    public function getMentorProviderStructured(): AbstractStructuredMentorProvider {
179        return $this->coreServices->get( 'GrowthExperimentsMentorProviderStructured' );
180    }
181
182    public function getMentorRemover(): MentorRemover {
183        return $this->coreServices->get( 'GrowthExperimentsMentorRemover' );
184    }
185
186    public function getMentorStatusManager(): MentorStatusManager {
187        return $this->coreServices->get( 'GrowthExperimentsMentorStatusManager' );
188    }
189
190    public function getMentorStore(): MentorStore {
191        return $this->coreServices->get( 'GrowthExperimentsMentorStore' );
192    }
193
194    public function getMentorWriter(): IMentorWriter {
195        return $this->coreServices->get( 'GrowthExperimentsMentorWriter' );
196    }
197
198    public function getDatabaseMentorStore(): DatabaseMentorStore {
199        return $this->coreServices->get( 'GrowthExperimentsMentorStoreDatabase' );
200    }
201
202    public function getMetricsFactory(): MetricsFactory {
203        return $this->coreServices->get( 'GrowthExperimentsMetricsFactory' );
204    }
205
206    public function getNewcomerTasksConfigurationLoader(): ConfigurationLoader {
207        return $this->coreServices->get( 'GrowthExperimentsNewcomerTasksConfigurationLoader' );
208    }
209
210    public function getNewcomerTasksConfigurationValidator(): ConfigurationValidator {
211        return $this->coreServices->get( 'GrowthExperimentsNewcomerTasksConfigurationValidator' );
212    }
213
214    public function getNewcomerTasksUserOptionsLookup(): NewcomerTasksUserOptionsLookup {
215        return $this->coreServices->get( 'GrowthExperimentsNewcomerTasksUserOptionsLookup' );
216    }
217
218    public function getProtectionFilter(): ProtectionFilter {
219        return $this->coreServices->get( 'GrowthExperimentsProtectionFilter' );
220    }
221
222    public function getLinkRecommendationFilter(): LinkRecommendationFilter {
223        return $this->coreServices->get( 'GrowthExperimentsLinkRecommendationFilter' );
224    }
225
226    public function getImageRecommendationFilter(): ImageRecommendationFilter {
227        return $this->coreServices->get( 'GrowthExperimentsImageRecommendationFilter' );
228    }
229
230    public function getPersonalizedPraiseLogger(): PersonalizedPraiseLogger {
231        return $this->coreServices->get( 'GrowthExperimentsPersonalizedPraiseLogger' );
232    }
233
234    public function getPersonalizedPraiseNotificationsDispatcher(): PersonalizedPraiseNotificationsDispatcher {
235        return $this->coreServices->get( 'GrowthExperimentsPersonalizedPraiseNotificationsDispatcher' );
236    }
237
238    public function getPersonalizedPraiseSettings(): PersonalizedPraiseSettings {
239        return $this->coreServices->get( 'GrowthExperimentsPersonalizedPraiseSettings' );
240    }
241
242    public function getPraiseworthyConditionsLookup(): PraiseworthyConditionsLookup {
243        return $this->coreServices->get( 'GrowthExperimentsPraiseworthyConditionsLookup' );
244    }
245
246    public function getPraiseworthyMenteeSuggester(): PraiseworthyMenteeSuggester {
247        return $this->coreServices->get( 'GrowthExperimentsPraiseworthyMenteeSuggester' );
248    }
249
250    public function getQuestionPosterFactory(): QuestionPosterFactory {
251        return $this->coreServices->get( 'GrowthExperimentsQuestionPosterFactory' );
252    }
253
254    public function getReassignMenteesFactory(): ReassignMenteesFactory {
255        return $this->coreServices->get( 'GrowthExperimentsReassignMenteesFactory' );
256    }
257
258    public function getStarredMenteesStore(): StarredMenteesStore {
259        return $this->coreServices->get( 'GrowthExperimentsStarredMenteesStore' );
260    }
261
262    public function getSuggestionsInfo(): NewcomerTasksInfo {
263        return $this->coreServices->get( 'GrowthExperimentsSuggestionsInfo' );
264    }
265
266    public function getTaskSuggesterFactory(): TaskSuggesterFactory {
267        return $this->coreServices->get( 'GrowthExperimentsTaskSuggesterFactory' );
268    }
269
270    public function getTaskTypeHandlerRegistry(): TaskTypeHandlerRegistry {
271        return $this->coreServices->get( 'GrowthExperimentsTaskTypeHandlerRegistry' );
272    }
273
274    public function getTipsAssembler(): TipsAssembler {
275        return $this->coreServices->get( 'GrowthExperimentsTipsAssembler' );
276    }
277
278    public function getTipNodeRenderer(): TipNodeRenderer {
279        return $this->coreServices->get( 'GrowthExperimentsTipNodeRenderer' );
280    }
281
282    public function getWelcomeSurveyFactory(): WelcomeSurveyFactory {
283        return $this->coreServices->get( 'GrowthExperimentsWelcomeSurveyFactory' );
284    }
285
286    public function getWikiPageConfig(): WikiPageConfig {
287        return $this->coreServices->get( 'GrowthExperimentsWikiPageConfig' );
288    }
289
290    public function getWikiPageConfigLoader(): WikiPageConfigLoader {
291        return $this->coreServices->get( 'GrowthExperimentsWikiPageConfigLoader' );
292    }
293
294    public function getWikiPageConfigValidatorFactory(): ConfigValidatorFactory {
295        return $this->coreServices->get( 'GrowthExperimentsConfigValidatorFactory' );
296    }
297
298    public function getWikiPageConfigWriterFactory(): WikiPageConfigWriterFactory {
299        return $this->coreServices->get( 'GrowthExperimentsWikiPageConfigWriterFactory' );
300    }
301
302    public function getImageRecommendationMetadataService(): ImageRecommendationMetadataService {
303        return $this->coreServices->get( 'GrowthExperimentsImageRecommendationMetadataService' );
304    }
305
306    public function getImageRecommendationMetadataProvider(): ImageRecommendationMetadataProvider {
307        return $this->coreServices->get( 'GrowthExperimentsImageRecommendationMetadataProvider' );
308    }
309
310    public function getImageRecommendationSubmissionLogFactory(): ImageRecommendationSubmissionLogFactory {
311        return $this->coreServices->get( 'GrowthExperimentsImageRecommendationSubmissionLogFactory' );
312    }
313
314    // phpcs:ignore Generic.Files.LineLength.TooLong
315    public function getSectionImageRecommendationSubmissionLogFactory(): SectionImageRecommendationSubmissionLogFactory {
316        return $this->coreServices->get( 'GrowthExperimentsSectionImageRecommendationSubmissionLogFactory' );
317    }
318
319    public function getLinkRecommendationSubmissionLogFactory(): LinkRecommendationSubmissionLogFactory {
320        return $this->coreServices->get( 'GrowthExperimentsLinkRecommendationSubmissionLogFactory' );
321    }
322
323    public function getAddImageSubmissionHandler(): AddImageSubmissionHandler {
324        return $this->coreServices->get( 'GrowthExperimentsAddImageSubmissionHandler' );
325    }
326
327    public function getGrowthExperimentsCampaignConfig(): CampaignConfig {
328        return $this->coreServices->get( 'GrowthExperimentsCampaignConfig' );
329    }
330
331    public function getTemplateBasedTaskSubmissionHandler(): TemplateBasedTaskSubmissionHandler {
332        return $this->coreServices->get( 'GrowthExperimentsTemplateBasedTaskSubmissionHandler' );
333    }
334
335    public function getNewcomerTasksChangeTagsManager(): NewcomerTasksChangeTagsManager {
336        return $this->coreServices->get( 'GrowthExperimentsNewcomerTasksChangeTagsManager' );
337    }
338
339    public function getImageRecommendationApiHandler(): ImageRecommendationApiHandler {
340        return $this->coreServices->get( 'GrowthExperimentsImageRecommendationApiHandler' );
341    }
342
343    public function getUserImpactLookup(): UserImpactLookup {
344        return $this->coreServices->get( 'GrowthExperimentsUserImpactLookup' );
345    }
346
347    public function getUncachedUserImpactLookup(): UserImpactLookup {
348        return $this->coreServices->get( 'GrowthExperimentsUserImpactLookup_Computed' );
349    }
350
351    public function getUserImpactStore(): UserImpactStore {
352        return $this->coreServices->get( 'GrowthExperimentsUserImpactStore' );
353    }
354
355    public function getUserImpactFormatter(): UserImpactFormatter {
356        return $this->coreServices->get( 'GrowthExperimentsUserImpactFormatter' );
357    }
358
359    public function getUserDatabaseHelper(): UserDatabaseHelper {
360        return $this->coreServices->get( 'GrowthExperimentsUserDatabaseHelper' );
361    }
362
363    public function getEventGateImageSuggestionFeedbackUpdater(): EventGateImageSuggestionFeedbackUpdater {
364        return $this->coreServices->get( 'GrowthExperimentsEventGateImageSuggestionFeedbackUpdater' );
365    }
366
367    public function getAddLinkSubmissionHandler(): AddLinkSubmissionHandler {
368        return $this->coreServices->get( 'GrowthExperimentsAddLinkSubmissionHandler' );
369    }
370
371    public function getLevelingUpManager(): LevelingUpManager {
372        return $this->coreServices->get( 'GrowthExperimentsLevelingUpManager' );
373    }
374
375}