PluginProbe
Optimole – Optimize Images | Convert WebP & AVIF | CDN & Lazy Load | Image Optimization / 4.2.5
Optimole – Optimize Images | Convert WebP & AVIF | CDN & Lazy Load | Image Optimization v4.2.5
4.2.13 4.2.12 4.2.11 4.2.10 4.2.9 4.2.8 4.2.7 4.2.6 4.2.5 2.5.5 2.5.6 2.5.7 3.0.0 3.0.1 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.11.0 3.11.1 3.11.2 3.11.3 3.12.0 3.12.1 All 134 releases
optimole-wp / inc / main.php

main.php in Optimole – Optimize Images | Convert WebP & AVIF | CDN & Lazy Load | Image Optimization 4.2.5, at inc/main.php

292 lines 6.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Main Plugin Class
5 */
6 final class Optml_Main {
7 /**
8 * Optml_Main The single instance of Starter_Plugin.
9 *
10 * @var Optml_Main|null
11 * @access private
12 * @since 1.0.0
13 */
14 private static $_instance = null;
15
16
17 /**
18 * Holds the manager class.
19 *
20 * @access public
21 * @since 1.0.0
22 * @var Optml_Manager Manager instance.
23 */
24 public $manager;
25
26 /**
27 * Holds the media_offload class.
28 *
29 * @access public
30 * @since 1.0.0
31 * @var Optml_Media_Offload instance.
32 */
33 public $media_offload;
34
35 /**
36 * Holds the rest class.
37 *
38 * @access public
39 * @since 1.0.0
40 * @var Optml_Rest REST instance.
41 */
42 public $rest;
43
44 /**
45 * Holds the admin class.
46 *
47 * @access public
48 * @since 1.0.0
49 * @var Optml_Admin Admin instance.
50 */
51 public $admin;
52
53 /**
54 * Holds the Dam class.
55 *
56 * @access public
57 * @since 4.0
58 * @var Optml_Dam Dam instance.
59 */
60 public $dam;
61
62 /**
63 * Holds the cli class.
64 *
65 * @access public
66 * @since 1.0.0
67 * @var Optml_Cli Cli instance.
68 */
69 public $cli;
70
71 /**
72 * Holds the video player class.
73 *
74 * @access public
75 * @since 1.0.0
76 * @var Optml_Video_Player Video player instance.
77 */
78 public $video_player;
79 /**
80 * Optml_Main constructor.
81 */
82 public function __construct() {
83 register_activation_hook( OPTML_BASEFILE, [ $this, 'activate' ] );
84 register_deactivation_hook( OPTML_BASEFILE, [ $this, 'deactivate' ] );
85 }
86
87 /**
88 * Main Starter_Plugin Instance
89 *
90 * Ensures only one instance of Starter_Plugin is loaded or can be loaded.
91 *
92 * @return Optml_Main Plugin instance.
93 * @since 1.0.0
94 */
95 public static function instance() {
96 $vendor_file = OPTML_PATH . 'vendor/autoload.php';
97 if ( is_readable( $vendor_file ) ) {
98 include_once $vendor_file;
99 }
100
101 if ( null === self::$_instance ) {
102 add_filter( 'themeisle_sdk_products', [ __CLASS__, 'register_sdk' ] );
103 add_filter( 'themeisle_sdk_ran_promos', [ __CLASS__, 'sdk_hide_promo_notice' ] );
104 add_filter( 'optimole-wp_uninstall_feedback_icon', [ __CLASS__, 'change_icon' ] );
105 add_filter( 'optimole_wp_uninstall_feedback_after_css', [ __CLASS__, 'adds_uf_css' ] );
106 add_filter( 'optimole_wp_feedback_review_message', [ __CLASS__, 'change_review_message' ] );
107 add_filter( 'optimole_wp_logger_heading', [ __CLASS__, 'change_review_message' ] );
108 add_filter( 'optml_register_conflicts', [ __CLASS__, 'register_conflicts' ] );
109 add_filter( 'optimole_wp_logger_data', [ __CLASS__, 'add_settings' ] );
110 self::$_instance = new self();
111 self::$_instance->manager = Optml_Manager::instance();
112 self::$_instance->rest = new Optml_Rest();
113 self::$_instance->admin = new Optml_Admin();
114 self::$_instance->dam = new Optml_Dam();
115 self::$_instance->media_offload = Optml_Media_Offload::instance();
116 self::$_instance->video_player = new Optml_Video_Player();
117 if ( class_exists( 'WP_CLI' ) ) {
118 self::$_instance->cli = new Optml_Cli();
119 }
120 }
121
122 return self::$_instance;
123 }
124
125 /**
126 * Register Conflicts to watch for
127 *
128 * @param array $conflicts_to_register A list of class names of conflicts to register.
129 *
130 * @return array
131 * @since 2.0.6
132 * @access public
133 */
134 public static function register_conflicts( $conflicts_to_register = [] ) {
135 $conflicts_to_register = array_merge(
136 $conflicts_to_register,
137 [
138 'Optml_Jetpack_Photon',
139 'Optml_Wprocket',
140 'Optml_Divi',
141 'Optml_w3_total_cache_cdn',
142 'Optml_Smush',
143 'Optml_Litespeed',
144 'Optml_Autoptimize',
145 'Optml_Perfmatters',
146 ]
147 );
148
149 return $conflicts_to_register;
150 }
151
152 /**
153 * Add settings to the logger data.
154 *
155 * @param array $data Logger data.
156 *
157 * @return array
158 */
159 public static function add_settings( $data ): array {
160 $saved_data = ( new Optml_Settings() )->get_raw_settings();
161 unset( $saved_data['service_data'] );
162 unset( $saved_data['api_key'] );
163
164 return array_merge( $data, $saved_data );
165 }
166 /**
167 * Change review message.
168 *
169 * @param string $message Old review message.
170 *
171 * @return string New review message.
172 */
173 public static function change_review_message( $message ) {
174 return str_replace( '{product}', 'Optimole', $message );
175 }
176
177 /**
178 * Register product into SDK.
179 *
180 * @param array $products All products.
181 *
182 * @return array Registered product.
183 */
184 public static function register_sdk( $products ) {
185 $products[] = OPTML_BASEFILE;
186
187 return $products;
188 }
189
190 /**
191 * Adds aditional CSS for uninstall feedback popup.
192 */
193 public static function adds_uf_css() {
194 ?>
195 <style type="text/css">
196 body.plugins-php .optimole_wp-container #TB_title {
197 background-position: 30px 10px;
198 background-size: 80px;
199 }
200
201 body.plugins-php .optimole_wp-container input.button:hover,
202 body.plugins-php .optimole_wp-container input.button {
203 background: #5080C1;
204 }
205 </style>
206 <?php
207 }
208
209 /**
210 * Change icon for uninstall feedback.
211 *
212 * @return string Registered product.
213 */
214 public static function change_icon( $old_icon ) {
215
216 return OPTML_URL . 'assets/img/logo.png';
217 }
218
219 /**
220 * Load the localisation file.
221 *
222 * @access public
223 * @since 1.0.0
224 */
225 public function load_plugin_textdomain() {
226 load_plugin_textdomain( 'optimole-wp', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
227 }
228
229 /**
230 * Install routine actions.
231 *
232 * @access public
233 * @since 1.0.0
234 */
235 public function activate() {
236 update_option( OPTML_NAMESPACE . '-version', OPTML_VERSION );
237
238 if ( is_multisite() ) {
239 return;
240 }
241
242 set_transient( 'optml_fresh_install', true, MINUTE_IN_SECONDS );
243 }
244
245 /**
246 * Deactivate routine actions.
247 *
248 * @access public
249 * @since 3.11.0
250 */
251 public function deactivate() {
252 // Clear registered cron events.
253 wp_clear_scheduled_hook( 'optml_daily_sync' );
254 wp_clear_scheduled_hook( 'optml_pull_image_data_init' );
255 }
256
257 /**
258 * Cloning is forbidden.
259 *
260 * @access public
261 * @since 1.0.0
262 */
263 public function __clone() {
264 _doing_it_wrong( __FUNCTION__, __( 'Cheatin&#8217; huh?', 'optimole-wp' ), '1.0.0' );
265 }
266
267 /**
268 * Unserializing instances of this class is forbidden.
269 *
270 * @access public
271 * @since 1.0.0
272 */
273 public function __wakeup() {
274 _doing_it_wrong( __FUNCTION__, __( 'Cheatin&#8217; huh?', 'optimole-wp' ), '1.0.0' );
275 }
276
277 /**
278 * Hide SDK promo notice for pro uses.
279 *
280 * @access public
281 */
282 public static function sdk_hide_promo_notice( $should_show ) {
283 if ( self::$_instance->admin->settings->is_connected() ) {
284 $service_data = self::$_instance->admin->settings->get( 'service_data' );
285 if ( isset( $service_data['plan'] ) && 'free' !== $service_data['plan'] ) {
286 return true;
287 }
288 }
289 return $should_show;
290 }
291 }
292