Differential D16316 Diff 39288 src/applications/packages/xaction/version/PhabricatorPackagesVersionPackageTransaction.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/packages/xaction/version/PhabricatorPackagesVersionPackageTransaction.php
- This file was copied from src/applications/packages/xaction/package/PhabricatorPackagesPackagePublisherTransaction.php.
<?php | <?php | ||||
final class PhabricatorPackagesPackagePublisherTransaction | final class PhabricatorPackagesVersionPackageTransaction | ||||
extends PhabricatorPackagesPackageTransactionType { | extends PhabricatorPackagesVersionTransactionType { | ||||
const TRANSACTIONTYPE = 'packages.package.publisher'; | const TRANSACTIONTYPE = 'packages.version.package'; | ||||
public function generateOldValue($object) { | public function generateOldValue($object) { | ||||
return $object->getPublisherPHID(); | return $object->getPackagePHID(); | ||||
} | } | ||||
public function applyInternalEffects($object, $value) { | public function applyInternalEffects($object, $value) { | ||||
$object->setPublisherPHID($value); | $object->setPackagePHID($value); | ||||
} | } | ||||
public function validateTransactions($object, array $xactions) { | public function validateTransactions($object, array $xactions) { | ||||
$errors = array(); | $errors = array(); | ||||
if ($this->isEmptyTextTransaction($object->getName(), $xactions)) { | if ($this->isEmptyTextTransaction($object->getPackagePHID(), $xactions)) { | ||||
$errors[] = $this->newRequiredError( | $errors[] = $this->newRequiredError( | ||||
pht( | pht( | ||||
'You must select a publisher when creating a package.')); | 'You must select a package when creating a version')); | ||||
return $errors; | return $errors; | ||||
} | } | ||||
if (!$this->isNewObject()) { | if (!$this->isNewObject()) { | ||||
foreach ($xactions as $xaction) { | foreach ($xactions as $xaction) { | ||||
$errors[] = $this->newInvalidError( | $errors[] = $this->newInvalidError( | ||||
pht('Once a package is created, its publisher can not be changed.'), | pht('Once a version is created, its package can not be changed.'), | ||||
$xaction); | $xaction); | ||||
} | } | ||||
} | } | ||||
$viewer = $this->getActor(); | $viewer = $this->getActor(); | ||||
foreach ($xactions as $xaction) { | foreach ($xactions as $xaction) { | ||||
$publisher_phid = $xaction->getNewValue(); | $package_phid = $xaction->getNewValue(); | ||||
$publisher = id(new PhabricatorPackagesPublisherQuery()) | $package = id(new PhabricatorPackagesPackageQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->withPHIDs(array($publisher_phid)) | ->withPHIDs(array($package_phid)) | ||||
->setRaisePolicyExceptions(false) | ->setRaisePolicyExceptions(false) | ||||
->requireCapabilities( | ->requireCapabilities( | ||||
array( | array( | ||||
PhabricatorPolicyCapability::CAN_VIEW, | PhabricatorPolicyCapability::CAN_VIEW, | ||||
PhabricatorPolicyCapability::CAN_EDIT, | PhabricatorPolicyCapability::CAN_EDIT, | ||||
)) | )) | ||||
->executeOne(); | ->executeOne(); | ||||
if (!$publisher) { | if (!$package) { | ||||
$errors[] = $this->newInvalidError( | $errors[] = $this->newInvalidError( | ||||
pht( | pht( | ||||
'Publisher "%s" is invalid: the publisher must exist and you '. | 'Package "%s" is invalid: the package must exist and you '. | ||||
'must have permission to edit it in order to create a new '. | 'must have permission to edit it in order to create a new '. | ||||
'package.', | 'package.', | ||||
$publisher_phid), | $package_phid), | ||||
$xaction); | $xaction); | ||||
continue; | continue; | ||||
} | } | ||||
$object->attachPublisher($publisher); | $object->attachPackage($package); | ||||
} | } | ||||
return $errors; | return $errors; | ||||
} | } | ||||
} | } |