setup_constants(); self::$instance->includes(); self::$instance->setup_objects(); self::$instance->load_textdomain(); } return self::$instance; } /** * Throw error on object clone * * The whole idea of the singleton design pattern is that there is a single * object therefore, we don't want the object to be cloned. * * @since 1.0.0 * @access protected * @return void */ public function __clone() { // Cloning instances of the class is forbidden _doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'affiliate-coupons' ), '1.0' ); } /** * Disable unserializing of the class * * @since 1.0.0 * @access protected * @return void */ public function __wakeup() { // Unserializing instances of the class is forbidden _doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'affiliate-coupons' ), '1.0' ); } /** * Show a warning to sites running PHP < 5.3 * * @static * @access private * @since 1.5.0 * @return void */ public static function below_php_version_notice() { ?>

version ); } // Plugin Folder Path if ( ! defined( 'AFFCOUPS_PLUGIN_DIR' ) ) { define( 'AFFCOUPS_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); } // Plugin Folder URL if ( ! defined( 'AFFCOUPS_PLUGIN_URL' ) ) { define( 'AFFCOUPS_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); } // Plugin Root File if ( ! defined( 'AFFCOUPS_PLUGIN_FILE' ) ) { define( 'AFFCOUPS_PLUGIN_FILE', __FILE__ ); } // Docs URL if ( ! defined( 'AFFCOUPS_DOCS_URL' ) ) { define( 'AFFCOUPS_DOCS_URL', 'https://affcoups.com/support/knb/' ); } // WordPress.org URL if ( ! defined( 'AFFCOUPS_WP_ORG_URL' ) ) { define( 'AFFCOUPS_WP_ORG_URL', 'https://wordpress.org/plugins/affiliate-coupons/'); } // Plugin prefix if ( ! defined( 'AFFCOUPS_PREFIX' ) ) { define( 'AFFCOUPS_PREFIX', 'affcoups_' ); } } /** * Include required files * * @access private * @since 1.0 * @return void */ private function includes() { // Dependencies require_once AFFCOUPS_PLUGIN_DIR . 'includes/vendor/meta-box/meta-box.php'; // Basic require_once AFFCOUPS_PLUGIN_DIR . 'includes/helper.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/scripts.php'; // Admin only if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) { require_once AFFCOUPS_PLUGIN_DIR . 'includes/admin/plugins.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/admin/class-settings.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/admin/manage-coupons.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/admin/manage-vendors.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/admin/manage-categories.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/admin/manage-types.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/admin/hooks.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/admin/upgrades.php'; } // Coupons require_once AFFCOUPS_PLUGIN_DIR . 'includes/coupon-post-type.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/coupon-type-taxonomy.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/coupon-category-taxonomy.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/coupon-metaboxes.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/class-coupon.php'; // Vendors require_once AFFCOUPS_PLUGIN_DIR . 'includes/vendor-post-type.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/vendor-metaboxes.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/class-vendor.php'; // Anything else require_once AFFCOUPS_PLUGIN_DIR . 'includes/hooks.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/functions.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/assets.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/shortcodes.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/template-functions.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/widgets.php'; require_once AFFCOUPS_PLUGIN_DIR . 'includes/pro-functions.php'; } /** * Setup all objects * * @access public * @since 1.6.2 * @return void */ public function setup_objects() { if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) { self::$instance->settings = new Affcoups_Settings(); } } /** * Loads the plugin language files * * @access public * @since 1.0 * @return void */ public function load_textdomain() { // Set filter for plugin's languages directory $lang_dir = dirname( plugin_basename( AFFCOUPS_PLUGIN_FILE ) ) . '/languages/'; /** * Filters the languages directory path to use for Affiliate_Coupons. * * @param string $lang_dir The languages directory path. */ $lang_dir = apply_filters( 'affiliate_coupons_languages_directory', $lang_dir ); // Traditional WordPress plugin locale filter global $wp_version; $get_locale = get_locale(); if ( $wp_version >= 4.7 ) { $get_locale = get_user_locale(); } /** * Defines the plugin language locale used in Affiliate_Coupons. * * @var $get_locale The locale to use. Uses get_user_locale()` in WordPress 4.7 or greater, * otherwise uses `get_locale()`. */ $locale = apply_filters( 'plugin_locale', $get_locale, 'affiliate-coupons' ); $mofile = sprintf( '%1$s-%2$s.mo', 'affiliate-coupons', $locale ); // Setup paths to current locale file $mofile_local = $lang_dir . $mofile; $mofile_global = WP_LANG_DIR . '/affiliate-coupons/' . $mofile; if ( file_exists( $mofile_global ) ) { // Look in global /wp-content/languages/affiliate-coupons/ folder load_textdomain( 'affiliate-coupons', $mofile_global ); } elseif ( file_exists( $mofile_local ) ) { // Look in local /wp-content/plugins/affiliate-coupons/languages/ folder load_textdomain( 'affiliate-coupons', $mofile_local ); } else { // Load the default language files load_plugin_textdomain( 'affiliate-coupons', false, $lang_dir ); } } } endif; // End if class_exists check /** * The main function responsible for returning the one true Affiliate_Coupons * Instance to functions everywhere. * * Use this function like you would a global variable, except without needing * to declare the global. * * Example: * * @since 1.0 * @return Affiliate_Coupons The one true Affiliate_Coupons Instance */ function Affiliate_Coupons() { return Affiliate_Coupons::instance(); } /** * Init plugin * * @return bool */ function affcoups_load() { Affiliate_Coupons(); return true; } add_action( 'plugins_loaded', 'affcoups_load', 10 );