public function checkCompatibility($visitorId, Pap_Tracking_Visit_VisitorAffiliateCache $cache) { $rows = $cache->getVisitorAffiliateAllRows($visitorId); if ($this->isVisitorAffiliatesCollectionValid($rows)) { return; } if ($rows->getSize() == 1) { $rows->get(0)->setActual(); return; } Pap_Tracking_Visit_VisitorAffiliateCache::sortVisitorAffiliatesByDateVisit($rows); $rows->correctIndexes(); for ($i=1, $size = $rows->getSize();$i<$size-1;$i++) { $cache->removeVisitorAffiliate($rows->get($i)->getId()); $rows->remove($i); } $rows->correctIndexes(); $campaign = $this->getCampaignById($rows->get(1)->getCampaignId()); $user = $this->getUserById($rows->get(1)->getUserId()); if ($this->cookieObject->isOverwriteEnabled($campaign, $user)) { $rows->get(1)->setActual(); } else { $rows->get(0)->setActual(); } }
public function recognize(Pap_Contexts_Tracking $context) { if ($context->isVisitorAffiliateRecognized()) { return; } Pap_Tracking_Common_VisitorAffiliateCheckCompatibility::getHandlerInstance()->checkCompatibility($context->getVisitorId(), $this->visitorAffiliateCache); $context->debug('Getting VisitorAffiliate for visitorId = ' . $context->getVisitorId()); if (($visitorAffiliate = $this->visitorAffiliateCache->getActualVisitorAffiliate($context->getVisitorId())) == null) { $context->debug('Recognize VisitorAffiliate not recognized from actual'); return; } $context->debug('Recognize VisitorAffiliate recognized from actual, id: '.$visitorAffiliate->getId(). ', accountId: '. $visitorAffiliate->getAccountId()); $context->setVisitorAffiliate($visitorAffiliate); }
private function createContext(Pap_Db_Visit $visit) { $context = new Pap_Contexts_Click(); $context->setDoTrackerSave(true); $context->setVisit($visit); $context->setVisitorId($visit->getVisitorId()); $context->setDateCreated($visit->getDateVisit()); $this->accountRecognizer->recognize($context); $this->visitorAffiliateCache->setAccountId($context->getAccountId()); return $context; }
public function recognize(Pap_Contexts_Action $context) { if ($context->isVisitorAffiliateRecognized()) { return; } if(Gpf_Settings::get(Pap_Settings::TRACK_BY_IP_SETTING_NAME) != Gpf::YES) { return; } $ip = $context->getIp(); $context->debug('Trying to get visitor affiliate from IP address '. $ip); $visitorAffiliate = $this->visitorAffiliateCache->getLatestVisitorAffiliateFromIp($ip, $context->getAccountId()); if ($visitorAffiliate == null) { $context->debug("No visitor affiliate from IP '$ip'"); return; } try { $periodInSeconds = $this->getValidityInSeconds(); } catch (Gpf_Exception $e) { $context->debug($e->getMessage()); return; } $dateFrom = new Gpf_DateTime($context->getVisitDateTime()); $dateFrom->addSecond(-1*$periodInSeconds); $dateVisit = new Gpf_DateTime($visitorAffiliate->getDateVisit()); if ($dateFrom->compare($dateVisit) > 0) { $context->debug(" No click from IP '$ip' found within ip validity period"); return null; } if (!$context->isTrackingMethodSet()) { $context->setTrackingMethod(Pap_Common_Transaction::TRACKING_METHOD_IP_ADDRESS); } $context->debug('Visitor affiliate recognized from IP, id: '.$visitorAffiliate->getId(). ', accountId: '. $visitorAffiliate->getAccountId()); $context->setVisitorAffiliate($visitorAffiliate); }
protected function createVisitorAffiliate(Pap_Tracking_Cookie_ClickData $clickCookie, Pap_Db_Visit $visit) { $visitorAffiliate = $this->visitorAffiliateCache->createVisitorAffiliate($visit->getVisitorId()); $visitorAffiliate->setBannerId($clickCookie->getBannerId()); try { $click = $clickCookie->getClick(); $visitorAffiliate->setUserId($click->getUserId()); $visitorAffiliate->setCampaignId($click->getCampaignId()); } catch (Gpf_Exception $e) { } $visitorAffiliate->setChannelId($clickCookie->getChannelId()); $visitorAffiliate->setIp($this->getIp($clickCookie, $visit)); $visitorAffiliate->setDateVisit($this->getDateVisit($clickCookie)); $visitorAffiliate->setReferrerUrl($this->getReferrerUrl($clickCookie, $visit)); $visitorAffiliate->setData1($clickCookie->getData1()); $visitorAffiliate->setData2($clickCookie->getData2()); $this->setVisitorAffiliateValidity($visitorAffiliate); return $visitorAffiliate; }
protected function onCampaignRecognized(Pap_Common_Campaign $campaign, Pap_Contexts_Tracking $context) { parent::onCampaignRecognized($campaign, $context); $this->visitorAffiliateCache->setAccountId($context->getAccountId()); }
protected function createAndPrepareVisitorAffiliate(Pap_Contexts_Tracking $context) { $visitorAffiliate = $this->visitorAffiliateCache->createVisitorAffiliate($context->getVisitorId()); $this->prepareVisitorAffiliate($visitorAffiliate, $context); return $visitorAffiliate; }
private function getVisitorAffiliate(Pap_Db_VisitorAffiliate $firstClickVisitorAffiliate, Pap_Db_VisitorAffiliate $oldVisitorAffiliate = null, Pap_Tracking_Visit_VisitorAffiliateCache $cache, Pap_Contexts_Tracking $context) { if ($firstClickVisitorAffiliate->getDateVisit() > $context->getDateCreated()) { return $firstClickVisitorAffiliate; } if ($oldVisitorAffiliate == null) { $visitorAffiliate = $cache->createVisitorAffiliate($context->getVisitorId()); $visitorAffiliate->setDateVisit($context->getDateCreated()); return $visitorAffiliate; } if ($oldVisitorAffiliate->getDateVisit() < $context->getDateCreated()) { return $oldVisitorAffiliate; } return null; }
/** * @throws Gpf_Exception * @return Pap_Tracking_Common_VisitorAffiliateCollection */ protected function getVisitorAffiliatesCollection(Pap_Contexts_Action $context) { return $this->visitorAffiliateCache->getVisitorAffiliateAllRows($context->getVisitorAffiliate()->getVisitorId()); }
protected function saveVisitChanges() { foreach ($this->visitProcessors as $visitHandler) { $visitHandler->saveChanges(); } $this->visitorAffiliateCache->saveChanges(); }
public function saveCommissions(Pap_Common_ActionProcessorCompoundContext $actionProcessorCompoundContext) { $context = $actionProcessorCompoundContext->getContext(); $cache = $actionProcessorCompoundContext->getActionProcessor()->getVisitorAffiliatesCache(); $context->debug('SplitCommissions save started'); $commType = $this->getCommissionType($context); if ($context->getTrackingMethod() == Pap_Common_Transaction::TRACKING_METHOD_DEFAULT_AFFILIATE) { $context->debug('SplitCommissions - default affiliate. STOPPED'); return; } if ($context->getTrackingMethod() == Pap_Common_Transaction::TRACKING_METHOD_FORCED_PARAMETER) { $context->debug('SplitCommissions - forced parameter. STOPPED'); return; } if ($context->getTrackingMethod() == Pap_Common_Transaction::TRACKING_METHOD_COUPON) { $context->debug('SplitCommissions - coupon. STOPPED'); return; } $this->saleId = Gpf_Common_String::generateId(); $firstAffBonus = $this->loadCommissionTypeAttributeValue($commType->getId(), Pap_Features_SplitCommissions_SplitCommissionsForm::FIRST_AFF_BONUS); $lastAffBonus = $this->loadCommissionTypeAttributeValue($commType->getId(), Pap_Features_SplitCommissions_SplitCommissionsForm::LAST_AFF_BONUS); $this->minCommission = $this->loadCommissionTypeAttributeValue($commType->getId(), Pap_Features_SplitCommissions_SplitCommissionsForm::MIN_COMMISSION); Pap_Features_SplitCommissions_VisitorAffiliateCheckCompatibility::getHandlerInstance()->checkCompatibility($context->getVisitorId(), $cache); $visitorAffiliates = $cache->getVisitorAffiliateAllRows($context->getVisitorId()); Pap_Tracking_Visit_VisitorAffiliateCache::sortVisitorAffiliatesByDateVisit($visitorAffiliates); $this->setSplitCommissions($this->getSplitCommissions($firstAffBonus, $lastAffBonus, $visitorAffiliates)); $this->visitorAffiliateCollection = $visitorAffiliates; $this->processVisitorAffiliates($visitorAffiliates, $actionProcessorCompoundContext); $context->debug('SplitCommissions save finished'); $actionProcessorCompoundContext->setCommissionsAlreadySaved(true); }
private function checkTwoVisitorAffiliateAreSameAndRemove($index1, $index2, Pap_Tracking_Common_VisitorAffiliateCollection $rows, Pap_Db_VisitorAffiliate $firstClickVisitorAffiliate, Pap_Tracking_Visit_VisitorAffiliateCache $cache) { if ($rows->getValid($index1)->getUserId() != $rows->getValid($index2)->getUserId()) { return false; } if ($rows->getValid($index1)->getUserId() == $firstClickVisitorAffiliate->getUserId()) { return false; } $cache->removeVisitorAffiliate($rows->getValid($index2)->getId()); $rows->remove($index2); $rows->correctIndexes(); $this->cloneVisitorAffiliate($firstClickVisitorAffiliate, $rows, false); return true; }