PluginProbe
Optimole – Optimize Images | Convert WebP & AVIF | CDN & Lazy Load | Image Optimization / 4.2.16
Optimole – Optimize Images | Convert WebP & AVIF | CDN & Lazy Load | Image Optimization v4.2.16
4.2.16 4.2.15 4.2.14 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 All 137 releases
← All changes | inc/main.php +101 -23 2.5.7 → 4.2.16 View file →
@@ -6,9 +6,9 @@
6 6 final class Optml_Main {
7 7 /**
8 8 * Optml_Main The single instance of Starter_Plugin.
9 9 *
10 - * @var object
10 + * @var Optml_Main|null
11 11 * @access private
12 12 * @since 1.0.0
13 13 */
14 14 private static $_instance = null;
@@ -23,8 +23,17 @@
23 23 */
24 24 public $manager;
25 25
26 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 + /**
27 36 * Holds the rest class.
28 37 *
29 38 * @access public
30 39 * @since 1.0.0
@@ -41,8 +50,17 @@
41 50 */
42 51 public $admin;
43 52
44 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 + /**
45 63 * Holds the cli class.
46 64 *
47 65 * @access public
48 66 * @since 1.0.0
@@ -50,13 +68,21 @@
50 68 */
51 69 public $cli;
52 70
53 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 + /**
54 80 * Optml_Main constructor.
55 81 */
56 82 public function __construct() {
57 -
58 83 register_activation_hook( OPTML_BASEFILE, [ $this, 'activate' ] );
84 + register_deactivation_hook( OPTML_BASEFILE, [ $this, 'deactivate' ] );
59 85 }
60 86
61 87 /**
62 88 * Main Starter_Plugin Instance
@@ -66,28 +92,35 @@
66 92 * @return Optml_Main Plugin instance.
67 93 * @since 1.0.0
68 94 */
69 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 +
70 101 if ( null === self::$_instance ) {
71 102 add_filter( 'themeisle_sdk_products', [ __CLASS__, 'register_sdk' ] );
103 + add_filter( 'themeisle_sdk_ran_promos', [ __CLASS__, 'sdk_hide_promo_notice' ] );
72 104 add_filter( 'optimole-wp_uninstall_feedback_icon', [ __CLASS__, 'change_icon' ] );
73 105 add_filter( 'optimole_wp_uninstall_feedback_after_css', [ __CLASS__, 'adds_uf_css' ] );
74 106 add_filter( 'optimole_wp_feedback_review_message', [ __CLASS__, 'change_review_message' ] );
75 107 add_filter( 'optimole_wp_logger_heading', [ __CLASS__, 'change_review_message' ] );
76 - add_filter( 'optml_default_settings', [ __CLASS__, 'change_lazyload_default' ] );
77 108 add_filter( 'optml_register_conflicts', [ __CLASS__, 'register_conflicts' ] );
109 + add_filter( 'optimole_wp_logger_data', [ __CLASS__, 'add_settings' ] );
110 + add_filter( 'optimole_wp_ai_connect_metadata', [ __CLASS__, 'add_ai_connect_metadata' ] );
78 111 self::$_instance = new self();
79 112 self::$_instance->manager = Optml_Manager::instance();
80 113 self::$_instance->rest = new Optml_Rest();
81 114 self::$_instance->admin = new Optml_Admin();
115 + self::$_instance->dam = new Optml_Dam();
116 + self::$_instance->media_offload = Optml_Media_Offload::instance();
117 + self::$_instance->video_player = new Optml_Video_Player();
118 + new Optml_Abilities();
82 119 if ( class_exists( 'WP_CLI' ) ) {
83 120 self::$_instance->cli = new Optml_Cli();
84 121 }
85 122 }
86 - $vendor_file = OPTML_PATH . 'vendor/autoload.php';
87 - if ( is_readable( $vendor_file ) ) {
88 - include_once $vendor_file;
89 - }
90 123
91 124 return self::$_instance;
92 125 }
93 126
@@ -103,15 +136,16 @@
103 136 public static function register_conflicts( $conflicts_to_register = [] ) {
104 137 $conflicts_to_register = array_merge(
105 138 $conflicts_to_register,
106 139 [
107 - 'Optml_Elementor',
108 - 'Optml_Beaver',
109 140 'Optml_Jetpack_Photon',
110 - 'Optml_Jetpack_Lazyload',
111 141 'Optml_Wprocket',
112 142 'Optml_Divi',
113 143 'Optml_w3_total_cache_cdn',
144 + 'Optml_Smush',
145 + 'Optml_Litespeed',
146 + 'Optml_Autoptimize',
147 + 'Optml_Perfmatters',
114 148 ]
115 149 );
116 150
117 151 return $conflicts_to_register;
@@ -117,26 +151,23 @@
117 151 return $conflicts_to_register;
118 152 }
119 153
120 154 /**
121 - * Change lazyload default for new users.
155 + * Add settings to the logger data.
122 156 *
123 - * @param array $defaults Old defaults.
157 + * @param array $data Logger data.
124 158 *
125 - * @return array New defaults.
159 + * @return array
126 160 */
127 - public static function change_lazyload_default( $defaults ) {
128 - $install_time = get_option( 'optimole_wp_install', 0 );
161 + public static function add_settings( $data ): array {
162 + $data = is_array( $data ) ? $data : [];
129 163
130 - if ( $install_time < 1545652321 ) {
131 - return $defaults;
132 - }
164 + $saved_data = ( new Optml_Settings() )->get_raw_settings();
165 + unset( $saved_data['service_data'] );
166 + unset( $saved_data['api_key'] );
133 167
134 - $defaults['lazyload'] = 'enabled';
135 -
136 - return $defaults;
168 + return array_merge( $data, $saved_data );
137 169 }
138 -
139 170 /**
140 171 * Change review message.
141 172 *
142 173 * @param string $message Old review message.
@@ -147,8 +178,30 @@
147 178 return str_replace( '{product}', 'Optimole', $message );
148 179 }
149 180
150 181 /**
182 + * Opt in to the SDK AI Connect module.
183 + *
184 + * @return array<string, mixed> AI Connect metadata.
185 + */
186 + public static function add_ai_connect_metadata() {
187 + return [
188 + 'name' => 'Optimole',
189 + 'notice_cases' => [
190 + __( 'make your images load faster', 'optimole-wp' ),
191 + __( 'purge cached images', 'optimole-wp' ),
192 + __( 'offload media to the cloud', 'optimole-wp' ),
193 + ],
194 + 'prompts' => [
195 + __( 'Make my images load faster: turn on lazy loading and serve them at quality 80.', 'optimole-wp' ),
196 + __( 'Offload my media library to the Optimole cloud to free up disk space.', 'optimole-wp' ),
197 + __( 'I changed my logo. Purge the cached versions so visitors get the new one.', 'optimole-wp' ),
198 + ],
199 + 'ability_prefix' => 'optimole',
200 + ];
201 + }
202 +
203 + /**
151 204 * Register product into SDK.
152 205 *
153 206 * @param array $products All products.
154 207 *
@@ -205,9 +258,8 @@
205 258 * @access public
206 259 * @since 1.0.0
207 260 */
208 261 public function activate() {
209 -
210 262 update_option( OPTML_NAMESPACE . '-version', OPTML_VERSION );
211 263
212 264 if ( is_multisite() ) {
213 265 return;
@@ -216,8 +268,20 @@
216 268 set_transient( 'optml_fresh_install', true, MINUTE_IN_SECONDS );
217 269 }
218 270
219 271 /**
272 + * Deactivate routine actions.
273 + *
274 + * @access public
275 + * @since 3.11.0
276 + */
277 + public function deactivate() {
278 + // Clear registered cron events.
279 + wp_clear_scheduled_hook( 'optml_daily_sync' );
280 + wp_clear_scheduled_hook( 'optml_pull_image_data_init' );
281 + }
282 +
283 + /**
220 284 * Cloning is forbidden.
221 285 *
222 286 * @access public
223 287 * @since 1.0.0
@@ -235,5 +299,19 @@
235 299 public function __wakeup() {
236 300 _doing_it_wrong( __FUNCTION__, __( 'Cheatin&#8217; huh?', 'optimole-wp' ), '1.0.0' );
237 301 }
238 302
303 + /**
304 + * Hide SDK promo notice for pro uses.
305 + *
306 + * @access public
307 + */
308 + public static function sdk_hide_promo_notice( $should_show ) {
309 + if ( self::$_instance->admin->settings->is_connected() ) {
310 + $service_data = self::$_instance->admin->settings->get( 'service_data' );
311 + if ( isset( $service_data['plan'] ) && 'free' !== $service_data['plan'] ) {
312 + return true;
313 + }
314 + }
315 + return $should_show;
316 + }
239 317 }