1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-30 10:42:41 +01:00
phorge-phorge/resources/sql/autopatches/20170410.calendar.01.repair.php
epriestley d4d46501ed Add a repair migration to fix legacy Calendar events without "utcInstanceEpoch"
Summary: Fixes T12488. Some events appear to have survived earlier migrations without getting completely fixed. Fix them.

Test Plan:
  - Ran migration locally with `bin/storage upgrade` (but: I could not reproduce this problem locally).
  - Ran migration in production and saw ICS import stop fataling.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T12488

Differential Revision: https://secure.phabricator.com/D17642
2017-04-10 08:47:07 -07:00

42 lines
1 KiB
PHP

<?php
// See T12488. Some events survived "20161004.cal.01.noepoch.php" without
// having "utcInstanceEpoch" computed, which breaks ICS export. This appears
// to be the result of some bug which has been fixed in the meantime, so just
// redo this part of the migration.
$table = new PhabricatorCalendarEvent();
$conn = $table->establishConnection('w');
$table_name = $table->getTableName();
$viewer = PhabricatorUser::getOmnipotentUser();
$all_events = id(new PhabricatorCalendarEventQuery())
->setViewer($viewer)
->execute();
foreach ($all_events as $event) {
$id = $event->getID();
if (!$event->getInstanceOfEventPHID()) {
// Not a child event, so no instance epoch.
continue;
}
if ($event->getUTCInstanceEpoch()) {
// Already has an instance epoch.
continue;
}
try {
$event->updateUTCEpochs();
} catch (Exception $ex) {
phlog($ex);
continue;
}
queryfx(
$conn,
'UPDATE %T SET utcInstanceEpoch = %nd WHERE id = %d',
$table_name,
$event->getUTCInstanceEpoch(),
$id);
}