Generate file attachment transactions for explicit Remarkup attachments on common...
[phabricator.git] / src / applications / phurl / editor / PhabricatorPhurlURLEditor.php
blob49f290c343327d6dd1604357d851258e99c06e35
1 <?php
3 final class PhabricatorPhurlURLEditor
4 extends PhabricatorApplicationTransactionEditor {
6 public function getEditorApplicationClass() {
7 return 'PhabricatorPhurlApplication';
10 public function getEditorObjectsDescription() {
11 return pht('Phurl');
14 public function getCreateObjectTitle($author, $object) {
15 return pht('%s created this URL.', $author);
18 public function getCreateObjectTitleForFeed($author, $object) {
19 return pht('%s created %s.', $author, $object);
22 protected function supportsSearch() {
23 return true;
26 public function getTransactionTypes() {
27 $types = parent::getTransactionTypes();
28 $types[] = PhabricatorTransactions::TYPE_COMMENT;
29 $types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
30 $types[] = PhabricatorTransactions::TYPE_EDIT_POLICY;
32 return $types;
35 protected function shouldSendMail(
36 PhabricatorLiskDAO $object,
37 array $xactions) {
38 return true;
41 public function getMailTagsMap() {
42 return array(
43 PhabricatorPhurlURLTransaction::MAILTAG_DETAILS =>
44 pht(
45 "A URL's details change."),
49 protected function shouldPublishFeedStory(
50 PhabricatorLiskDAO $object,
51 array $xactions) {
52 return true;
55 protected function getMailSubjectPrefix() {
56 return pht('[Phurl]');
59 protected function getMailTo(PhabricatorLiskDAO $object) {
60 $phids = array();
61 $phids[] = $this->getActingAsPHID();
63 return $phids;
66 protected function buildMailTemplate(PhabricatorLiskDAO $object) {
67 $id = $object->getID();
68 $name = $object->getName();
70 return id(new PhabricatorMetaMTAMail())
71 ->setSubject("U{$id}: {$name}");
74 protected function buildMailBody(
75 PhabricatorLiskDAO $object,
76 array $xactions) {
78 $description = $object->getDescription();
79 $body = parent::buildMailBody($object, $xactions);
81 if (strlen($description)) {
82 $body->addRemarkupSection(
83 pht('URL DESCRIPTION'),
84 $object->getDescription());
87 $body->addLinkSection(
88 pht('URL DETAIL'),
89 PhabricatorEnv::getProductionURI('/U'.$object->getID()));
92 return $body;
95 protected function didCatchDuplicateKeyException(
96 PhabricatorLiskDAO $object,
97 array $xactions,
98 Exception $ex) {
100 $errors = array();
101 $errors[] = new PhabricatorApplicationTransactionValidationError(
102 PhabricatorPhurlURLAliasTransaction::TRANSACTIONTYPE,
103 pht('Duplicate'),
104 pht('This alias is already in use.'),
105 null);
107 throw new PhabricatorApplicationTransactionValidationException($errors);
110 protected function buildReplyHandler(PhabricatorLiskDAO $object) {
111 return id(new PhabricatorPhurlURLReplyHandler())
112 ->setMailReceiver($object);