Files
tysweld.com/wp-content/plugins/image-optimization/image-optimization.php
2025-02-24 22:33:42 +01:00

205 lines
5.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Plugin Name: Image Optimizer by Elementor Compress, Resize and Optimize Images
* Description: Automatically compress and enhance your images, boosting your website speed, appearance, and SEO. Get Image Optimizer and optimize your images in seconds.
* Plugin URI: https://go.elementor.com/wp-repo-description-tab-io-product-page/
* Version: 1.5.1
* Author: Elementor.com
* Author URI: https://go.elementor.com/wp-repo-description-tab-io-author-url/
* Text Domain: image-optimization
* License: GPL-3
* License URI: https://www.gnu.org/licenses/gpl-3.0.en.html
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
define( 'IMAGE_OPTIMIZATION_VERSION', '1.5.1' );
define( 'IMAGE_OPTIMIZATION_PATH', plugin_dir_path( __FILE__ ) );
define( 'IMAGE_OPTIMIZATION_URL', plugins_url( '/', __FILE__ ) );
define( 'IMAGE_OPTIMIZATION_ASSETS_PATH', IMAGE_OPTIMIZATION_PATH . 'assets/' );
define( 'IMAGE_OPTIMIZATION_ASSETS_URL', IMAGE_OPTIMIZATION_URL . 'assets/' );
define( 'IMAGE_OPTIMIZATION_PLUGIN_FILE', basename( __FILE__ ) );
/**
* ImageOptimization Class
*/
final class ImageOptimization {
private $requirements_errors = [];
const REQUIRED_EXTENSIONS = [
'exif',
'fileinfo',
'gd',
];
/**
* Constructor
*
* @access public
*/
public function __construct() {
// Load translation
add_action( 'plugins_loaded', [ $this, 'i18n' ] );
// Init Plugin
add_action( 'plugins_loaded', [ $this, 'init' ], -11 );
}
/**
* Load plugin localization files.
*
* Fired by `plugins_loaded` action hook.
*
* @access public
*/
public function i18n() {
load_plugin_textdomain( 'image-optimization' );
}
/**
* Checks if all requirements met to safely start the plugin and renders admin notices
* if something is not right.
*
* @access public
* @return bool
*/
public function plugin_can_start(): bool {
$can_start = true;
if ( ! version_compare( PHP_VERSION, '7.4', '>=' ) ) {
$this->requirements_errors[] = sprintf(
'%1$s <a href="https://go.elementor.com/wp-dash-update-php/" target="_blank">%2$s</a>',
sprintf(
/* translators: %s: PHP version. */
esc_html__( 'Update to PHP version %s and get back to optimizing!', 'image-optimization' ),
'7.4',
),
esc_html__( 'Show me how', 'image-optimization' )
);
$can_start = false;
}
if ( count( $this->get_missing_extensions_list() ) ) {
$missed_extensions = $this->get_missing_extensions_list();
$this->requirements_errors[] = sprintf(
esc_html__( 'The following required PHP extensions are missing: %s', 'image-optimization' ),
implode( ', ', $missed_extensions )
);
$can_start = false;
}
if ( ! $this->is_db_json_supported() ) {
$this->requirements_errors[] = sprintf(
/* translators: 1: MySQL minimum version. 2: MariaDB minimum version. */
esc_html__(
'The database server version is outdated. Update to MySQL version %1$s or MariaDB version %2$s.',
'image-optimization'
),
'5.7',
'10.2'
);
$can_start = false;
}
$upload_dir = wp_upload_dir();
if ( ! wp_is_writable( $upload_dir['basedir'] ) ) {
$this->requirements_errors[] = esc_html__(
'Your site doesnt have the necessary read/write permissions for your file system to use this plugin. Please contact your hosting provider to resolve this matter.',
'image-optimization',
);
$can_start = false;
}
return $can_start;
}
/**
* Retrieve an array of missing extensions mentioned in self::REQUIRED_EXTENSIONS.
*
* @access private
* @return array Missing extensions.
*/
private function get_missing_extensions_list(): array {
$output = [];
foreach ( self::REQUIRED_EXTENSIONS as $extension ) {
if ( ! extension_loaded( $extension ) ) {
$output[] = $extension;
}
}
return $output;
}
public function is_db_json_supported(): bool {
global $wpdb;
$result = $wpdb->query("
SELECT JSON_EXTRACT('[1, 2]', '$[1]');
");
return false !== $result;
}
/**
* Renders an admin notice if the setup did not meet requirements.
*
* Fired by `admin_notices` action hook.
*
* @access public
* @return void
*/
public function add_requirements_error() {
$message = sprintf(
'<h3>%s</h3>',
esc_html__( 'Image Optimizer isnt running because:', 'image-optimization' )
);
$message .= '<ul>';
foreach ( $this->requirements_errors as $error ) {
$message .= sprintf(
'%s%s%s',
'<li>',
$error,
'</li>'
);
}
$message .= '</ul>';
$html_message = sprintf( '<div class="error">%s</div>', wpautop( $message ) );
echo wp_kses_post( $html_message );
}
/**
* Initialize the plugin.
*
* Validates that PHP version is sufficient. Checks for basic plugin requirements,
* if one check fail don't continue, if all check have passed include the plugin class.
*
* Fired by `plugins_loaded` action hook.
*
* @access public
*/
public function init() {
if ( ! $this->plugin_can_start() ) {
add_action( 'admin_notices', [ $this, 'add_requirements_error' ] );
} else {
// Once we get here, We have passed all validation checks, so we can safely include our plugin
require_once 'plugin.php';
}
}
}
// Instantiate ImageOptimization.
new ImageOptimization();