Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 25
0.00% covered (danger)
0.00%
0 / 10
CRAP
0.00% covered (danger)
0.00%
0 / 1
ImageManager
0.00% covered (danger)
0.00%
0 / 25
0.00% covered (danger)
0.00%
0 / 10
462
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 initialize_settings
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 initialize_services
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
2
 initialize_upload_listener
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 maybe_initialize_lazy_loader
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
12
 maybe_initialize_bulk_optimizer
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
12
 maybe_initialize_rest_api
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
6
 maybe_initialize_marker
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
6
 maybe_initialize_image_rewrite_handler
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
20
 maybe_initialize_image_limit_banner
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2
3namespace NewfoldLabs\WP\Module\Performance\Images;
4
5use NewfoldLabs\WP\ModuleLoader\Container;
6use NewfoldLabs\WP\Module\Performance\Permissions;
7use NewfoldLabs\WP\Module\Performance\Images\RestApi\RestApi;
8use NewfoldLabs\WP\Module\Performance\Images\ImageRewriteHandler;
9
10/**
11 * Manages the initialization of image optimization settings and listeners.
12 */
13class ImageManager {
14
15    /**
16     * Constructor to initialize the ImageManager.
17     *
18     * Registers settings and conditionally initializes related services.
19     *
20     * @param Container $container Dependency injection container.
21     */
22    public function __construct( Container $container ) {
23        $this->initialize_settings( $container );
24        $this->initialize_services( $container );
25    }
26
27    /**
28     * Initializes the ImageSettings class to register settings.
29     *
30     * @param Container $container Dependency injection container.
31     */
32    private function initialize_settings( Container $container ) {
33        new ImageSettings( $container );
34    }
35
36    /**
37     * Initializes conditional services based on settings and environment.
38     *
39     * @param Container $container Dependency injection container.
40     */
41    private function initialize_services( Container $container ) {
42        $this->initialize_upload_listener( $container );
43        $this->maybe_initialize_lazy_loader();
44        $this->maybe_initialize_bulk_optimizer();
45        $this->maybe_initialize_rest_api( $container );
46        $this->maybe_initialize_marker();
47        $this->maybe_initialize_image_rewrite_handler( $container );
48        $this->maybe_initialize_image_limit_banner( $container );
49    }
50
51    /**
52     * Initializes the ImageUploadListener if auto-optimization is enabled.
53     *
54     * @param \NewfoldLabs\WP\Container\Container $container Dependency injection container.
55     */
56    private function initialize_upload_listener( $container ) {
57        new ImageUploadListener( $container, ImageSettings::is_auto_delete_enabled() );
58    }
59
60    /**
61     * Initializes the ImageLazyLoader if lazy loading is enabled.
62     */
63    private function maybe_initialize_lazy_loader() {
64        if ( ImageSettings::is_optimization_enabled() && ImageSettings::is_lazy_loading_enabled() ) {
65            new ImageLazyLoader();
66        }
67    }
68
69    /**
70     * Initializes the ImageBulkOptimizer if bulk optimization is enabled and user is an admin.
71     */
72    private function maybe_initialize_bulk_optimizer() {
73        if ( Permissions::is_authorized_admin() && ImageSettings::is_bulk_optimization_enabled() ) {
74            new ImageBulkOptimizer();
75        }
76    }
77
78    /**
79     * Initializes the REST API routes if accessed via REST and user is an admin.
80     *
81     * @param \NewfoldLabs\WP\Container\Container $container Dependency injection container.
82     */
83    private function maybe_initialize_rest_api( $container ) {
84        if ( Permissions::rest_is_authorized_admin() ) {
85            new RestApi( $container );
86        }
87    }
88
89    /**
90     * Initializes the ImageOptimizedMarker if image optimization is enabled.
91     */
92    private function maybe_initialize_marker() {
93        if ( ImageSettings::is_optimization_enabled() ) {
94            new ImageOptimizedMarker();
95        }
96    }
97
98    /**
99     * Initializes the ImageRewriteHandler for managing WebP redirects if the server is Apache.
100     *
101     * @param Container $container Dependency injection container.
102     */
103    private function maybe_initialize_image_rewrite_handler( Container $container ) {
104        if ( Permissions::rest_is_authorized_admin()
105        && $container->has( 'isApache' )
106        && $container->get( 'isApache' ) ) {
107            new ImageRewriteHandler();
108        }
109    }
110
111    /**
112     * Conditionally initializes the Image Limit Banner in the WordPress admin area.
113     *
114     * @param Container $container Dependency injection container.
115     */
116    private function maybe_initialize_image_limit_banner( $container ) {
117        if ( ImageSettings::is_optimization_enabled() && Permissions::is_authorized_admin() ) {
118            new ImageLimitBanner( $container );
119        }
120    }
121}