Newer
Older
/**
* Piwik - Open source web analytics
* @link http://piwik.org
mattab
a validé
* @package Live
*/
mattab
a validé
namespace Piwik\Plugins\Live;
use Piwik\API\Request;
use Piwik\Piwik;
use Piwik\Config;
mattab
a validé
use Piwik\Plugins\Live\API;
use Piwik\ViewDataTable;
use Piwik\View;
use Piwik\FrontController;
use Piwik\Plugins\Goals\API as Goals_API;
mattab
a validé
* @package Live
mattab
a validé
class Controller extends \Piwik\Controller
const SIMPLE_VISIT_COUNT_WIDGET_LAST_MINUTES_CONFIG_KEY = 'live_widget_visitor_count_last_minutes';
function index($fetch = false)
{
return $this->widget($fetch);
}
public function widget($fetch = false)
{
$view = new View('@Live/index');
$view->idSite = $this->idSite;
$view = $this->setCounters($view);
$view->liveRefreshAfterMs = (int)Config::getInstance()->General['live_widget_refresh_after_seconds'] * 1000;
$view->visitors = $this->getLastVisitsStart($fetchPlease = true);
$view->liveTokenAuth = Piwik::getCurrentUserTokenAuth();
return $this->render($view, $fetch);
}
public function getSimpleLastVisitCount($fetch = false)
{
$lastMinutes = Config::getInstance()->General[self::SIMPLE_VISIT_COUNT_WIDGET_LAST_MINUTES_CONFIG_KEY];
$lastNData = Request::processRequest('Live.getCounters', array('lastMinutes' => $lastMinutes));
$view = new View('@Live/getSimpleLastVisitCount');
$view->lastMinutes = $lastMinutes;
$view->visitors = Piwik::getPrettyNumber($lastNData[0]['visitors']);
$view->visits = Piwik::getPrettyNumber($lastNData[0]['visits']);
$view->actions = Piwik::getPrettyNumber($lastNData[0]['actions']);
$view->refreshAfterXSecs = Config::getInstance()->General['live_widget_refresh_after_seconds'];
$view->translations = array(
'one_visitor' => Piwik_Translate('Live_NbVisitor'),
'visitors' => Piwik_Translate('Live_NbVisitors'),
'one_visit' => Piwik_Translate('General_OneVisit'),
'visits' => Piwik_Translate('General_NVisits'),
'one_action' => Piwik_Translate('General_OneAction'),
'actions' => Piwik_Translate('VisitsSummary_NbActionsDescription'),
'one_minute' => Piwik_Translate('General_OneMinute'),
'minutes' => Piwik_Translate('General_NMinutes')
);
return $this->render($view, $fetch);
}
public function ajaxTotalVisitors($fetch = false)
{
$view = new View('@Live/ajaxTotalVisitors');
$view = $this->setCounters($view);
$view->idSite = $this->idSite;
return $this->render($view, $fetch);
}
private function render(View $view, $fetch)
{
$rendered = $view->render();
if ($fetch) {
return $rendered;
}
echo $rendered;
}
mattab
a validé
public function indexVisitorLog()
{
$view->filterEcommerce = Common::getRequestVar('filterEcommerce', 0, 'int');
Benaka Moorthi
a validé
$view->visitorLog = $this->getLastVisitsDetails($fetch = true);
echo $view->render();
}
Benaka Moorthi
a validé
public function getLastVisitsDetails($fetch = false)
return ViewDataTable::renderReport($this->pluginName, __FUNCTION__, $fetch);
Benaka Moorthi
a validé
}
Benaka Moorthi
a validé
/**
* @deprecated
*/
public function getVisitorLog($fetch = false)
{
return $this->getLastVisitsDetails($fetch);
}
public function getLastVisitsStart($fetch = false)
{
// hack, ensure we load today's visits by default
$_GET['date'] = 'today';
$_GET['period'] = 'day';
$view = new View('@Live/getLastVisitsStart');
$view->idSite = $this->idSite;
$api = new Request("method=Live.getLastVisitsDetails&idSite={$this->idSite}&filter_limit=10&format=php&serialize=0&disable_generic_filters=1");
$visitors = $api->process();
$view->visitors = $visitors;
return $this->render($view, $fetch);
}
private function setCounters($view)
{
mattab
a validé
$last30min = API::getInstance()->getCounters($this->idSite, $lastMinutes = 30, $segment);
$last30min = $last30min[0];
mattab
a validé
$today = API::getInstance()->getCounters($this->idSite, $lastMinutes = 24 * 60, $segment);
$today = $today[0];
$view->visitorsCountHalfHour = $last30min['visits'];
$view->visitorsCountToday = $today['visits'];
$view->pisHalfhour = $last30min['actions'];
$view->pisToday = $today['actions'];
return $view;
}
Benaka Moorthi
a validé
/**
Benaka Moorthi
a validé
* Echo's HTML for visitor profile popup.
Benaka Moorthi
a validé
*/
public function getVisitorProfilePopup()
{
$idSite = Common::getRequestVar('idSite', null, 'int');
$view = new View('@Live/getVisitorProfilePopup.twig');
$view->idSite = $idSite;
$view->goals = Goals_API::getInstance()->getGoals($idSite);
Benaka Moorthi
a validé
$view->visitorData = Request::processRequest('Live.getVisitorProfile');
$view->userCountryMap = $this->getUserCountryMapForVisitorProfile();
// TODO: disabled until segmentation issue can be dealt w/ (if enabled, last 24 months of data will be archived w/
// segment every visitor ID)
$view->lastVisitsChart = ''; //$this->getLastVisitsForVisitorProfile();
Benaka Moorthi
a validé
echo $view->render();
}
Benaka Moorthi
a validé
public function getSingleVisitSummary()
{
$view = new View('@Live/getSingleVisitSummary.twig');
$view->visitData = Request::processRequest('Live.getSingleVisitSummary');
echo $view->render();
}
Benaka Moorthi
a validé
public function getVisitList()
{
$view = new View('@Live/getVisitList.twig');
$view->idSite = Common::getRequestVar('idSite', null, 'int');
$view->startCounter = Common::getRequestVar('filter_offset', 1, 'int');
$view->visits = Request::processRequest('Live.getLastVisitsDetails', array(
'segment' => self::getSegmentWithVisitorId(),
'filter_limit' => API::VISITOR_PROFILE_MAX_VISITS_TO_SHOW,
'disable_generic_filters' => 1
));
echo $view->render();
}
private function getLastVisitsForVisitorProfile()
{
$saveGET = $_GET;
$_GET = array('segment' => self::getSegmentWithVisitorId(), 'period' => 'month', 'day' => 'today') + $_GET;
$columns = array('nb_visits');
$result = FrontController::getInstance()->dispatch('VisitsSummary', 'getEvolutionGraph', array($fetch = true, $columns));
$_GET = $saveGET;
return $result;
}
private function getUserCountryMapForVisitorProfile()
Benaka Moorthi
a validé
{
Benaka Moorthi
a validé
$params = array('standalone' => false, 'fetch' => true, 'segment' => self::getSegmentWithVisitorId());
Benaka Moorthi
a validé
return FrontController::getInstance()->fetchDispatch('UserCountryMap', 'realtimeMap', $params); // TODO: check if plugin is enabled?
Benaka Moorthi
a validé
}
private static function getSegmentWithVisitorId()
static $cached = null;
if ($cached === null) {
$segment = Request::getRawSegmentFromRequest();
if (!empty($segment)) {
$segment .= ';';
}
$idVisitor = Common::getRequestVar('idVisitor', false);
if ($idVisitor === false) {
$idVisitor = Request::processRequest('Live.getMostRecentVisitorId');
}
$cached = $segment . 'visitorId==' . $idVisitor;
return $cached;