mirror of
https://github.com/itflow-org/itflow
synced 2026-08-05 07:07:14 +00:00
Feature: Calendars are now exportable shareable so Third Party Calendar services can read them, also added recoccurence to calendar, and all day along with sperating the time fields and click in a box to add calendar event is possible
This commit is contained in:
27
admin/database_updates/2.5.8.php
Normal file
27
admin/database_updates/2.5.8.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* ITFlow - Database update to version 2.5.8 (from 2.5.7)
|
||||
* Included by admin/database_updates.php - do not access directly
|
||||
*/
|
||||
|
||||
defined('FROM_DB_UPDATER') || die("Direct file access is not allowed");
|
||||
|
||||
// Calendars can now be published as a read-only ICS feed for Google Calendar,
|
||||
// Nextcloud and any other subscription client. The key is stored in cleartext,
|
||||
// matching invoice_url_key and shared_items.item_key - hashing it would buy
|
||||
// nothing here (anyone holding the database already holds the events the key
|
||||
// grants access to) and would make the URL impossible to re-copy for a second
|
||||
// device without breaking every existing subscriber.
|
||||
//
|
||||
// The UNIQUE key is on a nullable column, so unshared calendars all keep NULL.
|
||||
// The column is explicitly utf8mb4_bin: the table default is utf8mb4_general_ci,
|
||||
// which compares case-insensitively, and the key alphabet is mixed-case
|
||||
// base64url - a _ci column would throw away entropy on lookup and make the
|
||||
// UNIQUE index blind to case.
|
||||
mysqli_query($mysqli, "ALTER TABLE `calendars`
|
||||
ADD COLUMN `calendar_feed_key` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL AFTER `calendar_color`,
|
||||
ADD COLUMN `calendar_feed_busy_only` tinyint(1) NOT NULL DEFAULT 0 AFTER `calendar_feed_key`,
|
||||
ADD COLUMN `calendar_feed_created_at` datetime DEFAULT NULL AFTER `calendar_feed_busy_only`,
|
||||
ADD COLUMN `calendar_feed_accessed_at` datetime DEFAULT NULL AFTER `calendar_feed_created_at`,
|
||||
ADD UNIQUE KEY `calendar_feed_key` (`calendar_feed_key`)");
|
||||
28
admin/database_updates/2.5.9.php
Normal file
28
admin/database_updates/2.5.9.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* ITFlow - Database update to version 2.5.9 (from 2.5.8)
|
||||
* Included by admin/database_updates.php - do not access directly
|
||||
*/
|
||||
|
||||
defined('FROM_DB_UPDATER') || die("Direct file access is not allowed");
|
||||
|
||||
// Events can now be marked all-day explicitly. Until now calendar_events had
|
||||
// no all-day column at all - FullCalendar inferred it from a start value with
|
||||
// no time component, which meant a genuine midnight appointment was
|
||||
// indistinguishable from an all-day event.
|
||||
mysqli_query($mysqli, "ALTER TABLE `calendar_events`
|
||||
ADD COLUMN `event_all_day` tinyint(1) NOT NULL DEFAULT 0 AFTER `event_end`");
|
||||
|
||||
// Backfill using the same rule the calendar already rendered by, so existing
|
||||
// events keep displaying exactly as they do today: a midnight start, and
|
||||
// either no end or a midnight end.
|
||||
mysqli_query($mysqli, "UPDATE `calendar_events`
|
||||
SET `event_all_day` = 1
|
||||
WHERE TIME(`event_start`) = '00:00:00'
|
||||
AND (`event_end` IS NULL OR TIME(`event_end`) = '00:00:00')");
|
||||
|
||||
// Corrects the collation on installs that already applied 2.5.8 before the
|
||||
// column was pinned to utf8mb4_bin. Harmless to re-run.
|
||||
mysqli_query($mysqli, "ALTER TABLE `calendars`
|
||||
MODIFY COLUMN `calendar_feed_key` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL");
|
||||
Reference in New Issue
Block a user