From 8f3ac40c04172e024f5c55c8da25a126ca2fed9b Mon Sep 17 00:00:00 2001
From: sgiehl <stefan@piwik.org>
Date: Wed, 6 Jan 2016 13:20:46 +0100
Subject: [PATCH] fixes #9501 - adds new segment for device brand

---
 plugins/DevicesDetection/API.php              |  1 +
 .../DevicesDetection/Columns/DeviceBrand.php  | 24 +++++++
 plugins/DevicesDetection/functions.php        |  2 +-
 ...ferrerType__API.getProcessedReport_day.xml | 62 +++++++++++++++++++
 ...ithCustomVariablesSegmentMatchNONETest.php |  5 ++
 ...rand__API.getSuggestedValuesForSegment.xml |  4 ++
 ...t_deviceBrand__VisitsSummary.get_range.xml | 12 ++++
 ...tLogs__DevicesDetection.getBrand_month.xml |  4 ++
 ...tLogs__Referrers.getReferrerType_month.xml |  2 +
 ...s_html__Referrers.getSearchEngines_day.xml |  1 +
 ...oVisits__DevicesDetection.getBrand_day.xml |  1 +
 ...oVisits__Referrers.getReferrerType_day.xml |  2 +
 ...Support__DevicesDetection.getBrand_day.xml |  1 +
 ...Support__Referrers.getReferrerType_day.xml |  2 +
 ...eportMetadata__API.getSegmentsMetadata.xml |  7 +++
 ...ange__Referrers.getUrlsForSocial_range.xml |  3 +
 ...able__Referrers.getUrlsForSocial_range.xml | 13 ++++
 ...imiting__Referrers.getReferrerType_day.xml |  3 +
 ...attened__Referrers.getReferrerType_day.xml |  1 +
 ...ngQuery__Referrers.getReferrerType_day.xml |  3 +
 20 files changed, 152 insertions(+), 1 deletion(-)
 create mode 100644 tests/PHPUnit/System/expected/test_AutoSuggestAPITest_deviceBrand__API.getSuggestedValuesForSegment.xml
 create mode 100644 tests/PHPUnit/System/expected/test_AutoSuggestAPITest_deviceBrand__VisitsSummary.get_range.xml

diff --git a/plugins/DevicesDetection/API.php b/plugins/DevicesDetection/API.php
index b6e484f924..69b3f80cdb 100644
--- a/plugins/DevicesDetection/API.php
+++ b/plugins/DevicesDetection/API.php
@@ -96,6 +96,7 @@ class API extends \Piwik\Plugin\API
         $dataTable = $this->getDataTable('DevicesDetection_brands', $idSite, $period, $date, $segment);
         $dataTable->filter('ColumnCallbackReplace', array('label', __NAMESPACE__ . '\getDeviceBrandLabel'));
         $dataTable->filter('ColumnCallbackAddMetadata', array('label', 'logo', __NAMESPACE__ . '\getBrandLogo'));
+        $dataTable->filter('AddSegmentByLabel', array('deviceBrand'));
         return $dataTable;
     }
 
diff --git a/plugins/DevicesDetection/Columns/DeviceBrand.php b/plugins/DevicesDetection/Columns/DeviceBrand.php
index d5b06617ec..f21d1ed15e 100644
--- a/plugins/DevicesDetection/Columns/DeviceBrand.php
+++ b/plugins/DevicesDetection/Columns/DeviceBrand.php
@@ -8,7 +8,9 @@
  */
 namespace Piwik\Plugins\DevicesDetection\Columns;
 
+use DeviceDetector\Parser\Device\DeviceParserAbstract;
 use Piwik\Piwik;
+use Piwik\Plugins\DevicesDetection\Segment;
 use Piwik\Tracker\Request;
 use Piwik\Tracker\Visitor;
 use Piwik\Tracker\Action;
@@ -23,6 +25,28 @@ class DeviceBrand extends Base
         return Piwik::translate('DevicesDetection_DeviceBrand');
     }
 
