Changeset View
Changeset View
Standalone View
Standalone View
src/applications/conpherence/editor/ConpherenceEditor.php
Show First 20 Lines • Show All 335 Lines • ▼ Show 20 Lines | protected function requireCapabilities( | ||||
switch ($xaction->getTransactionType()) { | switch ($xaction->getTransactionType()) { | ||||
case ConpherenceTransaction::TYPE_PARTICIPANTS: | case ConpherenceTransaction::TYPE_PARTICIPANTS: | ||||
$old_map = array_fuse($xaction->getOldValue()); | $old_map = array_fuse($xaction->getOldValue()); | ||||
$new_map = array_fuse($xaction->getNewValue()); | $new_map = array_fuse($xaction->getNewValue()); | ||||
$add = array_keys(array_diff_key($new_map, $old_map)); | $add = array_keys(array_diff_key($new_map, $old_map)); | ||||
$rem = array_keys(array_diff_key($old_map, $new_map)); | $rem = array_keys(array_diff_key($old_map, $new_map)); | ||||
$actor_phid = $this->requireActor()->getPHID(); | $actor_phid = $this->getActingAsPHID(); | ||||
// You need CAN_EDIT to change participants other than yourself. | $is_join = (($add === array($actor_phid)) && !$rem); | ||||
$is_leave = (($rem === array($actor_phid)) && !$add); | |||||
if ($is_join) { | |||||
// Anyone can join a thread they can see. | |||||
} else if ($is_leave) { | |||||
// Anyone can leave a thread. | |||||
} else { | |||||
// You need CAN_EDIT to add or remove participants. For additional | |||||
// discussion, see D17696 and T4411. | |||||
PhabricatorPolicyFilter::requireCapability( | PhabricatorPolicyFilter::requireCapability( | ||||
$this->requireActor(), | $this->requireActor(), | ||||
$object, | $object, | ||||
PhabricatorPolicyCapability::CAN_EDIT); | PhabricatorPolicyCapability::CAN_EDIT); | ||||
} | |||||
break; | break; | ||||
case ConpherenceThreadTitleTransaction::TRANSACTIONTYPE: | case ConpherenceThreadTitleTransaction::TRANSACTIONTYPE: | ||||
case ConpherenceThreadTopicTransaction::TRANSACTIONTYPE: | case ConpherenceThreadTopicTransaction::TRANSACTIONTYPE: | ||||
PhabricatorPolicyFilter::requireCapability( | PhabricatorPolicyFilter::requireCapability( | ||||
$this->requireActor(), | $this->requireActor(), | ||||
$object, | $object, | ||||
PhabricatorPolicyCapability::CAN_EDIT); | PhabricatorPolicyCapability::CAN_EDIT); | ||||
▲ Show 20 Lines • Show All 159 Lines • Show Last 20 Lines |