Skip to content
Extraits de code Groupes Projets
Valider 349f2808 rédigé par Benaka Moorthi's avatar Benaka Moorthi
Parcourir les fichiers

Refs #4041, fix bug in displaying DBStats reports by redefining how...

Refs #4041, fix bug in displaying DBStats reports by redefining how columns_to_display view property defaults and allow unique visitors to be displayed on reports that have it, outside of period=day.
parent a5a1d4f1
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -694,6 +694,23 @@ class Piwik_DataTable ...@@ -694,6 +694,23 @@ class Piwik_DataTable
} }
return $columnValues; return $columnValues;
} }
/**
* Returns the list of columns the rows in this datatable contain. This will return the
* columns of the first row with data and assume they occur in every other row as well.
*
* @return array
*/
public function getColumns()
{
foreach ($this->getRows() as $row) {
$columns = $row->getColumns();
if (!empty($columns)) {
return array_keys($columns);
}
}
return array();
}
/** /**
* Returns an array containing the rows Metadata values * Returns an array containing the rows Metadata values
......
...@@ -173,17 +173,12 @@ abstract class Piwik_ViewDataTable ...@@ -173,17 +173,12 @@ abstract class Piwik_ViewDataTable
Piwik_Metrics::getDefaultMetrics(), Piwik_Metrics::getDefaultMetrics(),
Piwik_Metrics::getDefaultProcessedMetrics() Piwik_Metrics::getDefaultProcessedMetrics()
); );
$this->viewProperties['columns_to_display'] = array();
$this->viewProperties['columns_to_display'][] = 'label';
$columns = Piwik_Common::getRequestVar('columns', false); $columns = Piwik_Common::getRequestVar('columns', false);
if ($columns !== false) { if ($columns !== false) {
$this->viewProperties['columns_to_display'] = array_merge( $this->viewProperties['columns_to_display'] = Piwik::getArrayFromApiParameter($columns);
$this->viewProperties['columns_to_display'], Piwik::getArrayFromApiParameter($columns)); array_unshift($this->viewProperties['columns_to_display'], 'label');
} else if (Piwik_Common::getRequestVar('period', false) == 'day') {
$this->viewProperties['columns_to_display'][] = 'nb_uniq_visitors';
} else {
$this->viewProperties['columns_to_display'][] = 'nb_visits';
} }
} }
...@@ -616,6 +611,27 @@ abstract class Piwik_ViewDataTable ...@@ -616,6 +611,27 @@ abstract class Piwik_ViewDataTable
$this->dataTable->filter($filterName, $filterParameters); $this->dataTable->filter($filterName, $filterParameters);
} }
} }
// default columns_to_display to label, nb_uniq_visitors/nb_visits if those columns exist in the
// dataset
if ($this->dataTable instanceof Piwik_DataTable) {
$columns = $this->dataTable->getColumns();
if (empty($this->viewProperties['columns_to_display'])
&& $this->dataTableColumnsContains($columns, array('nb_visits', 'nb_uniq_visitors'))
) {
$columnsToDisplay = array('label');
// if unique visitors data is available, show it, otherwise just visits
if ($this->dataTableColumnsContains($columns, 'nb_uniq_visitors')) {
$columnsToDisplay[] = 'nb_uniq_visitors';
} else {
$columnsToDisplay[] = 'nb_visits';
}
$this->viewProperties['columns_to_display'] = $columnsToDisplay;
}
}
return true; return true;
} }
...@@ -1610,4 +1626,33 @@ abstract class Piwik_ViewDataTable ...@@ -1610,4 +1626,33 @@ abstract class Piwik_ViewDataTable
&& Piwik_Common::getRequestVar('filter_pattern_recursive', false) !== false && Piwik_Common::getRequestVar('filter_pattern_recursive', false) !== false
&& Piwik_Common::getRequestVar('flat', false) === false; && Piwik_Common::getRequestVar('flat', false) === false;
} }
/**
* Returns true if the first array contains one or more of the specified
* column names or their associated integer INDEX_ value.
*
* @param array $columns Piwik_DataTable_Row columns.
* @param array|string $columnsToCheckFor eg, array('nb_visits', 'nb_uniq_visitors')
* @return bool
*/
private function dataTableColumnsContains($columns, $columnsToCheckFor)
{
if (!is_array($columnsToCheckFor)) {
$columnsToCheckFor = array($columnsToCheckFor);
}
foreach ($columnsToCheckFor as $columnToCheckFor) {
foreach ($columns as $column) {
// check for the column name and its associated integer INDEX_ value
if ($column == $columnToCheckFor
|| (isset(Piwik_Metrics::$mappingFromNameToId[$columnToCheckFor])
&& $column == Piwik_Metrics::$mappingFromNameToId[$columnToCheckFor])
) {
return true;
}
}
}
return false;
}
} }
...@@ -132,7 +132,7 @@ class Piwik_ViewDataTable_HtmlTable extends Piwik_ViewDataTable ...@@ -132,7 +132,7 @@ class Piwik_ViewDataTable_HtmlTable extends Piwik_ViewDataTable
$nbColumns = count($columns); $nbColumns = count($columns);
// case no data in the array we use the number of columns set to be displayed // case no data in the array we use the number of columns set to be displayed
if ($nbColumns == 0) { if ($nbColumns == 0) {
$nbColumns = count($this->columnsToDisplay); $nbColumns = count($this->viewProperties['columns_to_display']);
} }
$view->dataTable = $this->dataTable; $view->dataTable = $this->dataTable;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter