first commit

This commit is contained in:
2023-10-21 04:55:29 +02:00
commit 74e1f0054a
59 changed files with 11176 additions and 0 deletions

View File

@@ -0,0 +1,338 @@
BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:Testkalender
X-WR-TIMEZONE:UTC
X-WR-CALDESC:Nur zum testen vom Google Kalender
BEGIN:VFREEBUSY
UID:f06ff6b3564b2f696bf42d393f8dea59
ORGANIZER:MAILTO:jane_smith@host1.com
DTSTAMP:20170316T204607Z
DTSTART:20170213T204607Z
DTEND:20180517T204607Z
URL:https://www.host.com/calendar/busytime/jsmith.ifb
FREEBUSY;FBTYPE=BUSY:20170623T070000Z/20170223T110000Z
FREEBUSY;FBTYPE=BUSY:20170624T131500Z/20170316T151500Z
FREEBUSY;FBTYPE=BUSY:20170715T131500Z/20170416T150000Z
FREEBUSY;FBTYPE=BUSY:20170716T131500Z/20170516T100500Z
END:VFREEBUSY
BEGIN:VEVENT
DTSTART:20171032T000000
DTEND:20171101T2300
DESCRIPTION:Invalid date - parser will skip the event
SUMMARY:Invalid date - parser will skip the event
DTSTAMP:20170406T063924
LOCATION:
UID:f81b0b41a2e138ae0903daee0a966e1e
SEQUENCE:0
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE;TZID=America/Los_Angeles:19410512
DTEND;VALUE=DATE;TZID=America/Los_Angeles:19410512
DTSTAMP;TZID=America/Los_Angeles:19410512T195741Z
UID:dh3fki5du0opa7cs5n5s87ca02@google.com
CREATED:20380101T141901Z
DESCRIPTION;LANGUAGE=en-gb:
LAST-MODIFIED:20380101T141901Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:Before 1970-Test: Konrad Zuse invents the Z3, the "first
digital Computer"
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20380201
DTEND;VALUE=DATE:20380202
DTSTAMP;TZID="GMT Standard Time":20380101T195741Z
UID:dh3fki5du0opa7cs5n5s87ca01@google.com
CREATED:20380101T141901Z
DESCRIPTION;LANGUAGE=en-gb:
LAST-MODIFIED:20380101T141901Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:Year 2038 problem test
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART:20160105T090000Z
DTEND:20160107T173000Z
DTSTAMP;TZID="Greenwich Mean Time:Dublin; Edinburgh; Lisbon; London":20110121T195741Z
UID:15lc1nvupht8dtfiptenljoiv4@google.com
CREATED:20110121T195616Z
DESCRIPTION;LANGUAGE=en-gb:This is a short description\nwith a new line. Some "special" 's
igns' may be interesting\, too.
  And a non-breaking space.
