Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'core/ViewDataTable/HtmlTable/Goals.php')
-rw-r--r--core/ViewDataTable/HtmlTable/Goals.php122
1 files changed, 94 insertions, 28 deletions
diff --git a/core/ViewDataTable/HtmlTable/Goals.php b/core/ViewDataTable/HtmlTable/Goals.php
index a4627e0cd5..8bac47b4b1 100644
--- a/core/ViewDataTable/HtmlTable/Goals.php
+++ b/core/ViewDataTable/HtmlTable/Goals.php
@@ -23,14 +23,35 @@ class Piwik_ViewDataTable_HtmlTable_Goals extends Piwik_ViewDataTable_HtmlTable
public function main()
{
+ $this->idSite = Piwik_Common::getRequestVar('idSite', null, 'int');
+ $this->processOnlyIdGoal = Piwik_Common::getRequestVar('filter_only_display_idgoal', 0, 'int');
$this->viewProperties['show_exclude_low_population'] = true;
$this->viewProperties['show_goals'] = true;
- $this->setColumnsToDisplay( array( 'label',
- 'nb_visits',
- 'goals_conversion_rate',
- 'goal_%s_conversion_rate',
- 'revenue_per_visit',
- ));
+
+ $this->setColumnsTranslations( array(
+ 'goal_%s_conversion_rate' => '%s conversion rate',
+ 'goal_%s_nb_conversions' => '%s conversions',
+ 'goal_%s_revenue_per_visit' => '%s revenue per visit',
+ ));
+
+ $this->setColumnsToDisplay( array(
+ 'label',
+ 'nb_visits',
+ 'goal_%s_nb_conversions',
+ 'goal_%s_conversion_rate',
+ 'goal_%s_revenue_per_visit',
+ 'goals_conversion_rate',
+ 'revenue_per_visit',
+ ));
+
+ // We ensure that the 'Sort by' column is actually displayed in the table
+ // eg. most daily reports sort by nb_uniq_visitors but this column is not displayed in the Goals table
+ $columnsToDisplay = $this->getColumnsToDisplay();
+ $columnToSortBy = $this->getSortedColumn();
+ if(!in_array($columnToSortBy, $columnsToDisplay))
+ {
+ $this->setSortedColumn('nb_visits', 'desc');
+ }
parent::main();
}
@@ -39,35 +60,49 @@ class Piwik_ViewDataTable_HtmlTable_Goals extends Piwik_ViewDataTable_HtmlTable
$this->controllerActionCalledWhenRequestSubTable = null;
}
- protected function getRequestString()
- {
- $requestString = parent::getRequestString();
- return $requestString . '&filter_update_columns_when_show_all_goals=1';
- }
-
- protected $columnsToPercentageFilter = array();
-
- private function getIdSite()
- {
- return Piwik_Common::getRequestVar('idSite', null, 'int');
- }
-
public function setColumnsToDisplay($columnsNames)
{
$newColumnsNames = array();
+ $goals = array();
+ $idSite = $this->getIdSite();
+ if($idSite)
+ {
+ $goals = Piwik_Goals_API::getInstance()->getGoals( $idSite );
+ }
foreach($columnsNames as $columnName)
{
- if($columnName == 'goal_%s_conversion_rate')
+ if(in_array($columnName, array('goal_%s_conversion_rate', 'goal_%s_nb_conversions', 'goal_%s_revenue_per_visit')))
{
- $goals = Piwik_Goals_API::getGoals( $this->getIdSite() );
foreach($goals as $goal)
{
$idgoal = $goal['idgoal'];
- $name = $goal['name'];
- $columnName = 'goal_'.$idgoal.'_conversion_rate';
- $newColumnsNames[] = $columnName;
- $this->setColumnTranslation($columnName, $name);
- $this->columnsToPercentageFilter[] = $columnName;
+ if($this->processOnlyIdGoal > Piwik_DataTable_Filter_UpdateColumnsWhenShowAllGoals::GOALS_FULL_TABLE
+ && $this->processOnlyIdGoal != $idgoal)
+ {
+ continue;
+ }
+ $name = Piwik_Translate($this->getColumnTranslation($columnName), $goal['name']);
+ $columnNameGoal = str_replace('%s', $idgoal, $columnName);
+ $this->setColumnTranslation($columnNameGoal, $name);
+ if(strstr($columnNameGoal, '_rate') !== false)
+ {
+ $this->columnsToPercentageFilter[] = $columnNameGoal;
+ }
+ // For the goal table (when the flag icon is clicked), we only display the per Goal Conversion rate
+ elseif($this->processOnlyIdGoal == Piwik_DataTable_Filter_UpdateColumnsWhenShowAllGoals::GOALS_OVERVIEW)
+ {
+ continue;
+ }
+
+ if(strstr($columnNameGoal, '_revenue') !== false)
+ {
+ $this->columnsToRevenueFilter[] = $columnNameGoal;
+ }
+ else
+ {
+ $this->columnsToConversionFilter[] = $columnNameGoal;
+ }
+ $newColumnsNames[] = $columnNameGoal;
}
}
else
@@ -78,14 +113,45 @@ class Piwik_ViewDataTable_HtmlTable_Goals extends Piwik_ViewDataTable_HtmlTable
parent::setColumnsToDisplay($newColumnsNames);
}
+ protected function getRequestString()
+ {
+ $requestString = parent::getRequestString();
+ if($this->processOnlyIdGoal > Piwik_DataTable_Filter_UpdateColumnsWhenShowAllGoals::GOALS_FULL_TABLE)
+ {
+ $requestString .= "&filter_only_display_idgoal=".$this->processOnlyIdGoal;
+ }
+ return $requestString . '&filter_update_columns_when_show_all_goals=1';
+ }
+
+ protected $columnsToPercentageFilter = array();
+ protected $columnsToRevenueFilter = array();
+ protected $columnsToConversionFilter = array();
+ protected $idSite = false;
+
+ private function getIdSite()
+ {
+ return $this->idSite;
+ }
+
protected function postDataTableLoadedFromAPI()
{
parent::postDataTableLoadedFromAPI();
$this->columnsToPercentageFilter[] = 'goals_conversion_rate';
foreach($this->columnsToPercentageFilter as $columnName)
{
- $this->dataTable->filter('ColumnCallbackReplace', array($columnName, create_function('$rate', 'return $rate."%";')));
+ $this->dataTable->filter('ColumnCallbackReplace', array($columnName, create_function('$rate', 'return sprintf("%.1f",$rate)."%";')));
+ }
+ $this->columnsToRevenueFilter[] = 'revenue_per_visit';
+ foreach($this->columnsToRevenueFilter as $columnName)
+ {
+ $this->dataTable->filter('ColumnCallbackReplace', array($columnName, create_function('$value', 'return sprintf("%.1f",$value);')));
+ $this->dataTable->filter('ColumnCallbackReplace', array($columnName, array("Piwik", "getPrettyMoney"), array($this->getIdSite())));
+ }
+
+ foreach($this->columnsToConversionFilter as $columnName)
+ {
+ // this ensures that the value is set to zero for all rows where the value was not set (no conversion)
+ $this->dataTable->filter('ColumnCallbackReplace', array($columnName, create_function('$value', 'return $value;')));
}
- $this->dataTable->filter('ColumnCallbackReplace', array('revenue_per_visit', array("Piwik", "getPrettyMoney")));
}
}