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:
authorThomas Steur <thomas.steur@gmail.com>2015-02-10 00:37:42 +0300
committerThomas Steur <thomas.steur@gmail.com>2015-02-10 06:52:08 +0300
commitdc9db2d155f5c73140abe7e27a3fb2824ff1100b (patch)
treef39bfbc6cea62b32bec06dff29b87aa47fa692ed /plugins/VisitsSummary
parent7c099358991996ecb98a2d4c1d5eb88af41d0f57 (diff)
refs #6705 Hide users metric in case the feature is not used.
This is an alternative solution to fix this problem. The difference here is that we only do an additional call to VisitsSummary::get if users is 0. The disadvantage is that eg API.getReportMetadata will report that nb_users exist but the API.getProcessedReport might not return it. This already caused some problems while trying to implement it like this as API.getProcessedReport will add all metrics returned by getReportMetadata automatically. So even if we remove nb_users in the API output of VisitsSummary.get it would be still added again. Another disadvantage of this solution is that the code is more fragile as we have to map parameters like $params[0] to idSite, $params[1] to period, ...
Diffstat (limited to 'plugins/VisitsSummary')
-rw-r--r--plugins/VisitsSummary/Reports/Get.php20
-rw-r--r--plugins/VisitsSummary/VisitsSummary.php51
2 files changed, 50 insertions, 21 deletions
diff --git a/plugins/VisitsSummary/Reports/Get.php b/plugins/VisitsSummary/Reports/Get.php
index 7786c5a99e..bced863b07 100644
--- a/plugins/VisitsSummary/Reports/Get.php
+++ b/plugins/VisitsSummary/Reports/Get.php
@@ -40,26 +40,6 @@ class Get extends \Piwik\Plugin\Report
$this->order = 1;
}
- public function configureReportMetadata(&$availableReports, $infos)
- {
- if (!$this->isEnabled()) {
- return;
- }
-
- $usersKey = array_search('nb_users', $this->metrics);
- if ($usersKey !== false && !empty($infos['idSites']) && !empty($infos['period']) && !empty($infos['date'])) {
- $userId = new UserId();
- $isUserIdUsed = $userId->isUsedInAtLeastOneSite($infos['idSites'], $infos['period'], $infos['date']);
-
- if (!$isUserIdUsed) {
- unset($this->metrics[$usersKey]);
- $this->metrics = array_values($this->metrics);
- }
- }
-
- parent::configureReportMetadata($availableReports, $infos);
- }
-
public function getMetrics()
{
$metrics = parent::getMetrics();
diff --git a/plugins/VisitsSummary/VisitsSummary.php b/plugins/VisitsSummary/VisitsSummary.php
index cc6782f216..4150f7dfaf 100644
--- a/plugins/VisitsSummary/VisitsSummary.php
+++ b/plugins/VisitsSummary/VisitsSummary.php
@@ -7,6 +7,8 @@
*
*/
namespace Piwik\Plugins\VisitsSummary;
+use Piwik\DataTable;
+use Piwik\Plugins\CoreHome\Columns\UserId;
/**
* Note: This plugin does not hook on Daily and Period Archiving like other Plugins because it reports the
@@ -23,10 +25,57 @@ class VisitsSummary extends \Piwik\Plugin
public function getListHooksRegistered()
{
return array(
- 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles'
+ 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
+ 'API.API.getProcessedReport.end' => 'enrichProcessedReportIfVisitsSummaryGet',
);
}
+ public function enrichProcessedReportIfVisitsSummaryGet(&$response, $infos)
+ {
+ $params = $infos['parameters'];
+ $module = $params[3];
+ $method = $params[4];
+
+ if ($module !== 'VisitsSummary' || $method !== 'get') {
+ return;
+ }
+
+ $userId = new UserId();
+
+ /** @var DataTable|DataTable\Map $dataTable */
+ $dataTable = $response['reportData'];
+
+ if ($userId->hasDataTableUsers($dataTable)) {
+ return;
+ }
+
+ $idSites = $params[0];
+ if (!is_array($idSites)) {
+ $idSites = array($idSites);
+ }
+
+ $period = $params[1];
+ $date = $params[2];
+
+ if ($userId->isUsedInAtLeastOneSite($idSites, $period, $date)) {
+ return;
+ }
+
+ if (!empty($response['metadata']['metrics']['nb_users'])) {
+ unset($response['metadata']['metrics']['nb_users']);
+ }
+
+ if (!empty($response['metadata']['metricsDocumentation']['nb_users'])) {
+ unset($response['metadata']['metricsDocumentation']['nb_users']);
+ }
+
+ if (!empty($response['columns']['nb_users'])) {
+ unset($response['columns']['nb_users']);
+ }
+
+ $dataTable->deleteColumn('nb_users');
+ }
+
public function getStylesheetFiles(&$stylesheets)
{
$stylesheets[] = "plugins/VisitsSummary/stylesheets/datatable.less";