1. Go to this page and download the library: Download horde/itip library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
horde / itip example snippets
use Horde\Itip\ItipMessage;
use Horde\Itip\ItipProcessor;
use Horde\Itip\NullCalendarState;
use Horde\Itip\DefaultSchedulingPolicy;
use Horde\Itip\Change\CreateEvent;
use Horde\Itip\Change\UpdateEvent;
$processor = new ItipProcessor(
new MyCalendarState($calendarBackend), // implements CalendarState
new DefaultSchedulingPolicy(),
);
$message = ItipMessage::fromCalendar($vcalendar, '[email protected]');
$result = $processor->process($message);
if ($result->hasConflicts()) {
// Handle conflicts (outdated sequence, missing properties, etc.)
foreach ($result->conflicts as $conflict) { ... }
return;
}
// Apply proposed changes
foreach ($result->changes as $change) {
match (true) {
$change instanceof CreateEvent => $backend->create($change->event),
$change instanceof UpdateEvent => $backend->update($change->uid, $change->updatedEvent),
// ...
};
}
// Dispatch PSR-14 event for listeners (iMIP, logging, etc.)
$dispatcher->dispatch(new InvitationReceived($message, $result));
use Horde\Icalendar\Enum\ParticipationStatus;
$replyCal = $processor->generateReply(
$existingEvent,
'[email protected]',
ParticipationStatus::from('ACCEPTED'),
);
// $replyCal is a VCalendar with METHOD=REPLY, ready for transport
use Horde\Itip\CalendarState;
use Horde\Icalendar\Calendar\Vevent;
use Horde\Icalendar\Enum\ParticipationStatus;
class KronolithCalendarState implements CalendarState
{
public function findEventByUid(string $uid): ?Vevent { ... }
public function getAttendeeStatus(string $uid, string $email): ?ParticipationStatus { ... }
public function getEventSequence(string $uid): ?int { ... }
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.