Current File : /home/aventura/www/site/wp-content/plugins/wp-smushit/lib/class-wp-smush-installer.php |
<?php
/**
* Smush installer (update/upgrade procedures): WP_Smush_Installer class
*
* @package WP_Smush
* @subpackage Admin
* @since 2.8.0
*
* @author Anton Vanyukov <anton@incsub.com>
*
* @copyright (c) 2018, Incsub (http://incsub.com)
*/
/**
* Class WP_Smush_Installer for handling updates and upgrades of the plugin.
*
* @since 2.8.0
*/
class WP_Smush_Installer {
/**
* Check if a existing install or new.
*
* @since 2.8.0 Moved to this class from wp-smush.php file.
*/
public static function smush_activated() {
if ( ! defined( 'WP_SMUSH_ACTIVATING' ) ) {
define( 'WP_SMUSH_ACTIVATING', true );
}
/* @var WpSmushSettings $wpsmush_settings */
global $wpsmush_settings;
$version = get_site_option( WP_SMUSH_PREFIX . 'version' );
$settings = ! empty( $wpsmush_settings->settings ) ? $wpsmush_settings->settings : $wpsmush_settings->init_settings();
// If the version is not saved or if the version is not same as the current version,.
if ( ! $version || WP_SMUSH_VERSION !== $version ) {
global $wpdb;
// Check if there are any existing smush stats.
$results = $wpdb->get_var( $wpdb->prepare(
"SELECT meta_id FROM {$wpdb->postmeta} WHERE meta_key=%s LIMIT 1",
'wp-smpro-smush-data'
) ); // db call ok; no-cache ok.
if ( $results ) {
update_site_option( 'wp-smush-install-type', 'existing' );
} else {
// Check for existing settings.
if ( false !== $settings['auto'] ) {
update_site_option( 'wp-smush-install-type', 'existing' );
}
}
// Store the plugin version in db.
update_site_option( WP_SMUSH_PREFIX . 'version', WP_SMUSH_VERSION );
}
}
/**
* Handle plugin upgrades.
*
* @since 2.8.0
*/
public static function upgrade_settings() {
// Avoid to execute this over an over in same thread.
if ( defined( 'WP_SMUSH_ACTIVATING' ) || ( defined( 'WP_SMUSH_UPGRADING' ) && WP_SMUSH_UPGRADING ) ) {
return;
}
$version = get_site_option( WP_SMUSH_PREFIX . 'version' );
if ( false === $version ) {
self::smush_activated();
}
if ( false !== $version && WP_SMUSH_VERSION !== $version ) {
if ( ! defined( 'WP_SMUSH_UPGRADING' ) ) {
define( 'WP_SMUSH_UPGRADING', true );
}
if ( version_compare( $version, '2.8.0', '<' ) ) {
self::upgrade_2_8_0();
}
// Store the latest plugin version in db.
update_site_option( WP_SMUSH_PREFIX . 'version', WP_SMUSH_VERSION );
}
}
/**
* Upgrade old settings to new if required.
*
* We have changed exif data setting key from version 2.8
* Update the existing value to new one.
*
* @since 2.8.0
*/
private static function upgrade_2_8_0() {
/* @var WpSmushSettings $wpsmush_settings */
global $wpsmush_settings;
// If exif is not preserved, it will be stripped by default.
if ( $wpsmush_settings->get_setting( WP_SMUSH_PREFIX . 'keep_exif' ) ) {
// Set not to strip exif value.
$wpsmush_settings->update_setting( WP_SMUSH_PREFIX . 'strip_exif', 0 );
// Delete the old exif setting.
$wpsmush_settings->delete_setting( WP_SMUSH_PREFIX . 'keep_exif' );
}
}
}