Piwik\Tracker\Request::setThirdPartyCookie PHP Method

setThirdPartyCookie() public method

Update the cookie information.
public setThirdPartyCookie ( $idVisitor )
    public function setThirdPartyCookie($idVisitor)
    {
        if (!$this->shouldUseThirdPartyCookie()) {
            return;
        }
        Common::printDebug("We manage the cookie...");
        $cookie = $this->makeThirdPartyCookieUID();
        // idcookie has been generated in handleNewVisit or we simply propagate the old value
        $cookie->set(0, bin2hex($idVisitor));
        $cookie->save();
    }

Usage Example

Example #1
0
 /**
  *    Main algorithm to handle the visit.
  *
  *  Once we have the visitor information, we have to determine if the visit is a new or a known visit.
  *
  * 1) When the last action was done more than 30min ago,
  *      or if the visitor is new, then this is a new visit.
  *
  * 2) If the last action is less than 30min ago, then the same visit is going on.
  *    Because the visit goes on, we can get the time spent during the last action.
  *
  * NB:
  *  - In the case of a new visit, then the time spent
  *    during the last action of the previous visit is unknown.
  *
  *    - In the case of a new visit but with a known visitor,
  *    we can set the 'returning visitor' flag.
  *
  * In all the cases we set a cookie to the visitor with the new information.
  */
 public function handle()
 {
     foreach ($this->requestProcessors as $processor) {
         Common::printDebug("Executing " . get_class($processor) . "::manipulateRequest()...");
         $processor->manipulateRequest($this->request);
     }
     $this->visitProperties = new VisitProperties();
     foreach ($this->requestProcessors as $processor) {
         Common::printDebug("Executing " . get_class($processor) . "::processRequestParams()...");
         $abort = $processor->processRequestParams($this->visitProperties, $this->request);
         if ($abort) {
             Common::printDebug("-> aborting due to processRequestParams method");
             return;
         }
     }
     $isNewVisit = $this->request->getMetadata('CoreHome', 'isNewVisit');
     if (!$isNewVisit) {
         $isNewVisit = $this->triggerPredicateHookOnDimensions($this->getAllVisitDimensions(), 'shouldForceNewVisit');
         $this->request->setMetadata('CoreHome', 'isNewVisit', $isNewVisit);
     }
     foreach ($this->requestProcessors as $processor) {
         Common::printDebug("Executing " . get_class($processor) . "::afterRequestProcessed()...");
         $abort = $processor->afterRequestProcessed($this->visitProperties, $this->request);
         if ($abort) {
             Common::printDebug("-> aborting due to afterRequestProcessed method");
             return;
         }
     }
     $isNewVisit = $this->request->getMetadata('CoreHome', 'isNewVisit');
     // Known visit when:
     // ( - the visitor has the Piwik cookie with the idcookie ID used by Piwik to match the visitor
     //   OR
     //   - the visitor doesn't have the Piwik cookie but could be match using heuristics @see recognizeTheVisitor()
     // )
     // AND
     // - the last page view for this visitor was less than 30 minutes ago @see isLastActionInTheSameVisit()
     if (!$isNewVisit) {
         try {
             $this->handleExistingVisit($this->request->getMetadata('Goals', 'visitIsConverted'));
         } catch (VisitorNotFoundInDb $e) {
             $this->request->setMetadata('CoreHome', 'visitorNotFoundInDb', true);
             // TODO: perhaps we should just abort here?
         }
     }
     // New visit when:
     // - the visitor has the Piwik cookie but the last action was performed more than 30 min ago @see isLastActionInTheSameVisit()
     // - the visitor doesn't have the Piwik cookie, and couldn't be matched in @see recognizeTheVisitor()
     // - the visitor does have the Piwik cookie but the idcookie and idvisit found in the cookie didn't match to any existing visit in the DB
     if ($isNewVisit) {
         $this->handleNewVisit($this->request->getMetadata('Goals', 'visitIsConverted'));
     }
     // update the cookie with the new visit information
     $this->request->setThirdPartyCookie($this->visitProperties->getProperty('idvisitor'));
     foreach ($this->requestProcessors as $processor) {
         Common::printDebug("Executing " . get_class($processor) . "::recordLogs()...");
         $processor->recordLogs($this->visitProperties, $this->request);
     }
     $this->markArchivedReportsAsInvalidIfArchiveAlreadyFinished();
 }
All Usage Examples Of Piwik\Tracker\Request::setThirdPartyCookie