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 | |||||