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-core.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* Core class: Core class.
[2] Fix | Delete
*
[3] Fix | Delete
* @since 2.9.0
[4] Fix | Delete
* @package Smush\Core
[5] Fix | Delete
*/
[6] Fix | Delete
[7] Fix | Delete
namespace Smush\Core;
[8] Fix | Delete
[9] Fix | Delete
use Smush\App\Admin;
[10] Fix | Delete
use WP_Smush;
[11] Fix | Delete
[12] Fix | Delete
if ( ! defined( 'WPINC' ) ) {
[13] Fix | Delete
die;
[14] Fix | Delete
}
[15] Fix | Delete
[16] Fix | Delete
/**
[17] Fix | Delete
* Class Core
[18] Fix | Delete
*/
[19] Fix | Delete
class Core extends Stats {
[20] Fix | Delete
[21] Fix | Delete
/**
[22] Fix | Delete
* Animated status.
[23] Fix | Delete
*
[24] Fix | Delete
* @var int
[25] Fix | Delete
*/
[26] Fix | Delete
const STATUS_ANIMATED = 2;
[27] Fix | Delete
[28] Fix | Delete
/**
[29] Fix | Delete
* S3 module
[30] Fix | Delete
*
[31] Fix | Delete
* @var Integrations\S3
[32] Fix | Delete
*/
[33] Fix | Delete
public $s3;
[34] Fix | Delete
[35] Fix | Delete
/**
[36] Fix | Delete
* NextGen module.
[37] Fix | Delete
*
[38] Fix | Delete
* @var Integrations\Nextgen
[39] Fix | Delete
*/
[40] Fix | Delete
public $nextgen;
[41] Fix | Delete
[42] Fix | Delete
/**
[43] Fix | Delete
* Modules array.
[44] Fix | Delete
*
[45] Fix | Delete
* @var Modules
[46] Fix | Delete
*/
[47] Fix | Delete
public $mod;
[48] Fix | Delete
[49] Fix | Delete
/**
[50] Fix | Delete
* Allowed mime types of image.
[51] Fix | Delete
*
[52] Fix | Delete
* @var array $mime_types
[53] Fix | Delete
*/
[54] Fix | Delete
public static $mime_types = array(
[55] Fix | Delete
'image/jpg',
[56] Fix | Delete
'image/jpeg',
[57] Fix | Delete
'image/x-citrix-jpeg',
[58] Fix | Delete
'image/gif',
[59] Fix | Delete
'image/png',
[60] Fix | Delete
'image/x-png',
[61] Fix | Delete
);
[62] Fix | Delete
[63] Fix | Delete
/**
[64] Fix | Delete
* List of external pages where smush needs to be loaded.
[65] Fix | Delete
*
[66] Fix | Delete
* @var array $pages
[67] Fix | Delete
*/
[68] Fix | Delete
public static $external_pages = array(
[69] Fix | Delete
'nggallery-manage-images',
[70] Fix | Delete
'gallery_page_nggallery-manage-gallery',
[71] Fix | Delete
'gallery_page_wp-smush-nextgen-bulk',
[72] Fix | Delete
'nextgen-gallery_page_nggallery-manage-gallery', // Different since NextGen 3.3.6.
[73] Fix | Delete
'nextgen-gallery_page_wp-smush-nextgen-bulk', // Different since NextGen 3.3.6.
[74] Fix | Delete
'post',
[75] Fix | Delete
'post-new',
[76] Fix | Delete
'page',
[77] Fix | Delete
'edit-page',
[78] Fix | Delete
'upload',
[79] Fix | Delete
);
[80] Fix | Delete
[81] Fix | Delete
/**
[82] Fix | Delete
* Attachment IDs which are smushed.
[83] Fix | Delete
*
[84] Fix | Delete
* @var array $smushed_attachments
[85] Fix | Delete
*/
[86] Fix | Delete
public $smushed_attachments = array();
[87] Fix | Delete
[88] Fix | Delete
/**
[89] Fix | Delete
* Unsmushed image IDs.
[90] Fix | Delete
*
[91] Fix | Delete
* @var array $unsmushed_attachments
[92] Fix | Delete
*/
[93] Fix | Delete
public $unsmushed_attachments = array();
[94] Fix | Delete
[95] Fix | Delete
/**
[96] Fix | Delete
* Skipped attachment IDs.
[97] Fix | Delete
*
[98] Fix | Delete
* @since 3.0
[99] Fix | Delete
*
[100] Fix | Delete
* @var array $skipped_attachments
[101] Fix | Delete
*/
[102] Fix | Delete
public $skipped_attachments = array();
[103] Fix | Delete
[104] Fix | Delete
/**
[105] Fix | Delete
* Smushed attachments out of total attachments.
[106] Fix | Delete
*
[107] Fix | Delete
* @var int $smushed_count
[108] Fix | Delete
*/
[109] Fix | Delete
public $smushed_count = 0;
[110] Fix | Delete
[111] Fix | Delete
/**
[112] Fix | Delete
* Smushed attachments out of total attachments.
[113] Fix | Delete
*
[114] Fix | Delete
* @var int $remaining_count
[115] Fix | Delete
*/
[116] Fix | Delete
public $remaining_count = 0;
[117] Fix | Delete
[118] Fix | Delete
/**
[119] Fix | Delete
* Images with errors that have been skipped from bulk smushing.
[120] Fix | Delete
*
[121] Fix | Delete
* @since 3.0
[122] Fix | Delete
* @var int $skipped_count
[123] Fix | Delete
*/
[124] Fix | Delete
public $skipped_count = 0;
[125] Fix | Delete
[126] Fix | Delete
/**
[127] Fix | Delete
* Super Smushed attachments count.
[128] Fix | Delete
*
[129] Fix | Delete
* @var int $super_smushed
[130] Fix | Delete
*/
[131] Fix | Delete
public $super_smushed = 0;
[132] Fix | Delete
[133] Fix | Delete
/**
[134] Fix | Delete
* Total count of attachments for smushing.
[135] Fix | Delete
*
[136] Fix | Delete
* @var int $total_count
[137] Fix | Delete
*/
[138] Fix | Delete
public $total_count = 0;
[139] Fix | Delete
[140] Fix | Delete
/**
[141] Fix | Delete
* Limit for allowed number of images per bulk request.
[142] Fix | Delete
*
[143] Fix | Delete
* This is enforced at api level too.
[144] Fix | Delete
*
[145] Fix | Delete
* @var int
[146] Fix | Delete
*/
[147] Fix | Delete
const MAX_FREE_BULK = 50;
[148] Fix | Delete
[149] Fix | Delete
/**
[150] Fix | Delete
* Initialize modules.
[151] Fix | Delete
*
[152] Fix | Delete
* @since 2.9.0
[153] Fix | Delete
*/
[154] Fix | Delete
protected function init() {
[155] Fix | Delete
$this->mod = new Modules();
[156] Fix | Delete
[157] Fix | Delete
// Enqueue scripts and initialize variables.
[158] Fix | Delete
add_action( 'admin_init', array( $this, 'init_settings' ) );
[159] Fix | Delete
[160] Fix | Delete
// Load integrations.
[161] Fix | Delete
add_action( 'init', array( $this, 'load_integrations' ) );
[162] Fix | Delete
[163] Fix | Delete
// Big image size threshold (WordPress 5.3+).
[164] Fix | Delete
add_filter( 'big_image_size_threshold', array( $this, 'big_image_size_threshold' ), 10 );
[165] Fix | Delete
[166] Fix | Delete
/**
[167] Fix | Delete
* Load NextGen Gallery, instantiate the Async class. if hooked too late or early, auto Smush doesn't
[168] Fix | Delete
* work, also load after settings have been saved on init action.
[169] Fix | Delete
*/
[170] Fix | Delete
add_action( 'plugins_loaded', array( $this, 'load_libs' ), 90 );
[171] Fix | Delete
[172] Fix | Delete
/**
[173] Fix | Delete
* Maybe need to load some modules in REST API mode.
[174] Fix | Delete
* E.g. S3.
[175] Fix | Delete
*/
[176] Fix | Delete
add_action( 'rest_api_init', array( $this, 'load_libs_for_rest_api' ), 99 );
[177] Fix | Delete
}
[178] Fix | Delete
[179] Fix | Delete
/**
[180] Fix | Delete
* Load integrations class.
[181] Fix | Delete
*
[182] Fix | Delete
* @since 2.8.0
[183] Fix | Delete
*/
[184] Fix | Delete
public function load_integrations() {
[185] Fix | Delete
new Integrations\Common();
[186] Fix | Delete
}
[187] Fix | Delete
[188] Fix | Delete
/**
[189] Fix | Delete
* Load plugin modules.
[190] Fix | Delete
*/
[191] Fix | Delete
public function load_libs() {
[192] Fix | Delete
$this->wp_smush_async();
[193] Fix | Delete
[194] Fix | Delete
if ( is_admin() ) {
[195] Fix | Delete
$this->s3 = new Integrations\S3();
[196] Fix | Delete
}
[197] Fix | Delete
[198] Fix | Delete
/**
[199] Fix | Delete
* Load NextGen integration on admin or custom ajax request.
[200] Fix | Delete
*
[201] Fix | Delete
* @since 3.10.0
[202] Fix | Delete
*/
[203] Fix | Delete
if ( is_admin() || defined( 'NGG_AJAX_SLUG' ) && ! empty( $_REQUEST[ NGG_AJAX_SLUG ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
[204] Fix | Delete
$this->nextgen = new Integrations\Nextgen();
[205] Fix | Delete
}
[206] Fix | Delete
[207] Fix | Delete
new Integrations\Gutenberg();
[208] Fix | Delete
new Integrations\Composer();
[209] Fix | Delete
new Integrations\Gravity_Forms();
[210] Fix | Delete
$avada = new Integrations\Avada();
[211] Fix | Delete
$avada->init();
[212] Fix | Delete
$envira = new Integrations\Envira();
[213] Fix | Delete
$envira->init();
[214] Fix | Delete
$hummingbird = new Integrations\Hummingbird_Integration();
[215] Fix | Delete
$hummingbird->init();
[216] Fix | Delete
[217] Fix | Delete
$woo = new Integrations\WooCommerce();
[218] Fix | Delete
$woo->init();
[219] Fix | Delete
[220] Fix | Delete
$amp = new Integrations\AMP_Integration();
[221] Fix | Delete
$amp->init();
[222] Fix | Delete
[223] Fix | Delete
$essential_grid = new Integrations\Essential_Grid_Integration();
[224] Fix | Delete
$essential_grid->init();
[225] Fix | Delete
[226] Fix | Delete
$elementor = new Integrations\Elementor_Integration();
[227] Fix | Delete
$elementor->init();
[228] Fix | Delete
[229] Fix | Delete
// Register logger to schedule cronjob.
[230] Fix | Delete
Helper::logger();
[231] Fix | Delete
}
[232] Fix | Delete
[233] Fix | Delete
/**
[234] Fix | Delete
* Load lib for REST API.
[235] Fix | Delete
*/
[236] Fix | Delete
public function load_libs_for_rest_api() {
[237] Fix | Delete
// Load S3 if there is media REST API.
[238] Fix | Delete
if ( ! Helper::is_non_rest_media() && ! $this->s3 ) {
[239] Fix | Delete
$this->s3 = new Integrations\S3();
[240] Fix | Delete
}
[241] Fix | Delete
}
[242] Fix | Delete
[243] Fix | Delete
/**
[244] Fix | Delete
* Initialize the Smush Async class.
[245] Fix | Delete
*/
[246] Fix | Delete
private function wp_smush_async() {
[247] Fix | Delete
// Check if Async is disabled.
[248] Fix | Delete
if ( defined( 'WP_SMUSH_ASYNC' ) && ! WP_SMUSH_ASYNC ) {
[249] Fix | Delete
return;
[250] Fix | Delete
}
[251] Fix | Delete
[252] Fix | Delete
// Instantiate class.
[253] Fix | Delete
new Modules\Async\Async();
[254] Fix | Delete
[255] Fix | Delete
// Load the Editor Async task only if user logged in or in backend.
[256] Fix | Delete
if ( is_admin() && is_user_logged_in() ) {
[257] Fix | Delete
new Modules\Async\Editor();
[258] Fix | Delete
}
[259] Fix | Delete
}
[260] Fix | Delete
[261] Fix | Delete
/**
[262] Fix | Delete
* Init settings.
[263] Fix | Delete
*/
[264] Fix | Delete
public function init_settings() {
[265] Fix | Delete
// Initialize Image dimensions.
[266] Fix | Delete
$this->mod->smush->image_sizes = $this->image_dimensions();
[267] Fix | Delete
}
[268] Fix | Delete
[269] Fix | Delete
/**
[270] Fix | Delete
* Localize translations.
[271] Fix | Delete
*/
[272] Fix | Delete
public function localize() {
[273] Fix | Delete
global $current_screen;
[274] Fix | Delete
[275] Fix | Delete
$handle = 'smush-admin';
[276] Fix | Delete
[277] Fix | Delete
$upgrade_url = add_query_arg(
[278] Fix | Delete
array(
[279] Fix | Delete
'utm_source' => 'smush',
[280] Fix | Delete
'utm_medium' => 'plugin',
[281] Fix | Delete
'utm_campaign' => 'smush_bulksmush_inline_filesizelimit',
[282] Fix | Delete
),
[283] Fix | Delete
'https://wpmudev.com/project/wp-smush-pro/'
[284] Fix | Delete
);
[285] Fix | Delete
[286] Fix | Delete
$wp_smush_msgs = array(
[287] Fix | Delete
'nonce' => wp_create_nonce( 'wp-smush-ajax' ),
[288] Fix | Delete
'webp_nonce' => wp_create_nonce( 'wp-smush-webp-nonce' ),
[289] Fix | Delete
'settingsUpdated' => esc_html__( 'Your settings have been updated', 'wp-smushit' ),
[290] Fix | Delete
'resmush' => esc_html__( 'Super-Smush', 'wp-smushit' ),
[291] Fix | Delete
'smush_now' => esc_html__( 'Smush Now', 'wp-smushit' ),
[292] Fix | Delete
'error_in_bulk' => esc_html__( '{{smushed}}/{{total}} images smushed successfully, {{errors}} images were not optimized, find out why and how to resolve the issue(s) below.', 'wp-smushit' ),
[293] Fix | Delete
'all_failed' => esc_html__( 'All of your images failed to smush. Find out why and how to resolve the issue(s) below.', 'wp-smushit' ),
[294] Fix | Delete
'all_resmushed' => esc_html__( 'All images are fully optimized.', 'wp-smushit' ),
[295] Fix | Delete
'all_smushed' => esc_html__( 'All attachments have been smushed. Awesome!', 'wp-smushit' ),
[296] Fix | Delete
'error_size_limit' => WP_Smush::is_pro() ? '' : sprintf(
[297] Fix | Delete
/* translators: %1$s - opening a link <a>, %2$s - Close the link </a> */
[298] Fix | Delete
esc_html__( 'Are you hitting the 5MB "size limit exceeded" warning? %1$sUpgrade to Smush Pro%2$s to optimize unlimited image files up to 256Mb each.', 'wp-smushit' ),
[299] Fix | Delete
'<a href="' . esc_url( $upgrade_url ) . '" target="_blank">',
[300] Fix | Delete
'</a>'
[301] Fix | Delete
),
[302] Fix | Delete
'processing_cdn_for_free' => sprintf(
[303] Fix | Delete
/* translators: %d: Number of CDN PoP locations */
[304] Fix | Delete
esc_html__( 'Want to serve images even faster? Get up to 2x more speed with Smush Pro’s CDN, which spans %d servers worldwide.', 'wp-smushit' ),
[305] Fix | Delete
Admin::CDN_POP_LOCATIONS
[306] Fix | Delete
),
[307] Fix | Delete
'processed_cdn_for_free' => sprintf(
[308] Fix | Delete
/* translators: %d: Number of CDN PoP locations */
[309] Fix | Delete
esc_html__( 'Let images reach your audience faster no matter where your hosting servers are. Smush Pro’s global CDN serves images closer to site visitors via %d worldwide server locations.', 'wp-smushit' ),
[310] Fix | Delete
Admin::CDN_POP_LOCATIONS
[311] Fix | Delete
),
[312] Fix | Delete
'restore' => esc_html__( 'Restoring image...', 'wp-smushit' ),
[313] Fix | Delete
'smushing' => esc_html__( 'Smushing image...', 'wp-smushit' ),
[314] Fix | Delete
'btn_ignore' => esc_html__( 'Ignore', 'wp-smushit' ),
[315] Fix | Delete
'view_detail' => esc_html__( 'View Details', 'wp-smushit' ),
[316] Fix | Delete
'membership_valid' => esc_html__( 'We successfully verified your membership, all the Pro features should work completely. ', 'wp-smushit' ),
[317] Fix | Delete
'membership_invalid' => esc_html__( "Your membership couldn't be verified.", 'wp-smushit' ),
[318] Fix | Delete
'missing_path' => esc_html__( 'Missing file path.', 'wp-smushit' ),
[319] Fix | Delete
'failed_item_smushed' => esc_html__( 'Images smushed successfully, No further action required', 'wp-smushit' ),
[320] Fix | Delete
// Used by Directory Smush.
[321] Fix | Delete
'unfinished_smush_single' => esc_html__( 'image could not be smushed.', 'wp-smushit' ),
[322] Fix | Delete
'unfinished_smush' => esc_html__( 'images could not be smushed.', 'wp-smushit' ),
[323] Fix | Delete
'already_optimised' => esc_html__( 'Already Optimized', 'wp-smushit' ),
[324] Fix | Delete
'ajax_error' => esc_html__( 'Ajax Error', 'wp-smushit' ),
[325] Fix | Delete
'generic_ajax_error' => esc_html__( 'Something went wrong with the request. Please reload the page and try again.', 'wp-smushit' ),
[326] Fix | Delete
'all_done' => esc_html__( 'All Done!', 'wp-smushit' ),
[327] Fix | Delete
'sync_stats' => esc_html__( 'Give us a moment while we sync the stats.', 'wp-smushit' ),
[328] Fix | Delete
// Progress bar text.
[329] Fix | Delete
'progress_smushed' => esc_html__( 'images optimized', 'wp-smushit' ),
[330] Fix | Delete
'bulk_resume' => esc_html__( 'Resume scan', 'wp-smushit' ),
[331] Fix | Delete
'bulk_stop' => esc_html__( 'Stop current bulk smush process.', 'wp-smushit' ),
[332] Fix | Delete
// Errors.
[333] Fix | Delete
'error_ignore' => esc_html__( 'Ignore this image from bulk smushing', 'wp-smushit' ),
[334] Fix | Delete
// Ignore text.
[335] Fix | Delete
'ignored' => esc_html__( 'Ignored', 'wp-smushit' ),
[336] Fix | Delete
'not_processed' => esc_html__( 'Not processed', 'wp-smushit' ),
[337] Fix | Delete
// Notices.
[338] Fix | Delete
'noticeDismiss' => esc_html__( 'Dismiss', 'wp-smushit' ),
[339] Fix | Delete
'noticeDismissTooltip' => esc_html__( 'Dismiss notice', 'wp-smushit' ),
[340] Fix | Delete
'tutorialsRemoved' => sprintf( /* translators: %1$s - opening a tag, %2$s - closing a tag */
[341] Fix | Delete
esc_html__( 'The widget has been removed. Smush tutorials can still be found in the %1$sTutorials tab%2$s any time.', 'wp-smushit' ),
[342] Fix | Delete
'<a href=' . esc_url( menu_page_url( 'smush-tutorials', false ) ) . '>',
[343] Fix | Delete
'</a>'
[344] Fix | Delete
),
[345] Fix | Delete
'smush_cdn_activation_notice' => WP_Smush::is_pro() && ! Settings::get_instance()->is_cdn_active() ?
[346] Fix | Delete
sprintf(
[347] Fix | Delete
/* translators: 1 - Number of CDN PoP locations, 2 - opening a tag, 3 - closing a tag */
[348] Fix | Delete
esc_html__( 'Activate Smush CDN to bulk smush and serve animated GIF’s via %1$d worldwide locations. %2$sActivate CDN%3$s', 'wp-smushit' ),
[349] Fix | Delete
Admin::CDN_POP_LOCATIONS,
[350] Fix | Delete
'<a href="' . esc_url( network_admin_url( 'admin.php?page=smush-cdn' ) ) . '" />',
[351] Fix | Delete
'</a>'
[352] Fix | Delete
) :
[353] Fix | Delete
'',
[354] Fix | Delete
// URLs.
[355] Fix | Delete
'smush_url' => network_admin_url( 'admin.php?page=smush' ),
[356] Fix | Delete
'bulk_smush_url' => network_admin_url( 'admin.php?page=smush-bulk' ),
[357] Fix | Delete
'directory_url' => network_admin_url( 'admin.php?page=smush-directory' ),
[358] Fix | Delete
'localWebpURL' => network_admin_url( 'admin.php?page=smush-webp' ),
[359] Fix | Delete
'edit_link' => Helper::get_image_media_link( '{{id}}', null, true ),
[360] Fix | Delete
'debug_mode' => defined( 'WP_DEBUG' ) && WP_DEBUG,
[361] Fix | Delete
'cancel' => esc_html__( 'Cancel', 'wp-smushit' ),
[362] Fix | Delete
'cancelling' => esc_html__( 'Cancelling ...', 'wp-smushit' ),
[363] Fix | Delete
'recheck_images_link' => Helper::get_recheck_images_link(),
[364] Fix | Delete
);
[365] Fix | Delete
[366] Fix | Delete
wp_localize_script( $handle, 'wp_smush_msgs', $wp_smush_msgs );
[367] Fix | Delete
[368] Fix | Delete
if ( 'toplevel_page_smush' === $current_screen->id ) {
[369] Fix | Delete
$slug = 'dashboard';
[370] Fix | Delete
} else {
[371] Fix | Delete
$slug = explode( 'page_smush-', $current_screen->id );
[372] Fix | Delete
$slug = isset( $slug[1] ) ? $slug[1] : false;
[373] Fix | Delete
}
[374] Fix | Delete
[375] Fix | Delete
// Load the stats on selected screens only.
[376] Fix | Delete
if ( $slug && isset( WP_Smush::get_instance()->admin()->pages[ $slug ] ) && method_exists( WP_Smush::get_instance()->admin()->pages[ $slug ], 'dashboard_summary_meta_box' ) ) {
[377] Fix | Delete
// Get resmush list, If we have a resmush list already, localize those IDs.
[378] Fix | Delete
$resmush_ids = $this->get_resmush_ids();
[379] Fix | Delete
if ( $resmush_ids ) {
[380] Fix | Delete
// Get the attachments, and get lossless count.
[381] Fix | Delete
$this->resmush_ids = $resmush_ids;
[382] Fix | Delete
}
[383] Fix | Delete
[384] Fix | Delete
// Get attachments if all the images are not smushed.
[385] Fix | Delete
$this->unsmushed_attachments = $this->remaining_count > 0 ? $this->get_unsmushed_attachments() : array();
[386] Fix | Delete
$this->unsmushed_attachments = ! empty( $this->unsmushed_attachments ) && is_array( $this->unsmushed_attachments ) ? array_values( $this->unsmushed_attachments ) : $this->unsmushed_attachments;
[387] Fix | Delete
[388] Fix | Delete
$data = $this->get_global_stats();
[389] Fix | Delete
} else {
[390] Fix | Delete
$data = array(
[391] Fix | Delete
'count_supersmushed' => '',
[392] Fix | Delete
'count_smushed' => '',
[393] Fix | Delete
'count_total' => '',
[394] Fix | Delete
'count_images' => '',
[395] Fix | Delete
'unsmushed' => '',
[396] Fix | Delete
'resmush' => '',
[397] Fix | Delete
'savings_bytes' => '',
[398] Fix | Delete
'savings_resize' => '',
[399] Fix | Delete
'savings_conversion' => '',
[400] Fix | Delete
'savings_supersmush' => '',
[401] Fix | Delete
'savings_percent' => '',
[402] Fix | Delete
'percent_grade' => '',
[403] Fix | Delete
'percent_metric' => '',
[404] Fix | Delete
'percent_optimized' => '',
[405] Fix | Delete
);
[406] Fix | Delete
}
[407] Fix | Delete
[408] Fix | Delete
// Check if scanner class is available.
[409] Fix | Delete
$scanner_ready = isset( $this->mod->dir->scanner );
[410] Fix | Delete
[411] Fix | Delete
$data['dir_smush'] = array(
[412] Fix | Delete
'currentScanStep' => $scanner_ready ? $this->mod->dir->scanner->get_current_scan_step() : 0,
[413] Fix | Delete
'totalSteps' => $scanner_ready ? $this->mod->dir->scanner->get_scan_steps() : 0,
[414] Fix | Delete
);
[415] Fix | Delete
[416] Fix | Delete
$data['resize_sizes'] = $this->get_max_image_dimensions();
[417] Fix | Delete
[418] Fix | Delete
// Convert it into ms.
[419] Fix | Delete
$data['timeout'] = WP_SMUSH_TIMEOUT * 1000;
[420] Fix | Delete
[421] Fix | Delete
wp_localize_script( $handle, 'wp_smushit_data', apply_filters( 'wp_smush_script_data', $data ) );
[422] Fix | Delete
}
[423] Fix | Delete
[424] Fix | Delete
/**
[425] Fix | Delete
* Check bulk sent count, whether to allow further smushing or not
[426] Fix | Delete
*
[427] Fix | Delete
* @param bool $reset To hard reset the transient.
[428] Fix | Delete
* @param string $key Transient Key - bulk_sent_count/dir_sent_count.
[429] Fix | Delete
*
[430] Fix | Delete
* TODO: remove this (and all related code) because the limit has been lifted in 3.12.0
[431] Fix | Delete
*
[432] Fix | Delete
* @return bool
[433] Fix | Delete
*/
[434] Fix | Delete
public static function check_bulk_limit( $reset = false, $key = 'bulk_sent_count' ) {
[435] Fix | Delete
$is_pre_3_12_6_site = get_site_option( 'wp_smush_pre_3_12_6_site' );
[436] Fix | Delete
if ( $is_pre_3_12_6_site ) {
[437] Fix | Delete
return true;
[438] Fix | Delete
}
[439] Fix | Delete
[440] Fix | Delete
$transient_name = 'wp-smush-' . $key;
[441] Fix | Delete
[442] Fix | Delete
// If we JUST need to reset the transient.
[443] Fix | Delete
if ( $reset ) {
[444] Fix | Delete
set_transient( $transient_name, 0, 60 );
[445] Fix | Delete
return false;
[446] Fix | Delete
}
[447] Fix | Delete
[448] Fix | Delete
$bulk_sent_count = (int) get_transient( $transient_name );
[449] Fix | Delete
[450] Fix | Delete
// Check if bulk smush limit is less than limit.
[451] Fix | Delete
if ( ! $bulk_sent_count || $bulk_sent_count < self::MAX_FREE_BULK ) {
[452] Fix | Delete
$continue = true;
[453] Fix | Delete
} elseif ( $bulk_sent_count === self::MAX_FREE_BULK ) {
[454] Fix | Delete
// If user has reached the limit, reset the transient.
[455] Fix | Delete
$continue = false;
[456] Fix | Delete
$reset = true;
[457] Fix | Delete
} else {
[458] Fix | Delete
$continue = false;
[459] Fix | Delete
}
[460] Fix | Delete
[461] Fix | Delete
// If we need to reset the transient.
[462] Fix | Delete
if ( $reset ) {
[463] Fix | Delete
set_transient( $transient_name, 0, 60 );
[464] Fix | Delete
}
[465] Fix | Delete
[466] Fix | Delete
return $continue;
[467] Fix | Delete
}
[468] Fix | Delete
[469] Fix | Delete
/**
[470] Fix | Delete
* Get registered image sizes with dimension
[471] Fix | Delete
*
[472] Fix | Delete
* @return array
[473] Fix | Delete
*/
[474] Fix | Delete
public function image_dimensions() {
[475] Fix | Delete
return Helper::get_image_sizes();
[476] Fix | Delete
}
[477] Fix | Delete
[478] Fix | Delete
/**
[479] Fix | Delete
* Get the Maximum Width and Height settings for WrodPress
[480] Fix | Delete
*
[481] Fix | Delete
* @return array, Array of Max. Width and Height for image.
[482] Fix | Delete
*/
[483] Fix | Delete
public function get_max_image_dimensions() {
[484] Fix | Delete
global $_wp_additional_image_sizes;
[485] Fix | Delete
[486] Fix | Delete
$width = 0;
[487] Fix | Delete
$height = 0;
[488] Fix | Delete
$limit = 9999; // Post-thumbnail.
[489] Fix | Delete
[490] Fix | Delete
$image_sizes = get_intermediate_image_sizes();
[491] Fix | Delete
[492] Fix | Delete
// If image sizes are filtered and no image size list is returned.
[493] Fix | Delete
if ( empty( $image_sizes ) ) {
[494] Fix | Delete
return array(
[495] Fix | Delete
'width' => $width,
[496] Fix | Delete
'height' => $height,
[497] Fix | Delete
);
[498] Fix | Delete
}
[499] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function