informatica:programacion:php:php_ics_parser
Tabla de Contenidos
PHP ICS Parser
Parser de PHP para eventos iCalendar.
Ejemplo
<?php // phpcs:disable Generic.Arrays.DisallowLongArraySyntax require_once 'ICal.php'; require_once 'Event.php'; use ICal\ICal; try { $ical = new ICal('calendario.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://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <title>PHP ICS Parser example</title> <style>body { background-color: #eee } .caption { overflow-x: auto }</style> </head> <body> <div class="container-fluid"> <h3>PHP ICS Parser example</h3> <ul class="list-group"> <li class="list-group-item"> <span class="badge"><?php echo $ical->eventCount ?></span> The number of events </li> <li class="list-group-item"> <span class="badge"><?php echo $ical->freeBusyCount ?></span> The number of free/busy time slots </li> <li class="list-group-item"> <span class="badge"><?php echo $ical->todoCount ?></span> The number of todos </li> <li class="list-group-item"> <span class="badge"><?php echo $ical->alarmCount ?></span> The number of alarms </li> </ul> <?php $showExample = array( 'interval' => true, 'range' => true, 'all' => true, ); ?> <?php if ($showExample['interval']) { $events = $ical->eventsFromInterval('1 week'); if ($events) { echo '<h4>Events in the next 7 days:</h4>'; } $count = 1; ?> <div class="row"> <?php foreach ($events as $event) : ?> <div class="col-md-4"> <div class="thumbnail"> <div class="caption"> <h3><?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('2022-03-01 12:00:00', '2022-04-31 17:00:00'); if ($events) { echo '<h4>Events March through April:</h4>'; } $count = 1; ?> <div class="row"> <?php foreach ($events as $event) : ?> <div class="col-md-4"> <div class="thumbnail"> <div class="caption"> <h3><?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>All Events:</h4>'; } ?> <div class="row"> <?php $count = 1; foreach ($events as $event) : ?> <div class="col-md-4"> <div class="thumbnail"> <div class="caption"> <h3><?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>
Procesando y metiendo en base de datos
<?php require_once 'ICal.php'; require_once 'Event.php'; require_once 'database.php'; use ICal\ICal; try { $ical = new ICal('calendario.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); } $events = $ical->sortEventsWithOrder($ical->events()); foreach ($events as $event) { $descripcion = $event->summary; $dtstart = $ical->iCalDateToDateTime($event->dtstart_array[3]); $fecha = $dtstart->format('Y-m-d'); $sql = "INSERT INTO cal (descripcion, fecha) VALUES ('{$descripcion}', '{$fecha}')"; $insertar = mysqli_query($link, $sql); }
Recursos
informatica/programacion/php/php_ics_parser.txt · Última modificación: por tempwin
