ddwcaf_configuration = $ddwcaf_configuration; $this->affiliate_helper = new DDWCAF_Affiliate_Helper( $ddwcaf_configuration ); $this->ddwcaf_add_dashboard_menu(); add_action( 'admin_enqueue_scripts', [ $this, 'ddwcaf_enqueue_admin_scripts' ] ); add_filter( 'admin_footer_text', [ $this, 'ddwcaf_set_admin_footer_text' ], 99 ); } /** * Add Admin menu function * * @return void */ public function ddwcaf_add_dashboard_menu() { ob_start(); ?> esc_html__( 'Affiliates for WooCommerce', 'affiliates-for-woocommerce' ), 'menu_title' => esc_html__( 'Affiliates', 'affiliates-for-woocommerce' ), 'slug' => 'ddwcaf-dashboard', 'plugin_name' => $plugin_name, 'screen_options_callback' => [ $this, 'add_screen_options' ], 'upgrade_url' => 'https://devdiggers.com/product/woocommerce-affiliates/?utm_source=plugin-dashboard&utm_medium=upgrade-link&utm_campaign=affiliates-for-woocommerce', 'menus' => [ 'dashboard' => [ 'label' => esc_html__( 'Dashboard', 'affiliates-for-woocommerce' ), 'callback' => [ $this, 'ddwcaf_get_dashboard' ], 'layout' => 'full-width', ], 'affiliates' => [ 'label' => esc_html__( 'Affiliates', 'affiliates-for-woocommerce' ), 'callback' => [ $this, 'ddwcaf_get_affiliates_list' ], 'layout' => 'full-width', ], 'commissions' => [ 'label' => esc_html__( 'Commissions', 'affiliates-for-woocommerce' ), 'callback' => [ $this, 'ddwcaf_get_commissions_list' ], 'layout' => 'full-width', ], 'payouts' => [ 'label' => esc_html__( 'Payouts', 'affiliates-for-woocommerce' ), 'callback' => [ $this, 'ddwcaf_get_payouts_list' ], 'layout' => 'full-width', ], 'top-products' => [ 'label' => esc_html__( 'Top Products', 'affiliates-for-woocommerce' ), 'callback' => [ $this, 'ddwcaf_get_top_products_list' ], 'layout' => 'full-width', ], 'visits' => [ 'label' => esc_html__( 'Visits', 'affiliates-for-woocommerce' ), 'callback' => [ $this, 'ddwcaf_get_visits_list' ], 'layout' => 'full-width', ], 'fraud' => [ 'label' => esc_html__( 'Fraud', 'affiliates-for-woocommerce' ), 'callback' => [ $this, 'ddwcaf_get_fraud_report' ], 'layout' => 'full-width', ], 'reports' => [ 'label' => esc_html__( 'Reports', 'affiliates-for-woocommerce' ), 'callback' => [ $this, 'ddwcaf_get_reports' ], 'layout' => 'full-width', ], 'rules' => [ 'label' => esc_html__( 'Rules', 'affiliates-for-woocommerce' ), 'callback' => [ $this, 'ddwcaf_get_rules_template' ], 'layout' => 'full-width', ], 'registration-fields' => [ 'label' => esc_html__( 'Registration Fields', 'affiliates-for-woocommerce' ), 'callback' => [ $this, 'ddwcaf_get_affiliate_registration_fields_list' ], 'layout' => 'full-width', ], 'creatives' => [ 'label' => esc_html__( 'Creatives', 'affiliates-for-woocommerce' ), 'callback' => [ $this, 'ddwcaf_get_creatives_list' ], 'layout' => 'full-width', ], 'configuration' => [ 'label' => esc_html__( 'Configuration', 'affiliates-for-woocommerce' ), 'layout' => 'sidebar', 'tabs' => [ 'general' => [ 'label' => esc_html__( 'General', 'affiliates-for-woocommerce' ), 'icon' => DDFW_SVG::get_svg_icon( 'general', true, [ 'size' => 18 ] ), 'callback' => [ $this, 'ddwcaf_get_general_configuration_template' ], ], 'referrals' => [ 'label' => esc_html__( 'Referrals', 'affiliates-for-woocommerce' ), 'icon' => DDFW_SVG::get_svg_icon( 'referrals', true, [ 'size' => 18 ] ), 'callback' => [ $this, 'ddwcaf_get_referrals_configuration_template' ], ], 'fraud' => [ 'label' => esc_html__( 'Fraud Prevention', 'affiliates-for-woocommerce' ), 'icon' => DDFW_SVG::get_svg_icon( 'fraud', true, [ 'size' => 18 ] ), 'callback' => [ $this, 'ddwcaf_get_fraud_configuration_template' ], ], 'commissions' => [ 'label' => esc_html__( 'Commissions', 'affiliates-for-woocommerce' ), 'icon' => DDFW_SVG::get_svg_icon( 'commissions', true, [ 'size' => 18 ] ), 'callback' => [ $this, 'ddwcaf_get_commissions_configuration_template' ], ], 'payouts' => [ 'label' => esc_html__( 'Payouts', 'affiliates-for-woocommerce' ), 'icon' => DDFW_SVG::get_svg_icon( 'payouts', true, [ 'size' => 18 ] ), 'callback' => [ $this, 'ddwcaf_get_payouts_configuration_template' ], ], 'shortcodes' => [ 'label' => esc_html__( 'Shortcodes', 'affiliates-for-woocommerce' ), 'icon' => DDFW_SVG::get_svg_icon( 'shortcodes', true, [ 'size' => 18 ] ), 'callback' => [ $this, 'ddwcaf_get_shortcodes_configuration_template' ], ], 'social-promotion' => [ 'label' => esc_html__( 'Social Promotion', 'affiliates-for-woocommerce' ), 'icon' => DDFW_SVG::get_svg_icon( 'social', true, [ 'size' => 18 ] ), 'callback' => [ $this, 'ddwcaf_get_social_promotion_configuration_template' ], ], 'emails' => [ 'label' => esc_html__( 'Emails', 'affiliates-for-woocommerce' ), 'icon' => DDFW_SVG::get_svg_icon( 'emails', true, [ 'size' => 18 ] ), 'callback' => [ $this, 'ddwcaf_get_emails_configuration_template' ], ], 'endpoints' => [ 'label' => esc_html__( 'Endpoints', 'affiliates-for-woocommerce' ), 'icon' => DDFW_SVG::get_svg_icon( 'endpoints', true, [ 'size' => 18 ] ), 'callback' => [ $this, 'ddwcaf_get_endpoints_configuration_template' ], ], 'layout' => [ 'label' => esc_html__( 'Layout', 'affiliates-for-woocommerce' ), 'icon' => DDFW_SVG::get_svg_icon( 'layout', true, [ 'size' => 18 ] ), 'callback' => [ $this, 'ddwcaf_get_layout_configuration_template' ], ], ], ], ], ]; $this->dashboard = new DDFW_Plugin_Dashboard( $args ); do_action( 'ddwcaf_admin_menu_action' ); } /** * Add screen options function * * @return void */ public function add_screen_options() { global $myListTable; $current_menu = ! empty( $_GET['menu'] ) ? sanitize_title( wp_unslash( $_GET['menu'] ) ) : 'dashboard'; $args = [ 'default' => 20, 'hidden' => 'id', 'sanitize' => 'intval', ]; switch ( $current_menu ) { case 'affiliates': $args['label'] = esc_html__( 'Affiliates Per Page', 'affiliates-for-woocommerce' ); $args['option'] = 'ddwcaf_affiliates_per_page'; $myListTable = new Admin\Affiliates\DDWCAF_Affiliates_List_Template( $this->ddwcaf_configuration ); break; case 'commissions': $args['label'] = esc_html__( 'Commissions Per Page', 'affiliates-for-woocommerce' ); $args['option'] = 'ddwcaf_commissions_per_page'; $myListTable = new Admin\Commissions\DDWCAF_Commissions_List_Template( $this->ddwcaf_configuration ); break; case 'payouts': $args['label'] = esc_html__( 'Payouts Per Page', 'affiliates-for-woocommerce' ); $args['option'] = 'ddwcaf_payouts_per_page'; $myListTable = new Admin\Payouts\DDWCAF_Payouts_List_Template( $this->ddwcaf_configuration ); break; case 'top-products': $args['label'] = esc_html__( 'Top Products Per Page', 'affiliates-for-woocommerce' ); $args['option'] = 'ddwcaf_top_products_per_page'; $myListTable = new Admin\Top_Products\DDWCAF_Top_Products_List_Template( $this->ddwcaf_configuration ); break; case 'visits': $args['label'] = esc_html__( 'Visits Per Page', 'affiliates-for-woocommerce' ); $args['option'] = 'ddwcaf_visits_per_page'; $myListTable = new Admin\Visits\DDWCAF_Visits_List_Template( $this->ddwcaf_configuration ); break; case 'registration-fields': $args['label'] = esc_html__( 'Registration Fields Per Page', 'affiliates-for-woocommerce' ); $args['option'] = 'ddwcaf_affiliates_registration_fields_per_page'; $myListTable = new Admin\Registration\DDWCAF_Affiliate_Registration_Fields_Template( $this->ddwcaf_configuration ); break; } if ( ! empty( $args['option'] ) ) { add_screen_option( 'per_page', $args ); } } /** * Dashboard Submenu * * @return void */ public function ddwcaf_get_dashboard() { new Admin\Dashboard\DDWCAF_Dashboard_Template( $this->ddwcaf_configuration ); } /** * Reports Submenu * * @return void */ public function ddwcaf_get_reports() { ddfw_upgrade_to_pro_section( [ 'image_url' => DDWCAF_PLUGIN_URL . 'assets/images/pro-pages/reports.webp', 'heading' => esc_html__( 'Affiliate Reports in One Place', 'affiliates-for-woocommerce' ), 'description' => esc_html__( 'The Dashboard shows your program at a glance. Upgrade to Pro for one Reports page with every affiliate figure, compared with an earlier period and exportable to CSV.', 'affiliates-for-woocommerce' ), 'list_features' => [ esc_html__( 'Referral sales, commission, orders, visits and conversion rate against the previous period or last year', 'affiliates-for-woocommerce' ), esc_html__( 'Top affiliates, products, traffic sources and landing pages', 'affiliates-for-woocommerce' ), esc_html__( 'Commission by status and paid out by payout method', 'affiliates-for-woocommerce' ), esc_html__( 'Busiest weekday and hour for referral visits', 'affiliates-for-woocommerce' ), esc_html__( 'Unpaid and flagged commission that needs your attention', 'affiliates-for-woocommerce' ), esc_html__( 'Filter by date range and affiliate, with CSV exports', 'affiliates-for-woocommerce' ), ], 'upgrade_url' => 'https://devdiggers.com/product/woocommerce-affiliates/?utm_source=Affiliates for WooCommerce Plugin&utm_medium=Plugin Reports Page&utm_campaign=Affiliates for WooCommerce Pro', ] ); } /** * Fraud Report Submenu * * @return void */ public function ddwcaf_get_fraud_report() { ddfw_upgrade_to_pro_section( [ 'image_url' => DDWCAF_PLUGIN_URL . 'assets/images/pro-pages/fraud-report.webp', 'heading' => esc_html__( 'See Every Referral the Fraud Checks Caught', 'affiliates-for-woocommerce' ), 'description' => esc_html__( 'Upgrade to Pro for a Fraud report that shows which affiliates trip the self referral checks most and which orders were refused, so you can act before a payout goes out.', 'affiliates-for-woocommerce' ), 'list_features' => [ esc_html__( 'Flagged, rejected and refused referrals counted per affiliate', 'affiliates-for-woocommerce' ), esc_html__( 'The latest refused orders with the reason for each', 'affiliates-for-woocommerce' ), esc_html__( 'One click to review the flagged commissions', 'affiliates-for-woocommerce' ), ], 'upgrade_url' => 'https://devdiggers.com/product/woocommerce-affiliates/?utm_source=Affiliates for WooCommerce Plugin&utm_medium=Plugin Fraud Page&utm_campaign=Affiliates for WooCommerce Pro', ] ); } /** * Status tabs above a list, each with the number of rows it holds under the current search * and filters, as the other DevDiggers plugins show them. A tab keeps those filters, so * opening it lists the rows it counted. * * @param array $shows Status => label; '' is All. * @param callable $count The list helper's count function, given the list's args. * @return void */ protected function ddwcaf_print_status_views( $shows, $count ) { // phpcs:disable WordPress.Security.NonceVerification.Recommended -- Read-only list filters. $query = []; $args = []; $current = ! empty( $_GET[ 'show' ] ) ? sanitize_text_field( wp_unslash( $_GET[ 'show' ] ) ) : ''; $filters = [ 's' => 'search', 'affiliate-id' => 'affiliate_id', 'payout-id' => 'payout_id', 'product-id' => 'product_id', 'from-date' => 'from_date', 'end-date' => 'end_date', ]; foreach ( $filters as $param => $arg ) { if ( ! empty( $_GET[ $param ] ) && is_string( $_GET[ $param ] ) ) { $query[ $param ] = sanitize_text_field( wp_unslash( $_GET[ $param ] ) ); $args[ $arg ] = $query[ $param ]; } } // phpcs:enable $base = add_query_arg( [ 'page' => 'ddwcaf-dashboard', 'menu' => isset( $_GET[ 'menu' ] ) ? sanitize_key( wp_unslash( $_GET[ 'menu' ] ) ) : '', // phpcs:ignore WordPress.Security.NonceVerification.Recommended ] + $query, admin_url( 'admin.php' ) ); ?> ddwcaf_configuration ); } else { if ( ! empty( $_GET[ 'status' ] ) && 'saved' === sanitize_text_field( wp_unslash( $_GET[ 'status' ] ) ) ) { $this->ddwcaf_print_notification( esc_html__( 'Affiliate saved successfully.', 'affiliates-for-woocommerce' ) ); } $obj = new Admin\Affiliates\DDWCAF_Affiliates_List_Template( $this->ddwcaf_configuration ); ?>

15 ] ); esc_html_e( 'Add New', 'affiliates-for-woocommerce' ); ?>
prepare_items(); $obj->search_box( esc_html__( 'Search', 'affiliates-for-woocommerce' ), 'search-id' ); $obj->display(); ?>
ddwcaf_configuration ); $shows = [ '' => esc_html__( 'All', 'affiliates-for-woocommerce' ), 'pending' => esc_html__( 'Pending', 'affiliates-for-woocommerce' ), 'pending_payment' => esc_html__( 'Pending Payment', 'affiliates-for-woocommerce' ), 'paid' => esc_html__( 'Paid', 'affiliates-for-woocommerce' ), 'not_confirmed' => esc_html__( 'Not Confirmed', 'affiliates-for-woocommerce' ), 'cancelled' => esc_html__( 'Cancelled', 'affiliates-for-woocommerce' ), 'refunded' => esc_html__( 'Refunded', 'affiliates-for-woocommerce' ), ]; ?>

