load_wc_translators(); $this->load_customizer(); $this->load_profiler(); $discount_message = self::get_discount_message_class(); // load before customizer ! $profiler = new WDP_Calculation_Profiler(); $customizer = self::get_customizer_class(); $customizer->install(); if ( is_admin() ) { new WDP_Settings();// it will load core on demand $profiler->admin_install(); } $options = WDP_Helpers::get_settings(); if ( ! is_admin() || $options['load_in_backend'] || WDP_Frontend::is_ajax_processing() ) { $non_admin_side = new WDP_Frontend(); $non_admin_side->install_bulk_range_table( $customizer ); // it will load core on demand $non_admin_side->install_profiler( $profiler ); $discount_message->set_theme_options( $customizer ); } $discount_message->set_theme_options_email( $customizer ); } private function load_range_discount_table_display() { include_once WC_ADP_PLUGIN_PATH . 'classes/engine/range_discount_table/abstracts/abstract-wdp-range-discounts-table.php'; include_once WC_ADP_PLUGIN_PATH . 'classes/engine/range_discount_table/abstracts/abstract-wdp-range-discounts-table-product-context.php'; foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/engine/range_discount_table/class-*.php' ) as $filename ) { include_once $filename; } foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/engine/range_discount_table/tables/class-*.php' ) as $filename ) { include_once $filename; } } private function load_wc_translators() { include_once WC_ADP_PLUGIN_PATH . 'classes/engine/class-wdp-wc-cart-translator.php'; include_once WC_ADP_PLUGIN_PATH . 'classes/engine/class-wdp-wc-order-translator.php'; } private function load_discount_message_display() { include_once WC_ADP_PLUGIN_PATH . 'classes/engine/class-wdp-discount-message.php'; } private function load_customizer() { $this->load_range_discount_table_display(); $this->load_discount_message_display(); include_once WC_ADP_PLUGIN_PATH . 'classes/admin/class-wdp-customizer.php'; } private function load_profiler() { foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/reporter/class-*.php' ) as $filename ) { include_once $filename; } foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/reporter/collectors/class-*.php' ) as $filename ) { include_once $filename; } } public static function check_db_version() { $version = get_option( self::db_version, "" ); if( $version != WC_ADP_VERSION ) { //upgrade db WDP_Database::create_database(); do_action('wdp_upgrade_db'); update_option( self::db_version, WC_ADP_VERSION, false ); } } public static function check_requirements() { $state = true; if ( version_compare( phpversion(), WC_ADP_MIN_PHP_VERSION, '<' ) ) { add_action( 'admin_notices', function () { echo '

' . sprintf( __( 'Advanced Dynamic Pricing for WooCommerce requires PHP version %s or later.', 'advanced-dynamic-pricing-for-woocommerce' ), WC_ADP_MIN_PHP_VERSION ) . '

'; } ); $state = false; } elseif ( ! class_exists( 'WooCommerce' ) ) { add_action( 'admin_notices', function () { echo '

' . __( 'Advanced Dynamic Pricing for WooCommerce requires active WooCommerce!', 'advanced-dynamic-pricing-for-woocommerce' ) . '

'; } ); $state = false; } elseif ( version_compare( WC_VERSION, WC_ADP_MIN_WC_VERSION, '<' ) ) { add_action( 'admin_notices', function () { echo '

' . sprintf( __( 'Advanced Dynamic Pricing for WooCommerce requires WooCommerce version %s or later.', 'advanced-dynamic-pricing-for-woocommerce' ), WC_ADP_MIN_WC_VERSION ) . '

