Path: blob/master/src/applications/packages/xaction/version/PhabricatorPackagesVersionPackageTransaction.php
12242 views
<?php12final class PhabricatorPackagesVersionPackageTransaction3extends PhabricatorPackagesVersionTransactionType {45const TRANSACTIONTYPE = 'packages.version.package';67public function generateOldValue($object) {8return $object->getPackagePHID();9}1011public function applyInternalEffects($object, $value) {12$object->setPackagePHID($value);13}1415public function validateTransactions($object, array $xactions) {16$errors = array();1718if ($this->isEmptyTextTransaction($object->getPackagePHID(), $xactions)) {19$errors[] = $this->newRequiredError(20pht(21'You must select a package when creating a version'));22return $errors;23}2425if (!$this->isNewObject()) {26foreach ($xactions as $xaction) {27$errors[] = $this->newInvalidError(28pht('Once a version is created, its package can not be changed.'),29$xaction);30}31}3233$viewer = $this->getActor();34foreach ($xactions as $xaction) {35$package_phid = $xaction->getNewValue();3637$package = id(new PhabricatorPackagesPackageQuery())38->setViewer($viewer)39->withPHIDs(array($package_phid))40->setRaisePolicyExceptions(false)41->requireCapabilities(42array(43PhabricatorPolicyCapability::CAN_VIEW,44PhabricatorPolicyCapability::CAN_EDIT,45))46->executeOne();4748if (!$package) {49$errors[] = $this->newInvalidError(50pht(51'Package "%s" is invalid: the package must exist and you '.52'must have permission to edit it in order to create a new '.53'package.',54$package_phid),55$xaction);56continue;57}5859$object->attachPackage($package);60}6162return $errors;63}6465}666768