get('path.tmp') . '/assets/' . $filename; @chmod($outputFilename, 0600); @unlink($outputFilename); return $outputFilename; } protected static function writeFile($filename, $extension, $content) { $filename = self::appendExtension($filename, $extension); $outputFilename = self::getOutputPath($filename); $bytesWritten = file_put_contents($outputFilename, $content); if ($bytesWritten === false) { throw new Exception ("ReportRenderer: Could not write to file '" . $outputFilename . "'."); } return $outputFilename; } protected static function sendToBrowser($filename, $extension, $contentType, $content) { $filename = ReportRenderer::appendExtension($filename, $extension); ProxyHttp::overrideCacheControlHeaders(); header('Content-Description: File Transfer'); header('Content-Type: ' . $contentType); header('Content-Disposition: attachment; filename="' . str_replace('"', '\'', basename($filename)) . '";'); header('Content-Length: ' . strlen($content)); echo $content; } protected static function inlineToBrowser($contentType, $content) { header('Content-Type: ' . $contentType); echo $content; } /** * Convert a dimension-less report to a multi-row two-column data table * * @static * @param $reportMetadata array * @param $report DataTable * @param $reportColumns array * @return array DataTable $report & array $columns */ protected static function processTableFormat($reportMetadata, $report, $reportColumns) { $finalReport = $report; if (empty($reportMetadata['dimension'])) { $simpleReportMetrics = $report->getFirstRow(); if ($simpleReportMetrics) { $finalReport = new Simple(); foreach ($simpleReportMetrics->getColumns() as $metricId => $metric) { $newRow = new Row(); $newRow->addColumn("label", $reportColumns[$metricId]); $newRow->addColumn("value", $metric); $finalReport->addRow($newRow); } } $reportColumns = array( 'label' => Piwik::translate('General_Name'), 'value' => Piwik::translate('General_Value'), ); } return array( $finalReport, $reportColumns, ); } public static function getStaticGraph($reportMetadata, $width, $height, $evolution, $segment) { $imageGraphUrl = $reportMetadata['imageGraphUrl']; if ($evolution && !empty($reportMetadata['imageGraphEvolutionUrl'])) { $imageGraphUrl = $reportMetadata['imageGraphEvolutionUrl']; } $requestGraph = $imageGraphUrl . '&outputType=' . API::GRAPH_OUTPUT_PHP . '&format=original&serialize=0' . '&filter_truncate=' . '&width=' . $width . '&height=' . $height . ($segment != null ? '&segment=' . urlencode($segment['definition']) : ''); $request = new Request($requestGraph); try { $imageGraph = $request->process(); // Get image data as string ob_start(); imagepng($imageGraph); $imageGraphData = ob_get_contents(); ob_end_clean(); imagedestroy($imageGraph); return $imageGraphData; } catch (Exception $e) { throw new Exception("ImageGraph API returned an error: " . $e->getMessage() . "\n"); } } }