Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\contact\Entity;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Core\Entity\ContentEntityBase;
|
Chris@0
|
6 use Drupal\contact\MessageInterface;
|
Chris@0
|
7 use Drupal\Core\Entity\EntityTypeInterface;
|
Chris@0
|
8 use Drupal\Core\Field\BaseFieldDefinition;
|
Chris@0
|
9
|
Chris@0
|
10 /**
|
Chris@0
|
11 * Defines the contact message entity.
|
Chris@0
|
12 *
|
Chris@0
|
13 * @ContentEntityType(
|
Chris@0
|
14 * id = "contact_message",
|
Chris@0
|
15 * label = @Translation("Contact message"),
|
Chris@0
|
16 * bundle_label = @Translation("Contact form"),
|
Chris@0
|
17 * handlers = {
|
Chris@0
|
18 * "access" = "Drupal\contact\ContactMessageAccessControlHandler",
|
Chris@0
|
19 * "storage" = "Drupal\Core\Entity\ContentEntityNullStorage",
|
Chris@0
|
20 * "view_builder" = "Drupal\contact\MessageViewBuilder",
|
Chris@0
|
21 * "form" = {
|
Chris@0
|
22 * "default" = "Drupal\contact\MessageForm"
|
Chris@0
|
23 * }
|
Chris@0
|
24 * },
|
Chris@0
|
25 * admin_permission = "administer contact forms",
|
Chris@0
|
26 * entity_keys = {
|
Chris@0
|
27 * "bundle" = "contact_form",
|
Chris@0
|
28 * "uuid" = "uuid",
|
Chris@0
|
29 * "langcode" = "langcode"
|
Chris@0
|
30 * },
|
Chris@0
|
31 * bundle_entity_type = "contact_form",
|
Chris@0
|
32 * field_ui_base_route = "entity.contact_form.edit_form",
|
Chris@0
|
33 * )
|
Chris@0
|
34 */
|
Chris@0
|
35 class Message extends ContentEntityBase implements MessageInterface {
|
Chris@0
|
36
|
Chris@0
|
37 /**
|
Chris@0
|
38 * {@inheritdoc}
|
Chris@0
|
39 */
|
Chris@0
|
40 public function isPersonal() {
|
Chris@0
|
41 return $this->bundle() == 'personal';
|
Chris@0
|
42 }
|
Chris@0
|
43
|
Chris@0
|
44 /**
|
Chris@0
|
45 * {@inheritdoc}
|
Chris@0
|
46 */
|
Chris@0
|
47 public function getContactForm() {
|
Chris@0
|
48 return $this->get('contact_form')->entity;
|
Chris@0
|
49 }
|
Chris@0
|
50
|
Chris@0
|
51 /**
|
Chris@0
|
52 * {@inheritdoc}
|
Chris@0
|
53 */
|
Chris@0
|
54 public function getSenderName() {
|
Chris@0
|
55 return $this->get('name')->value;
|
Chris@0
|
56 }
|
Chris@0
|
57
|
Chris@0
|
58 /**
|
Chris@0
|
59 * {@inheritdoc}
|
Chris@0
|
60 */
|
Chris@0
|
61 public function setSenderName($sender_name) {
|
Chris@0
|
62 $this->set('name', $sender_name);
|
Chris@0
|
63 }
|
Chris@0
|
64
|
Chris@0
|
65 /**
|
Chris@0
|
66 * {@inheritdoc}
|
Chris@0
|
67 */
|
Chris@0
|
68 public function getSenderMail() {
|
Chris@0
|
69 return $this->get('mail')->value;
|
Chris@0
|
70 }
|
Chris@0
|
71
|
Chris@0
|
72 /**
|
Chris@0
|
73 * {@inheritdoc}
|
Chris@0
|
74 */
|
Chris@0
|
75 public function setSenderMail($sender_mail) {
|
Chris@0
|
76 $this->set('mail', $sender_mail);
|
Chris@0
|
77 }
|
Chris@0
|
78
|
Chris@0
|
79 /**
|
Chris@0
|
80 * {@inheritdoc}
|
Chris@0
|
81 */
|
Chris@0
|
82 public function getSubject() {
|
Chris@0
|
83 return $this->get('subject')->value;
|
Chris@0
|
84 }
|
Chris@0
|
85
|
Chris@0
|
86 /**
|
Chris@0
|
87 * {@inheritdoc}
|
Chris@0
|
88 */
|
Chris@0
|
89 public function setSubject($subject) {
|
Chris@0
|
90 $this->set('subject', $subject);
|
Chris@0
|
91 }
|
Chris@0
|
92
|
Chris@0
|
93 /**
|
Chris@0
|
94 * {@inheritdoc}
|
Chris@0
|
95 */
|
Chris@0
|
96 public function getMessage() {
|
Chris@0
|
97 return $this->get('message')->value;
|
Chris@0
|
98 }
|
Chris@0
|
99
|
Chris@0
|
100 /**
|
Chris@0
|
101 * {@inheritdoc}
|
Chris@0
|
102 */
|
Chris@0
|
103 public function setMessage($message) {
|
Chris@0
|
104 $this->set('message', $message);
|
Chris@0
|
105 }
|
Chris@0
|
106
|
Chris@0
|
107 /**
|
Chris@0
|
108 * {@inheritdoc}
|
Chris@0
|
109 */
|
Chris@0
|
110 public function copySender() {
|
Chris@0
|
111 return (bool) $this->get('copy')->value;
|
Chris@0
|
112 }
|
Chris@0
|
113
|
Chris@0
|
114 /**
|
Chris@0
|
115 * {@inheritdoc}
|
Chris@0
|
116 */
|
Chris@0
|
117 public function setCopySender($inform) {
|
Chris@0
|
118 $this->set('copy', (bool) $inform);
|
Chris@0
|
119 }
|
Chris@0
|
120
|
Chris@0
|
121 /**
|
Chris@0
|
122 * {@inheritdoc}
|
Chris@0
|
123 */
|
Chris@0
|
124 public function getPersonalRecipient() {
|
Chris@0
|
125 if ($this->isPersonal()) {
|
Chris@0
|
126 return $this->get('recipient')->entity;
|
Chris@0
|
127 }
|
Chris@0
|
128 }
|
Chris@0
|
129
|
Chris@0
|
130 /**
|
Chris@0
|
131 * {@inheritdoc}
|
Chris@0
|
132 */
|
Chris@0
|
133 public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
|
Chris@0
|
134 /** @var \Drupal\Core\Field\BaseFieldDefinition[] $fields */
|
Chris@0
|
135 $fields = parent::baseFieldDefinitions($entity_type);
|
Chris@0
|
136
|
Chris@0
|
137 $fields['contact_form']->setLabel(t('Form ID'))
|
Chris@0
|
138 ->setDescription(t('The ID of the associated form.'));
|
Chris@0
|
139
|
Chris@0
|
140 $fields['uuid']->setDescription(t('The message UUID.'));
|
Chris@0
|
141
|
Chris@0
|
142 $fields['langcode']->setDescription(t('The message language code.'));
|
Chris@0
|
143
|
Chris@0
|
144 $fields['name'] = BaseFieldDefinition::create('string')
|
Chris@0
|
145 ->setLabel(t("The sender's name"))
|
Chris@0
|
146 ->setDescription(t('The name of the person that is sending the contact message.'));
|
Chris@0
|
147
|
Chris@0
|
148 $fields['mail'] = BaseFieldDefinition::create('email')
|
Chris@0
|
149 ->setLabel(t("The sender's email"))
|
Chris@0
|
150 ->setDescription(t('The email of the person that is sending the contact message.'));
|
Chris@0
|
151
|
Chris@0
|
152 // The subject of the contact message.
|
Chris@0
|
153 $fields['subject'] = BaseFieldDefinition::create('string')
|
Chris@0
|
154 ->setLabel(t('Subject'))
|
Chris@0
|
155 ->setRequired(TRUE)
|
Chris@0
|
156 ->setSetting('max_length', 100)
|
Chris@0
|
157 ->setDisplayOptions('form', [
|
Chris@0
|
158 'type' => 'string_textfield',
|
Chris@0
|
159 'weight' => -10,
|
Chris@0
|
160 ])
|
Chris@0
|
161 ->setDisplayConfigurable('form', TRUE);
|
Chris@0
|
162
|
Chris@0
|
163 // The text of the contact message.
|
Chris@0
|
164 $fields['message'] = BaseFieldDefinition::create('string_long')
|
Chris@0
|
165 ->setLabel(t('Message'))
|
Chris@0
|
166 ->setRequired(TRUE)
|
Chris@0
|
167 ->setDisplayOptions('form', [
|
Chris@0
|
168 'type' => 'string_textarea',
|
Chris@0
|
169 'weight' => 0,
|
Chris@0
|
170 'settings' => [
|
Chris@0
|
171 'rows' => 12,
|
Chris@0
|
172 ],
|
Chris@0
|
173 ])
|
Chris@0
|
174 ->setDisplayConfigurable('form', TRUE)
|
Chris@0
|
175 ->setDisplayOptions('view', [
|
Chris@0
|
176 'type' => 'string',
|
Chris@0
|
177 'weight' => 0,
|
Chris@0
|
178 'label' => 'above',
|
Chris@0
|
179 ])
|
Chris@0
|
180 ->setDisplayConfigurable('view', TRUE);
|
Chris@0
|
181
|
Chris@0
|
182 $fields['copy'] = BaseFieldDefinition::create('boolean')
|
Chris@0
|
183 ->setLabel(t('Copy'))
|
Chris@0
|
184 ->setDescription(t('Whether to send a copy of the message to the sender.'));
|
Chris@0
|
185
|
Chris@0
|
186 $fields['recipient'] = BaseFieldDefinition::create('entity_reference')
|
Chris@0
|
187 ->setLabel(t('Recipient ID'))
|
Chris@0
|
188 ->setDescription(t('The ID of the recipient user for personal contact messages.'))
|
Chris@0
|
189 ->setSetting('target_type', 'user');
|
Chris@0
|
190
|
Chris@0
|
191 return $fields;
|
Chris@0
|
192 }
|
Chris@0
|
193
|
Chris@0
|
194 }
|