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); }
public function process(Pap_Contexts_Tracking $context) { $context->debug('Preparing for save visitor affiliate'); $cacheCompoundContex = new Pap_Common_VisitorAffiliateCacheCompoundContext($this->visitorAffiliateCache, $context); Gpf_Plugins_Engine::extensionPoint('PostAffiliate.click.beforeSaveVisitorAffiliate', $cacheCompoundContex); if ($cacheCompoundContex->getVisitorAffiliateAlreadySaved()) { $context->debug('VisitorAffiliate already set by plugins, not saving'); return; } Pap_Tracking_Common_VisitorAffiliateCheckCompatibility::getHandlerInstance()->checkCompatibility($context->getVisitorId(), $this->visitorAffiliateCache); $rows = $this->visitorAffiliateCache->getVisitorAffiliateAllRows($context->getVisitorId()); $context->debug('Found ' . $rows->getSize() . ' records in visitorAffiliates'); switch ($rows->getSize()) { case 0: $visitorAffiliate = $this->createAndPrepareVisitorAffiliate($context); $visitorAffiliate->setActual(true); $rows->add($visitorAffiliate); $context->debug('Saving first visitorAffiliate '.$visitorAffiliate->toString()); break; case 1: $lastVisit = $this->createAndPrepareVisitorAffiliate($context); if ($this->isOverWriteEnabled($context) || !$rows->get(0)->isValid()) { $rows->get(0)->setActual(false); $lastVisit->setActual(true); } $context->debug('Adding second visitorAffiliate '.$lastVisit->toString()); $rows->add($lastVisit); break; case 2: if ($this->isOverWriteEnabled($context) || ($rows->get(0)->isActual() && !$rows->get(0)->isValid())) { $rows->get(0)->setActual(false); $this->prepareVisitorAffiliate($rows->get(1), $context); $rows->get(1)->setActual(true); $context->debug('Overwrting second visitor affilite '.$rows->get(1)->toString()); } else { if ($rows->get(1)->isActual() && $rows->get(1)->isValid()) { $rows->add($this->createAndPrepareVisitorAffiliate($context)); $context->debug('Adding third (last) visitor affiliate '.$rows->get(1)->toString()); } else { $this->prepareVisitorAffiliate($rows->get(1), $context); $context->debug('Overwriting second visitor affiliate '.$rows->get(1)->toString()); } } break; case 3: if ($this->isOverWriteEnabled($context) || ($rows->get(1)->isActual() && !$rows->get(1)->isValid())) { for ($i = 1; $i <=2; $i++) { if ($rows->get($i)->isPersistent()) { $rows->get($i)->delete(); $context->debug('Deleting '.$i.' visitoraffiliate ' . $rows->get($i)->toString()); } $rows->remove($i); } $rows->correctIndexes(); $lastVisit = $this->createAndPrepareVisitorAffiliate($context); $lastVisit->setActual(true); $rows->add($lastVisit); $context->debug('Adding third (last) visitor affiliate '.$lastVisit->toString()); } else { $this->prepareVisitorAffiliate($rows->get(2), $context); $context->debug('Overwriting third (last) visitor affiliate '.$rows->get(2)->toString()); } break; default: $context->error('Too many rows per visitor in visitor affiliates table'); break; } $this->checkActualSelected($rows); $context->debug('Finished saving visitor affiliate'); $context->debug(''); }
/** * @return Pap_Tracking_Common_VisitorAffiliateCheckCompatibility */ public static function getHandlerInstance() { if(!self::$instance) { return self::$instance = new Pap_Tracking_Common_VisitorAffiliateCheckCompatibility(); } return self::$instance; }