From 05c4b313cf29bec72bb6cd8ed10142b84b39a4c6 Mon Sep 17 00:00:00 2001 From: diosmosis Date: Thu, 13 Nov 2014 20:46:17 -0800 Subject: Move all Metrics to Columns folder. --- plugins/Actions/API.php | 8 +- .../Columns/Metrics/AveragePageGenerationTime.php | 89 +++++++++++++++ .../Actions/Columns/Metrics/AverageTimeOnPage.php | 51 +++++++++ plugins/Actions/Columns/Metrics/BounceRate.php | 51 +++++++++ plugins/Actions/Columns/Metrics/ExitRate.php | 51 +++++++++ .../Actions/Metrics/AveragePageGenerationTime.php | 89 --------------- plugins/Actions/Metrics/AverageTimeOnPage.php | 51 --------- plugins/Actions/Metrics/BounceRate.php | 51 --------- plugins/Actions/Metrics/ExitRate.php | 51 --------- plugins/Actions/Reports/Get.php | 2 +- plugins/Actions/Reports/GetEntryPageTitles.php | 8 +- plugins/Actions/Reports/GetEntryPageUrls.php | 8 +- plugins/Actions/Reports/GetExitPageTitles.php | 8 +- plugins/Actions/Reports/GetExitPageUrls.php | 8 +- plugins/Actions/Reports/GetPageTitles.php | 8 +- .../Reports/GetPageTitlesFollowingSiteSearch.php | 8 +- plugins/Actions/Reports/GetPageUrls.php | 8 +- plugins/Actions/Reports/GetSiteSearchKeywords.php | 8 +- .../Reports/GetSiteSearchNoResultKeywords.php | 8 +- .../Contents/Columns/Metrics/InteractionRate.php | 52 +++++++++ plugins/Contents/Metrics/InteractionRate.php | 52 --------- plugins/Contents/Reports/GetContentNames.php | 2 +- plugins/Contents/Reports/GetContentPieces.php | 2 +- .../CoreHome/Columns/Metrics/ActionsPerVisit.php | 46 ++++++++ .../CoreHome/Columns/Metrics/AverageTimeOnSite.php | 53 +++++++++ plugins/CoreHome/Columns/Metrics/BounceRate.php | 52 +++++++++ .../CoreHome/Columns/Metrics/ConversionRate.php | 51 +++++++++ .../CoreHome/Columns/Metrics/EvolutionMetric.php | 123 ++++++++++++++++++++ plugins/CoreHome/Columns/Metrics/VisitsPercent.php | 77 +++++++++++++ plugins/CoreHome/Metrics/ActionsPerVisit.php | 46 -------- plugins/CoreHome/Metrics/AverageTimeOnSite.php | 53 --------- plugins/CoreHome/Metrics/BounceRate.php | 52 --------- plugins/CoreHome/Metrics/ConversionRate.php | 51 --------- plugins/CoreHome/Metrics/EvolutionMetric.php | 124 --------------------- plugins/CoreHome/Metrics/VisitsPercent.php | 77 ------------- .../Events/Columns/Metrics/AverageEventValue.php | 45 ++++++++ plugins/Events/Metrics/AverageEventValue.php | 45 -------- plugins/Events/Reports/Base.php | 2 +- plugins/Goals/API.php | 2 +- .../Goals/Columns/Metrics/AverageOrderRevenue.php | 60 ++++++++++ plugins/Goals/Columns/Metrics/AveragePrice.php | 63 +++++++++++ plugins/Goals/Columns/Metrics/AverageQuantity.php | 47 ++++++++ .../Metrics/GoalSpecific/AverageOrderRevenue.php | 67 +++++++++++ .../Metrics/GoalSpecific/ConversionRate.php | 63 +++++++++++ .../Columns/Metrics/GoalSpecific/Conversions.php | 43 +++++++ .../Columns/Metrics/GoalSpecific/ItemsCount.php | 48 ++++++++ .../Goals/Columns/Metrics/GoalSpecific/Revenue.php | 60 ++++++++++ .../Metrics/GoalSpecific/RevenuePerVisit.php | 75 +++++++++++++ .../Metrics/GoalSpecificProcessedMetric.php | 92 +++++++++++++++ .../Columns/Metrics/ProductConversionRate.php | 54 +++++++++ plugins/Goals/Columns/Metrics/RevenuePerVisit.php | 83 ++++++++++++++ plugins/Goals/Metrics/AverageOrderRevenue.php | 60 ---------- plugins/Goals/Metrics/AveragePrice.php | 63 ----------- plugins/Goals/Metrics/AverageQuantity.php | 47 -------- .../Metrics/GoalSpecific/AverageOrderRevenue.php | 67 ----------- .../Goals/Metrics/GoalSpecific/ConversionRate.php | 63 ----------- plugins/Goals/Metrics/GoalSpecific/Conversions.php | 43 ------- plugins/Goals/Metrics/GoalSpecific/ItemsCount.php | 48 -------- plugins/Goals/Metrics/GoalSpecific/Revenue.php | 60 ---------- .../Goals/Metrics/GoalSpecific/RevenuePerVisit.php | 75 ------------- .../Goals/Metrics/GoalSpecificProcessedMetric.php | 93 ---------------- plugins/Goals/Metrics/ProductConversionRate.php | 54 --------- plugins/Goals/Metrics/RevenuePerVisit.php | 83 -------------- plugins/Goals/Reports/BaseEcommerceItem.php | 6 +- .../Columns/Metrics/RevenueEvolution.php | 37 ++++++ plugins/MultiSites/Metrics/RevenueEvolution.php | 37 ------ plugins/UserSettings/API.php | 2 +- .../Columns/Metrics/ReturningMetric.php | 64 +++++++++++ plugins/VisitFrequency/Metrics/ReturningMetric.php | 64 ----------- plugins/VisitFrequency/Reports/Get.php | 8 +- .../Reports/GetNumberOfVisitsByVisitCount.php | 2 +- plugins/VisitsSummary/Reports/Get.php | 6 +- 72 files changed, 1654 insertions(+), 1656 deletions(-) create mode 100644 plugins/Actions/Columns/Metrics/AveragePageGenerationTime.php create mode 100644 plugins/Actions/Columns/Metrics/AverageTimeOnPage.php create mode 100644 plugins/Actions/Columns/Metrics/BounceRate.php create mode 100644 plugins/Actions/Columns/Metrics/ExitRate.php delete mode 100644 plugins/Actions/Metrics/AveragePageGenerationTime.php delete mode 100644 plugins/Actions/Metrics/AverageTimeOnPage.php delete mode 100644 plugins/Actions/Metrics/BounceRate.php delete mode 100644 plugins/Actions/Metrics/ExitRate.php create mode 100644 plugins/Contents/Columns/Metrics/InteractionRate.php delete mode 100644 plugins/Contents/Metrics/InteractionRate.php create mode 100644 plugins/CoreHome/Columns/Metrics/ActionsPerVisit.php create mode 100644 plugins/CoreHome/Columns/Metrics/AverageTimeOnSite.php create mode 100644 plugins/CoreHome/Columns/Metrics/BounceRate.php create mode 100644 plugins/CoreHome/Columns/Metrics/ConversionRate.php create mode 100644 plugins/CoreHome/Columns/Metrics/EvolutionMetric.php create mode 100644 plugins/CoreHome/Columns/Metrics/VisitsPercent.php delete mode 100644 plugins/CoreHome/Metrics/ActionsPerVisit.php delete mode 100644 plugins/CoreHome/Metrics/AverageTimeOnSite.php delete mode 100644 plugins/CoreHome/Metrics/BounceRate.php delete mode 100644 plugins/CoreHome/Metrics/ConversionRate.php delete mode 100644 plugins/CoreHome/Metrics/EvolutionMetric.php delete mode 100644 plugins/CoreHome/Metrics/VisitsPercent.php create mode 100644 plugins/Events/Columns/Metrics/AverageEventValue.php delete mode 100644 plugins/Events/Metrics/AverageEventValue.php create mode 100644 plugins/Goals/Columns/Metrics/AverageOrderRevenue.php create mode 100644 plugins/Goals/Columns/Metrics/AveragePrice.php create mode 100644 plugins/Goals/Columns/Metrics/AverageQuantity.php create mode 100644 plugins/Goals/Columns/Metrics/GoalSpecific/AverageOrderRevenue.php create mode 100644 plugins/Goals/Columns/Metrics/GoalSpecific/ConversionRate.php create mode 100644 plugins/Goals/Columns/Metrics/GoalSpecific/Conversions.php create mode 100644 plugins/Goals/Columns/Metrics/GoalSpecific/ItemsCount.php create mode 100644 plugins/Goals/Columns/Metrics/GoalSpecific/Revenue.php create mode 100644 plugins/Goals/Columns/Metrics/GoalSpecific/RevenuePerVisit.php create mode 100644 plugins/Goals/Columns/Metrics/GoalSpecificProcessedMetric.php create mode 100644 plugins/Goals/Columns/Metrics/ProductConversionRate.php create mode 100644 plugins/Goals/Columns/Metrics/RevenuePerVisit.php delete mode 100644 plugins/Goals/Metrics/AverageOrderRevenue.php delete mode 100644 plugins/Goals/Metrics/AveragePrice.php delete mode 100644 plugins/Goals/Metrics/AverageQuantity.php delete mode 100644 plugins/Goals/Metrics/GoalSpecific/AverageOrderRevenue.php delete mode 100644 plugins/Goals/Metrics/GoalSpecific/ConversionRate.php delete mode 100644 plugins/Goals/Metrics/GoalSpecific/Conversions.php delete mode 100644 plugins/Goals/Metrics/GoalSpecific/ItemsCount.php delete mode 100644 plugins/Goals/Metrics/GoalSpecific/Revenue.php delete mode 100644 plugins/Goals/Metrics/GoalSpecific/RevenuePerVisit.php delete mode 100644 plugins/Goals/Metrics/GoalSpecificProcessedMetric.php delete mode 100644 plugins/Goals/Metrics/ProductConversionRate.php delete mode 100644 plugins/Goals/Metrics/RevenuePerVisit.php create mode 100644 plugins/MultiSites/Columns/Metrics/RevenueEvolution.php delete mode 100644 plugins/MultiSites/Metrics/RevenueEvolution.php create mode 100644 plugins/VisitFrequency/Columns/Metrics/ReturningMetric.php delete mode 100644 plugins/VisitFrequency/Metrics/ReturningMetric.php (limited to 'plugins') diff --git a/plugins/Actions/API.php b/plugins/Actions/API.php index 4b730c0c07..0cf5bd63a8 100644 --- a/plugins/Actions/API.php +++ b/plugins/Actions/API.php @@ -17,10 +17,10 @@ use Piwik\Date; use Piwik\Metrics; use Piwik\Piwik; use Piwik\Plugin\Report; -use Piwik\Plugins\Actions\Metrics\AveragePageGenerationTime; -use Piwik\Plugins\Actions\Metrics\AverageTimeOnPage; -use Piwik\Plugins\Actions\Metrics\BounceRate; -use Piwik\Plugins\Actions\Metrics\ExitRate; +use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime; +use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage; +use Piwik\Plugins\Actions\Columns\Metrics\BounceRate; +use Piwik\Plugins\Actions\Columns\Metrics\ExitRate; use Piwik\Plugins\CustomVariables\API as APICustomVariables; use Piwik\Plugins\Actions\Actions\ActionSiteSearch; use Piwik\Tracker\Action; diff --git a/plugins/Actions/Columns/Metrics/AveragePageGenerationTime.php b/plugins/Actions/Columns/Metrics/AveragePageGenerationTime.php new file mode 100644 index 0000000000..cf8ea3018d --- /dev/null +++ b/plugins/Actions/Columns/Metrics/AveragePageGenerationTime.php @@ -0,0 +1,89 @@ +getMetric($row, 'sum_time_generation'); + $hitsWithTimeGeneration = $this->getMetric($row, 'nb_hits_with_time_generation'); + + return Piwik::getQuotientSafe($sumGenerationTime, $hitsWithTimeGeneration, $precision = 3); + } + + public function format($value, Formatter $formatter) + { + return $value ? $formatter->getPrettyTimeFromSeconds($value, $displayAsSentence = true) : "-"; + } + + public function beforeCompute($report, DataTable $table) + { + $hasTimeGeneration = array_sum($this->getMetricValues($table, 'sum_time_generation')) > 0; + + if (!$hasTimeGeneration) { + // No generation time: remove it from the API output and add it to empty_columns metadata, so that + // the columns can also be removed from the view + $table->filter('ColumnDelete', array(array( + Metrics::INDEX_PAGE_SUM_TIME_GENERATION, + Metrics::INDEX_PAGE_NB_HITS_WITH_TIME_GENERATION, + Metrics::INDEX_PAGE_MIN_TIME_GENERATION, + Metrics::INDEX_PAGE_MAX_TIME_GENERATION, + 'sum_time_generation', + 'nb_hits_with_time_generation', + 'min_time_generation', + 'max_time_generation' + ))); + + if ($table instanceof DataTable) { + $emptyColumns = $table->getMetadata(DataTable::EMPTY_COLUMNS_METADATA_NAME); + if (!is_array($emptyColumns)) { + $emptyColumns = array(); + } + $emptyColumns[] = 'sum_time_generation'; + $emptyColumns[] = 'avg_time_generation'; + $emptyColumns[] = 'min_time_generation'; + $emptyColumns[] = 'max_time_generation'; + $table->setMetadata(DataTable::EMPTY_COLUMNS_METADATA_NAME, $emptyColumns); + } + } + + return $hasTimeGeneration; + } +} \ No newline at end of file diff --git a/plugins/Actions/Columns/Metrics/AverageTimeOnPage.php b/plugins/Actions/Columns/Metrics/AverageTimeOnPage.php new file mode 100644 index 0000000000..480964a52a --- /dev/null +++ b/plugins/Actions/Columns/Metrics/AverageTimeOnPage.php @@ -0,0 +1,51 @@ +getMetric($row, 'sum_time_spent'); + $visits = $this->getMetric($row, 'nb_visits'); + + return Piwik::getQuotientSafe($sumTimeSpent, $visits, $precision = 0); + } + + public function format($value, Formatter $formatter) + { + return $formatter->getPrettyTimeFromSeconds($value); + } + + public function getDependentMetrics() + { + return array('sum_time_spent', 'nb_visits'); + } +} \ No newline at end of file diff --git a/plugins/Actions/Columns/Metrics/BounceRate.php b/plugins/Actions/Columns/Metrics/BounceRate.php new file mode 100644 index 0000000000..da748b5ea6 --- /dev/null +++ b/plugins/Actions/Columns/Metrics/BounceRate.php @@ -0,0 +1,51 @@ +getMetric($row, 'entry_bounce_count'); + $entryVisits = $this->getMetric($row, 'entry_nb_visits'); + + return Piwik::getQuotientSafe($entryBounceCount, $entryVisits, $precision = 2); + } + + public function format($value, Formatter $formatter) + { + return $formatter->getPrettyPercentFromQuotient($value); + } + + public function getDependentMetrics() + { + return array('entry_bounce_count', 'entry_nb_visits'); + } +} \ No newline at end of file diff --git a/plugins/Actions/Columns/Metrics/ExitRate.php b/plugins/Actions/Columns/Metrics/ExitRate.php new file mode 100644 index 0000000000..4f78b2482f --- /dev/null +++ b/plugins/Actions/Columns/Metrics/ExitRate.php @@ -0,0 +1,51 @@ +getMetric($row, 'exit_nb_visits'); + $visits = $this->getMetric($row, 'nb_visits'); + + return Piwik::getQuotientSafe($exitVisits, $visits, $precision = 2); + } + + public function format($value, Formatter $formatter) + { + return $formatter->getPrettyPercentFromQuotient($value); + } + + public function getDependentMetrics() + { + return array('exit_nb_visits', 'nb_visits'); + } +} \ No newline at end of file diff --git a/plugins/Actions/Metrics/AveragePageGenerationTime.php b/plugins/Actions/Metrics/AveragePageGenerationTime.php deleted file mode 100644 index 50b6cc7227..0000000000 --- a/plugins/Actions/Metrics/AveragePageGenerationTime.php +++ /dev/null @@ -1,89 +0,0 @@ -getMetric($row, 'sum_time_generation'); - $hitsWithTimeGeneration = $this->getMetric($row, 'nb_hits_with_time_generation'); - - return Piwik::getQuotientSafe($sumGenerationTime, $hitsWithTimeGeneration, $precision = 3); - } - - public function format($value, Formatter $formatter) - { - return $value ? $formatter->getPrettyTimeFromSeconds($value, $displayAsSentence = true) : "-"; - } - - public function beforeCompute($report, DataTable $table) - { - $hasTimeGeneration = array_sum($this->getMetricValues($table, 'sum_time_generation')) > 0; - - if (!$hasTimeGeneration) { - // No generation time: remove it from the API output and add it to empty_columns metadata, so that - // the columns can also be removed from the view - $table->filter('ColumnDelete', array(array( - Metrics::INDEX_PAGE_SUM_TIME_GENERATION, - Metrics::INDEX_PAGE_NB_HITS_WITH_TIME_GENERATION, - Metrics::INDEX_PAGE_MIN_TIME_GENERATION, - Metrics::INDEX_PAGE_MAX_TIME_GENERATION, - 'sum_time_generation', - 'nb_hits_with_time_generation', - 'min_time_generation', - 'max_time_generation' - ))); - - if ($table instanceof DataTable) { - $emptyColumns = $table->getMetadata(DataTable::EMPTY_COLUMNS_METADATA_NAME); - if (!is_array($emptyColumns)) { - $emptyColumns = array(); - } - $emptyColumns[] = 'sum_time_generation'; - $emptyColumns[] = 'avg_time_generation'; - $emptyColumns[] = 'min_time_generation'; - $emptyColumns[] = 'max_time_generation'; - $table->setMetadata(DataTable::EMPTY_COLUMNS_METADATA_NAME, $emptyColumns); - } - } - - return $hasTimeGeneration; - } -} \ No newline at end of file diff --git a/plugins/Actions/Metrics/AverageTimeOnPage.php b/plugins/Actions/Metrics/AverageTimeOnPage.php deleted file mode 100644 index 395f1d0a8e..0000000000 --- a/plugins/Actions/Metrics/AverageTimeOnPage.php +++ /dev/null @@ -1,51 +0,0 @@ -getMetric($row, 'sum_time_spent'); - $visits = $this->getMetric($row, 'nb_visits'); - - return Piwik::getQuotientSafe($sumTimeSpent, $visits, $precision = 0); - } - - public function format($value, Formatter $formatter) - { - return $formatter->getPrettyTimeFromSeconds($value); - } - - public function getDependentMetrics() - { - return array('sum_time_spent', 'nb_visits'); - } -} \ No newline at end of file diff --git a/plugins/Actions/Metrics/BounceRate.php b/plugins/Actions/Metrics/BounceRate.php deleted file mode 100644 index f19b701ada..0000000000 --- a/plugins/Actions/Metrics/BounceRate.php +++ /dev/null @@ -1,51 +0,0 @@ -getMetric($row, 'entry_bounce_count'); - $entryVisits = $this->getMetric($row, 'entry_nb_visits'); - - return Piwik::getQuotientSafe($entryBounceCount, $entryVisits, $precision = 2); - } - - public function format($value, Formatter $formatter) - { - return $formatter->getPrettyPercentFromQuotient($value); - } - - public function getDependentMetrics() - { - return array('entry_bounce_count', 'entry_nb_visits'); - } -} \ No newline at end of file diff --git a/plugins/Actions/Metrics/ExitRate.php b/plugins/Actions/Metrics/ExitRate.php deleted file mode 100644 index 2b570b045e..0000000000 --- a/plugins/Actions/Metrics/ExitRate.php +++ /dev/null @@ -1,51 +0,0 @@ -getMetric($row, 'exit_nb_visits'); - $visits = $this->getMetric($row, 'nb_visits'); - - return Piwik::getQuotientSafe($exitVisits, $visits, $precision = 2); - } - - public function format($value, Formatter $formatter) - { - return $formatter->getPrettyPercentFromQuotient($value); - } - - public function getDependentMetrics() - { - return array('exit_nb_visits', 'nb_visits'); - } -} \ No newline at end of file diff --git a/plugins/Actions/Reports/Get.php b/plugins/Actions/Reports/Get.php index da907315cd..cc97e91c6d 100644 --- a/plugins/Actions/Reports/Get.php +++ b/plugins/Actions/Reports/Get.php @@ -9,7 +9,7 @@ namespace Piwik\Plugins\Actions\Reports; use Piwik\Piwik; -use Piwik\Plugins\Actions\Metrics\AveragePageGenerationTime; +use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime; class Get extends Base { diff --git a/plugins/Actions/Reports/GetEntryPageTitles.php b/plugins/Actions/Reports/GetEntryPageTitles.php index f00ac12fd2..2dbb887c45 100644 --- a/plugins/Actions/Reports/GetEntryPageTitles.php +++ b/plugins/Actions/Reports/GetEntryPageTitles.php @@ -11,10 +11,10 @@ namespace Piwik\Plugins\Actions\Reports; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\Actions\Columns\EntryPageTitle; -use Piwik\Plugins\Actions\Metrics\AveragePageGenerationTime; -use Piwik\Plugins\Actions\Metrics\AverageTimeOnPage; -use Piwik\Plugins\Actions\Metrics\BounceRate; -use Piwik\Plugins\Actions\Metrics\ExitRate; +use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime; +use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage; +use Piwik\Plugins\Actions\Columns\Metrics\BounceRate; +use Piwik\Plugins\Actions\Columns\Metrics\ExitRate; class GetEntryPageTitles extends Base { diff --git a/plugins/Actions/Reports/GetEntryPageUrls.php b/plugins/Actions/Reports/GetEntryPageUrls.php index d37232e21d..de6f042b20 100644 --- a/plugins/Actions/Reports/GetEntryPageUrls.php +++ b/plugins/Actions/Reports/GetEntryPageUrls.php @@ -13,10 +13,10 @@ use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\API\Request; use Piwik\Plugins\Actions\Columns\EntryPageUrl; -use Piwik\Plugins\Actions\Metrics\AveragePageGenerationTime; -use Piwik\Plugins\Actions\Metrics\AverageTimeOnPage; -use Piwik\Plugins\Actions\Metrics\BounceRate; -use Piwik\Plugins\Actions\Metrics\ExitRate; +use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime; +use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage; +use Piwik\Plugins\Actions\Columns\Metrics\BounceRate; +use Piwik\Plugins\Actions\Columns\Metrics\ExitRate; class GetEntryPageUrls extends Base { diff --git a/plugins/Actions/Reports/GetExitPageTitles.php b/plugins/Actions/Reports/GetExitPageTitles.php index 1247fc3d4c..2d58a2f911 100644 --- a/plugins/Actions/Reports/GetExitPageTitles.php +++ b/plugins/Actions/Reports/GetExitPageTitles.php @@ -11,10 +11,10 @@ namespace Piwik\Plugins\Actions\Reports; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\Actions\Columns\ExitPageTitle; -use Piwik\Plugins\Actions\Metrics\AveragePageGenerationTime; -use Piwik\Plugins\Actions\Metrics\AverageTimeOnPage; -use Piwik\Plugins\Actions\Metrics\BounceRate; -use Piwik\Plugins\Actions\Metrics\ExitRate; +use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime; +use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage; +use Piwik\Plugins\Actions\Columns\Metrics\BounceRate; +use Piwik\Plugins\Actions\Columns\Metrics\ExitRate; class GetExitPageTitles extends Base { diff --git a/plugins/Actions/Reports/GetExitPageUrls.php b/plugins/Actions/Reports/GetExitPageUrls.php index b6bccaa1f1..80ebcc8546 100644 --- a/plugins/Actions/Reports/GetExitPageUrls.php +++ b/plugins/Actions/Reports/GetExitPageUrls.php @@ -13,10 +13,10 @@ use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\API\Request; use Piwik\Plugins\Actions\Columns\ExitPageUrl; -use Piwik\Plugins\Actions\Metrics\AveragePageGenerationTime; -use Piwik\Plugins\Actions\Metrics\AverageTimeOnPage; -use Piwik\Plugins\Actions\Metrics\BounceRate; -use Piwik\Plugins\Actions\Metrics\ExitRate; +use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime; +use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage; +use Piwik\Plugins\Actions\Columns\Metrics\BounceRate; +use Piwik\Plugins\Actions\Columns\Metrics\ExitRate; class GetExitPageUrls extends Base { diff --git a/plugins/Actions/Reports/GetPageTitles.php b/plugins/Actions/Reports/GetPageTitles.php index 010c5cfeac..058d382ee9 100644 --- a/plugins/Actions/Reports/GetPageTitles.php +++ b/plugins/Actions/Reports/GetPageTitles.php @@ -13,10 +13,10 @@ use Piwik\Plugin\ViewDataTable; use Piwik\API\Request; use Piwik\Common; use Piwik\Plugins\Actions\Columns\PageTitle; -use Piwik\Plugins\Actions\Metrics\AveragePageGenerationTime; -use Piwik\Plugins\Actions\Metrics\AverageTimeOnPage; -use Piwik\Plugins\Actions\Metrics\BounceRate; -use Piwik\Plugins\Actions\Metrics\ExitRate; +use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime; +use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage; +use Piwik\Plugins\Actions\Columns\Metrics\BounceRate; +use Piwik\Plugins\Actions\Columns\Metrics\ExitRate; class GetPageTitles extends Base { diff --git a/plugins/Actions/Reports/GetPageTitlesFollowingSiteSearch.php b/plugins/Actions/Reports/GetPageTitlesFollowingSiteSearch.php index 63620c51bb..8e7b85ad5e 100644 --- a/plugins/Actions/Reports/GetPageTitlesFollowingSiteSearch.php +++ b/plugins/Actions/Reports/GetPageTitlesFollowingSiteSearch.php @@ -11,10 +11,10 @@ namespace Piwik\Plugins\Actions\Reports; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\Actions\Columns\DestinationPage; -use Piwik\Plugins\Actions\Metrics\AveragePageGenerationTime; -use Piwik\Plugins\Actions\Metrics\AverageTimeOnPage; -use Piwik\Plugins\Actions\Metrics\BounceRate; -use Piwik\Plugins\Actions\Metrics\ExitRate; +use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime; +use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage; +use Piwik\Plugins\Actions\Columns\Metrics\BounceRate; +use Piwik\Plugins\Actions\Columns\Metrics\ExitRate; class GetPageTitlesFollowingSiteSearch extends SiteSearchBase { diff --git a/plugins/Actions/Reports/GetPageUrls.php b/plugins/Actions/Reports/GetPageUrls.php index 664e7218a7..0af899ef0e 100644 --- a/plugins/Actions/Reports/GetPageUrls.php +++ b/plugins/Actions/Reports/GetPageUrls.php @@ -10,11 +10,11 @@ namespace Piwik\Plugins\Actions\Reports; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; -use Piwik\Plugins\Actions\Metrics\AveragePageGenerationTime; -use Piwik\Plugins\Actions\Metrics\BounceRate; +use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime; +use Piwik\Plugins\Actions\Columns\Metrics\BounceRate; use Piwik\Plugins\Actions\Columns\PageUrl; -use Piwik\Plugins\Actions\Metrics\ExitRate; -use Piwik\Plugins\Actions\Metrics\AverageTimeOnPage; +use Piwik\Plugins\Actions\Columns\Metrics\ExitRate; +use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage; class GetPageUrls extends Base { diff --git a/plugins/Actions/Reports/GetSiteSearchKeywords.php b/plugins/Actions/Reports/GetSiteSearchKeywords.php index f3fa86afaf..b78a7ca409 100644 --- a/plugins/Actions/Reports/GetSiteSearchKeywords.php +++ b/plugins/Actions/Reports/GetSiteSearchKeywords.php @@ -11,10 +11,10 @@ namespace Piwik\Plugins\Actions\Reports; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\Actions\Columns\Keyword; -use Piwik\Plugins\Actions\Metrics\AveragePageGenerationTime; -use Piwik\Plugins\Actions\Metrics\AverageTimeOnPage; -use Piwik\Plugins\Actions\Metrics\BounceRate; -use Piwik\Plugins\Actions\Metrics\ExitRate; +use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime; +use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage; +use Piwik\Plugins\Actions\Columns\Metrics\BounceRate; +use Piwik\Plugins\Actions\Columns\Metrics\ExitRate; class GetSiteSearchKeywords extends SiteSearchBase { diff --git a/plugins/Actions/Reports/GetSiteSearchNoResultKeywords.php b/plugins/Actions/Reports/GetSiteSearchNoResultKeywords.php index 2c2a8f1c31..5070fcd811 100644 --- a/plugins/Actions/Reports/GetSiteSearchNoResultKeywords.php +++ b/plugins/Actions/Reports/GetSiteSearchNoResultKeywords.php @@ -11,10 +11,10 @@ namespace Piwik\Plugins\Actions\Reports; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\Actions\Columns\KeywordwithNoSearchResult; -use Piwik\Plugins\Actions\Metrics\AveragePageGenerationTime; -use Piwik\Plugins\Actions\Metrics\AverageTimeOnPage; -use Piwik\Plugins\Actions\Metrics\BounceRate; -use Piwik\Plugins\Actions\Metrics\ExitRate; +use Piwik\Plugins\Actions\Columns\Metrics\AveragePageGenerationTime; +use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage; +use Piwik\Plugins\Actions\Columns\Metrics\BounceRate; +use Piwik\Plugins\Actions\Columns\Metrics\ExitRate; class GetSiteSearchNoResultKeywords extends SiteSearchBase { diff --git a/plugins/Contents/Columns/Metrics/InteractionRate.php b/plugins/Contents/Columns/Metrics/InteractionRate.php new file mode 100644 index 0000000000..64485fe0e6 --- /dev/null +++ b/plugins/Contents/Columns/Metrics/InteractionRate.php @@ -0,0 +1,52 @@ +getMetric($row, 'nb_interactions'); + $impressions = $this->getMetric($row, 'nb_impressions'); + + return Piwik::getQuotientSafe($interactions, $impressions, $precision = 4); + } + + public function format($value, Formatter $formatter) + { + return $formatter->getPrettyPercentFromQuotient($value); + } + + public function getDependentMetrics() + { + return array('nb_interactions', 'nb_impressions'); + } +} \ No newline at end of file diff --git a/plugins/Contents/Metrics/InteractionRate.php b/plugins/Contents/Metrics/InteractionRate.php deleted file mode 100644 index 6dfa09eefd..0000000000 --- a/plugins/Contents/Metrics/InteractionRate.php +++ /dev/null @@ -1,52 +0,0 @@ -getMetric($row, 'nb_interactions'); - $impressions = $this->getMetric($row, 'nb_impressions'); - - return Piwik::getQuotientSafe($interactions, $impressions, $precision = 4); - } - - public function format($value, Formatter $formatter) - { - return $formatter->getPrettyPercentFromQuotient($value); - } - - public function getDependentMetrics() - { - return array('nb_interactions', 'nb_impressions'); - } -} \ No newline at end of file diff --git a/plugins/Contents/Reports/GetContentNames.php b/plugins/Contents/Reports/GetContentNames.php index 82672dbcad..d217af5d71 100644 --- a/plugins/Contents/Reports/GetContentNames.php +++ b/plugins/Contents/Reports/GetContentNames.php @@ -11,7 +11,7 @@ namespace Piwik\Plugins\Contents\Reports; use Piwik\Piwik; use Piwik\Plugin\Report; use Piwik\Plugins\Contents\Columns\ContentName; -use Piwik\Plugins\Contents\Metrics\InteractionRate; +use Piwik\Plugins\Contents\Columns\Metrics\InteractionRate; use Piwik\View; /** diff --git a/plugins/Contents/Reports/GetContentPieces.php b/plugins/Contents/Reports/GetContentPieces.php index b977b21630..7ab3f1ed1c 100644 --- a/plugins/Contents/Reports/GetContentPieces.php +++ b/plugins/Contents/Reports/GetContentPieces.php @@ -11,7 +11,7 @@ namespace Piwik\Plugins\Contents\Reports; use Piwik\Piwik; use Piwik\Plugin\Report; use Piwik\Plugins\Contents\Columns\ContentPiece; -use Piwik\Plugins\Contents\Metrics\InteractionRate; +use Piwik\Plugins\Contents\Columns\Metrics\InteractionRate; use Piwik\View; /** diff --git a/plugins/CoreHome/Columns/Metrics/ActionsPerVisit.php b/plugins/CoreHome/Columns/Metrics/ActionsPerVisit.php new file mode 100644 index 0000000000..0ced958086 --- /dev/null +++ b/plugins/CoreHome/Columns/Metrics/ActionsPerVisit.php @@ -0,0 +1,46 @@ +getMetric($row, 'nb_actions'); + $visits = $this->getMetric($row, 'nb_visits'); + + return Piwik::getQuotientSafe($actions, $visits, $precision = 1); + } + + public function getTranslatedName() + { + return Piwik::translate('General_ColumnActionsPerVisit'); + } + + public function getDependentMetrics() + { + return array('nb_actions', 'nb_visits'); + } +} \ No newline at end of file diff --git a/plugins/CoreHome/Columns/Metrics/AverageTimeOnSite.php b/plugins/CoreHome/Columns/Metrics/AverageTimeOnSite.php new file mode 100644 index 0000000000..e590e19871 --- /dev/null +++ b/plugins/CoreHome/Columns/Metrics/AverageTimeOnSite.php @@ -0,0 +1,53 @@ +getMetric($row, 'sum_visit_length'); + $nbVisits = $this->getMetric($row, 'nb_visits'); + + return Piwik::getQuotientSafe($sumVisitLength, $nbVisits, $precision = 0); + } + + public function format($value, Formatter $formatter) + { + return $formatter->getPrettyTimeFromSeconds($value); + } + + public function getTranslatedName() + { + return Piwik::translate('General_ColumnAvgTimeOnSite'); + } + + public function getDependentMetrics() + { + return array('sum_visit_length', 'nb_visits'); + } +} \ No newline at end of file diff --git a/plugins/CoreHome/Columns/Metrics/BounceRate.php b/plugins/CoreHome/Columns/Metrics/BounceRate.php new file mode 100644 index 0000000000..65d46fb435 --- /dev/null +++ b/plugins/CoreHome/Columns/Metrics/BounceRate.php @@ -0,0 +1,52 @@ +getPrettyPercentFromQuotient($value); + } + + public function compute(Row $row) + { + $bounceCount = $this->getMetric($row, 'bounce_count'); + $visits = $this->getMetric($row, 'nb_visits'); + + return Piwik::getQuotientSafe($bounceCount, $visits, $precision = 2); + } +} \ No newline at end of file diff --git a/plugins/CoreHome/Columns/Metrics/ConversionRate.php b/plugins/CoreHome/Columns/Metrics/ConversionRate.php new file mode 100644 index 0000000000..0865825238 --- /dev/null +++ b/plugins/CoreHome/Columns/Metrics/ConversionRate.php @@ -0,0 +1,51 @@ +getPrettyPercentFromQuotient($value); + } + + public function compute(Row $row) + { + $nbVisitsConverted = $this->getMetric($row, 'nb_visits_converted'); + $nbVisits = $this->getMetric($row, 'nb_visits'); + + return Piwik::getQuotientSafe($nbVisitsConverted, $nbVisits, $precision = 4); + } +} \ No newline at end of file diff --git a/plugins/CoreHome/Columns/Metrics/EvolutionMetric.php b/plugins/CoreHome/Columns/Metrics/EvolutionMetric.php new file mode 100644 index 0000000000..537e42a520 --- /dev/null +++ b/plugins/CoreHome/Columns/Metrics/EvolutionMetric.php @@ -0,0 +1,123 @@ +wrapped = $wrapped; + $this->pastData = $pastData; + + if (empty($evolutionMetricName)) { + $wrappedName = $this->getWrappedName(); + $evolutionMetricName = $wrappedName . '_evolution'; + } + + $this->evolutionMetricName = $evolutionMetricName; + $this->quotientPrecision = $quotientPrecision; + } + + public function getName() + { + return $this->evolutionMetricName; + } + + public function getTranslatedName() + { + return $this->wrapped instanceof Metric ? $this->wrapped->getTranslatedName() : $this->getName(); + } + + public function compute(Row $row) + { + $columnName = $this->getWrappedName(); + $pastRow = $this->getPastRowFromCurrent($row); + + $currentValue = $this->getMetric($row, $columnName); + $pastValue = $pastRow ? $this->getMetric($pastRow, $columnName) : 0; + + $dividend = $currentValue - $pastValue; + $divisor = $pastValue; + + if ($dividend == 0) { + return 0; + } else if ($divisor == 0) { + return 1; + } else { + return Piwik::getQuotientSafe($dividend, $divisor, $this->quotientPrecision + 2); + } + } + + public function format($value, Formatter $formatter) + { + return $formatter->getPrettyPercentFromQuotient($value); + } + + public function getDependentMetrics() + { + return array($this->getWrappedName()); + } + + protected function getWrappedName() + { + return $this->wrapped instanceof Metric ? $this->wrapped->getName() : $this->wrapped; + } + + /** + * public for Insights use. + */ + public function getPastRowFromCurrent(Row $row) + { + return $this->pastData->getRowFromLabel($row->getColumn('label')); + } +} \ No newline at end of file diff --git a/plugins/CoreHome/Columns/Metrics/VisitsPercent.php b/plugins/CoreHome/Columns/Metrics/VisitsPercent.php new file mode 100644 index 0000000000..fe7f688508 --- /dev/null +++ b/plugins/CoreHome/Columns/Metrics/VisitsPercent.php @@ -0,0 +1,77 @@ +forceTotalVisits = $totalVisits; + } + + public function getName() + { + return 'nb_visits_percentage'; + } + + public function getTranslatedName() + { + return Piwik::translate('General_ColumnPercentageVisits'); + } + + public function compute(Row $row) + { + $visits = $this->getMetric($row, 'nb_visits'); + + return Piwik::getQuotientSafe($visits, $this->cachedTotalVisits, $precision = 3); + } + + public function format($value, Formatter $formatter) + { + return $formatter->getPrettyPercentFromQuotient($value); + } + + public function getDependentMetrics() + { + return array('nb_visits'); + } + + public function beforeCompute($report, DataTable $table) + { + if ($this->forceTotalVisits === null) { + $this->cachedTotalVisits = array_sum($this->getMetricValues($table, 'nb_visits')); + } else { + $this->cachedTotalVisits = $this->forceTotalVisits; + } + + return true; // always compute + } +} \ No newline at end of file diff --git a/plugins/CoreHome/Metrics/ActionsPerVisit.php b/plugins/CoreHome/Metrics/ActionsPerVisit.php deleted file mode 100644 index 658bf6f20c..0000000000 --- a/plugins/CoreHome/Metrics/ActionsPerVisit.php +++ /dev/null @@ -1,46 +0,0 @@ -getMetric($row, 'nb_actions'); - $visits = $this->getMetric($row, 'nb_visits'); - - return Piwik::getQuotientSafe($actions, $visits, $precision = 1); - } - - public function getTranslatedName() - { - return Piwik::translate('General_ColumnActionsPerVisit'); - } - - public function getDependentMetrics() - { - return array('nb_actions', 'nb_visits'); - } -} \ No newline at end of file diff --git a/plugins/CoreHome/Metrics/AverageTimeOnSite.php b/plugins/CoreHome/Metrics/AverageTimeOnSite.php deleted file mode 100644 index 4a908d1a5f..0000000000 --- a/plugins/CoreHome/Metrics/AverageTimeOnSite.php +++ /dev/null @@ -1,53 +0,0 @@ -getMetric($row, 'sum_visit_length'); - $nbVisits = $this->getMetric($row, 'nb_visits'); - - return Piwik::getQuotientSafe($sumVisitLength, $nbVisits, $precision = 0); - } - - public function format($value, Formatter $formatter) - { - return $formatter->getPrettyTimeFromSeconds($value); - } - - public function getTranslatedName() - { - return Piwik::translate('General_ColumnAvgTimeOnSite'); - } - - public function getDependentMetrics() - { - return array('sum_visit_length', 'nb_visits'); - } -} \ No newline at end of file diff --git a/plugins/CoreHome/Metrics/BounceRate.php b/plugins/CoreHome/Metrics/BounceRate.php deleted file mode 100644 index d39e405cda..0000000000 --- a/plugins/CoreHome/Metrics/BounceRate.php +++ /dev/null @@ -1,52 +0,0 @@ -getPrettyPercentFromQuotient($value); - } - - public function compute(Row $row) - { - $bounceCount = $this->getMetric($row, 'bounce_count'); - $visits = $this->getMetric($row, 'nb_visits'); - - return Piwik::getQuotientSafe($bounceCount, $visits, $precision = 2); - } -} \ No newline at end of file diff --git a/plugins/CoreHome/Metrics/ConversionRate.php b/plugins/CoreHome/Metrics/ConversionRate.php deleted file mode 100644 index 23bca997a0..0000000000 --- a/plugins/CoreHome/Metrics/ConversionRate.php +++ /dev/null @@ -1,51 +0,0 @@ -getPrettyPercentFromQuotient($value); - } - - public function compute(Row $row) - { - $nbVisitsConverted = $this->getMetric($row, 'nb_visits_converted'); - $nbVisits = $this->getMetric($row, 'nb_visits'); - - return Piwik::getQuotientSafe($nbVisitsConverted, $nbVisits, $precision = 4); - } -} \ No newline at end of file diff --git a/plugins/CoreHome/Metrics/EvolutionMetric.php b/plugins/CoreHome/Metrics/EvolutionMetric.php deleted file mode 100644 index 8794604509..0000000000 --- a/plugins/CoreHome/Metrics/EvolutionMetric.php +++ /dev/null @@ -1,124 +0,0 @@ -wrapped = $wrapped; - $this->pastData = $pastData; - - if (empty($evolutionMetricName)) { - $wrappedName = $this->getWrappedName(); - $evolutionMetricName = $wrappedName . '_evolution'; - } - - $this->evolutionMetricName = $evolutionMetricName; - $this->quotientPrecision = $quotientPrecision; - } - - public function getName() - { - return $this->evolutionMetricName; - } - - public function getTranslatedName() - { - return $this->wrapped instanceof Metric ? $this->wrapped->getTranslatedName() : $this->getName(); - } - - public function compute(Row $row) - { - $columnName = $this->getWrappedName(); - $pastRow = $this->getPastRowFromCurrent($row); - - $currentValue = $this->getMetric($row, $columnName); - $pastValue = $pastRow ? $this->getMetric($pastRow, $columnName) : 0; - - $dividend = $currentValue - $pastValue; - $divisor = $pastValue; - - if ($dividend == 0) { - return 0; - } else if ($divisor == 0) { - return 1; - } else { - return Piwik::getQuotientSafe($dividend, $divisor, $this->quotientPrecision + 2); - } - } - - public function format($value, Formatter $formatter) - { - return $formatter->getPrettyPercentFromQuotient($value); - } - - public function getDependentMetrics() - { - return array($this->getWrappedName()); - } - - protected function getWrappedName() - { - return $this->wrapped instanceof Metric ? $this->wrapped->getName() : $this->wrapped; - } - - /** - * public for Insights use. - */ - public function getPastRowFromCurrent(Row $row) - { - return $this->pastData->getRowFromLabel($row->getColumn('label')); - } -} \ No newline at end of file diff --git a/plugins/CoreHome/Metrics/VisitsPercent.php b/plugins/CoreHome/Metrics/VisitsPercent.php deleted file mode 100644 index 7d268091b1..0000000000 --- a/plugins/CoreHome/Metrics/VisitsPercent.php +++ /dev/null @@ -1,77 +0,0 @@ -forceTotalVisits = $totalVisits; - } - - public function getName() - { - return 'nb_visits_percentage'; - } - - public function getTranslatedName() - { - return Piwik::translate('General_ColumnPercentageVisits'); - } - - public function compute(Row $row) - { - $visits = $this->getMetric($row, 'nb_visits'); - - return Piwik::getQuotientSafe($visits, $this->cachedTotalVisits, $precision = 3); - } - - public function format($value, Formatter $formatter) - { - return $formatter->getPrettyPercentFromQuotient($value); - } - - public function getDependentMetrics() - { - return array('nb_visits'); - } - - public function beforeCompute($report, DataTable $table) - { - if ($this->forceTotalVisits === null) { - $this->cachedTotalVisits = array_sum($this->getMetricValues($table, 'nb_visits')); - } else { - $this->cachedTotalVisits = $this->forceTotalVisits; - } - - return true; // always compute - } -} \ No newline at end of file diff --git a/plugins/Events/Columns/Metrics/AverageEventValue.php b/plugins/Events/Columns/Metrics/AverageEventValue.php new file mode 100644 index 0000000000..7efb513729 --- /dev/null +++ b/plugins/Events/Columns/Metrics/AverageEventValue.php @@ -0,0 +1,45 @@ +getMetric($row, 'sum_event_value'); + $eventsWithValue = $this->getMetric($row, 'nb_events_with_value'); + + return Piwik::getQuotientSafe($sumEventValue, $eventsWithValue, $precision = 2); + } + + public function getDependentMetrics() + { + return array('sum_event_value', 'nb_events_with_value'); + } +} \ No newline at end of file diff --git a/plugins/Events/Metrics/AverageEventValue.php b/plugins/Events/Metrics/AverageEventValue.php deleted file mode 100644 index df2f932ba8..0000000000 --- a/plugins/Events/Metrics/AverageEventValue.php +++ /dev/null @@ -1,45 +0,0 @@ -getMetric($row, 'sum_event_value'); - $eventsWithValue = $this->getMetric($row, 'nb_events_with_value'); - - return Piwik::getQuotientSafe($sumEventValue, $eventsWithValue, $precision = 2); - } - - public function getDependentMetrics() - { - return array('sum_event_value', 'nb_events_with_value'); - } -} \ No newline at end of file diff --git a/plugins/Events/Reports/Base.php b/plugins/Events/Reports/Base.php index e49c7815fa..4430b31407 100644 --- a/plugins/Events/Reports/Base.php +++ b/plugins/Events/Reports/Base.php @@ -9,7 +9,7 @@ namespace Piwik\Plugins\Events\Reports; use Piwik\Plugins\Events\API; -use Piwik\Plugins\Events\Metrics\AverageEventValue; +use Piwik\Plugins\Events\Columns\Metrics\AverageEventValue; abstract class Base extends \Piwik\Plugin\Report { diff --git a/plugins/Goals/API.php b/plugins/Goals/API.php index fab2ae42f1..c2e979b194 100644 --- a/plugins/Goals/API.php +++ b/plugins/Goals/API.php @@ -17,7 +17,7 @@ use Piwik\Db; use Piwik\Metrics; use Piwik\Piwik; use Piwik\Plugin\Report; -use Piwik\Plugins\Goals\Metrics\AverageOrderRevenue; +use Piwik\Plugins\Goals\Columns\Metrics\AverageOrderRevenue; use Piwik\Site; use Piwik\Tracker\Cache; use Piwik\Tracker\GoalManager; diff --git a/plugins/Goals/Columns/Metrics/AverageOrderRevenue.php b/plugins/Goals/Columns/Metrics/AverageOrderRevenue.php new file mode 100644 index 0000000000..a25d64c7e9 --- /dev/null +++ b/plugins/Goals/Columns/Metrics/AverageOrderRevenue.php @@ -0,0 +1,60 @@ +getMetric($row, 'revenue'); + $conversions = $this->getMetric($row, 'nb_conversions'); + + return Piwik::getQuotientSafe($revenue, $conversions, $precision = 2); + } + + public function getTranslatedName() + { + return Piwik::translate('General_AverageOrderValue'); + } + + public function getDependentMetrics() + { + return array('revenue', 'nb_conversions'); + } + + public function format($value, Formatter $formatter) + { + return $formatter->getPrettyMoney($value, $this->idSite); + } + + public function beforeFormat($report, DataTable $table) + { + $this->idSite = DataTable::getSiteIdFromMetadata($table); + return !empty($this->idSite); // skip formatting if there is no site to get currency info from + } +} \ No newline at end of file diff --git a/plugins/Goals/Columns/Metrics/AveragePrice.php b/plugins/Goals/Columns/Metrics/AveragePrice.php new file mode 100644 index 0000000000..0ca06201e9 --- /dev/null +++ b/plugins/Goals/Columns/Metrics/AveragePrice.php @@ -0,0 +1,63 @@ +getMetric($row, 'price'); + $orders = $this->getMetric($row, 'orders'); + $abandonedCarts = $this->getMetric($row, 'abandoned_carts'); + + return Piwik::getQuotientSafe($price, $orders === false ? $abandonedCarts : $orders, GoalManager::REVENUE_PRECISION); + } + + public function getDependentMetrics() + { + return array('price', 'orders', 'abandoned_carts'); + } + + public function format($value, Formatter $formatter) + { + return $formatter->getPrettyMoney($value, $this->idSite); + } + + public function beforeFormat($report, DataTable $table) + { + $this->idSite = DataTable::getSiteIdFromMetadata($table); + return !empty($this->idSite); // skip formatting if there is no site to get currency info from + } +} \ No newline at end of file diff --git a/plugins/Goals/Columns/Metrics/AverageQuantity.php b/plugins/Goals/Columns/Metrics/AverageQuantity.php new file mode 100644 index 0000000000..dd5de214fb --- /dev/null +++ b/plugins/Goals/Columns/Metrics/AverageQuantity.php @@ -0,0 +1,47 @@ +getMetric($row, 'quantity'); + $orders = $this->getMetric($row, 'orders'); + $abandonedCarts = $this->getMetric($row, 'abandoned_carts'); + + return Piwik::getQuotientSafe($quantity, $orders === false ? $abandonedCarts : $orders, $precision = 1); + } + + public function getDependentMetrics() + { + return array('quantity', 'orders', 'abandoned_carts'); + } +} \ No newline at end of file diff --git a/plugins/Goals/Columns/Metrics/GoalSpecific/AverageOrderRevenue.php b/plugins/Goals/Columns/Metrics/GoalSpecific/AverageOrderRevenue.php new file mode 100644 index 0000000000..19c23a5eff --- /dev/null +++ b/plugins/Goals/Columns/Metrics/GoalSpecific/AverageOrderRevenue.php @@ -0,0 +1,67 @@ +getColumnPrefix() . '_avg_order_revenue'; + } + + public function getTranslatedName() + { + return Piwik::translate('General_AverageOrderValue'); + } + + public function getDocumentation() + { + return Piwik::translate('Goals_ColumnAverageOrderRevenueDocumentation', $this->getGoalNameForDocs()); + } + + public function getDependentMetrics() + { + return array('goals'); + } + + public function compute(Row $row) + { + $mappingFromNameToIdGoal = Metrics::getMappingFromNameToIdGoal(); + + $goalMetrics = $this->getGoalMetrics($row); + + $goalRevenue = $this->getMetric($goalMetrics, 'revenue', $mappingFromNameToIdGoal); + $conversions = $this->getMetric($goalMetrics, 'nb_conversions', $mappingFromNameToIdGoal); + + return Piwik::getQuotientSafe($goalRevenue, $conversions, GoalManager::REVENUE_PRECISION); + } + + public function format($value, Formatter $formatter) + { + return $formatter->getPrettyMoney($value, $this->idSite); + } + + public function beforeFormat($report, DataTable $table) + { + $this->idSite = DataTable::getSiteIdFromMetadata($table); + return !empty($this->idSite); // skip formatting if there is no site to get currency info from + } +} \ No newline at end of file diff --git a/plugins/Goals/Columns/Metrics/GoalSpecific/ConversionRate.php b/plugins/Goals/Columns/Metrics/GoalSpecific/ConversionRate.php new file mode 100644 index 0000000000..2f355c2762 --- /dev/null +++ b/plugins/Goals/Columns/Metrics/GoalSpecific/ConversionRate.php @@ -0,0 +1,63 @@ +getColumnPrefix() . '_conversion_rate'; + } + + public function getTranslatedName() + { + return Piwik::translate('Goals_ConversionRate', $this->getGoalName()); + } + + public function getDocumentation() + { + return Piwik::translate('Goals_ColumnConversionRateDocumentation', $this->getGoalNameForDocs()); + } + + public function getDependentMetrics() + { + return array('goals'); + } + + public function format($value, Formatter $formatter) + { + return $formatter->getPrettyPercentFromQuotient($value); + } + + public function compute(Row $row) + { + $mappingFromNameToIdGoal = Metrics::getMappingFromNameToIdGoal(); + + $goalMetrics = $this->getGoalMetrics($row); + + $nbVisits = $this->getMetric($row, 'nb_visits'); + $conversions = $this->getMetric($goalMetrics, 'nb_conversions', $mappingFromNameToIdGoal); + + return Piwik::getQuotientSafe($conversions, $nbVisits, GoalManager::REVENUE_PRECISION + 2); + } +} \ No newline at end of file diff --git a/plugins/Goals/Columns/Metrics/GoalSpecific/Conversions.php b/plugins/Goals/Columns/Metrics/GoalSpecific/Conversions.php new file mode 100644 index 0000000000..0a15a94e39 --- /dev/null +++ b/plugins/Goals/Columns/Metrics/GoalSpecific/Conversions.php @@ -0,0 +1,43 @@ +getColumnPrefix() . '_nb_conversions'; + } + + public function getTranslatedName() + { + return Piwik::translate('Goals_Conversions', $this->getGoalNameForDocs()); + } + + public function getDependentMetrics() + { + return array('goals'); + } + + public function compute(Row $row) + { + $mappingFromNameToIdGoal = Metrics::getMappingFromNameToIdGoal(); + + $goalMetrics = $this->getGoalMetrics($row); + return (int) $this->getMetric($goalMetrics, 'nb_conversions', $mappingFromNameToIdGoal); + } +} \ No newline at end of file diff --git a/plugins/Goals/Columns/Metrics/GoalSpecific/ItemsCount.php b/plugins/Goals/Columns/Metrics/GoalSpecific/ItemsCount.php new file mode 100644 index 0000000000..49b8184742 --- /dev/null +++ b/plugins/Goals/Columns/Metrics/GoalSpecific/ItemsCount.php @@ -0,0 +1,48 @@ +getColumnPrefix() . '_items'; + } + + public function getTranslatedName() + { + return Piwik::translate('General_PurchasedProducts'); + } + + public function getDocumentation() + { + return Piwik::translate('Goals_ColumnPurchasedProductsDocumentation', $this->getGoalNameForDocs()); + } + + public function getDependentMetrics() + { + return array('goals'); + } + + public function compute(Row $row) + { + $mappingFromNameToIdGoal = Metrics::getMappingFromNameToIdGoal(); + + $goalMetrics = $this->getGoalMetrics($row); + return (int) $this->getMetric($goalMetrics, 'items', $mappingFromNameToIdGoal); + } +} \ No newline at end of file diff --git a/plugins/Goals/Columns/Metrics/GoalSpecific/Revenue.php b/plugins/Goals/Columns/Metrics/GoalSpecific/Revenue.php new file mode 100644 index 0000000000..3d7e419a5d --- /dev/null +++ b/plugins/Goals/Columns/Metrics/GoalSpecific/Revenue.php @@ -0,0 +1,60 @@ +getColumnPrefix() . '_revenue'; + } + + public function getTranslatedName() + { + return Piwik::translate('%s ' . Piwik::translate('General_ColumnRevenue'), $this->getGoalName()); + } + + public function getDocumentation() + { + return Piwik::translate('Goals_ColumnRevenueDocumentation', $this->getGoalNameForDocs()); + } + + public function getDependentMetrics() + { + return array('goals'); + } + + public function compute(Row $row) + { + $mappingFromNameToIdGoal = Metrics::getMappingFromNameToIdGoal(); + + $goalMetrics = $this->getGoalMetrics($row); + return (float) $this->getMetric($goalMetrics, 'revenue', $mappingFromNameToIdGoal); + } + + public function format($value, Formatter $formatter) + { + return $formatter->getPrettyMoney($value, $this->idSite); + } + + public function beforeFormat($report, DataTable $table) + { + $this->idSite = DataTable::getSiteIdFromMetadata($table); + return !empty($this->idSite); // skip formatting if there is no site to get currency info from + } +} \ No newline at end of file diff --git a/plugins/Goals/Columns/Metrics/GoalSpecific/RevenuePerVisit.php b/plugins/Goals/Columns/Metrics/GoalSpecific/RevenuePerVisit.php new file mode 100644 index 0000000000..5daceeb9c9 --- /dev/null +++ b/plugins/Goals/Columns/Metrics/GoalSpecific/RevenuePerVisit.php @@ -0,0 +1,75 @@ +getColumnPrefix() . '_revenue_per_visit'; + } + + public function getTranslatedName() + { + return $this->getGoalName() . ' ' . Piwik::translate('General_ColumnValuePerVisit'); + } + + public function getDocumentation() + { + if ($this->idGoal == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER) { + return Piwik::translate('Goals_ColumnAverageOrderRevenueDocumentation', $this->getGoalNameForDocs()); + } else { + return Piwik::translate('Goals_ColumnRevenuePerVisitDocumentation', Piwik::translate('Goals_EcommerceAndGoalsMenu')); + } + } + + public function getDependentMetrics() + { + return array('goals', 'nb_visits'); + } + + public function compute(Row $row) + { + $mappingFromNameToIdGoal = Metrics::getMappingFromNameToIdGoal(); + + $goalMetrics = $this->getGoalMetrics($row); + + $nbVisits = $this->getMetric($row, 'nb_visits'); + $conversions = $this->getMetric($goalMetrics, 'nb_conversions', $mappingFromNameToIdGoal); + + $goalRevenue = (float) $this->getMetric($goalMetrics, 'revenue', $mappingFromNameToIdGoal); + + return Piwik::getQuotientSafe($goalRevenue, $nbVisits == 0 ? $conversions : $nbVisits, GoalManager::REVENUE_PRECISION); + } + + public function format($value, Formatter $formatter) + { + return $formatter->getPrettyMoney($value, $this->idSite); + } + + public function beforeFormat($report, DataTable $table) + { + $this->idSite = DataTable::getSiteIdFromMetadata($table); + return !empty($this->idSite); // skip formatting if there is no site to get currency info from + } +} \ No newline at end of file diff --git a/plugins/Goals/Columns/Metrics/GoalSpecificProcessedMetric.php b/plugins/Goals/Columns/Metrics/GoalSpecificProcessedMetric.php new file mode 100644 index 0000000000..353018c234 --- /dev/null +++ b/plugins/Goals/Columns/Metrics/GoalSpecificProcessedMetric.php @@ -0,0 +1,92 @@ +idSite = $idSite; + $this->idGoal = $idGoal; + } + + protected function getColumnPrefix() // TODO: should cache this information somehow + { + return 'goal_' . $this->idGoal; + } + + protected function getGoalMetrics(Row $row) + { + $allGoalMetrics = $this->getMetric($row, 'goals'); + if (isset($allGoalMetrics[$this->idGoal])) { + return $allGoalMetrics[$this->idGoal]; + } else { + $alternateKey = 'idgoal=' . $this->idGoal; + if (isset($allGoalMetrics[$alternateKey])) { + return $allGoalMetrics[$alternateKey]; + } else { + return array(); + } + } + } + + protected function getGoalName() + { + if ($this->idGoal == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER) { + return Piwik::translate('Goals_EcommerceOrder'); + } + + if (isset($this->idSite)) { + $allGoals = GoalsAPI::getInstance()->getGoals($this->idSite); + $goalName = @$allGoals[$this->idGoal]['name']; + return Common::sanitizeInputValue($goalName); + } else { + return ""; + } + } + + protected function getGoalNameForDocs() + { + $goalName = $this->getGoalName(); + if ($goalName == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER) { + $goalName = '"' . $goalName . '"'; + } + return $goalName; + } +} \ No newline at end of file diff --git a/plugins/Goals/Columns/Metrics/ProductConversionRate.php b/plugins/Goals/Columns/Metrics/ProductConversionRate.php new file mode 100644 index 0000000000..a0cf0b0436 --- /dev/null +++ b/plugins/Goals/Columns/Metrics/ProductConversionRate.php @@ -0,0 +1,54 @@ +getPrettyPercentFromQuotient($value); + } + + public function compute(Row $row) + { + $orders = $this->getMetric($row, 'orders'); + $abandonedCarts = $this->getMetric($row, 'abandoned_carts'); + $visits = $this->getMetric($row, 'nb_visits'); + + return Piwik::getQuotientSafe($orders === false ? $abandonedCarts : $orders, $visits, GoalManager::REVENUE_PRECISION + 2); + } + + public function getDependentMetrics() + { + return array('orders', 'abandoned_carts', 'nb_visits'); + } +} \ No newline at end of file diff --git a/plugins/Goals/Columns/Metrics/RevenuePerVisit.php b/plugins/Goals/Columns/Metrics/RevenuePerVisit.php new file mode 100644 index 0000000000..b1912fe4e2 --- /dev/null +++ b/plugins/Goals/Columns/Metrics/RevenuePerVisit.php @@ -0,0 +1,83 @@ +getMetric($row, 'goals') ?: array(); + + $revenue = 0; + foreach ($goals as $goalId => $goalMetrics) { + if ($goalId == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_CART) { + continue; + } + if ($goalId >= GoalManager::IDGOAL_ORDER + || $goalId == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER + ) { + $revenue += (int) $this->getMetric($goalMetrics, 'revenue', $mappingFromNameToIdGoal); + } + } + + if ($revenue == 0) { + $revenue = (int) $this->getMetric($row, 'revenue'); + } + + $nbVisits = (int) $this->getMetric($row, 'nb_visits'); + $conversions = (int) $this->getMetric($row, 'nb_conversions'); + + // If no visit for this metric, but some conversions, we still want to display some kind of "revenue per visit" + // even though it will actually be in this edge case "Revenue per conversion" + return Piwik::getQuotientSafe($revenue, $nbVisits == 0 ? $conversions : $nbVisits, GoalManager::REVENUE_PRECISION); + } + + public function format($value, Formatter $formatter) + { + return $formatter->getPrettyMoney($value, $this->idSite); + } + + public function beforeFormat($report, DataTable $table) + { + $this->idSite = DataTable::getSiteIdFromMetadata($table); + return !empty($this->idSite); // skip formatting if there is no site to get currency info from + } +} \ No newline at end of file diff --git a/plugins/Goals/Metrics/AverageOrderRevenue.php b/plugins/Goals/Metrics/AverageOrderRevenue.php deleted file mode 100644 index fed8e7779b..0000000000 --- a/plugins/Goals/Metrics/AverageOrderRevenue.php +++ /dev/null @@ -1,60 +0,0 @@ -getMetric($row, 'revenue'); - $conversions = $this->getMetric($row, 'nb_conversions'); - - return Piwik::getQuotientSafe($revenue, $conversions, $precision = 2); - } - - public function getTranslatedName() - { - return Piwik::translate('General_AverageOrderValue'); - } - - public function getDependentMetrics() - { - return array('revenue', 'nb_conversions'); - } - - public function format($value, Formatter $formatter) - { - return $formatter->getPrettyMoney($value, $this->idSite); - } - - public function beforeFormat($report, DataTable $table) - { - $this->idSite = DataTable::getSiteIdFromMetadata($table); - return !empty($this->idSite); // skip formatting if there is no site to get currency info from - } -} \ No newline at end of file diff --git a/plugins/Goals/Metrics/AveragePrice.php b/plugins/Goals/Metrics/AveragePrice.php deleted file mode 100644 index 1fb83c18bd..0000000000 --- a/plugins/Goals/Metrics/AveragePrice.php +++ /dev/null @@ -1,63 +0,0 @@ -getMetric($row, 'price'); - $orders = $this->getMetric($row, 'orders'); - $abandonedCarts = $this->getMetric($row, 'abandoned_carts'); - - return Piwik::getQuotientSafe($price, $orders === false ? $abandonedCarts : $orders, GoalManager::REVENUE_PRECISION); - } - - public function getDependentMetrics() - { - return array('price', 'orders', 'abandoned_carts'); - } - - public function format($value, Formatter $formatter) - { - return $formatter->getPrettyMoney($value, $this->idSite); - } - - public function beforeFormat($report, DataTable $table) - { - $this->idSite = DataTable::getSiteIdFromMetadata($table); - return !empty($this->idSite); // skip formatting if there is no site to get currency info from - } -} \ No newline at end of file diff --git a/plugins/Goals/Metrics/AverageQuantity.php b/plugins/Goals/Metrics/AverageQuantity.php deleted file mode 100644 index 75fbc1c302..0000000000 --- a/plugins/Goals/Metrics/AverageQuantity.php +++ /dev/null @@ -1,47 +0,0 @@ -getMetric($row, 'quantity'); - $orders = $this->getMetric($row, 'orders'); - $abandonedCarts = $this->getMetric($row, 'abandoned_carts'); - - return Piwik::getQuotientSafe($quantity, $orders === false ? $abandonedCarts : $orders, $precision = 1); - } - - public function getDependentMetrics() - { - return array('quantity', 'orders', 'abandoned_carts'); - } -} \ No newline at end of file diff --git a/plugins/Goals/Metrics/GoalSpecific/AverageOrderRevenue.php b/plugins/Goals/Metrics/GoalSpecific/AverageOrderRevenue.php deleted file mode 100644 index b946535580..0000000000 --- a/plugins/Goals/Metrics/GoalSpecific/AverageOrderRevenue.php +++ /dev/null @@ -1,67 +0,0 @@ -getColumnPrefix() . '_avg_order_revenue'; - } - - public function getTranslatedName() - { - return Piwik::translate('General_AverageOrderValue'); - } - - public function getDocumentation() - { - return Piwik::translate('Goals_ColumnAverageOrderRevenueDocumentation', $this->getGoalNameForDocs()); - } - - public function getDependentMetrics() - { - return array('goals'); - } - - public function compute(Row $row) - { - $mappingFromNameToIdGoal = Metrics::getMappingFromNameToIdGoal(); - - $goalMetrics = $this->getGoalMetrics($row); - - $goalRevenue = $this->getMetric($goalMetrics, 'revenue', $mappingFromNameToIdGoal); - $conversions = $this->getMetric($goalMetrics, 'nb_conversions', $mappingFromNameToIdGoal); - - return Piwik::getQuotientSafe($goalRevenue, $conversions, GoalManager::REVENUE_PRECISION); - } - - public function format($value, Formatter $formatter) - { - return $formatter->getPrettyMoney($value, $this->idSite); - } - - public function beforeFormat($report, DataTable $table) - { - $this->idSite = DataTable::getSiteIdFromMetadata($table); - return !empty($this->idSite); // skip formatting if there is no site to get currency info from - } -} \ No newline at end of file diff --git a/plugins/Goals/Metrics/GoalSpecific/ConversionRate.php b/plugins/Goals/Metrics/GoalSpecific/ConversionRate.php deleted file mode 100644 index 1a1bf80305..0000000000 --- a/plugins/Goals/Metrics/GoalSpecific/ConversionRate.php +++ /dev/null @@ -1,63 +0,0 @@ -getColumnPrefix() . '_conversion_rate'; - } - - public function getTranslatedName() - { - return Piwik::translate('Goals_ConversionRate', $this->getGoalName()); - } - - public function getDocumentation() - { - return Piwik::translate('Goals_ColumnConversionRateDocumentation', $this->getGoalNameForDocs()); - } - - public function getDependentMetrics() - { - return array('goals'); - } - - public function format($value, Formatter $formatter) - { - return $formatter->getPrettyPercentFromQuotient($value); - } - - public function compute(Row $row) - { - $mappingFromNameToIdGoal = Metrics::getMappingFromNameToIdGoal(); - - $goalMetrics = $this->getGoalMetrics($row); - - $nbVisits = $this->getMetric($row, 'nb_visits'); - $conversions = $this->getMetric($goalMetrics, 'nb_conversions', $mappingFromNameToIdGoal); - - return Piwik::getQuotientSafe($conversions, $nbVisits, GoalManager::REVENUE_PRECISION + 2); - } -} \ No newline at end of file diff --git a/plugins/Goals/Metrics/GoalSpecific/Conversions.php b/plugins/Goals/Metrics/GoalSpecific/Conversions.php deleted file mode 100644 index 01bf22cfb4..0000000000 --- a/plugins/Goals/Metrics/GoalSpecific/Conversions.php +++ /dev/null @@ -1,43 +0,0 @@ -getColumnPrefix() . '_nb_conversions'; - } - - public function getTranslatedName() - { - return Piwik::translate('Goals_Conversions', $this->getGoalNameForDocs()); - } - - public function getDependentMetrics() - { - return array('goals'); - } - - public function compute(Row $row) - { - $mappingFromNameToIdGoal = Metrics::getMappingFromNameToIdGoal(); - - $goalMetrics = $this->getGoalMetrics($row); - return (int) $this->getMetric($goalMetrics, 'nb_conversions', $mappingFromNameToIdGoal); - } -} \ No newline at end of file diff --git a/plugins/Goals/Metrics/GoalSpecific/ItemsCount.php b/plugins/Goals/Metrics/GoalSpecific/ItemsCount.php deleted file mode 100644 index 8fcf50097f..0000000000 --- a/plugins/Goals/Metrics/GoalSpecific/ItemsCount.php +++ /dev/null @@ -1,48 +0,0 @@ -getColumnPrefix() . '_items'; - } - - public function getTranslatedName() - { - return Piwik::translate('General_PurchasedProducts'); - } - - public function getDocumentation() - { - return Piwik::translate('Goals_ColumnPurchasedProductsDocumentation', $this->getGoalNameForDocs()); - } - - public function getDependentMetrics() - { - return array('goals'); - } - - public function compute(Row $row) - { - $mappingFromNameToIdGoal = Metrics::getMappingFromNameToIdGoal(); - - $goalMetrics = $this->getGoalMetrics($row); - return (int) $this->getMetric($goalMetrics, 'items', $mappingFromNameToIdGoal); - } -} \ No newline at end of file diff --git a/plugins/Goals/Metrics/GoalSpecific/Revenue.php b/plugins/Goals/Metrics/GoalSpecific/Revenue.php deleted file mode 100644 index 814485309c..0000000000 --- a/plugins/Goals/Metrics/GoalSpecific/Revenue.php +++ /dev/null @@ -1,60 +0,0 @@ -getColumnPrefix() . '_revenue'; - } - - public function getTranslatedName() - { - return Piwik::translate('%s ' . Piwik::translate('General_ColumnRevenue'), $this->getGoalName()); - } - - public function getDocumentation() - { - return Piwik::translate('Goals_ColumnRevenueDocumentation', $this->getGoalNameForDocs()); - } - - public function getDependentMetrics() - { - return array('goals'); - } - - public function compute(Row $row) - { - $mappingFromNameToIdGoal = Metrics::getMappingFromNameToIdGoal(); - - $goalMetrics = $this->getGoalMetrics($row); - return (float) $this->getMetric($goalMetrics, 'revenue', $mappingFromNameToIdGoal); - } - - public function format($value, Formatter $formatter) - { - return $formatter->getPrettyMoney($value, $this->idSite); - } - - public function beforeFormat($report, DataTable $table) - { - $this->idSite = DataTable::getSiteIdFromMetadata($table); - return !empty($this->idSite); // skip formatting if there is no site to get currency info from - } -} \ No newline at end of file diff --git a/plugins/Goals/Metrics/GoalSpecific/RevenuePerVisit.php b/plugins/Goals/Metrics/GoalSpecific/RevenuePerVisit.php deleted file mode 100644 index 3abe443d71..0000000000 --- a/plugins/Goals/Metrics/GoalSpecific/RevenuePerVisit.php +++ /dev/null @@ -1,75 +0,0 @@ -getColumnPrefix() . '_revenue_per_visit'; - } - - public function getTranslatedName() - { - return $this->getGoalName() . ' ' . Piwik::translate('General_ColumnValuePerVisit'); - } - - public function getDocumentation() - { - if ($this->idGoal == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER) { - return Piwik::translate('Goals_ColumnAverageOrderRevenueDocumentation', $this->getGoalNameForDocs()); - } else { - return Piwik::translate('Goals_ColumnRevenuePerVisitDocumentation', Piwik::translate('Goals_EcommerceAndGoalsMenu')); - } - } - - public function getDependentMetrics() - { - return array('goals', 'nb_visits'); - } - - public function compute(Row $row) - { - $mappingFromNameToIdGoal = Metrics::getMappingFromNameToIdGoal(); - - $goalMetrics = $this->getGoalMetrics($row); - - $nbVisits = $this->getMetric($row, 'nb_visits'); - $conversions = $this->getMetric($goalMetrics, 'nb_conversions', $mappingFromNameToIdGoal); - - $goalRevenue = (float) $this->getMetric($goalMetrics, 'revenue', $mappingFromNameToIdGoal); - - return Piwik::getQuotientSafe($goalRevenue, $nbVisits == 0 ? $conversions : $nbVisits, GoalManager::REVENUE_PRECISION); - } - - public function format($value, Formatter $formatter) - { - return $formatter->getPrettyMoney($value, $this->idSite); - } - - public function beforeFormat($report, DataTable $table) - { - $this->idSite = DataTable::getSiteIdFromMetadata($table); - return !empty($this->idSite); // skip formatting if there is no site to get currency info from - } -} \ No newline at end of file diff --git a/plugins/Goals/Metrics/GoalSpecificProcessedMetric.php b/plugins/Goals/Metrics/GoalSpecificProcessedMetric.php deleted file mode 100644 index b8d7a9c2a4..0000000000 --- a/plugins/Goals/Metrics/GoalSpecificProcessedMetric.php +++ /dev/null @@ -1,93 +0,0 @@ -idSite = $idSite; - $this->idGoal = $idGoal; - } - - protected function getColumnPrefix() // TODO: should cache this information somehow - { - return 'goal_' . $this->idGoal; - } - - protected function getGoalMetrics(Row $row) - { - $allGoalMetrics = $this->getMetric($row, 'goals'); - if (isset($allGoalMetrics[$this->idGoal])) { - return $allGoalMetrics[$this->idGoal]; - } else { - $alternateKey = 'idgoal=' . $this->idGoal; - if (isset($allGoalMetrics[$alternateKey])) { - return $allGoalMetrics[$alternateKey]; - } else { - return array(); - } - } - } - - protected function getGoalName() - { - if ($this->idGoal == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER) { - return Piwik::translate('Goals_EcommerceOrder'); - } - - if (isset($this->idSite)) { - $allGoals = GoalsAPI::getInstance()->getGoals($this->idSite); - $goalName = @$allGoals[$this->idGoal]['name']; - return Common::sanitizeInputValue($goalName); - } else { - return ""; - } - } - - protected function getGoalNameForDocs() - { - $goalName = $this->getGoalName(); - if ($goalName == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER) { - $goalName = '"' . $goalName . '"'; - } - return $goalName; - } -} \ No newline at end of file diff --git a/plugins/Goals/Metrics/ProductConversionRate.php b/plugins/Goals/Metrics/ProductConversionRate.php deleted file mode 100644 index 09d9a4ba29..0000000000 --- a/plugins/Goals/Metrics/ProductConversionRate.php +++ /dev/null @@ -1,54 +0,0 @@ -getPrettyPercentFromQuotient($value); - } - - public function compute(Row $row) - { - $orders = $this->getMetric($row, 'orders'); - $abandonedCarts = $this->getMetric($row, 'abandoned_carts'); - $visits = $this->getMetric($row, 'nb_visits'); - - return Piwik::getQuotientSafe($orders === false ? $abandonedCarts : $orders, $visits, GoalManager::REVENUE_PRECISION + 2); - } - - public function getDependentMetrics() - { - return array('orders', 'abandoned_carts', 'nb_visits'); - } -} \ No newline at end of file diff --git a/plugins/Goals/Metrics/RevenuePerVisit.php b/plugins/Goals/Metrics/RevenuePerVisit.php deleted file mode 100644 index 825b6e1033..0000000000 --- a/plugins/Goals/Metrics/RevenuePerVisit.php +++ /dev/null @@ -1,83 +0,0 @@ -getMetric($row, 'goals') ?: array(); - - $revenue = 0; - foreach ($goals as $goalId => $goalMetrics) { - if ($goalId == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_CART) { - continue; - } - if ($goalId >= GoalManager::IDGOAL_ORDER - || $goalId == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER - ) { - $revenue += (int) $this->getMetric($goalMetrics, 'revenue', $mappingFromNameToIdGoal); - } - } - - if ($revenue == 0) { - $revenue = (int) $this->getMetric($row, 'revenue'); - } - - $nbVisits = (int) $this->getMetric($row, 'nb_visits'); - $conversions = (int) $this->getMetric($row, 'nb_conversions'); - - // If no visit for this metric, but some conversions, we still want to display some kind of "revenue per visit" - // even though it will actually be in this edge case "Revenue per conversion" - return Piwik::getQuotientSafe($revenue, $nbVisits == 0 ? $conversions : $nbVisits, GoalManager::REVENUE_PRECISION); - } - - public function format($value, Formatter $formatter) - { - return $formatter->getPrettyMoney($value, $this->idSite); - } - - public function beforeFormat($report, DataTable $table) - { - $this->idSite = DataTable::getSiteIdFromMetadata($table); - return !empty($this->idSite); // skip formatting if there is no site to get currency info from - } -} \ No newline at end of file diff --git a/plugins/Goals/Reports/BaseEcommerceItem.php b/plugins/Goals/Reports/BaseEcommerceItem.php index ae6d0e87a8..32b2fff770 100644 --- a/plugins/Goals/Reports/BaseEcommerceItem.php +++ b/plugins/Goals/Reports/BaseEcommerceItem.php @@ -14,9 +14,9 @@ use Piwik\Piwik; use Piwik\Plugin\Report; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\Goals\Goals; -use Piwik\Plugins\Goals\Metrics\AveragePrice; -use Piwik\Plugins\Goals\Metrics\AverageQuantity; -use Piwik\Plugins\Goals\Metrics\ProductConversionRate; +use Piwik\Plugins\Goals\Columns\Metrics\AveragePrice; +use Piwik\Plugins\Goals\Columns\Metrics\AverageQuantity; +use Piwik\Plugins\Goals\Columns\Metrics\ProductConversionRate; abstract class BaseEcommerceItem extends BaseEcommerce { diff --git a/plugins/MultiSites/Columns/Metrics/RevenueEvolution.php b/plugins/MultiSites/Columns/Metrics/RevenueEvolution.php new file mode 100644 index 0000000000..df6b476c8c --- /dev/null +++ b/plugins/MultiSites/Columns/Metrics/RevenueEvolution.php @@ -0,0 +1,37 @@ +getWrappedName(); + $currentValue = $this->getMetric($row, $columnName); + + // if the site this is for doesn't support ecommerce & this is for the revenue_evolution column, + // we don't add the new column + if ($currentValue === false + && !Site::isEcommerceEnabledFor($row->getColumn('label')) + ) { + return false; + } + + return parent::compute($row); + } +} \ No newline at end of file diff --git a/plugins/MultiSites/Metrics/RevenueEvolution.php b/plugins/MultiSites/Metrics/RevenueEvolution.php deleted file mode 100644 index f2a5e62a19..0000000000 --- a/plugins/MultiSites/Metrics/RevenueEvolution.php +++ /dev/null @@ -1,37 +0,0 @@ -getWrappedName(); - $currentValue = $this->getMetric($row, $columnName); - - // if the site this is for doesn't support ecommerce & this is for the revenue_evolution column, - // we don't add the new column - if ($currentValue === false - && !Site::isEcommerceEnabledFor($row->getColumn('label')) - ) { - return false; - } - - return parent::compute($row); - } -} \ No newline at end of file diff --git a/plugins/UserSettings/API.php b/plugins/UserSettings/API.php index 57eafdcd2f..a554585dc3 100644 --- a/plugins/UserSettings/API.php +++ b/plugins/UserSettings/API.php @@ -13,7 +13,7 @@ use Piwik\DataTable; use Piwik\Metrics; use Piwik\Piwik; use Piwik\Plugins\DevicesDetection\Archiver AS DDArchiver; -use Piwik\Plugins\CoreHome\Metrics\VisitsPercent; +use Piwik\Plugins\CoreHome\Columns\Metrics\VisitsPercent; /** * @see plugins/UserSettings/functions.php diff --git a/plugins/VisitFrequency/Columns/Metrics/ReturningMetric.php b/plugins/VisitFrequency/Columns/Metrics/ReturningMetric.php new file mode 100644 index 0000000000..3477667275 --- /dev/null +++ b/plugins/VisitFrequency/Columns/Metrics/ReturningMetric.php @@ -0,0 +1,64 @@ + 'VisitFrequency_ColumnAverageVisitDurationForReturningVisitors', + 'nb_actions_per_visit_returning' => 'VisitFrequency_ColumnAvgActionsPerReturningVisit', + 'bounce_rate_returning' => 'VisitFrequency_ColumnBounceRateForReturningVisits', + ); + + /** + * @var ProcessedMetric + */ + private $wrapped; + + public function __construct(ProcessedMetric $wrapped) + { + $this->wrapped = $wrapped; + } + + public function getName() + { + return $this->wrapped->getName() . '_returning'; + } + + public function getTranslatedName() + { + return Piwik::translate(self::$translations[$this->getName()]); + } + + public function format($value, Formatter $formatter) + { + return $this->wrapped->format($value, $formatter); + } + + public function compute(Row $row) + { + return 0; // (metric is not computed, it is copied from segmented report) + } + + public function getDependentMetrics() + { + return array(); + } +} \ No newline at end of file diff --git a/plugins/VisitFrequency/Metrics/ReturningMetric.php b/plugins/VisitFrequency/Metrics/ReturningMetric.php deleted file mode 100644 index 6768523dad..0000000000 --- a/plugins/VisitFrequency/Metrics/ReturningMetric.php +++ /dev/null @@ -1,64 +0,0 @@ - 'VisitFrequency_ColumnAverageVisitDurationForReturningVisitors', - 'nb_actions_per_visit_returning' => 'VisitFrequency_ColumnAvgActionsPerReturningVisit', - 'bounce_rate_returning' => 'VisitFrequency_ColumnBounceRateForReturningVisits', - ); - - /** - * @var ProcessedMetric - */ - private $wrapped; - - public function __construct(ProcessedMetric $wrapped) - { - $this->wrapped = $wrapped; - } - - public function getName() - { - return $this->wrapped->getName() . '_returning'; - } - - public function getTranslatedName() - { - return Piwik::translate(self::$translations[$this->getName()]); - } - - public function format($value, Formatter $formatter) - { - return $this->wrapped->format($value, $formatter); - } - - public function compute(Row $row) - { - return 0; // (metric is not computed, it is copied from segmented report) - } - - public function getDependentMetrics() - { - return array(); - } -} \ No newline at end of file diff --git a/plugins/VisitFrequency/Reports/Get.php b/plugins/VisitFrequency/Reports/Get.php index 332b9b6e09..d6f06e9fcf 100644 --- a/plugins/VisitFrequency/Reports/Get.php +++ b/plugins/VisitFrequency/Reports/Get.php @@ -9,10 +9,10 @@ namespace Piwik\Plugins\VisitFrequency\Reports; use Piwik\Piwik; -use Piwik\Plugins\CoreHome\Metrics\ActionsPerVisit; -use Piwik\Plugins\CoreHome\Metrics\AverageTimeOnSite; -use Piwik\Plugins\CoreHome\Metrics\BounceRate; -use Piwik\Plugins\VisitFrequency\Metrics\ReturningMetric; +use Piwik\Plugins\CoreHome\Columns\Metrics\ActionsPerVisit; +use Piwik\Plugins\CoreHome\Columns\Metrics\AverageTimeOnSite; +use Piwik\Plugins\CoreHome\Columns\Metrics\BounceRate; +use Piwik\Plugins\VisitFrequency\Columns\Metrics\ReturningMetric; class Get extends \Piwik\Plugin\Report { diff --git a/plugins/VisitorInterest/Reports/GetNumberOfVisitsByVisitCount.php b/plugins/VisitorInterest/Reports/GetNumberOfVisitsByVisitCount.php index 981c8b3e68..01ab2ac26d 100644 --- a/plugins/VisitorInterest/Reports/GetNumberOfVisitsByVisitCount.php +++ b/plugins/VisitorInterest/Reports/GetNumberOfVisitsByVisitCount.php @@ -12,7 +12,7 @@ use Piwik\Metrics; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\VisitorInterest\Columns\VisitsbyVisitNumber; -use Piwik\Plugins\CoreHome\Metrics\VisitsPercent; +use Piwik\Plugins\CoreHome\Columns\Metrics\VisitsPercent; class GetNumberOfVisitsByVisitCount extends Base { diff --git a/plugins/VisitsSummary/Reports/Get.php b/plugins/VisitsSummary/Reports/Get.php index e2ba265704..f2a087a517 100644 --- a/plugins/VisitsSummary/Reports/Get.php +++ b/plugins/VisitsSummary/Reports/Get.php @@ -9,9 +9,9 @@ namespace Piwik\Plugins\VisitsSummary\Reports; use Piwik\Piwik; -use Piwik\Plugins\CoreHome\Metrics\ActionsPerVisit; -use Piwik\Plugins\CoreHome\Metrics\AverageTimeOnSite; -use Piwik\Plugins\CoreHome\Metrics\BounceRate; +use Piwik\Plugins\CoreHome\Columns\Metrics\ActionsPerVisit; +use Piwik\Plugins\CoreHome\Columns\Metrics\AverageTimeOnSite; +use Piwik\Plugins\CoreHome\Columns\Metrics\BounceRate; class Get extends \Piwik\Plugin\Report { -- cgit v1.2.3