コード例 #1
0
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;
}
コード例 #2
0
 protected function doImpressions($request, $affiliate)
 {
     $response = new WPAM_Pages_TemplateResponse('affiliate_cp_impressions');
     $db = new WPAM_Data_DataAccess();
     $where = array('sourceAffiliateId' => $affiliate->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' => $affiliate->affiliateId);
     $response->viewData['impressionCount'] = $db->getImpressionRepository()->count($where);
     return $response;
 }
コード例 #3
0
 public function deleteCreative($creativeId)
 {
     if (!wp_get_current_user()->has_cap(WPAM_PluginConfig::$AdminCap)) {
         throw new Exception(__('Access denied.', 'affiliates-manager'));
     }
     $db = new WPAM_Data_DataAccess();
     if (!$db->getCreativesRepository()->exists($creativeId)) {
         throw new Exception(__('Invalid creative.', 'affiliates-manager'));
     }
     $creative = $db->getCreativesRepository()->load($creativeId);
     $creative->status = 'deleted';
     $db->getCreativesRepository()->update($creative);
     return new JsonResponse(JsonResponse::STATUS_OK);
 }
コード例 #4
0
 protected function doDetailView($request)
 {
     if (!is_numeric($request['creativeId'])) {
         wp_die(__('Invalid creative.', 'wpam'));
     }
     $creativeId = (int) $request['creativeId'];
     $db = new WPAM_Data_DataAccess();
     $model = $db->getCreativesRepository()->load($creativeId);
     if ($model === NULL) {
         wp_die(__('Invalid creative.', 'wpam'));
     }
     $response = new WPAM_Pages_TemplateResponse('admin/creatives_detail');
     $response->viewData['creative'] = $model;
     $response->viewData['request'] = $request;
     return $response;
 }
コード例 #5
0
 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;
 }
コード例 #6
0
 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);
     }
 }
