Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Calendar Links Laravel Package

spatie/calendar-links

Generate “Add to calendar” links and ICS files for events. Supports Google Calendar, iCal/Apple Calendar, Outlook and more. Define title, start/end, description and location, then get shareable URLs or downloadable .ics content for your app.

View on GitHub
Deep Wiki
Context7
2.0.0

Breaking Changes

  • Require PHP 8.3+ (previously 8.1+)
  • Link::$from and Link::$to are now DateTimeImmutable (previously DateTime)
  • Link::$title, $from, $to, and $allDay are now public readonly; $description and $address are public. The magic __get() method has been removed.
  • Remove $allDay parameter from Link::create() — use Link::createAllDay() instead
  • Link::createAllDay() end date is now inclusive (the constructor internally adds +1 day for calendar services)
  • Link constructor is now final
  • Remove deprecated InvalidLink::invalidDateRange() — use InvalidLink::negativeDateRange() instead
  • BaseOutlook::baseUrl() visibility changed from public to protected
  • WebOffice and WebOutlook classes are now final
  • Date/time format properties in generators replaced with private const (prevents override via subclassing)
  • Require PHPUnit 12+ / 13

Added

  • ICS: Allow custom PRODID via options array
  • Link::createAllDay() now returns static instead of self

Fixed

  • Fix all-day events created via constructor being 1 day short
  • ICS: DTSTAMP now always uses UTC datetime for all-day events (RFC 5545 compliance)
  • ICS: Add VALUE=DATE parameter to DTSTART for all-day events (RFC 5545 compliance)
  • ICS: escapeString() now properly handles backslashes, semicolons, commas, and newlines per RFC 5545 section 3.3.11
  • ICS: Fix VALARM trigger not working when a specific date was set

Internal

  • Add declare(strict_types=1) to all source files
  • Use PHP 8.3 typed class constants and #[\Override] attributes
  • Use DateTimeImmutable throughout instead of mutable DateTime
  • Replace [@test](https://github.com/test) annotations with PHPUnit #[Test] attributes
  • Apply PSR-12 coding style
  • Upgrade Psalm to v6 with improved type annotations
1.11.1
1.11.0
1.8.2

Changed

  • ICS: Use DESCRIPTION instead of X-ALT-DESC (as it has better support) by @cdubz in #158
  • Chore: fix tests, fix and improve CI
1.8.1

Changed

  • Remove PHP 7.4 support
  • Update dependencies
1.8.0

Changed

  • ICS: Add PRODID and DTSTAMP required parameters to make ICS valid by @makbeta
  • ICS: Fix HTML description for Outlook 2016 by @karthikbodu
  • Outlook: extract common logic for WebOffice and WebOutlook into a parent class by @lptn

Fixed

  • Simplify format of test snapshots: do not use base64 by @lptn
  • Fix typo in README by @fabpot
1.7.2

Fixed

  • Outlook: Fixed #148 Support HTML-formatted description by @dravenk in #150
1.7.1

Changed

  • Outlook: Fixed location field characters (by @dravenk in #144)
  • Add missing dependency of php-cs-fixer and update it
1.7.0

Changed

  • New: Add support for outlook.office.com $link->webOffice(); (@dravenk and @gulios)
  • Google: Add timezone name if it is specified in both from and to dates and is the same for both (@bradyemerson)
1.6.0

Changed

  • Drop support for PHP 7.2 and PHP 7.3
1.5.0

Changed

  • ICS: support URLs as option (@gulios)
  • ICS: support all day events spanning multiple days (@mrshowerman)
1.4.4

Fixed

  • Yahoo link doesn’t work (yahoo changed param names) (@mukeshsah08).
  • Exception message on invalid dates range (idea by @jason-nabooki)
1.4.3

Changed

  • Google: use UTC timezone to bypass problems with some timezone names unsupported by Google calendar (⚠️ backwards-incompatible if you extended Google Generator)

Fixed

  • Spaces replaced by "+" on Outlook.com #109
1.4.2

Changed

  • Simplify extending of ICS Generator
1.4.1

Changed

  • Simplify extending of WebOutlook (e.g. for Office365)
  • Yahoo: use allday parameter only for a single-day events
  • Improve exception hierarchy: InvalidLink now extends \InvalidArgumentException

Added

  • Add more tests, reorganize existing
1.4.0

Added

Changed

  • Require PHP 7.2+
1.3.0
  • Support custom generators ($link->formatWith(new Your\Generator())
  • Fix iCal links that contains special chars (use base64 for encoding)
  • Fix Outlook links: use new base URI and datetime formats
  • Fix Yahoo links: events had invalid end datetime (due to a bug on Yahoo side)
1.2.4
  • Fix Google links for all-day events (use next day as end-date for single-day events)
  • Fix Outlook links for all-day events (omit enddt for single-day events)
  • Add a new Link::createAllDay static constructor to simplify creating of all-day events
1.2.3
  • Fix iCal all day links (use DURATION according RFC 5545)
1.2.2
  • Fix Yahoo links for multiple days events
1.2.1
  • Fix iCal: Use CRLF instead of LF (according RFC 5545)
  • Fix iCal: Specify UID property (according RFC 5545)
  • Fix iCal: Escape ; character (according RFC 5545)
  • Fix iCal: Remove empty new line from .ics files
1.2.0
  • Support timezones
  • Add outlook.com link generator
1.1.1
  • Fix Yahoo links
1.1.0
  • Add all day support
1.0.3
  • Fix newlines in description
1.0.2
  • Fix for iCal links in Safari
1.0.1
  • Use \n instead of %0A when generating an ics file
1.0.0
  • initial release
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport