/** * Create/Edit referral form. */ function affiliates_admin_referral_edit($referral_id = null) { global $wpdb, $affiliates_options; $output = ''; if (!current_user_can(AFFILIATES_ADMINISTER_AFFILIATES)) { wp_die(__('Access denied.', AFFILIATES_PLUGIN_DOMAIN)); } $current_url = (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $cancel_url = remove_query_arg('referral_id', remove_query_arg('action', $current_url)); $current_url = remove_query_arg('paged', $current_url); $current_url = remove_query_arg('affiliate_id', $current_url); if ($referral_id === null) { $referral_id = isset($_POST['referral_id']) ? intval($_POST['referral_id']) : null; } $affiliate_id = isset($_POST['affiliate_id']) ? intval($_POST['affiliate_id']) : null; $datetime = isset($_POST['datetime']) ? date('Y-m-d H:i:s', strtotime($_POST['datetime'])) : date('Y-m-d H:i:s', time()); $description = isset($_POST['description']) ? wp_strip_all_tags($_POST['description']) : ''; $amount = !empty($_POST['amount']) ? bcadd('0', $_POST['amount'], AFFILIATES_REFERRAL_AMOUNT_DECIMALS) : null; $currency_id = substr(strtoupper(isset($_POST['currency_id']) ? wp_strip_all_tags($_POST['currency_id']) : ''), 0, 3); $status = $affiliates_options->get_option('referrals_status', AFFILIATES_REFERRAL_STATUS_ACCEPTED); if (isset($_POST['status'])) { switch ($_POST['status']) { case AFFILIATES_REFERRAL_STATUS_ACCEPTED: case AFFILIATES_REFERRAL_STATUS_CLOSED: case AFFILIATES_REFERRAL_STATUS_PENDING: case AFFILIATES_REFERRAL_STATUS_REJECTED: $status = $_POST['status']; break; } } $reference = isset($_POST['reference']) ? wp_strip_all_tags($_POST['reference']) : ''; $saved = false; if (isset($_POST['save'])) { if (!wp_verify_nonce($_POST['referral-nonce'], 'save')) { wp_die(__('Access denied.', AFFILIATES_PLUGIN_DOMAIN)); } else { if (!empty($affiliate_id)) { if (empty($referral_id)) { add_action('affiliates_referral', 'affiliates_admin_referral_capture_id'); if (class_exists('Affiliates_Referral_WordPress')) { $r = new Affiliates_Referral_WordPress(); $r->add_referrals(array($affiliate_id), null, $description, null, null, $amount, $currency_id, $status, 'manual', $reference); } else { affiliates_add_referral($affiliate_id, null, $description, null, $amount, $currency_id, $status, 'manual', $reference); } remove_action('affiliates_referral', 'affiliates_admin_referral_capture_id'); global $captured_referral_id; if (isset($captured_referral_id)) { $referral_id = $captured_referral_id; $output .= '<br/>'; $output .= '<div class="info">' . __('The referral has been created.', AFFILIATES_PLUGIN_DOMAIN) . '</div>'; $saved = true; } else { $output .= '<br/>'; $output .= '<div class="warning">' . __('The referral has not been created. Duplicate?', AFFILIATES_PLUGIN_DOMAIN) . '</div>'; } } else { if (class_exists('Affiliates_Referral_WordPress')) { try { $r = new Affiliates_Referral_WordPress($referral_id); if ($r->update(array('affiliate_id' => intval($affiliate_id), 'datetime' => $datetime, 'description' => $description, 'amount' => $amount, 'currency_id' => $currency_id, 'status' => $status, 'reference' => $reference))) { $output .= '<br/>'; $output .= '<div class="info">' . __('The referral has been saved.', AFFILIATES_PLUGIN_DOMAIN) . '</div>'; $saved = true; } } catch (Exception $ex) { $output .= '<br/>'; $output .= '<div class="error">' . __('The referral could not be saved.', AFFILIATES_PLUGIN_DOMAIN) . '</div>'; } } else { if (affiliates_update_referral($referral_id, array('affiliate_id' => intval($affiliate_id), 'datetime' => $datetime, 'description' => $description, 'amount' => $amount, 'currency_id' => $currency_id, 'status' => $status, 'reference' => $reference))) { $output .= '<br/>'; $output .= '<div class="info">' . __('The referral has been saved.', AFFILIATES_PLUGIN_DOMAIN) . '</div>'; $saved = true; } } } } } } if ($referral_id !== null) { $referrals_table = _affiliates_get_tablename('referrals'); if ($referrals = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$referrals_table} WHERE referral_id = %d", $referral_id))) { if (count($referrals) > 0) { $referral = $referrals[0]; $affiliate_id = $referral->affiliate_id; $datetime = $referral->datetime; $description = $referral->description; $amount = $referral->amount; $currency_id = $referral->currency_id; $status = $referral->status; $reference = $referral->reference; } } } $output .= '<div class="referral">'; $output .= '<h2>'; if (empty($referral_id)) { $output .= __('New Referral', AFFILIATES_PLUGIN_DOMAIN); } else { $output .= __('Edit Referral', AFFILIATES_PLUGIN_DOMAIN); } $output .= '</h2>'; $output .= '<form id="referral" action="' . $current_url . '" method="post">'; $output .= '<div>'; if ($referral_id) { $output .= sprintf('<input type="hidden" name="referral_id" value="%d" />', intval($referral_id)); } $output .= '<input type="hidden" name="action" value="edit" />'; $output .= '<p>'; $output .= '<label>'; $output .= '<span class="title">' . __('Affiliate', AFFILIATES_PLUGIN_DOMAIN) . '</span>'; $output .= ' '; $affiliates = affiliates_get_affiliates(true, true); $output .= '<select name="affiliate_id">'; foreach ($affiliates as $affiliate) { if ($affiliate_id == $affiliate['affiliate_id']) { $selected = ' selected="selected" '; } else { $selected = ''; } $output .= '<option ' . $selected . ' value="' . esc_attr($affiliate['affiliate_id']) . '">' . esc_attr(stripslashes($affiliate['name'])) . '</option>'; } $output .= '</select>'; $output .= '</label>'; $output .= '</p>'; $output .= '<p>'; $output .= '<label>'; $output .= '<span class="title">' . __('Date & Time', AFFILIATES_PLUGIN_DOMAIN) . '</span>'; $output .= ' '; $output .= sprintf('<input type="text" name="datetime" value="%s" />', esc_attr($datetime)); $output .= ' '; $output .= '<span class="description">' . __('Format : YYYY-MM-DD HH:MM:SS', AFFILIATES_PLUGIN_DOMAIN) . '</span>'; $output .= '</label>'; $output .= '</p>'; $output .= '<p>'; $output .= '<label>'; $output .= '<span class="title">' . __('Description', AFFILIATES_PLUGIN_DOMAIN) . '</span>'; $output .= ' '; $output .= '<textarea name="description">'; $output .= stripslashes($description); $output .= '</textarea>'; $output .= '</label>'; $output .= '</p>'; $output .= '<p>'; $output .= '<label>'; $output .= '<span class="title">' . __('Amount', AFFILIATES_PLUGIN_DOMAIN) . '</span>'; $output .= ' '; $output .= sprintf('<input type="text" name="amount" value="%s" />', esc_attr($amount)); $output .= '</label>'; $output .= '</p>'; $output .= '<p>'; $output .= '<label>'; $output .= '<span class="title">' . __('Currency ID', AFFILIATES_PLUGIN_DOMAIN) . '</span>'; $output .= ' '; $output .= sprintf('<input type="text" name="currency_id" value="%s" />', esc_attr($currency_id)); $output .= ' '; $output .= '<span class="description">' . __('* Required when an amount is provided. Examples: USD, GBP, EUR, ...', AFFILIATES_PLUGIN_DOMAIN) . '</span>'; $output .= '</label>'; $output .= '</p>'; $status_descriptions = array(AFFILIATES_REFERRAL_STATUS_ACCEPTED => __('Accepted', AFFILIATES_PLUGIN_DOMAIN), AFFILIATES_REFERRAL_STATUS_CLOSED => __('Closed', AFFILIATES_PLUGIN_DOMAIN), AFFILIATES_REFERRAL_STATUS_PENDING => __('Pending', AFFILIATES_PLUGIN_DOMAIN), AFFILIATES_REFERRAL_STATUS_REJECTED => __('Rejected', AFFILIATES_PLUGIN_DOMAIN)); $output .= '<p>'; $output .= '<label>'; $output .= '<span class="title">' . __('Status', AFFILIATES_PLUGIN_DOMAIN) . '</span>'; $output .= ' '; $output .= '<select name="status">'; foreach ($status_descriptions as $key => $label) { $selected = $key == $status ? ' selected="selected" ' : ''; $output .= '<option ' . $selected . ' value="' . esc_attr($key) . '">' . $label . '</option>'; } $output .= '</select>'; $output .= '</label>'; $output .= '</p>'; $output .= '<p>'; $output .= '<label>'; $output .= '<span class="title">' . __('Reference', AFFILIATES_PLUGIN_DOMAIN) . '</span>'; $output .= ' '; $output .= sprintf('<input type="text" name="reference" value="%s" />', esc_attr($reference)); $output .= '</label>'; $output .= '</p>'; $output .= wp_nonce_field('save', 'referral-nonce', true, false); $output .= sprintf('<input class="button" type="submit" name="save" value="%s"/>', __('Save', AFFILIATES_PLUGIN_DOMAIN)); $output .= ' '; $output .= sprintf('<a class="cancel" href="%s">%s</a>', $cancel_url, $saved ? __('Back', AFFILIATES_PLUGIN_DOMAIN) : __('Cancel', AFFILIATES_PLUGIN_DOMAIN)); $output .= '</div>'; $output .= '</form>'; $output .= '</div>'; echo $output; affiliates_footer(); }
/** * Record a referral when a new user has been referred by an affiliate. * * @param int $user_id * @param array $params registration parameters */ public static function user_register($user_id, $params = array()) { extract($params); if (!isset($force)) { $force = false; } if (!isset($type)) { $type = null; } if (!$force && is_admin()) { if (!apply_filters('affiliates_user_registration_on_admin', false)) { return; } } if ($user = get_user_by('id', $user_id)) { $post_id = null; if ($post = get_post()) { $post_id = $post->ID; } switch ($type) { case 'customer': $description = sprintf('Customer Registration %s', esc_html($user->user_login)); break; default: $description = sprintf('User Registration %s', esc_html($user->user_login)); } $base_amount = null; if (AFFILIATES_PLUGIN_NAME != 'affiliates') { $base_amount = get_option('aff_user_registration_base_amount', null); } $amount = null; if (empty($base_amount)) { $amount = get_option('aff_user_registration_amount', '0'); } $currency = get_option('aff_user_registration_currency', Affiliates::DEFAULT_CURRENCY); $user_registration_referral_status = get_option('aff_user_registration_referral_status', get_option('aff_default_referral_status', AFFILIATES_REFERRAL_STATUS_ACCEPTED)); $data = array('user_login' => array('title' => 'Username', 'domain' => AFFILIATES_PLUGIN_DOMAIN, 'value' => $user->user_login), 'user_email' => array('title' => 'Email', 'domain' => AFFILIATES_PLUGIN_DOMAIN, 'value' => $user->user_email), 'first_name' => array('title' => 'First Name', 'domain' => AFFILIATES_PLUGIN_DOMAIN, 'value' => $user->first_name), 'last_name' => array('title' => 'Last Name', 'domain' => AFFILIATES_PLUGIN_DOMAIN, 'value' => $user->last_name), 'base_amount' => array('title' => 'Base Amount', 'domain' => AFFILIATES_PLUGIN_DOMAIN, 'value' => $base_amount)); if (class_exists('Affiliates_Referral_WordPress')) { $r = new Affiliates_Referral_WordPress(); $affiliate_id = $r->evaluate($post_id, $description, $data, $base_amount, $amount, $currency, $user_registration_referral_status, self::REFERRAL_TYPE); } else { $affiliate_id = affiliates_suggest_referral($post_id, $description, $data, $amount, $currency, $user_registration_referral_status, self::REFERRAL_TYPE); } } }