diff --git a/core/Updates/2.16.3-b3.php b/core/Updates/2.16.3-b3.php index 4d28615f6f32af39e367589ad6bee56afb3a39c6..a13f7379d006ac1ae4ca8f76da5eee9dec868b07 100644 --- a/core/Updates/2.16.3-b3.php +++ b/core/Updates/2.16.3-b3.php @@ -8,6 +8,7 @@ */ namespace Piwik\Updates; +use Piwik\Date; use Piwik\Plugins\ScheduledReports\API as ScheduledReportsAPI; use Piwik\Plugins\ScheduledReports\Model as ScheduledReportsModel; use Piwik\Site; @@ -33,13 +34,10 @@ class Updates_2_16_3_b3 extends PiwikUpdates protected function adjustTimezoneBySite($hour, $idSite) { - $timezone = Site::getTimezoneFor($idSite); - try { - $dateTimeZone = new \DateTimeZone($timezone); - } catch(\Exception $e) { - return; - } - $timeZoneDifference = -ceil($dateTimeZone->getOffset(new \DateTime()) / 3600); + $timezone = Site::getTimezoneFor($idSite); + $timestampUTC = Date::today()->getTimestampUTC(); + $timestampZone = Date::adjustForTimezone($timestampUTC, $timezone); + $timeZoneDifference = -ceil(($timestampZone - $timestampUTC) / 3600); return (24 + $hour + $timeZoneDifference) % 24; } } diff --git a/plugins/ScheduledReports/Controller.php b/plugins/ScheduledReports/Controller.php index d42b209a910b420be7e06909c481268c23eced71..8bdca90ab7da3abdda78301f0fad71d479023429 100644 --- a/plugins/ScheduledReports/Controller.php +++ b/plugins/ScheduledReports/Controller.php @@ -8,6 +8,7 @@ */ namespace Piwik\Plugins\ScheduledReports; +use Piwik\Date; use Piwik\Piwik; use Piwik\Plugins\LanguagesManager\LanguagesManager; use Piwik\Plugins\SegmentEditor\API as APISegmentEditor; @@ -27,9 +28,11 @@ class Controller extends \Piwik\Plugin\Controller $this->setGeneralVariablesView($view); $siteTimezone = $this->site->getTimezone(); - $dateTimeZone = new \DateTimeZone($siteTimezone); - $view->timeZoneDifference = $dateTimeZone->getOffset(new \DateTime()) / 3600; + $timestampUTC = Date::today()->getTimestampUTC(); + $timestampZone = Date::adjustForTimezone($timestampUTC, $siteTimezone); + + $view->timeZoneDifference = ($timestampZone - $timestampUTC) / 3600; $view->countWebsites = count(APISitesManager::getInstance()->getSitesIdWithAtLeastViewAccess()); // get report types diff --git a/plugins/ScheduledReports/angularjs/manage-scheduled-report/manage-scheduled-report.controller.js b/plugins/ScheduledReports/angularjs/manage-scheduled-report/manage-scheduled-report.controller.js index b0de00ddfef6d18738fd2d40cdb1322661a464a7..afc2932898410129bf0effcd99956376b6738175 100644 --- a/plugins/ScheduledReports/angularjs/manage-scheduled-report/manage-scheduled-report.controller.js +++ b/plugins/ScheduledReports/angularjs/manage-scheduled-report/manage-scheduled-report.controller.js @@ -16,7 +16,11 @@ this.reportHours = []; for (var i = 0; i < 24; i++) { - this.reportHours.push({key: i + '', value: i + ''}); + if ((timeZoneDifference*2) % 2 != 0) { + this.reportHours.push({key: i + '.5', value: i + ':30'}); + } else { + this.reportHours.push({key: i + '', value: i + ''}); + } } function scrollToTop() @@ -39,7 +43,7 @@ } function adjustHourToTimezone(hour, difference) { - return '' + ((24 + parseInt(hour) + difference) % 24); + return '' + ((24 + parseFloat(hour) + difference) % 24); } function updateReportHourUtc (report) {