function test_PHP_Array_isMadeOfArray_test3() { $dataTable = $this->getDataTableArray_containsDataTableArray_simpleOneRow(); $render = new Piwik_DataTable_Renderer_Php(); $render->setTable($dataTable); $rendered = $render->render(); $expected = serialize(array('idSite' => array('row1' => 14.0, 'row2' => 15.0, 'row3' => array()))); $this->assertEqual($expected, $rendered); }
private function handleTableReport($idSite, $period, $dataTable, &$reportMetadata) { // displayed columns $columns = array_merge(array('label' => $reportMetadata['dimension']), $reportMetadata['metrics']); if (isset($reportMetadata['processedMetrics'])) { $processedMetricsAdded = $this->getDefaultProcessedMetrics(); foreach ($processedMetricsAdded as $processedMetricId => $processedMetricTranslation) { // this processed metric can be displayed for this report if (isset($reportMetadata['processedMetrics'][$processedMetricId])) { $columns[$processedMetricId] = $processedMetricTranslation; } } } // Display the global Goal metrics if (isset($reportMetadata['metricsGoal'])) { $metricsGoalDisplay = array('conversion_rate', 'revenue'); // Add processed metrics to be displayed for this report foreach ($metricsGoalDisplay as $goalMetricId) { if (isset($reportMetadata['metricsGoal'][$goalMetricId])) { $columns[$goalMetricId] = $reportMetadata['metricsGoal'][$goalMetricId]; } } } if (isset($reportMetadata['metricsGoal'])) { // To process conversion_rate, we need to apply the Goal processed filter // only requesting to process the basic metrics // This adds goal metrics as well as standard metrics $dataTable->filter('AddColumnsProcessedMetricsGoal', array($enable = true, Piwik_DataTable_Filter_AddColumnsProcessedMetricsGoal::GOALS_MINIMAL_REPORT)); } elseif (isset($reportMetadata['processedMetrics'])) { // Add processed metrics $dataTable->filter('AddColumnsProcessedMetrics'); } $renderer = new Piwik_DataTable_Renderer_Php(); $renderer->setTable($dataTable); $renderer->setSerialize(false); $reportTable = $renderer->render(); $rowsMetadata = array(); $newReport = array(); foreach ($reportTable as $rowId => $row) { // ensure all displayed columns have 0 values foreach ($columns as $id => $name) { if (!isset($row[$id])) { $row[$id] = 0; } } $newRow = array(); foreach ($row as $columnId => $value) { // Keep displayed columns if (isset($columns[$columnId])) { $newRow[$columnId] = Piwik::getPrettyValue($idSite, $columnId, $value, $htmlAllowed = false, $timeAsSentence = false); } elseif (!is_array($value) && strpos($columnId, '_') === false) { $rowsMetadata[$rowId][$columnId] = $value; } } $newReport[] = $newRow; } return array($newReport, $columns, $rowsMetadata); }