diff options
20 files changed, 62 insertions, 16 deletions
diff --git a/core/ArchiveProcessor.php b/core/ArchiveProcessor.php index cd3fc0138c..c1de099a26 100644 --- a/core/ArchiveProcessor.php +++ b/core/ArchiveProcessor.php @@ -368,12 +368,16 @@ class ArchiveProcessor // we only compute unique visitors for a single site return; } - if ( $row->getColumn('nb_uniq_visitors') !== false) { + if ( $row->getColumn('nb_uniq_visitors') !== false + || $row->getColumn('nb_users') !== false) { if (SettingsPiwik::isUniqueVisitorsEnabled($this->getParams()->getPeriod()->getLabel())) { - $uniqueVisitors = (float)$this->computeNbUniqVisitors(); - $row->setColumn('nb_uniq_visitors', $uniqueVisitors); + $metrics = array(Metrics::INDEX_NB_UNIQ_VISITORS, Metrics::INDEX_NB_USERS); + $uniques = $this->computeNbUniques( $metrics ); + $row->setColumn('nb_uniq_visitors', $uniques[Metrics::INDEX_NB_UNIQ_VISITORS]); + $row->setColumn('nb_users', $uniques[Metrics::INDEX_NB_USERS]); } else { $row->deleteColumn('nb_uniq_visitors'); + $row->deleteColumn('nb_users'); } } } @@ -395,14 +399,15 @@ class ArchiveProcessor * This is the only Period metric (ie. week/month/year/range) that we process from the logs directly, * since unique visitors cannot be summed like other metrics. * + * @param array Metrics Ids for which to aggregates count of values * @return int */ - protected function computeNbUniqVisitors() + protected function computeNbUniques($metrics) { $logAggregator = $this->getLogAggregator(); - $query = $logAggregator->queryVisitsByDimension(array(), false, array(), array(Metrics::INDEX_NB_UNIQ_VISITORS)); + $query = $logAggregator->queryVisitsByDimension(array(), false, array(), $metrics); $data = $query->fetch(); - return $data[Metrics::INDEX_NB_UNIQ_VISITORS]; + return $data; } /** diff --git a/core/DataAccess/LogAggregator.php b/core/DataAccess/LogAggregator.php index d52ff8b7a0..0170097fe6 100644 --- a/core/DataAccess/LogAggregator.php +++ b/core/DataAccess/LogAggregator.php @@ -164,6 +164,7 @@ class LogAggregator Metrics::INDEX_SUM_VISIT_LENGTH => "sum(" . self::LOG_VISIT_TABLE . ".visit_total_time)", Metrics::INDEX_BOUNCE_COUNT => "sum(case " . self::LOG_VISIT_TABLE . ".visit_total_actions when 1 then 1 when 0 then 1 else 0 end)", Metrics::INDEX_NB_VISITS_CONVERTED => "sum(case " . self::LOG_VISIT_TABLE . ".visit_goal_converted when 1 then 1 else 0 end)", + Metrics::INDEX_NB_USERS => "count(distinct " . self::LOG_VISIT_TABLE . ".user_id)", ); } diff --git a/core/DataArray.php b/core/DataArray.php index 4f994a7d3e..042d5ae961 100644 --- a/core/DataArray.php +++ b/core/DataArray.php @@ -62,6 +62,7 @@ class DataArray return array(Metrics::INDEX_NB_UNIQ_VISITORS => 0, Metrics::INDEX_NB_VISITS => 0, Metrics::INDEX_NB_ACTIONS => 0, + Metrics::INDEX_NB_USERS => 0, Metrics::INDEX_MAX_ACTIONS => 0, Metrics::INDEX_SUM_VISIT_LENGTH => 0, Metrics::INDEX_BOUNCE_COUNT => 0, @@ -90,6 +91,7 @@ class DataArray if ($onlyMetricsAvailableInActionsTable) { return; } + $oldRowToUpdate[Metrics::INDEX_NB_USERS] += $newRowToAdd['nb_users']; $oldRowToUpdate[Metrics::INDEX_MAX_ACTIONS] = (float)max($newRowToAdd['max_actions'], $oldRowToUpdate[Metrics::INDEX_MAX_ACTIONS]); $oldRowToUpdate[Metrics::INDEX_SUM_VISIT_LENGTH] += $newRowToAdd['sum_visit_length']; $oldRowToUpdate[Metrics::INDEX_BOUNCE_COUNT] += $newRowToAdd['bounce_count']; @@ -116,6 +118,7 @@ class DataArray } } + $oldRowToUpdate[Metrics::INDEX_NB_USERS] += $newRowToAdd[Metrics::INDEX_NB_USERS]; $oldRowToUpdate[Metrics::INDEX_MAX_ACTIONS] = (float)max($newRowToAdd[Metrics::INDEX_MAX_ACTIONS], $oldRowToUpdate[Metrics::INDEX_MAX_ACTIONS]); $oldRowToUpdate[Metrics::INDEX_SUM_VISIT_LENGTH] += $newRowToAdd[Metrics::INDEX_SUM_VISIT_LENGTH]; $oldRowToUpdate[Metrics::INDEX_BOUNCE_COUNT] += $newRowToAdd[Metrics::INDEX_BOUNCE_COUNT]; diff --git a/core/Metrics.php b/core/Metrics.php index 4af30600d3..bacfe12831 100644 --- a/core/Metrics.php +++ b/core/Metrics.php @@ -78,6 +78,9 @@ class Metrics const INDEX_EVENT_MAX_EVENT_VALUE = 37; const INDEX_EVENT_NB_HITS_WITH_VALUE = 38; + // Number of unique User IDs + const INDEX_NB_USERS = 39; + // Goal reports const INDEX_GOAL_NB_CONVERSIONS = 1; const INDEX_GOAL_REVENUE = 2; @@ -92,6 +95,7 @@ class Metrics Metrics::INDEX_NB_UNIQ_VISITORS => 'nb_uniq_visitors', Metrics::INDEX_NB_VISITS => 'nb_visits', Metrics::INDEX_NB_ACTIONS => 'nb_actions', + Metrics::INDEX_NB_USERS => 'nb_users', Metrics::INDEX_MAX_ACTIONS => 'max_actions', Metrics::INDEX_SUM_VISIT_LENGTH => 'sum_visit_length', Metrics::INDEX_BOUNCE_COUNT => 'bounce_count', @@ -133,7 +137,7 @@ class Metrics Metrics::INDEX_EVENT_SUM_EVENT_VALUE => 'sum_event_value', Metrics::INDEX_EVENT_MIN_EVENT_VALUE => 'min_event_value', Metrics::INDEX_EVENT_MAX_EVENT_VALUE => 'max_event_value', - Metrics::INDEX_EVENT_NB_HITS_WITH_VALUE => 'nb_events_with_value' + Metrics::INDEX_EVENT_NB_HITS_WITH_VALUE => 'nb_events_with_value', ); @@ -152,6 +156,7 @@ class Metrics Metrics::INDEX_NB_UNIQ_VISITORS, Metrics::INDEX_NB_VISITS, Metrics::INDEX_NB_ACTIONS, + Metrics::INDEX_NB_USERS, Metrics::INDEX_MAX_ACTIONS, Metrics::INDEX_SUM_VISIT_LENGTH, Metrics::INDEX_BOUNCE_COUNT, @@ -256,6 +261,7 @@ class Metrics $afterEntry = ' ' . Piwik::translate('General_AfterEntry'); $translations['sum_daily_nb_uniq_visitors'] = Piwik::translate('General_ColumnNbUniqVisitors') . $dailySum; + $translations['sum_daily_nb_users'] = Piwik::translate('General_ColumnNbUsers') . $dailySum; $translations['sum_daily_entry_nb_uniq_visitors'] = Piwik::translate('General_ColumnUniqueEntrances') . $dailySum; $translations['sum_daily_exit_nb_uniq_visitors'] = Piwik::translate('General_ColumnUniqueExits') . $dailySum; $translations['entry_nb_actions'] = Piwik::translate('General_ColumnNbActions') . $afterEntry; @@ -289,6 +295,7 @@ class Metrics 'nb_visits' => 'General_ColumnNbVisits', 'nb_uniq_visitors' => 'General_ColumnNbUniqVisitors', 'nb_actions' => 'General_ColumnNbActions', + 'nb_users' => 'General_ColumnNbUsers', ); $translations = array_map(array('\\Piwik\\Piwik','translate'), $translations); @@ -362,6 +369,7 @@ class Metrics 'nb_visits' => 'General_ColumnNbVisitsDocumentation', 'nb_uniq_visitors' => 'General_ColumnNbUniqVisitorsDocumentation', 'nb_actions' => 'General_ColumnNbActionsDocumentation', + 'nb_users' => 'General_ColumnNbUsersDocumentation', 'nb_actions_per_visit' => 'General_ColumnActionsPerVisitDocumentation', 'avg_time_on_site' => 'General_ColumnAvgTimeOnSiteDocumentation', 'bounce_rate' => 'General_ColumnBounceRateDocumentation', diff --git a/core/Plugin/Report.php b/core/Plugin/Report.php index 32b4e597b8..71d655f6a7 100644 --- a/core/Plugin/Report.php +++ b/core/Plugin/Report.php @@ -97,7 +97,7 @@ class Report * @var array * @api */ - protected $metrics = array('nb_visits', 'nb_uniq_visitors', 'nb_actions'); + protected $metrics = array('nb_visits', 'nb_uniq_visitors', 'nb_actions', 'nb_users'); // for a little performance improvement we avoid having to call Metrics::getDefaultMetrics for each report /** diff --git a/lang/en.json b/lang/en.json index 5810c31896..2a69e3d7e0 100644 --- a/lang/en.json +++ b/lang/en.json @@ -65,6 +65,8 @@ "ColumnNbActionsDocumentation": "The number of actions performed by your visitors. Actions can be page views, internal site searches, downloads or outlinks.", "ColumnNbUniqVisitors": "Unique visitors", "ColumnNbUniqVisitorsDocumentation": "The number of unduplicated visitors coming to your website. Every user is only counted once, even if he visits the website multiple times a day.", + "ColumnNbUsers": "Users", + "ColumnNbUsersDocumentation": "The number of users logged in your website. It is the number of unique active users that have a User ID set (via the Tracking code function 'setUserId').", "ColumnNbVisits": "Visits", "ColumnNbVisitsDocumentation": "If a visitor comes to your website for the first time or if he visits a page more than 30 minutes after his last page view, this will be recorded as a new visit.", "ColumnPageBounceRateDocumentation": "The percentage of visits that started on this page and left the website straight away.", @@ -270,6 +272,7 @@ "NotValid": "%s is not valid", "NSeconds": "%s seconds", "NumberOfVisits": "Number of visits", + "NUsers": "%s users", "NVisits": "%s visits", "Ok": "Ok", "OneAction": "1 action", diff --git a/plugins/CoreVisualizations/Visualizations/Graph.php b/plugins/CoreVisualizations/Visualizations/Graph.php index b3e8a5f6fa..dbb1942d2a 100644 --- a/plugins/CoreVisualizations/Visualizations/Graph.php +++ b/plugins/CoreVisualizations/Visualizations/Graph.php @@ -135,7 +135,7 @@ abstract class Graph extends Visualization // set default selectable columns, if none specified $selectableColumns = $this->config->selectable_columns; if (false === $selectableColumns) { - $selectableColumns = array('nb_visits', 'nb_actions', 'nb_uniq_visitors'); + $selectableColumns = array('nb_visits', 'nb_actions', 'nb_uniq_visitors', 'nb_users'); if ($this->config->show_goals) { $goalMetrics = array('nb_conversions', 'revenue'); diff --git a/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php b/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php index 9f31098946..dae6698490 100644 --- a/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php +++ b/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php @@ -44,7 +44,7 @@ class AllColumns extends HtmlTable } $columnsToDisplay = array_merge( - $columnsToDisplay, array('nb_actions', 'nb_actions_per_visit', 'avg_time_on_site', 'bounce_rate') + $columnsToDisplay, array('nb_users', 'nb_actions', 'nb_actions_per_visit', 'avg_time_on_site', 'bounce_rate') ); // only display conversion rate for the plugins that do not provide "per goal" metrics diff --git a/plugins/Overlay/Controller.php b/plugins/Overlay/Controller.php index f238b2adc2..35b6f5a793 100644 --- a/plugins/Overlay/Controller.php +++ b/plugins/Overlay/Controller.php @@ -79,7 +79,7 @@ class Controller extends \Piwik\Plugin\Controller $row = $dataTable->getFirstRow(); $translations = Metrics::getDefaultMetricTranslations(); - $showMetrics = array('nb_hits', 'nb_visits', 'nb_uniq_visitors', + $showMetrics = array('nb_hits', 'nb_visits', 'nb_users', 'nb_uniq_visitors', 'bounce_rate', 'exit_rate', 'avg_time_on_page'); foreach ($showMetrics as $metric) { diff --git a/plugins/PrivacyManager/PrivacyManager.php b/plugins/PrivacyManager/PrivacyManager.php index c5b1da1687..b96cc7beed 100644 --- a/plugins/PrivacyManager/PrivacyManager.php +++ b/plugins/PrivacyManager/PrivacyManager.php @@ -351,7 +351,7 @@ class PrivacyManager extends \Piwik\Plugin */ private static function getMetricsToKeep() { - return array('nb_uniq_visitors', 'nb_visits', 'nb_actions', 'max_actions', + return array('nb_uniq_visitors', 'nb_visits', 'nb_users', 'nb_actions', 'max_actions', 'sum_visit_length', 'bounce_count', 'nb_visits_converted', 'nb_conversions', 'revenue', 'quantity', 'price', 'orders'); } diff --git a/plugins/Referrers/Controller.php b/plugins/Referrers/Controller.php index 26286810fa..9cfe18b0d5 100644 --- a/plugins/Referrers/Controller.php +++ b/plugins/Referrers/Controller.php @@ -208,8 +208,9 @@ class Controller extends \Piwik\Plugin\Controller } // configure selectable columns + // should use SettingsPiwik::isUniqueVisitorsEnabled if (Common::getRequestVar('period', false) == 'day') { - $selectable = array('nb_visits', 'nb_uniq_visitors', 'nb_actions'); + $selectable = array('nb_visits', 'nb_uniq_visitors', 'nb_users', 'nb_actions'); } else { $selectable = array('nb_visits', 'nb_actions'); } diff --git a/plugins/UserCountryMap/Controller.php b/plugins/UserCountryMap/Controller.php index 13eaf49150..78b96fb225 100644 --- a/plugins/UserCountryMap/Controller.php +++ b/plugins/UserCountryMap/Controller.php @@ -73,7 +73,8 @@ class Controller extends \Piwik\Plugin\Controller 'avg_time_on_site' => Piwik::translate('VisitsSummary_AverageVisitDuration'), 'and_n_others' => Piwik::translate('UserCountryMap_AndNOthers'), 'no_data' => Piwik::translate('CoreHome_ThereIsNoDataForThisReport'), - 'nb_uniq_visitors' => Piwik::translate('VisitsSummary_NbUniqueVisitors') + 'nb_uniq_visitors' => Piwik::translate('VisitsSummary_NbUniqueVisitors'), + 'nb_users' => Piwik::translate('VisitsSummary_NbUsers'), )); $view->reqParamsJSON = $this->getEnrichedRequest($params = array( @@ -224,6 +225,7 @@ class Controller extends \Piwik\Plugin\Controller $metrics = array(); foreach ($metaData[0]['metrics'] as $id => $val) { + // should use SettingsPiwik::isUniqueVisitorsEnabled ? if (Common::getRequestVar('period') == 'day' || $id != 'nb_uniq_visitors') { $metrics[] = array($id, $val); } diff --git a/plugins/VisitsSummary/API.php b/plugins/VisitsSummary/API.php index e89113eed2..6d58d933a7 100644 --- a/plugins/VisitsSummary/API.php +++ b/plugins/VisitsSummary/API.php @@ -89,6 +89,7 @@ class API extends \Piwik\Plugin\API $columns = array( 'nb_visits', 'nb_actions', + 'nb_users', 'nb_visits_converted', 'bounce_count', 'sum_visit_length', @@ -119,6 +120,11 @@ class API extends \Piwik\Plugin\API return $this->getNumeric($idSite, $period, $date, $segment, 'nb_uniq_visitors'); } + public function getUsers($idSite, $period, $date, $segment = false) + { + return $this->getNumeric($idSite, $period, $date, $segment, 'nb_users'); + } + public function getActions($idSite, $period, $date, $segment = false) { return $this->getNumeric($idSite, $period, $date, $segment, 'nb_actions'); diff --git a/plugins/VisitsSummary/Controller.php b/plugins/VisitsSummary/Controller.php index 1919fd325b..903b2477cf 100644 --- a/plugins/VisitsSummary/Controller.php +++ b/plugins/VisitsSummary/Controller.php @@ -60,6 +60,9 @@ class Controller extends \Piwik\Plugin\Controller . '<b>' . Piwik::translate('General_ColumnNbActions') . ':</b> ' . Piwik::translate('General_ColumnNbActionsDocumentation') . '<br />' + . '<b>' . Piwik::translate('General_ColumnNbUsers') . ':</b> ' + . Piwik::translate('General_ColumnNbUsersDocumentation') . ' (<a target="_blank" href="http://piwik.org/docs/user-id/">User ID</a>)<br />' + . '<b>' . Piwik::translate('General_ColumnActionsPerVisit') . ':</b> ' . Piwik::translate('General_ColumnActionsPerVisitDocumentation'); @@ -67,6 +70,7 @@ class Controller extends \Piwik\Plugin\Controller // columns from VisitsSummary.get 'nb_visits', 'nb_uniq_visitors', + 'nb_users', 'avg_time_on_site', 'bounce_rate', 'nb_actions_per_visit', @@ -124,6 +128,7 @@ class Controller extends \Piwik\Plugin\Controller protected function setSparklinesAndNumbers($view) { $view->urlSparklineNbVisits = $this->getUrlSparkline('getEvolutionGraph', array('columns' => $view->displayUniqueVisitors ? array('nb_visits', 'nb_uniq_visitors') : array('nb_visits'))); + $view->urlSparklineNbUsers = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_users'))); $view->urlSparklineNbPageviews = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_pageviews', 'nb_uniq_pageviews'))); $view->urlSparklineNbDownloads = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_downloads', 'nb_uniq_downloads'))); $view->urlSparklineNbOutlinks = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_outlinks', 'nb_uniq_outlinks'))); @@ -144,6 +149,7 @@ class Controller extends \Piwik\Plugin\Controller $dataRow = $dataTableVisit->getRowsCount() == 0 ? new Row() : $dataTableVisit->getFirstRow(); $view->nbUniqVisitors = (int)$dataRow->getColumn('nb_uniq_visitors'); + $view->nbUsers = (int)$dataRow->getColumn('nb_users'); $nbVisits = (int)$dataRow->getColumn('nb_visits'); $view->nbVisits = $nbVisits; diff --git a/plugins/VisitsSummary/Reports/Get.php b/plugins/VisitsSummary/Reports/Get.php index 926967875a..82a21f1cc9 100644 --- a/plugins/VisitsSummary/Reports/Get.php +++ b/plugins/VisitsSummary/Reports/Get.php @@ -22,6 +22,7 @@ class Get extends \Piwik\Plugin\Report $this->metrics = array( 'nb_uniq_visitors', 'nb_visits', + 'nb_users', 'nb_actions', 'nb_actions_per_visit', 'bounce_rate', diff --git a/plugins/VisitsSummary/templates/_sparklines.twig b/plugins/VisitsSummary/templates/_sparklines.twig index 24c5ad4a74..566781c380 100644 --- a/plugins/VisitsSummary/templates/_sparklines.twig +++ b/plugins/VisitsSummary/templates/_sparklines.twig @@ -5,6 +5,10 @@ {{ 'VisitsSummary_NbUniqueVisitors'|translate("<strong>"~nbUniqVisitors~"</strong>")|raw }}{% endif %} </div> <div class="sparkline"> + {{ sparkline(urlSparklineNbUsers)|raw }} + {{ 'General_NUsers'|translate("<strong>"~nbUsers~"</strong>")|raw }} + </div> + <div class="sparkline"> {{ sparkline(urlSparklineAvgVisitDuration)|raw }} {% set averageVisitDuration=averageVisitDuration|sumtime %} {{ 'VisitsSummary_AverageVisitDuration'|translate("<strong>"~averageVisitDuration~"</strong>")|raw }} diff --git a/tests/PHPUnit/Core/MetricsTest.php b/tests/PHPUnit/Core/MetricsTest.php index 735905b052..fcddc44b7c 100644 --- a/tests/PHPUnit/Core/MetricsTest.php +++ b/tests/PHPUnit/Core/MetricsTest.php @@ -19,6 +19,7 @@ class Core_MetricsTest extends PHPUnit_Framework_TestCase $expectedNames = array(
1 => 'nb_uniq_visitors',
2 => 'nb_visits',
+ 39 => 'nb_users',
3 => 'nb_actions',
4 => 'max_actions',
5 => 'sum_visit_length',
@@ -41,6 +42,7 @@ class Core_MetricsTest extends PHPUnit_Framework_TestCase 'max_actions' => 4,
'sum_visit_length' => 5,
'bounce_count' => 6,
+ 'nb_users' => 39,
'nb_visits_converted' => 7,
'nb_conversions' => 8,
'revenue' => 23,
@@ -94,7 +96,7 @@ class Core_MetricsTest extends PHPUnit_Framework_TestCase $actual = Metrics::isLowerValueBetter($column);
$this->assertEquals($expected, $actual);
}
- +
public function getUnitColumns()
{
return array(
@@ -123,5 +125,5 @@ class Core_MetricsTest extends PHPUnit_Framework_TestCase $actual = Metrics::getUnit($column, 1);
$this->assertEquals($expected, $actual);
}
- +
}
\ No newline at end of file diff --git a/tests/PHPUnit/Integration/Core/ReportTest.php b/tests/PHPUnit/Integration/Core/ReportTest.php index 495a76ef0c..d7688e676c 100644 --- a/tests/PHPUnit/Integration/Core/ReportTest.php +++ b/tests/PHPUnit/Integration/Core/ReportTest.php @@ -324,11 +324,13 @@ class Plugin_ReportTest extends DatabaseTestCase 'nb_visits' => 'General_ColumnNbVisits', 'nb_uniq_visitors' => 'General_ColumnNbUniqVisitors', 'nb_actions' => 'General_ColumnNbActions', + 'nb_users' => 'General_ColumnNbUsers', ), 'metricsDocumentation' => array( 'nb_visits' => 'General_ColumnNbVisitsDocumentation', 'nb_uniq_visitors' => 'General_ColumnNbUniqVisitorsDocumentation', 'nb_actions' => 'General_ColumnNbActionsDocumentation', + 'nb_users' => 'General_ColumnNbUsersDocumentation', ), 'processedMetrics' => array( 'nb_actions_per_visit' => 'General_ColumnActionsPerVisit', diff --git a/tests/PHPUnit/Integration/expected/test_TrackingAPI_SetVisitorId__VisitsSummary.get_day.xml b/tests/PHPUnit/Integration/expected/test_TrackingAPI_SetVisitorId__VisitsSummary.get_day.xml index cb863c1626..9564c423df 100644 --- a/tests/PHPUnit/Integration/expected/test_TrackingAPI_SetVisitorId__VisitsSummary.get_day.xml +++ b/tests/PHPUnit/Integration/expected/test_TrackingAPI_SetVisitorId__VisitsSummary.get_day.xml @@ -3,6 +3,7 @@ <nb_uniq_visitors>5</nb_uniq_visitors> <nb_visits>6</nb_visits> <nb_actions>9</nb_actions> + <nb_users>3</nb_users> <nb_visits_converted>1</nb_visits_converted> <bounce_count>3</bounce_count> <sum_visit_length>1623</sum_visit_length> diff --git a/tests/PHPUnit/Integration/expected/test_TrackingAPI_SetVisitorId_segmentUserId__VisitsSummary.get_day.xml b/tests/PHPUnit/Integration/expected/test_TrackingAPI_SetVisitorId_segmentUserId__VisitsSummary.get_day.xml index 50f9c1b3f7..29c5b0897d 100644 --- a/tests/PHPUnit/Integration/expected/test_TrackingAPI_SetVisitorId_segmentUserId__VisitsSummary.get_day.xml +++ b/tests/PHPUnit/Integration/expected/test_TrackingAPI_SetVisitorId_segmentUserId__VisitsSummary.get_day.xml @@ -3,6 +3,7 @@ <nb_uniq_visitors>1</nb_uniq_visitors> <nb_visits>2</nb_visits> <nb_actions>3</nb_actions> + <nb_users>1</nb_users> <nb_visits_converted>1</nb_visits_converted> <bounce_count>1</bounce_count> <sum_visit_length>1081</sum_visit_length> |