From e526e76314e3ad666d4e8a1e4abb8910dfa1b666 Mon Sep 17 00:00:00 2001
From: Sven Strickroth <email@cs-ware.de>
Date: Fri, 13 Nov 2020 15:57:12 +0100
Subject: [PATCH] Use correct year for generated birthdays events

'X-APPLE-OMIT-YEAR' is not always present, at least iOS 12.4 uses the hard coded date of 1604 (the start of the gregorian calendar) when the year is unknown.

cf. https://forums.bitfire.at/topic/2050/bday-without-year-for-vcard-3-0-if-server-drops-property-x-apple-omit-year and https://gitlab.com/CardBook/CardBook/-/issues/586

Signed-off-by: Sven Strickroth <email@cs-ware.de>
---
 apps/dav/lib/CalDAV/BirthdayService.php | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/apps/dav/lib/CalDAV/BirthdayService.php b/apps/dav/lib/CalDAV/BirthdayService.php
index 39e8d6c3940..325962dd738 100644
--- a/apps/dav/lib/CalDAV/BirthdayService.php
+++ b/apps/dav/lib/CalDAV/BirthdayService.php
@@ -235,7 +235,12 @@ class BirthdayService {
 				}
 			} else {
 				$originalYear = (int)$dateParts['year'];
-
+				// 'X-APPLE-OMIT-YEAR' is not always present, at least iOS 12.4 uses the hard coded date of 1604 (the start of the gregorian calendar) when the year is unknown
+				if ($originalYear == 1604) {
+					$originalYear = null;
+					$unknownYear = true;
+					$birthday = '1970-' . $dateParts['month'] . '-' . $dateParts['date'];
+				}
 				if ($originalYear < 1970) {
 					$birthday = '1970-' . $dateParts['month'] . '-' . $dateParts['date'];
 				}
-- 
GitLab