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(); } }
private function checkIfFirstVisitorAffiliateClickIsThereTwoTimes(Pap_Tracking_Common_VisitorAffiliateCollection $rows) { Pap_Tracking_Visit_VisitorAffiliateCache::sortVisitorAffiliatesByDateVisit($rows); $usersIndexes= array(); $hasFirstTwoTimes = false; $firstClickVisitorAffiliate = $rows->getValid(0); for ($i = 1; $i < $rows->getValidSize(); $i++) { if ($rows->getValid($i)->getUserId() === $firstClickVisitorAffiliate->getUserId() && !$hasFirstTwoTimes) { $hasFirstTwoTimes = true; continue; } if (isset($usersIndexes[$rows->getValid($i)->getUserId()])) { $usersIndexes[$rows->getValid($i)->getUserId()][] = $i; continue; } $usersIndexes[$rows->getValid($i)->getUserId()] = array($i); } $this->removeUserDuplicates($rows, $usersIndexes); if (!$hasFirstTwoTimes) { $this->cloneVisitorAffiliate($firstClickVisitorAffiliate, $rows); } }
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); }