ddwcaf_print_status_views( $shows, [ new \DDWCAffiliates\Helper\Commission\DDWCAF_Commission_Helper( $this->ddwcaf_configuration ), 'ddwcaf_get_commissions_count' ] ); ?>
prepare_items(); $obj->search_box( esc_html__( 'Search by ID', 'affiliates-for-woocommerce' ), 'search-id' ); $obj->display(); ?>
ddwcaf_configuration ); } elseif ( 'create' === sanitize_text_field( wp_unslash( $_GET[ 'tab' ] ) ) ) { ddfw_upgrade_to_pro_section( [ 'image_url' => DDWCAF_PLUGIN_URL . 'assets/images/pro-pages/payout-wizard.webp', 'heading' => esc_html__( 'Advanced Payout Wizard', 'affiliates-for-woocommerce' ), 'description' => esc_html__( 'Streamline your payout process with a powerful, step-by-step wizard designed for efficiency and accuracy.', 'affiliates-for-woocommerce' ), 'list_features' => [ esc_html__( 'Fast and Efficient Bulk Payout Creation', 'affiliates-for-woocommerce' ), esc_html__( 'Filter Commissions by Custom Date Ranges', 'affiliates-for-woocommerce' ), esc_html__( 'Support for Multiple Payment References', 'affiliates-for-woocommerce' ), esc_html__( 'Real-time Payout Processing with Progress Bar', 'affiliates-for-woocommerce' ), esc_html__( 'Automated Affiliate Selection for Pending Commissions', 'affiliates-for-woocommerce' ), esc_html__( 'Detailed Payout Success and Error Reports', 'affiliates-for-woocommerce' ), ], 'upgrade_url' => 'https://devdiggers.com/product/woocommerce-affiliates/?utm_source=Affiliates for WooCommerce Plugin&utm_medium=Plugin Payout Wizard Page&utm_campaign=Affiliates for WooCommerce Pro', ] ); } } else { $obj = new Admin\Payouts\DDWCAF_Payouts_List_Template( $this->ddwcaf_configuration ); $shows = [ '' => esc_html__( 'All', 'affiliates-for-woocommerce' ), 'pending' => esc_html__( 'Pending', 'affiliates-for-woocommerce' ), 'completed' => esc_html__( 'Completed', 'affiliates-for-woocommerce' ), 'cancelled' => esc_html__( 'Cancelled', 'affiliates-for-woocommerce' ), ]; ?>

15 ] ); esc_html_e( 'Create', 'affiliates-for-woocommerce' ); ?> ddwcaf_print_status_views( $shows, [ new \DDWCAffiliates\Helper\Payout\DDWCAF_Payout_Helper( $this->ddwcaf_configuration ), 'ddwcaf_get_payouts_count' ] ); ?>
prepare_items(); $obj->search_box( esc_html__( 'Search by ID', 'affiliates-for-woocommerce' ), 'search-id' ); $obj->display(); ?>
ddwcaf_configuration ); ?>

