diff options
author | Stefan Giehl <stefan@matomo.org> | 2019-05-13 00:27:14 +0300 |
---|---|---|
committer | Thomas Steur <tsteur@users.noreply.github.com> | 2019-05-13 00:27:13 +0300 |
commit | 7b56ad807f0ca132c3ddb83fde10efd08ad2b9c4 (patch) | |
tree | 8630bd92be8ce75c04be31e89d8d8d774b2275f4 /plugins | |
parent | f899245da44cf96cf3b817f3a2d976894a3f838a (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')
-rw-r--r-- | plugins/Referrers/API.php | 3 | ||||
-rw-r--r-- | plugins/Referrers/DataTable/Filter/GroupDifferentSocialWritings.php | 26 | ||||
-rw-r--r-- | plugins/Referrers/tests/Unit/GroupDifferentSocialWritingsTest.php | 38 |
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')); + } + +} |