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' );
?>
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' ] ); ?>
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' ] ); ?>
ddwcaf_configuration );
?>
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' ] ); ?>
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' ] ) . '' ); ?>
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;
}
}
}