prepare_items(); $obj->display(); ?>
ddwcaf_configuration ); $shows = [ '' => esc_html__( 'All', 'affiliates-for-woocommerce' ), 'converted' => esc_html__( 'Converted', 'affiliates-for-woocommerce' ), 'not_converted' => esc_html__( 'Not Converted', 'affiliates-for-woocommerce' ), ]; ?>

ddwcaf_print_status_views( $shows, [ new \DDWCAffiliates\Helper\Visit\DDWCAF_Visit_Helper( $this->ddwcaf_configuration ), 'ddwcaf_get_visits_count' ] ); ?>
prepare_items(); $obj->search_box( esc_html__( 'Search by ID', 'affiliates-for-woocommerce' ), 'search-id' ); $obj->display(); ?>
DDWCAF_PLUGIN_URL . 'assets/images/pro-pages/rules.webp', 'heading' => esc_html__( 'Smart Commission Rules', 'affiliates-for-woocommerce' ), 'description' => esc_html__( 'Automate your commission structures with advanced rules based on products, categories, or user roles.', 'affiliates-for-woocommerce' ), 'list_features' => [ esc_html__( 'Product-Specific Commission Rates', 'affiliates-for-woocommerce' ), esc_html__( 'Category-Based Commission Logic', 'affiliates-for-woocommerce' ), esc_html__( 'User Role Based Commission Overrides', 'affiliates-for-woocommerce' ), esc_html__( 'Tiered & Multi-Level Commission Support', 'affiliates-for-woocommerce' ), ], 'upgrade_url' => 'https://devdiggers.com/product/woocommerce-affiliates/?utm_source=Affiliates for WooCommerce Plugin&utm_medium=Plugin Rules Page&utm_campaign=Affiliates for WooCommerce Pro', ] ); } /** * Get affiliate registration fields list function * * @return void */ public function ddwcaf_get_affiliate_registration_fields_list() { if ( ! empty( $_GET[ 'action' ] ) && ( 'add' === sanitize_text_field( wp_unslash( $_GET[ 'action' ] ) ) || 'edit' === sanitize_text_field( wp_unslash( $_GET[ 'action' ] ) ) ) ) { ddfw_upgrade_to_pro_section( [ 'image_url' => DDWCAF_PLUGIN_URL . 'assets/images/pro-pages/registration-fields.webp', 'heading' => esc_html__( 'Custom Registration Fields', 'affiliates-for-woocommerce' ), 'description' => esc_html__( 'Gather specific data from your affiliates with a fully customizable registration form.', 'affiliates-for-woocommerce' ), 'list_features' => [ esc_html__( 'Multiple Field Types (Text, Select, Checkbox, etc.)', 'affiliates-for-woocommerce' ), esc_html__( 'Mandatory & Optional Field Controls', 'affiliates-for-woocommerce' ), esc_html__( 'User Meta Integration', 'affiliates-for-woocommerce' ), esc_html__( 'Custom Labeling and Tooltips', 'affiliates-for-woocommerce' ), ], 'upgrade_url' => 'https://devdiggers.com/product/woocommerce-affiliates/?utm_source=Affiliates for WooCommerce Plugin&utm_medium=Plugin Add/Edit Registration Field Page&utm_campaign=Affiliates for WooCommerce Pro', ] ); } else { if ( ! empty( $_GET[ 'status' ] ) && 'saved' === sanitize_text_field( wp_unslash( $_GET[ 'status' ] ) ) ) { $this->ddwcaf_print_notification( esc_html__( 'Field saved successfully.', 'affiliates-for-woocommerce' ) ); } if ( ! empty( $_POST[ 'ddwcaf_reset_affiliate_registration_fields' ] ) && ! empty( $_POST[ 'ddwcaf_nonce' ] ) && wp_verify_nonce( $_POST[ 'ddwcaf_nonce' ], 'ddwcaf_nonce_action' ) ) { $this->affiliate_helper->ddwcaf_delete_affiliate_registration_fields(); $this->ddwcaf_print_notification( esc_html__( 'Registration fields are reset to default now.', 'affiliates-for-woocommerce' ) ); } $obj = new Admin\Registration\DDWCAF_Affiliate_Registration_Fields_Template( $this->ddwcaf_configuration ); ?>

15 ] ); esc_html_e( 'Add New', 'affiliates-for-woocommerce' ); ?>

