From 836cfc64da116304fd8f8cdbbea2b47b4171d156 Mon Sep 17 00:00:00 2001
From: mattab <matthieu.aubry@gmail.com>
Date: Wed, 9 Apr 2014 18:20:40 +1200
Subject: [PATCH] Refs #472 Add metadata for Custom Events reports (for
 scheduled reports, piwik mobile)

---
 plugins/Events/API.php                        |  49 +++-
 plugins/Events/Events.php                     |  64 +++-
 plugins/Events/lang/en.json                   |   9 +-
 .../ApiGetReportMetadata_yearTest.php         |   3 -
 .../PHPUnit/Integration/CustomEventsTest.php  |  29 +-
 ...tion_lastN__API.getProcessedReport_day.xml | 177 ++++++++++-
 ...gory_lastN__API.getProcessedReport_day.xml |  89 ++++++
 ...Name_lastN__API.getProcessedReport_day.xml | 129 ++++++++
 ...egoryOrNameMatch__Events.getAction_day.xml | 275 ++++++++++++++++++
 ...oryOrNameMatch__Events.getCategory_day.xml | 169 +++++++++++
 ...ategoryOrNameMatch__Events.getName_day.xml | 240 +++++++++++++++
 ...ntActionPlay__Actions.getPageUrls_day.xml} |   0
 ...sEventActionPlay__Events.getAction_day.xml | 197 +++++++++++++
 ...ventActionPlay__Events.getCategory_day.xml | 124 ++++++++
 ...hesEventActionPlay__Events.getName_day.xml | 164 +++++++++++
 tests/PHPUnit/UI                              |   2 +-
 16 files changed, 1682 insertions(+), 38 deletions(-)
 create mode 100644 tests/PHPUnit/Integration/expected/test_CustomEvents_Events.getCategory_lastN__API.getProcessedReport_day.xml
 create mode 100644 tests/PHPUnit/Integration/expected/test_CustomEvents_Events.getName_lastN__API.getProcessedReport_day.xml
 create mode 100644 tests/PHPUnit/Integration/expected/test_CustomEvents_eventCategoryOrNameMatch__Events.getAction_day.xml
 create mode 100644 tests/PHPUnit/Integration/expected/test_CustomEvents_eventCategoryOrNameMatch__Events.getCategory_day.xml
 create mode 100644 tests/PHPUnit/Integration/expected/test_CustomEvents_eventCategoryOrNameMatch__Events.getName_day.xml
 rename tests/PHPUnit/Integration/expected/{test_CustomEvents_eventSegmentMatchNoAction__Actions.getPageUrls_day.xml => test_CustomEvents_segmentMatchesEventActionPlay__Actions.getPageUrls_day.xml} (100%)
 create mode 100644 tests/PHPUnit/Integration/expected/test_CustomEvents_segmentMatchesEventActionPlay__Events.getAction_day.xml
 create mode 100644 tests/PHPUnit/Integration/expected/test_CustomEvents_segmentMatchesEventActionPlay__Events.getCategory_day.xml
 create mode 100644 tests/PHPUnit/Integration/expected/test_CustomEvents_segmentMatchesEventActionPlay__Events.getName_day.xml

