Piwik\Tracker\VisitorRecognizer::findKnownVisitor PHP Method

findKnownVisitor() public method

public findKnownVisitor ( $configId, Piwik\Tracker\Visit\VisitProperties $visitProperties, Request $request )
$visitProperties Piwik\Tracker\Visit\VisitProperties
$request Request
    public function findKnownVisitor($configId, VisitProperties $visitProperties, Request $request)
    {
        $idSite = $request->getIdSite();
        $idVisitor = $request->getVisitorId();
        $isVisitorIdToLookup = !empty($idVisitor);
        if ($isVisitorIdToLookup) {
            $visitProperties->setProperty('idvisitor', $idVisitor);
            Common::printDebug("Matching visitors with: visitorId=" . bin2hex($idVisitor) . " OR configId=" . bin2hex($configId));
        } else {
            Common::printDebug("Visitor doesn't have the piwik cookie...");
        }
        $persistedVisitAttributes = $this->getVisitFieldsPersist();
        $shouldMatchOneFieldOnly = $this->shouldLookupOneVisitorFieldOnly($isVisitorIdToLookup, $request);
        list($timeLookBack, $timeLookAhead) = $this->getWindowLookupThisVisit($request);
        $visitRow = $this->model->findVisitor($idSite, $configId, $idVisitor, $persistedVisitAttributes, $shouldMatchOneFieldOnly, $isVisitorIdToLookup, $timeLookBack, $timeLookAhead);
        $isNewVisitForced = $request->getParam('new_visit');
        $isNewVisitForced = !empty($isNewVisitForced);
        $enforceNewVisit = $isNewVisitForced || $this->trackerAlwaysNewVisitor;
        if (!$enforceNewVisit && $visitRow && count($visitRow) > 0) {
            // These values will be used throughout the request
            foreach ($persistedVisitAttributes as $field) {
                $visitProperties->setProperty($field, $visitRow[$field]);
            }
            $visitProperties->setProperty('visit_last_action_time', strtotime($visitRow['visit_last_action_time']));
            $visitProperties->setProperty('visit_first_action_time', strtotime($visitRow['visit_first_action_time']));
            // Custom Variables copied from Visit in potential later conversion
            if (!empty($numCustomVarsToRead)) {
                for ($i = 1; $i <= $numCustomVarsToRead; $i++) {
                    if (isset($visitRow['custom_var_k' . $i]) && strlen($visitRow['custom_var_k' . $i])) {
                        $visitProperties->setProperty('custom_var_k' . $i, $visitRow['custom_var_k' . $i]);
                    }
                    if (isset($visitRow['custom_var_v' . $i]) && strlen($visitRow['custom_var_v' . $i])) {
                        $visitProperties->setProperty('custom_var_v' . $i, $visitRow['custom_var_v' . $i]);
                    }
                }
            }
            Common::printDebug("The visitor is known (idvisitor = " . bin2hex($visitProperties->getProperty('idvisitor')) . ",\n                    config_id = " . bin2hex($configId) . ",\n                    idvisit = {$visitProperties->getProperty('idvisit')},\n                    last action = " . date("r", $visitProperties->getProperty('visit_last_action_time')) . ",\n                    first action = " . date("r", $visitProperties->getProperty('visit_first_action_time')) . ",\n                    visit_goal_buyer' = " . $visitProperties->getProperty('visit_goal_buyer') . ")");
            return true;
        } else {
            Common::printDebug("The visitor was not matched with an existing visitor...");
            return false;
        }
    }

Usage Example

 public function processRequestParams(VisitProperties $visitProperties, Request $request)
 {
     // the IP is needed by isExcluded() and GoalManager->recordGoals()
     $visitProperties->setProperty('location_ip', $request->getIp());
     // TODO: move VisitExcluded logic to here (or move to service class stored in DI)
     $excluded = new VisitExcluded($request, $visitProperties->getProperty('location_ip'));
     if ($excluded->isExcluded()) {
         return true;
     }
     // visitor recognition
     $visitorId = $this->userSettings->getConfigId($request, $visitProperties->getProperty('location_ip'));
     $request->setMetadata('CoreHome', 'visitorId', $visitorId);
     $isKnown = $this->visitorRecognizer->findKnownVisitor($visitorId, $visitProperties, $request);
     $request->setMetadata('CoreHome', 'isVisitorKnown', $isKnown);
     $isNewVisit = $this->isVisitNew($visitProperties, $request);
     $request->setMetadata('CoreHome', 'isNewVisit', $isNewVisit);
     return false;
 }
All Usage Examples Of Piwik\Tracker\VisitorRecognizer::findKnownVisitor