-
Notifications
You must be signed in to change notification settings - Fork 26
/
ewww-image-optimizer.php
152 lines (143 loc) · 5.61 KB
/
ewww-image-optimizer.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<?php
/**
* Loader for Standard EWWW IO plugin.
*
* This file bootstraps the rest of the EWWW IO plugin after some basic checks.
*
* @link https://ewww.io
* @package EWWW_Image_Optimizer
*/
/*
Plugin Name: EWWW Image Optimizer
Plugin URI: https://wordpress.org/plugins/ewww-image-optimizer/
Description: Smaller Images, Faster Sites, Happier Visitors. Comprehensive image optimization that doesn't require a degree in rocket science.
Author: Exactly WWW
Version: 7.9.1
Requires at least: 6.3
Requires PHP: 7.4
Author URI: https://ewww.io/
License: GPLv3
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// Check the PHP version.
if ( ! defined( 'PHP_VERSION_ID' ) || PHP_VERSION_ID < 70400 ) {
add_action( 'network_admin_notices', 'ewww_image_optimizer_unsupported_php' );
add_action( 'admin_notices', 'ewww_image_optimizer_unsupported_php' );
} elseif ( defined( 'EWWW_IMAGE_OPTIMIZER_VERSION' ) ) {
// Prevent loading more than one EWWW IO plugin.
add_action( 'network_admin_notices', 'ewww_image_optimizer_dual_plugin' );
add_action( 'admin_notices', 'ewww_image_optimizer_dual_plugin' );
} elseif ( false === strpos( add_query_arg( '', '' ), 'ewwwio_disable=1' ) ) {
define( 'EWWW_IMAGE_OPTIMIZER_VERSION', 791 );
if ( WP_DEBUG && function_exists( 'memory_get_usage' ) ) {
$ewww_memory = 'plugin load: ' . memory_get_usage( true ) . "\n";
}
/**
* Always use relative paths unless the user has already defined this constant.
*
* @var bool EWWW_IMAGE_OPTIMIZER_RELATIVE
*/
if ( ! defined( 'EWWW_IMAGE_OPTIMIZER_RELATIVE' ) ) {
define( 'EWWW_IMAGE_OPTIMIZER_RELATIVE', true );
}
/**
* The full path of the plugin file (this file).
*
* @var string EWWW_IMAGE_OPTIMIZER_PLUGIN_FILE
*/
define( 'EWWW_IMAGE_OPTIMIZER_PLUGIN_FILE', __FILE__ );
/**
* The path of the plugin file relative to the plugins/ folder.
*
* @var string EWWW_IMAGE_OPTIMIZER_PLUGIN_FILE_REL
*/
define( 'EWWW_IMAGE_OPTIMIZER_PLUGIN_FILE_REL', plugin_basename( __FILE__ ) );
/**
* This is the full system path to the plugin folder.
*
* @var string EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH
*/
define( 'EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
/**
* This is the full system path to the bundled binaries.
*
* @var string EWWW_IMAGE_OPTIMIZER_BINARY_PATH
*/
define( 'EWWW_IMAGE_OPTIMIZER_BINARY_PATH', plugin_dir_path( __FILE__ ) . 'binaries/' );
/**
* This is the full system path to the plugin images for testing.
*
* @var string EWWW_IMAGE_OPTIMIZER_IMAGES_PATH
*/
define( 'EWWW_IMAGE_OPTIMIZER_IMAGES_PATH', plugin_dir_path( __FILE__ ) . 'images/' );
if ( ! defined( 'EWWW_IMAGE_OPTIMIZER_TOOL_PATH' ) ) {
if ( ! defined( 'EWWWIO_CONTENT_DIR' ) ) {
$ewwwio_content_dir = trailingslashit( realpath( WP_CONTENT_DIR ) ) . trailingslashit( 'ewww' );
if ( ! is_writable( WP_CONTENT_DIR ) || ! empty( $_ENV['PANTHEON_ENVIRONMENT'] ) ) {
$upload_dir = wp_get_upload_dir();
if ( false === strpos( $upload_dir['basedir'], '://' ) && is_writable( $upload_dir['basedir'] ) ) {
$ewwwio_content_dir = trailingslashit( realpath( $upload_dir['basedir'] ) ) . trailingslashit( 'ewww' );
}
}
/**
* The folder where we store debug logs (among other things) - MUST have a trailing slash.
*
* @var string EWWWIO_CONTENT_DIR
*/
define( 'EWWWIO_CONTENT_DIR', $ewwwio_content_dir );
}
/**
* The folder where we install optimization tools - MUST have a trailing slash.
*
* @var string EWWW_IMAGE_OPTIMIZER_TOOL_PATH
*/
define( 'EWWW_IMAGE_OPTIMIZER_TOOL_PATH', EWWWIO_CONTENT_DIR );
} elseif ( ! defined( 'EWWWIO_CONTENT_DIR' ) ) {
define( 'EWWWIO_CONTENT_DIR', EWWW_IMAGE_OPTIMIZER_TOOL_PATH );
}
/**
* All the 'unique' functions for the core EWWW IO plugin (slowly being replaced with oop).
*/
require_once EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH . 'unique.php';
/**
* All the 'common' functions for both EWWW IO plugins.
*/
require_once EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH . 'common.php';
/**
* All the base functions for our plugins and classes to inherit.
*/
require_once EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH . 'classes/class-base.php';
/**
* The setup functions for EWWW IO.
*/
require_once EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH . 'classes/class-plugin.php';
/**
* Class for local optimization tool installation/valication.
*/
require_once EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH . 'classes/class-local.php';
/**
* The main function to return a single EWWW\Plugin object to functions elsewhere.
*
* @return object object|EWWW\Plugin The one true EWWW\Plugin instance.
*/
function ewwwio() {
return EWWW\Plugin::instance();
}
ewwwio();
} // End if().
if ( ! function_exists( 'ewww_image_optimizer_unsupported_php' ) ) {
/**
* Display a notice that the PHP version is too old.
*/
function ewww_image_optimizer_unsupported_php() {
echo '<div id="ewww-image-optimizer-warning-php" class="error"><p><a href="https://docs.ewww.io/article/55-upgrading-php" target="_blank" data-beacon-article="5ab2baa6042863478ea7c2ae">' . esc_html__( 'EWWW Image Optimizer requires PHP 7.4 or greater. Newer versions of PHP are significantly faster and much more secure. If you are unsure how to upgrade to a supported version, ask your webhost for instructions.', 'ewww-image-optimizer' ) . '</a></p></div>';
}
/**
* Display a notice when both the standard and cloud plugins are active.
*/
function ewww_image_optimizer_dual_plugin() {
echo "<div id='ewww-image-optimizer-warning-double-plugin' class='error'><p><strong>" . esc_html__( 'Only one version of the EWWW Image Optimizer can be active at a time. Please deactivate other copies of the plugin.', 'ewww-image-optimizer' ) . '</strong></p></div>';
}
}