define_constants(); add_action( 'init', array( $this, 'load_textdomain' ), 0 ); add_action( 'plugins_loaded', array( $this, 'run' ), 20 ); } /** * Load Textdomain. */ public function load_textdomain() { load_plugin_textdomain( 'orderable', false, ORDERABLE_LANGUAGES_PATH ); } /** * Run. */ public function run() { if ( ! in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ), true ) && ! in_array( 'woocommerce/woocommerce.php', array_keys( get_site_option( 'active_sitewide_plugins' ), true ) ) ) { add_action( 'admin_notices', array( __CLASS__, 'orderable_notice_woocommerce' ) ); return; } $this->load_classes(); $this->update_check(); if ( ! $this->validate_pro_version() ) { add_action( 'admin_notices', array( __CLASS__, 'orderable_notice_pro_version' ) ); $this->define( 'ORDERABLE_PRO_INVALID', true ); } do_action( 'orderable_init' ); } /** * Run script sif plugin version has changed. */ private function update_check() { if ( ORDERABLE_VERSION === get_site_option( 'orderable_version' ) ) { return; } Orderable_Helpers::delete_orderable_transients(); update_option( 'orderable_version', ORDERABLE_VERSION ); } /** * Activate WooCommerce notice. */ public static function orderable_notice_woocommerce() { ?>

.

define( 'ORDERABLE_PATH', plugin_dir_path( __FILE__ ) ); $this->define( 'ORDERABLE_URL', plugin_dir_url( __FILE__ ) ); $this->define( 'ORDERABLE_ASSETS_URL', ORDERABLE_URL . 'assets/' ); $this->define( 'ORDERABLE_INC_PATH', ORDERABLE_PATH . 'inc/' ); $this->define( 'ORDERABLE_MODULES_PATH', ORDERABLE_INC_PATH . 'modules/' ); $this->define( 'ORDERABLE_VENDOR_PATH', ORDERABLE_INC_PATH . 'vendor/' ); $this->define( 'ORDERABLE_TEMPLATES_PATH', ORDERABLE_PATH . 'templates/' ); $this->define( 'ORDERABLE_TPL_PATH', ORDERABLE_PATH . 'templates/' ); $this->define( 'ORDERABLE_BASENAME', plugin_basename( __FILE__ ) ); $this->define( 'ORDERABLE_LANGUAGES_PATH', dirname( ORDERABLE_BASENAME ) . '/languages/' ); $this->define( 'ORDERABLE_VERSION', self::$version ); } /** * Define constant if not already set. * * @param string $name * @param string|bool $value */ private function define( $name, $value ) { if ( ! defined( $name ) ) { define( $name, $value ); } } /** * Load classes. */ private function load_classes() { require_once ORDERABLE_INC_PATH . 'class-helpers.php'; require_once ORDERABLE_INC_PATH . 'class-settings.php'; require_once ORDERABLE_INC_PATH . 'class-modules.php'; require_once ORDERABLE_INC_PATH . 'class-assets.php'; require_once ORDERABLE_INC_PATH . 'class-products.php'; require_once ORDERABLE_INC_PATH . 'class-ajax.php'; require_once ORDERABLE_INC_PATH . 'class-orders.php'; require_once ORDERABLE_INC_PATH . 'class-admin-notices.php'; Orderable_Settings::run(); Orderable_Assets::run(); Orderable_Modules::run(); Orderable_Products::run(); Orderable_Ajax::run(); Orderable_Admin_Notices::run(); } /** * Validate the Orderable core version number. * * @return bool */ private static function validate_pro_version() { if ( ! defined( 'ORDERABLE_PRO_VERSION' ) ) { // Pro version is valid because it doesn't exist. return true; } $pro_version = explode( '-', ORDERABLE_PRO_VERSION ); return version_compare( $pro_version[0], self::$required_pro_version, '>=' ); } } $orderable = new Orderable();