+    protected function configureSegments()
+    {
+        $brands = DeviceParserAbstract::$deviceBrands;
+        $brandList = implode(", ", $brands);
+
+        $segment = new Segment();
+        $segment->setSegment('deviceBrand');
+        $segment->setName('DevicesDetection_DeviceBrand');
+        $segment->setAcceptedValues($brandList);
+        $segment->setSqlFilter(function ($brand) use ($brandList, $brands) {
+            if ($brand == Piwik::translate('General_Unknown')) {
+                return '';
+            }
+            $index = array_search(trim(urldecode($brand)), $brands);
+            if ($index === false) {
+                throw new \Exception("deviceBrand segment must be one of: $brandList");
+            }
+            return $index;
+        });
+        $this->addSegment($segment);
+    }
+
     /**
      * @param Request $request
      * @param Visitor $visitor
diff --git a/plugins/DevicesDetection/functions.php b/plugins/DevicesDetection/functions.php
index 2142c90487..0feafaebca 100644
--- a/plugins/DevicesDetection/functions.php
+++ b/plugins/DevicesDetection/functions.php
@@ -127,7 +127,7 @@ function getDeviceTypeLabel($label)
         'desktop'       => 'General_Desktop',
         'smartphone'    => 'DevicesDetection_Smartphone',
         'tablet'        => 'DevicesDetection_Tablet',
-        'phablet'        => 'DevicesDetection_Phablet',
+        'phablet'       => 'DevicesDetection_Phablet',
         'feature phone' => 'DevicesDetection_FeaturePhone',
         'console'       => 'DevicesDetection_Console',
         'tv'            => 'DevicesDetection_TV',
diff --git a/plugins/Referrers/tests/System/expected/test_Referrers_getReferrerType__API.getProcessedReport_day.xml b/plugins/Referrers/tests/System/expected/test_Referrers_getReferrerType__API.getProcessedReport_day.xml
index fd12dfdcd0..52de949c82 100644
--- a/plugins/Referrers/tests/System/expected/test_Referrers_getReferrerType__API.getProcessedReport_day.xml
+++ b/plugins/Referrers/tests/System/expected/test_Referrers_getReferrerType__API.getProcessedReport_day.xml
@@ -874,249 +874,311 @@
 		<result prettyDate="Wednesday, February 3, 2010"/>
 		<result prettyDate="Thursday, February 4, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Friday, February 5, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Saturday, February 6, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Sunday, February 7, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Monday, February 8, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Tuesday, February 9, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Wednesday, February 10, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Thursday, February 11, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Friday, February 12, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Saturday, February 13, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Sunday, February 14, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Monday, February 15, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Tuesday, February 16, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Wednesday, February 17, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Thursday, February 18, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Friday, February 19, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Saturday, February 20, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Sunday, February 21, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Monday, February 22, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Tuesday, February 23, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Wednesday, February 24, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Thursday, February 25, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Friday, February 26, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Saturday, February 27, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Sunday, February 28, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Monday, March 1, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Tuesday, March 2, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Wednesday, March 3, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Thursday, March 4, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Friday, March 5, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
 		<result prettyDate="Saturday, March 6, 2010">
 			<row>
+				<segment>referrerType==search</segment>
 				<idsubdatatable>2</idsubdatatable>
 			</row>
 			<row>
+				<segment>referrerType==website</segment>
 				<idsubdatatable>3</idsubdatatable>
 			</row>
 		</result>
diff --git a/tests/PHPUnit/System/TwoVisitsWithCustomVariablesSegmentMatchNONETest.php b/tests/PHPUnit/System/TwoVisitsWithCustomVariablesSegmentMatchNONETest.php
index 482b0d12d8..f2b8e2e632 100755
--- a/tests/PHPUnit/System/TwoVisitsWithCustomVariablesSegmentMatchNONETest.php
+++ b/tests/PHPUnit/System/TwoVisitsWithCustomVariablesSegmentMatchNONETest.php
@@ -73,6 +73,11 @@ class TwoVisitsWithCustomVariablesSegmentMatchNONETest extends SystemTestCase
             if ($segment == 'deviceType') {
                 $matchNone = $segment . '==car%20browser';
             }
+
+            if ($segment == 'deviceBrand') {
+                $matchNone = $segment . '==Yarvik';
+            }
+
             $segmentExpression[] = $matchNone;
         }
 
diff --git a/tests/PHPUnit/System/expected/test_AutoSuggestAPITest_deviceBrand__API.getSuggestedValuesForSegment.xml b/tests/PHPUnit/System/expected/test_AutoSuggestAPITest_deviceBrand__API.getSuggestedValuesForSegment.xml
new file mode 100644
index 0000000000..b406b0dc48
--- /dev/null
+++ b/tests/PHPUnit/System/expected/test_AutoSuggestAPITest_deviceBrand__API.getSuggestedValuesForSegment.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+	<row>Unknown</row>
+</result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_AutoSuggestAPITest_deviceBrand__VisitsSummary.get_range.xml b/tests/PHPUnit/System/expected/test_AutoSuggestAPITest_deviceBrand__VisitsSummary.get_range.xml
new file mode 100644
index 0000000000..f3bee672d6
--- /dev/null
+++ b/tests/PHPUnit/System/expected/test_AutoSuggestAPITest_deviceBrand__VisitsSummary.get_range.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+	<nb_visits>35</nb_visits>
+	<nb_actions>95</nb_actions>
+	<nb_visits_converted>35</nb_visits_converted>
+	<bounce_count>18</bounce_count>
+	<sum_visit_length>27557</sum_visit_length>
+	<max_actions>5</max_actions>
+	<bounce_rate>51%</bounce_rate>
+	<nb_actions_per_visit>2.7</nb_actions_per_visit>
+	<avg_time_on_site>787</avg_time_on_site>
+</result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrand_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrand_month.xml
index 7579eb0c5b..768eb67927 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrand_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrand_month.xml
@@ -11,6 +11,7 @@
 		<sum_daily_nb_uniq_visitors>33</sum_daily_nb_uniq_visitors>
 		<sum_daily_nb_users>1</sum_daily_nb_users>
 		<logo>plugins/DevicesDetection/images/brand/Unknown.ico</logo>
+		<segment>deviceBrand==Unknown</segment>
 	</row>
 	<row>
 		<label>HTC</label>
@@ -23,6 +24,7 @@
 		<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
 		<sum_daily_nb_users>0</sum_daily_nb_users>
 		<logo>plugins/DevicesDetection/images/brand/HTC.ico</logo>
+		<segment>deviceBrand==HTC</segment>
 	</row>
 	<row>
 		<label>Apple</label>
@@ -35,6 +37,7 @@
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 		<sum_daily_nb_users>0</sum_daily_nb_users>
 		<logo>plugins/DevicesDetection/images/brand/Apple.ico</logo>
+		<segment>deviceBrand==Apple</segment>
 	</row>
 	<row>
 		<label>Samsung</label>
@@ -47,5 +50,6 @@
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 		<sum_daily_nb_users>1</sum_daily_nb_users>
 		<logo>plugins/DevicesDetection/images/brand/Samsung.ico</logo>
+		<segment>deviceBrand==Samsung</segment>
 	</row>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Referrers.getReferrerType_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Referrers.getReferrerType_month.xml
index cc8705fcdf..ce32803d44 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Referrers.getReferrerType_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Referrers.getReferrerType_month.xml
@@ -19,6 +19,7 @@
 		<sum_daily_nb_uniq_visitors>33</sum_daily_nb_uniq_visitors>
 		<sum_daily_nb_users>1</sum_daily_nb_users>
 		<nb_visits_converted>0</nb_visits_converted>
+		<segment>referrerType==direct</segment>
 	</row>
 	<row>
 		<label>Websites</label>
@@ -38,6 +39,7 @@
 		<revenue>20</revenue>
 		<sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors>
 		<sum_daily_nb_users>1</sum_daily_nb_users>
+		<segment>referrerType==website</segment>
 		<subtable>
 			<row>
 				<label>example.com</label>
diff --git a/tests/PHPUnit/System/expected/test_LabelFilter_keywords_html__Referrers.getSearchEngines_day.xml b/tests/PHPUnit/System/expected/test_LabelFilter_keywords_html__Referrers.getSearchEngines_day.xml
index 411d2a2eb9..086e95965f 100644
--- a/tests/PHPUnit/System/expected/test_LabelFilter_keywords_html__Referrers.getSearchEngines_day.xml
+++ b/tests/PHPUnit/System/expected/test_LabelFilter_keywords_html__Referrers.getSearchEngines_day.xml
@@ -10,6 +10,7 @@
 		<sum_visit_length>1441</sum_visit_length>
 		<bounce_count>0</bounce_count>
 		<nb_visits_converted>0</nb_visits_converted>
+		<segment>referrerName==Google;referrerType==search;referrerKeyword==%3C%3E%26%5C%22the+pdo+extension+is+required+for+this+adapter+but+the+extension+is+not+loaded</segment>
 		<url>http://google.com/search?q=%3C%3E%26%5C%22the+pdo+extension+is+required+for+this+adapter+but+the+extension+is+not+loaded</url>
 	</row>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__DevicesDetection.getBrand_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__DevicesDetection.getBrand_day.xml
index 8b154c9334..4cf37854e3 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__DevicesDetection.getBrand_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__DevicesDetection.getBrand_day.xml
@@ -10,5 +10,6 @@
 		<bounce_count>1</bounce_count>
 		<nb_visits_converted>2</nb_visits_converted>
 		<logo>plugins/DevicesDetection/images/brand/Unknown.ico</logo>
+		<segment>deviceBrand==Unknown</segment>
 	</row>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Referrers.getReferrerType_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Referrers.getReferrerType_day.xml
index deb88da799..fd2de07373 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Referrers.getReferrerType_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__Referrers.getReferrerType_day.xml
@@ -17,6 +17,7 @@
 		</goals>
 		<nb_conversions>1</nb_conversions>
 		<revenue>1</revenue>
+		<segment>referrerType==search</segment>
 		<subtable>
 			<row>
 				<label>purchase</label>
@@ -55,6 +56,7 @@
 		</goals>
 		<nb_conversions>1</nb_conversions>
 		<revenue>42</revenue>
+		<segment>referrerType==website</segment>
 		<subtable>
 			<row>
 				<label>referrer.com</label>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__DevicesDetection.getBrand_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__DevicesDetection.getBrand_day.xml
index 8ff05bc8ff..a6ccba6e74 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__DevicesDetection.getBrand_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__DevicesDetection.getBrand_day.xml
@@ -11,5 +11,6 @@
 		<bounce_count>1</bounce_count>
 		<nb_visits_converted>2</nb_visits_converted>
 		<logo>plugins/DevicesDetection/images/brand/Unknown.ico</logo>
+		<segment>deviceBrand==Unknown</segment>
 	</row>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Referrers.getReferrerType_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Referrers.getReferrerType_day.xml
index 2225e62fa0..e4b6ce2e00 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Referrers.getReferrerType_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__Referrers.getReferrerType_day.xml
@@ -18,6 +18,7 @@
 		</goals>
 		<nb_conversions>1</nb_conversions>
 		<revenue>1</revenue>
+		<segment>referrerType==search</segment>
 		<subtable>
 			<row>
 				<label>purchase</label>
@@ -58,6 +59,7 @@
 		</goals>
 		<nb_conversions>1</nb_conversions>
 		<revenue>42</revenue>
+		<segment>referrerType==website</segment>
 		<subtable>
 			<row>
 				<label>referrer.com</label>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
index 4ad95c35d3..f7db90cda1 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
@@ -136,6 +136,13 @@
 		<segment>browserVersion</segment>
 		<acceptedValues>1.0, 8.0, etc.</acceptedValues>
 	</row>
+	<row>
+		<type>dimension</type>
+		<category>Visit</category>
+		<name>Device brand</name>
+		<segment>deviceBrand</segment>
+		<acceptedValues>3Q, Acer, Ainol, Airness, Alcatel, Altech UEC, Arnova, Amazon, Amoi, Apple, Archos, ARRIS, Airties, Asus, Avvio, Audiovox, Axxion, BBK, Becker, Bird, Beetel, Bmobile, Barnes &amp; Noble, BangOlufsen, BenQ, BenQ-Siemens, Blu, Boway, bq, Brondi, CUBOT, Casio, Cat, Celkon, ConCorde, Changhong, Cherry Mobile, Cricket, Crosscall, Compal, CnM, Crius Mea, CreNova, Capitel, Compaq, Coolpad, Cowon, Cube, Coby Kyros, Danew, Denver, Dbtel, DoCoMo, Dicam, Dell, DMM, Doogee, Doov, Dopod, Dune HD, E-Boda, Ericsson, ECS, Ezio, Elephone, Easypix, Ericy, eTouch, Evertek, Ezze, Fly, Fujitsu, Garmin-Asus, Gateway, Gemini, Gionee, Gigabyte, Gigaset, Google, Gradiente, Grundig, Haier, Hisense, Hi-Level, HP, HTC, Huawei, Humax, Hyrican, Hyundai, Ikea, iBall, i-Joy, iBerry, iKoMo, i-mate, Infinix, Innostream, Inkti, Intex, i-mobile, INQ, Intek, Inverto, iTel, Jiayu, Jolla, Karbonn, KDDI, Kingsun, Konka, Komu, K-Touch, KT-Tech, Kyocera, Kazam, Lava, Lanix, LCT, Lenovo, Lenco, Le Pan, LG, Loewe, Logicom, Lexibook, Manta Multimedia, Mobistel, Medion, Meizu, Metz, MEU, MicroMax, Mediacom, MediaTek, Mio, Mpman, Motorola, Microsoft, MSI, Memup, Mitsubishi, MLLED, M.T.T., MyPhone, NEC, Netgear, NGM, Nintendo, Nokia, Nikon, Newgen, Nexian, Onda, OnePlus, OPPO, Orange, O2, OUYA, Opsson, Panasonic, PEAQ, Philips, Polaroid, Palm, phoneOne, Pantech, Point of View, PolyPad, Positivo, Prestigio, ProScan, PULID, Qilive, Qtek, Quechua, Overmax, Oysters, Ramos, RCA Tablets, Rikomagic, RIM, Roku, Rover, Samsung, Sega, Sony Ericsson, Sencor, Softbank, SFR, Sagem, Sharp, Siemens, Sendo, Skyworth, Smartfren, Sony, Spice, SuperSonic, Selevision, Sanyo, Symphony, Smart, Storex, Stonex, Sumvision, Tesla, TCL, Telit, TiPhone, Tecno Mobile, Tesco, TIANYU, Telefunken, Telenor, T-Mobile, Thomson, Tolino, Toplux, Toshiba, TechnoTrend, Trevi, Tunisie Telecom, Turbo-X, TVC, TechniSat, teXet, Unowhy, UTStarcom, Videocon, Vertu, Vitelcom, VK Mobile, ViewSonic, Vestel, Vivo, Voxtel, Vodafone, Vizio, Videoweb, Walton, Web TV, WellcoM, Wexler, Wiko, Wolder, Wonu, Woxter, Xiaomi, Xolo, Unknown, Yarvik, Yuandao, Yusun, Zonda, Zopo, ZTE</acceptedValues>
+	</row>
 	<row>
 		<type>dimension</type>
 		<category>Visit</category>
diff --git a/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange__Referrers.getUrlsForSocial_range.xml b/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange__Referrers.getUrlsForSocial_range.xml
index 2b521b00a4..1ed4db4a84 100644
--- a/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange__Referrers.getUrlsForSocial_range.xml
+++ b/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange__Referrers.getUrlsForSocial_range.xml
@@ -10,6 +10,7 @@
 		<nb_visits_converted>0</nb_visits_converted>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 		<sum_daily_nb_users>0</sum_daily_nb_users>
+		<segment>referrerUrl==http%3A%2F%2Ffacebook.com%2Fwhatever</segment>
 		<url>http://facebook.com/whatever</url>
 	</row>
 	<row>
@@ -22,6 +23,7 @@
 		<nb_visits_converted>0</nb_visits_converted>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 		<sum_daily_nb_users>0</sum_daily_nb_users>
+		<segment>referrerUrl==http%3A%2F%2Ffb.me%2F%3Fq%3Dsdlfjs%26n%3Dslfjsd</segment>
 		<url>http://fb.me/?q=sdlfjs&amp;n=slfjsd</url>
 	</row>
 	<row>
@@ -34,6 +36,7 @@
 		<nb_visits_converted>0</nb_visits_converted>
 		<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 		<sum_daily_nb_users>0</sum_daily_nb_users>
+		<segment>referrerUrl==http%3A%2F%2Fwww.facebook.com%2Fanother%2Fpath</segment>
 		<url>http://www.facebook.com/another/path</url>
 	</row>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_noIdSubtable__Referrers.getUrlsForSocial_range.xml b/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_noIdSubtable__Referrers.getUrlsForSocial_range.xml
index 4649b78a18..d85c6fa7fa 100644
--- a/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_noIdSubtable__Referrers.getUrlsForSocial_range.xml
+++ b/tests/PHPUnit/System/expected/test_oneVisitor_oneWebsite_severalDays_DateRange_noIdSubtable__Referrers.getUrlsForSocial_range.xml
@@ -11,6 +11,7 @@
 			<nb_visits_converted>0</nb_visits_converted>
 			<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 			<sum_daily_nb_users>0</sum_daily_nb_users>
+			<segment>referrerUrl==http%3A%2F%2Ffacebook.com%2Fwhatever</segment>
 			<url>http://facebook.com/whatever</url>
 		</row>
 		<row>
@@ -23,6 +24,7 @@
 			<nb_visits_converted>0</nb_visits_converted>
 			<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 			<sum_daily_nb_users>0</sum_daily_nb_users>
+			<segment>referrerUrl==http%3A%2F%2Ffb.me%2F%3Fq%3Dsdlfjs%26n%3Dslfjsd</segment>
 			<url>http://fb.me/?q=sdlfjs&amp;n=slfjsd</url>
 		</row>
 		<row>
@@ -35,6 +37,7 @@
 			<nb_visits_converted>0</nb_visits_converted>
 			<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 			<sum_daily_nb_users>0</sum_daily_nb_users>
+			<segment>referrerUrl==http%3A%2F%2Fmixi.jp</segment>
 			<url>http://mixi.jp</url>
 		</row>
 		<row>
@@ -47,6 +50,7 @@
 			<nb_visits_converted>0</nb_visits_converted>
 			<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 			<sum_daily_nb_users>0</sum_daily_nb_users>
+			<segment>referrerUrl==http%3A%2F%2Fskyrock.com</segment>
 			<url>http://skyrock.com</url>
 		</row>
 		<row>
@@ -59,6 +63,7 @@
 			<nb_visits_converted>0</nb_visits_converted>
 			<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 			<sum_daily_nb_users>0</sum_daily_nb_users>
+			<segment>referrerUrl==http%3A%2F%2Ft.co%2Fid%2F%3Fy%3Ddsfs</segment>
 			<url>http://t.co/id/?y=dsfs</url>
 		</row>
 		<row>
@@ -71,6 +76,7 @@
 			<nb_visits_converted>0</nb_visits_converted>
 			<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 			<sum_daily_nb_users>0</sum_daily_nb_users>
+			<segment>referrerUrl==http%3A%2F%2Ftwitter.com%2Fwhatever2</segment>
 			<url>http://twitter.com/whatever2</url>
 		</row>
 		<row>
@@ -83,6 +89,7 @@
 			<nb_visits_converted>0</nb_visits_converted>
 			<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 			<sum_daily_nb_users>0</sum_daily_nb_users>
+			<segment>referrerUrl==http%3A%2F%2Fwww.facebook.com%2Fanother%2Fpath</segment>
 			<url>http://www.facebook.com/another/path</url>
 		</row>
 		<row>
@@ -95,6 +102,7 @@
 			<nb_visits_converted>0</nb_visits_converted>
 			<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 			<sum_daily_nb_users>0</sum_daily_nb_users>
+			<segment>referrerUrl==http%3A%2F%2Fwww.flickr.com</segment>
 			<url>http://www.flickr.com</url>
 		</row>
 		<row>
@@ -107,6 +115,7 @@
 			<nb_visits_converted>0</nb_visits_converted>
 			<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 			<sum_daily_nb_users>0</sum_daily_nb_users>
+			<segment>referrerUrl==http%3A%2F%2Fwww.twitter.com%2Findex%3Fa%3D2334</segment>
 			<url>http://www.twitter.com/index?a=2334</url>
 		</row>
 		<row>
@@ -119,6 +128,7 @@
 			<nb_visits_converted>0</nb_visits_converted>
 			<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 			<sum_daily_nb_users>0</sum_daily_nb_users>
+			<segment>referrerUrl==http%3A%2F%2Fxanga.com</segment>
 			<url>http://xanga.com</url>
 		</row>
 	</result>
@@ -133,6 +143,7 @@
 			<nb_visits_converted>0</nb_visits_converted>
 			<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 			<sum_daily_nb_users>0</sum_daily_nb_users>
+			<segment>referrerUrl==http%3A%2F%2Ft.co%2Fid%2F%3Fy%3Ddsfs</segment>
 			<url>http://t.co/id/?y=dsfs</url>
 		</row>
 		<row>
@@ -145,6 +156,7 @@
 			<nb_visits_converted>0</nb_visits_converted>
 			<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 			<sum_daily_nb_users>0</sum_daily_nb_users>
+			<segment>referrerUrl==http%3A%2F%2Ftwitter.com%2Fwhatever2</segment>
 			<url>http://twitter.com/whatever2</url>
 		</row>
 		<row>
@@ -157,6 +169,7 @@
 			<nb_visits_converted>0</nb_visits_converted>
 			<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
 			<sum_daily_nb_users>0</sum_daily_nb_users>
+			<segment>referrerUrl==http%3A%2F%2Fwww.facebook.com%2Fanother%2Fpath</segment>
 			<url>http://www.facebook.com/another/path</url>
 		</row>
 	</result>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting__Referrers.getReferrerType_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting__Referrers.getReferrerType_day.xml
index 1cecf66395..61f5ff50c5 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting__Referrers.getReferrerType_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting__Referrers.getReferrerType_day.xml
@@ -10,6 +10,7 @@
 		<sum_visit_length>0</sum_visit_length>
 		<bounce_count>55</bounce_count>
 		<nb_visits_converted>0</nb_visits_converted>
+		<segment>referrerType==direct</segment>
 	</row>
 	<row>
 		<label>Search Engines</label>
@@ -21,6 +22,7 @@
 		<sum_visit_length>0</sum_visit_length>
 		<bounce_count>12</bounce_count>
 		<nb_visits_converted>0</nb_visits_converted>
+		<segment>referrerType==search</segment>
 		<subtable>
 			<row>
 				<label>search term 2</label>
@@ -67,6 +69,7 @@
 		<sum_visit_length>0</sum_visit_length>
 		<bounce_count>8</bounce_count>
 		<nb_visits_converted>0</nb_visits_converted>
+		<segment>referrerType==website</segment>
 		<subtable>
 			<row>
 				<label>whatever0.com</label>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getReferrerType_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getReferrerType_day.xml
index 4f21289bfd..d8646a11f5 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getReferrerType_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_flattened__Referrers.getReferrerType_day.xml
@@ -10,6 +10,7 @@
 		<sum_visit_length>0</sum_visit_length>
 		<bounce_count>55</bounce_count>
 		<nb_visits_converted>0</nb_visits_converted>
+		<segment>referrerType==direct</segment>
 	</row>
 	<row>
 		<label>Search Engines - Others</label>
diff --git a/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Referrers.getReferrerType_day.xml b/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Referrers.getReferrerType_day.xml
index 1cecf66395..61f5ff50c5 100644
--- a/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Referrers.getReferrerType_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__Referrers.getReferrerType_day.xml
@@ -10,6 +10,7 @@
 		<sum_visit_length>0</sum_visit_length>
 		<bounce_count>55</bounce_count>
 		<nb_visits_converted>0</nb_visits_converted>
+		<segment>referrerType==direct</segment>
 	</row>
 	<row>
 		<label>Search Engines</label>
@@ -21,6 +22,7 @@
 		<sum_visit_length>0</sum_visit_length>
 		<bounce_count>12</bounce_count>
 		<nb_visits_converted>0</nb_visits_converted>
+		<segment>referrerType==search</segment>
 		<subtable>
 			<row>
 				<label>search term 2</label>
@@ -67,6 +69,7 @@
 		<sum_visit_length>0</sum_visit_length>
 		<bounce_count>8</bounce_count>
 		<nb_visits_converted>0</nb_visits_converted>
+		<segment>referrerType==website</segment>
 		<subtable>
 			<row>
 				<label>whatever0.com</label>
-- 
GitLab