protected function getArrayFromDataTable($table) { $renderer = new Piwik_DataTable_Renderer_Php(); $renderer->setRenderSubTables($this->isRenderSubtables()); $renderer->setSerialize(false); $renderer->setTable($table); return $renderer->flatRender(); }
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); }
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; }
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); }