Skip to content

Commit

Permalink
PPCDEV-379 Added possibility to modify visualizations of VisitorLog w…
Browse files Browse the repository at this point in the history
…idget/view and Visitors Real-time widget. Refactored getLastVisitsStart() action to render report instead of using an API.
  • Loading branch information
sebastianpiskorski committed Feb 3, 2016
1 parent f8d3e6f commit 1ab7e73
Show file tree
Hide file tree
Showing 5 changed files with 105 additions and 7 deletions.
9 changes: 3 additions & 6 deletions plugins/Live/Controller.php
Expand Up @@ -15,6 +15,7 @@
use Piwik\Plugins\Goals\API as APIGoals;
use Piwik\Url;
use Piwik\View;
use Piwik\ViewDataTable\Factory as ViewDataTableFactory;

/**
*/
Expand Down Expand Up @@ -75,13 +76,9 @@ public function getLastVisitsStart()
\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;
$this->checkSitePermission();

return $this->render($view);
return $this->renderReport('getVisitorsInRealTime');
}

private function setCounters($view)
Expand Down
47 changes: 47 additions & 0 deletions plugins/Live/Reports/GetVisitorsInRealTime.php
@@ -0,0 +1,47 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/

namespace Piwik\Plugins\Live\Reports;

use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Live\Visualizations\VisitorsInRealTime;
use Piwik\ViewDataTable\Factory as ViewDataTableFactory;

class GetVisitorsInRealTime extends Base
{

protected function init()
{
parent::init();
}

public function getDefaultTypeViewDataTable()
{
return VisitorsInRealTime::ID;
}

public function alwaysUseDefaultViewDataTable()
{
return true;
}

public function configureView(ViewDataTable $view)
{
$view->requestConfig->apiMethodToRequestDataTable = 'Live.getLastVisitsDetails';
}

public function render()
{
$view = ViewDataTableFactory::build(null, 'Live.getVisitorsInRealTime', 'Live.getVisitorsInRealTime');

$rendered = $view->render();

return $rendered;
}

}
50 changes: 50 additions & 0 deletions plugins/Live/Visualizations/VisitorsInRealTime.php
@@ -0,0 +1,50 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/

namespace Piwik\Plugins\Live\Visualizations;

use Piwik\Plugin\Visualization;

class VisitorsInRealTime extends Visualization
{
const ID = 'VisitorLogWidget';
const TEMPLATE_FILE = '@Live/getLastVisitsStart.twig';
const FOOTER_ICON_TITLE = '';
const FOOTER_ICON = '';


/**
* Configure visualization.
*/
public function beforeRender()
{
$this->config->show_visualization_only = true;
}

public function beforeLoadDataTable()
{
$this->requestConfig->addPropertiesThatShouldBeAvailableClientSide(array(
'filter_limit',
'filter_offset',
'filter_sort_column',
'filter_sort_order',
));

if (!is_numeric($this->requestConfig->filter_limit)) {
$this->requestConfig->filter_limit = 10;
}

$this->requestConfig->disable_generic_filters = true;
$this->requestConfig->filter_sort_column = false;
}

public static function canDisplayViewDataTable(ViewDataTable $view)
{
return ($view->requestConfig->getApiModuleToRequest() === 'Live');
}
}
2 changes: 2 additions & 0 deletions plugins/Live/templates/_dataTableViz_visitorLog.twig
Expand Up @@ -190,6 +190,7 @@ GPS (lat/long): {{ visitor.getColumn('latitude') }},{{ visitor.getColumn('longit
{% endif %}

<div class="col-md-{% if displayVisitorsInOwnColumn %}7{% else %}8{% endif %} column {% if visitor.getColumn('visitConverted') and not isWidget %}highlightField{% endif %}">
{{ postEvent('Live.visitorLogViewBeforeActionsInfo', visitor) }}
<div class="visitor-log-page-list">
<strong>
{{ visitor.getColumn('actionDetails')|length }}
Expand All @@ -205,6 +206,7 @@ GPS (lat/long): {{ visitor.getColumn('latitude') }},{{ visitor.getColumn('longit
{% include "@Live/_actionsList.twig" with {'actionDetails': visitor.getColumn('actionDetails')} %}
</ol>
</div>
{{ postEvent('Live.visitorLogViewAfterActionsInfo', visitor) }}
</div>
</div>
{% endset %}
Expand Down
4 changes: 3 additions & 1 deletion plugins/Live/templates/getLastVisitsStart.twig
Expand Up @@ -2,11 +2,13 @@
{% set maxPagesDisplayedByVisitor=100 %}

<ul id='visitsLive'>
{% for visitor in visitors %}
{% for visitor in dataTable.getRows() %}
{% set idSite = visitor.idSite %}
<li id="{{ visitor.idVisit }}" class="visit">
<div style="display:none;" class="idvisit">{{ visitor.idVisit }}</div>
<div title="{{ visitor.actionDetails|length }} {{ 'General_Actions'|translate }}" class="datetime">
<span style="display:none;" class="serverTimestamp">{{ visitor.serverTimestamp|raw }}</span>
{{ postEvent('Live.visitorLogWidgetViewBeforeVisitInfo', visitor) }}
{% set year = visitor.serverTimestamp|date('Y') %}
{{ visitor.serverDatePretty|replace({(year): ' '}) }} - {{ visitor.serverTimePretty }} {% if visitor.visitDuration > 0 %}<em>({{ visitor.visitDurationPretty|raw }})</em>{% endif %}
{% if visitor.visitorId|default(false) is not empty %}
Expand Down

0 comments on commit 1ab7e73

Please sign in to comment.