The first preview of PHP-Calendar 3: a rewrite of the whole application on Symfony, with a modern
interface, 26 languages, and calendar feeds. It's an alpha for trying out and reporting
problems; 2.0.14 is more tested, but lacks a lot of the UI polish that has gone into this alpha.
If you're on the 2.0 branch, stick with 2.0 until there's a final 3.0 release. If you want to test out
the new features, do so on a different database or make sure to backup your database first.
Requirements
- PHP 8.3 or later, with the
intlandpdo_mysqlextensions - MySQL or MariaDB
- On Apache,
mod_rewriteand.htaccessfiles enabled; on nginx, serve thepublic/folder
No command line or Composer is needed: everything the calendar uses is in the download.
Installing
- Download
php-calendar-3.0.0-alpha.1.zipbelow and unpack it. - Upload the
php-calendar-3.0.0-alpha.1folder to your web host: point the web server at its
public/folder, or upload it into the folder your site serves (e.g.public_html/calendar/). - Make sure the web server can write to the folder and to
var/inside it. - Open it in your browser. The installer asks for the database and a table prefix (
phpc3_by
default, so the calendar can share a database with other apps), then creates your first calendar
and admin account, or imports a 2.0 calendar from the same database.
Finish the installer soon after uploading: until then, anyone who finds the site could complete it.
Coming from 2.0
The installer offers to import a 2.0 calendar in the same database, or run
bin/console app:import-2.0 against any database (--dry-run checks it first). The 2.0 tables
aren't changed.
- Users keep their passwords; old MD5 passwords are upgraded when each person next logs in.
- Calendars, permissions, categories, events and their dates come across. 2.0 groups become roles.
- Date format, 24-hour time, first day of the week and themes aren't imported: 3.0 formats dates
for each visitor's language and region. - Links to the old calendar (
index.php?action=…) don't redirect to the new pages.
What's new
Looks and works on any screen
- Bootstrap 5.3 interface with light, dark and automatic modes
- Month view, with an agenda list on phones, and a day view listing each day's events
- 26 themes (Bootstrap and Bootswatch) per calendar or site-wide, plus your own in
themes/ - No requests to third-party servers: no CDNs, no web fonts from Google
Languages and time zones
- 26 languages: the 2.0 community translations, completed by machine translation where 3.0 has new
wording (corrections welcome), including right-to-left Hebrew - Dates, times and the first day of the week follow each visitor's language and region
- Times are shown in the calendar's time zone, with a one-click switch to the visitor's own
- Each calendar can have a default language; visitors' language choice is remembered
Events
- Repeating events (daily, weekly, monthly, yearly), all-day, multi-day and to-be-announced events
- Locations, with links for online events; descriptions in Markdown
- Custom fields per calendar, categories with colors, and categories limited to a role
- Delayed publishing, read-only events, and removing several dates of an event at once
- Search by text and date range
Sharing
- Subscribe from Google Calendar, Apple Calendar, Outlook and others: a public iCalendar feed for
public calendars, and personal feed links that include what only you can see - Embed a calendar in another website with one line of HTML
- Public events are described for search engines (schema.org)
Accounts and administration
- Roles in place of groups, with per-user and public permissions per calendar
- Log in with a username or an email address; "Keep me logged in" for 30 days
- Password reset by email, and email address confirmation (Admin → Email sets up sending)
- Upgrades: upload the new version and an admin updates the database from the browser
Known issues
- This is an alpha: expect rough edges, and report them on
GitHub. - Most translations are machine-made where 2.0 had no wording; native speakers can correct them.
Full Changelog: v2.0.0...v3.0.0-alpha.1