diff --git a/plugins/Events/API.php b/plugins/Events/API.php
index 2d8b24919e..241d0bf915 100644
--- a/plugins/Events/API.php
+++ b/plugins/Events/API.php
@@ -22,6 +22,37 @@ use Piwik\Piwik;
  */
 class API extends \Piwik\Plugin\API
 {
+    protected $mappingApiToApiLoadsubtables = array(
+        'getCategory' => 'getActionFromCategoryId',
+        'getAction'   => 'getNameFromActionId',
+        'getName'     => 'getActionFromNameId',
+    );
+
+    protected $mappingApiToRecord = array(
+        'getCategory'             => Archiver::EVENTS_CATEGORY_ACTION_RECORD_NAME,
+        'getAction'               => Archiver::EVENTS_ACTION_NAME_RECORD_NAME,
+        'getName'                 => Archiver::EVENTS_NAME_ACTION_RECORD_NAME,
+        'getActionFromCategoryId' => Archiver::EVENTS_CATEGORY_ACTION_RECORD_NAME,
+        'getNameFromCategoryId'   => Archiver::EVENTS_CATEGORY_NAME_RECORD_NAME,
+        'getCategoryFromActionId' => Archiver::EVENTS_ACTION_CATEGORY_RECORD_NAME,
+        'getNameFromActionId'     => Archiver::EVENTS_ACTION_NAME_RECORD_NAME,
+        'getActionFromNameId'     => Archiver::EVENTS_NAME_ACTION_RECORD_NAME,
+        'getCategoryFromNameId'   => Archiver::EVENTS_NAME_CATEGORY_RECORD_NAME,
+    );
+
+    /**
+     * @ignore
+     */
+    public function getSubtableAction($api)
+    {
+        return $this->mappingApiToApiLoadsubtables[$api];
+    }
+
+    protected function getRecordNameForAction($method)
+    {
+        return $this->mappingApiToRecord[$method];
+    }
+
     protected function getDataTable($name, $idSite, $period, $date, $segment, $expanded = false, $idSubtable = null)
     {
         Piwik::checkUserHasViewAccess($idSite);
@@ -40,46 +71,46 @@ class API extends \Piwik\Plugin\API
 
     public function getCategory($idSite, $period, $date, $segment = false, $expanded = false)
     {
-        return $this->getDataTable(Archiver::EVENTS_CATEGORY_ACTION_RECORD_NAME, $idSite, $period, $date, $segment, $expanded);
+        return $this->getDataTable($this->getRecordNameForAction(__FUNCTION__), $idSite, $period, $date, $segment, $expanded);
     }
 
     public function getAction($idSite, $period, $date, $segment = false, $expanded = false)
     {
-        return $this->getDataTable(Archiver::EVENTS_ACTION_NAME_RECORD_NAME, $idSite, $period, $date, $segment, $expanded);
+        return $this->getDataTable($this->getRecordNameForAction(__FUNCTION__), $idSite, $period, $date, $segment, $expanded);
     }
 
     public function getName($idSite, $period, $date, $segment = false, $expanded = false)
     {
-        return $this->getDataTable(Archiver::EVENTS_NAME_ACTION_RECORD_NAME, $idSite, $period, $date, $segment, $expanded);
+        return $this->getDataTable($this->getRecordNameForAction(__FUNCTION__), $idSite, $period, $date, $segment, $expanded);
     }
 
     public function getActionFromCategoryId($idSite, $period, $date, $idSubtable, $segment = false)
     {
-        return $this->getDataTable(Archiver::EVENTS_CATEGORY_ACTION_RECORD_NAME, $idSite, $period, $date, $segment, $expanded = false, $idSubtable);
+        return $this->getDataTable($this->getRecordNameForAction(__FUNCTION__), $idSite, $period, $date, $segment, $expanded = false, $idSubtable);
     }
 
     public function getNameFromCategoryId($idSite, $period, $date, $idSubtable, $segment = false)
     {
-        return $this->getDataTable(Archiver::EVENTS_CATEGORY_NAME_RECORD_NAME, $idSite, $period, $date, $segment, $expanded = false, $idSubtable);
+        return $this->getDataTable($this->getRecordNameForAction(__FUNCTION__), $idSite, $period, $date, $segment, $expanded = false, $idSubtable);
     }
 
     public function getCategoryFromActionId($idSite, $period, $date, $idSubtable, $segment = false)
     {
-        return $this->getDataTable(Archiver::EVENTS_ACTION_CATEGORY_RECORD_NAME, $idSite, $period, $date, $segment, $expanded = false, $idSubtable);
+        return $this->getDataTable($this->getRecordNameForAction(__FUNCTION__), $idSite, $period, $date, $segment, $expanded = false, $idSubtable);
     }
 
     public function getNameFromActionId($idSite, $period, $date, $idSubtable, $segment = false)
     {
-        return $this->getDataTable(Archiver::EVENTS_ACTION_NAME_RECORD_NAME, $idSite, $period, $date, $segment, $expanded = false, $idSubtable);
+        return $this->getDataTable($this->getRecordNameForAction(__FUNCTION__), $idSite, $period, $date, $segment, $expanded = false, $idSubtable);
     }
 
     public function getActionFromNameId($idSite, $period, $date, $idSubtable, $segment = false)
     {
-        return $this->getDataTable(Archiver::EVENTS_NAME_ACTION_RECORD_NAME, $idSite, $period, $date, $segment, $expanded = false, $idSubtable);
+        return $this->getDataTable($this->getRecordNameForAction(__FUNCTION__), $idSite, $period, $date, $segment, $expanded = false, $idSubtable);
     }
 
     public function getCategoryFromNameId($idSite, $period, $date, $idSubtable, $segment = false)
     {
-        return $this->getDataTable(Archiver::EVENTS_NAME_CATEGORY_RECORD_NAME, $idSite, $period, $date, $segment, $expanded = false, $idSubtable);
+        return $this->getDataTable($this->getRecordNameForAction(__FUNCTION__), $idSite, $period, $date, $segment, $expanded = false, $idSubtable);
     }
 }
\ No newline at end of file
diff --git a/plugins/Events/Events.php b/plugins/Events/Events.php
index dde5adf5ee..66b3dd6d56 100644
--- a/plugins/Events/Events.php
+++ b/plugins/Events/Events.php
@@ -21,19 +21,34 @@ class Events extends \Piwik\Plugin
     {
         return array(
             'API.getSegmentDimensionMetadata'       => 'getSegmentsMetadata',
-            'Metrics.getDefaultMetricTranslations'  => 'getDefaultMetricTranslations',
+            'Metrics.getDefaultMetricTranslations'  => 'addMetricTranslations',
+            'API.getReportMetadata'                 => 'getReportMetadata',
         );
     }
 
-    public function getDefaultMetricTranslations(&$translations)
+    public function addMetricTranslations(&$translations)
     {
-        $eventTranslations = array(
-            'nb_events'         => 'Events_TotalEvents',
-            'sum_event_value'   => 'Events_TotalValue',
-            'min_event_value'   => 'Events_MinValue',
-            'max_event_value'   => 'Events_MaxValue',
+        $translations = array_merge($translations, $this->getMetricTranslations());
+    }
+
+    public function getMetricDocumentation()
+    {
+        return array(
+            'nb_events'         => 'Events_TotalEventsDocumentation',
+            'sum_event_value'   => 'Events_TotalValueDocumentation',
+            'min_event_value'   => 'Events_MinValueDocumentation',
+            'max_event_value'   => 'Events_MaxValueDocumentation',
+        );
+    }
+
+    protected function getMetricTranslations()
+    {
+        return array(
+            'nb_events'       => 'Events_TotalEvents',
+            'sum_event_value' => 'Events_TotalValue',
+            'min_event_value' => 'Events_MinValue',
+            'max_event_value' => 'Events_MaxValue',
         );
-        $translations = array_merge($translations, $eventTranslations);
     }
 
     public function getSegmentsMetadata(&$segments)
@@ -92,4 +107,37 @@ class Events extends \Piwik\Plugin
 //            'bind' => $valueToMatch
 //        );
 //    }
+
+    public function getReportMetadata(&$reports)
+    {
+        $metrics = $this->getMetricTranslations();
+        $documentation = $this->getMetricDocumentation();
+
+        // Translate
+        $callback = array('\\Piwik\\Piwik', 'translate');
+        $metrics = array_map($callback, $metrics);
+        $documentation = array_map($callback, $documentation);
+
+        $reportsMetadata = array(
+            array('Events_EventCategories', 'Events_EventCategory', 'getCategory'),
+            array('Events_EventActions', 'Events_EventAction', 'getAction'),
+            array('Events_EventNames', 'Events_EventName', 'getName'),
+        );
+
+        foreach($reportsMetadata as $order => $reportMeta) {
+            $reports[] = array(
+                'category'              => Piwik::translate('Events_Events'),
+                'name'                  => Piwik::translate($reportMeta[0]),
+                'module'                => 'Events',
+                'action'                => $reportMeta[2],
+                'dimension'             => Piwik::translate($reportMeta[1]),
+                'metrics'               => $metrics,
+                'metricsDocumentation'  => $documentation,
+                'processedMetrics'      => false,
+                'actionToLoadSubTables' => API::getInstance()->getSubtableAction($reportMeta[2]),
+                'order'                 => $order
+            );
+
+        }
+    }
 }
diff --git a/plugins/Events/lang/en.json b/plugins/Events/lang/en.json
index 262fed0e91..62b63ceb27 100644
--- a/plugins/Events/lang/en.json
+++ b/plugins/Events/lang/en.json
@@ -3,13 +3,20 @@
         "Events": "Events",
         "Event": "Event",
         "EventCategory": "Event Category",
+        "EventCategories": "Event Categories",
         "EventAction": "Event Action",
+        "EventActions": "Event Actions",
         "EventName": "Event Name",
+        "EventNames": "Event Names",
         "EventValue": "Event Value",
-        "TotalValue": "Total value",
         "TotalEvents": "Total events",
+        "TotalValue": "Total value",
         "MinValue": "Minimum value",
         "MaxValue": "Maximum value",
+        "TotalEventsDocumentation": "Total number of events",
+        "TotalValueDocumentation": "Total value of events (sum of event values)",
+        "MinValueDocumentation": "Minimum value for this event",
+        "MaxValueDocumentation": "Maximum value for this event",
         "NameNotSet": "(event name not set)"
     }
 }
