Beispiel #1
0
 public function indexAction(Request $request, $key)
 {
     $userManager = $this->container->get('ilioscore.user.manager');
     $user = $userManager->findUserBy(array('icsFeedKey' => $key));
     if (!$user) {
         throw new NotFoundHttpException();
     }
     $calendar = new ICS\Calendar('Ilios Calendar for ' . $user->getFirstAndLastName());
     $calendar->setPublishedTTL('P1H');
     $from = new \DateTime('-6 months');
     $to = new \DateTime('+6 months');
     $events = $userManager->findEventsForUser($user->getId(), $from, $to);
     foreach ($events as $event) {
         $vEvent = new ICS\Event();
         $vEvent->setDtStart($event->startDate)->setDtEnd($event->endDate)->setSummary($event->name)->setDescription($this->getDescriptionForEvent($event))->setCategories([$event->eventClass])->setLocation($event->location);
         $calendar->addComponent($vEvent);
     }
     $response = new Response();
     $response->setContent($calendar->render());
     $response->setCharset('utf-8');
     $response->headers->set('Content-Type', 'text/calendar');
     $response->headers->set('Content-Disposition', 'attachment; filename="' . $key . '.ics"');
     $response->prepare($request);
     $response->send();
 }
Beispiel #2
0
 /**
  * @param \LolEspCal\Event\Schedule $schedule
  *
  * @return Event|null
  */
 public function createFromSchedule(Schedule $schedule)
 {
     $event = new Event();
     $blue =& $schedule->getRosters()[0]['team'];
     $red =& $schedule->getRosters()[1]['team'];
     $description = $blue['name'] . ' (' . $blue['acronym'] . ') vs ' . $red['name'] . ' (' . $red['acronym'] . ')' . "\n" . 'Type : BO' . count($schedule->getMatch()['games']) . "\n" . 'Tournament : ' . $schedule->getTournament()['description'] . "\n" . 'Week : ' . $schedule->getTags()['blockLabel'] . "\n";
     if (count($schedule->getMatch()['scores'])) {
         $blueScore = $schedule->getMatch()['scores'][$schedule->getRosters()[0]['id']];
         $redScore = $schedule->getMatch()['scores'][$schedule->getRosters()[1]['id']];
         $description .= 'Winner : ' . ($blueScore > $redScore ? $blue['name'] : $red['name']) . "\n" . 'Looser : ' . ($blueScore < $redScore ? $blue['name'] : $red['name']) . "\n";
     }
     // http://www.lolesports.com/en_US/eu-lcs/eu_2016_spring/schedule/regular_season/1
     $url = 'http://www.lolesports.com/en_US/' . rawurlencode($schedule->getLeague()['slug']) . '/' . rawurlencode($schedule->getTournament()['title']) . '/' . 'schedule/' . rawurlencode($schedule->getBracket()['name']) . '/' . rawurlencode($schedule->getTags()['blockLabel']);
     $event->setUniqueId('match-' . $schedule->getMatch()['id'])->setSummary($blue['acronym'] . ' vs ' . $red['acronym'])->setUrl($url)->setCategories([$schedule->getTournament()['description']])->setDescription($description)->setDtStart(new \DateTime($schedule->getScheduledTime()->format('Y-m-dTH:i:s.000+0000')))->setDtEnd((new \DateTime($schedule->getScheduledTime()->format('Y-m-dTH:i:s.000+0000')))->modify('+1 hour'));
     return $event;
 }
Beispiel #3
0
 /**
  * Create iCalendar (.ics) file
  * @param bool $with_header
  * @return string
  */
 public function toICS($with_header = true)
 {
     $vCalendar = new Calendar('edt.u-bordeaux');
     $vCalendar->setTimezone(self::$timezone)->setName($this->name)->setDescription($this->name);
     /** @var EdtUbxItem $item */
     foreach ($this->items as $item) {
         $profs = implode(', ', $item->getProfs());
         $location = implode(', ', $item->getLocations());
         $groups = implode(', ', $item->getGroups());
         $vEvent = new Event();
         $vEvent->setUseTimezone(true)->setDtStart($item->getDtStart())->setDtEnd($item->getDtEnd())->setCategories($item->getCategory())->setLocation($location);
         $vEvent->setDescription(sprintf("%s\n%s%s%s%s%s", $item->getName(), $item->getCategory(), $location !== '' ? "\n{$location}" : '', $profs !== '' ? "\n{$profs}" : '', $groups !== '' ? "\n{$groups}" : '', $item->getNotes() ? "\nNotes: " . $item->getNotes() : ''));
         $vEvent->setSummary(sprintf('%s (%s)%s', $item->getName(), $item->getCategory(), $profs !== '' ? " - {$profs}" : ''));
         $vCalendar->addComponent($vEvent);
     }
     if ($with_header === true) {
         header('Content-type: text/calendar; charset=utf-8');
         header('Content-Disposition: attachment; filename=calendar.ics');
     }
     return $vCalendar->render();
 }
Beispiel #4
0
 public function indexAction(Request $request, $key)
 {
     $manager = $this->container->get('ilioscore.user.manager');
     $user = $manager->findOneBy(array('icsFeedKey' => $key));
     if (!$user) {
         throw new NotFoundHttpException();
     }
     $calendar = new ICS\Calendar('Ilios Calendar for ' . $user->getFirstAndLastName());
     $calendar->setPublishedTTL('P1H');
     $from = new \DateTime(self::LOOK_BACK);
     $to = new \DateTime(self::LOOK_FORWARD);
     $events = $manager->findEventsForUser($user->getId(), $from, $to);
     $publishedEvents = array_filter($events, function (UserEvent $event) {
         return $event->isPublished && !$event->isScheduled;
     });
     $publishedEvents = $manager->addInstructorsToEvents($publishedEvents);
     $scheduledEvents = array_filter($events, function (UserEvent $event) {
         return $event->isPublished && $event->isScheduled;
     });
     /* @var UserEvent $event */
     foreach ($publishedEvents as $event) {
         $vEvent = new ICS\Event();
         $vEvent->setDtStart($event->startDate)->setDtEnd($event->endDate)->setSummary($event->name)->setDescription($this->getDescriptionForEvent($event))->setCategories([$event->eventClass])->setLocation($event->location);
         $calendar->addComponent($vEvent);
     }
     foreach ($scheduledEvents as $event) {
         $vEvent = new ICS\Event();
         $vEvent->setDtStart($event->startDate)->setDtEnd($event->endDate)->setSummary('Scheduled');
         $calendar->addComponent($vEvent);
     }
     $response = new Response();
     $response->setContent($calendar->render());
     $response->setCharset('utf-8');
     $response->headers->set('Content-Type', 'text/calendar');
     $response->headers->set('Content-Disposition', 'attachment; filename="' . $key . '.ics"');
     $response->prepare($request);
     return $response;
 }
