Server : Apache System : Linux ls31.server.ly 3.10.0-962.3.2.lve1.5.68.el7.x86_64 #1 SMP Wed Apr 6 11:12:23 UTC 2022 x86_64 User : medchoco ( 2906) PHP Version : 8.3.16 Disable Function : mail Directory : /home/medchoco/www/wp-content/plugins/yith-woocommerce-compare/includes/ |
Upload File : |
<?php /** * Main class * * @author YITH <plugins@yithemes.com> * @package YITH Woocommerce Compare * @version 1.1.4 */ defined( 'YITH_WOOCOMPARE' ) || exit; // Exit if accessed directly. if ( ! class_exists( 'YITH_Woocompare' ) ) { /** * YITH Woocommerce Compare * * @since 1.0.0 */ class YITH_Woocompare { /** * Plugin object * * @var string * @since 1.0.0 */ public $obj = null; /** * AJAX Helper * * @var string * @since 1.0.0 */ public $ajax = null; /** * Constructor * * @return YITH_Woocompare_Admin | YITH_Woocompare_Frontend * @since 1.0.0 */ public function __construct() { add_action( 'widgets_init', array( $this, 'register_widgets' ) ); // Load Plugin Framework. add_action( 'after_setup_theme', array( $this, 'plugin_fw_loader' ), 1 ); add_action( 'before_woocommerce_init', array( $this, 'declare_wc_features_support' ) ); if ( $this->is_frontend() ) { // Require frontend class. require_once 'class.yith-woocompare-frontend.php'; $this->obj = new YITH_Woocompare_Frontend(); } elseif ( $this->is_admin() ) { // Requires admin classes. require_once 'class.yith-woocompare-admin.php'; $this->obj = new YITH_Woocompare_Admin(); } // Add image size. YITH_Woocompare_Helper::set_image_size(); // Let's filter the woocommerce image size. add_filter( 'woocommerce_get_image_size_yith-woocompare-image', array( $this, 'filter_wc_image_size' ), 10, 1 ); return $this->obj; } /** * Detect if is frontend * * @return bool */ public function is_frontend() { $is_ajax = ( defined( 'DOING_AJAX' ) && DOING_AJAX ); $context_check = isset( $_REQUEST['context'] ) && 'frontend' === sanitize_text_field( wp_unslash( $_REQUEST['context'] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended $actions_to_check = apply_filters( 'yith_woocompare_actions_to_check_frontend', array( 'woof_draw_products', 'prdctfltr_respond_550', 'wbmz_get_products', 'jet_smart_filters', 'productfilter' ) ); $action_check = isset( $_REQUEST['action'] ) && in_array( sanitize_text_field( wp_unslash( $_REQUEST['action'] ) ), $actions_to_check, true ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended return (bool) YITH_Woocompare_Helper::is_elementor_editor() || ( ! is_admin() || ( $is_ajax && ( $context_check || $action_check ) ) ); } /** * Detect if is admin * * @return bool */ public function is_admin() { $is_ajax = ( defined( 'DOING_AJAX' ) && DOING_AJAX ); $is_admin = ( is_admin() || $is_ajax && isset( $_REQUEST['context'] ) && sanitize_text_field( wp_unslash( $_REQUEST['context'] ) ) === 'admin' ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended return apply_filters( 'yith_woocompare_check_is_admin', (bool) $is_admin ); } /** * Load Plugin Framework * * @since 1.0 * @access public * @return void */ public function plugin_fw_loader() { if ( ! defined( 'YIT_CORE_PLUGIN' ) ) { global $plugin_fw_data; if ( ! empty( $plugin_fw_data ) ) { $plugin_fw_file = array_shift( $plugin_fw_data ); require_once $plugin_fw_file; } } } /** * Declare support for WooCommerce features. * * @since 2.26.0 */ public function declare_wc_features_support() { if ( class_exists( '\Automattic\WooCommerce\Utilities\FeaturesUtil' ) ) { $init = defined( 'YITH_WOOCOMPARE_FREE_INIT' ) ? YITH_WOOCOMPARE_FREE_INIT : false; \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', $init, true ); } } /** * Load and register widgets * * @access public * @since 1.0.0 */ public function register_widgets() { register_widget( 'YITH_Woocompare_Widget' ); } /** * Filter WooCommerce image size attr * * @since 2.3.5 * @param array $size The default image size. * @return array */ public function filter_wc_image_size( $size ) { $size_opt = get_option( 'yith_woocompare_image_size', array() ); return array( 'width' => isset( $size_opt['width'] ) ? absint( $size_opt['width'] ) : 600, 'height' => isset( $size_opt['height'] ) ? absint( $size_opt['height'] ) : 600, 'crop' => isset( $size_opt['crop'] ) ? 1 : 0, ); } } }