Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/almanac/xaction/AlmanacInterfaceNetworkTransaction.php
12256 views
1
<?php
2
3
final class AlmanacInterfaceNetworkTransaction
4
extends AlmanacInterfaceTransactionType {
5
6
const TRANSACTIONTYPE = 'almanac:interface:network';
7
8
public function generateOldValue($object) {
9
return $object->getNetworkPHID();
10
}
11
12
public function applyInternalEffects($object, $value) {
13
$object->setNetworkPHID($value);
14
}
15
16
public function getTitle() {
17
return pht(
18
'%s changed the network for this interface from %s to %s.',
19
$this->renderAuthor(),
20
$this->renderOldHandle(),
21
$this->renderNewHandle());
22
}
23
24
public function validateTransactions($object, array $xactions) {
25
$errors = array();
26
27
$network_phid = $object->getNetworkPHID();
28
if ($this->isEmptyTextTransaction($network_phid, $xactions)) {
29
$errors[] = $this->newRequiredError(
30
pht('Interfaces must have a network.'));
31
}
32
33
foreach ($xactions as $xaction) {
34
$network_phid = $xaction->getNewValue();
35
36
$networks = id(new AlmanacNetworkQuery())
37
->setViewer($this->getActor())
38
->withPHIDs(array($network_phid))
39
->execute();
40
if (!$networks) {
41
$errors[] = $this->newInvalidError(
42
pht(
43
'You can not put an interface on a nonexistent or restricted '.
44
'network.'),
45
$xaction);
46
continue;
47
}
48
}
49
50
return $errors;
51
}
52
53
}
54
55