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