Nextcloud Calendar is a phpBB 3.3 extension for moderated calendar submissions. Registered users can suggest events in phpBB, moderators can approve or reject them in the Moderator Control Panel, and approved events are written to a Nextcloud calendar through CalDAV.
- Adds a configurable "Suggest calendar event" frontend entry for users with permission, including navigation links, quick links, footer links and an index tile.
- Provides a public submission form with title, description, location, start and end time.
- Stores submissions in a phpBB database table until they are reviewed.
- Adds an MCP queue where moderators can approve or reject pending events.
- Creates approved events in Nextcloud as iCalendar
VEVENTentries via CalDAV. - Adds an ACP settings page for enabling submissions, configuring CalDAV credentials and testing the connection.
- Supports English, German and French language files.
- Supports embedding the submission form in phpBB content with
[nextcloudcalendar].
- phpBB
>=3.3.0,<4.0.0 - PHP
>=7.4 - PHP cURL extension
- A Nextcloud calendar CalDAV URL
- A technical Nextcloud user with write access to the target calendar
Install the extension into phpBB under the exact extension path:
ext/maxbrenne/nextcloudcalendar/
If you use the release ZIP, extract the ZIP directly into phpBB's ext
directory. The ZIP already contains the maxbrenne/nextcloudcalendar path:
phpBB/
└── ext/
└── maxbrenne/
└── nextcloudcalendar/
├── composer.json
└── ext.php
If you copy the repository contents manually:
- Create the directory
ext/maxbrenne/nextcloudcalendarin your phpBB installation. - Copy this repository's contents into that directory.
- Make sure
composer.jsonandext.phpare directly insideext/maxbrenne/nextcloudcalendar/, not in another nestedmaxbrenne/nextcloudcalendardirectory. - In the phpBB ACP, open Customise > Manage extensions.
- Enable Nextcloud Calendar.
The extension name in composer.json is maxbrenne/nextcloudcalendar, so phpBB
expects the maxbrenne/nextcloudcalendar directory layout.
Open ACP > Extensions > Nextcloud calendar > Settings and configure:
- Enable calendar submissions: turns the submission form on or off.
- Show frontend link: chooses where phpBB shows the submission entry outside
posts. Available positions are main navigation, quick links, board index
button, board index tile, footer, or no automatic link. Embedded forms in
posts using
[nextcloudcalendar]are not affected. - FontAwesome icon: FA icon class used for the configured frontend entry,
for example
fa-calendar-plus-o. - CalDAV calendar URL: the full target calendar URL, for example
https://cloud.example.org/remote.php/dav/calendars/calendar-user/community-calendar/. - Technical user: the Nextcloud user used for CalDAV writes.
- App password or password: use a Nextcloud app password when possible.
- Timezone: timezone used to interpret submitted local date/time values.
Use Test connection to verify that phpBB can reach the configured calendar.
The migration adds these phpBB permissions:
u_nextcloudcalendar_create: users can submit calendar suggestions.m_nextcloudcalendar_approve: moderators can approve or reject submissions.a_nextcloudcalendar: administrators can manage the extension settings.
Default assignments:
- Registered users can submit suggestions.
- Global moderators can approve suggestions.
- Administrators can manage settings.
- A user submits an event proposal.
- The proposal is stored as
pendinginphpbb_nextcloudcalendar_events. - A moderator opens the MCP queue.
- On approval, the extension writes the event to Nextcloud using CalDAV
PUT. - On success, the local proposal is marked as
approvedand the Nextcloud UID is stored. - On failure, the proposal remains pending and the last CalDAV error is shown in the MCP queue.
See docs/ARCHITECTURE.md for the use case, the end-to-end workflow and the software architecture, including Mermaid diagrams (use case, sequence, state, component and data model).
The extension source follows the standard phpBB extension layout:
composer.jsondeclarestype: phpbb-extension.ext.phpdefines the extension class.config/services.ymlregisters controller, services and event listener.config/routing.ymlregisters the submission route.migrations/install.phpcreates configuration, permissions, modules and the event table.acp/,mcp/,language/,styles/andadm/style/are present in the expected phpBB extension locations.
The repository intentionally excludes generated ZIP files, .DS_Store files,
Composer vendor files and composer.lock.
Static review found no blocking structural issue for activation in phpBB when
installed under ext/maxbrenne/nextcloudcalendar.
These checks passed in a Podman container using the composer:2 image on
2026-07-13:
find . -name '*.php' -print0 | xargs -0 -n1 php -l
composer validatecomposer validate --strict reports a warning for the version field. The
field is intentionally kept because phpBB 3.3.11 requires it when validating an
extension for display in the ACP extension manager.
Then enable the extension in a phpBB 3.3 test installation and verify:
- ACP settings page opens.
- Connection test succeeds against the target Nextcloud calendar.
- A user can submit an event.
- A moderator can approve it.
- The event appears in Nextcloud.
GPL-2.0-only