@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at recaptime-dev/main 44 lines 1.0 kB view raw
1<?php 2 3$table = new PhabricatorCalendarEvent(); 4$conn = $table->establishConnection('w'); 5$table_name = 'calendar_event'; 6 7foreach (new LiskRawMigrationIterator($conn, $table_name) as $row) { 8 $parameters = phutil_json_decode($row['parameters']); 9 if (isset($parameters['recurrenceRule'])) { 10 // This event has already been migrated. 11 continue; 12 } 13 14 if (!$row['isRecurring']) { 15 continue; 16 } 17 18 $old_rule = $row['recurrenceFrequency']; 19 if (!$old_rule) { 20 continue; 21 } 22 23 try { 24 $frequency = phutil_json_decode($old_rule); 25 if ($frequency) { 26 $frequency_rule = $frequency['rule']; 27 $frequency_rule = phutil_utf8_strtoupper($frequency_rule); 28 29 $rrule = id(new PhutilCalendarRecurrenceRule()) 30 ->setFrequency($frequency_rule); 31 } 32 } catch (Exception $ex) { 33 continue; 34 } 35 36 $parameters['recurrenceRule'] = $rrule->toDictionary(); 37 38 queryfx( 39 $conn, 40 'UPDATE %T SET parameters = %s WHERE id = %d', 41 $table_name, 42 phutil_json_encode($parameters), 43 $row['id']); 44}