function fromRow($rowData)
 {
     $modelMapper = new WPAM_Data_Models_ModelMapper();
     $modelMapper->map($rowData, $this);
     $binConverter = new WPAM_Util_BinConverter();
     $this->dateCreated = strtotime($this->dateCreated);
     $this->trackingKey = $binConverter->stringToBin($this->trackingKey);
 }
 public function fromRow($rowData)
 {
     $modelMapper = new WPAM_Data_Models_ModelMapper();
     $binConverter = new WPAM_Util_BinConverter();
     $modelMapper->map($rowData, $this);
     $this->dateCreated = strtotime($this->dateCreated);
     $this->uniqueRefKey = $binConverter->stringToBin($rowData->uniqueRefKey);
     $this->userData = unserialize($rowData->userData);
 }
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 unpack($data)
 {
     $binConverter = new WPAM_Util_BinConverter();
     $data = $binConverter->stringToBin($data);
     if (strlen($data) != 28) {
         throw new Exception(sprintf(__('invalid refkey format. (length=%s)', 'wpam'), strlen($data)));
     }
     //try both unpacking methods - test cases refKey zBVGC-a7cCyBJfVLhI1TkrdFO12 and FxjiRElrO8RryBSjNwSdh94rxB5
     $unpacked = unpack("A20aid/Lcid/Lr", $data);
     if (strlen($unpacked['aid']) != 20) {
         $unpacked = unpack("a20aid/Lcid/Lr", $data);
     }
     //this output will prevent wp_redirect from working
     //if ( WPAM_DEBUG )
     //	var_export($unpacked);
     $this->affiliateRefKey = $unpacked['aid'];
     $this->creativeId = $unpacked['cid'];
     $this->reserved = $unpacked['r'];
 }
 public function handleCheckoutWithRefKey($purchaseLogId, $purchaseAmount, $strRefKey)
 {
     $db = new WPAM_Data_DataAccess();
     $binConverter = new WPAM_Util_BinConverter();
     $affiliate = NULL;
     // keeping this block and "($affiliate !== NULL)" seperate to
     // help indicate any problems
     // (purchase log recorded w/o a purchase event)
     if (!empty($strRefKey)) {
         $trackingToken = $db->getTrackingTokenRepository()->loadBy(array('trackingKey' => $strRefKey));
         if ($trackingToken !== NULL) {
             $ttpl = $db->getTrackingTokenPurchaseLogRepository()->loadBy(array('trackingTokenId' => $trackingToken->trackingTokenId, 'purchaseLogId' => $purchaseLogId));
             if ($ttpl === NULL) {
                 $trackingTokenPurchaseLog = new WPAM_Data_Models_TrackingTokenPurchaseLogModel();
                 $trackingTokenPurchaseLog->trackingTokenId = $trackingToken->trackingTokenId;
                 $trackingTokenPurchaseLog->purchaseLogId = $purchaseLogId;
                 $db->getTrackingTokenPurchaseLogRepository()->insert($trackingTokenPurchaseLog);
                 //this will be handled further down if the affiliate is set and the purchase was successful
                 //$db->getEventRepository()->quickInsert(time(), $strRefKey, 'purchase');
             }
         }
     }
     $affiliate = $db->getAffiliateRepository()->loadByPurchaseLogId($purchaseLogId);
     if ($affiliate !== NULL && $affiliate->isActive()) {
         if ($strRefKey) {
             $db->getEventRepository()->quickInsert(time(), $binConverter->stringToBin($strRefKey), 'purchase');
         }
         $creditAmount = $this->calculateCreditAmount($affiliate, $purchaseAmount);
         $creditAmount = apply_filters('wpam_credit_amount', $creditAmount, $purchaseAmount, $purchaseLogId);
         $currency = WPAM_MoneyHelper::getCurrencyCode();
         $description = "Credit for sale of {$purchaseAmount} {$currency} (PURCHASE LOG ID = {$purchaseLogId})";
         $existingCredit = $db->getTransactionRepository()->loadBy(array('referenceId' => $purchaseLogId));
         if ($existingCredit === NULL) {
             $credit = new WPAM_Data_Models_TransactionModel();
             $credit->dateCreated = time();
             $credit->referenceId = $purchaseLogId;
             $credit->affiliateId = $affiliate->affiliateId;
             $credit->type = 'credit';
             $credit->description = $description;
             $credit->amount = $creditAmount;
             $db->getTransactionRepository()->insert($credit);
         } else {
             $existingCredit->dateModified = time();
             $existingCredit->description = $description;
             $existingCredit->amount = $creditAmount;
             $db->getTransactionRepository()->update($existingCredit);
         }
     }
 }