Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/wp-conte.../plugins/wp-smush.../core
File: class-installer.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* Smush installer (update/upgrade procedures): Installer class
[2] Fix | Delete
*
[3] Fix | Delete
* @package Smush\Core
[4] Fix | Delete
* @since 2.8.0
[5] Fix | Delete
*
[6] Fix | Delete
* @author Anton Vanyukov <anton@incsub.com>
[7] Fix | Delete
*
[8] Fix | Delete
* @copyright (c) 2018, Incsub (http://incsub.com)
[9] Fix | Delete
*/
[10] Fix | Delete
[11] Fix | Delete
namespace Smush\Core;
[12] Fix | Delete
[13] Fix | Delete
use Smush\App\Abstract_Page;
[14] Fix | Delete
use Smush\Core\CDN\CDN_Controller;
[15] Fix | Delete
use WP_Smush;
[16] Fix | Delete
[17] Fix | Delete
if ( ! defined( 'WPINC' ) ) {
[18] Fix | Delete
die;
[19] Fix | Delete
}
[20] Fix | Delete
[21] Fix | Delete
/**
[22] Fix | Delete
* Class Installer for handling updates and upgrades of the plugin.
[23] Fix | Delete
*
[24] Fix | Delete
* @since 2.8.0
[25] Fix | Delete
*/
[26] Fix | Delete
class Installer {
[27] Fix | Delete
[28] Fix | Delete
/**
[29] Fix | Delete
* Triggered on Smush deactivation.
[30] Fix | Delete
*
[31] Fix | Delete
* @since 3.1.0
[32] Fix | Delete
*/
[33] Fix | Delete
public static function smush_deactivated() {
[34] Fix | Delete
if ( ! class_exists( '\\Smush\\Core\\Modules\\CDN_Controller' ) ) {
[35] Fix | Delete
require_once __DIR__ . '/cdn/class-cdn-controller.php';
[36] Fix | Delete
}
[37] Fix | Delete
[38] Fix | Delete
CDN_Controller::unschedule_cron();
[39] Fix | Delete
Settings::get_instance()->delete_setting( 'wp-smush-cdn_status' );
[40] Fix | Delete
[41] Fix | Delete
if ( is_multisite() && is_network_admin() ) {
[42] Fix | Delete
/**
[43] Fix | Delete
* Updating the option instead of removing it.
[44] Fix | Delete
*
[45] Fix | Delete
* @see https://incsub.atlassian.net/browse/SMUSH-350
[46] Fix | Delete
*/
[47] Fix | Delete
update_site_option( 'wp-smush-networkwide', 1 );
[48] Fix | Delete
}
[49] Fix | Delete
[50] Fix | Delete
delete_site_option( 'wp_smush_api_auth' );
[51] Fix | Delete
}
[52] Fix | Delete
[53] Fix | Delete
/**
[54] Fix | Delete
* Check if an existing install or new.
[55] Fix | Delete
*
[56] Fix | Delete
* @since 2.8.0 Moved to this class from wp-smush.php file.
[57] Fix | Delete
*/
[58] Fix | Delete
public static function smush_activated() {
[59] Fix | Delete
if ( ! defined( 'WP_SMUSH_ACTIVATING' ) ) {
[60] Fix | Delete
define( 'WP_SMUSH_ACTIVATING', true );
[61] Fix | Delete
}
[62] Fix | Delete
[63] Fix | Delete
$version = get_site_option( 'wp-smush-version' );
[64] Fix | Delete
self::maybe_mark_as_pre_3_12_6_site( $version );
[65] Fix | Delete
[66] Fix | Delete
if ( ! class_exists( '\\Smush\\Core\\Settings' ) ) {
[67] Fix | Delete
require_once __DIR__ . '/class-settings.php';
[68] Fix | Delete
}
[69] Fix | Delete
[70] Fix | Delete
Settings::get_instance()->initial_default_site_settings();
[71] Fix | Delete
$settings = Settings::get_instance()->get();
[72] Fix | Delete
[73] Fix | Delete
// If the version is not saved or if the version is not same as the current version,.
[74] Fix | Delete
if ( ! $version || WP_SMUSH_VERSION !== $version ) {
[75] Fix | Delete
global $wpdb;
[76] Fix | Delete
// Check if there are any existing smush stats.
[77] Fix | Delete
$results = $wpdb->get_var(
[78] Fix | Delete
$wpdb->prepare(
[79] Fix | Delete
"SELECT meta_id FROM {$wpdb->postmeta} WHERE meta_key=%s LIMIT 1",
[80] Fix | Delete
'wp-smpro-smush-data'
[81] Fix | Delete
)
[82] Fix | Delete
); // db call ok; no-cache ok.
[83] Fix | Delete
[84] Fix | Delete
if ( $results || ( isset( $settings['auto'] ) && false !== $settings['auto'] ) ) {
[85] Fix | Delete
update_site_option( 'wp-smush-install-type', 'existing' );
[86] Fix | Delete
}
[87] Fix | Delete
[88] Fix | Delete
// Create directory smush table.
[89] Fix | Delete
self::directory_smush_table();
[90] Fix | Delete
[91] Fix | Delete
// Store the plugin version in db.
[92] Fix | Delete
update_site_option( 'wp-smush-version', WP_SMUSH_VERSION );
[93] Fix | Delete
}
[94] Fix | Delete
}
[95] Fix | Delete
[96] Fix | Delete
/**
[97] Fix | Delete
* Handle plugin upgrades.
[98] Fix | Delete
*
[99] Fix | Delete
* @since 2.8.0
[100] Fix | Delete
*/
[101] Fix | Delete
public static function upgrade_settings() {
[102] Fix | Delete
// Avoid executing this over an over in same thread.
[103] Fix | Delete
if ( defined( 'WP_SMUSH_ACTIVATING' ) || ( defined( 'WP_SMUSH_UPGRADING' ) && WP_SMUSH_UPGRADING ) ) {
[104] Fix | Delete
return;
[105] Fix | Delete
}
[106] Fix | Delete
[107] Fix | Delete
$version = get_site_option( 'wp-smush-version' );
[108] Fix | Delete
[109] Fix | Delete
if ( false === $version ) {
[110] Fix | Delete
self::smush_activated();
[111] Fix | Delete
} else {
[112] Fix | Delete
self::maybe_mark_as_pre_3_12_6_site( $version );
[113] Fix | Delete
}
[114] Fix | Delete
[115] Fix | Delete
if ( false !== $version && WP_SMUSH_VERSION !== $version ) {
[116] Fix | Delete
if ( ! defined( 'WP_SMUSH_UPGRADING' ) ) {
[117] Fix | Delete
define( 'WP_SMUSH_UPGRADING', true );
[118] Fix | Delete
}
[119] Fix | Delete
[120] Fix | Delete
if ( version_compare( $version, '3.7.0', '<' ) ) {
[121] Fix | Delete
self::upgrade_3_7_0();
[122] Fix | Delete
}
[123] Fix | Delete
[124] Fix | Delete
if ( version_compare( $version, '3.8.0', '<' ) ) {
[125] Fix | Delete
// Delete the flag for hiding the BF modal because it was removed.
[126] Fix | Delete
delete_site_option( 'wp-smush-hide_blackfriday_modal' );
[127] Fix | Delete
}
[128] Fix | Delete
[129] Fix | Delete
if ( version_compare( $version, '3.8.3', '<' ) ) {
[130] Fix | Delete
// Delete this unused setting, leftover from old smush.
[131] Fix | Delete
delete_option( 'wp-smush-transparent_png' );
[132] Fix | Delete
}
[133] Fix | Delete
[134] Fix | Delete
if ( version_compare( $version, '3.9.5', '<' ) ) {
[135] Fix | Delete
delete_site_option( 'wp-smush-show-black-friday' );
[136] Fix | Delete
}
[137] Fix | Delete
[138] Fix | Delete
if ( version_compare( $version, '3.9.10', '<' ) ) {
[139] Fix | Delete
self::dir_smush_set_primary_key();
[140] Fix | Delete
}
[141] Fix | Delete
[142] Fix | Delete
if ( version_compare( $version, '3.10.0', '<' ) ) {
[143] Fix | Delete
self::upgrade_3_10_0();
[144] Fix | Delete
}
[145] Fix | Delete
[146] Fix | Delete
if ( version_compare( $version, '3.10.3', '<' ) ) {
[147] Fix | Delete
self::upgrade_3_10_3();
[148] Fix | Delete
}
[149] Fix | Delete
[150] Fix | Delete
if ( version_compare( $version, '3.16.0', '<' ) ) {
[151] Fix | Delete
self::regenerate_preset_configs();
[152] Fix | Delete
}
[153] Fix | Delete
[154] Fix | Delete
$hide_new_feature_highlight_modal = apply_filters( 'wpmudev_branding_hide_doc_link', false );
[155] Fix | Delete
if ( ! $hide_new_feature_highlight_modal && version_compare( $version, '3.16.0', '<' ) ) {
[156] Fix | Delete
// Add the flag to display the new feature background process modal.
[157] Fix | Delete
add_site_option( 'wp-smush-show_upgrade_modal', true );
[158] Fix | Delete
}
[159] Fix | Delete
[160] Fix | Delete
// Create/upgrade directory smush table.
[161] Fix | Delete
self::directory_smush_table();
[162] Fix | Delete
[163] Fix | Delete
// Store the latest plugin version in db.
[164] Fix | Delete
update_site_option( 'wp-smush-version', WP_SMUSH_VERSION );
[165] Fix | Delete
}
[166] Fix | Delete
}
[167] Fix | Delete
[168] Fix | Delete
/**
[169] Fix | Delete
* Create or upgrade custom table for directory Smush.
[170] Fix | Delete
*
[171] Fix | Delete
* After creating or upgrading the custom table, update the path_hash
[172] Fix | Delete
* column value and structure if upgrading from old version.
[173] Fix | Delete
*
[174] Fix | Delete
* @since 2.9.0
[175] Fix | Delete
*/
[176] Fix | Delete
public static function directory_smush_table() {
[177] Fix | Delete
if ( ! class_exists( '\\Smush\\Core\\Modules\\Abstract_Module' ) ) {
[178] Fix | Delete
require_once __DIR__ . '/modules/class-abstract-module.php';
[179] Fix | Delete
}
[180] Fix | Delete
[181] Fix | Delete
if ( ! class_exists( '\\Smush\\Core\\Modules\\Dir' ) ) {
[182] Fix | Delete
require_once __DIR__ . '/modules/class-dir.php';
[183] Fix | Delete
}
[184] Fix | Delete
[185] Fix | Delete
// No need to continue on sub sites.
[186] Fix | Delete
if ( ! Modules\Dir::should_continue() ) {
[187] Fix | Delete
return;
[188] Fix | Delete
}
[189] Fix | Delete
[190] Fix | Delete
// Create a class object, if doesn't exists.
[191] Fix | Delete
if ( ! is_object( WP_Smush::get_instance()->core()->mod->dir ) ) {
[192] Fix | Delete
WP_Smush::get_instance()->core()->mod->dir = new Modules\Dir();
[193] Fix | Delete
}
[194] Fix | Delete
[195] Fix | Delete
// Create/upgrade directory smush table.
[196] Fix | Delete
WP_Smush::get_instance()->core()->mod->dir->create_table();
[197] Fix | Delete
}
[198] Fix | Delete
[199] Fix | Delete
/**
[200] Fix | Delete
* Set primary key for directory smush table on upgrade to 3.9.10.
[201] Fix | Delete
*
[202] Fix | Delete
* @since 3.9.10
[203] Fix | Delete
*/
[204] Fix | Delete
private static function dir_smush_set_primary_key() {
[205] Fix | Delete
global $wpdb;
[206] Fix | Delete
[207] Fix | Delete
// Only call it after creating table smush_dir_images. If the table doesn't exist, returns.
[208] Fix | Delete
if ( ! Modules\Dir::table_exist() ) {
[209] Fix | Delete
return;
[210] Fix | Delete
}
[211] Fix | Delete
[212] Fix | Delete
// If the table is already set the primary key, return.
[213] Fix | Delete
if ( $wpdb->query( $wpdb->prepare( "SHOW INDEXES FROM {$wpdb->base_prefix}smush_dir_images WHERE Key_name = %s;", 'PRIMARY' ) ) ) {
[214] Fix | Delete
return;
[215] Fix | Delete
}
[216] Fix | Delete
[217] Fix | Delete
// Set column ID as a primary key.
[218] Fix | Delete
$wpdb->query( "ALTER TABLE {$wpdb->base_prefix}smush_dir_images ADD PRIMARY KEY (id);" );
[219] Fix | Delete
}
[220] Fix | Delete
[221] Fix | Delete
/**
[222] Fix | Delete
* Check if table needs to be created and create if not exists.
[223] Fix | Delete
*
[224] Fix | Delete
* @since 3.8.6
[225] Fix | Delete
*/
[226] Fix | Delete
public static function maybe_create_table() {
[227] Fix | Delete
if ( ! function_exists( 'get_current_screen' ) ) {
[228] Fix | Delete
return;
[229] Fix | Delete
}
[230] Fix | Delete
[231] Fix | Delete
if ( isset( get_current_screen()->id ) && false === strpos( get_current_screen()->id, 'page_smush' ) ) {
[232] Fix | Delete
return;
[233] Fix | Delete
}
[234] Fix | Delete
[235] Fix | Delete
self::directory_smush_table();
[236] Fix | Delete
}
[237] Fix | Delete
[238] Fix | Delete
/**
[239] Fix | Delete
* Upgrade to 3.7.0
[240] Fix | Delete
*
[241] Fix | Delete
* @since 3.7.0
[242] Fix | Delete
*/
[243] Fix | Delete
private static function upgrade_3_7_0() {
[244] Fix | Delete
delete_site_option( 'wp-smush-run_recheck' );
[245] Fix | Delete
[246] Fix | Delete
// Fix the "None" animation in lazy-load options.
[247] Fix | Delete
$lazy = Settings::get_instance()->get_setting( 'wp-smush-lazy_load' );
[248] Fix | Delete
[249] Fix | Delete
if ( ! $lazy || ! isset( $lazy['animation'] ) || ! isset( $lazy['animation']['selected'] ) ) {
[250] Fix | Delete
return;
[251] Fix | Delete
}
[252] Fix | Delete
[253] Fix | Delete
if ( '0' === $lazy['animation']['selected'] ) {
[254] Fix | Delete
$lazy['animation']['selected'] = 'none';
[255] Fix | Delete
Settings::get_instance()->set_setting( 'wp-smush-lazy_load', $lazy );
[256] Fix | Delete
}
[257] Fix | Delete
}
[258] Fix | Delete
[259] Fix | Delete
/**
[260] Fix | Delete
* Upgrade to 3.10.0
[261] Fix | Delete
*
[262] Fix | Delete
* @since 3.10.0
[263] Fix | Delete
*
[264] Fix | Delete
* @return void
[265] Fix | Delete
*/
[266] Fix | Delete
private static function upgrade_3_10_0() {
[267] Fix | Delete
// Remove unused options.
[268] Fix | Delete
delete_site_option( 'wp-smush-hide_pagespeed_suggestion' );
[269] Fix | Delete
delete_site_option( 'wp-smush-hide_upgrade_notice' );
[270] Fix | Delete
[271] Fix | Delete
// Rename the default config.
[272] Fix | Delete
$stored_configs = get_site_option( 'wp-smush-preset_configs', false );
[273] Fix | Delete
if ( is_array( $stored_configs ) && isset( $stored_configs[0] ) && isset( $stored_configs[0]['name'] ) && 'Basic config' === $stored_configs[0]['name'] ) {
[274] Fix | Delete
$stored_configs[0]['name'] = __( 'Default config', 'wp-smushit' );
[275] Fix | Delete
update_site_option( 'wp-smush-preset_configs', $stored_configs );
[276] Fix | Delete
}
[277] Fix | Delete
[278] Fix | Delete
// Show new features modal for free users.
[279] Fix | Delete
if ( ! WP_Smush::is_pro() ) {
[280] Fix | Delete
if ( is_multisite() && ! Abstract_Page::should_render( 'bulk' ) ) {
[281] Fix | Delete
return;
[282] Fix | Delete
}
[283] Fix | Delete
[284] Fix | Delete
add_site_option( 'wp-smush-show_upgrade_modal', true );
[285] Fix | Delete
}
[286] Fix | Delete
}
[287] Fix | Delete
[288] Fix | Delete
/**
[289] Fix | Delete
* Upgrade 3.10.3
[290] Fix | Delete
*
[291] Fix | Delete
* @since 3.10.3
[292] Fix | Delete
*
[293] Fix | Delete
* @return void
[294] Fix | Delete
*/
[295] Fix | Delete
private static function upgrade_3_10_3() {
[296] Fix | Delete
delete_site_option( 'wp-smush-hide_smush_welcome' );
[297] Fix | Delete
// Logger options.
[298] Fix | Delete
delete_site_option( 'wdev_logger_wp-smush-pro' );
[299] Fix | Delete
delete_site_option( 'wdev_logger_wp-smushit' );
[300] Fix | Delete
// Clean old cronjob (missing callback).
[301] Fix | Delete
if ( wp_next_scheduled( 'wdev_logger_clear_logs' ) ) {
[302] Fix | Delete
wp_clear_scheduled_hook( 'wdev_logger_clear_logs' );
[303] Fix | Delete
}
[304] Fix | Delete
}
[305] Fix | Delete
[306] Fix | Delete
private static function maybe_mark_as_pre_3_12_6_site( $version ) {
[307] Fix | Delete
if ( ! $version || version_compare( $version, '3.12.0', '<' ) || false !== get_site_option( 'wp_smush_pre_3_12_6_site') ) {
[308] Fix | Delete
return;
[309] Fix | Delete
}
[310] Fix | Delete
if ( version_compare( $version, '3.12.5', '>' ) ) {
[311] Fix | Delete
$version = 0;
[312] Fix | Delete
}
[313] Fix | Delete
update_site_option( 'wp_smush_pre_3_12_6_site', $version );
[314] Fix | Delete
}
[315] Fix | Delete
[316] Fix | Delete
private static function regenerate_preset_configs() {
[317] Fix | Delete
// Update Smush mode for display on Configs page.
[318] Fix | Delete
$stored_configs = get_site_option( 'wp-smush-preset_configs', array() );
[319] Fix | Delete
if ( empty( $stored_configs ) || ! is_array( $stored_configs ) ) {
[320] Fix | Delete
return;
[321] Fix | Delete
}
[322] Fix | Delete
[323] Fix | Delete
$configs_handler = new Configs();
[324] Fix | Delete
$new_settings = array(
[325] Fix | Delete
'background_email' => false,
[326] Fix | Delete
);
[327] Fix | Delete
foreach ( $stored_configs as $key => $preset_config ) {
[328] Fix | Delete
if ( empty( $preset_config['config']['configs']['settings'] ) ) {
[329] Fix | Delete
continue;
[330] Fix | Delete
}
[331] Fix | Delete
[332] Fix | Delete
$preset_config ['config']['configs']['settings'] = array_merge( $new_settings, $preset_config['config']['configs']['settings'] );
[333] Fix | Delete
$preset_config ['config'] = $configs_handler->sanitize_and_format_configs( $preset_config['config']['configs'] );
[334] Fix | Delete
$stored_configs[ $key ] = $preset_config;
[335] Fix | Delete
}
[336] Fix | Delete
update_site_option( 'wp-smush-preset_configs', $stored_configs );
[337] Fix | Delete
}
[338] Fix | Delete
}
[339] Fix | Delete
[340] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function