forked from vergnet/site-accueil-insa
337 lines
8.8 KiB
PHP
337 lines
8.8 KiB
PHP
<?php
|
|
/**
|
|
* Matomo - free/libre analytics platform
|
|
*
|
|
* @link https://matomo.org
|
|
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*
|
|
*/
|
|
namespace Piwik\Plugins\Live;
|
|
|
|
use Piwik\DataTable;
|
|
use Piwik\Db;
|
|
|
|
/**
|
|
* Class VisitorDetailsAbstract
|
|
*
|
|
* This class can be implemented in a plugin to extend the Live reports, visits log and profile
|
|
*
|
|
* @api
|
|
*/
|
|
abstract class VisitorDetailsAbstract
|
|
{
|
|
/**
|
|
* The visitor raw data (will be automatically set)
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $details = array();
|
|
|
|
/**
|
|
* Set details of current visit
|
|
*
|
|
* @ignore
|
|
* @param array $details
|
|
*/
|
|
public function setDetails($details)
|
|
{
|
|
$this->details = $details;
|
|
}
|
|
|
|
/**
|
|
* Makes it possible to extend the visitor details returned from API
|
|
*
|
|
* **Example:**
|
|
*
|
|
* public function extendVisitorDetails(&$visitor) {
|
|
* $crmData = Model::getCRMData($visitor['userid']);
|
|
*
|
|
* foreach ($crmData as $prop => $value) {
|
|
* $visitor[$prop] = $value;
|
|
* }
|
|
* }
|
|
*
|
|
* @param array $visitor
|
|
*/
|
|
public function extendVisitorDetails(&$visitor)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Makes it possible to enrich the action set for a single visit
|
|
*
|
|
* **Example:**
|
|
*
|
|
* public function provideActionsForVisit(&$actions, $visitorDetails) {
|
|
* $adviews = Model::getAdviews($visitorDetails['visitid']);
|
|
* $actions += $adviews;
|
|
* }
|
|
*
|
|
* @param array $actions List of action to manipulate
|
|
* @param array $visitorDetails
|
|
*/
|
|
public function provideActionsForVisit(&$actions, $visitorDetails)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Makes it possible to enrich the action set for multiple visits identified by given visit ids
|
|
*
|
|
* action set to enrich needs to have the following structure
|
|
*
|
|
* ```
|
|
* $actions = array (
|
|
* 'idvisit' => array ( list of actions for this visit id ),
|
|
* 'idvisit' => array ( list of actions for this visit id ),
|
|
* ...
|
|
* )
|
|
* ```
|
|
*
|
|
* **Example:**
|
|
*
|
|
* public function provideActionsForVisitIds(&$actions, $visitIds) {
|
|
* $adviews = Model::getAdviewsByVisitIds($visitIds);
|
|
* foreach ($adviews as $idVisit => $adView) {
|
|
* $actions[$idVisit][] = $adView;
|
|
* }
|
|
* }
|
|
*
|
|
* @param array $actions action set to enrich
|
|
* @param array $visitIds list of visit ids
|
|
*/
|
|
public function provideActionsForVisitIds(&$actions, $visitIds)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Allows filtering the provided actions
|
|
*
|
|
* **Example:**
|
|
*
|
|
* public function filterActions(&$actions, $visitorDetailsArray) {
|
|
* foreach ($actions as $idx => $action) {
|
|
* if ($action['type'] == 'customaction') {
|
|
* unset($actions[$idx]);
|
|
* continue;
|
|
* }
|
|
* }
|
|
* }
|
|
*
|
|
* @param array $actions
|
|
* @param array $visitorDetailsArray
|
|
*/
|
|
public function filterActions(&$actions, $visitorDetailsArray)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Allows extending each action with additional information
|
|
*
|
|
* **Example:**
|
|
*
|
|
* public function extendActionDetails(&$action, $nextAction, $visitorDetails) {
|
|
* if ($action['type'] === 'Contents') {
|
|
* $action['contentView'] = true;
|
|
* }
|
|
* }
|
|
*
|
|
* @param array $action
|
|
* @param array $nextAction
|
|
* @param array $visitorDetails
|
|
*/
|
|
public function extendActionDetails(&$action, $nextAction, $visitorDetails)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Called when rendering a single Action
|
|
*
|
|
* **Example:**
|
|
*
|
|
* public function renderAction($action, $previousAction, $visitorDetails) {
|
|
* if ($action['type'] != Action::TYPE_CONTENT) {
|
|
* return;
|
|
* }
|
|
*
|
|
* $view = new View('@Contents/_actionContent.twig');
|
|
* $view->sendHeadersWhenRendering = false;
|
|
* $view->action = $action;
|
|
* $view->previousAction = $previousAction;
|
|
* $view->visitInfo = $visitorDetails;
|
|
* return $view->render();
|
|
* }
|
|
*
|
|
* @param array $action
|
|
* @param array $previousAction
|
|
* @param array $visitorDetails
|
|
* @return string
|
|
*/
|
|
public function renderAction($action, $previousAction, $visitorDetails)
|
|
{
|
|
return '';
|
|
}
|
|
|
|
/**
|
|
* Called for rendering the tooltip on actions
|
|
* returned array needs to look like this:
|
|
*
|
|
* ```
|
|
* array (
|
|
* 20, // order id
|
|
* 'rendered html content'
|
|
* )
|
|
* ```
|
|
*
|
|
* **Example:**
|
|
*
|
|
* public function renderActionTooltip($action, $visitInfo) {
|
|
* if (empty($action['bandwidth'])) {
|
|
* return [];
|
|
* }
|
|
*
|
|
* $view = new View('@Bandwidth/_actionTooltip');
|
|
* $view->action = $action;
|
|
* return [[ 20, $view->render() ]];
|
|
* }
|
|
*
|
|
* @param array $action
|
|
* @param array $visitInfo
|
|
* @return array
|
|
*/
|
|
public function renderActionTooltip($action, $visitInfo)
|
|
{
|
|
return [];
|
|
}
|
|
|
|
/**
|
|
* Called when rendering the Icons in visits log
|
|
*
|
|
* **Example:**
|
|
*
|
|
* public function renderIcons($visitorDetails) {
|
|
* if (!empty($visitorDetails['avatar'])) {
|
|
* return '<img src="' . $visitorDetails['avatar'] . '" height="16" width="16">';
|
|
* }
|
|
* return '';
|
|
* }
|
|
*
|
|
* @param array $visitorDetails
|
|
* @return string
|
|
*/
|
|
public function renderIcons($visitorDetails)
|
|
{
|
|
return '';
|
|
}
|
|
|
|
/**
|
|
* Called when rendering the visitor details in visits log
|
|
* returned array needs to look like this:
|
|
* array (
|
|
* 20, // order id
|
|
* 'rendered html content'
|
|
* )
|
|
*
|
|
* **Example:**
|
|
*
|
|
* public function renderVisitorDetails($visitorDetails) {
|
|
* $view = new View('@MyPlugin/_visitorDetails.twig');
|
|
* $view->visitInfo = $visitorDetails;
|
|
* return $view->render();
|
|
* }
|
|
*
|
|
* @param array $visitorDetails
|
|
* @return array
|
|
*/
|
|
public function renderVisitorDetails($visitorDetails)
|
|
{
|
|
return [];
|
|
}
|
|
|
|
/**
|
|
* Allows manipulating the visitor profile properties
|
|
* Will be called when visitor profile is initialized
|
|
*
|
|
* **Example:**
|
|
*
|
|
* public function initProfile($visit, &$profile) {
|
|
* // initialize properties that will be filled based on visits or actions
|
|
* $profile['totalActions'] = 0;
|
|
* $profile['totalActionsOfMyType'] = 0;
|
|
* }
|
|
*
|
|
* @param DataTable $visits
|
|
* @param array $profile
|
|
*/
|
|
public function initProfile($visits, &$profile)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Allows manipulating the visitor profile properties based on included visits
|
|
* Will be called for every action within the profile
|
|
*
|
|
* **Example:**
|
|
*
|
|
* public function handleProfileVisit($visit, &$profile) {
|
|
* $profile['totalActions'] += $visit->getColumn('actions');
|
|
* }
|
|
*
|
|
* @param DataTable\Row $visit
|
|
* @param array $profile
|
|
*/
|
|
public function handleProfileVisit($visit, &$profile)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Allows manipulating the visitor profile properties based on included actions
|
|
* Will be called for every action within the profile
|
|
*
|
|
* **Example:**
|
|
*
|
|
* public function handleProfileAction($action, &$profile)
|
|
* {
|
|
* if ($action['type'] != 'myactiontype') {
|
|
* return;
|
|
* }
|
|
*
|
|
* $profile['totalActionsOfMyType']++;
|
|
* }
|
|
*
|
|
* @param array $action
|
|
* @param array $profile
|
|
*/
|
|
public function handleProfileAction($action, &$profile)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Will be called after iterating over all actions
|
|
* Can be used to set profile information that requires data that was set while iterating over visits & actions
|
|
*
|
|
* **Example:**
|
|
*
|
|
* public function finalizeProfile($visits, &$profile) {
|
|
* $profile['isPowerUser'] = false;
|
|
*
|
|
* if ($profile['totalActionsOfMyType'] > 20) {
|
|
* $profile['isPowerUser'] = true;
|
|
* }
|
|
* }
|
|
*
|
|
* @param DataTable $visits
|
|
* @param array $profile
|
|
*/
|
|
public function finalizeProfile($visits, &$profile)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* @since Matomo 3.12
|
|
* @return Db|Db\AdapterInterface
|
|
*/
|
|
public function getDb()
|
|
{
|
|
return Db::getReader();
|
|
}
|
|
}
|