Mercurial > hg > cmmr2012-drupal-site
diff core/modules/contact/src/Entity/Message.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children | a9cd425dd02b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/contact/src/Entity/Message.php Thu Jul 05 14:24:15 2018 +0000 @@ -0,0 +1,194 @@ +<?php + +namespace Drupal\contact\Entity; + +use Drupal\Core\Entity\ContentEntityBase; +use Drupal\contact\MessageInterface; +use Drupal\Core\Entity\EntityTypeInterface; +use Drupal\Core\Field\BaseFieldDefinition; + +/** + * Defines the contact message entity. + * + * @ContentEntityType( + * id = "contact_message", + * label = @Translation("Contact message"), + * bundle_label = @Translation("Contact form"), + * handlers = { + * "access" = "Drupal\contact\ContactMessageAccessControlHandler", + * "storage" = "Drupal\Core\Entity\ContentEntityNullStorage", + * "view_builder" = "Drupal\contact\MessageViewBuilder", + * "form" = { + * "default" = "Drupal\contact\MessageForm" + * } + * }, + * admin_permission = "administer contact forms", + * entity_keys = { + * "bundle" = "contact_form", + * "uuid" = "uuid", + * "langcode" = "langcode" + * }, + * bundle_entity_type = "contact_form", + * field_ui_base_route = "entity.contact_form.edit_form", + * ) + */ +class Message extends ContentEntityBase implements MessageInterface { + + /** + * {@inheritdoc} + */ + public function isPersonal() { + return $this->bundle() == 'personal'; + } + + /** + * {@inheritdoc} + */ + public function getContactForm() { + return $this->get('contact_form')->entity; + } + + /** + * {@inheritdoc} + */ + public function getSenderName() { + return $this->get('name')->value; + } + + /** + * {@inheritdoc} + */ + public function setSenderName($sender_name) { + $this->set('name', $sender_name); + } + + /** + * {@inheritdoc} + */ + public function getSenderMail() { + return $this->get('mail')->value; + } + + /** + * {@inheritdoc} + */ + public function setSenderMail($sender_mail) { + $this->set('mail', $sender_mail); + } + + /** + * {@inheritdoc} + */ + public function getSubject() { + return $this->get('subject')->value; + } + + /** + * {@inheritdoc} + */ + public function setSubject($subject) { + $this->set('subject', $subject); + } + + /** + * {@inheritdoc} + */ + public function getMessage() { + return $this->get('message')->value; + } + + /** + * {@inheritdoc} + */ + public function setMessage($message) { + $this->set('message', $message); + } + + /** + * {@inheritdoc} + */ + public function copySender() { + return (bool) $this->get('copy')->value; + } + + /** + * {@inheritdoc} + */ + public function setCopySender($inform) { + $this->set('copy', (bool) $inform); + } + + /** + * {@inheritdoc} + */ + public function getPersonalRecipient() { + if ($this->isPersonal()) { + return $this->get('recipient')->entity; + } + } + + /** + * {@inheritdoc} + */ + public static function baseFieldDefinitions(EntityTypeInterface $entity_type) { + /** @var \Drupal\Core\Field\BaseFieldDefinition[] $fields */ + $fields = parent::baseFieldDefinitions($entity_type); + + $fields['contact_form']->setLabel(t('Form ID')) + ->setDescription(t('The ID of the associated form.')); + + $fields['uuid']->setDescription(t('The message UUID.')); + + $fields['langcode']->setDescription(t('The message language code.')); + + $fields['name'] = BaseFieldDefinition::create('string') + ->setLabel(t("The sender's name")) + ->setDescription(t('The name of the person that is sending the contact message.')); + + $fields['mail'] = BaseFieldDefinition::create('email') + ->setLabel(t("The sender's email")) + ->setDescription(t('The email of the person that is sending the contact message.')); + + // The subject of the contact message. + $fields['subject'] = BaseFieldDefinition::create('string') + ->setLabel(t('Subject')) + ->setRequired(TRUE) + ->setSetting('max_length', 100) + ->setDisplayOptions('form', [ + 'type' => 'string_textfield', + 'weight' => -10, + ]) + ->setDisplayConfigurable('form', TRUE); + + // The text of the contact message. + $fields['message'] = BaseFieldDefinition::create('string_long') + ->setLabel(t('Message')) + ->setRequired(TRUE) + ->setDisplayOptions('form', [ + 'type' => 'string_textarea', + 'weight' => 0, + 'settings' => [ + 'rows' => 12, + ], + ]) + ->setDisplayConfigurable('form', TRUE) + ->setDisplayOptions('view', [ + 'type' => 'string', + 'weight' => 0, + 'label' => 'above', + ]) + ->setDisplayConfigurable('view', TRUE); + + $fields['copy'] = BaseFieldDefinition::create('boolean') + ->setLabel(t('Copy')) + ->setDescription(t('Whether to send a copy of the message to the sender.')); + + $fields['recipient'] = BaseFieldDefinition::create('entity_reference') + ->setLabel(t('Recipient ID')) + ->setDescription(t('The ID of the recipient user for personal contact messages.')) + ->setSetting('target_type', 'user'); + + return $fields; + } + +}