includes(); // Add compatibility with third party plugins $compatibility = new Alg_Switcher_Third_Party_Compatibility(); $compatibility->init(); // Settings & Scripts if ( is_admin() ) { add_filter( 'woocommerce_get_settings_pages', array( $this, 'add_woocommerce_settings_tab' ) ); add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), array( $this, 'action_links' ) ); add_action( 'woocommerce_system_status_report', array( $this, 'add_settings_to_status_report' ) ); } // WooCommerce scheduled tasks add_action( 'wc_after_products_ending_sales', array( $this, 'cleanup_ended_sales_prices' ) ); } /** * Show action links on the plugin screen * * @version 2.15.0 * @since 1.0.0 * @param mixed $links * @return array */ function action_links( $links ) { $settings_link = '' . __( 'Settings', 'woocommerce' ) . ''; $unlock_all_link = '' . __( 'Unlock all', 'currency-switcher-woocommerce' ) . ''; $custom_links = ( PHP_INT_MAX === apply_filters( 'alg_wc_currency_switcher_plugin_option', 2 ) ) ? array( $settings_link ) : array( $settings_link, $unlock_all_link ); return array_merge( $custom_links, $links ); } /** * @since 2.15.0 */ public function cleanup_ended_sales_prices( $product_ids ) { if ( ! apply_filters( 'wpwham_currency_switcher_cleanup_ended_sales_prices', true ) ) { return; } $currencies = alg_get_enabled_currencies( false ); foreach ( $product_ids as $product_id ) { foreach ( $currencies as $currency ) { update_post_meta( $product_id, '_alg_currency_switcher_per_product_sale_price_' . $currency, '' ); } } } /** * Include required core files used in admin and on the frontend. * * @version 2.16.0 * @since 1.0.0 * @todo (maybe) import/export all settings */ private function includes() { // Database Updates require_once( 'includes/database-updates.php' ); // Functions require_once( 'includes/functions/alg-switcher-selector-functions.php' ); require_once( 'includes/functions/alg-switcher-functions.php' ); require_once( 'includes/functions/alg-switcher-exchange-rates-functions.php' ); require_once( 'includes/functions/alg-switcher-country-functions.php' ); require_once( 'includes/functions/alg-switcher-locale-functions.php' ); // Compatibility require_once( 'includes/class-alg-switcher-third-party-compatibility.php' ); // Settings require_once( 'includes/admin/settings/class-alg-wc-currency-switcher-settings-section.php' ); $this->settings = array(); $this->settings['general'] = require_once( 'includes/admin/settings/class-alg-wc-currency-switcher-settings-general.php' ); $this->settings['currencies'] = require_once( 'includes/admin/settings/class-alg-wc-currency-switcher-settings-currencies.php' ); $this->settings['exchange_rates'] = require_once( 'includes/admin/settings/class-alg-wc-currency-switcher-settings-exchange-rates.php' ); $this->settings['currency_countries'] = require_once( 'includes/admin/settings/class-alg-wc-currency-switcher-settings-countries.php' ); $this->settings['currency_locales'] = require_once( 'includes/admin/settings/class-alg-wc-currency-switcher-settings-languages.php' ); $this->settings['flags'] = require_once( 'includes/admin/settings/class-alg-wc-currency-switcher-settings-flags.php' ); $this->settings['price_formats'] = require_once( 'includes/admin/settings/class-alg-wc-currency-switcher-settings-price-formats.php' ); $this->settings['advanced'] = require_once( 'includes/admin/settings/class-alg-wc-currency-switcher-settings-advanced.php' ); if ( is_admin() && get_option( 'alg_currency_switcher_version', '' ) !== $this->version ) { foreach ( $this->settings as $section ) { foreach ( $section->get_settings() as $value ) { if ( isset( $value['default'] ) && isset( $value['id'] ) ) { $autoload = isset( $value['autoload'] ) ? (bool) $value['autoload'] : true; add_option( $value['id'], $value['default'], '', $autoload ); } } } update_option( 'alg_currency_switcher_version', $this->version ); } // Per product Settings if ( 'yes' === get_option( 'alg_currency_switcher_per_product_enabled', 'yes' ) ) { require_once( 'includes/admin/class-alg-wc-currency-switcher-per-product.php' ); } // Coupons Settings if ( 'yes' === get_option( 'alg_currency_switcher_fixed_coupons_base_currency_enabled', 'no' ) ) { require_once( 'includes/admin/class-alg-wc-currency-switcher-coupons.php' ); } // Crons & Reports if ( 'yes' === get_option( 'alg_wc_currency_switcher_enabled', 'yes' ) ) { if ( 'manual' != get_option( 'alg_currency_switcher_exchange_rate_update', 'manual' ) ) { require_once( 'includes/class-alg-exchange-rates-crons.php' ); } require_once( 'includes/admin/class-alg-currency-reports.php' ); } // Widget require_once( 'includes/class-alg-widget-currency-switcher.php' ); // Core $this->core = require_once( 'includes/class-alg-wc-currency-switcher.php' ); } /** * add settings to WC status report * * @version 2.12.2 * @since 2.12.2 * @author WP Wham */ public static function add_settings_to_status_report() { #region add_settings_to_status_report $protected_settings = array( 'wpwham_currency_switcher_license', 'wpw_cs_fcc_api_key' ); $settings_general = Alg_WC_Currency_Switcher_Settings_General::get_general_settings( array() ); $settings_currencies = Alg_WC_Currency_Switcher_Settings_Currencies::get_currencies_settings( array() ); $settings_exchange_rates = Alg_WC_Currency_Switcher_Settings_Exchange_Rates::get_exchange_rates_settings( array() ); $settings_countries = Alg_WC_Currency_Switcher_Settings_Currency_Countries::get_currency_countries_settings( array() ); $settings_languages = Alg_WC_Currency_Switcher_Settings_Currency_Locales::get_currency_locales_settings( array() ); $settings_price_formats = Alg_WC_Currency_Switcher_Settings_Price_Formats::get_price_formats_settings( array() ); $settings_flags = Alg_WC_Currency_Switcher_Settings_Flags::get_flags_settings( array() ); $settings_advanced = Alg_WC_Currency_Switcher_Settings_Advanced::get_advanced_settings( array() ); $settings = array_merge( $settings_general, $settings_currencies, $settings_exchange_rates, $settings_countries, $settings_languages, $settings_price_formats, $settings_flags, $settings_advanced ); ?>
: |