Newer
Older
/**
* Piwik - Open source web analytics
* @link http://piwik.org
* @package Piwik_Live
*/
class Piwik_Live_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 Piwik_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 = Piwik_API_Request::processRequest('Live.getCounters', array('lastMinutes' => $lastMinutes));
$view = new Piwik_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 Piwik_View('@Live/ajaxTotalVisitors');
$view = $this->setCounters($view);
$view->idSite = $this->idSite;
return $this->render($view, $fetch);
}
private function render($view, $fetch)
{
$rendered = $view->render();
if ($fetch) {
return $rendered;
}
echo $rendered;
}
public function indexVisitorLog()
{
$view = new Piwik_View('@Live/indexVisitorLog.twig');
$view->filterEcommerce = Common::getRequestVar('filterEcommerce', 0, 'int');
$view->visitorLog = $this->getVisitorLog($fetch = true);
echo $view->render();
}
public function getVisitorLog($fetch = false)
{
$view = Piwik_ViewDataTable::factory();
$view->init($this->pluginName,
__FUNCTION__,
'Live.getLastVisitsDetails'
);
$view->disableGenericFilters();
$view->disableSort();
$view->setTemplate("@Live/getVisitorLog.twig");
$view->setSortedColumn('idVisit', 'ASC');
$view->disableSearchBox();
$view->setLimit(20);
$view->disableOffsetInformation();
$view->disableExcludeLowPopulation();
// disable the tag cloud, pie charts, bar chart icons
$view->disableShowAllViewsIcons();
// disable the button "show more datas"
$view->disableShowAllColumns();
// disable the RSS feed
$view->disableShowExportAsRssFeed();
// disable all row actions
if ($view instanceof Piwik_ViewDataTable_HtmlTable) {
$view->disableRowActions();
}
$view->setReportDocumentation(Piwik_Translate('Live_VisitorLogDocumentation', array('<br />', '<br />')));
// set a very high row count so that the next link in the footer of the data table is always shown
$view->setCustomParameter('totalRows', 10000000);
$view->setCustomParameter('filterEcommerce', Common::getRequestVar('filterEcommerce', 0, 'int'));
$view->setCustomParameter('pageUrlNotDefined', Piwik_Translate('General_NotDefined', Piwik_Translate('Actions_ColumnPageURL')));
return $this->renderView($view, $fetch);
}
public function getLastVisitsStart($fetch = false)
{
// hack, ensure we load today's visits by default
$_GET['date'] = 'today';
$_GET['period'] = 'day';
$view = new Piwik_View('@Live/getLastVisitsStart');
$view->idSite = $this->idSite;
$api = new Piwik_API_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)
{
$last30min = Piwik_Live_API::getInstance()->getCounters($this->idSite, $lastMinutes = 30, $segment);
$last30min = $last30min[0];
$today = Piwik_Live_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;
}