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 function handleIncomingReferral($request) { $strRefKey = NULL; if (isset($request[WPAM_PluginConfig::$RefKey])) { $strRefKey = $request[WPAM_PluginConfig::$RefKey]; } else { throw new Exception(__('no refkey in request.', 'wpam')); } if (!array_key_exists(WPAM_PluginConfig::$RefKey, $_COOKIE)) { if (is_email($strRefKey)) { $db1 = new WPAM_Data_DataAccess(); $affiliateRepos1 = $db1->getAffiliateRepository(); $affiliate = $affiliateRepos1->loadBy(array('email' => $strRefKey, 'status' => 'active')); if ($affiliate === NULL) { //affiliate with this email does not exist } else { $default_creative_id = get_option(WPAM_PluginConfig::$DefaultCreativeId); if (!empty($default_creative_id)) { $creative = $db1->getCreativesRepository()->load($default_creative_id); $linkBuilder = new WPAM_Tracking_TrackingLinkBuilder($affiliate, $creative); $strRefKey = $linkBuilder->getTrackingKey()->pack(); } } } else { if (is_numeric($strRefKey)) { $db1 = new WPAM_Data_DataAccess(); $affiliateRepos1 = $db1->getAffiliateRepository(); $affiliate = $affiliateRepos1->loadBy(array('affiliateId' => $strRefKey, 'status' => 'active')); if ($affiliate === NULL) { //affiliate with this ID does not exist } else { $default_creative_id = get_option(WPAM_PluginConfig::$DefaultCreativeId); if (!empty($default_creative_id)) { $creative = $db1->getCreativesRepository()->load($default_creative_id); $linkBuilder = new WPAM_Tracking_TrackingLinkBuilder($affiliate, $creative); $strRefKey = $linkBuilder->getTrackingKey()->pack(); } } } } $refKey = new WPAM_Tracking_TrackingKey(); $refKey->unpack($strRefKey); $db = new WPAM_Data_DataAccess(); $affiliateRepos = $db->getAffiliateRepository(); $affiliateId = $affiliateRepos->getAffiliateIdFromRefKey($refKey->getAffiliateRefKey()); if ($affiliateId === NULL) { echo '<pre>Affiliate ID: '; var_export($affiliateId); echo "\n\n"; echo $refKey; throw new Exception(__('invalid refkey data.', 'wpam')); } //#37 make sure the affiliate is active before tracking stats $affiliate = $affiliateRepos->load($affiliateId); if (!$affiliate->isActive()) { return; } $idGenerator = new WPAM_Tracking_UniqueIdGenerator(); $trackTokenModel = new WPAM_Data_Models_TrackingTokenModel(); $trackTokenModel->dateCreated = time(); $trackTokenModel->sourceAffiliateId = $affiliateId; $trackTokenModel->sourceCreativeId = $refKey->getCreativeId(); $trackTokenModel->trackingKey = $idGenerator->generateId(); $trackTokenModel->referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : NULL; if (isset($request['wpam_affiliateSubCode'])) { $trackTokenModel->affiliateSubCode = $request['wpam_affiliateSubCode']; } $db->getTrackingTokenRepository()->insert($trackTokenModel); $db->getEventRepository()->quickInsert(time(), $trackTokenModel->trackingKey, 'visit'); $binConverter = new WPAM_Util_BinConverter(); // store the tracking key in a cookie so we can monitor their activities $return = setcookie(WPAM_PluginConfig::$RefKey, $binConverter->binToString($trackTokenModel->trackingKey), $this->getExpireTime(), COOKIEPATH); } }