Piwik\Plugins\Live\
Class VisitorDetailsAbstract
This class can be implemented in a plugin to extend the Live reports, visits log and profile
The abstract class defines the following methods:
extendVisitorDetails() — Makes it possible to extend the visitor details returned from APIprovideActionsForVisit() — Makes it possible to enrich the action set for a single visitprovideActionsForVisitIds() — Makes it possible to enrich the action set for multiple visits identified by given visit idsfilterActions() — Allows filtering the provided actionsextendActionDetails() — Allows extending each action with additional informationrenderAction() — Called when rendering a single ActionrenderActionTooltip() — Called for rendering the tooltip on actions returned array needs to look like this:renderIcons() — Called when rendering the Icons in visits logrenderVisitorDetails() — Called when rendering the visitor details in visits log returned array needs to look like this: array ( 20, // order id 'rendered html content' )initProfile() — Allows manipulating the visitor profile properties Will be called when visitor profile is initializedhandleProfileVisit() — Allows manipulating the visitor profile properties based on included visits Will be called for every action within the profilehandleProfileAction() — Allows manipulating the visitor profile properties based on included actions Will be called for every action within the profilefinalizeProfile() — 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 & actionsgetDb()extendVisitorDetails()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;
}
}
It accepts the following parameter(s):
$visitor (array) —It does not return anything or a mixed result.
provideActionsForVisit()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;
}
It accepts the following parameter(s):
$actions (array) —
List of action to manipulate$visitorDetails (array) —It does not return anything or a mixed result.
provideActionsForVisitIds()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;
}
}
$actions (array) —
action set to enrich$visitIds (array) —
list of visit idsfilterActions()Allows filtering the provided actions
Example:
public function filterActions(&$actions, $visitorDetailsArray) {
foreach ($actions as $idx => $action) {
if ($action['type'] == 'customaction') {
unset($actions[$idx]);
continue;
}
}
}
It accepts the following parameter(s):
$actions (array) —
$visitorDetailsArray (array) —
It does not return anything or a mixed result.
extendActionDetails()Allows extending each action with additional information
Example:
public function extendActionDetails(&$action, $nextAction, $visitorDetails) {
if ($action['type'] === 'Contents') {
$action['contentView'] = true;
}
}
It accepts the following parameter(s):
$action (array) —
$nextAction (array) —
$visitorDetails (array) —
It does not return anything or a mixed result.
renderAction()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();
}
It accepts the following parameter(s):
$action (array) —
$previousAction (array) —
$visitorDetails (array) —
It returns a string value.
renderActionTooltip()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() ]];
}
It accepts the following parameter(s):
$action (array) —
$visitInfo (array) —
It returns a array value.
renderIcons()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 '';
}
It accepts the following parameter(s):
$visitorDetails (array) —It returns a string value.
renderVisitorDetails()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();
}
It accepts the following parameter(s):
$visitorDetails (array) —It returns a array value.
initProfile()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;
}
It accepts the following parameter(s):
$visits (DataTable) —
$profile (array) —
It does not return anything or a mixed result.
handleProfileVisit()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');
}
It accepts the following parameter(s):
$visit (Row) —
$profile (array) —
It does not return anything or a mixed result.
handleProfileAction()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']++;
}
It accepts the following parameter(s):
$action (array) —
$profile (array) —
It does not return anything or a mixed result.
finalizeProfile()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;
}
}
It accepts the following parameter(s):
$visits (DataTable) —
$profile (array) —
It does not return anything or a mixed result.
getDb()Since Matomo Matomo
Db|Piwik\Db\AdapterInterface —