コード例 #7
0
 public function doFreshInstallDbDefaultData()
 {
     //Only inserts the default data if the respective tables are empty
     $affiliates_fields_table = $this->db->prefix . WPAM_Data_DataAccess::TABLE_AFFILIATES_FIELDS;
     $messages_table = $this->db->prefix . WPAM_Data_DataAccess::TABLE_MESSAGES;
     $actions_table = $this->db->prefix . WPAM_Data_DataAccess::TABLE_ACTIONS;
     $results = $this->db->get_results("SELECT * FROM " . $affiliates_fields_table, OBJECT);
     if (is_null($results) || is_array($results) && empty($results)) {
         //No record in this table
         $this->db->query("\n            INSERT INTO `{$affiliates_fields_table}`\n            VALUES\n            (1,'base','First Name',50,'string',1,'firstName',1,0),\n            (2,'base','Last Name',50,'string',1,'lastName',1,1),\n            (3,'base','E-Mail Address',0,'email',1,'email',1,3),\n            (4,'base','Address Line 1',255,'string',1,'addressLine1',1,4),\n            (5,'base','Address Line 2',255,'string',0,'addressLine2',1,5),\n            (6,'base','City',128,'string',1,'addressCity',1,6),\n            (7,'base','State',0,'stateCode',1,'addressState',1,7),\n            (8,'base','Zip Code',0,'zipCode',1,'addressZipCode',1,8),\n            (9,'base','Country',0,'countryCode',1,'addressCountry',1,10),\n            (10,'base','Company Name',50,'string',0,'companyName',1,11),\n            (11,'base','Website URL',255,'string',0,'websiteUrl',1,12),\n            (12,'base','Phone Number',0,'phoneNumber',1,'phoneNumber',1,2)\n            ");
     }
     $results = $this->db->get_results("SELECT * FROM " . $actions_table);
     if (is_null($results) || is_array($results) && empty($results)) {
         //No record in this table
         $this->db->query("INSERT INTO `{$actions_table}`\n            (name, description)\n            VALUES\n            ('visit', 'New visitor'),\n            ('purchase', 'User confirmed purchase')");
     }
     $results = $this->db->get_results("SELECT * FROM " . $messages_table);
     if (is_null($results) || is_array($results) && empty($results)) {
         //No record in this table
         $this->db->query("\n            INSERT INTO `{$messages_table}`\n            VALUES\n            (1,'affiliate_application_approved','Displayed to user at logon if affiliate STATUS = APPROVED','Congratulations, the administrator has <strong>approved</strong> your application.  You have one more step to complete before you can begin publishing for this store and generating revenue! The store owner has specified the terms of your agreement, which you will need to review and agree to.<br /><br/>','web'),\n            (2,'affiliate_application_declined','Displayed to user at logon if affiliate STATUS = DECLINED','I\\'m sorry, your application was declined.','web'),\n            (3,'affiliate_application_pending','Displayed to user at logon if affiliate STATUS = PENDING','Your application is still being reviewed. Please check back later!','web'),\n            (4,'affiliate_application_submitted','Displayed to user after successfully submitting the affiliate registration form','Your application has been submitted.  The store owner will be contacting you soon.<br />\r\n<br />\r\nThank you!<br />\r\n','web'),\n            (5,'affiliate_application_submitted_email','Body of e-mail sent to the affiliate immediately after submitting their application.','Your application will be reviewed and you will be hearing from us soon!','email')\n            ");
         $db = new WPAM_Data_DataAccess();
         $msgRepo = $db->getMessageRepository();
         $msg = new WPAM_Data_Models_MessageModel();
         $msg->content = "I'm sorry, your application was declined.";
         $msg->name = 'affiliate_application_declined_email';
         $msg->type = 'email';
         $msg->use = 'Body of e-mail sent to the affiliate immediately following their application being declined.';
         $msgRepo->insert($msg);
         $db = new WPAM_Data_DataAccess();
         $msgRepo = $db->getMessageRepository();
         $msg = new WPAM_Data_Models_MessageModel();
         $msg->content = "Thank you. Your registration is now complete. You can log into the affiliate area and begin promoting.";
         $msg->name = 'aff_app_submitted_auto_approved';
         $msg->type = 'web';
         $msg->use = 'Displayed to a newly registered affiliate if automatic affiliate approval option is enabled.';
         $msgRepo->insert($msg);
     }
     //Add the default message insert code below (it will only add it if it doesn't exist already)
     $db = new WPAM_Data_DataAccess();
     $msgRepo = $db->getMessageRepository();
     $message = $msgRepo->loadBy(array('name' => 'affiliate_application_approved_email'));
     if ($message === NULL) {
         $msg = new WPAM_Data_Models_MessageModel();
         $msg->content = "Your affiliate account for {blogname} has been approved!. \n\nUsername: {affusername} \nPassword: {affpassword} \nLogin URL: {affloginurl} \n\nPlease log into your account to get referral code.";
         $msg->name = 'affiliate_application_approved_email';
         $msg->type = 'email';
         $msg->use = 'Body of e-mail sent to a newly registered affiliate immediately following their application being approved.';
         $msgRepo->insert($msg);
     }
     //Add other options below
     //add a new creative (default)
     $default_creative_id = get_option(WPAM_PluginConfig::$DefaultCreativeId);
     $db = new WPAM_Data_DataAccess();
     $creativesRepo = $db->getCreativesRepository();
     $create_new_creative = false;
     if (empty($default_creative_id)) {
         $create_new_creative = true;
     } else {
         if (!$creativesRepo->existsBy(array('creativeId' => $default_creative_id, 'status' => 'active'))) {
             $create_new_creative = true;
         }
     }
     if ($create_new_creative) {
         $model = new WPAM_Data_Models_CreativeModel();
         $model->dateCreated = time();
         $model->status = 'active';
         $model->type === 'text';
         $model->linkText = 'default affiliate link';
         $model->altText = '';
         $model->slug = site_url('/');
         $model->name = 'default creative';
         $id = $creativesRepo->insert($model);
         update_option(WPAM_PluginConfig::$DefaultCreativeId, $id);
         //Save the ID of the deafult creative
     }
 }