Editing: Google.php
<?php namespace Spatie\CalendarLinks\Generators; use Spatie\CalendarLinks\Generator; use Spatie\CalendarLinks\Link; /** * @see https://github.com/InteractionDesignFoundation/add-event-to-calendar-docs/blob/master/services/google.md * @psalm-type GoogleUrlParameters = array<string, scalar|null> */ class Google implements Generator { /** @var string {@see https://www.php.net/manual/en/function.date.php} */ protected $dateFormat = 'Ymd'; /** @var string */ protected $dateTimeFormat = 'Ymd\THis'; /** @psalm-var GoogleUrlParameters */ protected array $urlParameters = []; /** @psalm-param GoogleUrlParameters $urlParameters */ public function __construct(array $urlParameters = []) { $this->urlParameters = $urlParameters; } /** {@inheritDoc} */ public function generate(Link $link): string { $url = 'https://calendar.google.com/calendar/render?action=TEMPLATE'; $dateTimeFormat = $link->allDay ? $this->dateFormat : $this->dateTimeFormat; $url .= '&dates='.$link->from->format($dateTimeFormat).'/'.$link->to->format($dateTimeFormat); $url .= '&ctz=' . $link->from->getTimezone()->getName(); $url .= '&text='.urlencode($link->title); if ($link->description) { $url .= '&details='.urlencode($link->description); } if ($link->address) { $url .= '&location='.urlencode($link->address); } foreach ($this->urlParameters as $key => $value) { $url .= '&'.urlencode($key).(in_array($value, [null, ''], true) ? '' : '='.urlencode((string) $value)); } return $url; } }
Save
Back