| <?php |
|
|
| |
| |
| |
| |
| |
| |
|
|
| namespace Piwik\ReportRenderer; |
|
|
| use Piwik\Piwik; |
| use Piwik\ReportRenderer; |
| use Piwik\View; |
|
|
| |
| |
| |
| class Html extends ReportRenderer |
| { |
| public const IMAGE_GRAPH_WIDTH = 700; |
| public const IMAGE_GRAPH_HEIGHT = 200; |
|
|
| public const HTML_CONTENT_TYPE = 'text/html'; |
| public const HTML_FILE_EXTENSION = 'html'; |
| public const UNSUBSCRIBE_LINK_PLACEHOLDER = '__unsubscribeLink__'; |
|
|
| protected $renderImageInline = false; |
|
|
| private $rendering = ""; |
|
|
| public function setLocale($locale) |
| { |
| |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| public function setRenderImageInline($renderImageInline) |
| { |
| $this->renderImageInline = $renderImageInline; |
| } |
|
|
| public function sendToDisk($filename) |
| { |
| $this->epilogue(); |
|
|
| return ReportRenderer::writeFile($filename, self::HTML_FILE_EXTENSION, $this->rendering); |
| } |
|
|
| public function sendToBrowserDownload($filename) |
| { |
| $this->epilogue(); |
|
|
| ReportRenderer::sendToBrowser($filename, self::HTML_FILE_EXTENSION, self::HTML_CONTENT_TYPE, $this->rendering); |
| } |
|
|
| public function sendToBrowserInline($filename) |
| { |
| $this->epilogue(); |
|
|
| ReportRenderer::inlineToBrowser(self::HTML_CONTENT_TYPE, $this->rendering); |
| } |
|
|
| public function getRenderedReport() |
| { |
| $this->epilogue(); |
|
|
| return $this->rendering; |
| } |
|
|
| private function epilogue() |
| { |
| |
| |
| $view = new View\HtmlEmailFooterView(self::UNSUBSCRIBE_LINK_PLACEHOLDER); |
| $this->rendering .= $view->render(); |
| } |
|
|
| public function renderFrontPage($reportTitle, $prettyDate, $description, $reportMetadata, $segment) |
| { |
| $frontPageView = new View\HtmlReportEmailHeaderView( |
| $reportTitle, |
| $prettyDate, |
| $description, |
| $reportMetadata, |
| $segment, |
| $this->idSite, |
| $this->report['period'] |
| ); |
| $this->rendering .= $frontPageView->render(); |
| } |
|
|
| public function renderReport($processedReport) |
| { |
| $reportView = new View('@CoreHome/ReportRenderer/_htmlReportBody'); |
| View\HtmlReportEmailHeaderView::assignCommonParameters($reportView); |
|
|
| $reportMetadata = $processedReport['metadata']; |
| $reportData = $processedReport['reportData']; |
| $columns = $processedReport['columns']; |
| list($reportData, $columns) = self::processTableFormat($reportMetadata, $reportData, $columns); |
|
|
| $reportView->assign("reportName", $reportMetadata['name']); |
| $reportView->assign("reportId", $reportMetadata['uniqueId']); |
| $reportView->assign("reportColumns", $columns); |
| $reportView->assign("reportRows", $reportData->getRows()); |
| $reportView->assign("reportRowsMetadata", $processedReport['reportMetadata']->getRows()); |
| $reportView->assign("displayTable", $processedReport['displayTable']); |
|
|
| $displayGraph = $processedReport['displayGraph']; |
| $evolutionGraph = $processedReport['evolutionGraph']; |
| $reportView->assign("displayGraph", $displayGraph); |
|
|
| if ($displayGraph) { |
| $reportView->assign("graphWidth", self::IMAGE_GRAPH_WIDTH); |
| $reportView->assign("graphHeight", self::IMAGE_GRAPH_HEIGHT); |
| $reportView->assign("renderImageInline", $this->renderImageInline); |
|
|
| if ($this->renderImageInline) { |
| $staticGraph = parent::getStaticGraph( |
| $reportMetadata, |
| self::IMAGE_GRAPH_WIDTH, |
| self::IMAGE_GRAPH_HEIGHT, |
| $evolutionGraph, |
| $processedReport['segment'] |
| ); |
| $reportView->assign("generatedImageGraph", base64_encode($staticGraph)); |
| } |
| } |
|
|
| $this->rendering .= $reportView->render(); |
| } |
|
|
| public function getAttachments($report, $processedReports, $prettyDate) |
| { |
| $additionalFiles = array(); |
|
|
| foreach ($processedReports as $processedReport) { |
| if ($processedReport['displayGraph']) { |
| $additionalFiles[] = $this->getAttachment($report, $processedReport, $prettyDate); |
| } |
| } |
|
|
| return $additionalFiles; |
| } |
|
|
| protected function getAttachment($report, $processedReport, $prettyDate) |
| { |
| $additionalFile = array(); |
|
|
| $segment = \Piwik\Plugins\ScheduledReports\API::getSegment($report['idsegment']); |
|
|
| $segmentName = $segment != null ? sprintf(' (%s)', $segment['name']) : ''; |
|
|
| $processedReportMetadata = $processedReport['metadata']; |
|
|
| $additionalFile['filename'] = |
| sprintf( |
| '%s - %s - %d - %s %d%s.png', |
| $processedReportMetadata['name'], |
| $prettyDate, |
| $report['idsite'], |
| Piwik::translate('General_Report'), |
| $report['idreport'], |
| $segmentName |
| ); |
|
|
| $additionalFile['cid'] = $processedReportMetadata['uniqueId']; |
|
|
| $additionalFile['content'] = |
| ReportRenderer::getStaticGraph( |
| $processedReportMetadata, |
| Html::IMAGE_GRAPH_WIDTH, |
| Html::IMAGE_GRAPH_HEIGHT, |
| $processedReport['evolutionGraph'], |
| $segment |
| ); |
|
|
| $additionalFile['mimeType'] = 'image/png'; |
|
|
| return $additionalFile; |
| } |
| } |
|
|