diff --git a/resources/sql/autopatches/20170811.differential.03.modernxaction.php b/resources/sql/autopatches/20170811.differential.03.modernxaction.php new file mode 100644 --- /dev/null +++ b/resources/sql/autopatches/20170811.differential.03.modernxaction.php @@ -0,0 +1,38 @@ + 'needs-review', + '1' => 'needs-revision', + '2' => 'accepted', + '3' => 'published', + '4' => 'abandoned', + '5' => 'changes-planned', +); + +$table = new DifferentialTransaction(); +$conn = $table->establishConnection('w'); + +foreach (new LiskMigrationIterator($table) as $xaction) { + $type = $xaction->getTransactionType(); + + if (($type != 'differential:status') && + ($type != 'differential.revision.status')) { + continue; + } + + $old = $xaction->getOldValue(); + $new = $xaction->getNewValue(); + + $old = idx($map, $old, $old); + $new = idx($map, $new, $new); + + queryfx( + $conn, + 'UPDATE %T SET transactionType = %s, oldValue = %s, newValue = %s + WHERE id = %d', + $table->getTableName(), + 'differential.revision.status', + json_encode($old), + json_encode($new), + $xaction->getID()); +} diff --git a/src/applications/differential/constants/DifferentialRevisionStatus.php b/src/applications/differential/constants/DifferentialRevisionStatus.php --- a/src/applications/differential/constants/DifferentialRevisionStatus.php +++ b/src/applications/differential/constants/DifferentialRevisionStatus.php @@ -88,27 +88,6 @@ return $result; } - public static function newForLegacyStatus($legacy_status) { - $result = new self(); - - $map = self::getMap(); - foreach ($map as $key => $spec) { - if (!isset($spec['legacy'])) { - continue; - } - - if ($spec['legacy'] != $legacy_status) { - continue; - } - - $result->key = $key; - $result->spec = $spec; - break; - } - - return $result; - } - public static function getAll() { $result = array(); diff --git a/src/applications/differential/editor/DifferentialTransactionEditor.php b/src/applications/differential/editor/DifferentialTransactionEditor.php --- a/src/applications/differential/editor/DifferentialTransactionEditor.php +++ b/src/applications/differential/editor/DifferentialTransactionEditor.php @@ -535,27 +535,25 @@ return $xactions; } - $old_legacy_status = $revision->getLegacyRevisionStatus(); - $revision->setModernRevisionStatus($new_status); - $new_legacy_status = $revision->getLegacyRevisionStatus(); - if ($new_legacy_status == $old_legacy_status) { + $old_status = $revision->getModernRevisionStatus(); + if ($new_status == $old_status) { return $xactions; } $xaction = id(new DifferentialTransaction()) ->setTransactionType( DifferentialRevisionStatusTransaction::TRANSACTIONTYPE) - ->setOldValue($old_legacy_status) - ->setNewValue($new_legacy_status); + ->setOldValue($old_status) + ->setNewValue($new_status); $xaction = $this->populateTransaction($revision, $xaction) ->save(); $xactions[] = $xaction; // Save the status adjustment we made earlier. - // TODO: This can be a little cleaner and more obvious once storage - // migrates. - $revision->save(); + $revision + ->setModernRevisionStatus($new_status) + ->save(); return $xactions; } diff --git a/src/applications/differential/storage/DifferentialTransaction.php b/src/applications/differential/storage/DifferentialTransaction.php --- a/src/applications/differential/storage/DifferentialTransaction.php +++ b/src/applications/differential/storage/DifferentialTransaction.php @@ -41,10 +41,6 @@ } } - if ($xaction_type == 'differential:status') { - return new DifferentialRevisionStatusTransaction(); - } - return parent::newFallbackModularTransactionType(); } @@ -513,13 +509,8 @@ } private function isStatusTransaction($xaction) { - $old_status = 'differential:status'; - if ($xaction->getTransactionType() == $old_status) { - return true; - } - - $new_status = DifferentialRevisionStatusTransaction::TRANSACTIONTYPE; - if ($xaction->getTransactionType() == $new_status) { + $status_type = DifferentialRevisionStatusTransaction::TRANSACTIONTYPE; + if ($xaction->getTransactionType() == $status_type) { return true; } diff --git a/src/applications/differential/xaction/DifferentialRevisionStatusTransaction.php b/src/applications/differential/xaction/DifferentialRevisionStatusTransaction.php --- a/src/applications/differential/xaction/DifferentialRevisionStatusTransaction.php +++ b/src/applications/differential/xaction/DifferentialRevisionStatusTransaction.php @@ -6,11 +6,11 @@ const TRANSACTIONTYPE = 'differential.revision.status'; public function generateOldValue($object) { - return $object->getLegacyRevisionStatus(); + return $object->getModernRevisionStatus(); } public function applyInternalEffects($object, $value) { - $object->setLegacyRevisionStatus($value); + $object->setModernRevisionStatus($value); } public function getTitle() { @@ -67,7 +67,7 @@ private function newStatusObject() { $new = $this->getNewValue(); - return DifferentialRevisionStatus::newForLegacyStatus($new); + return DifferentialRevisionStatus::newForStatus($new); } }