芝麻web文件管理V1.00
编辑当前文件:/home/pulsehostuk9/public_html/cloud.pulsehost.co.uk/vendor/afterlogic/dav/bin/migrateto32.php
#!/usr/bin/env php setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); $driver = $pdo->getAttribute(PDO::ATTR_DRIVER_NAME); switch ($driver) { case 'mysql': echo "Detected MySQL.\n"; break; case 'sqlite': echo "Detected SQLite.\n"; break; default: echo "Error: unsupported driver: " . $driver . "\n"; die(-1); } echo "Creating 'calendarinstances'\n"; $addValueType = false; try { $result = $pdo->query("SELECT * FROM ".$prefix."calendarinstances LIMIT 1"); $result->fetch(\PDO::FETCH_ASSOC); echo "calendarinstances exists. Assuming this part of the migration has already been done.\n"; } catch (Exception $e) { echo "calendarinstances does not yet exist. Creating table and migrating data.\n"; switch ($driver) { case 'mysql': $pdo->exec( " CREATE TABLE ".$prefix."calendarinstances ( id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, calendarid INTEGER UNSIGNED NOT NULL, principaluri VARBINARY(100), access TINYINT(1) NOT NULL DEFAULT '1' COMMENT '1 = owner, 2 = read, 3 = readwrite', displayname VARCHAR(100), uri VARBINARY(200), description TEXT, calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0', calendarcolor VARBINARY(10), timezone TEXT, transparent TINYINT(1) NOT NULL DEFAULT '0', share_href VARBINARY(100), share_displayname VARCHAR(100), share_invitestatus TINYINT(1) NOT NULL DEFAULT '2' COMMENT '1 = noresponse, 2 = accepted, 3 = declined, 4 = invalid', public TINYINT(1) NOT NULL DEFAULT '0', UNIQUE(principaluri, uri), UNIQUE(calendarid, principaluri), UNIQUE(calendarid, share_href) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ); $pdo->exec(" INSERT INTO ".$prefix."calendarinstances ( calendarid, principaluri, access, displayname, uri, description, calendarorder, calendarcolor, transparent ) SELECT id, principaluri, 1, displayname, uri, description, calendarorder, calendarcolor, transparent FROM ".$prefix."calendars "); break; case 'sqlite': $pdo->exec( " CREATE TABLE ".$prefix."calendarinstances ( id integer primary key asc NOT NULL, calendarid integer, principaluri text, access integer COMMENT '1 = owner, 2 = read, 3 = readwrite' NOT NULL DEFAULT '1', displayname text, uri text NOT NULL, description text, calendarorder integer, calendarcolor text, timezone text, transparent bool, share_href text, share_displayname text, share_invitestatus integer DEFAULT '2', UNIQUE (principaluri, uri), UNIQUE (calendarid, principaluri), UNIQUE (calendarid, share_href) ); " ); $pdo->exec(" INSERT INTO ".$prefix."calendarinstances ( calendarid, principaluri, access, displayname, uri, description, calendarorder, calendarcolor, transparent ) SELECT id, principaluri, 1, displayname, uri, description, calendarorder, calendarcolor, transparent FROM ".$prefix."calendars "); break; } } try { $result = $pdo->query("SELECT * FROM ".$prefix."calendars LIMIT 1"); $row = $result->fetch(\PDO::FETCH_ASSOC); if (!$row) { echo "Source table is empty.\n"; $migrateCalendars = true; } $columnCount = count($row); if ($columnCount === 3) { echo "The calendars table has 3 columns already. Assuming this part of the migration was already done.\n"; $migrateCalendars = false; } else { echo "The calendars table has " . $columnCount . " columns.\n"; $migrateCalendars = true; } } catch (Exception $e) { echo "calendars table does not exist. This is a major problem. Exiting.\n"; exit(-1); } if ($migrateCalendars) { $calendarBackup = 'calendars_3_1_' . $backupPostfix; echo "Backing up 'calendars' to '", $calendarBackup, "'\n"; switch ($driver) { case 'mysql': $pdo->exec("RENAME TABLE ".$prefix."calendars TO " . $calendarBackup); break; case 'sqlite': $pdo->exec("ALTER TABLE ".$prefix."calendars RENAME TO " . $calendarBackup); break; } echo "Creating new calendars table.\n"; switch ($driver) { case 'mysql': $pdo->exec( " CREATE TABLE ".$prefix."calendars ( id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, synctoken INTEGER UNSIGNED NOT NULL DEFAULT '1', components VARBINARY(21) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; " ); break; case 'sqlite': $pdo->exec( " CREATE TABLE ".$prefix."calendars ( id integer primary key asc NOT NULL, synctoken integer DEFAULT 1 NOT NULL, components text NOT NULL ); " ); break; } echo "Migrating data from old to new table\n"; $pdo->exec( " INSERT INTO ".$prefix."calendars (id, synctoken, components) SELECT id, synctoken, COALESCE(components,\"VEVENT,VTODO,VJOURNAL\") as components FROM $calendarBackup " ); } echo "Upgrade to 3.2 schema completed.\n";