'; } ); $state = false; } return $state; } public static function load_core() { do_action( 'wdp_load_core' ); //Traits foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/traits/trait-*.php' ) as $filename ) { include_once $filename; } // Engine foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/engine/class-*.php' ) as $filename ) { include_once $filename; } foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/engine/cart/class-*.php' ) as $filename ) { include_once $filename; } foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/engine/price_formatter/class-*.php' ) as $filename ) { include_once $filename; } foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/engine/product/class-*.php' ) as $filename ) { include_once $filename; } foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/shortcode/class-*.php' ) as $filename ) { include_once $filename; } //Rules foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/rules/class-*.php' ) as $filename ) { include_once $filename; } foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/rules/discount_range/class-wdp-rule-*.php' ) as $filename ) { include_once $filename; } foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/rules/discount_range/calculators/class-wdp-rule-*.php' ) as $filename ) include_once $filename; foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/rules/discount_range/qty_based_calculators/abstract/abstract-class-*.php' ) as $filename ) include_once $filename; foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/rules/discount_range/qty_based_calculators/product/class-*.php' ) as $filename ) include_once $filename; foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/rules/discount_range/qty_based_calculators/product_categories/class-*.php' ) as $filename ) include_once $filename; foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/rules/discount_range/qty_based_calculators/product_selected_categories/class-*.php' ) as $filename ) include_once $filename; foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/rules/discount_range/qty_based_calculators/selected_products/class-*.php' ) as $filename ) include_once $filename; foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/rules/discount_range/qty_based_calculators/sets/class-*.php' ) as $filename ) include_once $filename; foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/rules/discount_range/qty_based_calculators/total_qty_in_cart/class-*.php' ) as $filename ) include_once $filename; foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/rules/discount_range/qty_based_calculators/variation/class-*.php' ) as $filename ) include_once $filename; foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/rules/discount_range/qty_based_calculators/cart_position/class-*.php' ) as $filename ) include_once $filename; foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/rules/discount_range/qty_based_calculators/all_matched_products/class-*.php' ) as $filename ) include_once $filename; foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/rules/exceptions/class-*.php' ) as $filename ) include_once $filename; do_action( 'wdp_include_core_classes' ); //Limits foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/limits/class-*.php' ) as $filename ) { include_once $filename; } do_action( 'wdp_include_limits' ); //Conditions include_once WC_ADP_PLUGIN_PATH . 'classes/conditions/abstract-wdp-condition.php'; include_once WC_ADP_PLUGIN_PATH . 'classes/conditions/abstract-wdp-condition-cart-items.php'; foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/conditions/class-*.php' ) as $filename ) { include_once $filename; } do_action( 'wdp_include_conditions' ); //Cart adjustments include_once WC_ADP_PLUGIN_PATH . 'classes/cart_adjustments/abstract-wdp-cart-adj.php'; foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/cart_adjustments/class-*.php' ) as $filename ) { include_once $filename; } do_action( 'wdp_include_cart_adjustments' ); //Registries foreach ( glob( WC_ADP_PLUGIN_PATH . 'classes/registries/class-*.php' ) as $filename ) { include_once $filename; } include_once WC_ADP_PLUGIN_PATH . 'classes/class-wdp-standalone-cart.php'; } public static function is_request_to_rest_api() { if ( empty( $_SERVER['REQUEST_URI'] ) ) { return false; } $rest_prefix = trailingslashit( rest_get_url_prefix() ); $request_uri = esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) ); $wordpress = ( false !== strpos( $request_uri, $rest_prefix ) ); return $wordpress; } public static function is_pro_version() { return defined('WC_ADP_PRO_VERSION_PATH'); } public static function get_product_filtering_class() { return apply_filters('wdp_get_product_filtering_class', new WDP_Product_Filtering()); } public static function get_discount_message_class() { return apply_filters('wdp_get_discount_message_class', new WDP_Discount_Message()); } public static function get_customizer_class() { return apply_filters( 'wdp_get_customizer_class', new WDP_Customizer() ); } public static function get_rule_sql_generator_class() { return apply_filters('wdp_get_rule_sql_generator_class', new WDP_Rule_SQL_Generator()); } public static function get_context_class_name() { return apply_filters( 'wdp_get_context_class_name', "WDP_Context" ); } public static function create_formatter( $context = null ) { if ( empty( $context ) ) { $context_classname = WDP_Loader::get_context_class_name(); $context = $context_classname::make_context(); } $classname = apply_filters( 'wdp_get_price_formatter_class_name', "WDP_Price_Formatter" ); return new $classname( $context ); } /** * @param WDP_Rules_Collection $rule_collection * * @return mixed|void */ public static function get_cart_calculator_class( $rule_collection ) { return apply_filters( 'wdp_cart_calculator_class', new WDP_Cart_Calculator( $rule_collection ), $rule_collection ); } }