Server : Apache System : Linux pod-100823:apache2_74:v0.5.7 5.4.0-1138-gcp #147~18.04.1-Ubuntu SMP Mon Oct 7 21:46:26 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33.7 Disable Function : apache_child_terminate,apache_get_modules,apache_get_version,apache_getenv,apache_note,apache_setenv,disk_free_space,disk_total_space,diskfreespace,dl,exec,fastcgi_finish_request,link,opcache_compile_file,opcache_get_configuration,opcache_invalidate,opcache_is_script_cached,opcache_reset,passthru,pclose,pcntl_exec,popen,posix_getpid,posix_getppid,posix_getpwuid,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_uname,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,realpath_cache_get,shell_exec,show_source,symlink,system Directory : /nas/content/live/attorneyexperi/wp-content/plugins/imagify/inc/classes/ |
<?php use Imagify\Traits\InstanceGetterTrait; /** * Class that handles the plugin options. * * @since 1.7 */ class Imagify_Options extends Imagify_Abstract_Options { use InstanceGetterTrait; /** * Suffix used in the name of the option. * * @var string * @since 1.7 */ protected $identifier = 'settings'; /** * The default values for the Imagify main options. * These are the "zero state" values. * Don't use null as value. * * @var array * @since 1.7 */ protected $default_values = [ 'api_key' => '', 'optimization_level' => 2, 'lossless' => 0, 'auto_optimize' => 0, 'backup' => 0, 'resize_larger' => 0, 'resize_larger_w' => 0, 'display_nextgen' => 0, 'display_nextgen_method' => 'picture', 'display_webp' => 0, 'display_webp_method' => 'picture', 'cdn_url' => '', 'disallowed-sizes' => [], 'admin_bar_menu' => 0, 'partner_links' => 0, 'convert_to_avif' => 0, 'convert_to_webp' => 0, 'optimization_format' => 'webp', ]; /** * The Imagify main option values used when they are set the first time or reset. * Values identical to default values are not listed. * * @var array * @since 1.7 */ protected $reset_values = [ 'optimization_level' => 2, 'auto_optimize' => 1, 'backup' => 1, 'admin_bar_menu' => 1, 'partner_links' => 1, ]; /** * The constructor. * Side note: $this->hook_identifier value is "option". * * @since 1.7 */ protected function __construct() { if ( defined( 'IMAGIFY_API_KEY' ) && IMAGIFY_API_KEY ) { $this->default_values['api_key'] = (string) IMAGIFY_API_KEY; } if ( function_exists( 'wp_get_original_image_path' ) ) { $this->reset_values['resize_larger'] = 1; $filter_cb = [ imagify_get_context( 'wp' ), 'get_resizing_threshold' ]; $filtered = has_filter( 'big_image_size_threshold', $filter_cb ); if ( $filtered ) { remove_filter( 'big_image_size_threshold', $filter_cb, IMAGIFY_INT_MAX ); } /** This filter is documented in wp-admin/includes/image.php */ $this->reset_values['resize_larger_w'] = (int) apply_filters( 'big_image_size_threshold', 2560, [ 0, 0 ], '', 0 ); $this->reset_values['resize_larger_w'] = $this->sanitize_and_validate_value( 'resize_larger_w', $this->reset_values['resize_larger_w'], $this->default_values['resize_larger_w'] ); if ( $filtered ) { add_filter( 'big_image_size_threshold', $filter_cb, IMAGIFY_INT_MAX ); } } $this->network_option = imagify_is_active_for_network(); parent::__construct(); } /** * Sanitize and validate an option value. Basic casts have been made. * * @since 1.7 * * @param string $key The option key. * @param mixed $value The value. * @param mixed $default The default value. * @return mixed */ public function sanitize_and_validate_value( $key, $value, $default ) { static $max_sizes; switch ( $key ) { case 'api_key': if ( defined( 'IMAGIFY_API_KEY' ) && IMAGIFY_API_KEY ) { return (string) IMAGIFY_API_KEY; } return $value ? sanitize_key( $value ) : ''; case 'optimization_level': if ( $value < 0 || $value > 2 ) { // For an invalid value, return the "reset" value. $reset_values = $this->get_reset_values(); return $reset_values[ $key ]; } return $value; case 'optimization_format': if ( ! in_array( $value, [ 'off', 'webp', 'avif' ], true ) ) { // For an invalid value, return the "reset" value. $reset_values = $this->get_reset_values(); return $reset_values[ $key ]; } return $value; case 'auto_optimize': case 'backup': case 'lossless': case 'resize_larger': case 'convert_to_webp': case 'display_nextgen': case 'display_webp': case 'admin_bar_menu': case 'partner_links': case 'convert_to_avif': return empty( $value ) ? 0 : 1; case 'resize_larger_w': if ( $value <= 0 ) { // Invalid. return $default; } if ( ! isset( $max_sizes ) ) { $max_sizes = get_imagify_max_intermediate_image_size(); } if ( $value < $max_sizes['width'] ) { // Invalid. return $max_sizes['width']; } return $value; case 'disallowed-sizes': if ( ! $value ) { return $default; } $value = array_keys( $value ); $value = array_map( 'sanitize_text_field', $value ); return array_fill_keys( $value, 1 ); case 'display_nextgen_method': case 'display_webp_method': $values = [ 'picture' => 1, 'rewrite' => 1, ]; if ( isset( $values[ $value ] ) ) { return $value; } // For an invalid value, return the "reset" value. $reset_values = $this->get_reset_values(); return $reset_values[ $key ]; case 'cdn_url': $cdn_source = apply_filters( 'imagify_cdn_source_url', $value ); if ( 'option' !== $cdn_source['source'] ) { /** * If the URL is defined via constant or filter, unset the option. * This is useful when the CDN is disabled: there is no need to do anything then. */ return ''; } return $cdn_source['url']; } return false; } /** * Validate Imagify's options before storing them. Basic sanitization and validation have been made, row by row. * * @since 1.7 * * @param string $values The option value. * @return array */ public function validate_values_on_update( $values ) { // The max width for the "Resize larger images" option can't be 0. if ( empty( $values['resize_larger_w'] ) ) { unset( $values['resize_larger'], $values['resize_larger_w'] ); } return $values; } }