Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/wp-rocket/inc/Plugin.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
1 + <?php
2 + declare(strict_types=1);
3 +
4 + namespace WP_Rocket;
5 +
6 + use Imagify_Partner;
7 + use WP_Rocket\Dependencies\League\Container\Container;
8 + use WP_Rocket\Admin\{Options, Options_Data};
9 + use WP_Rocket\Engine\Admin\API\ServiceProvider as APIServiceProvider;
10 + use WP_Rocket\Engine\Common\ExtractCSS\ServiceProvider as CommonExtractCSSServiceProvider;
11 + use WP_Rocket\Engine\Common\Head\ServiceProvider as CommonHeadServiceProvider;
12 + use WP_Rocket\Engine\Common\JobManager\ServiceProvider as JobManagerServiceProvider;
13 + use WP_Rocket\Engine\Media\Lazyload\CSS\ServiceProvider as LazyloadCSSServiceProvider;
14 + use WP_Rocket\Engine\Media\Lazyload\CSS\Admin\ServiceProvider as AdminLazyloadCSSServiceProvider;
15 + use WP_Rocket\Event_Management\Event_Manager;
16 + use WP_Rocket\Logger\ServiceProvider as LoggerServiceProvider;
17 + use WP_Rocket\ThirdParty\Hostings\HostResolver;
18 + use WP_Rocket\Addon\ServiceProvider as AddonServiceProvider;
19 + use WP_Rocket\Addon\Cloudflare\ServiceProvider as CloudflareServiceProvider;
20 + use WP_Rocket\Addon\Varnish\ServiceProvider as VarnishServiceProvider;
21 + use WP_Rocket\Dependencies\League\Container\Argument\Literal\StringArgument;
22 + use WP_Rocket\Engine\Admin\Beacon\ServiceProvider as BeaconServiceProvider;
23 + use WP_Rocket\Engine\Admin\Database\ServiceProvider as AdminDatabaseServiceProvider;
24 + use WP_Rocket\Engine\Admin\ServiceProvider as EngineAdminServiceProvider;
25 + use WP_Rocket\Engine\Admin\Settings\ServiceProvider as SettingsServiceProvider;
26 + use WP_Rocket\Engine\Cache\ServiceProvider as CacheServiceProvider;
27 + use WP_Rocket\Engine\Capabilities\ServiceProvider as CapabilitiesServiceProvider;
28 + use WP_Rocket\Engine\CDN\RocketCDN\ServiceProvider as RocketCDNServiceProvider;
29 + use WP_Rocket\Engine\CDN\ServiceProvider as CDNServiceProvider;
30 + use WP_Rocket\Engine\CriticalPath\ServiceProvider as CriticalPathServiceProvider;
31 + use WP_Rocket\Engine\HealthCheck\ServiceProvider as HealthCheckServiceProvider;
32 + use WP_Rocket\Engine\Heartbeat\ServiceProvider as HeartbeatServiceProvider;
33 + use WP_Rocket\Engine\License\ServiceProvider as LicenseServiceProvider;
34 + use WP_Rocket\Engine\Media\ServiceProvider as MediaServiceProvider;
35 + use WP_Rocket\Engine\Media\AboveTheFold\ServiceProvider as ATFServiceProvider;
36 + use WP_Rocket\Engine\Optimization\AdminServiceProvider as OptimizationAdminServiceProvider;
37 + use WP_Rocket\Engine\Optimization\DeferJS\ServiceProvider as DeferJSServiceProvider;
38 + use WP_Rocket\Engine\Optimization\DelayJS\ServiceProvider as DelayJSServiceProvider;
39 + use WP_Rocket\Engine\Optimization\DynamicLists\ServiceProvider as DynamicListsServiceProvider;
40 + use WP_Rocket\Engine\Optimization\RUCSS\ServiceProvider as RUCSSServiceProvider;
41 + use WP_Rocket\Engine\Optimization\ServiceProvider as OptimizationServiceProvider;
42 + use WP_Rocket\Engine\Plugin\ServiceProvider as PluginServiceProvider;
43 + use WP_Rocket\Engine\Preload\Links\ServiceProvider as PreloadLinksServiceProvider;
44 + use WP_Rocket\Engine\Preload\ServiceProvider as PreloadServiceProvider;
45 + use WP_Rocket\Engine\Saas\ServiceProvider as SaasAdminServiceProvider;
46 + use WP_Rocket\Engine\Support\ServiceProvider as SupportServiceProvider;
47 + use WP_Rocket\ServiceProvider\Common_Subscribers;
48 + use WP_Rocket\ServiceProvider\Options as OptionsServiceProvider;
49 + use WP_Rocket\ThirdParty\Hostings\ServiceProvider as HostingsServiceProvider;
50 + use WP_Rocket\ThirdParty\ServiceProvider as ThirdPartyServiceProvider;
51 + use WP_Rocket\ThirdParty\Themes\ServiceProvider as ThemesServiceProvider;
52 + use WP_Rocket\Engine\Admin\DomainChange\ServiceProvider as DomainChangeServiceProvider;
53 + use WP_Rocket\ThirdParty\Themes\ThemeResolver;
54 + use WP_Rocket\Engine\Debug\Resolver as DebugResolver;
55 + use WP_Rocket\Engine\Debug\ServiceProvider as DebugServiceProvider;
56 + use WP_Rocket\Engine\Common\PerformanceHints\ServiceProvider as PerformanceHintsServiceProvider;
57 + use WP_Rocket\Engine\Optimization\LazyRenderContent\ServiceProvider as LRCServiceProvider;
58 + use WP_Rocket\Engine\Media\Fonts\ServiceProvider as MediaFontsServiceProvider;
59 + use WP_Rocket\Engine\Media\PreloadFonts\ServiceProvider as PreloadFontsServiceProvider;
60 + use WP_Rocket\Engine\Media\PreconnectExternalDomains\ServiceProvider as PreconnectExternalDomainsServiceProvider;
61 + use WP_Rocket\Engine\Tracking\ServiceProvider as TrackingServiceProvider;
62 + use WP_Rocket\Engine\Admin\RocketInsights\ServiceProvider as RocketInsightsServiceProvider;
63 +
64 + /**
65 + * Plugin Manager.
66 + */
67 + class Plugin {
68 +
69 + /**
70 + * Instance of Container class.
71 + *
72 + * @since 3.3
73 + *
74 + * @var Container instance
75 + */
76 + private $container;
77 +
78 + /**
79 + * Instance of the event manager.
80 + *
81 + * @since 3.6
82 + *
83 + * @var Event_Manager
84 + */
85 + private $event_manager;
86 +
87 + /**
88 + * Flag for if the license key is valid.
89 + *
90 + * @since 3.6
91 + *
92 + * @var bool
93 + */
94 + private $is_valid_key;
95 +
96 + /**
97 + * Instance of the Options_Data.
98 + *
99 + * @since 3.6
100 + *
101 + * @var Options_Data
102 + */
103 + private $options;
104 +
105 + /**
106 + * Creates an instance of the Plugin.
107 + *
108 + * @since 3.0
109 + *
110 + * @param string $template_path Path to the views.
111 + * @param Container $container Instance of the container.
112 + */
113 + public function __construct( $template_path, Container $container ) {
114 + $this->container = $container;
115 +
116 + add_filter( 'rocket_container', [ $this, 'get_container' ] );
117 +
118 + $this->container->add( 'template_path', new StringArgument( $template_path ) );
119 + }
120 +
121 + /**
122 + * Returns the Rocket container instance.
123 + *
124 + * @return Container
125 + */
126 + public function get_container() {
127 + return $this->container;
128 + }
129 +
130 + /**
131 + * Loads the plugin into WordPress.
132 + *
133 + * @since 3.0
134 + *
135 + * @return void
136 + */
137 + public function load() {
138 + $this->event_manager = new Event_Manager();
139 + $this->container->addShared( 'event_manager', $this->event_manager );
140 +
141 + $this->container->add( 'options_api', Options::class )
142 + ->addArgument( new StringArgument( 'wp_rocket_' ) );
143 + $this->container->addServiceProvider( new OptionsServiceProvider() );
144 + $this->options = $this->container->get( 'options' );
145 +
146 + $this->container->add( 'debug_resolver', DebugResolver::class )
147 + ->addArgument( $this->options );
148 +
149 + $this->container->addServiceProvider( new LoggerServiceProvider() );
150 +
151 + $this->container->get( 'logger' );
152 +
153 + $this->container->addServiceProvider( new AdminDatabaseServiceProvider() );
154 + $this->container->addServiceProvider( new SupportServiceProvider() );
155 + $this->container->addServiceProvider( new BeaconServiceProvider() );
156 + $this->container->addServiceProvider( new RocketCDNServiceProvider() );
157 + $this->container->addServiceProvider( new CacheServiceProvider() );
158 + $this->container->addServiceProvider( new CriticalPathServiceProvider() );
159 + $this->container->addServiceProvider( new HealthCheckServiceProvider() );
160 + $this->container->addServiceProvider( new MediaServiceProvider() );
161 + $this->container->addServiceProvider( new DeferJSServiceProvider() );
162 +
163 + $this->is_valid_key = rocket_valid_key();
164 +
165 + foreach ( $this->get_subscribers() as $subscriber ) {
166 + $this->event_manager->add_subscriber( $this->container->get( $subscriber ) );
167 + }
168 + }
169 +
170 + /**
171 + * Get the subscribers to add to the event manager.
172 + *
173 + * @since 3.6
174 + *
175 + * @return array array of subscribers.
176 + */
177 + private function get_subscribers() {
178 + $subscribers = [];
179 +
180 + if ( is_admin() ) {
181 + $subscribers = $this->init_admin_subscribers();
182 + } elseif ( $this->is_valid_key ) {
183 + $subscribers = $this->init_valid_key_subscribers();
184 + }
185 +
186 + return array_merge( $subscribers, $this->init_common_subscribers() );
187 + }
188 +
189 + /**
190 + * Initializes the admin subscribers.
191 + *
192 + * @since 3.6
193 + *
194 + * @return array array of subscribers.
195 + */
196 + private function init_admin_subscribers() {
197 + if ( ! Imagify_Partner::has_imagify_api_key() ) {
198 + $imagify = new Imagify_Partner( 'wp-rocket' );
199 + $imagify->init();
200 + remove_action( 'imagify_assets_enqueued', 'imagify_dequeue_sweetalert_wprocket' );
201 + }
202 +
203 + $this->container->addServiceProvider( new SettingsServiceProvider() );
204 + $this->container->addServiceProvider( new EngineAdminServiceProvider() );
205 + $this->container->addServiceProvider( new OptimizationAdminServiceProvider() );
206 + $this->container->addServiceProvider( new DomainChangeServiceProvider() );
207 + $this->container->addServiceProvider( new AdminLazyloadCSSServiceProvider() );
208 + $this->container->addServiceProvider( new RocketInsightsServiceProvider() );
209 +
210 + $subscribers = [
211 + 'beacon',
212 + 'settings_page_subscriber',
213 + 'deactivation_intent_subscriber',
214 + 'hummingbird_subscriber',
215 + 'rocketcdn_admin_subscriber',
216 + 'rocketcdn_notices_subscriber',
217 + 'rocketcdn_data_manager_subscriber',
218 + 'critical_css_admin_subscriber',
219 + 'health_check',
220 + 'minify_css_admin_subscriber',
221 + 'admin_cache_subscriber',
222 + 'google_fonts_admin_subscriber',
223 + 'image_dimensions_admin_subscriber',
224 + 'defer_js_admin_subscriber',
225 + 'lazyload_admin_subscriber',
226 + 'preload_admin_subscriber',
227 + 'minify_admin_subscriber',
228 + 'action_scheduler_check',
229 + 'actionscheduler_admin_subscriber',
230 + 'domain_change_subscriber',
231 + 'lazyload_css_admin_subscriber',
232 + 'post_edit_options_subscriber',
233 + 'preconnect_external_domains_admin_subscriber',
234 + 'media_fonts_admin_subscriber',
235 + 'preload_fonts_admin_subscriber',
236 + 'ri_subscriber',
237 + 'ri_settings_subscriber',
238 + ];
239 +
240 + // Only add tracking service provider if cURL extension is loaded.
241 + // MixPanel (used by TrackingServiceProvider) requires cURL and will throw a fatal error if not available.
242 + // This prevents crashes when WP Rocket is installed on servers without cURL support.
243 + if ( function_exists( 'curl_init' ) ) {
244 + $this->container->addServiceProvider( new TrackingServiceProvider() );
245 + $subscribers[] = 'tracking_subscriber';
246 + }
247 +
248 + return $subscribers;
249 + }
250 +
251 + /**
252 + * For plugins with a valid key, initialize the subscribers.
253 + *
254 + * @since 3.6
255 + *
256 + * @return array array of subscribers.
257 + */
258 + private function init_valid_key_subscribers() {
259 + $this->container->addServiceProvider( new OptimizationServiceProvider() );
260 +
261 + $subscribers = [
262 + 'buffer_subscriber',
263 + 'ie_conditionals_subscriber',
264 + 'combine_google_fonts_subscriber',
265 + 'minify_css_subscriber',
266 + 'minify_js_subscriber',
267 + 'cache_dynamic_resource',
268 + 'emojis_subscriber',
269 + 'delay_js_subscriber',
270 + 'image_dimensions_subscriber',
271 + 'defer_js_subscriber',
272 + ];
273 +
274 + // Don't insert the LazyLoad file if Rocket LazyLoad is activated.
275 + if ( ! rocket_is_plugin_active( 'rocket-lazy-load/rocket-lazy-load.php' ) ) {
276 + $subscribers[] = 'lazyload_subscriber';
277 + }
278 +
279 + return $subscribers;
280 + }
281 +
282 + /**
283 + * Initializes the common subscribers.
284 + *
285 + * @since 3.6
286 + *
287 + * @return array array of common subscribers.
288 + */
289 + private function init_common_subscribers() {
290 + $this->container->addServiceProvider( new CapabilitiesServiceProvider() );
291 + $this->container->addServiceProvider( new AddonServiceProvider() );
292 + $this->container->addServiceProvider( new VarnishServiceProvider() );
293 + $this->container->addServiceProvider( new PreloadServiceProvider() );
294 + $this->container->addServiceProvider( new PreloadLinksServiceProvider() );
295 + $this->container->addServiceProvider( new CDNServiceProvider() );
296 + $this->container->addServiceProvider( new Common_Subscribers() );
297 + $this->container->addServiceProvider( new HostingsServiceProvider() );
298 + $this->container->addServiceProvider( new PluginServiceProvider() );
299 + $this->container->addServiceProvider( new DynamicListsServiceProvider() );
300 + $this->container->addServiceProvider( new DelayJSServiceProvider() );
301 + $this->container->addServiceProvider( new RUCSSServiceProvider() );
302 + $this->container->addServiceProvider( new HeartbeatServiceProvider() );
303 + $this->container->addServiceProvider( new LicenseServiceProvider() );
304 + $this->container->addServiceProvider( new ThemesServiceProvider() );
305 + $this->container->addServiceProvider( new APIServiceProvider() );
306 + $this->container->addServiceProvider( new CommonExtractCSSServiceProvider() );
307 + $this->container->addServiceProvider( new CommonHeadServiceProvider() );
308 + $this->container->addServiceProvider( new LazyloadCSSServiceProvider() );
309 + $this->container->addServiceProvider( new DebugServiceProvider() );
310 + $this->container->addServiceProvider( new ATFServiceProvider() );
311 + $this->container->addServiceProvider( new JobManagerServiceProvider() );
312 + $this->container->addServiceProvider( new SaasAdminServiceProvider() );
313 + $this->container->addServiceProvider( new PerformanceHintsServiceProvider() );
314 + $this->container->addServiceProvider( new LRCServiceProvider() );
315 + $this->container->addServiceProvider( new MediaFontsServiceProvider() );
316 + $this->container->addServiceProvider( new PreloadFontsServiceProvider() );
317 + $this->container->addServiceProvider( new ThirdPartyServiceProvider() );
318 + $this->container->addServiceProvider( new PreconnectExternalDomainsServiceProvider() );
319 + $this->container->addServiceProvider( new RocketInsightsServiceProvider() );
320 +
321 + $common_subscribers = [
322 + 'license_subscriber',
323 + 'cdn_subscriber',
324 + 'cdn_admin_subscriber',
325 + 'critical_css_subscriber',
326 + 'sucuri_subscriber',
327 + 'common_extractcss_subscriber',
328 + 'common_head_subscriber',
329 + 'expired_cache_purge_subscriber',
330 + 'heartbeat_subscriber',
331 + 'db_optimization_subscriber',
332 + 'mobile_subscriber',
333 + 'woocommerce_subscriber',
334 + 'bigcommerce_subscriber',
335 + 'syntaxhighlighter_subscriber',
336 + 'elementor_subscriber',
337 + 'ngg_subscriber',
338 + 'smush_subscriber',
339 + 'plugin_updater_common_subscriber',
340 + 'plugin_information_subscriber',
341 + 'plugin_updater_subscriber',
342 + 'capabilities_subscriber',
343 + 'varnish_subscriber',
344 + 'rocketcdn_rest_subscriber',
345 + 'detect_missing_tags_subscriber',
346 + 'purge_actions_subscriber',
347 + 'beaverbuilder_subscriber',
348 + 'amp_subscriber',
349 + 'rest_cpcss_subscriber',
350 + 'simple_custom_css',
351 + 'pdfembedder',
352 + 'delay_js_admin_subscriber',
353 + 'rucss_admin_subscriber',
354 + 'rucss_option_subscriber',
355 + 'rucss_frontend_subscriber',
356 + 'preload_subscriber',
357 + 'preload_front_subscriber',
358 + 'preload_links_admin_subscriber',
359 + 'preload_links_subscriber',
360 + 'preload_cron_subscriber',
361 + 'support_subscriber',
362 + 'mod_pagespeed',
363 + 'webp_subscriber',
364 + 'webp_admin_subscriber',
365 + 'imagify_webp_subscriber',
366 + 'shortpixel_webp_subscriber',
367 + 'ewww_webp_subscriber',
368 + 'optimus_webp_subscriber',
369 + 'adthrive',
370 + 'autoptimize',
371 + 'wp-meteor',
372 + 'revolution_slider_subscriber',
373 + 'wordfence_subscriber',
374 + 'ezoic',
375 + 'thirstyaffiliates',
376 + 'pwa',
377 + 'yoast_seo',
378 + 'convertplug',
379 + 'dynamic_lists_subscriber',
380 + 'unlimited_elements',
381 + 'inline_related_posts',
382 + 'jetpack',
383 + 'rank_math_seo',
384 + 'all_in_one_seo_pack',
385 + 'seopress',
386 + 'the_seo_framework',
387 + 'wpml',
388 + 'cloudflare_plugin_subscriber',
389 + 'cache_config',
390 + 'rocket_lazy_load',
391 + 'cache_config',
392 + 'the_events_calendar',
393 + 'admin_api_subscriber',
394 + 'perfmatters',
395 + 'rapidload',
396 + 'translatepress',
397 + 'wpgeotargeting',
398 + 'lazyload_css_subscriber',
399 + 'weglot',
400 + 'cron_subscriber',
401 + 'contactform7',
402 + 'debug_subscriber',
403 + 'rucss_cron_subscriber',
404 + 'saas_admin_subscriber',
405 + 'atf_subscriber',
406 + 'performance_hints_ajax_subscriber',
407 + 'performance_hints_frontend_subscriber',
408 + 'performance_hints_cron_subscriber',
409 + 'performance_hints_warmup_subscriber',
410 + 'performance_hints_admin_subscriber',
411 + 'lrc_frontend_subscriber',
412 + 'taxonomy_subscriber',
413 + 'termly_subscriber',
414 + 'media_fonts_frontend_subscriber',
415 + 'media_fonts_admin_subscriber',
416 + 'media_fonts_clean_subscriber',
417 + 'preload_fonts_frontend_subscriber',
418 + 'preload_fonts_admin_subscriber',
419 + 'preconnect_frontend_subscriber',
420 + 'ri_subscriber',
421 + 'ri_url_limit_subscriber',
422 + 'ri_post_listing_subscriber',
423 + 'post_subscriber',
424 + ];
425 +
426 + $host_type = HostResolver::get_host_service();
427 + $theme = ThemeResolver::get_current_theme();
428 +
429 + if ( ! empty( $host_type ) ) {
430 + $common_subscribers[] = $host_type;
431 + }
432 +
433 + if ( ! empty( $theme ) ) {
434 + $common_subscribers[] = $theme;
435 + }
436 +
437 + if ( $this->options->get( 'do_cloudflare', false ) ) {
438 + $this->container->addServiceProvider( new CloudflareServiceProvider() );
439 +
440 + $common_subscribers[] = 'cloudflare_admin_subscriber';
441 + $common_subscribers[] = 'cloudflare_subscriber';
442 + }
443 +
444 + $services = $this->container->get( 'debug_resolver' )->get_services();
445 +
446 + if ( ! empty( $services ) ) {
447 + foreach ( $services as $service ) {
448 + $common_subscribers[] = $service['service'];
449 + }
450 + }
451 +
452 + return $common_subscribers;
453 + }
454 + }
455 +