@@ -80,13 +80,14 @@ protected function setUp(): void {
80
80
* @dataProvider providesVCards
81
81
* @param string $expectedSummary
82
82
* @param string $expectedDTStart
83
+ * @param string $expectedRrule
83
84
* @param string $expectedFieldType
84
85
* @param string $expectedUnknownYear
85
86
* @param string $expectedOriginalYear
86
87
* @param string|null $expectedReminder
87
88
* @param string | null $data
88
89
*/
89
- public function testBuildBirthdayFromContact ($ expectedSummary , $ expectedDTStart , $ expectedFieldType , $ expectedUnknownYear , $ expectedOriginalYear , $ expectedReminder , $ data , $ fieldType , $ prefix , $ supports4Bytes , $ configuredReminder ) {
90
+ public function testBuildBirthdayFromContact ($ expectedSummary , $ expectedDTStart , $ expectedRrule , $ expectedFieldType , $ expectedUnknownYear , $ expectedOriginalYear , $ expectedReminder , $ data , $ fieldType , $ prefix , $ supports4Bytes , $ configuredReminder ) {
90
91
$ this ->dbConnection ->method ('supports4ByteText ' )->willReturn ($ supports4Bytes );
91
92
$ cal = $ this ->service ->buildDateFromContact ($ data , $ fieldType , $ prefix , $ configuredReminder );
92
93
@@ -96,7 +97,7 @@ public function testBuildBirthdayFromContact($expectedSummary, $expectedDTStart,
96
97
$ this ->assertInstanceOf ('Sabre\VObject\Component\VCalendar ' , $ cal );
97
98
$ this ->assertEquals ('-//IDN nextcloud.com//Birthday calendar//EN ' , $ cal ->PRODID ->getValue ());
98
99
$ this ->assertTrue (isset ($ cal ->VEVENT ));
99
- $ this ->assertEquals (' FREQ=YEARLY ' , $ cal ->VEVENT ->RRULE ->getValue ());
100
+ $ this ->assertEquals ($ expectedRrule , $ cal ->VEVENT ->RRULE ->getValue ());
100
101
$ this ->assertEquals ($ expectedSummary , $ cal ->VEVENT ->SUMMARY ->getValue ());
101
102
$ this ->assertEquals ($ expectedDTStart , $ cal ->VEVENT ->DTSTART ->getValue ());
102
103
$ this ->assertEquals ($ expectedFieldType , $ cal ->VEVENT ->{'X-NEXTCLOUD-BC-FIELD-TYPE ' }->getValue ());
@@ -412,32 +413,33 @@ public function providesCardChanges() {
412
413
413
414
public function providesVCards () {
414
415
return [
415
- // $expectedSummary, $expectedDTStart, $expectedFieldType, $expectedUnknownYear, $expectedOriginalYear, $expectedReminder, $data, $fieldType, $prefix, $supports4Byte, $configuredReminder
416
- [null , null , null , null , null , null , 'yasfewf ' , '' , '' , true , null ],
417
- [null , null , null , null , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
418
- [null , null , null , null , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY: \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
419
- [null , null , null , null , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:someday \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
420
- ['🎂 12345 (1900) ' , '19700101 ' , 'BDAY ' , '0 ' , '1900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:19000101 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
421
- ['🎂 12345 (1900) ' , '19701231 ' , 'BDAY ' , '0 ' , '1900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:19001231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
422
- ['Death of 12345 (1900) ' , '19701231 ' , 'DEATHDATE ' , '0 ' , '1900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nDEATHDATE:19001231 \r\nEND:VCARD \r\n" , 'DEATHDATE ' , '-death ' , true , null ],
423
- ['Death of 12345 (1900) ' , '19701231 ' , 'DEATHDATE ' , '0 ' , '1900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nDEATHDATE:19001231 \r\nEND:VCARD \r\n" , 'DEATHDATE ' , '-death ' , false , null ],
424
- ['💍 12345 (1900) ' , '19701231 ' , 'ANNIVERSARY ' , '0 ' , '1900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nANNIVERSARY:19001231 \r\nEND:VCARD \r\n" , 'ANNIVERSARY ' , '-anniversary ' , true , null ],
425
- ['12345 (⚭1900) ' , '19701231 ' , 'ANNIVERSARY ' , '0 ' , '1900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nANNIVERSARY:19001231 \r\nEND:VCARD \r\n" , 'ANNIVERSARY ' , '-anniversary ' , false , null ],
426
- ['🎂 12345 ' , '19701231 ' , 'BDAY ' , '1 ' , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:--1231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
427
- ['🎂 12345 ' , '19701231 ' , 'BDAY ' , '1 ' , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY;X-APPLE-OMIT-YEAR=1604:16041231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
428
- [null , null , null , null , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:;VALUE=text:circa 1800 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
429
- [null , null , null , null , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nN:12345;;;; \r\nBDAY:20031231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
430
- ['🎂 12345 (900) ' , '19701231 ' , 'BDAY ' , '0 ' , '900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:09001231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
431
- ['12345 (*1900) ' , '19700101 ' , 'BDAY ' , '0 ' , '1900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:19000101 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , null ],
432
- ['12345 (*1900) ' , '19701231 ' , 'BDAY ' , '0 ' , '1900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:19001231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , null ],
433
- ['12345 * ' , '19701231 ' , 'BDAY ' , '1 ' , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:--1231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , null ],
434
- ['12345 * ' , '19701231 ' , 'BDAY ' , '1 ' , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY;X-APPLE-OMIT-YEAR=1604:16041231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , null ],
435
- [null , null , null , null , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:;VALUE=text:circa 1800 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , null ],
436
- [null , null , null , null , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nN:12345;;;; \r\nBDAY:20031231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , null ],
437
- ['12345 (*900) ' , '19701231 ' , 'BDAY ' , '0 ' , '900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:09001231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , null ],
438
- ['12345 (*1900) ' , '19701231 ' , 'BDAY ' , '0 ' , '1900 ' , 'PT9H ' , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:19001231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , 'PT9H ' ],
439
- ['12345 (*1900) ' , '19701231 ' , 'BDAY ' , '0 ' , '1900 ' , '-PT15H ' , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:19001231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , '-PT15H ' ],
440
- ['12345 (*1900) ' , '19701231 ' , 'BDAY ' , '0 ' , '1900 ' , '-P6DT15H ' , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:19001231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , '-P6DT15H ' ],
416
+ // $expectedSummary, $expectedDTStart, $expectedRrule, $expectedFieldType, $expectedUnknownYear, $expectedOriginalYear, $expectedReminder, $data, $fieldType, $prefix, $supports4Byte, $configuredReminder
417
+ [null , null , null , null , null , null , null , 'yasfewf ' , '' , '' , true , null ],
418
+ [null , null , null , null , null , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
419
+ [null , null , null , null , null , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY: \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
420
+ [null , null , null , null , null , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:someday \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
421
+ ['🎂 12345 (1900) ' , '19700101 ' , 'FREQ=YEARLY ' , 'BDAY ' , '0 ' , '1900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:19000101 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
422
+ ['🎂 12345 (1900) ' , '19701231 ' , 'FREQ=YEARLY ' , 'BDAY ' , '0 ' , '1900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:19001231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
423
+ ['Death of 12345 (1900) ' , '19701231 ' , 'FREQ=YEARLY ' , 'DEATHDATE ' , '0 ' , '1900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nDEATHDATE:19001231 \r\nEND:VCARD \r\n" , 'DEATHDATE ' , '-death ' , true , null ],
424
+ ['Death of 12345 (1900) ' , '19701231 ' , 'FREQ=YEARLY ' , 'DEATHDATE ' , '0 ' , '1900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nDEATHDATE:19001231 \r\nEND:VCARD \r\n" , 'DEATHDATE ' , '-death ' , false , null ],
425
+ ['💍 12345 (1900) ' , '19701231 ' , 'FREQ=YEARLY ' , 'ANNIVERSARY ' , '0 ' , '1900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nANNIVERSARY:19001231 \r\nEND:VCARD \r\n" , 'ANNIVERSARY ' , '-anniversary ' , true , null ],
426
+ ['12345 (⚭1900) ' , '19701231 ' , 'FREQ=YEARLY ' , 'ANNIVERSARY ' , '0 ' , '1900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nANNIVERSARY:19001231 \r\nEND:VCARD \r\n" , 'ANNIVERSARY ' , '-anniversary ' , false , null ],
427
+ ['🎂 12345 ' , '19701231 ' , 'FREQ=YEARLY ' , 'BDAY ' , '1 ' , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:--1231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
428
+ ['🎂 12345 ' , '19701231 ' , 'FREQ=YEARLY ' , 'BDAY ' , '1 ' , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY;X-APPLE-OMIT-YEAR=1604:16041231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
429
+ [null , null , null , null , null , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:;VALUE=text:circa 1800 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
430
+ [null , null , null , null , null , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nN:12345;;;; \r\nBDAY:20031231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
431
+ ['🎂 12345 (900) ' , '19701231 ' , 'FREQ=YEARLY ' , 'BDAY ' , '0 ' , '900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:09001231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
432
+ ['12345 (*1900) ' , '19700101 ' , 'FREQ=YEARLY ' , 'BDAY ' , '0 ' , '1900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:19000101 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , null ],
433
+ ['12345 (*1900) ' , '19701231 ' , 'FREQ=YEARLY ' , 'BDAY ' , '0 ' , '1900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:19001231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , null ],
434
+ ['12345 * ' , '19701231 ' , 'FREQ=YEARLY ' , 'BDAY ' , '1 ' , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:--1231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , null ],
435
+ ['12345 * ' , '19701231 ' , 'FREQ=YEARLY ' , 'BDAY ' , '1 ' , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY;X-APPLE-OMIT-YEAR=1604:16041231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , null ],
436
+ [null , null , null , null , null , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:;VALUE=text:circa 1800 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , null ],
437
+ [null , null , null , null , null , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nN:12345;;;; \r\nBDAY:20031231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , null ],
438
+ ['12345 (*900) ' , '19701231 ' , 'FREQ=YEARLY ' , 'BDAY ' , '0 ' , '900 ' , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:09001231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , null ],
439
+ ['12345 (*1900) ' , '19701231 ' , 'FREQ=YEARLY ' , 'BDAY ' , '0 ' , '1900 ' , 'PT9H ' , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:19001231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , 'PT9H ' ],
440
+ ['12345 (*1900) ' , '19701231 ' , 'FREQ=YEARLY ' , 'BDAY ' , '0 ' , '1900 ' , '-PT15H ' , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:19001231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , '-PT15H ' ],
441
+ ['12345 (*1900) ' , '19701231 ' , 'FREQ=YEARLY ' , 'BDAY ' , '0 ' , '1900 ' , '-P6DT15H ' , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:19001231 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , false , '-P6DT15H ' ],
442
+ ['🎂 12345 (1902) ' , '19720229 ' , 'FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=-1 ' , 'BDAY ' , '0 ' , null , null , "BEGIN:VCARD \r\nVERSION:3.0 \r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN \r\nUID:12345 \r\nFN:12345 \r\nN:12345;;;; \r\nBDAY:19020229 \r\nEND:VCARD \r\n" , 'BDAY ' , '' , true , null ],
441
443
];
442
444
}
443
445
}
0 commit comments