Path: blob/master/src/applications/packages/xaction/package/PhabricatorPackagesPackagePublisherTransaction.php
12242 views
<?php12final class PhabricatorPackagesPackagePublisherTransaction3extends PhabricatorPackagesPackageTransactionType {45const TRANSACTIONTYPE = 'packages.package.publisher';67public function generateOldValue($object) {8return $object->getPublisherPHID();9}1011public function applyInternalEffects($object, $value) {12$object->setPublisherPHID($value);13}1415public function validateTransactions($object, array $xactions) {16$errors = array();1718$current_value = $object->getPublisherPHID();19if ($this->isEmptyTextTransaction($current_value, $xactions)) {20$errors[] = $this->newRequiredError(21pht(22'You must select a publisher when creating a package.'));23return $errors;24}2526if (!$this->isNewObject()) {27foreach ($xactions as $xaction) {28$errors[] = $this->newInvalidError(29pht('Once a package is created, its publisher can not be changed.'),30$xaction);31}32}3334$viewer = $this->getActor();35foreach ($xactions as $xaction) {36$publisher_phid = $xaction->getNewValue();3738$publisher = id(new PhabricatorPackagesPublisherQuery())39->setViewer($viewer)40->withPHIDs(array($publisher_phid))41->setRaisePolicyExceptions(false)42->requireCapabilities(43array(44PhabricatorPolicyCapability::CAN_VIEW,45PhabricatorPolicyCapability::CAN_EDIT,46))47->executeOne();4849if (!$publisher) {50$errors[] = $this->newInvalidError(51pht(52'Publisher "%s" is invalid: the publisher must exist and you '.53'must have permission to edit it in order to create a new '.54'package.',55$publisher_phid),56$xaction);57continue;58}5960$object->attachPublisher($publisher);61}6263return $errors;64}6566}676869