Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 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);
 }