Path: blob/master/src/applications/people/xaction/PhabricatorUserApproveTransaction.php
12256 views
<?php12final class PhabricatorUserApproveTransaction3extends PhabricatorUserTransactionType {45const TRANSACTIONTYPE = 'user.approve';67public function generateOldValue($object) {8return (bool)$object->getIsApproved();9}1011public function generateNewValue($object, $value) {12return (bool)$value;13}1415public function applyInternalEffects($object, $value) {16$object->setIsApproved((int)$value);17}1819public function applyExternalEffects($object, $value) {20$user = $object;2122$actor = $this->getActor();23$title = pht(24'%s Account "%s" Approved',25PlatformSymbols::getPlatformServerName(),26$user->getUsername());2728$body = sprintf(29"%s\n\n %s\n\n",30pht(31'Your Phabricator account (%s) has been approved. You can '.32'login here:',33PlatformSymbols::getPlatformServerName(),34$user->getUsername()),35PhabricatorEnv::getProductionURI('/'));3637$mail = id(new PhabricatorMetaMTAMail())38->addTos(array($user->getPHID()))39->setSubject('[FreeBSD] '.$title)40->setForceDelivery(true)41->setBody($body)42->saveAndSend();43}4445public function getTitle() {46$new = $this->getNewValue();47if ($new) {48return pht(49'%s approved this user.',50$this->renderAuthor());51} else {52return pht(53'%s rejected this user.',54$this->renderAuthor());55}56}5758public function shouldHideForFeed() {59return true;60}6162public function validateTransactions($object, array $xactions) {63$actor = $this->getActor();64$errors = array();6566foreach ($xactions as $xaction) {67$is_approved = (bool)$object->getIsApproved();6869if ((bool)$xaction->getNewValue() === $is_approved) {70continue;71}7273$is_admin = $actor->getIsAdmin();74$is_omnipotent = $actor->isOmnipotent();7576if (!$is_admin && !$is_omnipotent) {77$errors[] = $this->newInvalidError(78pht('You must be an administrator to approve users.'));79}80}8182return $errors;83}8485public function getRequiredCapabilities(86$object,87PhabricatorApplicationTransaction $xaction) {8889// Unlike normal user edits, approvals require admin permissions, which90// is enforced by validateTransactions().9192return null;93}94}959697