PluginProbe
Image Optimization – Compress Images and Convert to WebP or AVIF / 1.6.5
Image Optimization – Compress Images and Convert to WebP or AVIF v1.6.5
1.7.6 1.7.5 1.7.4 trunk 1.0.0 1.0.1 1.0.2 1.1.0 1.2.0 1.2.1 1.3.0 1.4.0 1.4.1 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 All 32 releases
image-optimization / includes / modules-manager.php

modules-manager.php in Image Optimization – Compress Images and Convert to WebP or AVIF 1.6.5, at includes/modules-manager.php

72 lines 1.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace ImageOptimization;
4
5 use ImageOptimization\Classes\Module_Base;
6
7 if ( ! defined( 'ABSPATH' ) ) {
8 exit; // Exit if accessed directly.
9 }
10
11 final class Manager {
12 /**
13 * @var Module_Base[]
14 */
15 private array $modules = [];
16
17 public static function get_module_list(): array {
18 return [
19 'core',
20 'connect',
21 'Oauth',
22 'connect-manager',
23 'settings',
24 'stats',
25 'optimization',
26 'backups',
27 ];
28 }
29
30 /**
31 * @codeCoverageIgnore
32 */
33 public function __construct() {
34 $modules = self::get_module_list();
35
36 foreach ( $modules as $module_name ) {
37 $class_name = str_replace( '-', ' ', $module_name );
38 $class_name = str_replace( ' ', '', ucwords( $class_name ) );
39 $class_name = __NAMESPACE__ . '\\Modules\\' . $class_name . '\Module';
40
41 /** @var Module_Base $class_name */
42 if ( $class_name::is_active() ) {
43 $this->modules[ $module_name ] = $class_name::instance();
44 }
45 }
46
47 // Action Scheduler needs to be registered before `plugins_loaded` hook priority 0
48 add_action( 'plugins_loaded', [ $this, 'include_external_libraries' ], -10 );
49 }
50
51 /**
52 * @param string $module_name
53 *
54 * @return Module_Base|Module_Base[]
55 */
56 public function get_modules( $module_name ) {
57 if ( $module_name ) {
58 if ( isset( $this->modules[ $module_name ] ) ) {
59 return $this->modules[ $module_name ];
60 }
61
62 return null;
63 }
64
65 return $this->modules;
66 }
67
68 public function include_external_libraries() {
69 require_once IMAGE_OPTIMIZATION_PATH . 'vendor/woocommerce/action-scheduler/action-scheduler.php';
70 }
71 }
72