20 ] ); ?>


' . esc_html( $this->ddwcaf_configuration[ 'affiliate_registration_form_shortcode' ] ) . '' ); ?>

prepare_items(); $obj->search_box( esc_html__( 'Search', 'affiliates-for-woocommerce' ), 'search-id' ); $obj->display(); ?>
DDWCAF_PLUGIN_URL . 'assets/images/pro-pages/creatives.webp', 'heading' => esc_html__( 'Marketing Assets for Affiliates', 'affiliates-for-woocommerce' ), 'description' => esc_html__( 'Provide your affiliates with professional banners and text links to improve their marketing efforts.', 'affiliates-for-woocommerce' ), 'list_features' => [ esc_html__( 'Visual Banner Ads Management', 'affiliates-for-woocommerce' ), esc_html__( 'Custom Text Link Distribution', 'affiliates-for-woocommerce' ), esc_html__( 'Easy Copy-to-Clipboard Links', 'affiliates-for-woocommerce' ), esc_html__( 'Organized Asset Categories', 'affiliates-for-woocommerce' ), ], 'upgrade_url' => 'https://devdiggers.com/product/woocommerce-affiliates/?utm_source=Affiliates for WooCommerce Plugin&utm_medium=Plugin Creatives Page&utm_campaign=Affiliates for WooCommerce Pro', ] ); } /** * Get General Configuration Template * * @return void */ public function ddwcaf_get_general_configuration_template() { new Admin\Configuration\DDWCAF_General_Configuration_Template( $this->ddwcaf_configuration ); } /** * Get Referrals Configuration Template * * @return void */ public function ddwcaf_get_referrals_configuration_template() { new Admin\Configuration\DDWCAF_Referrals_Configuration_Template( $this->ddwcaf_configuration ); } /** * Get Fraud Prevention Configuration Template * * @return void */ public function ddwcaf_get_fraud_configuration_template() { ddfw_upgrade_to_pro_section( [ 'image_url' => DDWCAF_PLUGIN_URL . 'assets/images/pro-pages/fraud-prevention.webp', 'heading' => esc_html__( 'Stop Paying Commission on Self Referrals', 'affiliates-for-woocommerce' ), 'description' => esc_html__( 'Self referral is the most common way an affiliate program leaks money. Pro checks every referral before a commission is created and holds the doubtful ones for your review.', 'affiliates-for-woocommerce' ), 'list_features' => [ esc_html__( 'Matching email, IP address, browser and billing details', 'affiliates-for-woocommerce' ), esc_html__( 'Flag for review or refuse outright, and refuse when the affiliate used their own coupon', 'affiliates-for-woocommerce' ), esc_html__( 'New customers only, no commission on free orders and a minimum order total', 'affiliates-for-woocommerce' ), esc_html__( 'Refund and chargeback clawback against the next payout', 'affiliates-for-woocommerce' ), esc_html__( 'Blocked emails, domains and IP addresses', 'affiliates-for-woocommerce' ), esc_html__( 'Admin email when a commission is flagged', 'affiliates-for-woocommerce' ), ], 'upgrade_url' => 'https://devdiggers.com/product/woocommerce-affiliates/?utm_source=Affiliates for WooCommerce Plugin&utm_medium=Plugin Fraud Prevention Tab&utm_campaign=Affiliates for WooCommerce Pro', ] ); } /** * Get Social Promotion Configuration Template * * @return void */ public function ddwcaf_get_social_promotion_configuration_template() { ddfw_upgrade_to_pro_section( [ 'image_url' => DDWCAF_PLUGIN_URL . 'assets/images/pro-pages/social-promotion.webp', 'heading' => esc_html__( 'Social Media Sharing', 'affiliates-for-woocommerce' ), 'description' => esc_html__( 'Enable affiliates to share their referral links across major social networks with a single click.', 'affiliates-for-woocommerce' ), 'list_features' => [ esc_html__( 'Facebook, Twitter/X, WhatsApp and Various Social Networks Support', 'affiliates-for-woocommerce' ), esc_html__( 'Custom Share Titles and Content', 'affiliates-for-woocommerce' ), esc_html__( 'Social Media Preview Optimization', 'affiliates-for-woocommerce' ), esc_html__( 'Pinterest Image Integration', 'affiliates-for-woocommerce' ), ], 'upgrade_url' => 'https://devdiggers.com/product/woocommerce-affiliates/?utm_source=Affiliates for WooCommerce Plugin&utm_medium=Plugin Social Promotion Page&utm_campaign=Affiliates for WooCommerce Pro', ] ); } /** * Get Commissions Configuration Template * * @return void */ public function ddwcaf_get_commissions_configuration_template() { new Admin\Configuration\DDWCAF_Commissions_Configuration_Template( $this->ddwcaf_configuration ); } /** * Get Payouts Configuration Template * * @return void */ public function ddwcaf_get_payouts_configuration_template() { new Admin\Configuration\DDWCAF_Payouts_Configuration_Template( $this->ddwcaf_configuration ); } /** * Get Shortcodes Configuration Template * * @return void */ public function ddwcaf_get_shortcodes_configuration_template() { new Admin\Configuration\DDWCAF_Shortcodes_Configuration_Template( $this->ddwcaf_configuration ); } /** * Get Emails Configuration Template * * @return void */ public function ddwcaf_get_emails_configuration_template() { ddfw_upgrade_to_pro_section( [ 'image_url' => DDWCAF_PLUGIN_URL . 'assets/images/pro-pages/emails.webp', 'heading' => esc_html__( 'Affiliate Email Notifications', 'affiliates-for-woocommerce' ), 'description' => esc_html__( 'Keep your affiliates informed with automated emails for registration, approvals, and commission updates.', 'affiliates-for-woocommerce' ), 'list_features' => [ esc_html__( 'Fully Customizable Email Templates', 'affiliates-for-woocommerce' ), esc_html__( 'Support for Multiple Event Triggers', 'affiliates-for-woocommerce' ), esc_html__( 'Dynamic Placeholders for Personalization', 'affiliates-for-woocommerce' ), esc_html__( 'Admin and Affiliate Specific Notifications', 'affiliates-for-woocommerce' ), ], 'upgrade_url' => 'https://devdiggers.com/product/woocommerce-affiliates/?utm_source=Affiliates for WooCommerce Plugin&utm_medium=Plugin Emails Page&utm_campaign=Affiliates for WooCommerce Pro', ] ); } /** * Get Endpoints Configuration Template * * @return void */ public function ddwcaf_get_endpoints_configuration_template() { ddfw_upgrade_to_pro_section( [ 'image_url' => DDWCAF_PLUGIN_URL . 'assets/images/pro-pages/endpoints.webp', 'heading' => esc_html__( 'Customizable Affiliate Dashboard Endpoints', 'affiliates-for-woocommerce' ), 'description' => esc_html__( 'Customize your affiliate dashboard structure by defining unique URL endpoints for each section.', 'affiliates-for-woocommerce' ), 'list_features' => [ esc_html__( 'Custom Slug Names for All Dashboard Tabs', 'affiliates-for-woocommerce' ), esc_html__( 'Enable/Disable Specific Dashboard Sections', 'affiliates-for-woocommerce' ), esc_html__( 'Unique Page Title Customization', 'affiliates-for-woocommerce' ), esc_html__( 'Seamless Integration with WooCommerce Endpoints', 'affiliates-for-woocommerce' ), esc_html__( 'SEO-Friendly Affiliate Link Structure', 'affiliates-for-woocommerce' ), ], 'upgrade_url' => 'https://devdiggers.com/product/woocommerce-affiliates/?utm_source=Affiliates for WooCommerce Plugin&utm_medium=Plugin Endpoints Page&utm_campaign=Affiliates for WooCommerce Pro', ] ); } /** * Get License Configuration Template * * @return void */ public function ddwcaf_get_license_configuration_template() { new Admin\Configuration\DDWCAF_License_Configuration_Template( $this->ddwcaf_configuration ); } /** * Get Layout Configuration Template * * @return void */ public function ddwcaf_get_layout_configuration_template() { new Admin\Configuration\DDWCAF_Layout_Configuration_Template( $this->ddwcaf_configuration ); } /** * Enqueue admin scripts function * * @return scripts */ public function ddwcaf_enqueue_admin_scripts() { global $post_type; if ( $this->dashboard->is_a_plugin_page() ) { $menu = ! empty( $_GET['menu'] ) ? sanitize_text_field( wp_unslash( $_GET['menu'] ) ) : ''; $action = ! empty( $_GET['action'] ) ? sanitize_text_field( wp_unslash( $_GET['action'] ) ) : ''; if ( 'affiliates' === $menu && 'view' === $action ) { // Enqueue Manage Affiliate assets wp_enqueue_style( 'ddwcaf-manage-affiliate-style', DDWCAF_PLUGIN_URL . 'assets/css/manage-affiliate.css', [ \DevDiggers\Framework\Includes\DDFW_Assets::$framework_css_handle ], filemtime( DDWCAF_PLUGIN_FILE . 'assets/css/manage-affiliate.css' ) ); wp_enqueue_script( 'chart-js', DDWCAF_PLUGIN_URL . 'assets/js/chart.js', [ 'jquery' ], filemtime( DDWCAF_PLUGIN_FILE . 'assets/js/chart.js' ) ); wp_enqueue_script( 'ddwcaf-admin-script', DDWCAF_PLUGIN_URL . 'assets/js/admin.js', [ 'wp-util', \DevDiggers\Framework\Includes\DDFW_Assets::$framework_js_handle ], filemtime( DDWCAF_PLUGIN_FILE . 'assets/js/admin.js' ) ); wp_register_script( 'ddwcaf-manage-affiliate-script', DDWCAF_PLUGIN_URL . 'assets/js/manage-affiliate.js', [ \DevDiggers\Framework\Includes\DDFW_Assets::$framework_js_handle, 'chart-js' ], filemtime( DDWCAF_PLUGIN_FILE . 'assets/js/manage-affiliate.js' ) ); } elseif ( 'payouts' === $menu && ! empty( $_GET['tab'] ) && 'manage' === sanitize_text_field( wp_unslash( $_GET['tab'] ) ) ) { // Enqueue Manage Payout assets (reuses manage-affiliate styles) wp_enqueue_style( 'ddwcaf-manage-affiliate-style', DDWCAF_PLUGIN_URL . 'assets/css/manage-affiliate.css', [], filemtime( DDWCAF_PLUGIN_FILE . 'assets/css/manage-affiliate.css' ) ); wp_enqueue_style( 'ddwcaf-admin-style', DDWCAF_PLUGIN_URL . 'assets/css/admin.css', [ \DevDiggers\Framework\Includes\DDFW_Assets::$framework_css_handle ], filemtime( DDWCAF_PLUGIN_FILE . 'assets/css/admin.css' ) ); wp_enqueue_script( 'ddwcaf-admin-script', DDWCAF_PLUGIN_URL . 'assets/js/admin.js', [ 'wp-util', \DevDiggers\Framework\Includes\DDFW_Assets::$framework_js_handle ], filemtime( DDWCAF_PLUGIN_FILE . 'assets/js/admin.js' ) ); wp_localize_script( 'ddwcaf-admin-script', 'ddwcafAdminObject', [ 'ajax' => [ 'ajaxUrl' => admin_url( 'admin-ajax.php' ), 'ajaxNonce' => wp_create_nonce( 'ddwcaf-nonce' ), ], 'i18n' => [ 'createPayoutError' => esc_html__( 'You need to select affiliates first!!', 'affiliates-for-woocommerce' ), 'removeRow' => esc_html__( 'Are you sure you want to remove this row?', 'affiliates-for-woocommerce' ), ], 'ddwcaf_configuration' => $this->ddwcaf_configuration, 'site_url' => site_url(), ] ); } else { wp_enqueue_style( 'ddwcaf-admin-style', DDWCAF_PLUGIN_URL . 'assets/css/admin.css', [ \DevDiggers\Framework\Includes\DDFW_Assets::$framework_css_handle ], filemtime( DDWCAF_PLUGIN_FILE . 'assets/css/admin.css' ) ); wp_enqueue_script( 'ddwcaf-admin-script', DDWCAF_PLUGIN_URL . 'assets/js/admin.js', [ 'wp-util', \DevDiggers\Framework\Includes\DDFW_Assets::$framework_js_handle ], filemtime( DDWCAF_PLUGIN_FILE . 'assets/js/admin.js' ) ); wp_localize_script( 'ddwcaf-admin-script', 'ddwcafAdminObject', [ 'ajax' => [ 'ajaxUrl' => admin_url( 'admin-ajax.php' ), 'ajaxNonce' => wp_create_nonce( 'ddwcaf-nonce' ), ], 'i18n' => [ 'createPayoutError' => esc_html__( 'You need to select affiliates first!!', 'affiliates-for-woocommerce' ), 'removeRow' => esc_html__( 'Are you sure you want to remove this row?', 'affiliates-for-woocommerce' ), ], 'ddwcaf_configuration' => $this->ddwcaf_configuration, 'site_url' => site_url(), ] ); } } } /** * Change the admin footer text function. * * @param string $footer_text text to be rendered in the footer. * @return string */ public function ddwcaf_set_admin_footer_text( $footer_text ) { if ( ! current_user_can( 'manage_woocommerce' ) || ! function_exists( 'wc_get_screen_ids' ) ) { return $footer_text; } $current_screen = get_current_screen(); $wc_pages = wc_get_screen_ids(); // Set only WC pages. $wc_pages = array_diff( $wc_pages, [ 'profile', 'user-edit' ] ); /** * Check to make sure we're on a plugin page. * * @since 1.0.0 */ if ( isset( $current_screen->base ) && 'devdiggers-plugins_page_ddwcaf-dashboard' === $current_screen->base ) { // Change the footer text. $footer_text = sprintf( /* translators: %s for a tag */ esc_html__( 'If you really like our plugin, please leave us a %s rating, we\'ll really appreciate it.', 'affiliates-for-woocommerce' ), '' ); } return $footer_text; } } }