Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/PDFReports/PDFReports.php')
-rw-r--r--plugins/PDFReports/PDFReports.php1208
1 files changed, 580 insertions, 628 deletions
diff --git a/plugins/PDFReports/PDFReports.php b/plugins/PDFReports/PDFReports.php
index bf6f58596e..5f295b8366 100644
--- a/plugins/PDFReports/PDFReports.php
+++ b/plugins/PDFReports/PDFReports.php
@@ -1,10 +1,10 @@
<?php
/**
* Piwik - Open source web analytics
- *
+ *
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
+ *
* @category Piwik_Plugins
* @package Piwik_PDFReports
*/
@@ -15,583 +15,542 @@
*/
class Piwik_PDFReports extends Piwik_Plugin
{
- const MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY = 'MobileMessaging_TopMenu';
- const PDF_REPORTS_TOP_MENU_TRANSLATION_KEY = 'PDFReports_EmailReports';
-
- const DISPLAY_FORMAT_GRAPHS_ONLY_FOR_KEY_METRICS = 1; // Display Tables Only (Graphs only for key metrics)
- const DISPLAY_FORMAT_GRAPHS_ONLY = 2; // Display Graphs Only for all reports
- const DISPLAY_FORMAT_TABLES_AND_GRAPHS = 3; // Display Tables and Graphs for all reports
- const DISPLAY_FORMAT_TABLES_ONLY = 4; // Display only tables for all reports
- const DEFAULT_DISPLAY_FORMAT = self::DISPLAY_FORMAT_GRAPHS_ONLY_FOR_KEY_METRICS;
-
- const DEFAULT_REPORT_FORMAT = Piwik_ReportRenderer::HTML_FORMAT;
- const DEFAULT_PERIOD = 'week';
- const DEFAULT_HOUR = '0';
-
- const EMAIL_ME_PARAMETER = 'emailMe';
- const EVOLUTION_GRAPH_PARAMETER = 'evolutionGraph';
- const ADDITIONAL_EMAILS_PARAMETER = 'additionalEmails';
- const DISPLAY_FORMAT_PARAMETER = 'displayFormat';
- const EMAIL_ME_PARAMETER_DEFAULT_VALUE = true;
- const EVOLUTION_GRAPH_PARAMETER_DEFAULT_VALUE = false;
-
- const EMAIL_TYPE = 'email';
-
- static private $availableParameters = array(
- self::EMAIL_ME_PARAMETER => false,
- self::EVOLUTION_GRAPH_PARAMETER => false,
- self::ADDITIONAL_EMAILS_PARAMETER => false,
- self::DISPLAY_FORMAT_PARAMETER => true,
- );
-
- static private $managedReportTypes = array(
- self::EMAIL_TYPE => 'themes/default/images/email.png'
- );
-
- static private $managedReportFormats = array(
- Piwik_ReportRenderer::HTML_FORMAT => 'themes/default/images/html_icon.png',
- Piwik_ReportRenderer::PDF_FORMAT => 'plugins/UserSettings/images/plugins/pdf.gif'
- );
-
- public function getInformation()
- {
- return array(
- 'name' => 'Email Reports Plugin',
- 'description' => Piwik_Translate('PDFReports_PluginDescriptionReports'),
- 'author' => 'Piwik',
- 'author_homepage' => 'http://piwik.org/',
- 'version' => Piwik_Version::VERSION,
- );
- }
- public function getListHooksRegistered()
- {
- return array(
- 'TopMenu.add' => 'addTopMenu',
- 'TaskScheduler.getScheduledTasks' => 'getScheduledTasks',
- 'AssetManager.getJsFiles' => 'getJsFiles',
- 'PDFReports.getReportParameters' => 'getReportParameters',
- 'PDFReports.validateReportParameters' => 'validateReportParameters',
- 'PDFReports.getReportMetadata' => 'getReportMetadata',
- 'PDFReports.getReportTypes' => 'getReportTypes',
- 'PDFReports.getReportFormats' => 'getReportFormats',
- 'PDFReports.getRendererInstance' => 'getRendererInstance',
- 'PDFReports.getReportRecipients' => 'getReportRecipients',
- 'PDFReports.processReports' => 'processReports',
- 'PDFReports.allowMultipleReports' => 'allowMultipleReports',
- 'PDFReports.sendReport' => 'sendReport',
- 'template_reportParametersPDFReports' => 'template_reportParametersPDFReports',
- 'UsersManager.deleteUser' => 'deleteUserReport',
- 'SitesManager.deleteSite' => 'deleteSiteReport',
- );
- }
-
- /**
- * Delete reports for the website
- *
- * @param Piwik_Event_Notification $notification notification object
- */
- function deleteSiteReport( $notification )
- {
- $idSite = &$notification->getNotificationObject();
-
- $idReports = Piwik_PDFReports_API::getInstance()->getReports($idSite);
-
- foreach($idReports as $report)
- {
- $idReport = $report['idreport'];
- Piwik_PDFReports_API::getInstance()->deleteReport($idReport);
- }
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- function getJsFiles( $notification )
- {
- $jsFiles = &$notification->getNotificationObject();
- $jsFiles[] = "plugins/PDFReports/templates/pdf.js";
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- function validateReportParameters( $notification )
- {
- if(self::manageEvent($notification))
- {
- $parameters = &$notification->getNotificationObject();
-
- $reportFormat = $parameters[self::DISPLAY_FORMAT_PARAMETER];
- $availableDisplayFormats = array_keys(self::getDisplayFormats());
- if(!in_array($reportFormat, $availableDisplayFormats))
- {
- throw new Exception(
- Piwik_TranslateException(
- // General_ExceptionInvalidAggregateReportsFormat should be named General_ExceptionInvalidDisplayFormat
- 'General_ExceptionInvalidAggregateReportsFormat',
- array($reportFormat, implode(', ', $availableDisplayFormats))
- )
- );
- }
-
- // emailMe is an optional parameter
- if(!isset($parameters[self::EMAIL_ME_PARAMETER]))
- {
- $parameters[self::EMAIL_ME_PARAMETER] = self::EMAIL_ME_PARAMETER_DEFAULT_VALUE;
- }
- else
- {
- $parameters[self::EMAIL_ME_PARAMETER] = self::valueIsTrue($parameters[self::EMAIL_ME_PARAMETER]);
- }
-
- // evolutionGraph is an optional parameter
- if(!isset($parameters[self::EVOLUTION_GRAPH_PARAMETER]))
- {
- $parameters[self::EVOLUTION_GRAPH_PARAMETER] = self::EVOLUTION_GRAPH_PARAMETER_DEFAULT_VALUE;
- }
- else
- {
- $parameters[self::EVOLUTION_GRAPH_PARAMETER] = self::valueIsTrue($parameters[self::EVOLUTION_GRAPH_PARAMETER]);
- }
-
- // additionalEmails is an optional parameter
- if(isset($parameters[self::ADDITIONAL_EMAILS_PARAMETER]))
- {
- $parameters[self::ADDITIONAL_EMAILS_PARAMETER] = self::checkAdditionalEmails($parameters[self::ADDITIONAL_EMAILS_PARAMETER]);
- }
- }
- }
-
- // based on http://www.php.net/manual/en/filter.filters.validate.php -> FILTER_VALIDATE_BOOLEAN
- static private function valueIsTrue($value)
- {
- return $value == 'true' || $value == 1 || $value == '1' || $value === true;
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- function getReportMetadata( $notification )
- {
- if(self::manageEvent($notification))
- {
- $reportMetadata = &$notification->getNotificationObject();
-
- $notificationInfo = $notification->getNotificationInfo();
- $idSite = $notificationInfo[Piwik_PDFReports_API::ID_SITE_INFO_KEY];
-
- $availableReportMetadata = Piwik_API_API::getInstance()->getReportMetadata($idSite);
-
- $filteredReportMetadata = array();
- foreach($availableReportMetadata as $reportMetadata)
- {
- // removing reports from the API category and MultiSites.getOne
- if(
- $reportMetadata['category'] == 'API' ||
- $reportMetadata['category'] == Piwik_Translate('General_MultiSitesSummary') && $reportMetadata['name'] == Piwik_Translate('General_SingleWebsitesDashboard')
- ) continue;
-
- $filteredReportMetadata[] = $reportMetadata;
- }
-
- $reportMetadata = $filteredReportMetadata;
- }
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- function getReportTypes( $notification )
- {
- $reportTypes = &$notification->getNotificationObject();
- $reportTypes = array_merge($reportTypes, self::$managedReportTypes);
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- function getReportFormats( $notification )
- {
- if(self::manageEvent($notification))
- {
- $reportFormats = &$notification->getNotificationObject();
- $reportFormats = self::$managedReportFormats;
- }
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- function getReportParameters( $notification )
- {
- if(self::manageEvent($notification))
- {
- $availableParameters = &$notification->getNotificationObject();
- $availableParameters = self::$availableParameters;
- }
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- function processReports( $notification )
- {
- if(self::manageEvent($notification))
- {
- $processedReports = &$notification->getNotificationObject();
-
- $notificationInfo = $notification->getNotificationInfo();
- $report = $notificationInfo[Piwik_PDFReports_API::REPORT_KEY];
-
- $displayFormat = $report['parameters'][self::DISPLAY_FORMAT_PARAMETER];
- $evolutionGraph = $report['parameters'][self::EVOLUTION_GRAPH_PARAMETER];
-
- foreach ($processedReports as &$processedReport)
- {
- $metadata = $processedReport['metadata'];
-
- $isAggregateReport = !empty($metadata['dimension']);
-
- $processedReport['displayTable'] = $displayFormat != self::DISPLAY_FORMAT_GRAPHS_ONLY;
-
- $processedReport['displayGraph'] =
- ($isAggregateReport ?
- $displayFormat == self::DISPLAY_FORMAT_GRAPHS_ONLY || $displayFormat == self::DISPLAY_FORMAT_TABLES_AND_GRAPHS
- :
- $displayFormat != self::DISPLAY_FORMAT_TABLES_ONLY)
- && Piwik::isGdExtensionEnabled()
- && Piwik_PluginsManager::getInstance()->isPluginActivated('ImageGraph')
- && !empty($metadata['imageGraphUrl']);
-
- $processedReport['evolutionGraph'] = $evolutionGraph;
-
- // remove evolution metrics from MultiSites.getAll
- if($metadata['module'] == 'MultiSites')
- {
- $columns = $processedReport['columns'];
-
- foreach(Piwik_MultiSites_API::getApiMetrics($enhanced = true) as $metricSettings)
- {
- unset($columns[$metricSettings[Piwik_MultiSites_API::METRIC_EVOLUTION_COL_NAME_KEY]]);
- }
-
- $processedReport['metadata'] = $metadata;
- $processedReport['columns'] = $columns;
- }
- }
- }
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- function getRendererInstance( $notification )
- {
- if(self::manageEvent($notification))
- {
- $reportRenderer = &$notification->getNotificationObject();
- $notificationInfo = $notification->getNotificationInfo();
-
- $reportFormat = $notificationInfo[Piwik_PDFReports_API::REPORT_KEY]['format'];
- $outputType = $notificationInfo[Piwik_PDFReports_API::OUTPUT_TYPE_INFO_KEY];
-
- $reportRenderer = Piwik_ReportRenderer::factory($reportFormat);
-
- if($reportFormat == Piwik_ReportRenderer::HTML_FORMAT)
- {
- $reportRenderer->setRenderImageInline($outputType != Piwik_PDFReports_API::OUTPUT_SAVE_ON_DISK);
- }
- }
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- function allowMultipleReports( $notification )
- {
- if(self::manageEvent($notification))
- {
- $allowMultipleReports = &$notification->getNotificationObject();
- $allowMultipleReports = true;
- }
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- function sendReport( $notification )
- {
- if(self::manageEvent($notification))
- {
- $notificationInfo = $notification->getNotificationInfo();
- $report = $notificationInfo[Piwik_PDFReports_API::REPORT_KEY];
- $websiteName = $notificationInfo[Piwik_PDFReports_API::WEBSITE_NAME_KEY];
- $prettyDate = $notificationInfo[Piwik_PDFReports_API::PRETTY_DATE_KEY];
- $contents = $notificationInfo[Piwik_PDFReports_API::REPORT_CONTENT_KEY];
- $filename = $notificationInfo[Piwik_PDFReports_API::FILENAME_KEY];
- $additionalFiles = $notificationInfo[Piwik_PDFReports_API::ADDITIONAL_FILES_KEY];
-
- $periods = self::getPeriodToFrequency();
- $message = Piwik_Translate('PDFReports_EmailHello');
- $subject = Piwik_Translate('General_Report') . ' '. $websiteName . " - ".$prettyDate;
-
- $mail = new Piwik_Mail();
- $mail->setSubject($subject);
- $fromEmailName = Piwik_Config::getInstance()->branding['use_custom_logo']
- ? Piwik_Translate('CoreHome_WebAnalyticsReports')
- : Piwik_Translate('PDFReports_PiwikReports');
- $fromEmailAddress = Piwik_Config::getInstance()->General['noreply_email_address'];
- $attachmentName = $subject;
- $mail->setFrom($fromEmailAddress, $fromEmailName);
-
- switch ($report['format'])
- {
- case 'html':
-
- // Needed when using images as attachment with cid
- $mail->setType(Zend_Mime::MULTIPART_RELATED);
- $message .= "<br/>" . Piwik_Translate('PDFReports_PleaseFindBelow', array($periods[$report['period']], $websiteName));
- $mail->setBodyHtml($message . "<br/><br/>". $contents);
- break;
-
- default:
- case 'pdf':
- $message .= "\n" . Piwik_Translate('PDFReports_PleaseFindAttachedFile', array($periods[$report['period']], $websiteName));
- $mail->setBodyText($message);
- $mail->createAttachment(
- $contents,
- 'application/pdf',
- Zend_Mime::DISPOSITION_INLINE,
- Zend_Mime::ENCODING_BASE64,
- $attachmentName.'.pdf'
- );
- break;
- }
-
- foreach($additionalFiles as $additionalFile)
- {
- $fileContent = $additionalFile['content'];
- $at = $mail->createAttachment(
- $fileContent,
- $additionalFile['mimeType'],
- Zend_Mime::DISPOSITION_INLINE,
- $additionalFile['encoding'],
- $additionalFile['filename']
- );
- $at->id = $additionalFile['cid'];
-
- unset($fileContent);
- }
-
- // Get user emails and languages
- $reportParameters = $report['parameters'];
- $emails = array();
-
- if(isset($reportParameters[self::ADDITIONAL_EMAILS_PARAMETER]))
- {
- $emails = $reportParameters[self::ADDITIONAL_EMAILS_PARAMETER];
- }
-
- if($reportParameters[self::EMAIL_ME_PARAMETER] == 1)
- {
- if(Piwik::getCurrentUserLogin() == $report['login'])
- {
- $emails[] = Piwik::getCurrentUserEmail();
- }
- elseif($report['login'] == Piwik_Config::getInstance()->superuser['login'])
- {
- $emails[] = Piwik::getSuperUserEmail();
- }
- else
- {
- try {
- $user = Piwik_UsersManager_API::getInstance()->getUser($report['login']);
- } catch(Exception $e) {
- return;
- }
- $emails[] = $user['email'];
- }
- }
-
- foreach ($emails as $email)
- {
- if(empty($email)) {
- continue;
- }
- $mail->addTo($email);
-
- try {
- $mail->send();
- } catch(Exception $e) {
-
- // If running from piwik.php with debug, we ignore the 'email not sent' error
- if(!isset($GLOBALS['PIWIK_TRACKER_DEBUG']) || !$GLOBALS['PIWIK_TRACKER_DEBUG'])
- {
- throw new Exception("An error occured while sending '$filename' ".
- " to ". implode(', ',$mail->getRecipients()).
- ". Error was '". $e->getMessage()."'");
- }
- }
- $mail->clearRecipients();
- }
- }
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- function getReportRecipients( $notification )
- {
- if(self::manageEvent($notification))
- {
- $recipients = &$notification->getNotificationObject();
- $notificationInfo = $notification->getNotificationInfo();
-
- $report = $notificationInfo[Piwik_PDFReports_API::REPORT_KEY];
- $parameters = $report['parameters'];
- $eMailMe = $parameters[self::EMAIL_ME_PARAMETER];
-
- if($eMailMe)
- {
- $recipients[] = Piwik::getCurrentUserEmail();
- }
-
- if(isset($parameters[self::ADDITIONAL_EMAILS_PARAMETER]))
- {
- $additionalEMails = $parameters[self::ADDITIONAL_EMAILS_PARAMETER];
- $recipients = array_merge($recipients, $additionalEMails);
- }
- $recipients = array_filter($recipients);
- }
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- static public function template_reportParametersPDFReports($notification)
- {
- $out =& $notification->getNotificationObject();
-
- $view = Piwik_View::factory('report_parameters');
- $view->currentUserEmail = Piwik::getCurrentUserEmail();
- $view->displayFormats = self::getDisplayFormats();
- $view->reportType = self::EMAIL_TYPE;
- $view->defaultDisplayFormat = self::DEFAULT_DISPLAY_FORMAT;
- $view->defaultEmailMe = self::EMAIL_ME_PARAMETER_DEFAULT_VALUE ? 'true' : 'false';
- $view->defaultEvolutionGraph = self::EVOLUTION_GRAPH_PARAMETER_DEFAULT_VALUE ? 'true' : 'false';
- $out .= $view->render();
- }
-
- private static function manageEvent($notification)
- {
- $notificationInfo = $notification->getNotificationInfo();
- return in_array(
- $notificationInfo[Piwik_PDFReports_API::REPORT_TYPE_INFO_KEY],
- array_keys(self::$managedReportTypes)
- );
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- function getScheduledTasks ( $notification )
- {
- $arbitraryDateInUTC = Piwik_Date::factory('2011-01-01');
- $tasks = &$notification->getNotificationObject();
- foreach(Piwik_PDFReports_API::getInstance()->getReports() as $report)
- {
- if (!$report['deleted'] && $report['period'] != Piwik_ScheduledTime::PERIOD_NEVER)
- {
- $midnightInSiteTimezone =
- date (
- 'H',
- Piwik_Date::factory(
- $arbitraryDateInUTC,
- Piwik_Site::getTimezoneFor($report['idsite'])
- )->getTimestamp()
- );
-
- $hourInUTC = (24 - $midnightInSiteTimezone + $report['hour']) % 24;
-
- $schedule = Piwik_ScheduledTime::getScheduledTimeForPeriod($report['period']);
- $schedule->setHour($hourInUTC);
- $tasks[] = new Piwik_ScheduledTask (
- Piwik_PDFReports_API::getInstance(),
- 'sendReport',
- $report['idreport'], $schedule
- );
- }
- }
- }
+ const MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY = 'MobileMessaging_TopMenu';
+ const PDF_REPORTS_TOP_MENU_TRANSLATION_KEY = 'PDFReports_EmailReports';
+
+ const DISPLAY_FORMAT_GRAPHS_ONLY_FOR_KEY_METRICS = 1; // Display Tables Only (Graphs only for key metrics)
+ const DISPLAY_FORMAT_GRAPHS_ONLY = 2; // Display Graphs Only for all reports
+ const DISPLAY_FORMAT_TABLES_AND_GRAPHS = 3; // Display Tables and Graphs for all reports
+ const DISPLAY_FORMAT_TABLES_ONLY = 4; // Display only tables for all reports
+ const DEFAULT_DISPLAY_FORMAT = self::DISPLAY_FORMAT_GRAPHS_ONLY_FOR_KEY_METRICS;
+
+ const DEFAULT_REPORT_FORMAT = Piwik_ReportRenderer::HTML_FORMAT;
+ const DEFAULT_PERIOD = 'week';
+ const DEFAULT_HOUR = '0';
+
+ const EMAIL_ME_PARAMETER = 'emailMe';
+ const EVOLUTION_GRAPH_PARAMETER = 'evolutionGraph';
+ const ADDITIONAL_EMAILS_PARAMETER = 'additionalEmails';
+ const DISPLAY_FORMAT_PARAMETER = 'displayFormat';
+ const EMAIL_ME_PARAMETER_DEFAULT_VALUE = true;
+ const EVOLUTION_GRAPH_PARAMETER_DEFAULT_VALUE = false;
+
+ const EMAIL_TYPE = 'email';
+
+ static private $availableParameters = array(
+ self::EMAIL_ME_PARAMETER => false,
+ self::EVOLUTION_GRAPH_PARAMETER => false,
+ self::ADDITIONAL_EMAILS_PARAMETER => false,
+ self::DISPLAY_FORMAT_PARAMETER => true,
+ );
+
+ static private $managedReportTypes = array(
+ self::EMAIL_TYPE => 'themes/default/images/email.png'
+ );
+
+ static private $managedReportFormats = array(
+ Piwik_ReportRenderer::HTML_FORMAT => 'themes/default/images/html_icon.png',
+ Piwik_ReportRenderer::PDF_FORMAT => 'plugins/UserSettings/images/plugins/pdf.gif'
+ );
+
+ public function getInformation()
+ {
+ return array(
+ 'name' => 'Email Reports Plugin',
+ 'description' => Piwik_Translate('PDFReports_PluginDescriptionReports'),
+ 'author' => 'Piwik',
+ 'author_homepage' => 'http://piwik.org/',
+ 'version' => Piwik_Version::VERSION,
+ );
+ }
+
+ public function getListHooksRegistered()
+ {
+ return array(
+ 'TopMenu.add' => 'addTopMenu',
+ 'TaskScheduler.getScheduledTasks' => 'getScheduledTasks',
+ 'AssetManager.getJsFiles' => 'getJsFiles',
+ 'PDFReports.getReportParameters' => 'getReportParameters',
+ 'PDFReports.validateReportParameters' => 'validateReportParameters',
+ 'PDFReports.getReportMetadata' => 'getReportMetadata',
+ 'PDFReports.getReportTypes' => 'getReportTypes',
+ 'PDFReports.getReportFormats' => 'getReportFormats',
+ 'PDFReports.getRendererInstance' => 'getRendererInstance',
+ 'PDFReports.getReportRecipients' => 'getReportRecipients',
+ 'PDFReports.processReports' => 'processReports',
+ 'PDFReports.allowMultipleReports' => 'allowMultipleReports',
+ 'PDFReports.sendReport' => 'sendReport',
+ 'template_reportParametersPDFReports' => 'template_reportParametersPDFReports',
+ 'UsersManager.deleteUser' => 'deleteUserReport',
+ 'SitesManager.deleteSite' => 'deleteSiteReport',
+ );
+ }
+
+ /**
+ * Delete reports for the website
+ *
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function deleteSiteReport($notification)
+ {
+ $idSite = & $notification->getNotificationObject();
+
+ $idReports = Piwik_PDFReports_API::getInstance()->getReports($idSite);
+
+ foreach ($idReports as $report) {
+ $idReport = $report['idreport'];
+ Piwik_PDFReports_API::getInstance()->deleteReport($idReport);
+ }
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function getJsFiles($notification)
+ {
+ $jsFiles = & $notification->getNotificationObject();
+ $jsFiles[] = "plugins/PDFReports/templates/pdf.js";
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function validateReportParameters($notification)
+ {
+ if (self::manageEvent($notification)) {
+ $parameters = & $notification->getNotificationObject();
+
+ $reportFormat = $parameters[self::DISPLAY_FORMAT_PARAMETER];
+ $availableDisplayFormats = array_keys(self::getDisplayFormats());
+ if (!in_array($reportFormat, $availableDisplayFormats)) {
+ throw new Exception(
+ Piwik_TranslateException(
+ // General_ExceptionInvalidAggregateReportsFormat should be named General_ExceptionInvalidDisplayFormat
+ 'General_ExceptionInvalidAggregateReportsFormat',
+ array($reportFormat, implode(', ', $availableDisplayFormats))
+ )
+ );
+ }
+
+ // emailMe is an optional parameter
+ if (!isset($parameters[self::EMAIL_ME_PARAMETER])) {
+ $parameters[self::EMAIL_ME_PARAMETER] = self::EMAIL_ME_PARAMETER_DEFAULT_VALUE;
+ } else {
+ $parameters[self::EMAIL_ME_PARAMETER] = self::valueIsTrue($parameters[self::EMAIL_ME_PARAMETER]);
+ }
+
+ // evolutionGraph is an optional parameter
+ if (!isset($parameters[self::EVOLUTION_GRAPH_PARAMETER])) {
+ $parameters[self::EVOLUTION_GRAPH_PARAMETER] = self::EVOLUTION_GRAPH_PARAMETER_DEFAULT_VALUE;
+ } else {
+ $parameters[self::EVOLUTION_GRAPH_PARAMETER] = self::valueIsTrue($parameters[self::EVOLUTION_GRAPH_PARAMETER]);
+ }
+
+ // additionalEmails is an optional parameter
+ if (isset($parameters[self::ADDITIONAL_EMAILS_PARAMETER])) {
+ $parameters[self::ADDITIONAL_EMAILS_PARAMETER] = self::checkAdditionalEmails($parameters[self::ADDITIONAL_EMAILS_PARAMETER]);
+ }
+ }
+ }
+
+ // based on http://www.php.net/manual/en/filter.filters.validate.php -> FILTER_VALIDATE_BOOLEAN
+ static private function valueIsTrue($value)
+ {
+ return $value == 'true' || $value == 1 || $value == '1' || $value === true;
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function getReportMetadata($notification)
+ {
+ if (self::manageEvent($notification)) {
+ $reportMetadata = & $notification->getNotificationObject();
+
+ $notificationInfo = $notification->getNotificationInfo();
+ $idSite = $notificationInfo[Piwik_PDFReports_API::ID_SITE_INFO_KEY];
+
+ $availableReportMetadata = Piwik_API_API::getInstance()->getReportMetadata($idSite);
+
+ $filteredReportMetadata = array();
+ foreach ($availableReportMetadata as $reportMetadata) {
+ // removing reports from the API category and MultiSites.getOne
+ if (
+ $reportMetadata['category'] == 'API' ||
+ $reportMetadata['category'] == Piwik_Translate('General_MultiSitesSummary') && $reportMetadata['name'] == Piwik_Translate('General_SingleWebsitesDashboard')
+ ) continue;
+
+ $filteredReportMetadata[] = $reportMetadata;
+ }
+
+ $reportMetadata = $filteredReportMetadata;
+ }
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function getReportTypes($notification)
+ {
+ $reportTypes = & $notification->getNotificationObject();
+ $reportTypes = array_merge($reportTypes, self::$managedReportTypes);
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function getReportFormats($notification)
+ {
+ if (self::manageEvent($notification)) {
+ $reportFormats = & $notification->getNotificationObject();
+ $reportFormats = self::$managedReportFormats;
+ }
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function getReportParameters($notification)
+ {
+ if (self::manageEvent($notification)) {
+ $availableParameters = & $notification->getNotificationObject();
+ $availableParameters = self::$availableParameters;
+ }
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function processReports($notification)
+ {
+ if (self::manageEvent($notification)) {
+ $processedReports = & $notification->getNotificationObject();
+
+ $notificationInfo = $notification->getNotificationInfo();
+ $report = $notificationInfo[Piwik_PDFReports_API::REPORT_KEY];
+
+ $displayFormat = $report['parameters'][self::DISPLAY_FORMAT_PARAMETER];
+ $evolutionGraph = $report['parameters'][self::EVOLUTION_GRAPH_PARAMETER];
+
+ foreach ($processedReports as &$processedReport) {
+ $metadata = $processedReport['metadata'];
+
+ $isAggregateReport = !empty($metadata['dimension']);
+
+ $processedReport['displayTable'] = $displayFormat != self::DISPLAY_FORMAT_GRAPHS_ONLY;
+
+ $processedReport['displayGraph'] =
+ ($isAggregateReport ?
+ $displayFormat == self::DISPLAY_FORMAT_GRAPHS_ONLY || $displayFormat == self::DISPLAY_FORMAT_TABLES_AND_GRAPHS
+ :
+ $displayFormat != self::DISPLAY_FORMAT_TABLES_ONLY)
+ && Piwik::isGdExtensionEnabled()
+ && Piwik_PluginsManager::getInstance()->isPluginActivated('ImageGraph')
+ && !empty($metadata['imageGraphUrl']);
+
+ $processedReport['evolutionGraph'] = $evolutionGraph;
+
+ // remove evolution metrics from MultiSites.getAll
+ if ($metadata['module'] == 'MultiSites') {
+ $columns = $processedReport['columns'];
+
+ foreach (Piwik_MultiSites_API::getApiMetrics($enhanced = true) as $metricSettings) {
+ unset($columns[$metricSettings[Piwik_MultiSites_API::METRIC_EVOLUTION_COL_NAME_KEY]]);
+ }
+
+ $processedReport['metadata'] = $metadata;
+ $processedReport['columns'] = $columns;
+ }
+ }
+ }
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function getRendererInstance($notification)
+ {
+ if (self::manageEvent($notification)) {
+ $reportRenderer = & $notification->getNotificationObject();
+ $notificationInfo = $notification->getNotificationInfo();
+
+ $reportFormat = $notificationInfo[Piwik_PDFReports_API::REPORT_KEY]['format'];
+ $outputType = $notificationInfo[Piwik_PDFReports_API::OUTPUT_TYPE_INFO_KEY];
+
+ $reportRenderer = Piwik_ReportRenderer::factory($reportFormat);
+
+ if ($reportFormat == Piwik_ReportRenderer::HTML_FORMAT) {
+ $reportRenderer->setRenderImageInline($outputType != Piwik_PDFReports_API::OUTPUT_SAVE_ON_DISK);
+ }
+ }
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function allowMultipleReports($notification)
+ {
+ if (self::manageEvent($notification)) {
+ $allowMultipleReports = & $notification->getNotificationObject();
+ $allowMultipleReports = true;
+ }
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function sendReport($notification)
+ {
+ if (self::manageEvent($notification)) {
+ $notificationInfo = $notification->getNotificationInfo();
+ $report = $notificationInfo[Piwik_PDFReports_API::REPORT_KEY];
+ $websiteName = $notificationInfo[Piwik_PDFReports_API::WEBSITE_NAME_KEY];
+ $prettyDate = $notificationInfo[Piwik_PDFReports_API::PRETTY_DATE_KEY];
+ $contents = $notificationInfo[Piwik_PDFReports_API::REPORT_CONTENT_KEY];
+ $filename = $notificationInfo[Piwik_PDFReports_API::FILENAME_KEY];
+ $additionalFiles = $notificationInfo[Piwik_PDFReports_API::ADDITIONAL_FILES_KEY];
+
+ $periods = self::getPeriodToFrequency();
+ $message = Piwik_Translate('PDFReports_EmailHello');
+ $subject = Piwik_Translate('General_Report') . ' ' . $websiteName . " - " . $prettyDate;
+
+ $mail = new Piwik_Mail();
+ $mail->setSubject($subject);
+ $fromEmailName = Piwik_Config::getInstance()->branding['use_custom_logo']
+ ? Piwik_Translate('CoreHome_WebAnalyticsReports')
+ : Piwik_Translate('PDFReports_PiwikReports');
+ $fromEmailAddress = Piwik_Config::getInstance()->General['noreply_email_address'];
+ $attachmentName = $subject;
+ $mail->setFrom($fromEmailAddress, $fromEmailName);
+
+ switch ($report['format']) {
+ case 'html':
+
+ // Needed when using images as attachment with cid
+ $mail->setType(Zend_Mime::MULTIPART_RELATED);
+ $message .= "<br/>" . Piwik_Translate('PDFReports_PleaseFindBelow', array($periods[$report['period']], $websiteName));
+ $mail->setBodyHtml($message . "<br/><br/>" . $contents);
+ break;
+
+ default:
+ case 'pdf':
+ $message .= "\n" . Piwik_Translate('PDFReports_PleaseFindAttachedFile', array($periods[$report['period']], $websiteName));
+ $mail->setBodyText($message);
+ $mail->createAttachment(
+ $contents,
+ 'application/pdf',
+ Zend_Mime::DISPOSITION_INLINE,
+ Zend_Mime::ENCODING_BASE64,
+ $attachmentName . '.pdf'
+ );
+ break;
+ }
+
+ foreach ($additionalFiles as $additionalFile) {
+ $fileContent = $additionalFile['content'];
+ $at = $mail->createAttachment(
+ $fileContent,
+ $additionalFile['mimeType'],
+ Zend_Mime::DISPOSITION_INLINE,
+ $additionalFile['encoding'],
+ $additionalFile['filename']
+ );
+ $at->id = $additionalFile['cid'];
+
+ unset($fileContent);
+ }
+
+ // Get user emails and languages
+ $reportParameters = $report['parameters'];
+ $emails = array();
+
+ if (isset($reportParameters[self::ADDITIONAL_EMAILS_PARAMETER])) {
+ $emails = $reportParameters[self::ADDITIONAL_EMAILS_PARAMETER];
+ }
+
+ if ($reportParameters[self::EMAIL_ME_PARAMETER] == 1) {
+ if (Piwik::getCurrentUserLogin() == $report['login']) {
+ $emails[] = Piwik::getCurrentUserEmail();
+ } elseif ($report['login'] == Piwik_Config::getInstance()->superuser['login']) {
+ $emails[] = Piwik::getSuperUserEmail();
+ } else {
+ try {
+ $user = Piwik_UsersManager_API::getInstance()->getUser($report['login']);
+ } catch (Exception $e) {
+ return;
+ }
+ $emails[] = $user['email'];
+ }
+ }
+
+ foreach ($emails as $email) {
+ if (empty($email)) {
+ continue;
+ }
+ $mail->addTo($email);
+
+ try {
+ $mail->send();
+ } catch (Exception $e) {
+
+ // If running from piwik.php with debug, we ignore the 'email not sent' error
+ if (!isset($GLOBALS['PIWIK_TRACKER_DEBUG']) || !$GLOBALS['PIWIK_TRACKER_DEBUG']) {
+ throw new Exception("An error occured while sending '$filename' " .
+ " to " . implode(', ', $mail->getRecipients()) .
+ ". Error was '" . $e->getMessage() . "'");
+ }
+ }
+ $mail->clearRecipients();
+ }
+ }
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function getReportRecipients($notification)
+ {
+ if (self::manageEvent($notification)) {
+ $recipients = & $notification->getNotificationObject();
+ $notificationInfo = $notification->getNotificationInfo();
+
+ $report = $notificationInfo[Piwik_PDFReports_API::REPORT_KEY];
+ $parameters = $report['parameters'];
+ $eMailMe = $parameters[self::EMAIL_ME_PARAMETER];
+
+ if ($eMailMe) {
+ $recipients[] = Piwik::getCurrentUserEmail();
+ }
+
+ if (isset($parameters[self::ADDITIONAL_EMAILS_PARAMETER])) {
+ $additionalEMails = $parameters[self::ADDITIONAL_EMAILS_PARAMETER];
+ $recipients = array_merge($recipients, $additionalEMails);
+ }
+ $recipients = array_filter($recipients);
+ }
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ static public function template_reportParametersPDFReports($notification)
+ {
+ $out =& $notification->getNotificationObject();
+
+ $view = Piwik_View::factory('report_parameters');
+ $view->currentUserEmail = Piwik::getCurrentUserEmail();
+ $view->displayFormats = self::getDisplayFormats();
+ $view->reportType = self::EMAIL_TYPE;
+ $view->defaultDisplayFormat = self::DEFAULT_DISPLAY_FORMAT;
+ $view->defaultEmailMe = self::EMAIL_ME_PARAMETER_DEFAULT_VALUE ? 'true' : 'false';
+ $view->defaultEvolutionGraph = self::EVOLUTION_GRAPH_PARAMETER_DEFAULT_VALUE ? 'true' : 'false';
+ $out .= $view->render();
+ }
+
+ private static function manageEvent($notification)
+ {
+ $notificationInfo = $notification->getNotificationInfo();
+ return in_array(
+ $notificationInfo[Piwik_PDFReports_API::REPORT_TYPE_INFO_KEY],
+ array_keys(self::$managedReportTypes)
+ );
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function getScheduledTasks($notification)
+ {
+ $arbitraryDateInUTC = Piwik_Date::factory('2011-01-01');
+ $tasks = & $notification->getNotificationObject();
+ foreach (Piwik_PDFReports_API::getInstance()->getReports() as $report) {
+ if (!$report['deleted'] && $report['period'] != Piwik_ScheduledTime::PERIOD_NEVER) {
+ $midnightInSiteTimezone =
+ date(
+ 'H',
+ Piwik_Date::factory(
+ $arbitraryDateInUTC,
+ Piwik_Site::getTimezoneFor($report['idsite'])
+ )->getTimestamp()
+ );
+
+ $hourInUTC = (24 - $midnightInSiteTimezone + $report['hour']) % 24;
+
+ $schedule = Piwik_ScheduledTime::getScheduledTimeForPeriod($report['period']);
+ $schedule->setHour($hourInUTC);
+ $tasks[] = new Piwik_ScheduledTask (
+ Piwik_PDFReports_API::getInstance(),
+ 'sendReport',
+ $report['idreport'], $schedule
+ );
+ }
+ }
+ }
function addTopMenu()
{
- Piwik_AddTopMenu(
- $this->getTopMenuTranslationKey(),
- array('module' => 'PDFReports', 'action' => 'index'),
- true,
- 13,
- $isHTML = false,
- $tooltip = Piwik_Translate(
- Piwik_PluginsManager::getInstance()->isPluginActivated('MobileMessaging')
- ? 'MobileMessaging_TopLinkTooltip' : 'PDFReports_TopLinkTooltip'
- )
- );
+ Piwik_AddTopMenu(
+ $this->getTopMenuTranslationKey(),
+ array('module' => 'PDFReports', 'action' => 'index'),
+ true,
+ 13,
+ $isHTML = false,
+ $tooltip = Piwik_Translate(
+ Piwik_PluginsManager::getInstance()->isPluginActivated('MobileMessaging')
+ ? 'MobileMessaging_TopLinkTooltip' : 'PDFReports_TopLinkTooltip'
+ )
+ );
}
- function getTopMenuTranslationKey()
- {
- // if MobileMessaging is not activated, display 'Email reports'
- if(!Piwik_PluginsManager::getInstance()->isPluginActivated('MobileMessaging'))
- return self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY;
-
- if(Piwik::isUserIsAnonymous())
- {
- return self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY;
- }
-
- $reports = Piwik_PDFReports_API::getInstance()->getReports();
- $reportCount = count($reports);
-
- // if there are no reports and the mobile account is
- // not configured, display 'Email reports'
- // configured, display 'Email & SMS reports'
- if($reportCount == 0)
- return Piwik_MobileMessaging_API::getInstance()->areSMSAPICredentialProvided() ?
- self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY : self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY;
-
- $anyMobileReport = false;
- foreach($reports as $report)
- {
- if($report['type'] == Piwik_MobileMessaging::MOBILE_TYPE)
- {
- $anyMobileReport = true;
- break;
- }
- }
-
- // if there is at least one sms report, display 'Email & SMS reports'
- if($anyMobileReport)
- {
- return self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY;
- }
-
- return self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY;
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
+ function getTopMenuTranslationKey()
+ {
+ // if MobileMessaging is not activated, display 'Email reports'
+ if (!Piwik_PluginsManager::getInstance()->isPluginActivated('MobileMessaging'))
+ return self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY;
+
+ if (Piwik::isUserIsAnonymous()) {
+ return self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY;
+ }
+
+ $reports = Piwik_PDFReports_API::getInstance()->getReports();
+ $reportCount = count($reports);
+
+ // if there are no reports and the mobile account is
+ // not configured, display 'Email reports'
+ // configured, display 'Email & SMS reports'
+ if ($reportCount == 0)
+ return Piwik_MobileMessaging_API::getInstance()->areSMSAPICredentialProvided() ?
+ self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY : self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY;
+
+ $anyMobileReport = false;
+ foreach ($reports as $report) {
+ if ($report['type'] == Piwik_MobileMessaging::MOBILE_TYPE) {
+ $anyMobileReport = true;
+ break;
+ }
+ }
+
+ // if there is at least one sms report, display 'Email & SMS reports'
+ if ($anyMobileReport) {
+ return self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY;
+ }
+
+ return self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY;
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
function deleteUserReport($notification)
- {
- $userLogin = $notification->getNotificationObject();
- Piwik_Query('DELETE FROM ' . Piwik_Common::prefixTable('report') . ' WHERE login = ?', $userLogin);
+ {
+ $userLogin = $notification->getNotificationObject();
+ Piwik_Query('DELETE FROM ' . Piwik_Common::prefixTable('report') . ' WHERE login = ?', $userLogin);
}
-
+
function install()
- {
- $queries[] = '
- CREATE TABLE `'.Piwik_Common::prefixTable('report').'` (
+ {
+ $queries[] = '
+ CREATE TABLE `' . Piwik_Common::prefixTable('report') . '` (
`idreport` INT(11) NOT NULL AUTO_INCREMENT,
`idsite` INTEGER(11) NOT NULL,
`login` VARCHAR(100) NOT NULL,
@@ -608,61 +567,54 @@ class Piwik_PDFReports extends Piwik_Plugin
PRIMARY KEY (`idreport`)
) DEFAULT CHARSET=utf8';
try {
- foreach($queries as $query)
- {
- Piwik_Exec($query);
- }
- }
- catch(Exception $e) {
- if(!Zend_Registry::get('db')->isErrNo($e, '1050'))
- {
- throw $e;
- }
- }
- }
-
- private static function checkAdditionalEmails($additionalEmails)
- {
- foreach($additionalEmails as &$email)
- {
- $email = trim($email);
- if(empty($email))
- {
- $email = false;
- }
- elseif(!Piwik::isValidEmailString($email))
- {
- throw new Exception(Piwik_TranslateException('UsersManager_ExceptionInvalidEmail') . ' ('.$email.')');
- }
- }
- $additionalEmails = array_filter($additionalEmails);
- return $additionalEmails;
- }
-
- private static function getDisplayFormats()
- {
- $displayFormats = array(
- // PDFReports_AggregateReportsFormat_TablesOnly should be named PDFReports_DisplayFormat_GraphsOnlyForKeyMetrics
- self::DISPLAY_FORMAT_GRAPHS_ONLY_FOR_KEY_METRICS => Piwik_Translate('PDFReports_AggregateReportsFormat_TablesOnly'),
- // PDFReports_AggregateReportsFormat_GraphsOnly should be named PDFReports_DisplayFormat_GraphsOnly
- self::DISPLAY_FORMAT_GRAPHS_ONLY => Piwik_Translate('PDFReports_AggregateReportsFormat_GraphsOnly'),
- // PDFReports_AggregateReportsFormat_TablesAndGraphs should be named PDFReports_DisplayFormat_TablesAndGraphs
- self::DISPLAY_FORMAT_TABLES_AND_GRAPHS => Piwik_Translate('PDFReports_AggregateReportsFormat_TablesAndGraphs'),
- self::DISPLAY_FORMAT_TABLES_ONLY => Piwik_Translate('PDFReports_DisplayFormat_TablesOnly'),
- );
- return $displayFormats;
- }
-
- /**
- * @ignore
- */
- static public function getPeriodToFrequency()
- {
- return array(
- Piwik_ScheduledTime::PERIOD_NEVER => Piwik_Translate('General_Never'),
- Piwik_ScheduledTime::PERIOD_DAY => Piwik_Translate('General_Daily'),
- Piwik_ScheduledTime::PERIOD_WEEK => Piwik_Translate('General_Weekly'),
- Piwik_ScheduledTime::PERIOD_MONTH => Piwik_Translate('General_Monthly'),
- );
- }
+ foreach ($queries as $query) {
+ Piwik_Exec($query);
+ }
+ } catch (Exception $e) {
+ if (!Zend_Registry::get('db')->isErrNo($e, '1050')) {
+ throw $e;
+ }
+ }
+ }
+
+ private static function checkAdditionalEmails($additionalEmails)
+ {
+ foreach ($additionalEmails as &$email) {
+ $email = trim($email);
+ if (empty($email)) {
+ $email = false;
+ } elseif (!Piwik::isValidEmailString($email)) {
+ throw new Exception(Piwik_TranslateException('UsersManager_ExceptionInvalidEmail') . ' (' . $email . ')');
+ }
+ }
+ $additionalEmails = array_filter($additionalEmails);
+ return $additionalEmails;
+ }
+
+ private static function getDisplayFormats()
+ {
+ $displayFormats = array(
+ // PDFReports_AggregateReportsFormat_TablesOnly should be named PDFReports_DisplayFormat_GraphsOnlyForKeyMetrics
+ self::DISPLAY_FORMAT_GRAPHS_ONLY_FOR_KEY_METRICS => Piwik_Translate('PDFReports_AggregateReportsFormat_TablesOnly'),
+ // PDFReports_AggregateReportsFormat_GraphsOnly should be named PDFReports_DisplayFormat_GraphsOnly
+ self::DISPLAY_FORMAT_GRAPHS_ONLY => Piwik_Translate('PDFReports_AggregateReportsFormat_GraphsOnly'),
+ // PDFReports_AggregateReportsFormat_TablesAndGraphs should be named PDFReports_DisplayFormat_TablesAndGraphs
+ self::DISPLAY_FORMAT_TABLES_AND_GRAPHS => Piwik_Translate('PDFReports_AggregateReportsFormat_TablesAndGraphs'),
+ self::DISPLAY_FORMAT_TABLES_ONLY => Piwik_Translate('PDFReports_DisplayFormat_TablesOnly'),
+ );
+ return $displayFormats;
+ }
+
+ /**
+ * @ignore
+ */
+ static public function getPeriodToFrequency()
+ {
+ return array(
+ Piwik_ScheduledTime::PERIOD_NEVER => Piwik_Translate('General_Never'),
+ Piwik_ScheduledTime::PERIOD_DAY => Piwik_Translate('General_Daily'),
+ Piwik_ScheduledTime::PERIOD_WEEK => Piwik_Translate('General_Weekly'),
+ Piwik_ScheduledTime::PERIOD_MONTH => Piwik_Translate('General_Monthly'),
+ );
+ }
}