Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Live/API.php')
-rw-r--r--plugins/Live/API.php38
1 files changed, 17 insertions, 21 deletions
diff --git a/plugins/Live/API.php b/plugins/Live/API.php
index 8d1649746f..ba655ec1be 100644
--- a/plugins/Live/API.php
+++ b/plugins/Live/API.php
@@ -227,6 +227,8 @@ class API extends \Piwik\Plugin\API
* Triggered in the Live.getVisitorProfile API method. Plugins can use this event
* to discover and add extra data to visitor profiles.
*
+ * This event is deprecated, use [VisitorDetails](/api-reference/Piwik/Plugins/Live/VisitorDetailsAbstract#extendVisitorDetails) classes instead.
+ *
* For example, if an email address is found in a custom variable, a plugin could load the
* gravatar for the email and add it to the visitor profile, causing it to display in the
* visitor profile popup.
@@ -237,6 +239,7 @@ class API extends \Piwik\Plugin\API
* - **visitorDescription**: Text to be used as the tooltip of the avatar image.
*
* @param array &$visitorProfile The unaugmented visitor profile info.
+ * @deprecated
*/
Piwik::postEvent('Live.getExtraVisitorDetails', array(&$result));
@@ -313,40 +316,33 @@ class API extends \Piwik\Plugin\API
$dataTable->$filter(function ($table) use ($idSite, $flat, $doNotFetchActions) {
/** @var DataTable $table */
- $actionsLimit = (int)Config::getInstance()->General['visitor_log_maximum_actions_per_visit'];
-
$visitorFactory = new VisitorFactory();
- $website = new Site($idSite);
- $timezone = $website->getTimezone();
- $currency = $website->getCurrency();
- $currencies = APISitesManager::getInstance()->getCurrencySymbols();
// live api is not summable, prevents errors like "Unexpected ECommerce status value"
$table->deleteRow(DataTable::ID_SUMMARY_ROW);
- foreach ($table->getRows() as $visitorDetailRow) {
- $visitorDetailsArray = Visitor::cleanVisitorDetails($visitorDetailRow->getColumns());
+ $actionsByVisitId = array();
- $visitor = $visitorFactory->create($visitorDetailsArray);
- $visitorDetailsArray = $visitor->getAllVisitorDetails();
+ if (!$doNotFetchActions) {
+ $visitIds = $table->getColumn('idvisit');
- $visitorDetailsArray['siteCurrency'] = $currency;
- $visitorDetailsArray['siteCurrencySymbol'] = @$currencies[$visitorDetailsArray['siteCurrency']];
- $visitorDetailsArray['serverTimestamp'] = $visitorDetailsArray['lastActionTimestamp'];
+ $visitorDetailsManipulators = Visitor::getAllVisitorDetailsInstances();
- $dateTimeVisit = Date::factory($visitorDetailsArray['lastActionTimestamp'], $timezone);
- if ($dateTimeVisit) {
- $visitorDetailsArray['serverTimePretty'] = $dateTimeVisit->getLocalized(Date::TIME_FORMAT);
- $visitorDetailsArray['serverDatePretty'] = $dateTimeVisit->getLocalized(Date::DATE_FORMAT_LONG);
+ foreach ($visitorDetailsManipulators as $instance) {
+ $instance->provideActionsForVisitIds($actionsByVisitId, $visitIds);
}
+ }
+
+ foreach ($table->getRows() as $visitorDetailRow) {
+ $visitorDetailsArray = Visitor::cleanVisitorDetails($visitorDetailRow->getColumns());
- $dateTimeVisitFirstAction = Date::factory($visitorDetailsArray['firstActionTimestamp'], $timezone);
- $visitorDetailsArray['serverDatePrettyFirstAction'] = $dateTimeVisitFirstAction->getLocalized(Date::DATE_FORMAT_LONG);
- $visitorDetailsArray['serverTimePrettyFirstAction'] = $dateTimeVisitFirstAction->getLocalized(Date::TIME_FORMAT);
+ $visitor = $visitorFactory->create($visitorDetailsArray);
+ $visitorDetailsArray = $visitor->getAllVisitorDetails();
$visitorDetailsArray['actionDetails'] = array();
if (!$doNotFetchActions) {
- $visitorDetailsArray = Visitor::enrichVisitorArrayWithActions($visitorDetailsArray, $actionsLimit, $idSite, $timezone);
+ $bulkFetchedActions = isset($actionsByVisitId[$visitorDetailsArray['idVisit']]) ? $actionsByVisitId[$visitorDetailsArray['idVisit']] : array();
+ $visitorDetailsArray = Visitor::enrichVisitorArrayWithActions($visitorDetailsArray, $bulkFetchedActions);
}
if ($flat) {