\ No newline at end of file
diff --git a/tests/PHPUnit/Integration/ApiGetReportMetadata_yearTest.php b/tests/PHPUnit/Integration/ApiGetReportMetadata_yearTest.php
index 61c14c5495..1a3ec47620 100755
--- a/tests/PHPUnit/Integration/ApiGetReportMetadata_yearTest.php
+++ b/tests/PHPUnit/Integration/ApiGetReportMetadata_yearTest.php
@@ -22,9 +22,6 @@ class Test_Piwik_Integration_ApiGetReportMetadata_Year extends IntegrationTestCa
                         'language' => 'fr');
         return array(
             array('API.getProcessedReport', $params),
-            // Removed as time consuming to fix after french translations were changed...
-            //array('API.getReportMetadata', $params),
-            //array('LanguagesManager.getTranslationsForLanguage', $params),
             array('LanguagesManager.getAvailableLanguageNames', $params),
             array('SitesManager.getJavascriptTag', $params)
         );
diff --git a/tests/PHPUnit/Integration/CustomEventsTest.php b/tests/PHPUnit/Integration/CustomEventsTest.php
index ab9c07a66c..7cd9583753 100644
--- a/tests/PHPUnit/Integration/CustomEventsTest.php
+++ b/tests/PHPUnit/Integration/CustomEventsTest.php
@@ -25,7 +25,9 @@ class Test_Piwik_Integration_CustomEvents extends IntegrationTestCase
     protected function getApiToCall()
     {
         return array(
-            'Events',
+            'Events.getCategory',
+            'Events.getAction',
+            'Events.getName',
             'Actions.get',
             'Live.getLastVisitsDetails',
             'Actions.getPageUrls',
@@ -42,20 +44,21 @@ class Test_Piwik_Integration_CustomEvents extends IntegrationTestCase
         $dateTime = self::$fixture->dateTime;
         $idSite1 = self::$fixture->idSite;
 
-        $apiToCall = $this->getApiToCall();
+        $apiToCallProcessedReportMetadata = $this->getApiToCall();
 
         $dayPeriod = 'day';
         $periods = array($dayPeriod, 'month');
 
+        $apiEventAndAction = array('Events', 'Actions.getPageUrls');
         $result = array(
-            array($apiToCall, array(
+            array($apiToCallProcessedReportMetadata, array(
                 'idSite'       => $idSite1,
                 'date'         => $dateTime,
                 'periods'      => $periods,
                 'setDateLastN' => false,
                 'testSuffix'   => '')),
 
-            array('Actions.getPageUrls', array(
+            array($apiEventAndAction, array(
                 'idSite'       => $idSite1,
                 'date'         => $dateTime,
                 'periods'      => $dayPeriod,
@@ -63,8 +66,7 @@ class Test_Piwik_Integration_CustomEvents extends IntegrationTestCase
                 'setDateLastN' => false,
                 'testSuffix'   => '')
             ),
-            // FIXMEA: Add Events.get* here
-            array('Actions.getPageUrls', array(
+            array($apiEventAndAction, array(
                 'idSite'       => $idSite1,
                 'date'         => $dateTime,
                 'periods'      => $dayPeriod,
@@ -74,13 +76,13 @@ class Test_Piwik_Integration_CustomEvents extends IntegrationTestCase
             ),
 
             // eventAction should not match any page view
-            array('Actions.getPageUrls', array(
+            array($apiEventAndAction, array(
                 'idSite'       => $idSite1,
                 'date'         => $dateTime,
                 'periods'      => $dayPeriod,
                 'segment'      => "eventAction=@play",
                 'setDateLastN' => false,
-                'testSuffix'   => '_eventSegmentMatchNoAction')
+                'testSuffix'   => '_segmentMatchesEventActionPlay')
             ),
 
             // eventValue should not match any page view
@@ -94,10 +96,13 @@ class Test_Piwik_Integration_CustomEvents extends IntegrationTestCase
 //            ),
         );
 
-        // testing metadata API for one metadata report
-        $apiToCall = array ( end($apiToCall) );
-
-        foreach ($apiToCall as $api) {
+        $apiToCallProcessedReportMetadata = array(
+            'Events.getCategory',
+            'Events.getAction',
+            'Events.getName',
+        );
+        // testing metadata API for Events reports
+        foreach ($apiToCallProcessedReportMetadata as $api) {
             list($apiModule, $apiAction) = explode(".", $api);
 
             $result[] = array(
diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents_Events.getAction_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents_Events.getAction_lastN__API.getProcessedReport_day.xml
index 25b3270c07..a48d203260 100644
--- a/tests/PHPUnit/Integration/expected/test_CustomEvents_Events.getAction_lastN__API.getProcessedReport_day.xml
+++ b/tests/PHPUnit/Integration/expected/test_CustomEvents_Events.getAction_lastN__API.getProcessedReport_day.xml
@@ -1,7 +1,176 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<error message="Requested report Events.getAction for Website id=1 not found in the list of available reports. 
-
- 
- --&gt; To temporarily debug this error further, set const PIWIK_PRINT_ERROR_BACKTRACE=true; in index.php" />
+	<website>Piwik test</website>
+	<prettyDate>3 Jan 10 - 9 Jan 10</prettyDate>
+	<metadata>
+		<category>Events</category>
+		<name>Event Actions</name>
+		<module>Events</module>
+		<action>getAction</action>
+		<dimension>Event Action</dimension>
+		<metrics>
+			<nb_events>Total events</nb_events>
+			<sum_event_value>Total value</sum_event_value>
+			<min_event_value>Minimum value</min_event_value>
+			<max_event_value>Maximum value</max_event_value>
+		</metrics>
+		<metricsDocumentation>
+			<nb_events>Total number of events</nb_events>
+			<sum_event_value>Total value of events (sum of event values)</sum_event_value>
+			<min_event_value>Minimum value for this event</min_event_value>
+			<max_event_value>Maximum value for this event</max_event_value>
+		</metricsDocumentation>
+		<actionToLoadSubTables>getNameFromActionId</actionToLoadSubTables>
+		<imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=Events&amp;apiAction=getAction&amp;period=range&amp;date=2010-01-03,2010-01-09</imageGraphUrl>
+		<imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=Events&amp;apiAction=getAction&amp;period=day&amp;date=2010-01-03,2010-01-09</imageGraphEvolutionUrl>
+		<uniqueId>Events_getAction</uniqueId>
+	</metadata>
+	<columns>
+		<label>Event Action</label>
+		<nb_events>Total events</nb_events>
+		<sum_event_value>Total value</sum_event_value>
+		<min_event_value>Minimum value</min_event_value>
+		<max_event_value>Maximum value</max_event_value>
+	</columns>
+	<reportData>
+		<result prettyDate="Sunday 3 January 2010">
+			<row>
+				<label>playTrailer</label>
+				<nb_events>6</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Search</label>
+				<nb_events>6</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play25%</label>
+				<nb_events>4</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play50%</label>
+				<nb_events>4</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play75%</label>
+				<nb_events>4</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>playEnd</label>
+				<nb_events>4</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>rating</label>
+				<nb_events>6</nb_events>
+				<sum_event_value>57.32</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>10</max_event_value>
+			</row>
+			<row>
+				<label>clickBuyNow</label>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>event action Extremely long Extremely long Extremely long Extremely long Extremely long Extremely long Extremely long Extremely long Extremely long Extremely long ---&gt; SHOULD APPEAR IN TEST OUTPUT NOT TRUNCATED &lt;---</label>
+				<nb_events>2</nb_events>
+				<sum_event_value>19.32</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>9.66</max_event_value>
+			</row>
+			<row>
+				<label>play</label>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>playStart</label>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Purchase</label>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</result>
+		<result prettyDate="Monday 4 January 2010" />
+		<result prettyDate="Tuesday 5 January 2010" />
+		<result prettyDate="Wednesday 6 January 2010" />
+		<result prettyDate="Thursday 7 January 2010" />
+		<result prettyDate="Friday 8 January 2010" />
+		<result prettyDate="Saturday 9 January 2010" />
+	</reportData>
+	<reportMetadata>
+		<result prettyDate="Sunday 3 January 2010">
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+		</result>
+		<result prettyDate="Monday 4 January 2010" />
+		<result prettyDate="Tuesday 5 January 2010" />
+		<result prettyDate="Wednesday 6 January 2010" />
+		<result prettyDate="Thursday 7 January 2010" />
+		<result prettyDate="Friday 8 January 2010" />
+		<result prettyDate="Saturday 9 January 2010" />
+	</reportMetadata>
+	<reportTotal>
+		<nb_visits>42</nb_visits>
+		<nb_uniq_visitors>40</nb_uniq_visitors>
+	</reportTotal>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents_Events.getCategory_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents_Events.getCategory_lastN__API.getProcessedReport_day.xml
new file mode 100644
index 0000000000..65d282a171
--- /dev/null
+++ b/tests/PHPUnit/Integration/expected/test_CustomEvents_Events.getCategory_lastN__API.getProcessedReport_day.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+	<website>Piwik test</website>
+	<prettyDate>3 Jan 10 - 9 Jan 10</prettyDate>
+	<metadata>
+		<category>Events</category>
+		<name>Event Categories</name>
+		<module>Events</module>
+		<action>getCategory</action>
+		<dimension>Event Category</dimension>
+		<metrics>
+			<nb_events>Total events</nb_events>
+			<sum_event_value>Total value</sum_event_value>
+			<min_event_value>Minimum value</min_event_value>
+			<max_event_value>Maximum value</max_event_value>
+		</metrics>
+		<metricsDocumentation>
+			<nb_events>Total number of events</nb_events>
+			<sum_event_value>Total value of events (sum of event values)</sum_event_value>
+			<min_event_value>Minimum value for this event</min_event_value>
+			<max_event_value>Maximum value for this event</max_event_value>
+		</metricsDocumentation>
+		<actionToLoadSubTables>getActionFromCategoryId</actionToLoadSubTables>
+		<imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=Events&amp;apiAction=getCategory&amp;period=range&amp;date=2010-01-03,2010-01-09</imageGraphUrl>
+		<imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=Events&amp;apiAction=getCategory&amp;period=day&amp;date=2010-01-03,2010-01-09</imageGraphEvolutionUrl>
+		<uniqueId>Events_getCategory</uniqueId>
+	</metadata>
+	<columns>
+		<label>Event Category</label>
+		<nb_events>Total events</nb_events>
+		<sum_event_value>Total value</sum_event_value>
+		<min_event_value>Minimum value</min_event_value>
+		<max_event_value>Maximum value</max_event_value>
+	</columns>
+	<reportData>
+		<result prettyDate="Sunday 3 January 2010">
+			<row>
+				<label>Movie</label>
+				<nb_events>28</nb_events>
+				<sum_event_value>19.32</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>9.66</max_event_value>
+			</row>
+			<row>
+				<label>Music</label>
+				<nb_events>14</nb_events>
+				<sum_event_value>38</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>10</max_event_value>
+			</row>
+			<row>
+				<label>event category Extremely long Extremely long Extremely long Extremely long Extremely long Extremely long Extremely long Extremely long Extremely long Extremely long ---&gt; SHOULD APPEAR IN TEST OUTPUT NOT TRUNCATED &lt;---</label>
+				<nb_events>2</nb_events>
+				<sum_event_value>19.32</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>9.66</max_event_value>
+			</row>
+		</result>
+		<result prettyDate="Monday 4 January 2010" />
+		<result prettyDate="Tuesday 5 January 2010" />
+		<result prettyDate="Wednesday 6 January 2010" />
+		<result prettyDate="Thursday 7 January 2010" />
+		<result prettyDate="Friday 8 January 2010" />
+		<result prettyDate="Saturday 9 January 2010" />
+	</reportData>
+	<reportMetadata>
+		<result prettyDate="Sunday 3 January 2010">
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+		</result>
+		<result prettyDate="Monday 4 January 2010" />
+		<result prettyDate="Tuesday 5 January 2010" />
+		<result prettyDate="Wednesday 6 January 2010" />
+		<result prettyDate="Thursday 7 January 2010" />
+		<result prettyDate="Friday 8 January 2010" />
+		<result prettyDate="Saturday 9 January 2010" />
+	</reportMetadata>
+	<reportTotal>
+		<nb_visits>42</nb_visits>
+		<nb_uniq_visitors>40</nb_uniq_visitors>
+	</reportTotal>
+</result>
\ No newline at end of file
diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents_Events.getName_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents_Events.getName_lastN__API.getProcessedReport_day.xml
new file mode 100644
index 0000000000..ca3272c4d4
--- /dev/null
+++ b/tests/PHPUnit/Integration/expected/test_CustomEvents_Events.getName_lastN__API.getProcessedReport_day.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+	<website>Piwik test</website>
+	<prettyDate>3 Jan 10 - 9 Jan 10</prettyDate>
+	<metadata>
+		<category>Events</category>
+		<name>Event Names</name>
+		<module>Events</module>
+		<action>getName</action>
+		<dimension>Event Name</dimension>
+		<metrics>
+			<nb_events>Total events</nb_events>
+			<sum_event_value>Total value</sum_event_value>
+			<min_event_value>Minimum value</min_event_value>
+			<max_event_value>Maximum value</max_event_value>
+		</metrics>
+		<metricsDocumentation>
+			<nb_events>Total number of events</nb_events>
+			<sum_event_value>Total value of events (sum of event values)</sum_event_value>
+			<min_event_value>Minimum value for this event</min_event_value>
+			<max_event_value>Maximum value for this event</max_event_value>
+		</metricsDocumentation>
+		<actionToLoadSubTables>getActionFromNameId</actionToLoadSubTables>
+		<imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=Events&amp;apiAction=getName&amp;period=range&amp;date=2010-01-03,2010-01-09</imageGraphUrl>
+		<imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=Events&amp;apiAction=getName&amp;period=day&amp;date=2010-01-03,2010-01-09</imageGraphEvolutionUrl>
+		<uniqueId>Events_getName</uniqueId>
+	</metadata>
+	<columns>
+		<label>Event Name</label>
+		<nb_events>Total events</nb_events>
+		<sum_event_value>Total value</sum_event_value>
+		<min_event_value>Minimum value</min_event_value>
+		<max_event_value>Maximum value</max_event_value>
+	</columns>
+	<reportData>
+		<result prettyDate="Sunday 3 January 2010">
+			<row>
+				<label>Spirited Away (千と千尋の神隠し)</label>
+				<nb_events>16</nb_events>
+				<sum_event_value>19.32</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>9.66</max_event_value>
+			</row>
+			<row>
+				<label>La fiancée de l&amp;#039;eau</label>
+				<nb_events>14</nb_events>
+				<sum_event_value>38</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>10</max_event_value>
+			</row>
+			<row>
+				<label>(event name not set)</label>
+				<nb_events>6</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>event name Extremely long Extremely long Extremely long Extremely long Extremely long Extremely long Extremely long Extremely long Extremely long Extremely long ---&gt; SHOULD APPEAR IN TEST OUTPUT NOT TRUNCATED &lt;---</label>
+				<nb_events>2</nb_events>
+				<sum_event_value>19.32</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>9.66</max_event_value>
+			</row>
+			<row>
+				<label>Ponyo (崖の上のポニョ)</label>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Princess Mononoke (もののけ姫)</label>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Search query here</label>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</result>
+		<result prettyDate="Monday 4 January 2010" />
+		<result prettyDate="Tuesday 5 January 2010" />
+		<result prettyDate="Wednesday 6 January 2010" />
+		<result prettyDate="Thursday 7 January 2010" />
+		<result prettyDate="Friday 8 January 2010" />
+		<result prettyDate="Saturday 9 January 2010" />
+	</reportData>
+	<reportMetadata>
+		<result prettyDate="Sunday 3 January 2010">
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+			<row>
+				
+			</row>
+		</result>
+		<result prettyDate="Monday 4 January 2010" />
+		<result prettyDate="Tuesday 5 January 2010" />
+		<result prettyDate="Wednesday 6 January 2010" />
+		<result prettyDate="Thursday 7 January 2010" />
+		<result prettyDate="Friday 8 January 2010" />
+		<result prettyDate="Saturday 9 January 2010" />
+	</reportMetadata>
+	<reportTotal>
+		<nb_visits>42</nb_visits>
+		<nb_uniq_visitors>40</nb_uniq_visitors>
+	</reportTotal>
+</result>
\ No newline at end of file
diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents_eventCategoryOrNameMatch__Events.getAction_day.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents_eventCategoryOrNameMatch__Events.getAction_day.xml
new file mode 100644
index 0000000000..35e643b9c5
--- /dev/null
+++ b/tests/PHPUnit/Integration/expected/test_CustomEvents_eventCategoryOrNameMatch__Events.getAction_day.xml
@@ -0,0 +1,275 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+	<row>
+		<label>playTrailer</label>
+		<nb_uniq_visitors>6</nb_uniq_visitors>
+		<nb_visits>6</nb_visits>
+		<nb_events>6</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>Ponyo (崖の上のポニョ)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Princess Mononoke (もののけ姫)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Spirited Away (千と千尋の神隠し)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>Search</label>
+		<nb_uniq_visitors>4</nb_uniq_visitors>
+		<nb_visits>6</nb_visits>
+		<nb_events>6</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>Search query here</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>play25%</label>
+		<nb_uniq_visitors>4</nb_uniq_visitors>
+		<nb_visits>4</nb_visits>
+		<nb_events>4</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>La fiancée de l&amp;#039;eau</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Spirited Away (千と千尋の神隠し)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>play50%</label>
+		<nb_uniq_visitors>4</nb_uniq_visitors>
+		<nb_visits>4</nb_visits>
+		<nb_events>4</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>La fiancée de l&amp;#039;eau</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Spirited Away (千と千尋の神隠し)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>play75%</label>
+		<nb_uniq_visitors>4</nb_uniq_visitors>
+		<nb_visits>4</nb_visits>
+		<nb_events>4</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>La fiancée de l&amp;#039;eau</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Spirited Away (千と千尋の神隠し)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>playEnd</label>
+		<nb_uniq_visitors>4</nb_uniq_visitors>
+		<nb_visits>4</nb_visits>
+		<nb_events>4</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>La fiancée de l&amp;#039;eau</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Spirited Away (千と千尋の神隠し)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>rating</label>
+		<nb_uniq_visitors>4</nb_uniq_visitors>
+		<nb_visits>4</nb_visits>
+		<nb_events>6</nb_events>
+		<sum_event_value>57.32</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>10</max_event_value>
+		<subtable>
+			<row>
+				<label>La fiancée de l&amp;#039;eau</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>4</nb_events>
+				<sum_event_value>38</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>10</max_event_value>
+			</row>
+			<row>
+				<label>Spirited Away (千と千尋の神隠し)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>19.32</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>9.66</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>clickBuyNow</label>
+		<nb_uniq_visitors>2</nb_uniq_visitors>
+		<nb_visits>2</nb_visits>
+		<nb_events>2</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>Spirited Away (千と千尋の神隠し)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>play</label>
+		<nb_uniq_visitors>2</nb_uniq_visitors>
+		<nb_visits>2</nb_visits>
+		<nb_events>2</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>La fiancée de l&amp;#039;eau</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>playStart</label>
+		<nb_uniq_visitors>2</nb_uniq_visitors>
+		<nb_visits>2</nb_visits>
+		<nb_events>2</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>Spirited Away (千と千尋の神隠し)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>Purchase</label>
+		<nb_uniq_visitors>2</nb_uniq_visitors>
+		<nb_visits>2</nb_visits>
+		<nb_events>2</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+	</row>
+</result>
\ No newline at end of file
diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents_eventCategoryOrNameMatch__Events.getCategory_day.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents_eventCategoryOrNameMatch__Events.getCategory_day.xml
new file mode 100644
index 0000000000..af586f29b8
--- /dev/null
+++ b/tests/PHPUnit/Integration/expected/test_CustomEvents_eventCategoryOrNameMatch__Events.getCategory_day.xml
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+	<row>
+		<label>Movie</label>
+		<nb_uniq_visitors>26</nb_uniq_visitors>
+		<nb_visits>28</nb_visits>
+		<nb_events>28</nb_events>
+		<sum_event_value>19.32</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>9.66</max_event_value>
+		<subtable>
+			<row>
+				<label>playTrailer</label>
+				<nb_uniq_visitors>6</nb_uniq_visitors>
+				<nb_visits>6</nb_visits>
+				<nb_events>6</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Search</label>
+				<nb_uniq_visitors>4</nb_uniq_visitors>
+				<nb_visits>6</nb_visits>
+				<nb_events>6</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>clickBuyNow</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play25%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play50%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play75%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>playEnd</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>playStart</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Purchase</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>rating</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>19.32</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>9.66</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>Music</label>
+		<nb_uniq_visitors>12</nb_uniq_visitors>
+		<nb_visits>12</nb_visits>
+		<nb_events>14</nb_events>
+		<sum_event_value>38</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>10</max_event_value>
+		<subtable>
+			<row>
+				<label>play</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play25%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play50%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play75%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>playEnd</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>rating</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>4</nb_events>
+				<sum_event_value>38</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>10</max_event_value>
+			</row>
+		</subtable>
+	</row>
+</result>
\ No newline at end of file
diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents_eventCategoryOrNameMatch__Events.getName_day.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents_eventCategoryOrNameMatch__Events.getName_day.xml
new file mode 100644
index 0000000000..cf25a9e575
--- /dev/null
+++ b/tests/PHPUnit/Integration/expected/test_CustomEvents_eventCategoryOrNameMatch__Events.getName_day.xml
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+	<row>
+		<label>Spirited Away (千と千尋の神隠し)</label>
+		<nb_uniq_visitors>16</nb_uniq_visitors>
+		<nb_visits>16</nb_visits>
+		<nb_events>16</nb_events>
+		<sum_event_value>19.32</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>9.66</max_event_value>
+		<subtable>
+			<row>
+				<label>clickBuyNow</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play25%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play50%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play75%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>playEnd</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>playStart</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>playTrailer</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>rating</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>19.32</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>9.66</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>La fiancée de l&amp;#039;eau</label>
+		<nb_uniq_visitors>12</nb_uniq_visitors>
+		<nb_visits>12</nb_visits>
+		<nb_events>14</nb_events>
+		<sum_event_value>38</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>10</max_event_value>
+		<subtable>
+			<row>
+				<label>play</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play25%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play50%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play75%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>playEnd</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>rating</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>4</nb_events>
+				<sum_event_value>38</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>10</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>(event name not set)</label>
+		<nb_uniq_visitors>4</nb_uniq_visitors>
+		<nb_visits>6</nb_visits>
+		<nb_events>6</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>Search</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>4</nb_visits>
+				<nb_events>4</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Purchase</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>Ponyo (崖の上のポニョ)</label>
+		<nb_uniq_visitors>2</nb_uniq_visitors>
+		<nb_visits>2</nb_visits>
+		<nb_events>2</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>playTrailer</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>Princess Mononoke (もののけ姫)</label>
+		<nb_uniq_visitors>2</nb_uniq_visitors>
+		<nb_visits>2</nb_visits>
+		<nb_events>2</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>playTrailer</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>Search query here</label>
+		<nb_uniq_visitors>2</nb_uniq_visitors>
+		<nb_visits>2</nb_visits>
+		<nb_events>2</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>Search</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+</result>
\ No newline at end of file
diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents_eventSegmentMatchNoAction__Actions.getPageUrls_day.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents_segmentMatchesEventActionPlay__Actions.getPageUrls_day.xml
similarity index 100%
rename from tests/PHPUnit/Integration/expected/test_CustomEvents_eventSegmentMatchNoAction__Actions.getPageUrls_day.xml
rename to tests/PHPUnit/Integration/expected/test_CustomEvents_segmentMatchesEventActionPlay__Actions.getPageUrls_day.xml
diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents_segmentMatchesEventActionPlay__Events.getAction_day.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents_segmentMatchesEventActionPlay__Events.getAction_day.xml
new file mode 100644
index 0000000000..6bb325b1a4
--- /dev/null
+++ b/tests/PHPUnit/Integration/expected/test_CustomEvents_segmentMatchesEventActionPlay__Events.getAction_day.xml
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+	<row>
+		<label>playTrailer</label>
+		<nb_uniq_visitors>6</nb_uniq_visitors>
+		<nb_visits>6</nb_visits>
+		<nb_events>6</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>Ponyo (崖の上のポニョ)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Princess Mononoke (もののけ姫)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Spirited Away (千と千尋の神隠し)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>play25%</label>
+		<nb_uniq_visitors>4</nb_uniq_visitors>
+		<nb_visits>4</nb_visits>
+		<nb_events>4</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>La fiancée de l&amp;#039;eau</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Spirited Away (千と千尋の神隠し)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>play50%</label>
+		<nb_uniq_visitors>4</nb_uniq_visitors>
+		<nb_visits>4</nb_visits>
+		<nb_events>4</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>La fiancée de l&amp;#039;eau</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Spirited Away (千と千尋の神隠し)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>play75%</label>
+		<nb_uniq_visitors>4</nb_uniq_visitors>
+		<nb_visits>4</nb_visits>
+		<nb_events>4</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>La fiancée de l&amp;#039;eau</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Spirited Away (千と千尋の神隠し)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>playEnd</label>
+		<nb_uniq_visitors>4</nb_uniq_visitors>
+		<nb_visits>4</nb_visits>
+		<nb_events>4</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>La fiancée de l&amp;#039;eau</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>Spirited Away (千と千尋の神隠し)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>play</label>
+		<nb_uniq_visitors>2</nb_uniq_visitors>
+		<nb_visits>2</nb_visits>
+		<nb_events>2</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>La fiancée de l&amp;#039;eau</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>playStart</label>
+		<nb_uniq_visitors>2</nb_uniq_visitors>
+		<nb_visits>2</nb_visits>
+		<nb_events>2</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>Spirited Away (千と千尋の神隠し)</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+</result>
\ No newline at end of file
diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents_segmentMatchesEventActionPlay__Events.getCategory_day.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents_segmentMatchesEventActionPlay__Events.getCategory_day.xml
new file mode 100644
index 0000000000..02585c99f3
--- /dev/null
+++ b/tests/PHPUnit/Integration/expected/test_CustomEvents_segmentMatchesEventActionPlay__Events.getCategory_day.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+	<row>
+		<label>Movie</label>
+		<nb_uniq_visitors>16</nb_uniq_visitors>
+		<nb_visits>16</nb_visits>
+		<nb_events>16</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>playTrailer</label>
+				<nb_uniq_visitors>6</nb_uniq_visitors>
+				<nb_visits>6</nb_visits>
+				<nb_events>6</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play25%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play50%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play75%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>playEnd</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>playStart</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>Music</label>
+		<nb_uniq_visitors>10</nb_uniq_visitors>
+		<nb_visits>10</nb_visits>
+		<nb_events>10</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>play</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play25%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play50%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play75%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>playEnd</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+</result>
\ No newline at end of file
diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents_segmentMatchesEventActionPlay__Events.getName_day.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents_segmentMatchesEventActionPlay__Events.getName_day.xml
new file mode 100644
index 0000000000..f4ff4498f0
--- /dev/null
+++ b/tests/PHPUnit/Integration/expected/test_CustomEvents_segmentMatchesEventActionPlay__Events.getName_day.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+	<row>
+		<label>Spirited Away (千と千尋の神隠し)</label>
+		<nb_uniq_visitors>12</nb_uniq_visitors>
+		<nb_visits>12</nb_visits>
+		<nb_events>12</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>play25%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play50%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play75%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>playEnd</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>playStart</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>playTrailer</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>La fiancée de l&amp;#039;eau</label>
+		<nb_uniq_visitors>10</nb_uniq_visitors>
+		<nb_visits>10</nb_visits>
+		<nb_events>10</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>play</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play25%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play50%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>play75%</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+			<row>
+				<label>playEnd</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>Ponyo (崖の上のポニョ)</label>
+		<nb_uniq_visitors>2</nb_uniq_visitors>
+		<nb_visits>2</nb_visits>
+		<nb_events>2</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>playTrailer</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+	<row>
+		<label>Princess Mononoke (もののけ姫)</label>
+		<nb_uniq_visitors>2</nb_uniq_visitors>
+		<nb_visits>2</nb_visits>
+		<nb_events>2</nb_events>
+		<sum_event_value>0</sum_event_value>
+		<min_event_value>0</min_event_value>
+		<max_event_value>0</max_event_value>
+		<subtable>
+			<row>
+				<label>playTrailer</label>
+				<nb_uniq_visitors>2</nb_uniq_visitors>
+				<nb_visits>2</nb_visits>
+				<nb_events>2</nb_events>
+				<sum_event_value>0</sum_event_value>
+				<min_event_value>0</min_event_value>
+				<max_event_value>0</max_event_value>
+			</row>
+		</subtable>
+	</row>
+</result>
\ No newline at end of file
diff --git a/tests/PHPUnit/UI b/tests/PHPUnit/UI
index a9e6950442..36945e4779 160000
--- a/tests/PHPUnit/UI
+++ b/tests/PHPUnit/UI
@@ -1 +1 @@
-Subproject commit a9e6950442ead5676bd0e72b4fb85edec0faff3b
+Subproject commit 36945e47797cf32b6a6135be1496399bccfaa84a
-- 
GitLab