LAST-MODIFIED:20150409T150000Z
LOCATION:Kansas
SEQUENCE:2
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:My Holidays
TRANSP:TRANSPARENT
ORGANIZER;CN="My Name":mailto:my.name@mydomain.com
END:VEVENT
BEGIN:VEVENT
ATTENDEE;CN="Page, Larry <l.page@google.com> (l.page@google.com)";ROLE=REQ-PARTICIPANT;RSVP=FALSE:mailto:l.page@google.com
ATTENDEE;CN="Brin, Sergey <s.brin@google.com> (s.brin@google.com)";ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:s.brin@google.com
DTSTART;VALUE=DATE:20160112
DTEND;VALUE=DATE:20160116
DTSTAMP;TZID="GMT Standard Time":20110121T195741Z
UID:1koigufm110c5hnq6ln57murd4@google.com
CREATED:20110119T142901Z
DESCRIPTION;LANGUAGE=en-gb:Project xyz Review Meeting Minutes\n
Agenda\n1. Review of project version 1.0 requirements.\n2.
Definition
of project processes.\n3. Review of project schedule.\n
Participants: John Smith, Jane Doe, Jim Dandy\n-It was
decided that the requirements need to be signed off by
product marketing.\n-Project processes were accepted.\n
-Project schedule needs to account for scheduled holidays
and employee vacation time. Check with HR for specific
dates.\n-New schedule will be distributed by Friday.\n-
Next weeks meeting is cancelled. No meeting until 3/23.
LAST-MODIFIED:20150409T150000Z
LOCATION:
SEQUENCE:2
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:Test 2
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20160119
DTEND;VALUE=DATE:20160120
DTSTAMP;TZID="GMT Standard Time":20110121T195741Z
UID:rq8jng4jgq0m1lvpj8486fttu0@google.com
CREATED:20110119T141904Z
DESCRIPTION;LANGUAGE=en-gb:
LAST-MODIFIED:20150409T150000Z
LOCATION:
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:DST Change
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20160119
DTEND;VALUE=DATE:20160120
DTSTAMP;TZID="GMT Standard Time":20110121T195741Z
UID:dh3fki5du0opa7cs5n5s87ca00@google.com
CREATED:20110119T141901Z
DESCRIPTION;LANGUAGE=en-gb:
LAST-MODIFIED:20150409T150000Z
LOCATION:
RRULE:FREQ=WEEKLY;COUNT=5;INTERVAL=2;BYDAY=TU
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:Test 1
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
SUMMARY:Duration Test
DTSTART:20160425T150000Z
DTSTAMP:20160424T150000Z
DURATION:PT1H15M5S
RRULE:FREQ=DAILY;COUNT=2
UID:calendar-62-e7c39bf02382917349672271dd781c89
END:VEVENT
BEGIN:VEVENT
SUMMARY:BYMONTHDAY Test
DTSTART:20160922T130000Z
DTEND:20160922T150000Z
DTSTAMP:20160921T130000Z
RRULE:FREQ=MONTHLY;UNTIL=20170923T000000Z;INTERVAL=1;BYMONTHDAY=23
UID:33844fe8df15fbfc13c97fc41c0c4b00392c6870@google.com
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Europe/Paris:20160921T080000
DTEND;TZID=Europe/Paris:20160921T090000
RRULE:FREQ=WEEKLY;BYDAY=WE
DTSTAMP:20161117T165045Z
UID:884bc8350185031337d9ec49d2e7e101dd5ae5fb@google.com
CREATED:20160920T133918Z
DESCRIPTION:
LAST-MODIFIED:20160920T133923Z
LOCATION:
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:Paris Timezone Test
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20160215T080000Z
DTEND:20160515T090000Z
DTSTAMP:20161121T113027Z
CREATED:20161121T113027Z
UID:65323c541a30dd1f180e2bbfa2724995
DESCRIPTION:
LAST-MODIFIED:20161121T113027Z
LOCATION:
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:Long event covering the range from example with special chars:
ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÕÖÒÓÔØÙÚÛÜÝÞß
àáâãäåæçèéêėëìíîïðñòóôõöøùúûüūýþÿž
‘ ’ ‚ ‛ “ ” „ ‟ – — …
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
CLASS:PUBLIC
CREATED:20160706T161104Z
DTEND;TZID="(UTC-05:00) Eastern Time (US & Canada)":20160409T110000
DTSTAMP:20160706T150005Z
DTSTART;TZID="(UTC-05:00) Eastern Time (US & Canada)":20160409T090000
EXDATE;TZID="(UTC-05:00) Eastern Time (US & Canada)":
20160528T090000,
20160625T090000
LAST-MODIFIED:20160707T182011Z
EXDATE;TZID="(UTC-05:00) Eastern Time (US & Canada)":20160709T090000
EXDATE;TZID="(UTC-05:00) Eastern Time (US & Canada)":20160723T090000
LOCATION:Sanctuary
PRIORITY:5
RRULE:FREQ=WEEKLY;COUNT=15;BYDAY=SA
SEQUENCE:0
SUMMARY:Microsoft Unicode CLDR EXDATE Test
TRANSP:OPAQUE
UID:040000008200E00074C5B7101A82E0080000000020F6512D0B48CF0100000000000000001000000058BFB8CBB85D504CB99FBA637BCFD6BF
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-DISALLOW-COUNTER:FALSE
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170118
DTEND;VALUE=DATE:20170118
DTSTAMP;TZID="GMT Standard Time":20170121T195741Z
RRULE:FREQ=MONTHLY;BYSETPOS=3;BYDAY=WE;COUNT=5
UID:4dnsuc3nknin15kv25cn7ridss@google.com
CREATED:20170119T142059Z
DESCRIPTION;LANGUAGE=en-gb:BYDAY Test 1
LAST-MODIFIED:20170409T150000Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:BYDAY Test 1
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20190101
DTEND;VALUE=DATE:20190101
DTSTAMP;TZID="GMT Standard Time":20190101T195741Z
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=1
UID:4dnsuc3nknin15kv25cn7ridssy@google.com
CREATED:20190101T142059Z
DESCRIPTION;LANGUAGE=en-gb:BYSETPOS First weekday of every month
LAST-MODIFIED:20190101T150000Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:BYSETPOS First weekday of every month
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20190131
DTEND;VALUE=DATE:20190131
DTSTAMP;TZID="GMT Standard Time":20190121T195741Z
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA;BYSETPOS=-1
UID:4dnsuc3nknin15kv25cn7ridssx@google.com
CREATED:20190119T142059Z
DESCRIPTION;LANGUAGE=en-gb:BYSETPOS Last day of every month
LAST-MODIFIED:20190409T150000Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:BYSETPOS Last day of every month
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170301
DTEND;VALUE=DATE:20170301
DTSTAMP;TZID="GMT Standard Time":20170121T195741Z
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=WE
UID:h6f7sdjbpt47v3dkral8lnsgcc@google.com
CREATED:20170119T142040Z
DESCRIPTION;LANGUAGE=en-gb:BYDAY Test 2
LAST-MODIFIED:20170409T150000Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:BYDAY Test 2
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170111
DTEND;VALUE=DATE:20170111
DTSTAMP;TZID="GMT Standard Time":20170121T195741Z
RRULE:FREQ=YEARLY;INTERVAL=2;COUNT=5;BYMONTH=1,2,3
UID:f50e8b89a4a3b0070e0b687d03@google.com
CREATED:20170119T142040Z
DESCRIPTION;LANGUAGE=en-gb:BYMONTH Multiple Test 1
LAST-MODIFIED:20170409T150000Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:BYMONTH Multiple Test 1
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170405
DTEND;VALUE=DATE:20170405
DTSTAMP;TZID="GMT Standard Time":20170121T195741Z
RRULE:FREQ=YEARLY;BYMONTH=4,5,6;BYDAY=WE;COUNT=5
UID:675f06aa795665ae50904ebf0e@google.com
CREATED:20170119T142040Z
DESCRIPTION;LANGUAGE=en-gb:BYMONTH Multiple Test 2
LAST-MODIFIED:20170409T150000Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:BYMONTH Multiple Test 2
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
BEGIN:VALARM
TRIGGER;VALUE=DURATION:-PT30M
ACTION:DISPLAY
DESCRIPTION:Buzz buzz
END:VALARM
DTSTART;VALUE=DATE;TZID=Germany/Berlin:20170123
DTEND;VALUE=DATE;TZID=Germany/Berlin:20170123
DTSTAMP;TZID="GMT Standard Time":20170121T195741Z
RRULE:FREQ=MONTHLY;BYDAY=-2MO;COUNT=5
EXDATE;VALUE=DATE:20171020
UID:d287b7ec808fcf084983f10837@google.com
CREATED:20170119T142040Z
DESCRIPTION;LANGUAGE=en-gb:Negative BYDAY
LAST-MODIFIED:20170409T150000Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:Negative BYDAY
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Australia/Sydney:20170813T190000
DTEND;TZID=Australia/Sydney:20170813T213000
RRULE:FREQ=MONTHLY;INTERVAL=2;BYDAY=2SU;COUNT=2
DTSTAMP:20170809T114431Z
UID:testuid@google.com
CREATED:20170802T135539Z
DESCRIPTION:
LAST-MODIFIED:20170802T135935Z
LOCATION:
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:Parent Recurrence Event
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Australia/Sydney:20170813T190000
DTEND;TZID=Australia/Sydney:20170813T213000
DTSTAMP:20170809T114431Z
UID:testuid@google.com
RECURRENCE-ID;TZID=Australia/Sydney:20170813T190000
CREATED:20170802T135539Z
DESCRIPTION:
LAST-MODIFIED:20170809T105604Z
LOCATION:Melbourne VIC\, Australia
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:Override Parent Recurrence Event
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

