mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-18 21:02:41 +01:00
Migrate old task transactions to use new display code
Summary: Ref T6027. This converts the old transaction records to the new format so we don't have to keep legacy code around. Test Plan: Migrated tasks, browsed around, looked at transaction records, didn't see any issues. Reviewers: chad Reviewed By: chad Maniphest Tasks: T6027 Differential Revision: https://secure.phabricator.com/D15637
This commit is contained in:
parent
ecd4dd4e0b
commit
8bca296ac1
1 changed files with 84 additions and 0 deletions
84
resources/sql/autopatches/20160406.columns.1.php
Normal file
84
resources/sql/autopatches/20160406.columns.1.php
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$table = new ManiphestTransaction();
|
||||||
|
$conn_w = $table->establishConnection('w');
|
||||||
|
|
||||||
|
foreach (new LiskMigrationIterator($table) as $xaction) {
|
||||||
|
$type = $xaction->getTransactionType();
|
||||||
|
$id = $xaction->getID();
|
||||||
|
|
||||||
|
// This is an old ManiphestTransaction::TYPE_COLUMN. It did not do anything
|
||||||
|
// on its own and was hidden from the UI, so we're just going to remove it.
|
||||||
|
if ($type == 'column') {
|
||||||
|
queryfx(
|
||||||
|
$conn_w,
|
||||||
|
'DELETE FROM %T WHERE id = %d',
|
||||||
|
$table->getTableName(),
|
||||||
|
$id);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is an old ManiphestTransaction::TYPE_PROJECT_COLUMN. It moved
|
||||||
|
// tasks between board columns; we're going to replace it with a modern
|
||||||
|
// PhabricatorTransactions::TYPE_COLUMNS transaction.
|
||||||
|
if ($type == 'projectcolumn') {
|
||||||
|
try {
|
||||||
|
$new = $xaction->getNewValue();
|
||||||
|
if (!$new || !is_array($new)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$column_phids = idx($new, 'columnPHIDs');
|
||||||
|
if (!is_array($column_phids) || !$column_phids) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$column_phid = head($column_phids);
|
||||||
|
if (!$column_phid) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$board_phid = idx($new, 'projectPHID');
|
||||||
|
if (!$board_phid) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$before_phid = idx($new, 'beforePHID');
|
||||||
|
$after_phid = idx($new, 'afterPHID');
|
||||||
|
|
||||||
|
$old = $xaction->getOldValue();
|
||||||
|
if ($old && is_array($old)) {
|
||||||
|
$from_phids = idx($old, 'columnPHIDs');
|
||||||
|
$from_phids = array_values($from_phids);
|
||||||
|
} else {
|
||||||
|
$from_phids = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
$replacement = array(
|
||||||
|
'columnPHID' => $column_phid,
|
||||||
|
'boardPHID' => $board_phid,
|
||||||
|
'fromColumnPHIDs' => $from_phids,
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($before_phid) {
|
||||||
|
$replacement['beforePHID'] = $before_phid;
|
||||||
|
} else if ($after_phid) {
|
||||||
|
$replacement['afterPHID'] = $after_phid;
|
||||||
|
}
|
||||||
|
|
||||||
|
queryfx(
|
||||||
|
$conn_w,
|
||||||
|
'UPDATE %T SET transactionType = %s, oldValue = %s, newValue = %s
|
||||||
|
WHERE id = %d',
|
||||||
|
$table->getTableName(),
|
||||||
|
PhabricatorTransactions::TYPE_COLUMNS,
|
||||||
|
'null',
|
||||||
|
phutil_json_encode(array($replacement)),
|
||||||
|
$id);
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
// If anything went awry, just move on.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue