本文整理汇总了PHP中Piwik_Common::hex2bin方法的典型用法代码示例。如果您正苦于以下问题:PHP Piwik_Common::hex2bin方法的具体用法?PHP Piwik_Common::hex2bin怎么用?PHP Piwik_Common::hex2bin使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Piwik_Common
的用法示例。
在下文中一共展示了Piwik_Common::hex2bin方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: assignVisitorIdFromRequest
/**
* Is the request for a known VisitorId, based on 1st party, 3rd party (optional) cookies or Tracking API forced Visitor ID
* @throws Exception
*/
protected function assignVisitorIdFromRequest()
{
$found = false;
// Was a Visitor ID "forced" (@see Tracking API setVisitorId()) for this request?
$idVisitor = $this->forcedVisitorId;
if (!empty($idVisitor)) {
if (strlen($idVisitor) != Piwik_Tracker::LENGTH_HEX_ID_STRING) {
throw new Exception("Visitor ID (cid) must be " . Piwik_Tracker::LENGTH_HEX_ID_STRING . " characters long");
}
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) {
$idVisitor = $this->cookie->get(0);
if ($idVisitor !== false && strlen($idVisitor) == Piwik_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 = Piwik_Common::getRequestVar('_id', '', 'string', $this->request);
$found = strlen($idVisitor) >= Piwik_Tracker::LENGTH_HEX_ID_STRING;
}
if ($found) {
$truncated = substr($idVisitor, 0, Piwik_Tracker::LENGTH_HEX_ID_STRING);
$binVisitorId = @Piwik_Common::hex2bin($truncated);
if (!empty($binVisitorId)) {
$this->visitorInfo['idvisitor'] = $binVisitorId;
}
}
}
示例2: loadLastVisitorDetailsFromDatabase
private function loadLastVisitorDetailsFromDatabase($idSite, $period = false, $date = false, $segment = false, $filter_limit = false, $maxIdVisit = false, $visitorId = false, $minTimestamp = false)
{
// var_dump($period); var_dump($date); var_dump($filter_limit); var_dump($maxIdVisit); var_dump($visitorId);
//var_dump($minTimestamp);
if(empty($filter_limit))
{
$filter_limit = 100;
}
$where = $whereBind = array();
$where[] = "log_visit.idsite = ? ";
$whereBind[] = $idSite;
$orderBy = "idsite, visit_last_action_time DESC";
$orderByParent = "sub.visit_last_action_time DESC";
if(!empty($visitorId))
{
$where[] = "log_visit.idvisitor = ? ";
$whereBind[] = Piwik_Common::hex2bin($visitorId);
}
if(!empty($maxIdVisit))
{
$where[] = "log_visit.idvisit < ? ";
$whereBind[] = $maxIdVisit;
$orderBy = "idvisit DESC";
$orderByParent = "sub.idvisit DESC";
}
if(!empty($minTimestamp))
{
$where[] = "log_visit.visit_last_action_time > ? ";
$whereBind[] = date("Y-m-d H:i:s", $minTimestamp);
}
// If no other filter, only look at the last 24 hours of stats
if(empty($visitorId)
&& empty($maxIdVisit)
&& empty($period)
&& empty($date))
{
$period = 'day';
$date = 'yesterdaySameTime';
}
// SQL Filter with provided period
if (!empty($period) && !empty($date))
{
$currentSite = new Piwik_Site($idSite);
$currentTimezone = $currentSite->getTimezone();
$dateString = $date;
if($period == 'range')
{
$processedPeriod = new Piwik_Period_Range('range', $date);
if($parsedDate = Piwik_Period_Range::parseDateRange($date))
{
$dateString = $parsedDate[2];
}
}
else
{
$processedDate = Piwik_Date::factory($date);
if($date == 'today'
|| $date == 'now'
|| $processedDate->toString() == Piwik_Date::factory('now', $currentTimezone)->toString())
{
$processedDate = $processedDate->subDay(1);
}
$processedPeriod = Piwik_Period::factory($period, $processedDate);
}
$dateStart = $processedPeriod->getDateStart()->setTimezone($currentTimezone);
$where[] = "log_visit.visit_last_action_time >= ?";
$whereBind[] = $dateStart->toString('Y-m-d H:i:s');
if(!in_array($date, array('now', 'today', 'yesterdaySameTime'))
&& strpos($date, 'last') === false
&& strpos($date, 'previous') === false
&& Piwik_Date::factory($dateString)->toString('Y-m-d') != Piwik_Date::factory('now', $currentTimezone)->toString())
{
$dateEnd = $processedPeriod->getDateEnd()->setTimezone($currentTimezone);
$where[] = " log_visit.visit_last_action_time <= ?";
$dateEndString = $dateEnd->addDay(1)->toString('Y-m-d H:i:s');
$whereBind[] = $dateEndString;
}
}
$sqlWhere = "";
if(count($where) > 0)
{
$sqlWhere = "
WHERE " . join("
AND ", $where);
}
$segment = new Piwik_Segment($segment, $idSite);
$segmentSql = $segment->getSql();
$sqlSegment = $segmentSql['sql'];
if(!empty($sqlSegment)) $sqlSegment = ' AND '.$sqlSegment;
$whereBind = array_merge ( $whereBind, $segmentSql['bind'] );
// Subquery to use the indexes for ORDER BY
//.........这里部分代码省略.........
示例3: recognizeTheVisitor
/**
* This methods tries to see if the visitor has visited the website before.
*
* We have to split the visitor into one of the category
* - Known visitor
* - New visitor
*
* A known visitor is a visitor that has already visited the website in the current month.
* We define a known visitor using the algorithm:
*
* 1) Checking if a cookie contains
* // a unique id for the visitor
* - id_visitor
*
* // the timestamp of the last action in the most recent visit
* - timestamp_last_action
*
* // the timestamp of the first action in the most recent visit
* - timestamp_first_action
*
* // the ID of the most recent visit (which could be in the past or the current visit)
* - id_visit
*
* // the ID of the most recent action
* - id_last_action
*
* 2) If the visitor doesn't have a cookie, we try to look for a similar visitor configuration.
* We search for a visitor with the same plugins/OS/Browser/Resolution for today for this website.
*/
protected function recognizeTheVisitor()
{
$this->visitorKnown = false;
$this->setCookie(new Piwik_Cookie($this->getCookieName(), $this->getCookieExpire(), $this->getCookiePath()));
$this->printCookie();
$found = $forcedVisitorId = false;
// Was a Visitor ID "forced" (@see Tracking API setVisitorId()) for this request?
$idVisitor = $this->forcedVisitorId;
if (!empty($idVisitor)) {
if (strlen($idVisitor) != Piwik_Tracker::LENGTH_HEX_ID_STRING) {
throw new Exception("Visitor ID (cid) must be " . Piwik_Tracker::LENGTH_HEX_ID_STRING . " characters long");
}
printDebug("Request will be forced to record for this idvisitor = " . $idVisitor);
$forcedVisitorId = true;
$found = true;
}
if (!$found) {
// - If set to use 3rd party cookies for Visit ID, read the cookies
// - By default, reads the first party cookie ID
$useThirdPartyCookie = $this->shouldUseThirdPartyCookie();
if ($useThirdPartyCookie) {
$idVisitor = $this->cookie->get(0);
if ($idVisitor !== false && strlen($idVisitor) == Piwik_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 = Piwik_Common::getRequestVar('_id', '', 'string', $this->request);
$found = strlen($idVisitor) >= Piwik_Tracker::LENGTH_HEX_ID_STRING;
}
// Does the cookie contain a Visitor ID?
if ($found) {
$this->visitorInfo['idvisitor'] = Piwik_Common::hex2bin($idVisitor);
printDebug("The visitor has the piwik cookie (idvisitor = " . $idVisitor . ") ");
} else {
printDebug("Visitor doesn't have the piwik cookie.");
}
$userInfo = $this->getUserSettingsInformation();
$configId = $userInfo['config_id'];
$timeLookBack = date('Y-m-d H:i:s', $this->getCurrentTimestamp() - self::TIME_IN_PAST_TO_SEARCH_FOR_VISITOR);
$where = "visit_last_action_time >= ?\n\t\t\t\t\tAND idsite = ?";
$bindSql = array($timeLookBack, $this->idsite);
// we always match on the config_id, except if the current request forces the visitor id
if (!$forcedVisitorId) {
$where .= ' AND config_id = ? ';
$bindSql[] = $configId;
}
// We force to match a visitor ID
// 1) If the visitor cookies should be trusted (ie. intranet) - config file setting
// 2) or if the Visitor ID was forced via the Tracking API setVisitorId()
if (!empty($this->visitorInfo['idvisitor']) && (Piwik_Tracker_Config::getInstance()->Tracker['trust_visitors_cookies'] || $forcedVisitorId)) {
printDebug("Matching the visitor based on his idcookie: " . bin2hex($this->visitorInfo['idvisitor']) . "...");
$where .= ' AND idvisitor = ?';
$bindSql[] = $this->visitorInfo['idvisitor'];
}
$sql = " SELECT \tidvisitor,\n\t\t\t\t\t\t\tvisit_last_action_time,\n\t\t\t\t\t\t\tvisit_first_action_time,\n\t\t\t\t\t\t\tidvisit,\n\t\t\t\t\t\t\tvisit_exit_idaction_url,\n\t\t\t\t\t\t\tvisit_exit_idaction_name,\n\t\t\t\t\t\t\tvisitor_returning,\n\t\t\t\t\t\t\tvisitor_days_since_first,\n\t\t\t\t\t\t\treferer_name,\n\t\t\t\t\t\t\treferer_keyword,\n\t\t\t\t\t\t\treferer_type,\n\t\t\t\t\t\t\tvisitor_count_visits\n\t\t\t\tFROM " . Piwik_Common::prefixTable('log_visit') . " WHERE " . $where . "\n\t\t\t\tORDER BY visit_last_action_time DESC\n\t\t\t\tLIMIT 1";
$visitRow = Piwik_Tracker::getDatabase()->fetch($sql, $bindSql);
if (!Piwik_Tracker_Config::getInstance()->Debug['tracker_always_new_visitor'] && $visitRow && count($visitRow) > 0) {
// These values will be used throughout the request
$this->visitorInfo['visit_last_action_time'] = strtotime($visitRow['visit_last_action_time']);
$this->visitorInfo['visit_first_action_time'] = strtotime($visitRow['visit_first_action_time']);
$this->visitorInfo['idvisitor'] = $visitRow['idvisitor'];
$this->visitorInfo['idvisit'] = $visitRow['idvisit'];
$this->visitorInfo['visit_exit_idaction_url'] = $visitRow['visit_exit_idaction_url'];
$this->visitorInfo['visit_exit_idaction_name'] = $visitRow['visit_exit_idaction_name'];
$this->visitorInfo['visitor_returning'] = $visitRow['visitor_returning'];
$this->visitorInfo['visitor_days_since_first'] = $visitRow['visitor_days_since_first'];
$this->visitorInfo['visitor_count_visits'] = $visitRow['visitor_count_visits'];
// Referer information will be potentially used for Goal Conversion attribution
//.........这里部分代码省略.........