From 39619d5277863244a489ef80eeb20c55e35cf4f9 Mon Sep 17 00:00:00 2001 From: Thomas Bachmann Date: Wed, 3 Oct 2018 22:03:50 +0200 Subject: [PATCH 1/4] Allow to parse recurring calendar events where the start date is before 1970 Some birthday calendar events have a start date before 1970. --- modules/default/calendar/calendarfetcher.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/default/calendar/calendarfetcher.js b/modules/default/calendar/calendarfetcher.js index 4492462b..bca687db 100644 --- a/modules/default/calendar/calendarfetcher.js +++ b/modules/default/calendar/calendarfetcher.js @@ -173,6 +173,14 @@ var CalendarFetcher = function(url, reloadInterval, excludedEvents, maximumEntri if (typeof event.rrule != "undefined" && !isFacebookBirthday) { var rule = event.rrule; + + // can cause problems with birthdays before 1970 + if(rule.origOptions && rule.origOptions.dtstart && rule.origOptions.dtstart.getFullYear() < 1970 || + rule.options && rule.options.dtstart && rule.options.dtstart.getFullYear() < 1970){ + rule.origOptions.dtstart.setYear(1970); + rule.options.dtstart.setYear(1970); + } + var dates = rule.between(today, future, true, limitFunction); for (var d in dates) { From 3f083862e7c247b3d5c5c3fa9551e312b3ba855d Mon Sep 17 00:00:00 2001 From: Thomas Bachmann Date: Wed, 3 Oct 2018 22:05:51 +0200 Subject: [PATCH 2/4] Allow to parse recurring calendar events where the start date is before 1970 Some birthday calendar events have a start date before 1970. --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc50dfa4..05f75a37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Added ### Fixed +- Allow to parse recurring calendar events where the start date is before 1970 ### Updated From 007b2f0c8864ad12030c840dd796f79d5d68e2e3 Mon Sep 17 00:00:00 2001 From: Thomas Bachmann Date: Wed, 3 Oct 2018 22:43:29 +0200 Subject: [PATCH 3/4] Allow to parse recurring calendar events where the start date is before 1900 Some birthday calendar events have a start date before 1900. --- CHANGELOG.md | 2 +- modules/default/calendar/README.md | 1 - modules/default/calendar/calendarfetcher.js | 10 +++++----- package.json | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05f75a37..46cf3261 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Added ### Fixed -- Allow to parse recurring calendar events where the start date is before 1970 +- Allow to parse recurring calendar events where the start date is before 1900 ### Updated diff --git a/modules/default/calendar/README.md b/modules/default/calendar/README.md index ae516a63..6181400a 100755 --- a/modules/default/calendar/README.md +++ b/modules/default/calendar/README.md @@ -1,7 +1,6 @@ # Module: Calendar The `calendar` module is one of the default modules of the MagicMirror. This module displays events from a public .ical calendar. It can combine multiple calendars. -Note that calendars may not contain any entry before 1st January 1970, otherwise the calendar won't be displayed and the module will crash. ## Using the module diff --git a/modules/default/calendar/calendarfetcher.js b/modules/default/calendar/calendarfetcher.js index bca687db..d9106853 100644 --- a/modules/default/calendar/calendarfetcher.js +++ b/modules/default/calendar/calendarfetcher.js @@ -174,11 +174,11 @@ var CalendarFetcher = function(url, reloadInterval, excludedEvents, maximumEntri if (typeof event.rrule != "undefined" && !isFacebookBirthday) { var rule = event.rrule; - // can cause problems with birthdays before 1970 - if(rule.origOptions && rule.origOptions.dtstart && rule.origOptions.dtstart.getFullYear() < 1970 || - rule.options && rule.options.dtstart && rule.options.dtstart.getFullYear() < 1970){ - rule.origOptions.dtstart.setYear(1970); - rule.options.dtstart.setYear(1970); + // can cause problems with e.g. birthdays before 1900 + if(rule.origOptions && rule.origOptions.dtstart && rule.origOptions.dtstart.getFullYear() < 1900 || + rule.options && rule.options.dtstart && rule.options.dtstart.getFullYear() < 1900){ + rule.origOptions.dtstart.setYear(1900); + rule.options.dtstart.setYear(1900); } var dates = rule.between(today, future, true, limitFunction); diff --git a/package.json b/package.json index 31ebb804..8d94ec2e 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "mocha-logger": "^1.0.5", "moment": "latest", "request": "^2.83.0", - "rrule-alt": "^2.2.7", + "rrule-alt": "^2.2.8", "simple-git": "^1.85.0", "socket.io": "^2.0.4", "valid-url": "latest", From 85931155e6f6245e852674376fea80d454fff5a9 Mon Sep 17 00:00:00 2001 From: Thomas Bachmann Date: Mon, 29 Oct 2018 20:26:54 +0100 Subject: [PATCH 4/4] Fixed eslint issues .. as requested in Pull Request #1424 --- modules/default/calendar/calendarfetcher.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/default/calendar/calendarfetcher.js b/modules/default/calendar/calendarfetcher.js index d9106853..bf417afe 100644 --- a/modules/default/calendar/calendarfetcher.js +++ b/modules/default/calendar/calendarfetcher.js @@ -173,14 +173,14 @@ var CalendarFetcher = function(url, reloadInterval, excludedEvents, maximumEntri if (typeof event.rrule != "undefined" && !isFacebookBirthday) { var rule = event.rrule; - + // can cause problems with e.g. birthdays before 1900 - if(rule.origOptions && rule.origOptions.dtstart && rule.origOptions.dtstart.getFullYear() < 1900 || + if(rule.origOptions && rule.origOptions.dtstart && rule.origOptions.dtstart.getFullYear() < 1900 || rule.options && rule.options.dtstart && rule.options.dtstart.getFullYear() < 1900){ rule.origOptions.dtstart.setYear(1900); rule.options.dtstart.setYear(1900); } - + var dates = rule.between(today, future, true, limitFunction); for (var d in dates) {