define('WC_POSTNL_VERSION', $this->version); $this->plugin_basename = plugin_basename(__FILE__); // load the localisation & classes add_action('plugins_loaded', [$this, 'translations']); add_action('init', [$this, 'load_classes'], 9999); // run lifecycle methods if (is_admin() && ! defined('DOING_AJAX')) { add_action('init', [$this, 'do_install']); } } /** * 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 the translation / text-domain files * Note: the first-loaded translation file overrides any following ones if the same translation is present */ public function translations() { $locale = apply_filters('plugin_locale', get_locale(), self::DOMAIN); $dir = trailingslashit(WP_LANG_DIR); /** * Frontend/global Locale. Looks in: * - WP_LANG_DIR/woocommerce-postnl/woocommerce-postnl-LOCALE.mo * - WP_LANG_DIR/plugins/woocommerce-postnl-LOCALE.mo * - woocommerce-postnl/languages/woocommerce-postnl-LOCALE.mo (which if not found falls back to:) * - WP_LANG_DIR/plugins/woocommerce-postnl-LOCALE.mo */ load_textdomain( self::DOMAIN, $dir . 'woocommerce-postnl/' . self::DOMAIN . '-' . $locale . '.mo' ); load_textdomain(self::DOMAIN, $dir . 'plugins/' . self::DOMAIN . '-' . $locale . '.mo'); load_plugin_textdomain(self::DOMAIN, false, dirname(plugin_basename(__FILE__)) . '/languages'); } /** * Load the main plugin classes and functions */ public function includes() { $this->includes = $this->plugin_path() . '/includes'; // Use minimum php version 7.1 require_once($this->includes . "/vendor/autoload.php"); require_once($this->includes . "/admin/OrderSettings.php"); require_once($this->includes . "/admin/OrderSettingsRows.php"); // include compatibility classes require_once($this->includes . "/compatibility/abstract-wc-data-compatibility.php"); require_once($this->includes . "/compatibility/class-wc-date-compatibility.php"); require_once($this->includes . "/compatibility/class-wc-core-compatibility.php"); require_once($this->includes . "/compatibility/class-wc-order-compatibility.php"); require_once($this->includes . "/compatibility/class-wc-product-compatibility.php"); require_once($this->includes . "/compatibility/class-ce-compatibility.php"); require_once($this->includes . "/compatibility/class-wcpdf-compatibility.php"); require_once($this->includes . "/class-wcpn-data.php"); require_once($this->includes . "/collections/settings-collection.php"); require_once($this->includes . "/entities/setting.php"); require_once($this->includes . "/entities/settings-field-arguments.php"); require_once($this->includes . "/class-wcpn-assets.php"); require_once($this->includes . "/frontend/class-wcpn-cart-fees.php"); require_once($this->includes . "/frontend/class-wcpn-frontend-track-trace.php"); require_once($this->includes . "/frontend/class-wcpn-checkout.php"); require_once($this->includes . "/frontend/class-wcpn-frontend.php"); $this->admin = require_once($this->includes . "/admin/class-wcpost-admin.php"); require_once($this->includes . "/admin/settings/class-wcpost-settings.php"); require_once($this->includes . "/class-wcpn-log.php"); require_once($this->includes . "/admin/class-wcpn-country-codes.php"); require_once($this->includes . '/admin/settings/class-wcpn-shipping-methods.php'); $this->export = require_once($this->includes . "/admin/class-wcpn-export.php"); require_once($this->includes . "/class-wcpn-postcode-fields.php"); require_once($this->includes . "/adapter/delivery-options-from-order-adapter.php"); require_once($this->includes . "/adapter/pickup-location-from-order-adapter.php"); require_once($this->includes . "/adapter/shipment-options-from-order-adapter.php"); require_once($this->includes . "/admin/class-wcpn-export-consignments.php"); } /** * Instantiate classes when WooCommerce is activated */ public function load_classes() { if ($this->is_woocommerce_activated() === false) { add_action('admin_notices', [$this, 'need_woocommerce']); return; } if (! $this->phpVersionMeets(self::MINIMUM_PHP_VERSION_5_4)) { add_action('admin_notices', [$this, 'required_php_version']); return; } // php 7.1 $this->includes(); $this->initSettings(); } /** * Check if woocommerce is activated */ public function is_woocommerce_activated() { $blog_plugins = get_option('active_plugins', []); $site_plugins = get_site_option('active_sitewide_plugins', []); if (in_array('woocommerce/woocommerce.php', $blog_plugins) || isset($site_plugins['woocommerce/woocommerce.php'])) { return true; } else { return false; } } /** * WooCommerce not active notice. */ public function need_woocommerce() { $error = sprintf( __("WooCommerce PostNL requires %sWooCommerce%s to be installed & activated!", "woocommerce-postnl" ), '', '' ); $message = '
' . $error . '
%s