1<?php
2/**
3 * Matomo - free/libre analytics platform
4 *
5 * @link https://matomo.org
6 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
7 *
8 */
9
10namespace Piwik\View;
11
12use Piwik\Common;
13use Piwik\Date;
14use Piwik\Mail\EmailStyles;
15use Piwik\Plugin\ThemeStyles;
16use Piwik\Plugins\API\API;
17use Piwik\Plugins\CoreAdminHome\CustomLogo;
18use Piwik\Scheduler\Schedule\Schedule;
19use Piwik\SettingsPiwik;
20use Piwik\Site;
21use Piwik\View;
22use Piwik\Plugin\Manager;
23
24class HtmlReportEmailHeaderView extends View
25{
26    const TEMPLATE_FILE = '@CoreHome/ReportRenderer/_htmlReportHeader';
27
28    private static $reportFrequencyTranslationByPeriod = [
29        Schedule::PERIOD_NEVER => '',
30        Schedule::PERIOD_DAY   => 'General_DailyReport',
31        Schedule::PERIOD_WEEK  => 'General_WeeklyReport',
32        Schedule::PERIOD_MONTH => 'General_MonthlyReport',
33        Schedule::PERIOD_YEAR  => 'General_YearlyReport',
34        Schedule::PERIOD_RANGE => 'General_RangeReports',
35    ];
36
37    public function __construct($reportTitle, $prettyDate, $description, $reportMetadata, $segment, $idSite, $period)
38    {
39        parent::__construct(self::TEMPLATE_FILE);
40
41        self::assignCommonParameters($this);
42
43        $periods = self::getPeriodToFrequencyAsAdjective();
44        $this->assign("frequency", $periods[$period]);
45        $this->assign("reportTitle", $reportTitle);
46        $this->assign("prettyDate", $prettyDate);
47        $this->assign("description", $description);
48        $this->assign("reportMetadata", $reportMetadata);
49        $this->assign("websiteName", Site::getNameFor($idSite));
50        $this->assign("idSite", $idSite);
51        $this->assign("period", $period);
52
53        $date = Date::now()->setTimezone(Site::getTimezoneFor($idSite))->toString();
54        $this->assign("date", $date);
55
56        // segment
57        $displaySegment = ($segment != null);
58        $this->assign("displaySegment", $displaySegment);
59        if ($displaySegment) {
60            $this->assign("segmentName", $segment['name']);
61        }
62    }
63
64    public static function assignCommonParameters(View $view)
65    {
66        $themeStyles = ThemeStyles::get();
67        $emailStyles = EmailStyles::get();
68
69        $view->currentPath = SettingsPiwik::getPiwikUrl();
70
71        $view->themeStyles = $themeStyles;
72        $view->emailStyles = $emailStyles;
73
74        $view->fontStyle = 'color:' . $themeStyles->colorText . ';font-family:' . $themeStyles->fontFamilyBase.';';
75        $view->styleParagraphText = 'font-size:15px;line-height:24px;';
76        $view->styleParagraph = $view->styleParagraphText . 'margin:0 0 16px;';
77
78        $customLogo = new CustomLogo();
79        $view->isCustomLogo = $customLogo->isEnabled() && CustomLogo::hasUserLogo();
80        $view->logoHeader = $customLogo->getHeaderLogoUrl($pathOnly = false);
81
82        $pluginManager = Manager::getInstance();
83
84        $view->hasWhiteLabel = $pluginManager->isPluginLoaded('WhiteLabel')
85            && $pluginManager->isPluginActivated('WhiteLabel')
86            && $pluginManager->isPluginInFilesystem('WhiteLabel');
87
88        $view->idSite = Common::getRequestVar('idSite', false);
89    }
90
91    private static function getPeriodToFrequencyAsAdjective()
92    {
93        return array_map(['\Piwik\Piwik', 'translate'], self::$reportFrequencyTranslationByPeriod);
94    }
95}
96