Changeset View
Changeset View
Standalone View
Standalone View
resources/sql/autopatches/20170811.differential.01.status.php
- This file was added.
| <?php | |||||
| // Migrate saved Differential revision queries from using a "<select />" | |||||
| // control with hard-coded status groups for status selection to using a | |||||
| // tokenizer with status functions. | |||||
| $table = new PhabricatorSavedQuery(); | |||||
| $conn = $table->establishConnection('w'); | |||||
| $status_map = array( | |||||
| 'status-open' => array('open()'), | |||||
| 'status-closed' => array('closed()'), | |||||
| 'status-accepted' => array('accepted'), | |||||
| 'status-needs-review' => array('needs-review'), | |||||
| 'status-needs-revision' => array('needs-revision'), | |||||
| 'status-abandoned' => array('abandoned'), | |||||
| ); | |||||
| foreach (new LiskMigrationIterator($table) as $query) { | |||||
| if ($query->getEngineClassName() !== 'DifferentialRevisionSearchEngine') { | |||||
| // This isn't a revision query. | |||||
| continue; | |||||
| } | |||||
| $parameters = $query->getParameters(); | |||||
| $status = idx($parameters, 'status'); | |||||
| if (!$status) { | |||||
| // This query didn't specify a "status" value. | |||||
| continue; | |||||
| } | |||||
| if (!isset($status_map[$status])) { | |||||
| // The "status" value is unknown, or does not correspond to a | |||||
| // modern "status" constraint. | |||||
| continue; | |||||
| } | |||||
| $parameters['statuses'] = $status_map[$status]; | |||||
| queryfx( | |||||
| $conn, | |||||
| 'UPDATE %T SET parameters = %s WHERE id = %d', | |||||
| $table->getTableName(), | |||||
| phutil_json_encode($parameters), | |||||
| $query->getID()); | |||||
| } | |||||