Esempio n. 1
0
 protected function renderTable($table)
 {
     $renderer = new Piwik_DataTable_Renderer_Php($table, $serialize = false);
     $array = $renderer->flatRender(null, (bool) Piwik_Common::getRequestVar('expanded', false));
     // case DataTable_Array
     if ($table instanceof Piwik_DataTable_Array) {
         return $this->renderDataTableArray($table, $array);
     }
     // integer value of ZERO is a value we want to display
     if ($array != 0 && empty($array)) {
         $out = "<result />";
         return $this->output($out);
     }
     if ($table instanceof Piwik_DataTable_Simple) {
         if (is_array($array)) {
             $out = $this->renderDataTableSimple($array);
             $out = "<result>\n" . $out . "</result>";
         } else {
             $out = "<result>" . $array . "</result>";
         }
         return $this->output($out);
     }
     if ($table instanceof Piwik_DataTable) {
         $out = $this->renderDataTable($array);
         $out = "<result>\n{$out}</result>";
         return $this->output($out);
     }
 }
Esempio n. 2
0
 protected function getArrayFromDataTable($table)
 {
     $renderer = new Piwik_DataTable_Renderer_Php();
     $renderer->setRenderSubTables($this->isRenderSubtables());
     $renderer->setSerialize(false);
     $renderer->setTable($table);
     return $renderer->flatRender();
 }
Esempio n. 3
0
 protected function renderTable($table)
 {
     $renderer = new Piwik_DataTable_Renderer_Php($table, $serialize = false);
     $array = $renderer->flatRender(null, (bool) Piwik_Common::getRequestVar('expanded', false));
     if (!is_array($array)) {
         $array = array('value' => $array);
     }
     $str = json_encode($array);
     if (($jsonCallback = Piwik_Common::getRequestVar('jsoncallback', false)) !== false) {
         if (preg_match('/^[0-9a-zA-Z]*$/', $jsonCallback) > 0) {
             $str = $jsonCallback . "(" . $str . ")";
         }
     }
     return $str;
 }
Esempio n. 4
0
 protected function renderTable($table)
 {
     $renderer = new Piwik_DataTable_Renderer_Php();
     $renderer->setTable($table);
     $renderer->setRenderSubTables($this->isRenderSubtables());
     $renderer->setSerialize(false);
     $array = $renderer->flatRender();
     if (!is_array($array)) {
         $array = array('value' => $array);
     }
     $str = json_encode($array);
     if (($jsonCallback = Piwik_Common::getRequestVar('jsoncallback', false)) !== false) {
         if (preg_match('/^[0-9a-zA-Z]*$/', $jsonCallback) > 0) {
             $str = $jsonCallback . "(" . $str . ")";
         }
     }
     return $str;
 }
Esempio n. 5
0
 protected function renderTable($table)
 {
     $renderer = new Piwik_DataTable_Renderer_Php();
     $renderer->setTable($table);
     $renderer->setRenderSubTables($this->isRenderSubtables());
     $renderer->setSerialize(false);
     $renderer->setHideIdSubDatableFromResponse($this->hideIdSubDatatable);
     $array = $renderer->flatRender();
     if (!is_array($array)) {
         $array = array('value' => $array);
     }
     // decode all entities
     $callback = create_function('&$value,$key', 'if(is_string($value)){$value = html_entity_decode($value, ENT_QUOTES, "UTF-8");}');
     array_walk_recursive($array, $callback);
     $str = Piwik_Common::json_encode($array);
     return $this->jsonpWrap($str);
 }
Esempio n. 6
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);
 }
Esempio n. 7
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);
 }