'1.0.12', 'plugin_name' => 'AFFI - Affiliate Marketing for Woo', 'slug' => 'affi-affiliate-marketing-for-woo', // 'assets_slug' => 'affi-', 'file' => __FILE__, 'basename' => plugin_basename( __FILE__ ), 'plugin_dir' => plugin_dir_path( __FILE__ ), 'templates_dir' => plugin_dir_path( __FILE__ ) . 'templates/', 'js_url' => $assets_url . 'js/', 'css_url' => $assets_url . 'css/', 'img_url' => $assets_url . 'images/', 'libs_url' => $assets_url . 'libs/', 'protocol' => $protocol, ]; } return self::$args[ $key ] ?? ''; } public static function set_page( $key, $value = '' ) { if ( ! $value ) { $value = $key; } self::$admin_pages[ $key ] = $value; } public static function get_pages() { return self::$admin_pages; } } class AffiAffiliate { protected $checker; public function __construct() { add_action( 'plugins_loaded', [ $this, 'init' ] ); register_activation_hook( __FILE__, [ $this, 'active' ] ); add_action( 'activated_plugin', array( $this, 'activated_plugin' ), 10, 2 ); //Compatible with High-Performance order storage (COT) add_action( 'before_woocommerce_init', array( $this, 'before_woocommerce_init' ) ); } public function init() { $include_dir = plugin_dir_path( __FILE__ ) . 'inc/'; if ( is_plugin_active( 'affi-woocommerce-affiliate-marketing/affi-woocommerce-affiliate-marketing.php' ) ) { return; } if ( is_plugin_active( 'affi-affiliate-marketing/affi-affiliate-marketing.php' ) ) { return; } if ( ! class_exists( 'VillaTheme_Require_Environment' ) ) { include_once $include_dir . 'support.php'; } $environment = new \VillaTheme_Require_Environment( [ 'plugin_name' => AffiEnv::get( 'plugin_name' ), 'php_version' => '7.4', 'wp_version' => '6.2', 'require_plugins' => [ [ 'slug' => 'woocommerce', 'name' => 'WooCommerce', 'defined_version' => 'WC_VERSION', 'version' => '7.0' ] ] ] ); if ( $environment->has_error() ) { return; } add_filter( 'plugin_action_links_' . AffiEnv::get( 'basename' ), [ $this, 'setting_link' ] ); $this->load_text_domain(); $this->load_classes(); /*flush end point*/ /*flush_rewrite_rules();*/ } public function before_woocommerce_init() { if ( class_exists( '\Automattic\WooCommerce\Utilities\FeaturesUtil' ) ) { \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true ); \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'cart_checkout_blocks', __FILE__, true ); } } protected function load_classes() { // require_once plugin_dir_path( __FILE__ ) . 'frontend/frontend.php'; // require_once plugin_dir_path( __FILE__ ) . 'frontend/registerpolicy.php'; // require_once plugin_dir_path( __FILE__ ) . 'inc/afscript.php'; require_once plugin_dir_path( __FILE__ ) . 'inc/functions.php'; // Setup_Wizard::instance(); AFScript::instance(); // Ajax::instance(); Frontend::instance(); RegisterPolicy::instance(); if ( is_admin() ) { // require_once plugin_dir_path( __FILE__ ) . 'admin/afadmin.php'; // require_once plugin_dir_path( __FILE__ ) . 'admin/afcron.php'; AFAdmin::instance(); AFCron::instance(); $this->support(); // affi_Users::instance(); } } public function setting_link( $links ) { $settings_link = [ sprintf( '%2$s', esc_url( admin_url( 'admin.php?page=affi-general-setting' ) ), esc_html__( 'Settings', 'affi-affiliate-marketing-for-woo' ) ) ]; return array_merge( $settings_link, $links ); } public function load_text_domain() { $locale = determine_locale(); $locale = apply_filters( 'plugin_locale', $locale, 'affi-affiliate-marketing-for-woo' ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound $basename = plugin_basename( dirname( __FILE__ ) ); unload_textdomain( 'affi-affiliate-marketing-for-woo' ); load_textdomain( 'affi-affiliate-marketing-for-woo', WP_LANG_DIR . "/{$basename}/{$basename}-{$locale}.mo" ); // load_plugin_textdomain( 'affi-affiliate-marketing-for-woo', false, $basename . '/languages' ); } public function active() { $this->create_table(); } public function activated_plugin() { update_option( 'woocommerce_queue_flush_rewrite_rules', 'yes' ); } protected function support() { if ( ! class_exists( 'VillaTheme_Support' ) ) { include_once AffiEnv::get( 'plugin_dir' ) . 'inc/support.php'; } new \VillaTheme_Support( [ 'support' => 'https://wordpress.org/support/plugin/affi-affiliate-marketing-for-woo', 'docs' => 'https://docs.villatheme.com/?item=affi', 'review' => 'https://wordpress.org/support/plugin/affi-affiliate-marketing-for-woo/reviews/?rate=5#rate-response', 'pro_url' => 'https://villatheme.com/extensions/affi-woocommerce-affiliate-marketing', 'menu_slug' => 'affi-affiliates-setting', 'css' => AffiEnv::get( 'css_url' ), 'image' => AffiEnv::get( 'img_url' ), 'slug' => AffiEnv::get( 'slug' ), 'version' => AffiEnv::get( 'version' ), 'survey_url' => 'https://script.google.com/macros/s/AKfycbxMJQRP_FzR-eXzJZszuEBZmWm8IPu-g9ZcgUoy2mnusqR-absyyQnYtKQzxuwI1jU4sQ/exec' ] ); } public function create_table() { global $wpdb; $collate = ''; if ( $wpdb->has_cap( 'collation' ) ) { $collate = $wpdb->get_charset_collate(); } require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); $affi_affiliates = $wpdb->prefix . 'affi_affiliates'; $query = "CREATE TABLE IF NOT EXISTS {$affi_affiliates} ( `id` bigint(20) not null AUTO_INCREMENT, `user_id` int(11) not null, `rate` int(11) null, `rate_type` varchar(50) null, `rank` varchar(50) null, `endpoint` varchar(50) null, `earning` float null, `mlm_earn` float null, `balance` float null, `parent` int(11) null, `child` longtext null, `payment_info` longtext null, `data` longtext null, `status` varchar(50) not null, `date_created` int(11) not null, `date_modified` int(11) null, PRIMARY KEY (`id`) ) {$collate}"; dbDelta( $query ); $affi_ranks = $wpdb->prefix . 'affi_ranks'; $query = "CREATE TABLE IF NOT EXISTS {$affi_ranks} ( `id` bigint(20) not null AUTO_INCREMENT, `name` varchar(50) not null, `status` int(1) default 1 not null, `slug` varchar(50) not null, `rate` float null, `rate_type` varchar(50) null, `parent_rate` float null, `parent_rate_type` varchar(50) null, `description` longtext null, `achievement` longtext null, `badge` varchar(50) null, `order` int(11) not null, `date_created` int(11) not null, PRIMARY KEY (`id`) ) {$collate}"; dbDelta( $query ); $affi_payouts = $wpdb->prefix . 'affi_payouts'; $query = "CREATE TABLE IF NOT EXISTS {$affi_payouts} ( `id` bigint(20) not null AUTO_INCREMENT, `transaction_id` varchar(200) not null, `user_id` varchar(200) not null, `amount` float not null, `type` varchar(50) not null, `payment` varchar(200) null, `fee` float not null, `description` longtext null, `status` varchar(50) not null, `date_created` int(11) not null, `date_modified` int(11) null, PRIMARY KEY (`id`) ) {$collate}"; dbDelta( $query ); $affi_notifications = $wpdb->prefix . 'affi_notifications'; $query_affi_notifications = "CREATE TABLE IF NOT EXISTS {$affi_notifications} ( `id` bigint(20) not null AUTO_INCREMENT, `subject` varchar(200) not null, `type` varchar(100) not null, `recipient` varchar(50) not null, `email_body` longtext not null, `status` int(11) not null, `date_created` int(11) not null, `date_modified` int(11) null, PRIMARY KEY (`id`) ) {$collate}"; dbDelta( $query_affi_notifications ); $affi_user_notifications = $wpdb->prefix . 'affi_user_notifications'; $query_affi_user_notifications = "CREATE TABLE IF NOT EXISTS {$affi_user_notifications} ( `id` bigint(20) not null AUTO_INCREMENT, `user_id` bigint(20) not null, `type` varchar(100) not null, `subject` longtext not null, `email_body` longtext not null, `status` varchar(100) not null, `date_created` int(11) not null, `date_modified` int(11) null, PRIMARY KEY (`id`) ) {$collate}"; dbDelta( $query_affi_user_notifications ); $affi_visits = $wpdb->prefix . 'affi_visits'; $query = "CREATE TABLE IF NOT EXISTS {$affi_visits} ( `id` bigint(20) not null AUTO_INCREMENT, `referral_id` INT(11) null, `affiliate_id` INT(11) null, `campaign` VARCHAR(100) null, `url` VARCHAR(200) null, `ip` tinytext null, `os_platform` tinytext null, `browser` tinytext null, `description` longtext null, `status` TINYINT(1) DEFAULT 0, `date` int(11) NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY affiliate_date (affiliate_id, date) ) {$collate}"; dbDelta( $query ); } } new AffiAffiliate();