function wpam_generate_refkey_from_affiliate_id($aff_id) { $db = new WPAM_Data_DataAccess(); $affiliateRepos1 = $db->getAffiliateRepository(); $wpam_refkey = NULL; $affiliate = $affiliateRepos1->loadBy(array('affiliateId' => $aff_id, 'status' => 'active')); if ($affiliate === NULL) { //affiliate with this ID does not exist WPAM_Logger::log_debug("generate_refkey_from_affiliate_id function - affiliate ID " . $aff_id . " does not exist"); } else { $default_creative_id = get_option(WPAM_PluginConfig::$DefaultCreativeId); if (!empty($default_creative_id)) { $creative = $db->getCreativesRepository()->load($default_creative_id); $linkBuilder = new WPAM_Tracking_TrackingLinkBuilder($affiliate, $creative); $strRefKey = $linkBuilder->getTrackingKey()->pack(); $refKey = new WPAM_Tracking_TrackingKey(); $refKey->unpack($strRefKey); $idGenerator = new WPAM_Tracking_UniqueIdGenerator(); $trackTokenModel = new WPAM_Data_Models_TrackingTokenModel(); $trackTokenModel->dateCreated = time(); $trackTokenModel->sourceAffiliateId = $aff_id; $trackTokenModel->sourceCreativeId = $refKey->getCreativeId(); $trackTokenModel->trackingKey = $idGenerator->generateId(); $trackTokenModel->referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : NULL; /* add a new visit so it doesn't fail while awarding commission */ $db->getTrackingTokenRepository()->insert($trackTokenModel); $db->getEventRepository()->quickInsert(time(), $trackTokenModel->trackingKey, 'visit'); /* */ $binConverter = new WPAM_Util_BinConverter(); $wpam_refkey = $binConverter->binToString($trackTokenModel->trackingKey); } } return $wpam_refkey; }
public static function record_click() { if (isset($_REQUEST[WPAM_PluginConfig::$RefKey]) && !empty($_REQUEST[WPAM_PluginConfig::$RefKey])) { //this is the old tracking code (deprecated). This will be removed once the new tracking system is functional. global $wpdb; $strRefKey = trim(strip_tags($_REQUEST[WPAM_PluginConfig::$RefKey])); $aff_id = ""; if (is_numeric($strRefKey)) { //wpam_refkey contains affiliate ID. If a record is found save it $query = "SELECT * FROM " . WPAM_AFFILIATES_TBL . " WHERE affiliateId = %d"; $affiliate = $wpdb->get_row($wpdb->prepare($query, $strRefKey)); if ($affiliate != null && $affiliate->status == "active") { $aff_id = $strRefKey; } } else { if (is_email($strRefKey)) { //wpam_refkey contains email. Find the ID associated with that email and save it $query = "SELECT * FROM " . WPAM_AFFILIATES_TBL . " WHERE email = %s"; $affiliate = $wpdb->get_row($wpdb->prepare($query, $strRefKey)); if ($affiliate != null && $affiliate->status == "active") { $aff_id = $affiliate->affiliateId; } } else { //TODO start - wpam_refkey contains long tracking key. Find affiliate ID from it and save it. This block of code will just be here for backwards compatibilty $refKey = new WPAM_Tracking_TrackingKey(); $refKey->unpack($strRefKey); $db = new WPAM_Data_DataAccess(); $affiliateRepos = $db->getAffiliateRepository(); $affiliateId = $affiliateRepos->getAffiliateIdFromRefKey($refKey->getAffiliateRefKey()); if ($affiliateId === NULL) { } else { $aff_id = $affiliateId; } } } //TODO end if (!empty($aff_id)) { $cookie_life_time = wpam_get_cookie_life_time(); setcookie('wpam_id', $aff_id, $cookie_life_time, "/", COOKIE_DOMAIN); } } //this will be the new affiliate link. A click will be tracked when wpam_id is present in the URL if (isset($_REQUEST[WPAM_PluginConfig::$wpam_id]) && !empty($_REQUEST[WPAM_PluginConfig::$wpam_id])) { $aff_id = trim(strip_tags($_REQUEST[WPAM_PluginConfig::$wpam_id])); $cookie_life_time = wpam_get_cookie_life_time(); setcookie('wpam_id', $aff_id, $cookie_life_time, "/", COOKIE_DOMAIN); $args = array(); $args['dateCreated'] = date("Y-m-d H:i:s", time()); $args['sourceAffiliateId'] = $aff_id; $args['trackingKey'] = uniqid(); //save a unique ID to avoid error $args['sourceCreativeId'] = ''; // remove this column from the click tracking menu in the settings $args['referer'] = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; $args['affiliateSubCode'] = ''; WPAM_Click_Tracking::insert_click_data($args); } }
public function processRequest($request) { $db = new WPAM_Data_DataAccess(); if (isset($request['viewDetail']) && is_numeric($request['viewDetail'])) { $affiliateFields = $db->getAffiliateFieldRepository()->loadMultipleBy(array('enabled' => true), array('order' => 'asc')); $id = (int) $request['viewDetail']; $model = $db->getAffiliateRepository()->load($id); if ($model == null) { wp_die("Invalid affiliate ID."); } if (isset($request['action']) && $request['action'] == 'saveInfo') { $validator = new WPAM_Validation_Validator(); //validate bounty type & amount if they're in the appropriate status if (!$model->isPending() && !$model->isBlocked() && !$model->isDeclined()) { $validator->addValidator('ddBountyType', new WPAM_Validation_SetValidator(array('fixed', 'percent'))); if ($request['ddBountyType'] === 'fixed') { $validator->addValidator('txtBountyAmount', new WPAM_Validation_MoneyValidator()); } else { if ($request['ddBountyType'] === 'percent') { $validator->addValidator('txtBountyAmount', new WPAM_Validation_NumberValidator()); } } $validator->addValidator('ddPaymentMethod', new WPAM_Validation_SetValidator(array('check', 'paypal'))); if ($request['ddPaymentMethod'] === 'paypal') { $validator->addValidator('txtPaypalEmail', new WPAM_Validation_EmailValidator()); } } $affiliateHelper = new WPAM_Util_AffiliateFormHelper(); $vr = $affiliateHelper->validateForm($validator, $request, $affiliateFields, TRUE); if ($vr->getIsValid()) { $affiliateHelper->setModelFromForm($model, $affiliateFields, $request); $affiliateHelper->setPaymentFromForm($model, $request); $db->getAffiliateRepository()->update($model); } else { return $this->getDetailForm($affiliateFields, $model, $request, $vr); } } return $this->getDetailForm($affiliateFields, $model, $request); } else { //Show all the affiliates list. //Lets include the affiliates_list.php file $response = new WPAM_Pages_TemplateResponse('admin/affiliates_list'); } return $response; }
public function processRequest($request) { $db = new WPAM_Data_DataAccess(); $affiliateFields = $db->getAffiliateFieldRepository()->loadMultipleBy(array('enabled' => true), array('order' => 'asc')); if (isset($request['action']) && $request['action'] == 'submit') { $form_validated = false; $affiliateHelper = new WPAM_Util_AffiliateFormHelper(); $vr = $affiliateHelper->validateForm(new WPAM_Validation_Validator(), $request, $affiliateFields); if ($vr->getIsValid()) { $form_validated = true; } $output = apply_filters('wpam_validate_registration_form_submission', '', $request); if (!empty($output)) { $form_validated = false; } if ($form_validated) { $model = $affiliateHelper->getNewAffiliate(); $affiliateHelper->setModelFromForm($model, $affiliateFields, $request); //Fire the action hook do_action('wpam_front_end_registration_form_submitted', $model, $request); //Check if automatic affiliate approval option is enabled if (get_option(WPAM_PluginConfig::$AutoAffiliateApproveIsEnabledOption) == 1) { $userHandler = new WPAM_Util_UserHandler(); $userHandler->AutoapproveAffiliate($model); return new WPAM_Pages_TemplateResponse('aff_app_submitted_auto_approved'); } //Do the non auto approval process $db = new WPAM_Data_DataAccess(); $id = $db->getAffiliateRepository()->insert($model); if ($id == 0) { if (WPAM_DEBUG) { echo '<pre>', var_export($model, true), '</pre>'; } wp_die(__('Error submitting your details to the database. This is a bug, and your application was not submitted.', 'affiliates-manager')); } $mailer = new WPAM_Util_EmailHandler(); //Notify admin that affiliate has registered $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); $message = sprintf(__('New affiliate registration on your site %s:', 'affiliates-manager'), $blogname) . "\r\n\r\n"; $message .= sprintf(__('Name: %s %s', 'affiliates-manager'), $request['_firstName'], $request['_lastName']) . "\r\n"; $message .= sprintf(__('Email: %s', 'affiliates-manager'), $request['_email']) . "\r\n"; $message .= sprintf(__('Company: %s', 'affiliates-manager'), $request['_companyName']) . "\r\n"; $message .= sprintf(__('Website: %s', 'affiliates-manager'), $request['_websiteUrl']) . "\r\n\r\n"; $message .= sprintf(__('View Application: %s', 'affiliates-manager'), admin_url('admin.php?page=wpam-affiliates&viewDetail=' . $id)) . "\r\n"; $mailer->mailAffiliate(get_option('admin_email'), __('New Affiliate Registration', 'affiliates-manager'), $message); //Notify affiliate of their application $affsubj = sprintf(__('Affiliate application for %s', 'affiliates-manager'), $blogname); $affmessage = WPAM_MessageHelper::GetMessage('affiliate_application_submitted_email'); $mailer->mailAffiliate($request['_email'], $affsubj, $affmessage); return new WPAM_Pages_TemplateResponse('affiliate_application_submitted'); } else { return $this->getForm($affiliateFields, $request, $vr); } } //else return $this->getForm($affiliateFields); }
public function isActiveAffiliate($wpUser) { $db = new WPAM_Data_DataAccess(); $affiliate = $db->getAffiliateRepository()->loadByUserId($wpUser->ID); if ($affiliate !== NULL) { $status = $affiliate->status; if ($status != 'declined' && $status != 'pending') { return true; } } return false; }
public function isAvailable($wpUser) { $db = new WPAM_Data_DataAccess(); $affiliate = $db->getAffiliateRepository()->loadByUserId($wpUser->ID); return $affiliate !== NULL && $affiliate->isPending(); }
public function AutoapproveAffiliate($affiliate, $bountyType = '', $bountyAmount = '') { $sendEmail = true; $mailer = new WPAM_Util_EmailHandler(); $db = new WPAM_Data_DataAccess(); //Create Affiliate account in WP (1.1.2 if they don't have one) //and send them an email telling them they're approved $userLogin = sanitize_user($affiliate->email); $userEmail = apply_filters('user_registration_email', $affiliate->email); $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); $message = sprintf(__('New affiliate registration for %s: has been approved!', 'wpam'), $blogname) . "\r\n\r\n"; if (username_exists($userLogin)) { $user = new WP_User(get_userdatabylogin($userLogin)->ID); if ($user->has_cap(WPAM_PluginConfig::$AffiliateCap)) { throw new Exception(__('User already has an account and is already an affiliate', 'wpam')); } else { $user->add_cap(WPAM_PluginConfig::$AffiliateCap); $message .= __('Log into the site with your existing account and get started.', 'wpam') . "\r\n"; $userId = $user->ID; } } elseif (email_exists($userEmail)) { $user = new WP_User(get_user_by('email', $userEmail)->ID); if ($db->getAffiliateRepository()->existsBy(array('userId' => $user->ID))) { throw new Exception(__('User already has an account and is already an affiliate', 'wpam')); } else { $user->add_cap(WPAM_PluginConfig::$AffiliateCap); $message .= __('Log into the site with your existing account and get started.', 'wpam') . "\r\n"; $userId = $user->ID; } } else { //user not found by email address as username and no account with that email address exists //create new user using email address as username $userPass = wp_generate_password(); $userId = wp_create_user($userLogin, $userPass, $userEmail); if (is_wp_error($userId)) { throw new Exception($userId->get_error_message()); } //$mailer->mailNewAffiliate( $userId, $userPass ); $mailer->mailNewApproveAffiliate($userId, $userPass); $sendEmail = false; $user = new WP_User($userId); $user->add_cap(WPAM_PluginConfig::$AffiliateCap); } $affiliate->activate(); $affiliate->userId = $userId; if (isset($bountyType) && !empty($bountyType)) { $affiliate->bountyType = $bountyType; } else { $affiliate->bountyType = get_option(WPAM_PluginConfig::$AffBountyType); } if (isset($bountyAmount) && !empty($bountyAmount)) { $affiliate->bountyAmount = $bountyAmount; } else { $affiliate->bountyAmount = get_option(WPAM_PluginConfig::$AffBountyAmount); } $id = $db->getAffiliateRepository()->insert($affiliate); if ($id == 0) { if (WPAM_DEBUG) { echo '<pre>', var_export($model, true), '</pre>'; } wp_die(__('Error submitting your details to the database. This is a bug, and your application was not submitted.', 'wpam')); } //Notify admin that affiliate has registered $admin_message = sprintf(__('New affiliate registration on your site %s:', 'wpam'), $blogname) . "\r\n\r\n"; $admin_message .= sprintf(__('Name: %s %s', 'wpam'), $affiliate->firstName, $affiliate->lastName) . "\r\n"; $admin_message .= sprintf(__('Email: %s', 'wpam'), $affiliate->email) . "\r\n"; $admin_message .= sprintf(__('Company: %s', 'wpam'), $affiliate->companyName) . "\r\n"; $admin_message .= sprintf(__('Website: %s', 'wpam'), $affiliate->websiteUrl) . "\r\n\r\n"; $admin_message .= sprintf(__('View Application: %s', 'wpam'), admin_url('admin.php?page=wpam-affiliates&viewDetail=' . $id)) . "\r\n"; $mailer->mailAffiliate(get_option('admin_email'), __('New Affiliate Registration', 'wpam'), $admin_message); //Send user email indicating they're approved if ($sendEmail) { $mailer->mailAffiliate($userEmail, sprintf(__('Affiliate Application for %s', 'wpam'), $blogname), $message); } }
protected function confirmAffiliate($affiliate, $request) { $affiliate->confirm(); if ($request['ddPaymentMethod'] === 'paypal') { $affiliate->setPaypalPaymentMethod($request['txtPaypalEmail']); } else { if ($request['ddPaymentMethod'] === 'check') { $affiliate->setCheckPaymentMethod($request['txtCheckTo']); } } $db = new WPAM_Data_DataAccess(); $db->getAffiliateRepository()->update($affiliate); }
public function addTransaction($affiliateId, $type, $amount, $description = NULL) { if (!wp_get_current_user()->has_cap(WPAM_PluginConfig::$AdminCap)) { throw new Exception(__('Access denied.', 'affiliates-manager')); } if (!in_array($type, array('credit', 'payout', 'adjustment'))) { throw new Exception(__('Invalid transaction type.', 'affiliates-manager')); } if (!is_numeric($amount)) { throw new Exception(__('Invalid value for amount.', 'affiliates-manager')); } $db = new WPAM_Data_DataAccess(); if (!$db->getAffiliateRepository()->exists($affiliateId)) { throw new Exception(__('Invalid affiliate', 'affiliates-manager')); } $transaction = new WPAM_Data_Models_TransactionModel(); $transaction->type = $type; $transaction->affiliateId = $affiliateId; $transaction->amount = $amount; $transaction->dateCreated = time(); $transaction->description = $description; $db->getTransactionRepository()->insert($transaction); return new JsonResponse(JsonResponse::STATUS_OK); }
public function filterUserEmail($email) { $user = wp_get_current_user(); $newEmail = get_option($user->ID . '_new_email'); if (!empty($newEmail) && isset($_GET['newuseremail'])) { $db = new WPAM_Data_DataAccess(); $affiliate = $db->getAffiliateRepository()->loadByUserId($user->ID); $affiliate->email = $email; $db->getAffiliateRepository()->update($affiliate); } return $email; }
public function isEmailInUse($value) { $db = new WPAM_Data_DataAccess(); $affRepo = $db->getAffiliateRepository(); return !$affRepo->existsBy(array('email' => $value, 'status' => array('!=', 'declined'))); }
public function handleImpression($request) { $strRefKey = NULL; if (isset($request[WPAM_PluginConfig::$RefKey])) { $strRefKey = $request[WPAM_PluginConfig::$RefKey]; } else { throw new Exception(__('no refkey in request.', 'wpam')); } $refKey = new WPAM_Tracking_TrackingKey(); $refKey->unpack($strRefKey); $db = new WPAM_Data_DataAccess(); $affiliateRepos = $db->getAffiliateRepository(); $affiliateId = $affiliateRepos->getAffiliateIdFromRefKey($refKey->getAffiliateRefKey()); if ($affiliateId === NULL) { throw new Exception(__('invalid refkey data: ', 'wpam') . $strRefKey); } $impressionModel = new WPAM_Data_Models_ImpressionModel(); $impressionModel->dateCreated = time(); $impressionModel->sourceAffiliateId = $affiliateId; $impressionModel->sourceCreativeId = $refKey->getCreativeId(); $impressionModel->referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : NULL; if (isset($request['wpam_affiliateSubCode'])) { $impressionModel->affiliateSubCode = $request['wpam_affiliateSubCode']; } $db->getImpressionRepository()->insert($impressionModel); }
private function processSelectAffiliatesRequest($request) { $db = new WPAM_Data_DataAccess(); $aff_db = $db->getAffiliateRepository(); $response = new WPAM_Pages_TemplateResponse('admin/paypalpayments/select_affiliates'); $where = array('paymentMethod' => 'paypal'); $affiliateHelper = new WPAM_Util_AffiliateFormHelper(); $affiliateHelper->addTransactionDateRange($where, $request, $response); $response->viewData['affiliates'] = $aff_db->loadAffiliateSummary($where, '0.01', array('balance' => 'desc')); $response->viewData['notShownCount'] = $aff_db->count(array('paymentMethod' => array('!=', 'paypal'), 'status' => array('IN', array('active', 'inactive')))); $response->viewData['minPayout'] = get_option(WPAM_PluginConfig::$MinPayoutAmountOption); return $response; }
$alink_email = ''; if($record_found){ $aid = $affiliate->affiliateId; $alink_id = add_query_arg( array( WPAM_PluginConfig::$RefKey => $aid ), home_url('/') ); $aemail = $affiliate->email; $alink_email = add_query_arg( array( WPAM_PluginConfig::$RefKey => $aemail ), home_url('/') ); $trackingKey = new WPAM_Tracking_TrackingKey(); $trackingKey->setAffiliateRefKey($affiliate->uniqueRefKey); $trackingKey->setCreativeId($creative->creativeId); $alink = add_query_arg( array( WPAM_PluginConfig::$RefKey => $trackingKey->pack() ), home_url('/') ); } ****/ $db = new WPAM_Data_DataAccess(); $currentUser = wp_get_current_user(); $alink_id = ''; $affiliateRepos = $db->getAffiliateRepository(); $affiliate = $affiliateRepos->loadBy(array('userId' => $currentUser->ID, 'status' => 'active')); if ($affiliate === NULL) { //affiliate with this WP User ID does not exist } else { $alink_id = add_query_arg(array(WPAM_PluginConfig::$wpam_id => $affiliate->affiliateId), home_url('/')); } ?> <div class="wrap"> <?php if (!empty($alink_id)) { ?> <h3><?php _e('Your Affiliate Link Using Affiliate ID', 'affiliates-manager'); ?>
public function processRequest($request) { $db = new WPAM_Data_DataAccess(); if (isset($request['viewDetail']) && is_numeric($request['viewDetail'])) { $affiliateFields = $db->getAffiliateFieldRepository()->loadMultipleBy(array('enabled' => true), array('order' => 'asc')); $id = (int) $request['viewDetail']; $model = $db->getAffiliateRepository()->load($id); if ($model == null) { wp_die("Invalid affiliate ID."); } if (isset($request['action']) && $request['action'] == 'saveInfo') { $validator = new WPAM_Validation_Validator(); //validate bounty type & amount if they're in the appropriate status if (!$model->isPending() && !$model->isBlocked() && !$model->isDeclined()) { $validator->addValidator('ddBountyType', new WPAM_Validation_SetValidator(array('fixed', 'percent'))); if ($request['ddBountyType'] === 'fixed') { $validator->addValidator('txtBountyAmount', new WPAM_Validation_MoneyValidator()); } else { if ($request['ddBountyType'] === 'percent') { $validator->addValidator('txtBountyAmount', new WPAM_Validation_NumberValidator()); } } $validator->addValidator('ddPaymentMethod', new WPAM_Validation_SetValidator(array('check', 'paypal'))); if ($request['ddPaymentMethod'] === 'paypal') { $validator->addValidator('txtPaypalEmail', new WPAM_Validation_EmailValidator()); } } $affiliateHelper = new WPAM_Util_AffiliateFormHelper(); $vr = $affiliateHelper->validateForm($validator, $request, $affiliateFields, TRUE); if ($vr->getIsValid()) { $affiliateHelper->setModelFromForm($model, $affiliateFields, $request); $affiliateHelper->setPaymentFromForm($model, $request); $db->getAffiliateRepository()->update($model); } else { return $this->getDetailForm($affiliateFields, $model, $request, $vr); } } return $this->getDetailForm($affiliateFields, $model, $request); } else { if (isset($_GET['orderby'])) { $current_orderby = $_GET['orderby']; } else { $current_orderby = 'affiliateId'; } if (isset($_GET['order']) && 'desc' == $_GET['order']) { $current_order = 'desc'; } else { $current_order = 'asc'; } $orderBy = array($current_orderby => $current_order); $filterWhere = array(); $minPayout = NULL; if (!isset($request['statusFilter'])) { $request['statusFilter'] = 'all_active'; } if ($request['statusFilter'] !== 'all') { switch ($request['statusFilter']) { case 'all_active': $filterWhere['status'] = array('NOT IN', array('declined', 'blocked', 'inactive')); break; case 'all': break; case 'active': case 'applied': case 'approved': case 'confirmed': case 'declined': case 'blocked': case 'inactive': $filterWhere['status'] = $request['statusFilter']; default: break; } } if (isset($request['overPayout']) && $request['overPayout'] === 'true') { $minPayout = get_option(WPAM_PluginConfig::$MinPayoutAmountOption); } $models = $db->getAffiliateRepository()->loadAffiliateSummary($filterWhere, $minPayout, $orderBy); $response = new WPAM_Pages_TemplateResponse('admin/affiliates_list'); $response->viewData['minPayoutAmount'] = get_option(WPAM_PluginConfig::$MinPayoutAmountOption); $response->viewData['affiliates'] = $models; $response->viewData['request'] = $request; $response->viewData['statusFilters'] = array('all_active' => __('All Active', 'wpam'), 'all' => __('All (Including Closed)', 'wpam'), '---' => '---', 'active' => __('Status: Active', 'wpam'), 'applied' => __('Status: Applied', 'wpam'), 'approved' => __('Status: Approved', 'wpam'), 'confirmed' => __('Status: Confirmed', 'wpam'), 'declined' => __('Status: Declined', 'wpam'), 'blocked' => __('Status: Blocked', 'wpam'), 'inactive' => __('Status: Inactive', 'wpam')); $response->viewData['current_orderby'] = $current_orderby; $response->viewData['current_order'] = $current_order; } return $response; }