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 __toString()
 {
     $binConverter = new WPAM_Util_BinConverter();
     $key = $binConverter->binToString($this->affiliateRefKey);
     $object = "\naffiliateRefKey = {$key}\ncreativeId = {$this->creativeId}\nreserved = {$this->reserved}\n";
     return $object;
 }
 public function quickInsert($dateCreated, $trackingKey, $actionKey)
 {
     $query = "\n\t\t\tINSERT INTO `{$this->tableName}`\n\t\t\tSET\n\t\t\t\tdateCreated = %s,\n\t\t\t\ttrackingTokenId = (\n\t\t\t\t\tselect trackingTokenId\n\t\t\t\t\tfrom " . $this->db->prefix . WPAM_Data_DataAccess::TABLE_TRACKING_TOKENS . "\n\t\t\t\t\twhere `trackingKey` = %s\n\t\t\t\t),\n\t\t\t\tactionId = (\n\t\t\t\t\tselect actionId\n\t\t\t\t\tfrom " . $this->db->prefix . WPAM_Data_DataAccess::TABLE_ACTIONS . "\n\t\t\t\t\twhere `name` = %s\n\t\t\t\t)";
     $binConverter = new WPAM_Util_BinConverter();
     $query = $this->db->prepare($query, date("Y-m-d H:i:s", $dateCreated), $binConverter->binToString($trackingKey), $actionKey);
     $this->db->query($query);
 }
 function toRow()
 {
     $row = new stdClass();
     $binConverter = new WPAM_Util_BinConverter();
     $modelMapper = new WPAM_Data_Models_ModelMapper();
     $modelMapper->map($this, $row, false);
     $row->dateCreated = date('Y-m-d H:i:s', $row->dateCreated);
     $row->trackingKey = $binConverter->binToString($row->trackingKey);
     return $row;
 }
 public function toRow()
 {
     $row = new stdClass();
     $modelMapper = new WPAM_Data_Models_ModelMapper();
     $modelMapper->map($this, $row, false);
     $binConverter = new WPAM_Util_BinConverter();
     $row->dateCreated = date('Y-m-d H:i:s', $row->dateCreated);
     $row->uniqueRefKey = $binConverter->binToString($this->uniqueRefKey);
     $row->userData = serialize($this->userData);
     return $row;
 }
 public function getAffiliateIdFromRefKey($refkey)
 {
     $binConverter = new WPAM_Util_BinConverter();
     $query = "\n\t\t\tselect affiliateId\n\t\t\tfrom `{$this->tableName}`\n\t\t\twhere\n\t\t\t\tuniqueRefKey=%s\n\t\t";
     $value = $binConverter->binToString($refkey);
     //this output will prevent wp_redirect from working
     //if ( WPAM_DEBUG )
     //	echo "\n\nQuery: {$query}\nValue: {$value}\n\n";
     $query = $this->db->prepare($query, $value);
     $affId = $this->db->get_var($query);
     return $affId != NULL ? (int) $affId : $affId;
 }
function to_token($uniqueRefKey)
{
    $binConverter = new WPAM_Util_BinConverter();
    $binRefKey = $binConverter->stringToBin($uniqueRefKey);
    $creative_id = 1;
    $reserved = 0;
    $revRefKey = new WPAM_Tracking_TrackingKey();
    $revRefKey->setAffiliateRefKey($binRefKey);
    $revRefKey->setCreativeId($creative_id);
    $revRefKey->setReserved($reserved);
    $token = $revRefKey->pack();
    var_dump($token);
    return $token;
}
 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);
     }
 }
<?php

/**
 * @author John Hargrove
 * 
 * Date: Jul 8, 2010
 * Time: 9:20:49 PM
 */
require_once '../source/Tracking/UniqueIdGenerator.php';
require_once '../source/Util/BinConverter.php';
$idgen = new WPAM_Tracking_UniqueIdGenerator();
$binConverter = new WPAM_Util_BinConverter();
echo $binConverter->binToString($idgen->generateId()) . PHP_EOL;
 function create_wpam_affiliate_record($fields)
 {
     global $wpdb;
     //Do some validation to make sure we have some minimum required info
     if (!isset($fields['email']) || empty($fields['email'])) {
         WPAM_Logger::log_debug("create_wpam_affiliate_record() - Error, email address is missing. Cannot create affiliate record!", 4);
         return;
     }
     if (!isset($fields['userId']) || empty($fields['userId'])) {
         WPAM_Logger::log_debug("create_wpam_affiliate_record() - Error, userId value is missing. Cannot create affiliate record!", 4);
         return;
     }
     //Check and set the default status values
     if (!isset($fields['status']) || empty($fields['status'])) {
         if (get_option(WPAM_PluginConfig::$AutoAffiliateApproveIsEnabledOption) == 1) {
             $fields['status'] = 'active';
         } else {
             $fields['status'] = 'applied';
         }
     }
     //Check and set default dateCreated value
     if (!isset($fields['dateCreated']) || empty($fields['dateCreated'])) {
         $fields['dateCreated'] = current_time('mysql');
         //date("Y-m-d H:i:s");
     }
     //Check and set default dateCreated value
     if (!isset($fields['uniqueRefKey']) || empty($fields['uniqueRefKey'])) {
         $idGenerator = new WPAM_Tracking_UniqueIdGenerator();
         $binConverter = new WPAM_Util_BinConverter();
         $fields['uniqueRefKey'] = $binConverter->binToString($idGenerator->generateId());
     }
     //Check and set default bountyType
     if (!isset($fields['bountyType']) || empty($fields['bountyType'])) {
         $fields['bountyType'] = get_option(WPAM_PluginConfig::$AffBountyType);
     }
     //Check and set default bountyAmount
     if (!isset($fields['bountyAmount']) || empty($fields['bountyAmount'])) {
         $fields['bountyAmount'] = get_option(WPAM_PluginConfig::$AffBountyAmount);
     }
     $fields['userData'] = serialize(array());
     //assign an empty array so $wpdb->insert does not fail
     $wpdb->insert(WPAM_AFFILIATES_TBL, $fields);
 }