mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-30 01:10:58 +01:00
3164ff68db
Summary: Ref T10747. - Store recurrence as RRULEs internally. - Use RRULE constants. - Migrate existing rules to RRULEs. Test Plan: Ran migration, nothing seemed broken? Reviewers: chad Reviewed By: chad Maniphest Tasks: T10747 Differential Revision: https://secure.phabricator.com/D16670
44 lines
1 KiB
PHP
44 lines
1 KiB
PHP
<?php
|
|
|
|
$table = new PhabricatorCalendarEvent();
|
|
$conn = $table->establishConnection('w');
|
|
$table_name = 'calendar_event';
|
|
|
|
foreach (new LiskRawMigrationIterator($conn, $table_name) as $row) {
|
|
$parameters = phutil_json_decode($row['parameters']);
|
|
if (isset($parameters['recurrenceRule'])) {
|
|
// This event has already been migrated.
|
|
continue;
|
|
}
|
|
|
|
if (!$row['isRecurring']) {
|
|
continue;
|
|
}
|
|
|
|
$old_rule = $row['recurrenceFrequency'];
|
|
if (!$old_rule) {
|
|
continue;
|
|
}
|
|
|
|
try {
|
|
$frequency = phutil_json_decode($old_rule);
|
|
if ($frequency) {
|
|
$frequency_rule = $frequency['rule'];
|
|
$frequency_rule = phutil_utf8_strtoupper($frequency_rule);
|
|
|
|
$rrule = id(new PhutilCalendarRecurrenceRule())
|
|
->setFrequency($frequency_rule);
|
|
}
|
|
} catch (Exception $ex) {
|
|
continue;
|
|
}
|
|
|
|
$parameters['recurrenceRule'] = $rrule->toDictionary();
|
|
|
|
queryfx(
|
|
$conn,
|
|
'UPDATE %T SET parameters = %s WHERE id = %d',
|
|
$table_name,
|
|
phutil_json_encode($parameters),
|
|
$row['id']);
|
|
}
|