getLastVisitsForVisitor($visitorId, $idSite, 1);
}
/*
* @return Piwik_DataTable
*/
public function getLastVisitsForVisitor( $visitorId, $idSite, $limit = 10 )
{
if(is_null($idSite))
{
Piwik::checkUserIsSuperUser();
}
else
{
Piwik::checkUserHasViewAccess($idSite);
}
$visitorDetails = self::loadLastVisitorDetailsFromDatabase($visitorId, $idSite, $limit);
$table = self::getCleanedVisitorsFromDetails($visitorDetails);
return $table;
}
/*
* @return Piwik_DataTable
*/
public function getLastVisits( $idSite = false, $limit = 10, $minIdVisit = false )
{
// for checking given vars
// echo $idSite.'|'.$limit.'|'.$minIdVisit.'
';
if(is_null($idSite))
{
Piwik::checkUserIsSuperUser();
}
else
{
Piwik::checkUserHasViewAccess($idSite);
}
$visitorDetails = self::loadLastVisitorDetailsFromDatabase(null, $idSite, $limit, $minIdVisit);
$table = self::getCleanedVisitorsFromDetails($visitorDetails);
// var_dump($table);
return $table;
}
/*
* @return Piwik_DataTable
*/
public function getLastVisitsDetails( $idSite = false, $limit = 1000, $minIdVisit = false )
{
// for checking given vars
// echo $idSite.'|'.$limit.'|'.$minIdVisit.'
';
if(is_null($idSite))
{
Piwik::checkUserIsSuperUser();
}
else
{
Piwik::checkUserHasViewAccess($idSite);
}
$visitorDetails = self::loadLastVisitorDetailsFromDatabase(null, $idSite, $limit, $minIdVisit);
$dataTable = self::getCleanedVisitorsFromDetails($visitorDetails);
//echo "hallo";
//
// $dataTable->queueFilter('ColumnCallbackAddMetadata', array('operatingSystem', 'icon', 'Piwik_Live_Visitor::getVisitLength()'));
// echo "
";
// var_dump($dataTable[0]);
// echo "
";
return $dataTable;
}
/*
* @return Piwik_DataTable
*/
static private function getCleanedVisitorsFromDetails($visitorDetails)
{
$table = new Piwik_DataTable();
foreach($visitorDetails as $visitorDetail)
{
self::cleanVisitorDetails($visitorDetail);
$visitor = new Piwik_Live_Visitor($visitorDetail);
$visitorDetailsArray = $visitor->getAllVisitorDetails();
$dateTimeVisit = Piwik_Date::factory($visitorDetailsArray['firstActionTimestamp']);
//TODO TO FIX
$visitorDetailsArray['serverDatePretty'] = $dateTimeVisit->getLocalized('%shortDay% %day% %shortMonth%');
$visitorDetailsArray['serverTimePretty'] = $dateTimeVisit->getLocalized('%time%');
// get Detail
$idvisit = $visitorDetailsArray['idVisit'];
$sql = "SELECT DISTINCT`" .Piwik::prefixTable('log_action')."`.`name` AS pageUrl
FROM `" .Piwik::prefixTable('log_visit')."`
INNER JOIN `" .Piwik::prefixTable('log_link_visit_action')."` ON `" .Piwik::prefixTable('log_visit')."`.`idvisit` = `" .Piwik::prefixTable('log_link_visit_action')."`.`idvisit`
INNER JOIN `" .Piwik::prefixTable('log_action')."` ON `" .Piwik::prefixTable('log_link_visit_action')."`.`idaction_url` = `" .Piwik::prefixTable('log_action')."`.`idaction`
WHERE `" .Piwik::prefixTable('log_visit')."`.`idvisit` = $idvisit;
";
$visitorDetailsArray['actionDetails'] = Piwik_FetchAll($sql);
$table->addRowFromArray( array(Piwik_DataTable_Row::COLUMNS => $visitorDetailsArray));
}
return $table;
}
/*
* @return array
*/
private function loadLastVisitorDetailsFromDatabase($visitorId = null, $idSite = null, $limit = null, $minIdVisit = false )
{
// for checking given vars
// echo $visitorId.'|'.$idSite.'|'.$limit.'|'.$minIdVisit.'
';
$where = $whereBind = array();
if(!is_null($idSite))
{
$where[] = " idsite = ? ";
$whereBind[] = $idSite;
}
if(!is_null($visitorId))
{
$where[] = " visitor_idcookie = ? ";
$whereBind[] = $visitorId;
}
if(!is_null($minIdVisit))
{
$where[] = " idvisit > ? ";
$whereBind[] = $minIdVisit;
}
$sqlWhere = "";
if(count($where) > 0)
{
$sqlWhere = " WHERE " . join(' AND ', $where);
}
$sql = "SELECT *
FROM " . Piwik::prefixTable('log_visit') . "
$sqlWhere
ORDER BY idvisit DESC
LIMIT $limit";
return Piwik_FetchAll($sql, $whereBind);
}
/*
*
*/
static private function cleanVisitorDetails( &$visitorDetails )
{
$toUnset = array('config_md5config');
if(!Piwik::isUserIsSuperUser())
{
$toUnset[] = 'visitor_idcookie';
$toUnset[] = 'location_ip';
}
foreach($toUnset as $keyName)
{
if(isset($visitorDetails[$keyName]))
{
unset($visitorDetails[$keyName]);
}
}
}
/*
* @return Piwik_DataTable
*/
public function getUsersInLastXMin( $idSite = false, $limit = 10, $minIdVisit = false, $minutes = 30 )
{
if(is_null($idSite))
{
Piwik::checkUserIsSuperUser();
}
else
{
Piwik::checkUserHasViewAccess($idSite);
}
$visitorDetails = self::loadLastVisitorDetailsInLastXMinFromDatabase(null, $idSite, $limit, $minIdVisit, $minutes);
$table = self::getCleanedVisitorsFromDetails($visitorDetails);
return $table;
}
/*
* @return Piwik_DataTable
*/
public function getUsersInLastXDays( $idSite = false, $limit = 10, $minIdVisit = false, $days = 10 )
{
if(is_null($idSite))
{
Piwik::checkUserIsSuperUser();
}
else
{
Piwik::checkUserHasViewAccess($idSite);
}
$visitorDetails = self::loadLastVisitorDetailsInLastXDaysFromDatabase(null, $idSite, $limit, $minIdVisit, $days);
$table = self::getCleanedVisitorsFromDetails($visitorDetails);
return $table;
}
/*
* @return array
*/
public function getPageImpressionsInLastXDays($idSite = false, $limit = 10, $minIdVisit = false, $days = 10){
// for checking given vars
#echo $idSite.'|'.$limit.'|'.$minIdVisit.'|'.$days.'
';
if(is_null($idSite))
{
Piwik::checkUserIsSuperUser();
}
else
{
Piwik::checkUserHasViewAccess($idSite);
}
$pageDetails = self::loadLastVisitedPagesInLastXDaysFromDatabase(null, $idSite, $limit, $minIdVisit, $days);
$i = -1;
foreach ($pageDetails as $detail) {
$i++;
if(strlen($pageDetails[$i]['name']) > 30) {
$pageDetails[$i]['name'] = substr($pageDetails[$i]['name'] , 0, 30 - 3).'...';
}
}
return $pageDetails;
}
/*
* @return array
*/
public function getPageImpressionsInLastXMin($idSite = false, $limit = 10, $minIdVisit = false, $minutes = 30){
if(is_null($idSite))
{
Piwik::checkUserIsSuperUser();
}
else
{
Piwik::checkUserHasViewAccess($idSite);
}
$pageDetails = self::loadLastVisitedPagesInLastXMinFromDatabase(null, $idSite, $limit, $minIdVisit, $minutes);
$i = -1;
foreach ($pageDetails as $detail) {
$i++;
if(strlen($pageDetails[$i]['name']) > 30) {
$pageDetails[$i]['name'] = substr($pageDetails[$i]['name'] , 0, 30 - 3).'...';
}
}
return $pageDetails;
}
/*
* TODO should be refactored with function below
* @return array
*/
private function loadLastVisitorDetailsInLastXMinFromDatabase($visitorId = null, $idSite = null, $limit = 1000, $minIdVisit = false, $minutes = 0 )
{
$where = $whereBind = array();
if(!is_null($idSite))
{
$where[] = " idsite = ? ";
$whereBind[] = $idSite;
}
if(!is_null($visitorId))
{
$where[] = " visitor_idcookie = ? ";
$whereBind[] = $visitorId;
}
if(!is_null($minIdVisit))
{
$where[] = " idvisit > ? ";
$whereBind[] = $minIdVisit;
}
if($minutes != 0)
{
$timeLimit = mktime(date("H"), date("i") - $minutes, 0, date("m"), date("d"), date("Y"));
$where[] = " visit_last_action_time > '".date('Y-m-d H:i:s',$timeLimit)."'";
}
$sqlWhere = "";
if(count($where) > 0)
{
$sqlWhere = " WHERE " . join(' AND ', $where);
}
$sql = "SELECT *
FROM " . Piwik::prefixTable('log_visit') . "
$sqlWhere
ORDER BY idvisit DESC
LIMIT " . (int)$limit;
return Piwik_FetchAll($sql, $whereBind);
}
/*
* TODO should be refactored with function above
* @return array
*/
private function loadLastVisitorDetailsInLastXDaysFromDatabase($visitorId = null, $idSite = null, $limit = 1000, $minIdVisit = false, $days = 0 )
{
$where = $whereBind = array();
if(!is_null($idSite))
{
$where[] = " idsite = ? ";
$whereBind[] = $idSite;
}
if(!is_null($visitorId))
{
$where[] = " visitor_idcookie = ? ";
$whereBind[] = $visitorId;
}
if(!is_null($minIdVisit))
{
$where[] = " idvisit > ? ";
$whereBind[] = $minIdVisit;
}
if($days != 0)
{
$timeLimit = mktime(0, 0, 0, date("m"), date("d") - $days + 1, date("Y"));
$where[] = " visit_last_action_time > '".date('Y-m-d H:i:s',$timeLimit)."'";
}
$sqlWhere = "";
if(count($where) > 0)
{
$sqlWhere = " WHERE " . join(' AND ', $where);
}
$sql = "SELECT *
FROM " . Piwik::prefixTable('log_visit') . "
$sqlWhere
ORDER BY idvisit DESC
LIMIT " . (int)$limit;
return Piwik_FetchAll($sql, $whereBind);
}
/*
* TODO should be refactored with function above
* @return array
*/
private function loadLastVisitedPagesInLastXMinFromDatabase($visitorId = null, $idSite = null, $limit = null, $minIdVisit = false, $minutes = 0 )
{
$where = $whereBind = array();
if(!is_null($idSite))
{
$where[] = " idsite = ? ";
$whereBind[] = $idSite;
}
if(!is_null($visitorId))
{
$where[] = " visitor_idcookie = ? ";
$whereBind[] = $visitorId;
}
if(!is_null($minIdVisit))
{
$where[] = Piwik::prefixTable('log_visit') .".idvisit > ? ";
$whereBind[] = $minIdVisit;
}
if($minutes != 0)
{
$timeLimit = mktime(date("H"), date("i") - $minutes, 0, date("m"), date("d"), date("Y"));
$where[] = " visit_last_action_time > '".date('Y-m-d H:i:s',$timeLimit)."'";
}
$sqlWhere = "";
if(count($where) > 0)
{
$sqlWhere = " WHERE " . join(' AND ', $where);
}
$sql = "SELECT " . Piwik::prefixTable('log_link_visit_action') . ".`idaction_url`," . Piwik::prefixTable('log_action') . ".`idaction`, " . Piwik::prefixTable('log_action') . ".`name` , " . Piwik::prefixTable('log_visit') . ".*
FROM " . Piwik::prefixTable('log_link_visit_action') . "
INNER JOIN " . Piwik::prefixTable('log_action') . " ON " . Piwik::prefixTable('log_link_visit_action') . ".`idaction_url`= " . Piwik::prefixTable('log_action') . ".`idaction`
INNER JOIN " . Piwik::prefixTable('log_visit') . " ON " . Piwik::prefixTable('log_visit') . ".`idvisit` = " . Piwik::prefixTable('log_link_visit_action') . ".`idvisit`
$sqlWhere";
return Piwik_FetchAll($sql, $whereBind);
}
/*
* TODO should be refactored with function above
* @return array
*/
private function loadLastVisitedPagesInLastXDaysFromDatabase($visitorId = null, $idSite = null, $limit = null, $minIdVisit = false, $days = 0 )
{
$where = $whereBind = array();
if(!is_null($idSite))
{
$where[] = " idsite = ? ";
$whereBind[] = $idSite;
}
if(!is_null($visitorId))
{
$where[] = " visitor_idcookie = ? ";
$whereBind[] = $visitorId;
}
if($days != 0)
{
$timeLimit = mktime(0, 0, 0, date("m"), date("d") - $days + 1, date("Y"));
$where[] = " visit_last_action_time > '".date('Y-m-d H:i:s',$timeLimit)."'";
}
$sqlWhere = "";
if(count($where) > 0)
{
$sqlWhere = " WHERE " . join(' AND ', $where);
}
$sql = "SELECT " . Piwik::prefixTable('log_link_visit_action') . ".`idaction_url`, " . Piwik::prefixTable('log_action') . ".`idaction`, " . Piwik::prefixTable('log_action') . ".`name` , " . Piwik::prefixTable('log_link_visit_action') . ".*
FROM " . Piwik::prefixTable('log_link_visit_action') . "
INNER JOIN " . Piwik::prefixTable('log_action') . " ON " . Piwik::prefixTable('log_link_visit_action') . ".`idaction_url`= " . Piwik::prefixTable('log_action') . ".`idaction`
INNER JOIN " . Piwik::prefixTable('log_visit') . " ON " . Piwik::prefixTable('log_visit') . ".idvisit=" . Piwik::prefixTable('log_link_visit_action') . ".idvisit
$sqlWhere";
return Piwik_FetchAll($sql, $whereBind);
}
}