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); } }
protected function getDetailForm($affiliateFields, $model, $request = null, $validationResult = null) { //add widget_form_error js to affiliate_detail page add_action('admin_footer', array($this, 'onFooter')); $db = new WPAM_Data_DataAccess(); $response = new WPAM_Pages_TemplateResponse('admin/affiliate_detail'); $response->viewData['affiliateFields'] = $affiliateFields; $response->viewData['affiliate'] = $model; $where = array('affiliateId' => $model->affiliateId); $affiliateHelper = new WPAM_Util_AffiliateFormHelper(); $affiliateHelper->addTransactionDateRange($where, $request, $response); $response->viewData['transactions'] = $db->getTransactionRepository()->loadMultipleBy($where, array('dateCreated' => 'desc')); $response->viewData['showBalance'] = true; $response->viewData['paymentMethods'] = $affiliateHelper->getPaymentMethods(); $response->viewData['paymentMethod'] = isset($request['ddPaymentMethod']) ? $request['ddPaymentMethod'] : $model->paymentMethod; $response->viewData['paypalEmail'] = isset($request['txtPaypalEmail']) ? $request['txtPaypalEmail'] : $model->paypalEmail; $response->viewData['bountyType'] = isset($request['ddBountyType']) ? $request['ddBountyType'] : $model->bountyType; $response->viewData['bountyAmount'] = isset($request['txtBountyAmount']) ? $request['txtBountyAmount'] : $model->bountyAmount; $this->addBalance($response->viewData['transactions'], $db->getTransactionRepository()->getBalance($model->affiliateId, empty($request['from']) ? NULL : $request['from']), 'desc'); $accountStanding = $db->getTransactionRepository()->getAccountSummary($model->affiliateId); $response->viewData['accountStanding'] = $accountStanding->standing; $response->viewData['accountCredits'] = $accountStanding->credits; $response->viewData['accountDebits'] = $accountStanding->debits; $response->viewData['accountAdjustments'] = $accountStanding->adjustments; $response->viewData['user'] = new WP_User($model->userId); if ($request !== null) { $response->viewData['request'] = $request; } if ($validationResult !== null) { //die(print_r($validationResult, true)); $response->viewData['validationResult'] = $validationResult; } $response->viewData['affiliateFields'] = $affiliateFields; $response->viewData['creatives'] = $db->getCreativesRepository()->loadAllActiveNoDeletes(); if (get_option(WPAM_PluginConfig::$AffEnableImpressions)) { $where = array('sourceAffiliateId' => $model->affiliateId); $response->viewData['impressions'] = $db->getImpressionRepository()->loadMultipleByLimit($where, array('dateCreated' => 'desc'), 100); $creativeNames = array(); foreach ($response->viewData['impressions'] as $impression) { if (!array_key_exists($impression->sourceCreativeId, $creativeNames)) { $creativeNames[$impression->sourceCreativeId] = $db->getCreativesRepository()->load($impression->sourceCreativeId)->name; } } $response->viewData['creativeNames'] = $creativeNames; $where = array('sourceAffiliateId' => $model->affiliateId); $response->viewData['impressionCount'] = $db->getImpressionRepository()->count($where); } //$summary = $db->getEventRepository()->getSummary ( $model->affiliateId ); $args = array(); $args['aff_id'] = $model->affiliateId; $total_clicks = WPAM_Click_Tracking::get_all_time_total_clicks($args); $total_transaction_count = WPAM_Commission_Tracking::get_all_time_transaction_count($args); $response->viewData['visitCount'] = $total_clicks; //$summary->visits; $response->viewData['purchaseCount'] = $total_transaction_count; //$summary->purchases; //save for form validation in the footer $this->response = $response; return $response; }
protected function doOverviewHome($request, $affiliate) { $db = new WPAM_Data_DataAccess(); $accountSummary = $db->getTransactionRepository()->getAccountSummary($affiliate->affiliateId); $args = array(); $args['aff_id'] = $affiliate->affiliateId; //show total clicks for today $args['start_date'] = date("Y-m-d H:i:s", strtotime('today')); $args['end_date'] = date("Y-m-d H:i:s", strtotime('tomorrow')); $today_clicks = WPAM_Click_Tracking::get_total_clicks($args); //show total number of transactions for today $today_transaction_count = WPAM_Commission_Tracking::get_transaction_count($args); //show total commission for today $today_total_commission = WPAM_Commission_Tracking::get_total_commission_amount($args); //show total clicks for this month $args['start_date'] = date("Y-m-d H:i:s", strtotime(date("Y-m-01"))); $args['end_date'] = date("Y-m-d H:i:s", strtotime(date("Y-m-01", strtotime("+1 month")))); $monthly_clicks = WPAM_Click_Tracking::get_total_clicks($args); //show total number of transactions for this month $monthly_transaction_count = WPAM_Commission_Tracking::get_transaction_count($args); //show total commission for this month $monthly_total_commission = WPAM_Commission_Tracking::get_total_commission_amount($args); $response = new WPAM_Pages_TemplateResponse('affiliate_cp_home'); $response->viewData['accountStanding'] = $accountSummary->standing; $response->viewData['commissionRateString'] = $this->getCommissionRateString($affiliate); $response->viewData['monthVisitors'] = $monthly_clicks; //$eventSummary->visits; $response->viewData['monthClosedTransactions'] = $monthly_transaction_count; //$eventSummary->purchases; $response->viewData['monthRevenue'] = $monthly_total_commission; //$monthAccountSummary->credits; $response->viewData['todayVisitors'] = $today_clicks; //$todayEventSummary->visits; $response->viewData['todayClosedTransactions'] = $today_transaction_count; //$todayEventSummary->purchases; $response->viewData['todayRevenue'] = $today_total_commission; //$todayAccountSummary->credits; if (get_option(WPAM_PluginConfig::$AffEnableImpressions)) { $response->viewData['monthImpressions'] = $db->getImpressionRepository()->getImpressionsForRange(strtotime(date("Y-m-01")), strtotime(date("Y-m-01", strtotime("+1 month"))), $affiliate->affiliateId); $response->viewData['todayImpressions'] = $db->getImpressionRepository()->getImpressionsForRange(strtotime('today'), strtotime('tomorrow'), $affiliate->affiliateId); } return $response; }
public function onInit() { add_action('wp_enqueue_scripts', array($this, 'load_shortcode_specific_scripts')); add_action('wp_head', array($this, 'handle_wp_head_hook')); //actions & filters add_action('template_redirect', array($this, 'onTemplateRedirect')); add_action('admin_menu', array($this, 'onAdminMenu')); add_action('current_screen', array($this, 'onCurrentScreen')); add_action('wp_ajax_wpam-ajax_request', array($this, 'onAjaxRequest')); add_filter('pre_user_email', array($this, 'filterUserEmail')); //set the locale for money format & paypal $this->locale = WPAM_LOCALE_OVERRIDE ? WPAM_LOCALE_OVERRIDE : get_locale(); $this->setloc = $this->setMonetaryLocale($this->locale); //loading provided locale didn't work, choose default if (!$this->setloc && setlocale(LC_MONETARY, 0) == 'C') { setlocale(LC_MONETARY, ''); } add_action('admin_notices', array($this, 'showAdminMessages')); if (!is_admin()) { add_filter('widget_text', 'do_shortcode'); } add_shortcode('AffiliatesRegister', array($this->publicPages[self::PAGE_NAME_REGISTER], 'doShortcode')); add_shortcode('AffiliatesHome', array($this->publicPages[self::PAGE_NAME_HOME], 'doShortcode')); add_shortcode('AffiliatesLogin', array($this, 'doLoginShortcode')); add_action('save_post', array($this, 'onSavePage'), 10, 2); try { if (isset($_GET[WPAM_PluginConfig::$RefKey])) { $requestTracker = new WPAM_Tracking_RequestTracker(); $query_args = $_GET; $requestTracker->handleIncomingReferral($query_args); } } catch (Exception $e) { wp_die("WPAM FAILED: " . $e->getMessage()); } //new affiliate tracking code WPAM_Click_Tracking::record_click(); }