Piwik\Tracker\Request::getVisitorId PHP 메소드

getVisitorId() 공개 메소드

Returns the ID from the request in this order: return from a given User ID, or from a Tracking API forced Visitor ID, or from a Visitor ID from 3rd party (optional) cookies, or from a given Visitor Id from 1st party?
public getVisitorId ( )
    public function getVisitorId()
    {
        $found = false;
        // If User ID is set it takes precedence
        $userId = $this->getForcedUserId();
        if ($userId) {
            $userIdHashed = $this->getUserIdHashed($userId);
            $idVisitor = $this->truncateIdAsVisitorId($userIdHashed);
            Common::printDebug("Request will be recorded for this user_id = " . $userId . " (idvisitor = {$idVisitor})");
            $found = true;
        }
        // Was a Visitor ID "forced" (@see Tracking API setVisitorId()) for this request?
        if (!$found) {
            $idVisitor = $this->getForcedVisitorId();
            if (!empty($idVisitor)) {
                if (strlen($idVisitor) != Tracker::LENGTH_HEX_ID_STRING) {
                    throw new InvalidRequestParameterException("Visitor ID (cid) {$idVisitor} must be " . Tracker::LENGTH_HEX_ID_STRING . " characters long");
                }
                Common::printDebug("Request will be recorded for this idvisitor = " . $idVisitor);
                $found = true;
            }
        }
        // - If set to use 3rd party cookies for Visit ID, read the cookie
        if (!$found) {
            // - By default, reads the first party cookie ID
            $useThirdPartyCookie = $this->shouldUseThirdPartyCookie();
            if ($useThirdPartyCookie) {
                $cookie = $this->makeThirdPartyCookieUID();
                $idVisitor = $cookie->get(0);
                if ($idVisitor !== false && strlen($idVisitor) == Tracker::LENGTH_HEX_ID_STRING) {
                    $found = true;
                }
            }
        }
        // If a third party cookie was not found, we default to the first party cookie
        if (!$found) {
            $idVisitor = Common::getRequestVar('_id', '', 'string', $this->params);
            $found = strlen($idVisitor) >= Tracker::LENGTH_HEX_ID_STRING;
        }
        if ($found) {
            $truncated = $this->truncateIdAsVisitorId($idVisitor);
            $binVisitorId = @Common::hex2bin($truncated);
            if (!empty($binVisitorId)) {
                return $binVisitorId;
            }
        }
        return false;
    }

Usage Example

예제 #1
0
 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;
     }
 }
All Usage Examples Of Piwik\Tracker\Request::getVisitorId