/** * Process affiliate deletion requests * * @since 1.2 * @param $data array * @return void */ function affwp_process_affiliate_deletion($data) { if (!is_admin()) { return; } if (!current_user_can('manage_affiliates')) { wp_die(__('You do not have permission to delete affiliate accounts', 'affiliate-wp'), __('Error', 'affiliate-wp'), array('response' => 403)); } if (!wp_verify_nonce($data['affwp_delete_affiliates_nonce'], 'affwp_delete_affiliates_nonce')) { wp_die(__('Security check failed', 'affiliate-wp'), __('Error', 'affiliate-wp'), array('response' => 403)); } if (empty($data['affwp_affiliate_ids']) || !is_array($data['affwp_affiliate_ids'])) { wp_die(__('No affiliate IDs specified for deletion', 'affiliate-wp'), __('Error', 'affiliate-wp'), array('response' => 400)); } $to_delete = array_map('absint', $data['affwp_affiliate_ids']); $delete_users = isset($data['affwp_delete_users_too']) && current_user_can('delete_users'); foreach ($to_delete as $affiliate_id) { if ($delete_users) { require_once ABSPATH . 'wp-admin/includes/user.php'; $user_id = affwp_get_affiliate_user_id($affiliate_id); if ((int) $user_id !== (int) get_current_user_id()) { // Don't allow a user to delete themself wp_delete_user($user_id); } } affwp_delete_affiliate($affiliate_id, true); } wp_safe_redirect(admin_url('admin.php?page=affiliate-wp-affiliates&affwp_notice=affiliate_deleted')); exit; }
/** * Restrict commission to purchased products in Easy Digital Downloads * * Make sure to enable "Ignore Zero Referrals?" from Affiliates -> Settings -> Misc * If you would like 0.00 referrals to be ignored. */ function affwp_edd_restrict_commission_to_purchased_products($referral_amount, $affiliate_id, $amount, $reference, $product_id) { // get referring affiliate ID $affiliate_id = affiliate_wp()->tracking->get_affiliate_id(); // get user ID of referring affiliate $user_id = affwp_get_affiliate_user_id($affiliate_id); if (!(function_exists('edd_has_user_purchased') && edd_has_user_purchased($user_id, array($product_id)))) { $referral_amount = 0.0; } return $referral_amount; }
/** * Show a different image/banner/logo based on which affiliate is being tracked * * @since 1.0 * @return string Image banner of affiliate */ function affwp_affiliate_banners_get_banner() { // get the affiliate ID from query string $ref_var = isset($_GET[affiliate_wp()->tracking->get_referral_var()]) ? $_GET[affiliate_wp()->tracking->get_referral_var()] : ''; // if affiliate ID is set in query string make sure they're actually an affiliate if (isset($ref_var) && affwp_is_affiliate(affwp_get_affiliate_user_id($ref_var))) { $affiliate_id = $ref_var; } elseif (affiliate_wp()->tracking->get_affiliate_id()) { $affiliate_id = affiliate_wp()->tracking->get_affiliate_id(); } else { $affiliate_id = ''; } // built out the image based on the image path of the affiliate return '<img src="' . affwp_affiliate_banners_get_image($affiliate_id) . '" />'; }
/** * Plugin Name: AffiliateWP - Custom Admin Registration Email * Plugin URI: http://affiliatewp.com * Description: Adds the Affiliate's Email and Affiliate ID to the admin registration email * Author: Andrew Munro * Author URI: http://affiliatewp.com * Version: 1.0 */ function affwp_custom_registration_email($message, $args) { $user_info = get_userdata(affwp_get_affiliate_user_id($args['affiliate_id'])); $user_url = $user_info->user_url; $promotion_method = get_user_meta(affwp_get_affiliate_user_id($args['affiliate_id']), 'affwp_promotion_method', true); $message = "A new affiliate has registered on your site, " . home_url() . "\n\n"; $message .= sprintf(__('Name: %s', 'affiliate-wp'), $args['name']) . "\n\n"; // Affiliate's Email Address $message .= sprintf(__('Email: %s', 'affiliate-wp'), affwp_get_affiliate_email($args['affiliate_id'])) . "\n\n"; // Affiliate's ID $message .= sprintf(__('Affiliate ID: %s', 'affiliate-wp'), $args['affiliate_id']) . "\n\n"; if ($user_url) { $message .= __('Website URL: ', 'affiliate-wp') . esc_url($user_url) . "\n\n"; } if ($promotion_method) { $message .= __('Promotion method: ', 'affiliate-wp') . esc_attr($promotion_method) . "\n\n"; } if (affiliate_wp()->settings->get('require_approval')) { $message .= sprintf("Review pending applications: %s\n\n", admin_url('admin.php?page=affiliate-wp-affiliates&status=pending')); } return $message; }
/** * Send email on new referrals * * @since 1.6 * @param int $affiliate_id The ID of the registered affiliate * @param array $referral */ function affwp_notify_on_new_referral($affiliate_id = 0, $referral) { $user_id = affwp_get_affiliate_user_id($affiliate_id); if (!get_user_meta($user_id, 'affwp_referral_notifications', true)) { return; } if (empty($affiliate_id)) { return; } if (empty($referral)) { return; } $emails = new Affiliate_WP_Emails(); $emails->__set('affiliate_id', $affiliate_id); $emails->__set('referral', $referral); $email = affwp_get_affiliate_email($affiliate_id); $subject = affiliate_wp()->settings->get('referral_subject', __('Referral Awarded!', 'affiliate-wp')); $message = affiliate_wp()->settings->get('referral_email', false); $amount = html_entity_decode(affwp_currency_filter($referral->amount), ENT_COMPAT, 'UTF-8'); if (!$message) { $message = sprintf(__('Congratulations %s!', 'affiliate-wp'), affiliate_wp()->affiliates->get_affiliate_name($affiliate_id)) . "\n\n"; $message .= sprintf(__('You have been awarded a new referral of %s on %s!', 'affiliate-wp'), $amount, home_url()) . "\n\n"; $message .= sprintf(__('log into your affiliate area to view your earnings or disable these notifications: %s', 'affiliate-wp'), affiliate_wp()->login->get_login_url()) . "\n\n"; } // $args is setup for backwards compatibility with < 1.6 $args = array('affiliate_id' => $affiliate_id, 'amount' => $referral->amount, 'referral' => $referral); $subject = apply_filters('affwp_new_referral_subject', $subject, $args); $message = apply_filters('affwp_new_referral_email', $message, $args); if (apply_filters('affwp_notify_on_new_referral', true, $referral)) { $emails->send($email, $subject, $message); } }
/** * Get the referral format value * * @since 1.6 * @param string $format referral format passed in via [affiliate_referral_url] shortcode * @return string affiliate ID or username */ function affwp_get_referral_format_value($format = '', $affiliate_id = 0) { // get affiliate's user ID $user_id = affwp_get_affiliate_user_id($affiliate_id); if (!$format) { $format = affwp_get_referral_format(); } switch ($format) { case 'username': $value = urlencode(affwp_get_affiliate_username($affiliate_id)); break; case 'id': default: $value = affwp_get_affiliate_id($user_id); break; } return apply_filters('affwp_get_referral_format_value', $value, $format, $affiliate_id); }
/** * Get the affiliate's gravatar * * @since 1.0.0 */ public function get_affiliate_gravatar() { $affiliate_id = $this->get_affiliate_id(); if ($affiliate_id) { $args = apply_filters('affwp_affiliate_info_gravatar_defaults', array('size' => 96, 'default' => '', 'alt' => $this->get_affiliate_name())); $email = affwp_get_affiliate_email($affiliate_id); return get_avatar(affwp_get_affiliate_user_id($affiliate_id), $args['size'], $args['default'], $args['alt']); } return false; }
/** * Referral Payout * @since 1.6 * @version 1.0 */ public function referral_payouts($referral_id, $new_status, $old_status) { // If the referral id isn't valid if (!is_numeric($referral_id)) { return; } // Get the referral object $referral = affwp_get_referral($referral_id); // Get the user id $user_id = affwp_get_affiliate_user_id($referral->affiliate_id); if (array_key_exists($currency, $this->point_types) && $this->prefs['referrals']['pay'] == 'store') { $amount = $referral->amount; } elseif ($this->prefs['referrals']['pay'] == 'amount') { $amount = $this->prefs['referrals']['creds']; } else { $amount = $this->core->number($referral->amount / $this->prefs['referrals']['creds']); } $amount = apply_filters('mycred_affiliatewp_payout', $amount, $referral, $new_status, $old_status, $this); if ('paid' === $new_status) { $this->core->add_creds('affiliate_referral', $user_id, $amount, $this->prefs['referrals']['log'], $referral_id, array('ref_type' => 'post'), $this->mycred_type); } elseif ('paid' === $old_status && 'unpaid' === $new_status) { $this->core->add_creds('affiliate_referral_refund', $user_id, 0 - $amount, $this->prefs['referrals']['remove_log'], $referral_id, array('ref_type' => 'post'), $this->mycred_type); } }
/** * Shows the affiliate drop down on the discount edit / add screens * * @access public * @since 1.1 */ public function discount_edit($discount_id = 0) { global $wpdb; add_filter('affwp_is_admin_page', '__return_true'); affwp_admin_scripts(); $affiliate_id = $wpdb->get_var($wpdb->prepare("SELECT meta_value FROM {$wpdb->usermeta} WHERE meta_key = %s", 'affwp_discount_rcp_' . $discount_id)); $user_id = affwp_get_affiliate_user_id($affiliate_id); $user = get_userdata($user_id); $user_name = $user ? $user->user_login : ''; ?> <table class="form-table"> <tbody> <tr class="form-field"> <th scope="row" valign="top"> <label for="affiliate_id"><?php _e('Affiliate Discount?', 'affiliate-wp'); ?> </label> </th> <td> <span class="affwp-ajax-search-wrap"> <input type="hidden" name="user_id" id="user_id" value="<?php echo esc_attr($user_id); ?> " /> <input type="text" name="user_name" id="user_name" value="<?php echo esc_attr($user_name); ?> " class="affwp-user-search" data-affwp-status="active" autocomplete="off" style="width: 300px;" /> <img class="affwp-ajax waiting" src="<?php echo admin_url('images/wpspin_light.gif'); ?> " style="display: none;"/> </span> <div id="affwp_user_search_results"></div> <p class="description"><?php _e('If you would like to connect this discount to an affiliate, enter the name of the affiliate it belongs to.', 'affiliate-wp'); ?> </p> </td> </tr> </tbody> </table> <?php }
/** * Updates an affiliate's profile settings * * @since 1.0 * @return bool */ function affwp_update_profile_settings($data = array()) { if (!is_user_logged_in()) { return false; } if (empty($data['affiliate_id'])) { return false; } if (affwp_get_affiliate_id() != $data['affiliate_id'] && !current_user_can('manage_affiliates')) { return false; } $affiliate_id = absint($data['affiliate_id']); $user_id = affwp_get_affiliate_user_id($affiliate_id); if (!empty($data['referral_notifications'])) { update_user_meta($user_id, 'affwp_referral_notifications', '1'); } else { delete_user_meta($user_id, 'affwp_referral_notifications'); } if (!empty($data['payment_email']) && is_email($data['payment_email'])) { affiliate_wp()->affiliates->update($affiliate_id, array('payment_email' => $data['payment_email']), '', 'affiliate'); } do_action('affwp_update_affiliate_profile_settings', $data); if (!empty($_POST['affwp_action'])) { wp_redirect(add_query_arg('affwp_notice', 'profile-updated')); exit; } }
/** * Save affiliate details in admin backend. */ public function process_update_affiliate() { $data = array_map('esc_attr', $_POST); $user_id = affwp_get_affiliate_user_id(absint($_GET['affiliate_id'])); $bank_details = array('bank_name' => $data['bank_name'], 'account_name' => $data['account_name'], 'account_number' => $data['account_number'], 'phone_number' => $data['phone_number']); update_user_meta($user_id, 'affwp_bank_details', $bank_details); }
function test_get_affiliate_user_id() { $this->assertEquals($this->_user_id, affwp_get_affiliate_user_id($this->_affiliate_id)); }
/** * Plugin Name: AffiliateWP - Auto Enable Affiliate Referral Notifications * Plugin URI: http://affiliatewp.com * Description: Auto enables the "Enable New Referral Notifications" checkbox on the "Settings" tab of the affiliate area when an affiliate is added * Author: Andrew Munro * Author URI: http://affiliatewp.com * Version: 1.0 */ function affwp_custom_auto_enable_affiliate_referral_notifications($add) { update_user_meta(affwp_get_affiliate_user_id($add), 'affwp_referral_notifications', true); }
function after_referral_completed($referral_id, $new_status, $old_status) { if ('paid' == $new_status) { $referral = affiliate_wp()->referrals->get_by('referral_id', $referral_id); $affiliate_id = $referral->affiliate_id; $user_id = affwp_get_affiliate_user_id($affiliate_id); $points = get_user_meta($user_id, 'loyalty_points', true) + 1; update_user_meta($user_id, 'loyalty_points', $points); } }
/** * Plugin Name: AffiliateWP - Affiliate role on registration * Plugin URI: http://affiliatewp.com * Description: Sets an affiliate user's role to a specific role when being added as an affiliate * Author: Pippin Williamson * Author URI: http://pippinsplugins.com * Version: 1.0 */ function pw_affwp_set_role_on_registration($affiliate_id = 0) { $user_id = affwp_get_affiliate_user_id($affiliate_id); $user = new WP_User($user_id); $user->add_role('affiliate'); }
" /> </div> <div class="affwp-wrap affwp-send-notifications-wrap"> <input id="affwp-referral-notifications" type="checkbox" name="referral_notifications" value="1" <?php checked(true, get_user_meta(affwp_get_affiliate_user_id($affiliate_id), 'affwp_referral_notifications', true)); ?> /> <label for="affwp-referral-notifications"><?php _e('Enable New Referral Notifications', 'affiliate-wp'); ?> </label> </div> <?php do_action('affwp_affiliate_dashboard_before_submit', $affiliate_id, affwp_get_affiliate_user_id($affiliate_id)); ?> <div class="affwp-save-profile-wrap"> <input type="hidden" name="affwp_action" value="update_profile_settings" /> <input type="hidden" name="affiliate_id" value="<?php echo absint($affiliate_id); ?> " /> <input type="submit" class="button" value="<?php esc_attr_e('Save Profile Settings', 'affiliate-wp'); ?> " /> </div> </form>
/** * Shows the affiliate drop down on the discount edit / add screens * * @access public * @since 1.1 */ public function coupon_option() { global $post; add_filter('affwp_is_admin_page', '__return_true'); affwp_admin_scripts(); $affiliate_id = get_post_meta($post->ID, 'affwp_discount_affiliate', true); $user_id = affwp_get_affiliate_user_id($affiliate_id); $user = get_userdata($user_id); $user_name = $user ? $user->user_login : ''; ?> <p class="form-field affwp-woo-coupon-field"> <label for="user_name"><?php _e('Affiliate Discount?', 'affiliate-wp'); ?> </label> <span class="affwp-ajax-search-wrap"> <span class="affwp-woo-coupon-input-wrap"> <input type="hidden" name="user_id" id="user_id" value="<?php echo esc_attr($user_id); ?> " /> <input type="text" name="user_name" id="user_name" value="<?php echo esc_attr($user_name); ?> " class="affwp-user-search" data-affwp-status="active" autocomplete="off" /> <img class="affwp-ajax waiting" src="<?php echo admin_url('images/wpspin_light.gif'); ?> " style="display: none;"/> </span> <span id="affwp_user_search_results"></span> <img class="help_tip" data-tip='<?php _e('If you would like to connect this discount to an affiliate, enter the name of the affiliate it belongs to.', 'affiliate-wp'); ?> ' src="<?php echo WC()->plugin_url(); ?> /assets/images/help.png" height="16" width="16" /> </span> </p> <?php }
/** * Shows the affiliate drop down on the coupon edit / add screens * * @access public * @since 1.3 */ public function coupon_edit($form) { add_filter('affwp_is_admin_page', '__return_true'); affwp_admin_scripts(); $coupon_id = !empty($_REQUEST['post']) ? absint($_REQUEST['post']) : 0; $affiliate_id = get_post_meta($coupon_id, 'affwp_coupon_affiliate', true); $user_id = affwp_get_affiliate_user_id($affiliate_id); $user = get_userdata($user_id); $user_name = $user ? $user->user_login : ''; ?> <div class="field affwp-coupon"> <th scope="row" valign="top"> <label for="user_name"><?php _e('Affiliate coupon?', 'affiliate-wp'); ?> </label> </th> <td> <span class="affwp-ajax-search-wrap"> <input type="hidden" name="user_id" id="user_id" value="<?php echo esc_attr($user_id); ?> " /> <input type="text" name="user_name" id="user_name" value="<?php echo esc_attr($user_name); ?> " class="affwp-user-search" data-affwp-status="active" autocomplete="off" /> <img class="affwp-ajax waiting" src="<?php echo admin_url('images/wpspin_light.gif'); ?> " style="display: none;"/> </span> <div id="affwp_user_search_results"></div> <p class="description"><?php _e('If you would like to connect this coupon to an affiliate, enter the name of the affiliate it belongs to.', 'affiliate-wp'); ?> </p> </td> </div> <?php }
/** * Get the referral format value * * @since 1.6 * @param string $format referral format passed in via [affiliate_referral_url] shortcode * @return string affiliate ID or username */ function affwp_get_referral_format_value($format = '', $affiliate_id = 0) { // get affiliate's user ID $user_id = affwp_get_affiliate_user_id($affiliate_id); if (!$format) { $format = affwp_get_referral_format(); } switch ($format) { case 'username': $value = affwp_get_affiliate_username($affiliate_id); break; case 'id': default: $value = affwp_get_affiliate_id($user_id); break; } return $value; }
/** * Email template tag: promo_method * The affiliate promo method * * @param int $affiliate_id * @return string promo_method */ function affwp_email_tag_promo_method($affiliate_id = 0) { return get_user_meta(affwp_get_affiliate_user_id($affiliate_id), 'affwp_promotion_method', true); }
<?php $user_id = affwp_get_affiliate_user_id($user); $user_credit_balance = get_user_meta($user_id, 'affwp_wc_credit_balance', true); if (empty($user_credit_balance)) { $user_credit_balance = 0; } ?> <table class="affwp-table"> <thead> <tr> <th><?php _e('Store Credits', 'affwp-scd'); ?> </th> </tr> </thead> <tbody> <tr> <td><?php echo affwp_currency_filter($user_credit_balance); ?> </td> </tr> </tbody> </table>
/** * Shows the affiliate drop down on the discount edit / add screens * * @access public * @since 1.7.5 */ public function coupon_option($edit) { global $wpdb; add_filter('affwp_is_admin_page', '__return_true'); affwp_admin_scripts(); $user_id = 0; $user_name = ''; if ($edit > 0) { $table = $wpdb->prefix . 'affiliate_wp_affiliatemeta'; $affiliate_id = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$table} WHERE meta_key = %s", 'affwp_discount_pmp_' . $edit)); } else { $affiliate_id = false; } if ($affiliate_id) { $user_id = affwp_get_affiliate_user_id($affiliate_id); $user = get_userdata($user_id); $user_name = $user ? $user->user_login : ''; } ?> <table class="form-table"> <tbody> <tr> <th scope="row" valign="top"><label for="user_name"><?php _e('Affiliate Discount?', 'affiliate-wp'); ?> </label></th> <td class="form-field affwp-pmp-coupon-field"> <span class="affwp-ajax-search-wrap"> <span class="affwp-pmp-coupon-input-wrap"> <input type="hidden" name="user_id" id="user_id" value="<?php echo esc_attr($user_id); ?> " /> <input type="text" name="user_name" id="user_name" value="<?php echo esc_attr($user_name); ?> " class="affwp-user-search" data-affwp-status="active" autocomplete="off" style="width:150px" /> <img class="affwp-ajax waiting" src="<?php echo admin_url('images/wpspin_light.gif'); ?> " style="display: none;"/> </span> <span id="affwp_user_search_results"></span> <small class="pmpro_lite"><?php _e('If you would like to connect this discount to an affiliate, enter the name of the affiliate it belongs to.', 'affiliate-wp'); ?> </small> </span> <?php wp_nonce_field('affwp_pmp_coupon_nonce', 'affwp_pmp_coupon_nonce'); ?> </td> </tr> </tbody> </table> <?php }
" /> </div> <div class="affwp-wrap affwp-send-notifications-wrap"> <input id="affwp-referral-notifications" type="checkbox" name="referral_notifications" value="1"<?php checked(true, get_user_meta(affwp_get_affiliate_user_id(affwp_get_affiliate_id()), 'affwp_referral_notifications', true)); ?> /> <label for="affwp-referral-notifications"><?php _e('Enable New Referral Notifications', 'affiliate-wp'); ?> </label> </div> <?php do_action('affwp_affiliate_dashboard_before_submit', affwp_get_affiliate_id(), affwp_get_affiliate_user_id(affwp_get_affiliate_id())); ?> <div class="affwp-save-profile-wrap"> <input type="hidden" name="affwp_action" value="update_profile_settings" /> <input type="hidden" name="affiliate_id" value="<?php echo esc_attr(affwp_get_affiliate_id()); ?> " /> <input type="submit" class="button" value="<?php esc_attr_e('Save Profile Settings', 'affiliate-wp'); ?> " /> </div> </form> </div>