Path: blob/master/src/applications/people/xaction/PhabricatorUserEmpowerTransaction.php
12256 views
<?php12final class PhabricatorUserEmpowerTransaction3extends PhabricatorUserTransactionType {45const TRANSACTIONTYPE = 'user.admin';67public function generateOldValue($object) {8return (bool)$object->getIsAdmin();9}1011public function generateNewValue($object, $value) {12return (bool)$value;13}1415public function applyInternalEffects($object, $value) {16$object->setIsAdmin((int)$value);17}1819public function validateTransactions($object, array $xactions) {20$user = $object;21$actor = $this->getActor();2223$errors = array();24foreach ($xactions as $xaction) {25$old = $xaction->getOldValue();26$new = $xaction->getNewValue();2728if ($old === $new) {29continue;30}3132if ($user->getPHID() === $actor->getPHID()) {33$errors[] = $this->newInvalidError(34pht('After a time, your efforts fail. You can not adjust your own '.35'status as an administrator.'), $xaction);36}3738$is_admin = $actor->getIsAdmin();39$is_omnipotent = $actor->isOmnipotent();4041if (!$is_admin && !$is_omnipotent) {42$errors[] = $this->newInvalidError(43pht('You must be an administrator to create administrators.'),44$xaction);45}46}4748return $errors;49}5051public function getTitle() {52$new = $this->getNewValue();53if ($new) {54return pht(55'%s empowered this user as an administrator.',56$this->renderAuthor());57} else {58return pht(59'%s defrocked this user.',60$this->renderAuthor());61}62}6364public function getTitleForFeed() {65$new = $this->getNewValue();66if ($new) {67return pht(68'%s empowered %s as an administrator.',69$this->renderAuthor(),70$this->renderObject());71} else {72return pht(73'%s defrocked %s.',74$this->renderAuthor(),75$this->renderObject());76}77}7879public function getRequiredCapabilities(80$object,81PhabricatorApplicationTransaction $xaction) {8283// Unlike normal user edits, admin promotions require admin84// permissions, which is enforced by validateTransactions().8586return null;87}8889public function shouldTryMFA(90$object,91PhabricatorApplicationTransaction $xaction) {92return true;93}9495}969798