Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/wp-rocket/inc/Plugin.php
Keine Baseline-Datei – Diff nur gegen leer.
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
+