/** * @param int $from_version * @return array|string[] */ function dav_get_update_statements($from_version) { $stms = array(); if ($from_version == 1) { $stms[] = "ALTER TABLE `dav_calendarobjects`\n\t\t\tADD `calendar_id` INT NOT NULL AFTER `namespace_id` ,\n\t\t\tADD `user_temp` INT NOT NULL AFTER `calendar_id` "; $stms[] = "ALTER TABLE `dav_calendarobjects`\n\t\t\tADD `componentType` ENUM( 'VEVENT', 'VTODO' ) NOT NULL DEFAULT 'VEVENT' AFTER `lastmodified` ,\n\t\t\tADD `firstOccurence` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `componentType` ,\n\t\t\tADD `lastOccurence` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `firstOccurence`"; $stms[] = "UPDATE dav_calendarobjects a JOIN dav_calendars b ON a.namespace = b.namespace AND a.namespace_id = b.namespace_id SET a.user_temp = b.uid"; $stms[] = "DROP TABLE IF EXISTS\n\t\t\t`dav_addressbooks_community` ,\n\t\t\t`dav_addressbooks_phone` ,\n\t\t\t`dav_cache_synchronized` ,\n\t\t\t`dav_caldav_log` ,\n\t\t\t`dav_calendars` ,\n\t\t\t`dav_cal_virtual_object_cache` ,\n\t\t\t`dav_cards` ,\n\t\t\t`dav_jqcalendar` ,\n\t\t\t`dav_locks` ,\n\t\t\t`dav_notifications` ;"; $stms = array_merge($stms, dav_get_create_statements(array("dav_calendarobjects"))); $user_ids = q("SELECT DISTINCT `uid` FROM %s%scalendars", CALDAV_SQL_DB, CALDAV_SQL_PREFIX); foreach ($user_ids as $user) { $stms = array_merge($stms, wdcal_create_std_calendars_get_statements($user["uid"], false)); } $stms[] = "UPDATE dav_calendarobjects a JOIN dav_calendars b\n\t\t\tON b.`namespace` = " . CALDAV_NAMESPACE_PRIVATE . " AND a.`user_temp` = b.`namespace_id` AND b.`uri` = 'private'\n\t\t\tSET a.`calendar_id` = b.`id`"; $stms[] = "ALTER TABLE `dav_calendarobjects` DROP `namespace`, DROP `namespace_id`, DROP `user_temp`"; } if (in_array($from_version, array(1, 2))) { $stms[] = "CREATE TABLE IF NOT EXISTS `dav_addressbooks` (\n `id` int(11) unsigned NOT NULL AUTO_INCREMENT,\n `namespace` mediumint(9) NOT NULL,\n `namespace_id` int(11) unsigned NOT NULL,\n `displayname` varchar(200) NOT NULL,\n `description` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,\n `needs_rebuild` TINYINT NOT NULL DEFAULT '1',\n `uri` varchar(50) NOT NULL,\n `ctag` int(11) unsigned NOT NULL DEFAULT '1',\n PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;"; $stms[] = "CREATE TABLE IF NOT EXISTS `dav_addressbookobjects` (\n `id` int(11) unsigned NOT NULL AUTO_INCREMENT,\n `addressbook_id` int(11) unsigned NOT NULL,\n `contact` int(11) DEFAULT NULL,\n `carddata` mediumtext CHARACTER SET utf8 COLLATE utf8_unicode_ci,\n `uri` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,\n `lastmodified` timestamp NULL DEFAULT NULL,\n `needs_rebuild` tinyint(4) NOT NULL DEFAULT '0',\n `manually_deleted` tinyint(4) NOT NULL DEFAULT '0',\n `etag` varchar(15) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,\n `size` int(10) unsigned NOT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `namespace` (`addressbook_id`,`contact`),\n KEY `contact` (`contact`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;"; } return $stms; }
/** */ function wdcal_create_std_calendars() { $a = get_app(); if (!local_user()) { return; } $privates = q("SELECT COUNT(*) num FROM %s%scalendars WHERE `namespace` = %d AND `namespace_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CALDAV_NAMESPACE_PRIVATE, IntVal($a->user["uid"])); if ($privates[0]["num"] > 0) { return; } $stms = wdcal_create_std_calendars_get_statements($a->user["uid"]); foreach ($stms as $stmt) { q($stmt); } }