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:
authorStefan Giehl <stefan@matomo.org>2019-05-13 00:27:14 +0300
committerThomas Steur <tsteur@users.noreply.github.com>2019-05-13 00:27:13 +0300
commit7b56ad807f0ca132c3ddb83fde10efd08ad2b9c4 (patch)
tree8630bd92be8ce75c04be31e89d8d8d774b2275f4 /plugins/Referrers
parentf899245da44cf96cf3b817f3a2d976894a3f838a (diff)
Group different writings of Instagram in reports (#14436)
* Group different writings of Instagram in reports * use new filter class * adds simple test
Diffstat (limited to 'plugins/Referrers')
-rw-r--r--plugins/Referrers/API.php3
-rw-r--r--plugins/Referrers/DataTable/Filter/GroupDifferentSocialWritings.php26
-rw-r--r--plugins/Referrers/tests/Unit/GroupDifferentSocialWritingsTest.php38
3 files changed, 67 insertions, 0 deletions
diff --git a/plugins/Referrers/API.php b/plugins/Referrers/API.php
index b59ac8a36b..39709278e7 100644
--- a/plugins/Referrers/API.php
+++ b/plugins/Referrers/API.php
@@ -15,6 +15,7 @@ use Piwik\Common;
use Piwik\DataTable;
use Piwik\Date;
use Piwik\Piwik;
+use Piwik\Plugins\Referrers\DataTable\Filter\GroupDifferentSocialWritings;
use Piwik\Site;
/**
@@ -365,6 +366,8 @@ class API extends \Piwik\Plugin\API
$dataTable = Archive::createDataTableFromArchive(Archiver::SOCIAL_NETWORKS_RECORD_NAME, $idSite, $period, $date, $segment, $expanded, $flat);
+ $dataTable->filter(GroupDifferentSocialWritings::class);
+
$dataTable->filter('ColumnCallbackAddMetadata', array('label', 'url', function ($name) {
return Social::getInstance()->getMainUrlFromName($name);
}));
diff --git a/plugins/Referrers/DataTable/Filter/GroupDifferentSocialWritings.php b/plugins/Referrers/DataTable/Filter/GroupDifferentSocialWritings.php
new file mode 100644
index 0000000000..9994c52af0
--- /dev/null
+++ b/plugins/Referrers/DataTable/Filter/GroupDifferentSocialWritings.php
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Referrers\DataTable\Filter;
+
+use Piwik\DataTable;
+
+class GroupDifferentSocialWritings extends DataTable\BaseFilter
+{
+ public function filter($table)
+ {
+ if ($table->getRowFromLabel('instagram')) {
+ $table->filter('GroupBy', ['label', function ($value) {
+ if ($value === 'instagram') {
+ return 'Instagram';
+ }
+ return $value;
+ }]);
+ }
+ }
+} \ No newline at end of file
diff --git a/plugins/Referrers/tests/Unit/GroupDifferentSocialWritingsTest.php b/plugins/Referrers/tests/Unit/GroupDifferentSocialWritingsTest.php
new file mode 100644
index 0000000000..0e27e721b0
--- /dev/null
+++ b/plugins/Referrers/tests/Unit/GroupDifferentSocialWritingsTest.php
@@ -0,0 +1,38 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Referrers\tests;
+
+use Piwik\DataTable;
+use Piwik\DataTable\Row;
+use Piwik\Plugins\Referrers\DataTable\Filter\GroupDifferentSocialWritings;
+
+/**
+ * @group DataTableTest
+ * @group GroupDifferentSocialWritingsTest
+ * @group Core
+ * @group sort
+ */
+class GroupDifferentSocialWritingsTest extends \PHPUnit_Framework_TestCase
+{
+
+ public function testRowsAreGrouped()
+ {
+ $table = new DataTable();
+ $table->addRowsFromArray(array(
+ array(Row::COLUMNS => array('label' => 'instagram', 'count' => 100)),
+ array(Row::COLUMNS => array('label' => 'Facebook', 'count' => 5)),
+ array(Row::COLUMNS => array('label' => 'Instagram', 'count' => 10)
+ )));
+ $filter = new GroupDifferentSocialWritings($table);
+ $filter->filter($table);
+ $this->assertEquals(['Instagram', 'Facebook'], $table->getColumn('label'));
+ $this->assertEquals([110, 5], $table->getColumn('count'));
+ }
+
+}