Correct Aphlict websocket URI construction after PHP8 compatibility changes
[phabricator.git] / src / applications / almanac / xaction / AlmanacNetworkNameTransaction.php
blobf049587b26839c6dde35c73804ba18a5f4d3153a
1 <?php
3 final class AlmanacNetworkNameTransaction
4 extends AlmanacNetworkTransactionType {
6 const TRANSACTIONTYPE = 'almanac:network:name';
8 public function generateOldValue($object) {
9 return $object->getName();
12 public function applyInternalEffects($object, $value) {
13 $object->setName($value);
16 public function getTitle() {
17 return pht(
18 '%s renamed this network from %s to %s.',
19 $this->renderAuthor(),
20 $this->renderOldValue(),
21 $this->renderNewValue());
24 public function getTitleForFeed() {
25 return pht(
26 '%s renamed %s from %s to %s.',
27 $this->renderAuthor(),
28 $this->renderObject(),
29 $this->renderOldValue(),
30 $this->renderNewValue());
33 public function validateTransactions($object, array $xactions) {
34 $errors = array();
36 if ($this->isEmptyTextTransaction($object->getName(), $xactions)) {
37 $errors[] = $this->newRequiredError(
38 pht('Network name is required.'));
41 foreach ($xactions as $xaction) {
42 $name = $xaction->getNewValue();
44 $message = null;
45 try {
46 AlmanacNames::validateName($name);
47 } catch (Exception $ex) {
48 $message = $ex->getMessage();
51 if ($message !== null) {
52 $errors[] = $this->newInvalidError($message, $xaction);
53 continue;
56 if ($name === $object->getName()) {
57 continue;
60 $other = id(new AlmanacNetworkQuery())
61 ->setViewer(PhabricatorUser::getOmnipotentUser())
62 ->withNames(array($name))
63 ->executeOne();
64 if ($other && ($other->getID() != $object->getID())) {
65 $errors[] = $this->newInvalidError(
66 pht('Almanac networks must have unique names.'),
67 $xaction);
68 continue;
72 return $errors;