Changeset View
Changeset View
Standalone View
Standalone View
resources/sql/autopatches/20170410.calendar.01.repair.php
- This file was added.
<?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); | |||||
} |