mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-23 15:22:41 +01:00
Route attached objects through new editor
Summary: Ref T2217. Nothing too surprising here. This transaction type is weird and should be replaced with the mainstream EDGE type at some point after things clear up more. Test Plan: Attached and detached revisions and mocks. Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T2217 Differential Revision: https://secure.phabricator.com/D7085
This commit is contained in:
parent
9afbb9b83b
commit
889eac44ae
3 changed files with 31 additions and 11 deletions
|
@ -15,6 +15,7 @@ final class ManiphestTransactionEditorPro
|
||||||
$types[] = ManiphestTransactionPro::TYPE_CCS;
|
$types[] = ManiphestTransactionPro::TYPE_CCS;
|
||||||
$types[] = ManiphestTransactionPro::TYPE_PROJECTS;
|
$types[] = ManiphestTransactionPro::TYPE_PROJECTS;
|
||||||
$types[] = ManiphestTransactionPro::TYPE_ATTACH;
|
$types[] = ManiphestTransactionPro::TYPE_ATTACH;
|
||||||
|
$types[] = ManiphestTransactionPro::TYPE_EDGE;
|
||||||
|
|
||||||
return $types;
|
return $types;
|
||||||
}
|
}
|
||||||
|
@ -40,6 +41,9 @@ final class ManiphestTransactionEditorPro
|
||||||
return $object->getProjectPHIDs();
|
return $object->getProjectPHIDs();
|
||||||
case ManiphestTransactionPro::TYPE_ATTACH:
|
case ManiphestTransactionPro::TYPE_ATTACH:
|
||||||
return $object->getAttached();
|
return $object->getAttached();
|
||||||
|
case ManiphestTransactionPro::TYPE_EDGE:
|
||||||
|
// These are pre-populated.
|
||||||
|
return $xaction->getOldValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -58,6 +62,7 @@ final class ManiphestTransactionEditorPro
|
||||||
case ManiphestTransactionPro::TYPE_CCS:
|
case ManiphestTransactionPro::TYPE_CCS:
|
||||||
case ManiphestTransactionPro::TYPE_PROJECTS:
|
case ManiphestTransactionPro::TYPE_PROJECTS:
|
||||||
case ManiphestTransactionPro::TYPE_ATTACH:
|
case ManiphestTransactionPro::TYPE_ATTACH:
|
||||||
|
case ManiphestTransactionPro::TYPE_EDGE:
|
||||||
return $xaction->getNewValue();
|
return $xaction->getNewValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,6 +89,10 @@ final class ManiphestTransactionEditorPro
|
||||||
return $object->setProjectPHIDs($xaction->getNewValue());
|
return $object->setProjectPHIDs($xaction->getNewValue());
|
||||||
case ManiphestTransactionPro::TYPE_ATTACH:
|
case ManiphestTransactionPro::TYPE_ATTACH:
|
||||||
return $object->setAttached($xaction->getNewValue());
|
return $object->setAttached($xaction->getNewValue());
|
||||||
|
case ManiphestTransactionPro::TYPE_EDGE:
|
||||||
|
// These are a weird, funky mess and are already being applied by the
|
||||||
|
// time we reach this.
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,9 +55,16 @@ final class ManiphestEdgeEventListener extends PhutilEventListener {
|
||||||
unset($this->edges[$id]);
|
unset($this->edges[$id]);
|
||||||
unset($this->tasks[$id]);
|
unset($this->tasks[$id]);
|
||||||
|
|
||||||
|
$content_source = PhabricatorContentSource::newForSource(
|
||||||
|
PhabricatorContentSource::SOURCE_LEGACY,
|
||||||
|
array());
|
||||||
|
|
||||||
$new_edges = $this->loadAllEdges($event);
|
$new_edges = $this->loadAllEdges($event);
|
||||||
$editor = new ManiphestTransactionEditor();
|
$editor = id(new ManiphestTransactionEditorPro())
|
||||||
$editor->setActor($event->getUser());
|
->setActor($event->getUser())
|
||||||
|
->setContentSource($content_source)
|
||||||
|
->setContinueOnNoEffect(true)
|
||||||
|
->setContinueOnMissingFields(true);
|
||||||
|
|
||||||
foreach ($tasks as $phid => $task) {
|
foreach ($tasks as $phid => $task) {
|
||||||
$xactions = array();
|
$xactions = array();
|
||||||
|
@ -74,16 +81,11 @@ final class ManiphestEdgeEventListener extends PhutilEventListener {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$xactions[] = id(new ManiphestTransaction())
|
$xactions[] = id(new ManiphestTransactionPro())
|
||||||
->setTransactionType(ManiphestTransactionType::TYPE_EDGE)
|
->setTransactionType(ManiphestTransactionType::TYPE_EDGE)
|
||||||
->setOldValue($old_type)
|
->setOldValue($old_type)
|
||||||
->setNewValue($new_type)
|
->setNewValue($new_type)
|
||||||
->setMetadataValue('edge:type', $type)
|
->setMetadataValue('edge:type', $type);
|
||||||
->setContentSource(
|
|
||||||
PhabricatorContentSource::newForSource(
|
|
||||||
PhabricatorContentSource::SOURCE_LEGACY,
|
|
||||||
array()))
|
|
||||||
->setAuthorPHID($event->getUser()->getPHID());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($xactions) {
|
if ($xactions) {
|
||||||
|
|
|
@ -657,8 +657,17 @@ abstract class PhabricatorApplicationTransactionEditor
|
||||||
"You can not apply transactions which already have commentVersions!");
|
"You can not apply transactions which already have commentVersions!");
|
||||||
}
|
}
|
||||||
|
|
||||||
$custom_field_type = PhabricatorTransactions::TYPE_CUSTOMFIELD;
|
$exempt_types = array(
|
||||||
if ($xaction->getTransactionType() != $custom_field_type) {
|
// CustomField logic currently prefills these before we enter the
|
||||||
|
// transaction editor.
|
||||||
|
PhabricatorTransactions::TYPE_CUSTOMFIELD => true,
|
||||||
|
|
||||||
|
// TODO: Remove this, this edge type is encumbered with a bunch of
|
||||||
|
// legacy nonsense.
|
||||||
|
ManiphestTransactionPro::TYPE_EDGE => true,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (empty($exempt_types[$xaction->getTransactionType()])) {
|
||||||
if ($xaction->getOldValue() !== null) {
|
if ($xaction->getOldValue() !== null) {
|
||||||
throw new Exception(
|
throw new Exception(
|
||||||
"You can not apply transactions which already have oldValue!");
|
"You can not apply transactions which already have oldValue!");
|
||||||
|
|
Loading…
Reference in a new issue