@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.)
hq.recaptime.dev/wiki/Phorge
phorge
phabricator
1<?php
2
3final class PassphraseCredentialNameTransaction
4 extends PassphraseCredentialTransactionType {
5
6 const TRANSACTIONTYPE = 'passphrase:name';
7
8 public function generateOldValue($object) {
9 return $object->getName();
10 }
11
12 public function applyInternalEffects($object, $value) {
13 $object->setName($value);
14 }
15
16 public function getTitle() {
17 $old = $this->getOldValue();
18 if (!strlen($old)) {
19 return pht(
20 '%s created this credential.',
21 $this->renderAuthor());
22 } else {
23 return pht(
24 '%s renamed this credential from %s to %s.',
25 $this->renderAuthor(),
26 $this->renderOldValue(),
27 $this->renderNewValue());
28 }
29 }
30
31 public function getTitleForFeed() {
32 $old = $this->getOldValue();
33 if (!strlen($old)) {
34 return pht(
35 '%s created %s.',
36 $this->renderAuthor(),
37 $this->renderObject());
38 } else {
39 return pht(
40 '%s renamed %s credential %s to %s.',
41 $this->renderAuthor(),
42 $this->renderObject(),
43 $this->renderOldValue(),
44 $this->renderNewValue());
45 }
46 }
47
48 public function validateTransactions($object, array $xactions) {
49 $errors = array();
50
51 if ($this->isEmptyTextTransaction($object->getName(), $xactions)) {
52 $errors[] = $this->newRequiredError(
53 pht('Credentials must have a name.'));
54 }
55
56 $max_length = $object->getColumnMaximumByteLength('name');
57 foreach ($xactions as $xaction) {
58 $new_value = $xaction->getNewValue();
59
60 $new_length = strlen($new_value);
61 if ($new_length > $max_length) {
62 $errors[] = $this->newInvalidError(
63 pht('The name can be no longer than %s characters.',
64 new PhutilNumber($max_length)));
65 }
66 }
67
68 return $errors;
69 }
70
71}