Imagify Image Optimizer - Version 1.9.7

Version Description

  • 2019/10/08 =
  • Improvement: prevent greedy antiviruses from crashing the website by renaming our highly dangerous php file with a ".suspected" suffix.
  • Improvement: on the settings page, display the "Save & Go to Bulk Optimizer" button only if the user has the ability to bulk optimize.
  • Fix: display the "Welcome" banner correctly when it is shown on the WP Rockets settings page.
Download this release

Release Info

Developer wp_media
Plugin Icon 128x128 Imagify Image Optimizer
Version 1.9.7
Comparing to
See all releases

Code changes from version 1.9.6 to 1.9.7

classes/Traits/InstanceGetterTrait.php CHANGED
@@ -9,7 +9,7 @@ defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
9
  * This is temporary, until we get a DI container.
10
  *
11
  * @since 1.9
12
- * @since 1.9.4 Renamed FakeSingletonTrait into InstanceGetterTrait.
13
  * @author Grégory Viguier
14
  */
15
  trait InstanceGetterTrait {
9
  * This is temporary, until we get a DI container.
10
  *
11
  * @since 1.9
12
+ * @since 1.9.4 Renamed into InstanceGetterTrait.
13
  * @author Grégory Viguier
14
  */
15
  trait InstanceGetterTrait {
imagify.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Imagify
4
  * Plugin URI: https://wordpress.org/plugins/imagify/
5
  * Description: Dramaticaly reduce image file sizes without losing quality, make your website load faster, boost your SEO and save money on your bandwidth using Imagify, the new most advanced image optimization tool.
6
- * Version: 1.9.6
7
  * Requires PHP: 5.4
8
  * Author: WP Media
9
  * Author URI: https://wp-media.me/
@@ -20,7 +20,7 @@
20
  defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
21
 
22
  // Imagify defines.
23
- define( 'IMAGIFY_VERSION', '1.9.6' );
24
  define( 'IMAGIFY_SLUG', 'imagify' );
25
  define( 'IMAGIFY_FILE', __FILE__ );
26
  define( 'IMAGIFY_PATH', realpath( plugin_dir_path( IMAGIFY_FILE ) ) . '/' );
3
  * Plugin Name: Imagify
4
  * Plugin URI: https://wordpress.org/plugins/imagify/
5
  * Description: Dramaticaly reduce image file sizes without losing quality, make your website load faster, boost your SEO and save money on your bandwidth using Imagify, the new most advanced image optimization tool.
6
+ * Version: 1.9.7
7
  * Requires PHP: 5.4
8
  * Author: WP Media
9
  * Author URI: https://wp-media.me/
20
  defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
21
 
22
  // Imagify defines.
23
+ define( 'IMAGIFY_VERSION', '1.9.7' );
24
  define( 'IMAGIFY_SLUG', 'imagify' );
25
  define( 'IMAGIFY_FILE', __FILE__ );
26
  define( 'IMAGIFY_PATH', realpath( plugin_dir_path( IMAGIFY_FILE ) ) . '/' );
inc/3rd-party/wp-rocket/classes/Main.php CHANGED
@@ -20,8 +20,8 @@ class Main {
20
  * @author Grégory Viguier
21
  */
22
  public function init() {
23
- add_action( 'imagify_assets_enqueued', [ $this, 'dequeue_sweetalert' ] );
24
- add_filter( 'imagify_cdn_source', [ $this, 'set_cdn_source' ] );
25
  }
26
 
27
 
@@ -30,14 +30,18 @@ class Main {
30
  /** ----------------------------------------------------------------------------------------- */
31
 
32
  /**
33
- * Don't load Imagify CSS & JS files on WP Rocket options screen to avoid conflict with older version of SweetAlert.
34
  *
35
  * @since 1.9.3
36
  * @access public
37
  * @author Grégory Viguier
38
  */
39
  public function dequeue_sweetalert() {
40
- if ( ! defined( 'WP_ROCKET_PLUGIN_SLUG' ) ) {
 
 
 
 
41
  return;
42
  }
43
 
@@ -45,7 +49,8 @@ class Main {
45
  return;
46
  }
47
 
48
- \Imagify_Assets::get_instance()->dequeue_script( array( 'sweetalert-core', 'sweetalert', 'notices' ) );
 
49
  }
50
 
51
  /**
20
  * @author Grégory Viguier
21
  */
22
  public function init() {
23
+ add_action( 'admin_init', [ $this, 'dequeue_sweetalert' ] );
24
+ add_filter( 'imagify_cdn_source', [ $this, 'set_cdn_source' ] );
25
  }
26
 
27
 
30
  /** ----------------------------------------------------------------------------------------- */
31
 
32
  /**
33
+ * Remove all Imagify admin notices + CSS & JS files on WP Rocket (< 3.0) options screen to avoid conflict with older version of SweetAlert.
34
  *
35
  * @since 1.9.3
36
  * @access public
37
  * @author Grégory Viguier
38
  */
39
  public function dequeue_sweetalert() {
40
+ if ( ! defined( 'WP_ROCKET_VERSION' ) || ! defined( 'WP_ROCKET_PLUGIN_SLUG' ) ) {
41
+ return;
42
+ }
43
+
44
+ if ( version_compare( WP_ROCKET_VERSION, '3.0' ) >= 0 ) {
45
  return;
46
  }
47
 
49
  return;
50
  }
51
 
52
+ remove_action( 'all_admin_notices', [ \Imagify_Notices::get_instance(), 'render_notices' ] );
53
+ remove_action( 'admin_enqueue_scripts', [ \Imagify_Assets::get_instance(), 'enqueue_styles_and_scripts' ], IMAGIFY_INT_MAX );
54
  }
55
 
56
  /**
inc/classes/class-imagify-plugin.php CHANGED
@@ -99,6 +99,13 @@ class Imagify_Plugin {
99
  require_once $this->plugin_path . 'vendor/autoload.php';
100
  }
101
 
 
 
 
 
 
 
 
102
  $inc_path = $this->plugin_path . 'inc/';
103
 
104
  require_once $inc_path . 'deprecated/deprecated.php';
99
  require_once $this->plugin_path . 'vendor/autoload.php';
100
  }
101
 
102
+ $instance_getter_path = $this->plugin_path . 'classes/Traits/InstanceGetterTrait.php';
103
+
104
+ if ( file_exists( $instance_getter_path . '.suspected' ) && ! file_exists( $instance_getter_path ) ) {
105
+ // Trolling greedy antiviruses.
106
+ require_once $instance_getter_path . '.suspected';
107
+ }
108
+
109
  $inc_path = $this->plugin_path . 'inc/';
110
 
111
  require_once $inc_path . 'deprecated/deprecated.php';
package.json CHANGED
@@ -1,7 +1,7 @@
1
  {
2
  "name": "imagify",
3
  "description": "Imagify Image Optimizer. Dramatically reduce image file sizes without losing quality, make your website load faster, boost your SEO and save money on your bandwidth.",
4
- "version": "1.9.6",
5
  "homepage": "https://wordpress.org/plugins/imagify/",
6
  "license": "GPL-2.0",
7
  "private": true,
1
  {
2
  "name": "imagify",
3
  "description": "Imagify Image Optimizer. Dramatically reduce image file sizes without losing quality, make your website load faster, boost your SEO and save money on your bandwidth.",
4
+ "version": "1.9.7",
5
  "homepage": "https://wordpress.org/plugins/imagify/",
6
  "license": "GPL-2.0",
7
  "private": true,
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: wp_media, GregLone
3
  Tags: optimize images, images, optimize, performance, webp
4
  Requires at least: 4.0.0
5
  Tested up to: 5.2.2
6
- Stable tag: 1.9.6
7
 
8
  Optimize images in one click: reduce image file sizes, convert WebP, keep your images beautiful… and boost your loading time and your SEO!
9
 
@@ -153,6 +153,11 @@ When the plugin is disabled, your existing images remain optimized. Backups of t
153
  4. Other Media Page
154
 
155
  == Changelog ==
 
 
 
 
 
156
  = 1.9.6 - 2019/07/22 =
157
  * Improvement: now images that are "already optimized" can also get webp versions.
158
  * Fix: progress bar height in the admin bar for Chrome and Safari.
3
  Tags: optimize images, images, optimize, performance, webp
4
  Requires at least: 4.0.0
5
  Tested up to: 5.2.2
6
+ Stable tag: 1.9.7
7
 
8
  Optimize images in one click: reduce image file sizes, convert WebP, keep your images beautiful… and boost your loading time and your SEO!
9
 
153
  4. Other Media Page
154
 
155
  == Changelog ==
156
+ = 1.9.7 - 2019/10/08 =
157
+ * Improvement: prevent greedy antiviruses from crashing the website by renaming our highly dangerous php file with a ".suspected" suffix.
158
+ * Improvement: on the settings page, display the "Save & Go to Bulk Optimizer" button only if the user has the ability to bulk optimize.
159
+ * Fix: display the "Welcome" banner correctly when it is shown on the WP Rocket’s settings page.
160
+
161
  = 1.9.6 - 2019/07/22 =
162
  * Improvement: now images that are "already optimized" can also get webp versions.
163
  * Fix: progress bar height in the admin bar for Chrome and Safari.
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitdcc95c2dd8902a9b7b27a6aff354b874::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit1b7d202ad01d839050ec4112544e7221::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -279,7 +279,7 @@ class ClassLoader
279
  */
280
  public function setApcuPrefix($apcuPrefix)
281
  {
282
- $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
283
  }
284
 
285
  /**
@@ -374,10 +374,14 @@ class ClassLoader
374
 
375
  $first = $class[0];
376
  if (isset($this->prefixLengthsPsr4[$first])) {
377
- foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
378
- if (0 === strpos($class, $prefix)) {
379
- foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
380
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
 
 
 
 
381
  return $file;
382
  }
383
  }
279
  */
280
  public function setApcuPrefix($apcuPrefix)
281
  {
282
+ $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
283
  }
284
 
285
  /**
374
 
375
  $first = $class[0];
376
  if (isset($this->prefixLengthsPsr4[$first])) {
377
+ $subPath = $class;
378
+ while (false !== $lastPos = strrpos($subPath, '\\')) {
379
+ $subPath = substr($subPath, 0, $lastPos);
380
+ $search = $subPath . '\\';
381
+ if (isset($this->prefixDirsPsr4[$search])) {
382
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
383
+ foreach ($this->prefixDirsPsr4[$search] as $dir) {
384
+ if (file_exists($file = $dir . $pathEnd)) {
385
  return $file;
386
  }
387
  }
vendor/composer/LICENSE CHANGED
@@ -1,5 +1,5 @@
1
 
2
- Copyright (c) 2016 Nils Adermann, Jordi Boggiano
3
 
4
  Permission is hereby granted, free of charge, to any person obtaining a copy
5
  of this software and associated documentation files (the "Software"), to deal
1
 
2
+ Copyright (c) Nils Adermann, Jordi Boggiano
3
 
4
  Permission is hereby granted, free of charge, to any person obtaining a copy
5
  of this software and associated documentation files (the "Software"), to deal
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitdcc95c2dd8902a9b7b27a6aff354b874
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInitdcc95c2dd8902a9b7b27a6aff354b874
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitdcc95c2dd8902a9b7b27a6aff354b874', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\AutoloadWPMediaImagifyWordPressPlugin\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitdcc95c2dd8902a9b7b27a6aff354b874', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInitdcc95c2dd8902a9b7b27a6aff354b874::getInitializer($loader));
31
  } else {
32
  $classMap = require __DIR__ . '/autoload_classmap.php';
33
  if ($classMap) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit1b7d202ad01d839050ec4112544e7221
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit1b7d202ad01d839050ec4112544e7221', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\AutoloadWPMediaImagifyWordPressPlugin\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit1b7d202ad01d839050ec4112544e7221', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInit1b7d202ad01d839050ec4112544e7221::getInitializer($loader));
31
  } else {
32
  $classMap = require __DIR__ . '/autoload_classmap.php';
33
  if ($classMap) {
vendor/composer/autoload_static.php CHANGED
@@ -7,7 +7,7 @@ namespace Composer\Autoload;
7
  use Composer\AutoloadWPMediaImagifyWordPressPlugin\ClassLoader as ClassLoaderWPMediaImagifyWordPressPlugin;
8
 
9
 
10
- class ComposerStaticInitdcc95c2dd8902a9b7b27a6aff354b874
11
  {
12
  public static $prefixLengthsPsr4 = array (
13
  'I' =>
@@ -273,9 +273,9 @@ class ComposerStaticInitdcc95c2dd8902a9b7b27a6aff354b874
273
  public static function getInitializer(ClassLoaderWPMediaImagifyWordPressPlugin $loader)
274
  {
275
  return \Closure::bind(function () use ($loader) {
276
- $loader->prefixLengthsPsr4 = ComposerStaticInitdcc95c2dd8902a9b7b27a6aff354b874::$prefixLengthsPsr4;
277
- $loader->prefixDirsPsr4 = ComposerStaticInitdcc95c2dd8902a9b7b27a6aff354b874::$prefixDirsPsr4;
278
- $loader->classMap = ComposerStaticInitdcc95c2dd8902a9b7b27a6aff354b874::$classMap;
279
 
280
  }, null, ClassLoaderWPMediaImagifyWordPressPlugin::class);
281
  }
7
  use Composer\AutoloadWPMediaImagifyWordPressPlugin\ClassLoader as ClassLoaderWPMediaImagifyWordPressPlugin;
8
 
9
 
10
+ class ComposerStaticInit1b7d202ad01d839050ec4112544e7221
11
  {
12
  public static $prefixLengthsPsr4 = array (
13
  'I' =>
273
  public static function getInitializer(ClassLoaderWPMediaImagifyWordPressPlugin $loader)
274
  {
275
  return \Closure::bind(function () use ($loader) {
276
+ $loader->prefixLengthsPsr4 = ComposerStaticInit1b7d202ad01d839050ec4112544e7221::$prefixLengthsPsr4;
277
+ $loader->prefixDirsPsr4 = ComposerStaticInit1b7d202ad01d839050ec4112544e7221::$prefixDirsPsr4;
278
+ $loader->classMap = ComposerStaticInit1b7d202ad01d839050ec4112544e7221::$classMap;
279
 
280
  }, null, ClassLoaderWPMediaImagifyWordPressPlugin::class);
281
  }
vendor/composer/installed.json CHANGED
@@ -1,4 +1,42 @@
1
  [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  {
3
  "name": "composer/installers",
4
  "version": "v1.6.0",
@@ -151,43 +189,5 @@
151
  }
152
  },
153
  "notification-url": "https://packagist.org/downloads/"
154
- },
155
- {
156
- "name": "a5hleyrich/wp-background-processing",
157
- "version": "1.0.1",
158
- "version_normalized": "1.0.1.0",
159
- "source": {
160
- "type": "git",
161
- "url": "https://github.com/A5hleyRich/wp-background-processing.git",
162
- "reference": "1f070aab5058dbaf45d5435a343033ddd8a641b1"
163
- },
164
- "dist": {
165
- "type": "zip",
166
- "url": "https://api.github.com/repos/A5hleyRich/wp-background-processing/zipball/1f070aab5058dbaf45d5435a343033ddd8a641b1",
167
- "reference": "1f070aab5058dbaf45d5435a343033ddd8a641b1",
168
- "shasum": ""
169
- },
170
- "require": {
171
- "php": ">=5.2"
172
- },
173
- "time": "2018-02-12T09:24:05+00:00",
174
- "type": "library",
175
- "installation-source": "dist",
176
- "autoload": {
177
- "classmap": [
178
- "classes/"
179
- ]
180
- },
181
- "notification-url": "https://packagist.org/downloads/",
182
- "license": [
183
- "GPL-2.0-only"
184
- ],
185
- "authors": [
186
- {
187
- "name": "Ashley Rich",
188
- "email": "hello@ashleyrich.com"
189
- }
190
- ],
191
- "description": "WP Background Processing can be used to fire off non-blocking asynchronous requests or as a background processing tool, allowing you to queue tasks."
192
  }
193
  ]
1
  [
2
+ {
3
+ "name": "a5hleyrich/wp-background-processing",
4
+ "version": "1.0.1",
5
+ "version_normalized": "1.0.1.0",
6
+ "source": {
7
+ "type": "git",
8
+ "url": "https://github.com/A5hleyRich/wp-background-processing.git",
9
+ "reference": "1f070aab5058dbaf45d5435a343033ddd8a641b1"
10
+ },
11
+ "dist": {
12
+ "type": "zip",
13
+ "url": "https://api.github.com/repos/A5hleyRich/wp-background-processing/zipball/1f070aab5058dbaf45d5435a343033ddd8a641b1",
14
+ "reference": "1f070aab5058dbaf45d5435a343033ddd8a641b1",
15
+ "shasum": ""
16
+ },
17
+ "require": {
18
+ "php": ">=5.2"
19
+ },
20
+ "time": "2018-02-12T09:24:05+00:00",
21
+ "type": "library",
22
+ "installation-source": "dist",
23
+ "autoload": {
24
+ "classmap": [
25
+ "classes/"
26
+ ]
27
+ },
28
+ "notification-url": "https://packagist.org/downloads/",
29
+ "license": [
30
+ "GPL-2.0-only"
31
+ ],
32
+ "authors": [
33
+ {
34
+ "name": "Ashley Rich",
35
+ "email": "hello@ashleyrich.com"
36
+ }
37
+ ],
38
+ "description": "WP Background Processing can be used to fire off non-blocking asynchronous requests or as a background processing tool, allowing you to queue tasks."
39
+ },
40
  {
41
  "name": "composer/installers",
42
  "version": "v1.6.0",
189
  }
190
  },
191
  "notification-url": "https://packagist.org/downloads/"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
192
  }
193
  ]
views/part-settings-footer.php CHANGED
@@ -9,14 +9,18 @@ defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
9
  submit_button();
10
 
11
  if ( Imagify_Requirements::is_api_key_valid() ) {
12
- // Submit and go to bulk page.
13
- submit_button(
14
- esc_html__( 'Save & Go to Bulk Optimizer', 'imagify' ),
15
- 'secondary imagify-button-secondary', // Type/classes.
16
- 'submit-goto-bulk', // Name (id).
17
- true, // Wrap.
18
- array() // Other attributes.
19
- );
 
 
 
 
20
  }
21
  ?>
22
  </div>
9
  submit_button();
10
 
11
  if ( Imagify_Requirements::is_api_key_valid() ) {
12
+ $user_can = imagify_get_context( 'wp' )->current_user_can( 'bulk-optimize' ) || imagify_get_context( 'custom-folders' )->current_user_can( 'bulk-optimize' );
13
+
14
+ if ( $user_can ) {
15
+ // Submit and go to bulk page.
16
+ submit_button(
17
+ esc_html__( 'Save & Go to Bulk Optimizer', 'imagify' ),
18
+ 'secondary imagify-button-secondary', // Type/classes.
19
+ 'submit-goto-bulk', // Name (id).
20
+ true, // Wrap.
21
+ array() // Other attributes.
22
+ );
23
+ }
24
  }
25
  ?>
26
  </div>