Patriot Platform Members 1.06 — Add to calendar

INSTALL
Upload patriot-platform-1.06.zip in WordPress > Plugins > Add New > Upload
Plugin and replace the installed plugin. Full package includes versions 1.01
through 1.05. No reactivation or new database schema is required.

MEMBER CONTROLS
After registering, use Add to calendar (.ics) on the published event page or
in My membership > My event registrations. Save/open the downloaded file in
your calendar application. Google Calendar supports importing the saved file
through its desktop calendar settings.
The file contains title, start time, venue and a link back to the event.
UTC represents the saved instant; calendar apps display their selected timezone.
No end time is invented: the event model currently stores only a start time.
The calendar copy does not reserve a place; the existing registration does.

ACCESS AND PRIVACY
Requires login, a valid event nonce, an active membership matching the event's
region (or a national event), and a current confirmed registration. Draft,
private, trashed and missing events are refused, including direct requests.
Downloads contain no member name, email, attendee list or login credential.
No calendar file is written to a public server folder.

LIMITS
This is a downloaded copy, not a subscribed feed. It will not automatically
reschedule or remove itself when the event or registration changes. Update or
remove imported entries yourself. Existing event-change emails still apply.
Repeated imports use the same event ID, but individual calendar apps may still
create duplicates; check existing entries before importing again.
No automatic calendar invitations, email attachments or external integrations.

LOCAL CHECK
1. Register an active member for a future regional event with a venue.
2. Confirm both calendar buttons appear and download an .ics file.
3. Import into your calendar and check date, local time, venue and event link.
4. Confirm the button disappears after cancellation and direct download fails.
5. Try a national event and a member from a different region.
6. Unpublish the event and verify calendar download is refused.

VALIDATION
103 isolated PHP behavioural/render/calendar checks passed, including the prior
RSVP/email/update/attendance suite, access rules, UTC formatting, escaping,
UTF-8 line folding and stable event identity. All PHP syntax and ZIP integrity
checked. WordPress/browser/calendar-client integration requires local testing.
