webp cache after Imagify network option has been modified. * * @since 3.4 * @access public * @author Grégory Viguier * * @param string $option Name of the network option. * @param mixed $value Current value of the network option. * @param mixed $old_value Old value of the network option. * @param int $network_id ID of the network. */ public function sync_on_network_option_update( $option, $value, $old_value, $network_id ) { if ( get_current_network_id() === $network_id ) { $this->sync_on_option_update( $old_value, $value ); } } /** * Store the Imagify network option value before it is deleted. * * @since 3.4 * @access public * @author Grégory Viguier * * @param string $option Option name. * @param int $network_id ID of the network. */ public function store_option_value_before_network_delete( $option, $network_id ) { if ( get_current_network_id() === $network_id ) { $this->tmp_is_serving_webp = $this->is_serving_webp(); } } /** * Maybe activate webp cache after Imagify network option has been deleted. * * @since 3.4 * @access public * @author Grégory Viguier * * @param string $option Name of the network option. * @param int $network_id ID of the network. */ public function sync_on_network_option_delete( $option, $network_id ) { if ( get_current_network_id() === $network_id && false !== $this->tmp_is_serving_webp ) { $this->trigger_webp_change(); } } /** * Maybe deactivate webp cache after Imagify option has been successfully added. * * @since 3.4 * @access public * @author Grégory Viguier * * @param string $option Name of the option to add. * @param mixed $value Value of the option. */ public function sync_on_option_add( $option, $value ) { if ( ! empty( $value['display_webp'] ) ) { $this->trigger_webp_change(); } } /** * Maybe activate or deactivate webp cache after Imagify option has been modified. * * @since 3.4 * @access public * @author Grégory Viguier * * @param mixed $old_value The old option value. * @param mixed $value The new option value. */ public function sync_on_option_update( $old_value, $value ) { $old_display = ! empty( $old_value['display_webp'] ); $display = ! empty( $value['display_webp'] ); if ( $old_display !== $display || $old_value['display_webp_method'] !== $value['display_webp_method'] ) { $this->trigger_webp_change(); } } /** * Store the Imagify option value before it is deleted. * * @since 3.4 * @access public * @author Grégory Viguier * * @param string $option Name of the option to delete. */ public function store_option_value_before_delete( $option ) { if ( $this->get_option_name_to_serve_webp() === $option ) { $this->tmp_is_serving_webp = $this->is_serving_webp(); } } /** * Maybe activate webp cache after Imagify option has been deleted. * * @since 3.4 * @access public * @author Grégory Viguier * * @param string $option Name of the deleted option. */ public function sync_on_option_delete( $option ) { if ( false !== $this->tmp_is_serving_webp ) { $this->trigger_webp_change(); } } /** ----------------------------------------------------------------------------------------- */ /** PUBLIC TOOLS ============================================================================ */ /** ----------------------------------------------------------------------------------------- */ /** * Get the plugin name. * * @since 3.4 * @access public * @author Grégory Viguier * * @return string */ public function get_name() { return 'Imagify'; } /** * Get the plugin identifier. * * @since 3.4 * @access public * @author Grégory Viguier * * @return string */ public function get_id() { return 'imagify'; } /** * Tell if the plugin converts images to webp. * * @since 3.4 * @access public * @author Grégory Viguier * * @return bool */ public function is_converting_to_webp() { if ( ! function_exists( 'get_imagify_option' ) ) { // No Imagify, no webp. return false; } return (bool) get_imagify_option( 'convert_to_webp' ); } /** * Tell if the plugin serves webp images on frontend. * * @since 3.4 * @access public * @author Grégory Viguier * * @return bool */ public function is_serving_webp() { if ( ! function_exists( 'get_imagify_option' ) ) { // No Imagify, no webp. return false; } return (bool) get_imagify_option( 'display_webp' ); } /** * Tell if the plugin uses a CDN-compatible technique to serve webp images on frontend. * * @since 3.4 * @access public * @author Grégory Viguier * * @return bool */ public function is_serving_webp_compatible_with_cdn() { if ( ! $this->is_serving_webp() ) { return false; } return 'rewrite' !== get_imagify_option( 'display_webp_method' ); } /** * Get the plugin basename. * * @since 3.4 * @access public * @author Grégory Viguier * * @return bool */ public function get_basename() { if ( empty( $this->plugin_basename ) ) { $this->plugin_basename = rocket_has_constant( 'IMAGIFY_FILE' ) ? plugin_basename( rocket_get_constant( 'IMAGIFY_FILE' ) ) : 'imagify/imagify.php'; } return $this->plugin_basename; } /** ----------------------------------------------------------------------------------------- */ /** PRIVATE TOOLS =========================================================================== */ /** ----------------------------------------------------------------------------------------- */ /** * Get the name of the Imagify’s "serve webp" option. * * @since 3.4 * @access private * @author Grégory Viguier * * @return string */ private function get_option_name_to_serve_webp() { if ( ! empty( $this->plugin_option_name_to_serve_webp ) ) { return $this->plugin_option_name_to_serve_webp; } $default = 'imagify_settings'; if ( ! class_exists( '\Imagify_Options' ) || ! method_exists( '\Imagify_Options', 'get_instance' ) ) { $this->plugin_option_name_to_serve_webp = $default; return $this->plugin_option_name_to_serve_webp; } $instance = \Imagify_Options::get_instance(); if ( ! method_exists( $instance, 'get_option_name' ) ) { $this->plugin_option_name_to_serve_webp = $default; return $this->plugin_option_name_to_serve_webp; } $this->plugin_option_name_to_serve_webp = $instance->get_option_name(); return $this->plugin_option_name_to_serve_webp; } /** * Tell if Imagify is active for network. * * @since 3.4 * @access private * @author Grégory Viguier * * @return bool */ private function is_active_for_network() { static $is; if ( isset( $is ) ) { return $is; } if ( function_exists( 'imagify_is_active_for_network' ) ) { $is = imagify_is_active_for_network(); return $is; } if ( ! is_multisite() ) { $is = false; return $is; } if ( ! function_exists( 'is_plugin_active_for_network' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $is = is_plugin_active_for_network( $this->get_basename() ); return $is; } }