Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/packages/xaction/package/PhabricatorPackagesPackageKeyTransaction.php
12242 views
1
<?php
2
3
final class PhabricatorPackagesPackageKeyTransaction
4
extends PhabricatorPackagesPackageTransactionType {
5
6
const TRANSACTIONTYPE = 'packages.package.key';
7
8
public function generateOldValue($object) {
9
return $object->getPackageKey();
10
}
11
12
public function applyInternalEffects($object, $value) {
13
$object->setPackageKey($value);
14
}
15
16
public function validateTransactions($object, array $xactions) {
17
$errors = array();
18
19
if ($this->isEmptyTextTransaction($object->getName(), $xactions)) {
20
$errors[] = $this->newRequiredError(
21
pht(
22
'Each package provided by a publisher must have a '.
23
'unique package key.'));
24
return $errors;
25
}
26
27
if (!$this->isNewObject()) {
28
foreach ($xactions as $xaction) {
29
$errors[] = $this->newInvalidError(
30
pht('Once a package is created, its key can not be changed.'),
31
$xaction);
32
}
33
}
34
35
foreach ($xactions as $xaction) {
36
$value = $xaction->getNewValue();
37
try {
38
PhabricatorPackagesPackage::assertValidPackageKey($value);
39
} catch (Exception $ex) {
40
$errors[] = $this->newInvalidError($ex->getMessage(), $xaction);
41
}
42
}
43
44
return $errors;
45
}
46
47
}
48
49