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 -24 3.0.0 → 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,29 +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();
82 - self::$_instance->media_offload = new Optml_Media_Offload();
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();
83 119 if ( class_exists( 'WP_CLI' ) ) {
84 120 self::$_instance->cli = new Optml_Cli();
85 121 }
86 122 }
87 - $vendor_file = OPTML_PATH . 'vendor/autoload.php';
88 - if ( is_readable( $vendor_file ) ) {
89 - include_once $vendor_file;
90 - }
91 123
92 124 return self::$_instance;
93 125 }
94 126
@@ -104,15 +136,16 @@
104 136 public static function register_conflicts( $conflicts_to_register = [] ) {
105 137 $conflicts_to_register = array_merge(
106 138 $conflicts_to_register,
107 139 [
108 - 'Optml_Elementor',
109 - 'Optml_Beaver',
110 140 'Optml_Jetpack_Photon',
111 - 'Optml_Jetpack_Lazyload',
112 141 'Optml_Wprocket',
113 142 'Optml_Divi',
114 143 'Optml_w3_total_cache_cdn',
144 + 'Optml_Smush',
145 + 'Optml_Litespeed',
146 + 'Optml_Autoptimize',
147 + 'Optml_Perfmatters',
115 148 ]
116 149 );
117 150
118 151 return $conflicts_to_register;
@@ -118,26 +151,23 @@
118 151 return $conflicts_to_register;
119 152 }
120 153
121 154 /**
122 - * Change lazyload default for new users.
155 + * Add settings to the logger data.
123 156 *
124 - * @param array $defaults Old defaults.
157 + * @param array $data Logger data.
125 158 *
126 - * @return array New defaults.
159 + * @return array
127 160 */
128 - public static function change_lazyload_default( $defaults ) {
129 - $install_time = get_option( 'optimole_wp_install', 0 );
161 + public static function add_settings( $data ): array {
162 + $data = is_array( $data ) ? $data : [];
130 163
131 - if ( $install_time < 1545652321 ) {
132 - return $defaults;
133 - }
164 + $saved_data = ( new Optml_Settings() )->get_raw_settings();
165 + unset( $saved_data['service_data'] );
166 + unset( $saved_data['api_key'] );
134 167
135 - $defaults['lazyload'] = 'enabled';
136 -
137 - return $defaults;
168 + return array_merge( $data, $saved_data );
138 169 }
139 -
140 170 /**
141 171 * Change review message.
142 172 *
143 173 * @param string $message Old review message.
@@ -148,8 +178,30 @@
148 178 return str_replace( '{product}', 'Optimole', $message );
149 179 }
150 180
151 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 + /**
152 204 * Register product into SDK.
153 205 *
154 206 * @param array $products All products.
155 207 *
@@ -206,9 +258,8 @@
206 258 * @access public
207 259 * @since 1.0.0
208 260 */
209 261 public function activate() {
210 -
211 262 update_option( OPTML_NAMESPACE . '-version', OPTML_VERSION );
212 263
213 264 if ( is_multisite() ) {
214 265 return;
@@ -217,8 +268,20 @@
217 268 set_transient( 'optml_fresh_install', true, MINUTE_IN_SECONDS );
218 269 }
219 270
220 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 + /**
221 284 * Cloning is forbidden.
222 285 *
223 286 * @access public
224 287 * @since 1.0.0
@@ -236,5 +299,19 @@
236 299 public function __wakeup() {
237 300 _doing_it_wrong( __FUNCTION__, __( 'Cheatin&#8217; huh?', 'optimole-wp' ), '1.0.0' );
238 301 }
239 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 + }
240 317 }