ical_test.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. <?php
  2. include_once("../../include/iCalcreator/autoload.php");
  3. use Kigkonsult\Icalcreator\Vcalendar;
  4. //use DateTime;
  5. //use DateTimezone;
  6. // define time zone
  7. $tz = "America/Mexico_City";
  8. // set Your unique id,
  9. // site info for the Vcalendar PRODID property
  10. $config = [
  11. Vcalendar::UNIQUE_ID => "IngenieriaLaSalle",
  12. Vcalendar::LANGUAGE=> "es",
  13. ];
  14. // create a new Vcalendar instance
  15. $calendar = Vcalendar::factory( $config )
  16. // required of some calendar software
  17. ->setMethod( Vcalendar::PUBLISH )
  18. ->setXprop( Vcalendar::X_WR_CALNAME, "Calendar Sample" )
  19. ->setXprop( Vcalendar::X_WR_CALDESC, "Calendar Description" )
  20. ->setXprop( Vcalendar::X_WR_RELCALID,"3E26604A-50F4-4449-8B3E-E4F4932D05B5" )
  21. ->setXprop( Vcalendar::X_WR_TIMEZONE, $tz );
  22. $calendar->VtimezonePopulate( $tz );
  23. //Evento único con horario
  24. $calendar->newVevent()
  25. // set event start
  26. ->setDtstart( new DateTime( '2021-05-01 09:00:00', new DateTimezone( $tz )))
  27. // set event end
  28. ->setDtend( new DateTime( '2021-05-01 10:30:00', new DateTimezone( $tz )))
  29. // describe the event
  30. ->setSummary( 'Fiesta' )
  31. ->setDescription(
  32. 'Fiesta por el día del trabajo'
  33. )
  34. ->setComment( 'It\'s going to be fun..' );
  35. //Evento único todo el día
  36. $calendar->newVevent()
  37. // set event start
  38. ->setDtstart('2021-05-05', [ Vcalendar::VALUE => Vcalendar::DATE ])
  39. // set event end
  40. ->setDtend( '20210506', [ Vcalendar::VALUE => Vcalendar::DATE ])
  41. // describe the event
  42. ->setSummary( 'Festivo por batalla de Puebla' )
  43. ->setDescription(
  44. 'Feriado'
  45. );
  46. // create a new event
  47. $event1 = $calendar->newVevent()
  48. ->setTransp( Vcalendar::OPAQUE )
  49. ->setClass( Vcalendar::P_BLIC )
  50. ->setSequence( 1 )
  51. // describe the event
  52. ->setSummary( 'Exámenes finales' )
  53. ->setDescription(
  54. 'Agenda for the the meeting...'
  55. )
  56. ->setComment( 'It\'s going to be fun..' )
  57. // set the time
  58. ->setDtstart(
  59. new DateTime(
  60. '20210524T090000',
  61. new DateTimezone( $tz )
  62. )
  63. )
  64. ->setDtend(
  65. new DateTime(
  66. '20210524T100000',
  67. new DateTimezone( $tz )
  68. )
  69. )
  70. // with recurrence rule
  71. ->setRrule(
  72. [
  73. Vcalendar::FREQ => Vcalendar::DAILY,
  74. //Vcalendar::COUNT => 5,
  75. Vcalendar::UNTIL => new DateTime( "20210531" ),//no incluyente
  76. ]
  77. )
  78. // and set another on a specific date
  79. /*->setRdate(
  80. [
  81. new DateTime(
  82. '20210609T090000',
  83. new DateTimezone( $tz )
  84. ),
  85. new DateTime(
  86. '20210609T110000',
  87. new DateTimezone( $tz )
  88. ),
  89. ],
  90. [ Vcalendar::VALUE => Vcalendar::PERIOD ]
  91. )*/
  92. // and revoke a recurrence date
  93. ->setExdate(
  94. new DateTime(
  95. '2021-05-26 09:00:00',
  96. new DateTimezone( $tz )
  97. )
  98. );
  99. // add alarm for the event
  100. /*$alarm = $event1->newValarm()
  101. ->setAction( Vcalendar::DISPLAY )
  102. // copy description from event
  103. ->setDescription( $event1->getDescription())
  104. // fire off the alarm one day before
  105. ->setTrigger( '-P1D' );*/
  106. // alter day and time for one event in recurrence set
  107. $event2 = $calendar->newVevent()
  108. ->setTransp( Vcalendar::OPAQUE )
  109. ->setClass( Vcalendar::P_BLIC )
  110. // reference to event in recurrence set
  111. ->setUid( $event1->getUid())
  112. ->setSequence( 2 )
  113. // pointer to event in the recurrence set
  114. ->setRecurrenceid( '20210528T090000 '.$tz )
  115. ->setSummary( $event1->getSummary() )
  116. // reason text
  117. ->setDescription(
  118. 'Altered day and time for event 2021-05-28'
  119. )
  120. ->setComment( 'Now we are working hard for two hours' )
  121. // the altered day and time with duration
  122. ->setDtstart(
  123. new DateTime(
  124. '20210528T100000',
  125. new DateTimezone( $tz )
  126. )
  127. )
  128. ->setDtend(
  129. new DateTime(
  130. '20210528T120000',
  131. new DateTimezone( $tz )
  132. )
  133. );
  134. //->setDuration( 'PT2H' );
  135. // add alarm (copy from event1)
  136. /*->setComponent(
  137. $event1->getComponent( Vcalendar::VALARM )
  138. );*/
  139. // create a new event
  140. $event3 = $calendar->newVevent()
  141. ->setTransp( Vcalendar::OPAQUE )
  142. ->setClass( Vcalendar::P_BLIC )
  143. ->setSequence( 1 )
  144. // describe the event
  145. ->setSummary( 'Semana de bienestar' )
  146. ->setDescription(
  147. 'Agenda for the the meeting...'
  148. )
  149. ->setComment( 'It\'s going to be fun..' )
  150. // set the time
  151. ->setDtstart('20210502', [ Vcalendar::VALUE => Vcalendar::DATE ])
  152. ->setDtend('20210503', [ Vcalendar::VALUE => Vcalendar::DATE ])
  153. // with recurrence rule
  154. ->setRrule(
  155. [
  156. Vcalendar::FREQ => Vcalendar::DAILY,
  157. //Vcalendar::COUNT => 5,
  158. Vcalendar::UNTIL => new DateTime( "20210508" ),//no incluyente
  159. ]
  160. )
  161. // and revoke a recurrence date
  162. ->setExdate('20210504', [ Vcalendar::VALUE => Vcalendar::DATE ]);
  163. // Download as file
  164. $calendar->returnCalendar("calendarioIng.ics");
  165. /*
  166. // JSON
  167. $xmlstr = Kigkonsult\Icalcreator\Util\IcalXMLFactory::iCal2XML( $calendar );
  168. $json = json_encode( simplexml_load_string( $xmlstr ));
  169. echo $json;*/
  170. /*
  171. $events_arr = $calendar->selectComponents(
  172. 2021, 01, 1, 2021, 12, 30, Vcalendar::VEVENT
  173. );
  174. foreach( $events_arr as $year => $year_arr ) {
  175. foreach( $year_arr as $month => $month_arr ) {
  176. foreach( $month_arr as $day => $day_arr ) {
  177. foreach( $day_arr as $event ) {
  178. $currddate = $event->getDtstart();
  179. print_r($event);
  180. //echo date("Y-m-d h:i", $currddate->getTimestamp());
  181. echo "<br>";
  182. }
  183. }
  184. }
  185. }*/
  186. ?>