VisitorDetailsAbstract
Click here if you want to read this article for the latest version.
Piwik\Plugins\Live\
VisitorDetailsAbstract
Class VisitorDetailsAbstract
This class can be implemented in a plugin to extend the Live reports, visits log and profile
Methods
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;
}
}
Signature
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;
}
Signature
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;
}
}
Signature
- It accepts the following parameter(s):
$actions(array) — action set to enrich$visitIds(array) — list of visit ids
- It does not return anything or a mixed result.
filterActions()
Allows filtering the provided actions
Example:
public function filterActions(&$actions, $visitorDetailsArray) {
foreach ($actions as $idx => $action) {
if ($action['type'] == 'customaction') {
unset($actions[$idx]);
continue;
}
}
}
Signature
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;
}
}
Signature
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();
}
Signature
It accepts the following parameter(s):
$action(array) —$previousAction(array) —$visitorDetails(array) —
It returns a
stringvalue.
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() ]];
}
Signature
It accepts the following parameter(s):
$action(array) —$visitInfo(array) —
It returns a
arrayvalue.
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 '';
}
Signature
It accepts the following parameter(s):
$visitorDetails(array) —
It returns a
stringvalue.
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();
}
Signature
It accepts the following parameter(s):
$visitorDetails(array) —
It returns a
arrayvalue.
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;
}
Signature
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');
}
Signature
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']++;
}
Signature
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;
}
}
Signature
It accepts the following parameter(s):
$visits(DataTable) —$profile(array) —
It does not return anything or a mixed result.
getDb()
Since Matomo Matomo
Signature
- Returns:
Db|Piwik\Db\AdapterInterface—