/**
 * @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);
    }
}