Beispiel #5
0
 /**
  * Get common events for task ical events
  *
  * @access protected
  * @param  array   $task
  * @param  string  $uid
  * @return Event
  */
 protected function getTaskIcalEvent(array &$task, $uid)
 {
     $dateCreation = new DateTime();
     $dateCreation->setTimestamp($task['date_creation']);
     $dateModif = new DateTime();
     $dateModif->setTimestamp($task['date_modification']);
     $vEvent = new Event($uid);
     $vEvent->setCreated($dateCreation);
     $vEvent->setModified($dateModif);
     $vEvent->setUseTimezone(true);
     $vEvent->setSummary(t('#%d', $task['id']) . ' ' . $task['title']);
     $vEvent->setUrl($this->helper->url->base() . $this->helper->url->to('task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])));
     if (!empty($task['owner_id'])) {
         $vEvent->setOrganizer('MAILTO:' . ($task['assignee_email'] ?: $task['assignee_username'] . '@kanboard.local'));
     }
     if (!empty($task['creator_id'])) {
         $attendees = new Attendees();
         $attendees->add('MAILTO:' . ($task['creator_email'] ?: $task['creator_username'] . '@kanboard.local'));
         $vEvent->setAttendees($attendees);
     }
     return $vEvent;
 }
 /**
  * Generates and returns an iCal file for a ticket.
  * @param  String $code  Code of a ticket in the system.
  * @return .ics file     iCal file representing that ticket.
  */
 public function iCal($code)
 {
     $vCalendar = new Calendar($_SERVER["HTTP_HOST"]);
     try {
         $ticket = Ticket::hasCode($code)->firstOrFail();
     } catch (ModelNotFoundException $e) {
         return view("tickets.unverifiable", ['error' => $this->errorMessages['ticket_invalid']]);
     }
     $event = $ticket->event;
     // Have to call Event this way to avoid clash with App\Event
     $vEvent = new iCal\Component\Event();
     $breakAddress = explode(",", $event->location->name, 2);
     $firstName = $breakAddress[0];
     $vEvent->setDtStart(new DateTime($event->start_datetime))->setDtEnd(new DateTime($event->end_datetime))->setLocation($event->location->name, $firstName, "{$event->location->latitude}, {$event->location->longitude}")->setSummary($event->title);
     $vCalendar->addComponent($vEvent);
     header('Content-Type: text/calendar; charset=utf-8');
     header('Content-Disposition: attachment; filename="cal.ics"');
     echo $vCalendar->render();
 }
Beispiel #7
0
 public function loadEvents()
 {
     if ($this->components === array()) {
         $diary = @fopen($this->getFile(), 'r');
         $headers = null;
         if ($diary === false) {
             $error = error_get_last();
             throw new Exception("Cannot find event file: " . $error['message']);
         }
         $this->log->info('Parsing diary CSV');
         while (false !== ($row = fgetcsv($diary))) {
             if ($headers === null) {
                 $headers = $row;
             } else {
                 $row = array_combine($headers, $row);
                 $event = new Event();
                 $event->setDtStart(new \DateTime($row[$this->headers['date']]));
                 $event->setDtEnd(new \DateTime($row[$this->headers['date']]));
                 $event->setNoTime(true);
                 $event->setSummary($row[$this->headers['summary']]);
                 $event->setDescription($this->getEventDescription($row));
                 $event->setUrl($row[$this->headers['url']]);
                 $this->addEvent($event);
             }
         }
         $this->log->info('Parsing complete');
     }
 }
Beispiel #8
0
 public function __construct()
 {
     $this->created = new \DateTime();
     parent::__construct(self::generateUniqueId());
 }
<?php

/**
 * Export iCalendar feed with Captain Train trips
 *
 * PHP version 5.6
 *
 * @category CaptainTrainIcalendar
 * @package  CaptainTrainIcalendar
 * @author   Pierre Rudloff <*****@*****.**>
 * @license  GPL https://www.gnu.org/licenses/gpl.html
 * @link     https://github.com/Rudloff/captaintrain-icalendar
 */
require_once 'vendor/autoload.php';
use CaptainTrainIcalendar\Config;
use Eluceo\iCal\Component\Calendar;
use Eluceo\iCal\Component\Event;
$config = Config::getInstance();
if (isset($_GET['token']) && $_GET['token'] == $config->token) {
    $session = new \CaptainTrain\Session($config->email, $config->password);
    $vCalendar = new Calendar('captaintrain-icalendar');
    foreach ($session->getTrips() as $trip) {
        $vEvent = new Event();
        $vEvent->setDtStart($trip->departureDate)->setDtEnd($trip->arrivalDate)->setSummary($trip->departureStation->name . ' - ' . $trip->arrivalStation->name)->setUseTimezone(true)->setUrl('https://www.captaintrain.com/tickets');
        $vCalendar->addComponent($vEvent);
    }
    header('Content-Type: text/calendar');
    echo $vCalendar->render();
} else {
    http_response_code(403);
}
 /**
  *
  *
  */
 public function icsAction()
 {
     $calendarService = $this->getCalendarService()->setCalendarId($this->getEvent()->getRouteMatch()->getParam('id'));
     if ($calendarService->isEmpty()) {
         return $this->notFoundAction();
     }
     $vCalendar = new iCal('https://artemis-ia.eu');
     $vEvent = new iCalEvent();
     $vEvent->setDtStart($calendarService->getCalendar()->getDateFrom())->setDtEnd($calendarService->getCalendar()->getDateEnd())->setLocation($calendarService->getCalendar()->getLocation())->setNoTime(true)->setSummary($calendarService->getCalendar()->getCalendar())->setDescription(strip_tags($calendarService->getCalendar()->getDescription()));
     $vCalendar->addComponent($vEvent);
     $response = $this->getResponse();
     $response->getHeaders()->addHeaderLine('Expires: ' . gmdate('D, d M Y H:i:s \\G\\M\\T', time() + 36000))->addHeaderLine("Cache-Control: max-age=36000, must-revalidate")->addHeaderLine("Pragma: public")->addHeaderLine('Content-Disposition: attachment; filename="' . $calendarService->getCalendar()->getCalendar() . '.ics"')->addHeaderLine('Content-Type: text/calendar; charset=utf-8')->addHeaderLine('Content-Length', strlen($vCalendar->render()));
     $response->setContent($vCalendar->render());
     return $response;
 }