diff --git a/plugins/Actions/Archiver.php b/plugins/Actions/Archiver.php index 862e5d496c3ae71ee9843f564c25369d1a99e533..94263033c2445ea616afaab979ba7822048666e3 100644 --- a/plugins/Actions/Archiver.php +++ b/plugins/Actions/Archiver.php @@ -124,7 +124,7 @@ class Archiver extends \Piwik\Plugin\Archiver /** * @return string */ - protected function getWhereClauseActionIsNotEvent() + static public function getWhereClauseActionIsNotEvent() { return " AND log_link_visit_action.idaction_event_category IS NULL"; } diff --git a/plugins/Events/Events.php b/plugins/Events/Events.php index d703066637f23f56ac77b9788275a69edc8ba907..f6b86ea842b920ccec7aa1436af79332f0acf04c 100644 --- a/plugins/Events/Events.php +++ b/plugins/Events/Events.php @@ -11,12 +11,11 @@ namespace Piwik\Plugins\Events; use Piwik\Piwik; -use Piwik\Plugin; /** * @package Events */ -class Events extends Plugin +class Events extends \Piwik\Plugin { /** * @see Piwik\Plugin::getListHooksRegistered @@ -56,13 +55,6 @@ class Events extends Plugin 'sqlSegment' => 'log_link_visit_action.idaction_name', 'sqlFilter' => $sqlFilter, ); - $segments[] = array( - 'type' => 'metric', - 'category' => 'Events_Events', - 'name' => 'Events_EventValue', - 'segment' => 'eventValue', - 'sqlSegment' => 'log_link_visit_action.custom_float' - ); $segments[] = array( 'type' => 'metric', 'category' => Piwik::translate('General_Visit'), @@ -71,5 +63,24 @@ class Events extends Plugin 'sqlSegment' => 'log_visit.visit_total_events', 'acceptedValues' => 'To select all visits who triggered an Event, use: &segment=events>0', ); + $segments[] = array( + 'type' => 'metric', + 'category' => 'Events_Events', + 'name' => 'Events_EventValue', + 'segment' => 'eventValue', + 'sqlSegment' => 'log_link_visit_action.custom_float', + 'sqlFilter' => '\\Piwik\\Plugins\\Events\\Events::getSegmentEventValue' + ); + } + + public static function getSegmentEventValue($valueToMatch, $sqlField, $matchType, $segmentName) + { + $isNotEvent = \Piwik\Plugins\Actions\Archiver::getWhereClauseActionIsNotEvent(); + $isEvent = str_replace("IS NULL", "IS NOT NULL", $isNotEvent); + + return array( + 'SQL' => " $sqlField $matchType ? " . $isEvent, + 'bind' => $valueToMatch + ); } } diff --git a/plugins/ExamplePlugin/ExamplePlugin.php b/plugins/ExamplePlugin/ExamplePlugin.php index 7b955e0b4c803e1c47f8a356c70613ae14bd5225..d6a38b749e5626ff4aebc61f660a2fe858df61ca 100644 --- a/plugins/ExamplePlugin/ExamplePlugin.php +++ b/plugins/ExamplePlugin/ExamplePlugin.php @@ -10,12 +10,10 @@ */ namespace Piwik\Plugins\ExamplePlugin; -use Piwik\Plugin; - /** * @package ExamplePlugin */ -class ExamplePlugin extends Plugin +class ExamplePlugin extends \Piwik\Plugin { /** * @see Piwik\Plugin::getListHooksRegistered diff --git a/plugins/ExampleVisualization/ExampleVisualization.php b/plugins/ExampleVisualization/ExampleVisualization.php index c7a05d9584aad86b21f4561683fc0482fb6b4441..c7b16b5d8177cefa8388c7a224d35a9b22cabefd 100644 --- a/plugins/ExampleVisualization/ExampleVisualization.php +++ b/plugins/ExampleVisualization/ExampleVisualization.php @@ -10,12 +10,10 @@ */ namespace Piwik\Plugins\ExampleVisualization; -use Piwik\Plugin; - /** * @package ExampleVisualization */ -class ExampleVisualization extends Plugin +class ExampleVisualization extends \Piwik\Plugin { /** * @see Piwik_Plugin::getListHooksRegistered diff --git a/tests/PHPUnit/Fixtures/TwoVisitsWithCustomEvents.php b/tests/PHPUnit/Fixtures/TwoVisitsWithCustomEvents.php index 34320bda7587c0ad2f86bb872b359de66d9da6d3..303d32c3e6a9cc1d24dbaebb878818b99217c710 100644 --- a/tests/PHPUnit/Fixtures/TwoVisitsWithCustomEvents.php +++ b/tests/PHPUnit/Fixtures/TwoVisitsWithCustomEvents.php @@ -59,6 +59,7 @@ class Test_Piwik_Fixture_TwoVisitsWithCustomEvents extends Test_Piwik_BaseFixtur protected function trackMusicPlaying(PiwikTracker $vis) { $vis->setUrl('http://example.org/webradio'); + $vis->setGenerationTime(333); self::checkResponse($vis->doTrackPageView('Welcome!')); $this->moveTimeForward($vis, 1); @@ -96,6 +97,7 @@ class Test_Piwik_Fixture_TwoVisitsWithCustomEvents extends Test_Piwik_BaseFixtur // First a pageview so the time on page is tracked properly $this->moveTimeForward($vis, 30); $vis->setUrl('http://example.org/movies'); + $vis->setGenerationTime(666); self::checkResponse($vis->doTrackPageView('Movie Theater')); $this->moveTimeForward($vis, 31); diff --git a/tests/PHPUnit/Integration/CustomEventsTest.php b/tests/PHPUnit/Integration/CustomEventsTest.php index e2d64d161e645830bcd0a606b93c57a80efa7ad6..2074a188c7d3c6a486f11aa69d32a8e78a23a413 100644 --- a/tests/PHPUnit/Integration/CustomEventsTest.php +++ b/tests/PHPUnit/Integration/CustomEventsTest.php @@ -71,13 +71,25 @@ class Test_Piwik_Integration_CustomEvents extends IntegrationTestCase 'setDateLastN' => false, 'testSuffix' => '_eventCategoryOrNameMatch') ), + + // eventAction should not match any page view array('Actions.getPageUrls', array( 'idSite' => $idSite1, 'date' => $dateTime, 'periods' => $dayPeriod, 'segment' => "eventAction=@play", 'setDateLastN' => false, - 'testSuffix' => '_eventActionContainsPlay') + 'testSuffix' => '_eventSegmentMatchNoAction') + ), + + // eventValue should not match any page view + array('Actions.getPageUrls', array( + 'idSite' => $idSite1, + 'date' => $dateTime, + 'periods' => $dayPeriod, + 'segment' => "eventValue>0", + 'setDateLastN' => false, + 'testSuffix' => '_eventSegmentMatchNoAction') ), ); diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents_Actions.getPageUrls_lastN__API.getProcessedReport_day.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents_Actions.getPageUrls_lastN__API.getProcessedReport_day.xml index 3592b74be5cf71bf9ff88560b680b066d10ef459..573051b5eb1e31eb94ca22cb4fcccb5acd7f9b3b 100644 --- a/tests/PHPUnit/Integration/expected/test_CustomEvents_Actions.getPageUrls_lastN__API.getProcessedReport_day.xml +++ b/tests/PHPUnit/Integration/expected/test_CustomEvents_Actions.getPageUrls_lastN__API.getProcessedReport_day.xml @@ -48,7 +48,7 @@ <avg_time_on_page>00:00:00</avg_time_on_page> <bounce_rate>0%</bounce_rate> <exit_rate>100%</exit_rate> - <avg_time_generation>0s</avg_time_generation> + <avg_time_generation>0.67s</avg_time_generation> </row> <row> <label>/webradio</label> @@ -57,7 +57,7 @@ <avg_time_on_page>00:24:59</avg_time_on_page> <bounce_rate>0%</bounce_rate> <exit_rate>0%</exit_rate> - <avg_time_generation>0s</avg_time_generation> + <avg_time_generation>0.33s</avg_time_generation> </row> </result> <result prettyDate="Monday 4 January 2010" /> diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents__Actions.getPageUrls_day.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents__Actions.getPageUrls_day.xml index 1b54b1e03d62c39987f7b595f44340ea028767d1..b09bbc9e7f37b22a01171bf189b29317e7354cb5 100644 --- a/tests/PHPUnit/Integration/expected/test_CustomEvents__Actions.getPageUrls_day.xml +++ b/tests/PHPUnit/Integration/expected/test_CustomEvents__Actions.getPageUrls_day.xml @@ -6,11 +6,15 @@ <nb_uniq_visitors>2</nb_uniq_visitors> <nb_hits>2</nb_hits> <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>2</nb_hits_with_time_generation> + <min_time_generation>0.666</min_time_generation> + <max_time_generation>0.666</max_time_generation> <exit_nb_uniq_visitors>2</exit_nb_uniq_visitors> <exit_nb_visits>2</exit_nb_visits> <avg_time_on_page>0</avg_time_on_page> <bounce_rate>0%</bounce_rate> <exit_rate>100%</exit_rate> + <avg_time_generation>0.666</avg_time_generation> <url>http://example.org/movies</url> </row> <row> @@ -19,6 +23,9 @@ <nb_uniq_visitors>2</nb_uniq_visitors> <nb_hits>2</nb_hits> <sum_time_spent>2998</sum_time_spent> + <nb_hits_with_time_generation>2</nb_hits_with_time_generation> + <min_time_generation>0.333</min_time_generation> + <max_time_generation>0.333</max_time_generation> <entry_nb_uniq_visitors>2</entry_nb_uniq_visitors> <entry_nb_visits>2</entry_nb_visits> <entry_nb_actions>30</entry_nb_actions> @@ -27,6 +34,7 @@ <avg_time_on_page>1499</avg_time_on_page> <bounce_rate>0%</bounce_rate> <exit_rate>0%</exit_rate> + <avg_time_generation>0.333</avg_time_generation> <url>http://example.org/webradio</url> </row> </result> \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents__Actions.getPageUrls_month.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents__Actions.getPageUrls_month.xml index 2db3c76eaa6f8ddd070ed1cb96aa7bb50a35d7df..5e6a7b260b5f0bc9a8f139e6e80c23bdef15dc9f 100644 --- a/tests/PHPUnit/Integration/expected/test_CustomEvents__Actions.getPageUrls_month.xml +++ b/tests/PHPUnit/Integration/expected/test_CustomEvents__Actions.getPageUrls_month.xml @@ -5,12 +5,16 @@ <nb_visits>2</nb_visits> <nb_hits>2</nb_hits> <sum_time_spent>0</sum_time_spent> + <nb_hits_with_time_generation>2</nb_hits_with_time_generation> + <min_time_generation>0.666</min_time_generation> + <max_time_generation>0.666</max_time_generation> <exit_nb_visits>2</exit_nb_visits> <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors> <sum_daily_exit_nb_uniq_visitors>2</sum_daily_exit_nb_uniq_visitors> <avg_time_on_page>0</avg_time_on_page> <bounce_rate>0%</bounce_rate> <exit_rate>100%</exit_rate> + <avg_time_generation>0.666</avg_time_generation> <url>http://example.org/movies</url> </row> <row> @@ -18,6 +22,9 @@ <nb_visits>2</nb_visits> <nb_hits>2</nb_hits> <sum_time_spent>2998</sum_time_spent> + <nb_hits_with_time_generation>2</nb_hits_with_time_generation> + <min_time_generation>0.333</min_time_generation> + <max_time_generation>0.333</max_time_generation> <entry_nb_visits>2</entry_nb_visits> <entry_nb_actions>30</entry_nb_actions> <entry_sum_visit_length>7202</entry_sum_visit_length> @@ -27,6 +34,7 @@ <avg_time_on_page>1499</avg_time_on_page> <bounce_rate>0%</bounce_rate> <exit_rate>0%</exit_rate> + <avg_time_generation>0.333</avg_time_generation> <url>http://example.org/webradio</url> </row> </result> \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents__Actions.get_day.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents__Actions.get_day.xml index 210a13e4f33397849082277b399fd68966df4501..65ae232e68d46289bc59928dc3483d5a232c3781 100644 --- a/tests/PHPUnit/Integration/expected/test_CustomEvents__Actions.get_day.xml +++ b/tests/PHPUnit/Integration/expected/test_CustomEvents__Actions.get_day.xml @@ -8,5 +8,5 @@ <nb_uniq_outlinks>0</nb_uniq_outlinks> <nb_searches>0</nb_searches> <nb_keywords>0</nb_keywords> - <avg_time_generation>0</avg_time_generation> + <avg_time_generation>0.5</avg_time_generation> </result> \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents__Actions.get_month.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents__Actions.get_month.xml index 210a13e4f33397849082277b399fd68966df4501..65ae232e68d46289bc59928dc3483d5a232c3781 100644 --- a/tests/PHPUnit/Integration/expected/test_CustomEvents__Actions.get_month.xml +++ b/tests/PHPUnit/Integration/expected/test_CustomEvents__Actions.get_month.xml @@ -8,5 +8,5 @@ <nb_uniq_outlinks>0</nb_uniq_outlinks> <nb_searches>0</nb_searches> <nb_keywords>0</nb_keywords> - <avg_time_generation>0</avg_time_generation> + <avg_time_generation>0.5</avg_time_generation> </result> \ No newline at end of file diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents__Live.getLastVisitsDetails_day.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents__Live.getLastVisitsDetails_day.xml index 2e5eb8bb5058ae75585429ffcbe5de2b5ed899a1..d9086557371b1c42d65dc4a1778d021864e40085 100644 --- a/tests/PHPUnit/Integration/expected/test_CustomEvents__Live.getLastVisitsDetails_day.xml +++ b/tests/PHPUnit/Integration/expected/test_CustomEvents__Live.getLastVisitsDetails_day.xml @@ -178,6 +178,7 @@ <pageIdAction>2</pageIdAction> <pageId>1</pageId> + <generationTime>0.33s</generationTime> <timeSpent>60</timeSpent> <timeSpentPretty>1 min 0s</timeSpentPretty> <icon /> @@ -324,6 +325,7 @@ <pageIdAction>12</pageIdAction> <pageId>9</pageId> + <generationTime>0.67s</generationTime> <timeSpent>60</timeSpent> <timeSpentPretty>1 min 0s</timeSpentPretty> <icon /> @@ -654,6 +656,7 @@ <pageIdAction>2</pageIdAction> <pageId>21</pageId> + <generationTime>0.33s</generationTime> <timeSpent>60</timeSpent> <timeSpentPretty>1 min 0s</timeSpentPretty> <icon /> @@ -800,6 +803,7 @@ <pageIdAction>12</pageIdAction> <pageId>29</pageId> + <generationTime>0.67s</generationTime> <timeSpent>60</timeSpent> <timeSpentPretty>1 min 0s</timeSpentPretty> <icon /> diff --git a/tests/PHPUnit/Integration/expected/test_CustomEvents__Live.getLastVisitsDetails_month.xml b/tests/PHPUnit/Integration/expected/test_CustomEvents__Live.getLastVisitsDetails_month.xml index 2e5eb8bb5058ae75585429ffcbe5de2b5ed899a1..d9086557371b1c42d65dc4a1778d021864e40085 100644 --- a/tests/PHPUnit/Integration/expected/test_CustomEvents__Live.getLastVisitsDetails_month.xml +++ b/tests/PHPUnit/Integration/expected/test_CustomEvents__Live.getLastVisitsDetails_month.xml @@ -178,6 +178,7 @@ <pageIdAction>2</pageIdAction> <pageId>1</pageId> + <generationTime>0.33s</generationTime> <timeSpent>60</timeSpent> <timeSpentPretty>1 min 0s</timeSpentPretty> <icon /> @@ -324,6 +325,7 @@ <pageIdAction>12</pageIdAction> <pageId>9</pageId> + <generationTime>0.67s</generationTime> <timeSpent>60</timeSpent> <timeSpentPretty>1 min 0s</timeSpentPretty> <icon /> @@ -654,6 +656,7 @@ <pageIdAction>2</pageIdAction> <pageId>21</pageId> + <generationTime>0.33s</generationTime> <timeSpent>60</timeSpent> <timeSpentPretty>1 min 0s</timeSpentPretty> <icon /> @@ -800,6 +803,7 @@ <pageIdAction>12</pageIdAction> <pageId>29</pageId> + <generationTime>0.67s</generationTime> <timeSpent>60</timeSpent> <timeSpentPretty>1 min 0s</timeSpentPretty> <icon />