Differential D11116 Diff 26807 src/applications/project/editor/PhabricatorProjectTransactionEditor.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/editor/PhabricatorProjectTransactionEditor.php
Show First 20 Lines • Show All 174 Lines • ▼ Show 20 Lines | switch ($xaction->getTransactionType()) { | ||||
case PhabricatorProjectTransaction::TYPE_ICON: | case PhabricatorProjectTransaction::TYPE_ICON: | ||||
case PhabricatorProjectTransaction::TYPE_COLOR: | case PhabricatorProjectTransaction::TYPE_COLOR: | ||||
case PhabricatorProjectTransaction::TYPE_LOCKED: | case PhabricatorProjectTransaction::TYPE_LOCKED: | ||||
return; | return; | ||||
case PhabricatorTransactions::TYPE_EDGE: | case PhabricatorTransactions::TYPE_EDGE: | ||||
$edge_type = $xaction->getMetadataValue('edge:type'); | $edge_type = $xaction->getMetadataValue('edge:type'); | ||||
switch ($edge_type) { | switch ($edge_type) { | ||||
case PhabricatorProjectProjectHasMemberEdgeType::EDGECONST: | case PhabricatorProjectProjectHasMemberEdgeType::EDGECONST: | ||||
case PhabricatorEdgeConfig::TYPE_OBJECT_HAS_WATCHER: | case PhabricatorObjectHasWatcherEdgeType::EDGECONST: | ||||
$old = $xaction->getOldValue(); | $old = $xaction->getOldValue(); | ||||
$new = $xaction->getNewValue(); | $new = $xaction->getNewValue(); | ||||
// When adding members or watchers, we add subscriptions. | // When adding members or watchers, we add subscriptions. | ||||
$add = array_keys(array_diff_key($new, $old)); | $add = array_keys(array_diff_key($new, $old)); | ||||
// When removing members, we remove their subscription too. | // When removing members, we remove their subscription too. | ||||
// When unwatching, we leave subscriptions, since it's fine to be | // When unwatching, we leave subscriptions, since it's fine to be | ||||
Show All 24 Lines | switch ($xaction->getTransactionType()) { | ||||
->save(); | ->save(); | ||||
if ($rem) { | if ($rem) { | ||||
// When removing members, also remove any watches on the project. | // When removing members, also remove any watches on the project. | ||||
$edge_editor = new PhabricatorEdgeEditor(); | $edge_editor = new PhabricatorEdgeEditor(); | ||||
foreach ($rem as $rem_phid) { | foreach ($rem as $rem_phid) { | ||||
$edge_editor->removeEdge( | $edge_editor->removeEdge( | ||||
$object->getPHID(), | $object->getPHID(), | ||||
PhabricatorEdgeConfig::TYPE_OBJECT_HAS_WATCHER, | PhabricatorObjectHasWatcherEdgeType::EDGECONST, | ||||
$rem_phid); | $rem_phid); | ||||
} | } | ||||
$edge_editor->save(); | $edge_editor->save(); | ||||
} | } | ||||
break; | break; | ||||
} | } | ||||
return; | return; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 224 Lines • Show Last 20 Lines |