Newer
Older
/**
* Piwik - free/libre analytics platform
* @link http://piwik.org
*/
mattab
a validé
namespace Piwik\Plugins\Live;
use Piwik\API\Request;
use Piwik\Cache;
use Piwik\CacheId;
use Piwik\Config;
use Piwik\Plugin;
use Piwik\Plugins\Goals\API as APIGoals;
use Piwik\Plugins\Live\ProfileSummary\ProfileSummaryAbstract;
use Piwik\Url;
use Piwik\View;
class Controller extends \Piwik\Plugin\Controller
const SIMPLE_VISIT_COUNT_WIDGET_LAST_MINUTES_CONFIG_KEY = 'live_widget_visitor_count_last_minutes';
$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();
$view = new View('@Live/ajaxTotalVisitors');
$view = $this->setCounters($view);
$view->idSite = $this->idSite;
{
$rendered = $view->render();
mattab
a validé
public function indexVisitorLog()
{
$view->visitorLog = $this->renderReport('getLastVisitsDetails');
Benaka Moorthi
a validé
/**
Benaka Moorthi
a validé
*/
Benaka Moorthi
a validé
{
return $this->renderReport('getLastVisitsDetails');
{
// hack, ensure we load today's visits by default
$_GET['date'] = 'today';
\Piwik\Period\Factory::checkPeriodIsEnabled('day');
$_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;
}
private function setCounters($view)
{
$last30min = API::getInstance()->getCounters($this->idSite, $lastMinutes = 30, $segment, array('visits', 'actions'));
$last30min = $last30min[0];
$today = API::getInstance()->getCounters($this->idSite, $lastMinutes = 24 * 60, $segment, array('visits', 'actions'));
$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 = APIGoals::getInstance()->getGoals($idSite);
$view->visitorData = Request::processRequest('Live.getVisitorProfile');
$view->exportLink = $this->getVisitorProfileExportLink();
$this->setWidgetizedVisitorProfileUrl($view);
$summaryEntries = array();
$profileSummaries = self::getAllProfileSummaryInstances();
foreach ($profileSummaries as $profileSummary) {
$profileSummary->setProfile($view->visitorData);
$summaryEntries[] = [$profileSummary->getOrder(), $profileSummary->render()];
Benaka Moorthi
a validé
}
usort($summaryEntries, function($a, $b) {
return version_compare($a[0], $b[0]);
});
$summary = '';
foreach ($summaryEntries AS $summaryEntry) {
$summary .= $summaryEntry[1];
}
$view->profileSummary = $summary;
Benaka Moorthi
a validé
}
Benaka Moorthi
a validé
public function getVisitList()
{
$filterLimit = Common::getRequestVar('filter_offset', 0, 'int');
$startCounter = Common::getRequestVar('start_number', 0, 'int');
$nextVisits = Request::processRequest('Live.getLastVisitsDetails', array(
'segment' => self::getSegmentWithVisitorId(),
'filter_limit' => VisitorProfile::VISITOR_PROFILE_MAX_VISITS_TO_SHOW,
'filter_offset' => $filterLimit,
'period' => false,
'date' => false
));
$idSite = Common::getRequestVar('idSite', null, 'int');
if (empty($nextVisits)) {
return;
}
$view = new View('@Live/getVisitList.twig');
$view->startCounter = $startCounter < count($nextVisits) ? count($nextVisits) : $startCounter;
$view->visits = $nextVisits;
Benaka Moorthi
a validé
}
private function getVisitorProfileExportLink()
{
return Url::getCurrentQueryStringWithParametersModified(array(
'module' => 'API',
'action' => 'index',
'method' => 'Live.getVisitorProfile',
'format' => 'XML',
'expanded' => 1
));
}
private function setWidgetizedVisitorProfileUrl($view)
{
if (\Piwik\Plugin\Manager::getInstance()->isPluginLoaded('Widgetize')) {
$view->widgetizedLink = Url::getCurrentQueryStringWithParametersModified(array(
'module' => 'Widgetize',
'action' => 'iframe',
'moduleToWidgetize' => 'Live',
'actionToWidgetize' => 'getVisitorProfilePopup'
));
public static function getSegmentWithVisitorId()
static $cached = null;
if ($cached === null) {
$segment = Request::getRawSegmentFromRequest();
if (!empty($segment)) {
Benaka Moorthi
a validé
$segment = urldecode($segment) . ';';
}
Benaka Moorthi
a validé
$idVisitor = Common::getRequestVar('visitorId', false);
if ($idVisitor === false) {
$idVisitor = Request::processRequest('Live.getMostRecentVisitorId');
}
return $cached;
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
/**
* Returns all available profile summaries
*
* @return ProfileSummaryAbstract[]
* @throws \Exception
*/
public static function getAllProfileSummaryInstances()
{
$cacheId = CacheId::pluginAware('ProfileSummaries');
$cache = Cache::getTransientCache();
if (!$cache->contains($cacheId)) {
$instances = [];
foreach (self::getAllProfileSummaryClasses() as $className) {
$instance = new $className();
$instances[] = $instance;
}
$cache->save($cacheId, $instances);
}
return $cache->fetch($cacheId);
}
/**
* Returns class names of all VisitorDetails classes.
*
* @return string[]
* @api
*/
protected static function getAllProfileSummaryClasses()
{
return Plugin\Manager::getInstance()->findMultipleComponents('ProfileSummary', 'Piwik\Plugins\Live\ProfileSummary\ProfileSummaryAbstract');
}