diff --git a/plugins/ScheduledReports/API.php b/plugins/ScheduledReports/API.php index f77fa4b2237265f523d9d49ba322a4379b288929..d5a985e65b4322977e937446232bc770e2c11633 100644 --- a/plugins/ScheduledReports/API.php +++ b/plugins/ScheduledReports/API.php @@ -26,6 +26,9 @@ use Piwik\Site; use Piwik\Tracker; use Piwik\Translate; use Piwik\Translation\Translator; +use Piwik\Url; +use Piwik\UrlHelper; +use Psr\Log\LoggerInterface; /** * The ScheduledReports API lets you manage Scheduled Email reports, as well as generate, download or email any existing report. @@ -60,6 +63,16 @@ class API extends \Piwik\Plugin\API // static cache storing reports public static $cache = array(); + /** + * @var LoggerInterface + */ + private $logger; + + public function __construct(LoggerInterface $logger) + { + $this->logger = $logger; + } + /** * Creates a new report and schedules it. * @@ -377,7 +390,20 @@ class API extends \Piwik\Plugin\API $params['segment'] = false; } - $processedReport = Request::processRequest('API.getProcessedReport', $params); + try { + $processedReport = Request::processRequest('API.getProcessedReport', $params); + } catch (\Exception $ex) { + // NOTE: can't use warning or error because the log message will appear in the UI as a notification + $this->logger->info("Error getting '?{report}' when generating scheduled report: {exception}", array( + 'report' => http_build_query($params), + 'exception' => $ex->getMessage(), + )); + + $this->logger->debug($ex); + + continue; + } + $processedReport['segment'] = $segment; // TODO add static method getPrettyDate($period, $date) in Period