View File

@@ -0,0 +1,175 @@
<?php
// phpcs:disable Generic.Arrays.DisallowLongArraySyntax
require_once '../vendor/autoload.php';
use ICal\ICal;
try {
$ical = new ICal('ICal.ics', array(
'defaultSpan' => 2, // Default value
'defaultTimeZone' => 'UTC',
'defaultWeekStart' => 'MO', // Default value
'disableCharacterReplacement' => false, // Default value
'filterDaysAfter' => null, // Default value
'filterDaysBefore' => null, // Default value
'httpUserAgent' => null, // Default value
'skipRecurrence' => false, // Default value
));
// $ical->initFile('ICal.ics');
// $ical->initUrl('https://raw.githubusercontent.com/u01jmg3/ics-parser/master/examples/ICal.ics', $username = null, $password = null, $userAgent = null);
} catch (\Exception $e) {
die($e);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
<title>PHP ICS Parser example</title>
<style>body { background-color: #eee }</style>
</head>
<body>
<div class="container-fluid">
<h4 class="mt-3 mb-2">PHP ICS Parser example</h3>
<ul class="list-group">
<li class="list-group-item">
The number of events
<span class="badge rounded-pill bg-secondary float-end"><?php echo $ical->eventCount ?></span>
</li>
<li class="list-group-item">
The number of free/busy time slots
<span class="badge rounded-pill bg-secondary float-end"><?php echo $ical->freeBusyCount ?></span>
</li>
<li class="list-group-item">
The number of todos
<span class="badge rounded-pill bg-secondary float-end"><?php echo $ical->todoCount ?></span>
</li>
<li class="list-group-item">
The number of alarms
<span class="badge rounded-pill bg-secondary float-end"><?php echo $ical->alarmCount ?></span>
</li>
</ul>
<?php
$showExample = array(
'interval' => true,
'range' => true,
'all' => true,
);
?>
<?php
if ($showExample['interval']) {
$events = $ical->eventsFromInterval('1 week');
if ($events) {
echo '<h4 class="mt-3 mb-2">Events in the next 7 days:</h4>';
}
$count = 1;
?>
<div class="row">
<?php
foreach ($events as $event) : ?>
<div class="col-md-4">
<div class="card mb-4">
<div class="card-body">
<h4 class="mt-3 mb-2"><?php
$dtstart = $ical->iCalDateToDateTime($event->dtstart_array[3]);
echo $event->summary . ' (' . $dtstart->format('d-m-Y H:i') . ')';
?></h3>
<?php echo $event->printData() ?>
</div>
</div>
</div>
<?php
if ($count > 1 && $count % 3 === 0) {
echo '</div><div class="row">';
}
$count++;
?>
<?php
endforeach
?>
</div>
<?php } ?>
<?php
if ($showExample['range']) {
$events = $ical->eventsFromRange('2017-03-01 12:00:00', '2017-04-31 17:00:00');
if ($events) {
echo '<h4 class="mt-3 mb-2">Events March through April:</h4>';
}
$count = 1;
?>
<div class="row">
<?php
foreach ($events as $event) : ?>
<div class="col-md-4">
<div class="card mb-4">
<div class="card-body">
<h4 class="mt-3 mb-2"><?php
$dtstart = $ical->iCalDateToDateTime($event->dtstart_array[3]);
echo $event->summary . ' (' . $dtstart->format('d-m-Y H:i') . ')';
?></h3>
<?php echo $event->printData() ?>
</div>
</div>
</div>
<?php
if ($count > 1 && $count % 3 === 0) {
echo '</div><div class="row">';
}
$count++;
?>
<?php
endforeach
?>
</div>
<?php } ?>
<?php
if ($showExample['all']) {
$events = $ical->sortEventsWithOrder($ical->events());
if ($events) {
echo '<h4 class="mt-3 mb-2">All Events:</h4>';
}
?>
<div class="row">
<?php
$count = 1;
foreach ($events as $event) : ?>
<div class="col-md-4">
<div class="card mb-4">
<div class="card-body">
<h4 class="mt-3 mb-2"><?php
$dtstart = $ical->iCalDateToDateTime($event->dtstart_array[3]);
echo $event->summary . ' (' . $dtstart->format('d-m-Y H:i') . ')';
?></h3>
<?php echo $event->printData() ?>
</div>
</div>
</div>
<?php
if ($count > 1 && $count % 3 === 0) {
echo '</div><div class="row">';
}
$count++;
?>
<?php
endforeach
?>
</div>
<?php } ?>
</div>
</body>
</html>