diff options
Diffstat (limited to 'plugins/Live/API.php')
-rw-r--r-- | plugins/Live/API.php | 38 |
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) { |