private function setFirstAndLastClick(Pap_Common_Transaction $transaction, $contextUserId) {
        $firstAffiliate = $this->visitorAffiliateCollection->getValid(0);
        $lastAffiliate = $this->visitorAffiliateCollection->getValid($this->visitorAffiliateCollection->getValidSize()-1);

        try{
            $visitorAffiliate = $this->visitorAffiliateCollection->getVisitorAffiliateByUserId($contextUserId);
            $transaction->setRefererUrl($visitorAffiliate->getReferrerUrl());
        } catch(Gpf_Exception $e){
            $context->debug($e->getMessage());
            $transaction->setRefererUrl($this->_('Unknown'));
        }

        $this->setFirstClickData($transaction,$firstAffiliate);

        if ($firstAffiliate->getUserId() == $contextUserId){
            $transaction->setAllowFirstClickData(Gpf::YES);
        } else{
            $transaction->setAllowFirstClickData(Gpf::NO);
        }

        $this->setLastClickData($transaction,$lastAffiliate);
        if ($lastAffiliate->getUserId() == $contextUserId){
            $transaction->setAllowLastClickData(Gpf::YES);
        } else{
            $transaction->setAllowLastClickData(Gpf::NO);
        }
    }
    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;
    }