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/clone/wp-conte.../plugins/wp-smush.../core
File: class-settings.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* Smush Settings class: Settings
[2] Fix | Delete
*
[3] Fix | Delete
* @since 3.0 Migrated from old settings class.
[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\Core\CDN\CDN_Helper;
[10] Fix | Delete
use Smush\Core\Stats\Global_Stats;
[11] Fix | Delete
use WP_Smush;
[12] Fix | Delete
[13] Fix | Delete
if ( ! defined( 'WPINC' ) ) {
[14] Fix | Delete
die;
[15] Fix | Delete
}
[16] Fix | Delete
[17] Fix | Delete
/**
[18] Fix | Delete
* Class Settings
[19] Fix | Delete
*
[20] Fix | Delete
* @since 3.0
[21] Fix | Delete
*/
[22] Fix | Delete
class Settings {
[23] Fix | Delete
[24] Fix | Delete
const SUBSITE_CONTROLS_OPTION_KEY = 'wp-smush-networkwide';
[25] Fix | Delete
const SETTINGS_KEY = 'wp-smush-settings';
[26] Fix | Delete
const LEVEL_LOSSLESS = 0;
[27] Fix | Delete
const LEVEL_SUPER_LOSSY = 1;
[28] Fix | Delete
const LEVEL_ULTRA_LOSSY = 2;
[29] Fix | Delete
[30] Fix | Delete
/**
[31] Fix | Delete
* Plugin instance.
[32] Fix | Delete
*
[33] Fix | Delete
* @since 3.0
[34] Fix | Delete
*
[35] Fix | Delete
* @var null|Settings
[36] Fix | Delete
*/
[37] Fix | Delete
private static $instance = null;
[38] Fix | Delete
[39] Fix | Delete
/**
[40] Fix | Delete
* Settings array.
[41] Fix | Delete
*
[42] Fix | Delete
* @since 3.2.2
[43] Fix | Delete
* @var array $settings
[44] Fix | Delete
*/
[45] Fix | Delete
private $settings = array();
[46] Fix | Delete
[47] Fix | Delete
/**
[48] Fix | Delete
* Default settings array.
[49] Fix | Delete
*
[50] Fix | Delete
* We don't want it to be edited directly, so we use public get_*, set_* and delete_* methods.
[51] Fix | Delete
*
[52] Fix | Delete
* @since 3.0 Improved structure.
[53] Fix | Delete
* @since 3.2.2 Changed to be a default array.
[54] Fix | Delete
* @since 3.8.0 Added webp_mod.
[55] Fix | Delete
*
[56] Fix | Delete
* @var array
[57] Fix | Delete
*/
[58] Fix | Delete
private $defaults = array(
[59] Fix | Delete
'auto' => true, // works with CDN.
[60] Fix | Delete
'lossy' => 0, // works with CDN.
[61] Fix | Delete
'strip_exif' => true, // works with CDN.
[62] Fix | Delete
'resize' => false,
[63] Fix | Delete
'detection' => false,
[64] Fix | Delete
'original' => false,
[65] Fix | Delete
'backup' => false,
[66] Fix | Delete
'no_scale' => false,
[67] Fix | Delete
'png_to_jpg' => false, // works with CDN.
[68] Fix | Delete
'nextgen' => false,
[69] Fix | Delete
's3' => false,
[70] Fix | Delete
'gutenberg' => false,
[71] Fix | Delete
'js_builder' => false,
[72] Fix | Delete
'gform' => false,
[73] Fix | Delete
'cdn' => false,
[74] Fix | Delete
'auto_resize' => false,
[75] Fix | Delete
'webp' => true,
[76] Fix | Delete
'usage' => false,
[77] Fix | Delete
'accessible_colors' => false,
[78] Fix | Delete
'keep_data' => true,
[79] Fix | Delete
'lazy_load' => false,
[80] Fix | Delete
'background_images' => true,
[81] Fix | Delete
'rest_api_support' => false, // CDN option.
[82] Fix | Delete
'webp_mod' => false, // WebP module.
[83] Fix | Delete
'background_email' => false,
[84] Fix | Delete
'webp_direct_conversion' => false,
[85] Fix | Delete
'webp_fallback' => false,
[86] Fix | Delete
);
[87] Fix | Delete
[88] Fix | Delete
/**
[89] Fix | Delete
* Available modules.
[90] Fix | Delete
*
[91] Fix | Delete
* @since 3.2.2
[92] Fix | Delete
* @since 3.8.0 Added webp.
[93] Fix | Delete
* @var array $modules
[94] Fix | Delete
*/
[95] Fix | Delete
private $modules = array( 'bulk', 'integrations', 'lazy_load', 'cdn', 'webp', 'settings' );
[96] Fix | Delete
[97] Fix | Delete
/**
[98] Fix | Delete
* List of features/settings that are free.
[99] Fix | Delete
*
[100] Fix | Delete
* @var array $basic_features
[101] Fix | Delete
*/
[102] Fix | Delete
public static $basic_features = array( 'bulk', 'auto', 'strip_exif', 'resize', 'original', 'gutenberg', 'js_builder', 'gform', 'lazy_load', 'lossy' );
[103] Fix | Delete
[104] Fix | Delete
/**
[105] Fix | Delete
* List of fields in bulk smush form.
[106] Fix | Delete
*
[107] Fix | Delete
* @used-by save_settings()
[108] Fix | Delete
*
[109] Fix | Delete
* @var array
[110] Fix | Delete
*/
[111] Fix | Delete
private $bulk_fields = array( 'lossy', 'bulk', 'auto', 'strip_exif', 'resize', 'original', 'backup', 'png_to_jpg', 'no_scale', 'background_email' );
[112] Fix | Delete
[113] Fix | Delete
/**
[114] Fix | Delete
* @since 3.12.6
[115] Fix | Delete
*
[116] Fix | Delete
* Upsell fields.
[117] Fix | Delete
*/
[118] Fix | Delete
private $upsell_fields = array( 'background_email' );
[119] Fix | Delete
[120] Fix | Delete
/**
[121] Fix | Delete
* List of fields in integration form.
[122] Fix | Delete
*
[123] Fix | Delete
* @used-by save_settings()
[124] Fix | Delete
*
[125] Fix | Delete
* @var array
[126] Fix | Delete
*/
[127] Fix | Delete
private $integrations_fields = array( 'gutenberg', 'gform', 'js_builder', 's3', 'nextgen' );
[128] Fix | Delete
[129] Fix | Delete
/**
[130] Fix | Delete
* List of fields in CDN form.
[131] Fix | Delete
*
[132] Fix | Delete
* @used-by save_settings()
[133] Fix | Delete
*
[134] Fix | Delete
* @var array
[135] Fix | Delete
*/
[136] Fix | Delete
private $cdn_fields = array( 'cdn', 'background_images', 'auto_resize', 'webp', 'rest_api_support' );
[137] Fix | Delete
[138] Fix | Delete
/**
[139] Fix | Delete
* List of fields in CDN form.
[140] Fix | Delete
*
[141] Fix | Delete
* @used-by save_settings()
[142] Fix | Delete
*
[143] Fix | Delete
* @since 3.8.0
[144] Fix | Delete
*
[145] Fix | Delete
* @var array
[146] Fix | Delete
*/
[147] Fix | Delete
private $webp_fields = array( 'webp_mod', 'webp_direct_conversion', 'webp_fallback' );
[148] Fix | Delete
[149] Fix | Delete
/**
[150] Fix | Delete
* List of fields in Settings form.
[151] Fix | Delete
*
[152] Fix | Delete
* @used-by save_settings()
[153] Fix | Delete
*
[154] Fix | Delete
* @var array
[155] Fix | Delete
*/
[156] Fix | Delete
private $settings_fields = array( 'detection', 'accessible_colors', 'usage', 'keep_data', 'api_auth' );
[157] Fix | Delete
[158] Fix | Delete
/**
[159] Fix | Delete
* List of fields in lazy loading form.
[160] Fix | Delete
*
[161] Fix | Delete
* @used-by save_settings()
[162] Fix | Delete
*
[163] Fix | Delete
* @var array
[164] Fix | Delete
*/
[165] Fix | Delete
private $lazy_load_fields = array( 'lazy_load' );
[166] Fix | Delete
[167] Fix | Delete
/**
[168] Fix | Delete
* @var array
[169] Fix | Delete
*/
[170] Fix | Delete
private $activated_subsite_pages;
[171] Fix | Delete
[172] Fix | Delete
/**
[173] Fix | Delete
* Return the plugin instance.
[174] Fix | Delete
*
[175] Fix | Delete
* @since 3.0
[176] Fix | Delete
*
[177] Fix | Delete
* @return Settings
[178] Fix | Delete
*/
[179] Fix | Delete
public static function get_instance() {
[180] Fix | Delete
if ( ! self::$instance ) {
[181] Fix | Delete
self::$instance = new self();
[182] Fix | Delete
}
[183] Fix | Delete
[184] Fix | Delete
return self::$instance;
[185] Fix | Delete
}
[186] Fix | Delete
[187] Fix | Delete
/**
[188] Fix | Delete
* WP_Smush_Settings constructor.
[189] Fix | Delete
*/
[190] Fix | Delete
private function __construct() {
[191] Fix | Delete
// Do not initialize if not in admin area
[192] Fix | Delete
// wp_head runs specifically in the frontend, good check to make sure we're accidentally not loading settings on required pages.
[193] Fix | Delete
if ( ! is_admin() && ! wp_doing_ajax() && did_action( 'wp_head' ) ) {
[194] Fix | Delete
return;
[195] Fix | Delete
}
[196] Fix | Delete
[197] Fix | Delete
// Save Settings.
[198] Fix | Delete
add_action( 'wp_ajax_smush_save_settings', array( $this, 'save_settings' ) );
[199] Fix | Delete
// Reset Settings.
[200] Fix | Delete
add_action( 'wp_ajax_reset_settings', array( $this, 'reset' ) );
[201] Fix | Delete
[202] Fix | Delete
add_filter( 'wp_smush_settings', array( $this, 'remove_unavailable' ) );
[203] Fix | Delete
[204] Fix | Delete
add_action( 'switch_blog', array( $this, 'maybe_reset_cache_site_settings' ), 10, 2 );
[205] Fix | Delete
[206] Fix | Delete
$this->init();
[207] Fix | Delete
}
[208] Fix | Delete
[209] Fix | Delete
/**
[210] Fix | Delete
* Remove settings that are not available on a specific version of WordPress.
[211] Fix | Delete
*
[212] Fix | Delete
* @since 3.9.1
[213] Fix | Delete
*
[214] Fix | Delete
* @param array $settings Current settings.
[215] Fix | Delete
*
[216] Fix | Delete
* @return array
[217] Fix | Delete
*/
[218] Fix | Delete
public function remove_unavailable( $settings ) {
[219] Fix | Delete
global $wp_version;
[220] Fix | Delete
[221] Fix | Delete
if ( version_compare( $wp_version, '5.3', '<' ) ) {
[222] Fix | Delete
if ( isset( $this->bulk_fields['no_scale'] ) ) {
[223] Fix | Delete
unset( $this->bulk_fields['no_scale'] );
[224] Fix | Delete
}
[225] Fix | Delete
[226] Fix | Delete
if ( isset( $settings['no_scale'] ) ) {
[227] Fix | Delete
unset( $settings['no_scale'] );
[228] Fix | Delete
}
[229] Fix | Delete
}
[230] Fix | Delete
[231] Fix | Delete
return $settings;
[232] Fix | Delete
}
[233] Fix | Delete
[234] Fix | Delete
/**
[235] Fix | Delete
* Get descriptions for all settings.
[236] Fix | Delete
*
[237] Fix | Delete
* @since 3.8.6 Moved from Core
[238] Fix | Delete
*
[239] Fix | Delete
* @param string $id Setting ID to get data for.
[240] Fix | Delete
* @param string $type What value to get. Accepts: label, short_label or desc.
[241] Fix | Delete
*
[242] Fix | Delete
* @return string
[243] Fix | Delete
*/
[244] Fix | Delete
public static function get_setting_data( $id, $type = '' ) {
[245] Fix | Delete
$bg_optimization = WP_Smush::get_instance()->core()->mod->bg_optimization;
[246] Fix | Delete
if ( $bg_optimization->can_use_background() ) {
[247] Fix | Delete
$bg_email_desc = esc_html__( 'Be notified via email about the bulk smush status when the process has completed.', 'wp-smushit' );
[248] Fix | Delete
} else {
[249] Fix | Delete
$bg_email_desc = sprintf(
[250] Fix | Delete
/* translators: %s Email address */
[251] Fix | Delete
esc_html__( "Be notified via email about the bulk smush status when the process has completed. You'll receive an email at %s.", 'wp-smushit' ),
[252] Fix | Delete
'<strong>' . $bg_optimization->get_mail_recipient() . '</strong>'
[253] Fix | Delete
);
[254] Fix | Delete
}
[255] Fix | Delete
$settings = array(
[256] Fix | Delete
'background_email' => array(
[257] Fix | Delete
'label' => esc_html__( 'Enable email notification', 'wp-smushit' ),
[258] Fix | Delete
'short_label' => esc_html__( 'Email Notification', 'wp-smushit' ),
[259] Fix | Delete
'desc' => $bg_email_desc,
[260] Fix | Delete
),
[261] Fix | Delete
'bulk' => array(
[262] Fix | Delete
'short_label' => esc_html__( 'Image Sizes', 'wp-smushit' ),
[263] Fix | Delete
'desc' => esc_html__( 'WordPress generates multiple image thumbnails for each image you upload. Choose which of those thumbnail sizes you want to include when bulk smushing.', 'wp-smushit' ),
[264] Fix | Delete
),
[265] Fix | Delete
'auto' => array(
[266] Fix | Delete
'label' => esc_html__( 'Automatically compress my images on upload', 'wp-smushit' ),
[267] Fix | Delete
'short_label' => esc_html__( 'Automatic compression', 'wp-smushit' ),
[268] Fix | Delete
'desc' => esc_html__( 'When you upload images to your site, we will automatically optimize and compress them for you.', 'wp-smushit' ),
[269] Fix | Delete
),
[270] Fix | Delete
'lossy' => array(
[271] Fix | Delete
'label' => esc_html__( 'Choose Compression Level', 'wp-smushit' ),
[272] Fix | Delete
'short_label' => esc_html__( 'Smush Mode', 'wp-smushit' ),
[273] Fix | Delete
'desc' => sprintf(
[274] Fix | Delete
/* translators: 1: Opening <strong> 2: Closing </strong> */
[275] Fix | Delete
esc_html__( 'Choose the level of compression that suits your needs. We recommend %1$sUltra%2$s for faster sites and impressive image quality.', 'wp-smushit' ),
[276] Fix | Delete
'<strong>',
[277] Fix | Delete
'</strong>'
[278] Fix | Delete
),
[279] Fix | Delete
),
[280] Fix | Delete
'strip_exif' => array(
[281] Fix | Delete
'label' => esc_html__( 'Strip my image metadata', 'wp-smushit' ),
[282] Fix | Delete
'short_label' => esc_html__( 'Metadata', 'wp-smushit' ),
[283] Fix | Delete
'desc' => esc_html__( 'Photos often store camera settings in the file, i.e., focal length, date, time and location. Removing EXIF data reduces the file size. Note: it does not strip SEO metadata.', 'wp-smushit' ),
[284] Fix | Delete
),
[285] Fix | Delete
'resize' => array(
[286] Fix | Delete
'label' => esc_html__( 'Resize original images', 'wp-smushit' ),
[287] Fix | Delete
'short_label' => esc_html__( 'Image Resizing', 'wp-smushit' ),
[288] Fix | Delete
'desc' => esc_html__( 'As of version 5.3, WordPress creates a scaled version of uploaded images over 2560x2560px by default, and keeps your original uploaded images as a backup. If desired, you can choose a different resizing threshold or disable the scaled images altogether.', 'wp-smushit' ),
[289] Fix | Delete
),
[290] Fix | Delete
'no_scale' => array(
[291] Fix | Delete
'label' => esc_html__( 'Disable scaled images', 'wp-smushit' ),
[292] Fix | Delete
'short_label' => esc_html__( 'Disable Scaled Images', 'wp-smushit' ),
[293] Fix | Delete
'desc' => esc_html__( 'Enable this feature to disable automatic resizing of images above the threshold, keeping only your original uploaded images. Note: WordPress excludes PNG images from automatic image resizing. As a result, only uploaded JPEG images are affected by these settings.', 'wp-smushit' ),
[294] Fix | Delete
),
[295] Fix | Delete
'detection' => array(
[296] Fix | Delete
'label' => esc_html__( 'Detect and show incorrectly sized images', 'wp-smushit' ),
[297] Fix | Delete
'short_label' => esc_html__( 'Image Resize Detection', 'wp-smushit' ),
[298] Fix | Delete
'desc' => esc_html__( 'This will add functionality to your website that highlights images that are either too large or too small for their containers.', 'wp-smushit' ),
[299] Fix | Delete
),
[300] Fix | Delete
'original' => array(
[301] Fix | Delete
'label' => esc_html__( 'Optimize original images', 'wp-smushit' ),
[302] Fix | Delete
'short_label' => esc_html__( 'Original Images', 'wp-smushit' ),
[303] Fix | Delete
'desc' => esc_html__( 'Choose how you want Smush to handle the original image file when you run a bulk smush.', 'wp-smushit' ),
[304] Fix | Delete
),
[305] Fix | Delete
'backup' => array(
[306] Fix | Delete
'label' => esc_html__( 'Backup original images', 'wp-smushit' ),
[307] Fix | Delete
'short_label' => esc_html__( 'Backup Original Images', 'wp-smushit' ),
[308] Fix | Delete
'desc' => esc_html__( 'Enable this feature to save a copy of your original images so you can restore them at any point. Note: Keeping a copy of the original images can significantly increase the size of your uploads folder.', 'wp-smushit' ),
[309] Fix | Delete
),
[310] Fix | Delete
'png_to_jpg' => array(
[311] Fix | Delete
'label' => esc_html__( 'Auto-convert PNGs to JPEGs (lossy)', 'wp-smushit' ),
[312] Fix | Delete
'short_label' => esc_html__( 'PNG to JPEG Conversion', 'wp-smushit' ),
[313] Fix | Delete
'desc' => esc_html__( 'When you compress a PNG, Smush will check if converting it to JPEG could further reduce its size.', 'wp-smushit' ),
[314] Fix | Delete
),
[315] Fix | Delete
'accessible_colors' => array(
[316] Fix | Delete
'label' => esc_html__( 'Enable high contrast mode', 'wp-smushit' ),
[317] Fix | Delete
'short_label' => esc_html__( 'Color Accessibility', 'wp-smushit' ),
[318] Fix | Delete
'desc' => esc_html__( 'Increase the visibility and accessibility of elements and components to meet WCAG AAA requirements.', 'wp-smushit' ),
[319] Fix | Delete
),
[320] Fix | Delete
'usage' => array(
[321] Fix | Delete
'label' => esc_html__( 'Allow usage tracking', 'wp-smushit' ),
[322] Fix | Delete
'short_label' => esc_html__( 'Usage Tracking', 'wp-smushit' ),
[323] Fix | Delete
'desc' => esc_html__( 'Help make Smush better by letting our designers learn how you’re using the plugin.', 'wp-smushit' ),
[324] Fix | Delete
),
[325] Fix | Delete
);
[326] Fix | Delete
[327] Fix | Delete
/**
[328] Fix | Delete
* Allow adding other settings via filtering the variable
[329] Fix | Delete
*
[330] Fix | Delete
* Like Nextgen and S3 integration
[331] Fix | Delete
*/
[332] Fix | Delete
$settings = apply_filters( 'wp_smush_settings', $settings );
[333] Fix | Delete
[334] Fix | Delete
if ( ! isset( $settings[ $id ] ) ) {
[335] Fix | Delete
return '';
[336] Fix | Delete
}
[337] Fix | Delete
[338] Fix | Delete
if ( 'short-label' === $type ) {
[339] Fix | Delete
return ! empty( $settings[ $id ]['short_label'] ) ? $settings[ $id ]['short_label'] : $settings[ $id ]['label'];
[340] Fix | Delete
}
[341] Fix | Delete
[342] Fix | Delete
if ( 'label' === $type ) {
[343] Fix | Delete
return ! empty( $settings[ $id ]['label'] ) ? $settings[ $id ]['label'] : $settings[ $id ]['short_label'];
[344] Fix | Delete
}
[345] Fix | Delete
[346] Fix | Delete
if ( 'desc' === $type ) {
[347] Fix | Delete
return $settings[ $id ]['desc'];
[348] Fix | Delete
}
[349] Fix | Delete
[350] Fix | Delete
return $settings[ $id ];
[351] Fix | Delete
}
[352] Fix | Delete
[353] Fix | Delete
/**
[354] Fix | Delete
* Getter method for bulk settings fields.
[355] Fix | Delete
*
[356] Fix | Delete
* @since 3.2.2
[357] Fix | Delete
* @return array
[358] Fix | Delete
*/
[359] Fix | Delete
public function get_bulk_fields() {
[360] Fix | Delete
return $this->bulk_fields;
[361] Fix | Delete
}
[362] Fix | Delete
[363] Fix | Delete
/**
[364] Fix | Delete
* Getter method for integration fields.
[365] Fix | Delete
*
[366] Fix | Delete
* @since 3.2.2
[367] Fix | Delete
* @return array
[368] Fix | Delete
*/
[369] Fix | Delete
public function get_integrations_fields() {
[370] Fix | Delete
return $this->integrations_fields;
[371] Fix | Delete
}
[372] Fix | Delete
[373] Fix | Delete
/**
[374] Fix | Delete
* Getter method for CDN fields.
[375] Fix | Delete
*
[376] Fix | Delete
* @since 3.2.2
[377] Fix | Delete
* @return array
[378] Fix | Delete
*/
[379] Fix | Delete
public function get_cdn_fields() {
[380] Fix | Delete
return $this->cdn_fields;
[381] Fix | Delete
}
[382] Fix | Delete
[383] Fix | Delete
public function is_upsell_field( $field ) {
[384] Fix | Delete
return in_array( $field, $this->upsell_fields, true );
[385] Fix | Delete
}
[386] Fix | Delete
[387] Fix | Delete
public function is_pro_field( $field ) {
[388] Fix | Delete
return ! in_array( $field, self::$basic_features, true );
[389] Fix | Delete
}
[390] Fix | Delete
[391] Fix | Delete
public function can_access_pro_field( $field ) {
[392] Fix | Delete
if ( WP_Smush::is_pro() ) {
[393] Fix | Delete
return true;
[394] Fix | Delete
}
[395] Fix | Delete
[396] Fix | Delete
$bg_optimization = WP_Smush::get_instance()->core()->mod->bg_optimization;
[397] Fix | Delete
return 'background_email' === $field && $bg_optimization->can_use_background();
[398] Fix | Delete
}
[399] Fix | Delete
[400] Fix | Delete
/**
[401] Fix | Delete
* Getter method for settings fields.
[402] Fix | Delete
*
[403] Fix | Delete
* @since 3.2.2
[404] Fix | Delete
* @return array
[405] Fix | Delete
*/
[406] Fix | Delete
public function get_settings_fields() {
[407] Fix | Delete
return $this->settings_fields;
[408] Fix | Delete
}
[409] Fix | Delete
[410] Fix | Delete
/**
[411] Fix | Delete
* Getter method for lazy loading fields.
[412] Fix | Delete
*
[413] Fix | Delete
* @since 3.3.0
[414] Fix | Delete
* @return array
[415] Fix | Delete
*/
[416] Fix | Delete
public function get_lazy_load_fields() {
[417] Fix | Delete
return $this->lazy_load_fields;
[418] Fix | Delete
}
[419] Fix | Delete
[420] Fix | Delete
public function get_webp_fields() {
[421] Fix | Delete
return $this->webp_fields;
[422] Fix | Delete
}
[423] Fix | Delete
[424] Fix | Delete
/**
[425] Fix | Delete
* Init settings.
[426] Fix | Delete
*
[427] Fix | Delete
* If there are no settings in the database, populate it with the defaults, if settings are present
[428] Fix | Delete
*/
[429] Fix | Delete
public function init() {
[430] Fix | Delete
}
[431] Fix | Delete
[432] Fix | Delete
/**
[433] Fix | Delete
* Checks whether the settings are applicable for the whole network/site or sitewise (multisite).
[434] Fix | Delete
*/
[435] Fix | Delete
public function is_network_enabled() {
[436] Fix | Delete
return $this->is_network_setting( self::SETTINGS_KEY );
[437] Fix | Delete
}
[438] Fix | Delete
[439] Fix | Delete
public function is_network_setting( $option_id ) {
[440] Fix | Delete
if ( ! is_multisite() ) {
[441] Fix | Delete
return false;
[442] Fix | Delete
}
[443] Fix | Delete
[444] Fix | Delete
$global_setting_keys = array(
[445] Fix | Delete
'wp_smush_api_auth',
[446] Fix | Delete
self::SUBSITE_CONTROLS_OPTION_KEY,
[447] Fix | Delete
);
[448] Fix | Delete
[449] Fix | Delete
if ( in_array( $option_id, $global_setting_keys, true ) ) {
[450] Fix | Delete
return true;
[451] Fix | Delete
}
[452] Fix | Delete
[453] Fix | Delete
$subsite_modules = $this->get_activated_subsite_pages();
[454] Fix | Delete
if ( empty( $subsite_modules ) ) {
[455] Fix | Delete
return true;
[456] Fix | Delete
}
[457] Fix | Delete
[458] Fix | Delete
$module_option_keys = array(
[459] Fix | Delete
'wp-smush-image_sizes' => 'bulk',
[460] Fix | Delete
'wp-smush-resize_sizes' => 'bulk',
[461] Fix | Delete
'wp-smush-lazy_load' => 'lazy_load',
[462] Fix | Delete
'wp-smush-cdn_status' => 'cdn',
[463] Fix | Delete
);
[464] Fix | Delete
[465] Fix | Delete
if ( ! isset( $module_option_keys[ $option_id ] ) ) {
[466] Fix | Delete
return self::is_ajax_network_admin() || is_network_admin();
[467] Fix | Delete
}
[468] Fix | Delete
[469] Fix | Delete
$module = $module_option_keys[ $option_id ];
[470] Fix | Delete
[471] Fix | Delete
return ! in_array( $module, $subsite_modules, true );
[472] Fix | Delete
}
[473] Fix | Delete
[474] Fix | Delete
/**
[475] Fix | Delete
* Check if user is able to access the page.
[476] Fix | Delete
*
[477] Fix | Delete
* @since 3.2.2
[478] Fix | Delete
*
[479] Fix | Delete
* @param string|bool $module Check if a specific module is allowed.
[480] Fix | Delete
* @param bool $top_menu Is this a top level menu point? Defaults to a Smush sub page.
[481] Fix | Delete
*
[482] Fix | Delete
* @return bool|array Can access page or not. If custom access rules defined - return custom rules array.
[483] Fix | Delete
*/
[484] Fix | Delete
public static function can_access( $module = false, $top_menu = false ) {
[485] Fix | Delete
// Allow all access on single site installs.
[486] Fix | Delete
if ( ! is_multisite() ) {
[487] Fix | Delete
return true;
[488] Fix | Delete
}
[489] Fix | Delete
[490] Fix | Delete
$access = get_site_option( self::SUBSITE_CONTROLS_OPTION_KEY );
[491] Fix | Delete
[492] Fix | Delete
// Check to if the settings update is network-wide or not ( only if in network admin ).
[493] Fix | Delete
$action = filter_input( INPUT_POST, 'action', FILTER_SANITIZE_SPECIAL_CHARS );
[494] Fix | Delete
[495] Fix | Delete
$is_network_admin = is_network_admin() || 'save_settings' === $action;
[496] Fix | Delete
[497] Fix | Delete
if ( self::is_ajax_network_admin() ) {
[498] Fix | Delete
$is_network_admin = true;
[499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function