questlab/www/analytics/plugins/CoreHome/Columns/VisitLastActionTime.php
2016-04-10 18:55:57 +02:00

60 lines
No EOL
2 KiB
PHP

<?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\CoreHome\Columns;
use Piwik\Date;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker;
use Piwik\Tracker\Visitor;
/**
* This dimension holds the best guess for a visit's end time. It is set the last action
* time for each visit. `ping=1` requests can be sent to update the dimension value so
* it can be a more accurate guess of the time the visitor spent on the site.
*
* Note: though it is named 'visit last action time' it actually refers to the visit's last action's
* end time.
*/
class VisitLastActionTime extends VisitDimension
{
protected $columnName = 'visit_last_action_time';
// we do not install or define column definition here as we need to create this column when installing as there is
// an index on it. Currently we do not define the index here... although we could overwrite the install() method
// and add column 'visit_last_action_time' and add index. Problem is there is also an index
// INDEX(idsite, config_id, visit_last_action_time) and we maybe not be sure whether idsite already exists at
// installing point (we do not know whether idsite column will be added first).
/**
* @param Request $request
* @param Visitor $visitor
* @param Action|null $action
* @return mixed
*/
public function onNewVisit(Request $request, Visitor $visitor, $action)
{
return Date::getDatetimeFromTimestamp($request->getCurrentTimestamp());
}
/**
* @param Request $request
* @param Visitor $visitor
* @param Action|null $action
* @return mixed
*/
public function onExistingVisit(Request $request, Visitor $visitor, $action)
{
if ($request->getParam('ping') == 1) {
return false;
}
return $this->onNewVisit($request, $visitor, $action);
}
}