Update core 8.3.0
This commit is contained in:
parent
da7a7918f8
commit
cd7a898e66
6144 changed files with 132297 additions and 87747 deletions
|
@ -21,17 +21,17 @@ function contact_help($route_name, RouteMatchInterface $route_match) {
|
|||
$contact_page = \Drupal::url('entity.contact_form.collection');
|
||||
$output = '';
|
||||
$output .= '<h3>' . t('About') . '</h3>';
|
||||
$output .= '<p>' . t('The Contact module allows visitors to contact registered users on your site, using the personal contact form, and also allows you to set up site-wide contact forms. For more information, see the <a href=":contact">online documentation for the Contact module</a>.', array(':contact' => 'https://www.drupal.org/documentation/modules/contact')) . '</p>';
|
||||
$output .= '<p>' . t('The Contact module allows visitors to contact registered users on your site, using the personal contact form, and also allows you to set up site-wide contact forms. For more information, see the <a href=":contact">online documentation for the Contact module</a>.', [':contact' => 'https://www.drupal.org/documentation/modules/contact']) . '</p>';
|
||||
$output .= '<h3>' . t('Uses') . '</h3>';
|
||||
$output .= '<dl>';
|
||||
$output .= '<dt>' . t('Using the personal contact form') . '</dt>';
|
||||
$output .= '<dd>' . t("Site visitors can email registered users on your site by using the personal contact form, without knowing or learning the email address of the recipient. When a site visitor is viewing a user profile, the viewer will see a <em>Contact</em> tab or link, which leads to the personal contact form. The personal contact link is not shown when you are viewing your own profile, and users must have both <em>View user information</em> (to see user profiles) and <em>Use users' personal contact forms</em> permission to see the link. The user whose profile is being viewed must also have their personal contact form enabled (this is a user account setting); viewers with <em>Administer users</em> permission can bypass this setting.") . '</dd>';
|
||||
$output .= '<dt>' . t('Configuring contact forms') . '</dt>';
|
||||
$output .= '<dd>' . t('On the <a href=":contact_admin">Contact forms page</a>, you can configure the fields and display of the personal contact form, and you can set up one or more site-wide contact forms. Each site-wide contact form has a machine name, a label, and one or more defined recipients; when a site visitor submits the form, the field values are sent to those recipients.', array(':contact_admin' => $contact_page)) . '</dd>';
|
||||
$output .= '<dd>' . t('On the <a href=":contact_admin">Contact forms page</a>, you can configure the fields and display of the personal contact form, and you can set up one or more site-wide contact forms. Each site-wide contact form has a machine name, a label, and one or more defined recipients; when a site visitor submits the form, the field values are sent to those recipients.', [':contact_admin' => $contact_page]) . '</dd>';
|
||||
$output .= '<dt>' . t('Linking to contact forms') . '</dt>';
|
||||
$output .= '<dd>' . t('One site-wide contact form can be designated as the default contact form. If you choose to designate a default form, the <em>Contact</em> menu link in the <em>Footer</em> menu will link to it. You can modify this link from the <a href=":menu-settings">Menus page</a> if you have the Menu UI module installed. You can also create links to other contact forms; the URL for each form you have set up has format <em>contact/machine_name_of_form</em>.', array(':menu-settings' => $menu_page)) . '</p>';
|
||||
$output .= '<dd>' . t('One site-wide contact form can be designated as the default contact form. If you choose to designate a default form, the <em>Contact</em> menu link in the <em>Footer</em> menu will link to it. You can modify this link from the <a href=":menu-settings">Menus page</a> if you have the Menu UI module installed. You can also create links to other contact forms; the URL for each form you have set up has format <em>contact/machine_name_of_form</em>.', [':menu-settings' => $menu_page]) . '</p>';
|
||||
$output .= '<dt>' . t('Adding content to contact forms') . '</dt>';
|
||||
$output .= '<dd>' . t('From the <a href=":contact_admin">Contact forms page</a>, you can configure the fields to be shown on contact forms, including their labels and help text. If you would like other content (such as text or images) to appear on a contact form, use a block. You can create and edit blocks on the <a href=":blocks">Block layout page</a>, if the Block module is installed.', array(':blocks' => $block_page, ':contact_admin' => $contact_page)) . '</dd>';
|
||||
$output .= '<dd>' . t('From the <a href=":contact_admin">Contact forms page</a>, you can configure the fields to be shown on contact forms, including their labels and help text. If you would like other content (such as text or images) to appear on a contact form, use a block. You can create and edit blocks on the <a href=":blocks">Block layout page</a>, if the Block module is installed.', [':blocks' => $block_page, ':contact_admin' => $contact_page]) . '</dd>';
|
||||
$output .= '</dl>';
|
||||
return $output;
|
||||
|
||||
|
@ -50,42 +50,42 @@ function contact_entity_type_alter(array &$entity_types) {
|
|||
* Implements hook_entity_extra_field_info().
|
||||
*/
|
||||
function contact_entity_extra_field_info() {
|
||||
$fields = array();
|
||||
$fields = [];
|
||||
foreach (array_keys(\Drupal::service('entity_type.bundle.info')->getBundleInfo('contact_message')) as $bundle) {
|
||||
$fields['contact_message'][$bundle]['form']['name'] = array(
|
||||
$fields['contact_message'][$bundle]['form']['name'] = [
|
||||
'label' => t('Sender name'),
|
||||
'description' => t('Text'),
|
||||
'weight' => -50,
|
||||
);
|
||||
$fields['contact_message'][$bundle]['form']['mail'] = array(
|
||||
];
|
||||
$fields['contact_message'][$bundle]['form']['mail'] = [
|
||||
'label' => t('Sender email'),
|
||||
'description' => t('Email'),
|
||||
'weight' => -40,
|
||||
);
|
||||
];
|
||||
if ($bundle == 'personal') {
|
||||
$fields['contact_message'][$bundle]['form']['recipient'] = array(
|
||||
$fields['contact_message'][$bundle]['form']['recipient'] = [
|
||||
'label' => t('Recipient username'),
|
||||
'description' => t('User'),
|
||||
'weight' => -30,
|
||||
);
|
||||
];
|
||||
}
|
||||
$fields['contact_message'][$bundle]['form']['preview'] = array(
|
||||
$fields['contact_message'][$bundle]['form']['preview'] = [
|
||||
'label' => t('Preview sender message'),
|
||||
'description' => t('Preview'),
|
||||
'weight' => 40,
|
||||
);
|
||||
$fields['contact_message'][$bundle]['form']['copy'] = array(
|
||||
];
|
||||
$fields['contact_message'][$bundle]['form']['copy'] = [
|
||||
'label' => t('Send copy to sender'),
|
||||
'description' => t('Option'),
|
||||
'weight' => 50,
|
||||
);
|
||||
];
|
||||
}
|
||||
|
||||
$fields['user']['user']['form']['contact'] = array(
|
||||
$fields['user']['user']['form']['contact'] = [
|
||||
'label' => t('Contact settings'),
|
||||
'description' => t('Contact module form element.'),
|
||||
'weight' => 5,
|
||||
);
|
||||
];
|
||||
return $fields;
|
||||
}
|
||||
|
||||
|
@ -118,21 +118,21 @@ function contact_mail($key, &$message, $params) {
|
|||
$sender = $params['sender'];
|
||||
$language = \Drupal::languageManager()->getLanguage($message['langcode']);
|
||||
|
||||
$variables = array(
|
||||
$variables = [
|
||||
'@site-name' => \Drupal::config('system.site')->get('name'),
|
||||
'@subject' => $contact_message->getSubject(),
|
||||
'@form' => !empty($params['contact_form']) ? $params['contact_form']->label() : NULL,
|
||||
'@form-url' => \Drupal::url('<current>', [], ['absolute' => TRUE, 'language' => $language]),
|
||||
'@sender-name' => $sender->getDisplayName(),
|
||||
);
|
||||
];
|
||||
if ($sender->isAuthenticated()) {
|
||||
$variables['@sender-url'] = $sender->url('canonical', array('absolute' => TRUE, 'language' => $language));
|
||||
$variables['@sender-url'] = $sender->url('canonical', ['absolute' => TRUE, 'language' => $language]);
|
||||
}
|
||||
else {
|
||||
$variables['@sender-url'] = $params['sender']->getEmail();
|
||||
}
|
||||
|
||||
$options = array('langcode' => $language->getId());
|
||||
$options = ['langcode' => $language->getId()];
|
||||
|
||||
switch ($key) {
|
||||
case 'page_mail':
|
||||
|
@ -150,10 +150,10 @@ function contact_mail($key, &$message, $params) {
|
|||
|
||||
case 'user_mail':
|
||||
case 'user_copy':
|
||||
$variables += array(
|
||||
$variables += [
|
||||
'@recipient-name' => $params['recipient']->getDisplayName(),
|
||||
'@recipient-edit-url' => $params['recipient']->url('edit-form', array('absolute' => TRUE, 'language' => $language)),
|
||||
);
|
||||
'@recipient-edit-url' => $params['recipient']->url('edit-form', ['absolute' => TRUE, 'language' => $language]),
|
||||
];
|
||||
$message['subject'] .= t('[@site-name] @subject', $variables, $options);
|
||||
$message['body'][] = t('Hello @recipient-name,', $variables, $options);
|
||||
$message['body'][] = t("@sender-name (@sender-url) has sent you a message via your contact form at @site-name.", $variables, $options);
|
||||
|
@ -172,22 +172,22 @@ function contact_mail($key, &$message, $params) {
|
|||
* @see \Drupal\user\ProfileForm::form()
|
||||
*/
|
||||
function contact_form_user_form_alter(&$form, FormStateInterface $form_state) {
|
||||
$form['contact'] = array(
|
||||
$form['contact'] = [
|
||||
'#type' => 'details',
|
||||
'#title' => t('Contact settings'),
|
||||
'#open' => TRUE,
|
||||
'#weight' => 5,
|
||||
);
|
||||
];
|
||||
$account = $form_state->getFormObject()->getEntity();
|
||||
if (!\Drupal::currentUser()->isAnonymous() && $account->id()) {
|
||||
$account_data = \Drupal::service('user.data')->get('contact', $account->id(), 'enabled');
|
||||
}
|
||||
$form['contact']['contact'] = array(
|
||||
$form['contact']['contact'] = [
|
||||
'#type' => 'checkbox',
|
||||
'#title' => t('Personal contact form'),
|
||||
'#default_value' => isset($account_data) ? $account_data : \Drupal::config('contact.settings')->get('user_default_enabled'),
|
||||
'#description' => t('Allow other users to contact you via a personal contact form which keeps your email address hidden. Note that some privileged users such as site administrators are still able to contact you even if you choose to disable this feature.'),
|
||||
);
|
||||
];
|
||||
$form['actions']['submit']['#submit'][] = 'contact_user_profile_form_submit';
|
||||
}
|
||||
|
||||
|
@ -209,18 +209,18 @@ function contact_user_profile_form_submit($form, FormStateInterface $form_state)
|
|||
* @see \Drupal\user\AccountSettingsForm
|
||||
*/
|
||||
function contact_form_user_admin_settings_alter(&$form, FormStateInterface $form_state) {
|
||||
$form['contact'] = array(
|
||||
$form['contact'] = [
|
||||
'#type' => 'details',
|
||||
'#title' => t('Contact settings'),
|
||||
'#open' => TRUE,
|
||||
'#weight' => 0,
|
||||
);
|
||||
$form['contact']['contact_default_status'] = array(
|
||||
];
|
||||
$form['contact']['contact_default_status'] = [
|
||||
'#type' => 'checkbox',
|
||||
'#title' => t('Enable the personal contact form by default for new users'),
|
||||
'#description' => t('Changing this setting will not affect existing users.'),
|
||||
'#default_value' => \Drupal::configFactory()->getEditable('contact.settings')->get('user_default_enabled'),
|
||||
);
|
||||
];
|
||||
// Add submit handler to save contact configuration.
|
||||
$form['#submit'][] = 'contact_form_user_admin_settings_submit';
|
||||
}
|
||||
|
|
|
@ -7,10 +7,6 @@
|
|||
|
||||
use Drupal\contact\Entity\ContactForm;
|
||||
|
||||
/**
|
||||
* @addtogroup updates-8.1.x-to-8.2.x
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* Initialize 'message' and 'redirect' field values to 'contact_form' entities.
|
||||
|
@ -24,7 +20,3 @@ function contact_post_update_add_message_redirect_field_to_contact_form() {
|
|||
->save();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @} End of "addtogroup updates-8.1.x-to-8.2.x".
|
||||
*/
|
||||
|
|
|
@ -9,11 +9,11 @@
|
|||
* Implements hook_views_data_alter().
|
||||
*/
|
||||
function contact_views_data_alter(&$data) {
|
||||
$data['users']['contact'] = array(
|
||||
'field' => array(
|
||||
$data['users']['contact'] = [
|
||||
'field' => [
|
||||
'title' => t('Contact link'),
|
||||
'help' => t('Provide a simple link to the user contact page.'),
|
||||
'id' => 'contact_link',
|
||||
),
|
||||
);
|
||||
],
|
||||
];
|
||||
}
|
||||
|
|
|
@ -72,60 +72,60 @@ class ContactFormEditForm extends EntityForm implements ContainerInjectionInterf
|
|||
$contact_form = $this->entity;
|
||||
$default_form = $this->config('contact.settings')->get('default_form');
|
||||
|
||||
$form['label'] = array(
|
||||
$form['label'] = [
|
||||
'#type' => 'textfield',
|
||||
'#title' => $this->t('Label'),
|
||||
'#maxlength' => 255,
|
||||
'#default_value' => $contact_form->label(),
|
||||
'#description' => $this->t("Example: 'website feedback' or 'product information'."),
|
||||
'#required' => TRUE,
|
||||
);
|
||||
$form['id'] = array(
|
||||
];
|
||||
$form['id'] = [
|
||||
'#type' => 'machine_name',
|
||||
'#default_value' => $contact_form->id(),
|
||||
'#maxlength' => EntityTypeInterface::BUNDLE_MAX_LENGTH,
|
||||
'#machine_name' => array(
|
||||
'#machine_name' => [
|
||||
'exists' => '\Drupal\contact\Entity\ContactForm::load',
|
||||
),
|
||||
],
|
||||
'#disabled' => !$contact_form->isNew(),
|
||||
);
|
||||
$form['recipients'] = array(
|
||||
];
|
||||
$form['recipients'] = [
|
||||
'#type' => 'textarea',
|
||||
'#title' => $this->t('Recipients'),
|
||||
'#default_value' => implode(', ', $contact_form->getRecipients()),
|
||||
'#description' => $this->t("Example: 'webmaster@example.com' or 'sales@example.com,support@example.com' . To specify multiple recipients, separate each email address with a comma."),
|
||||
'#required' => TRUE,
|
||||
);
|
||||
$form['message'] = array(
|
||||
];
|
||||
$form['message'] = [
|
||||
'#type' => 'textarea',
|
||||
'#title' => $this->t('Message'),
|
||||
'#default_value' => $contact_form->getMessage(),
|
||||
'#description' => $this->t('The message to display to the user after submission of this form. Leave blank for no message.'),
|
||||
);
|
||||
$form['redirect'] = array(
|
||||
];
|
||||
$form['redirect'] = [
|
||||
'#type' => 'path',
|
||||
'#title' => $this->t('Redirect path'),
|
||||
'#convert_path' => PathElement::CONVERT_NONE,
|
||||
'#default_value' => $contact_form->getRedirectPath(),
|
||||
'#description' => $this->t('Path to redirect the user to after submission of this form. For example, type "/about" to redirect to that page. Use a relative path with a slash in front.'),
|
||||
);
|
||||
$form['reply'] = array(
|
||||
];
|
||||
$form['reply'] = [
|
||||
'#type' => 'textarea',
|
||||
'#title' => $this->t('Auto-reply'),
|
||||
'#default_value' => $contact_form->getReply(),
|
||||
'#description' => $this->t('Optional auto-reply. Leave empty if you do not want to send the user an auto-reply message.'),
|
||||
);
|
||||
$form['weight'] = array(
|
||||
];
|
||||
$form['weight'] = [
|
||||
'#type' => 'weight',
|
||||
'#title' => $this->t('Weight'),
|
||||
'#default_value' => $contact_form->getWeight(),
|
||||
'#description' => $this->t('When listing forms, those with lighter (smaller) weights get listed before forms with heavier (larger) weights. Forms with equal weights are sorted alphabetically.'),
|
||||
);
|
||||
$form['selected'] = array(
|
||||
];
|
||||
$form['selected'] = [
|
||||
'#type' => 'checkbox',
|
||||
'#title' => $this->t('Make this the default form'),
|
||||
'#default_value' => $default_form === $contact_form->id(),
|
||||
);
|
||||
];
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
@ -142,7 +142,7 @@ class ContactFormEditForm extends EntityForm implements ContainerInjectionInterf
|
|||
foreach ($recipients as &$recipient) {
|
||||
$recipient = trim($recipient);
|
||||
if (!$this->emailValidator->isValid($recipient)) {
|
||||
$form_state->setErrorByName('recipients', $this->t('%recipient is an invalid email address.', array('%recipient' => $recipient)));
|
||||
$form_state->setErrorByName('recipients', $this->t('%recipient is an invalid email address.', ['%recipient' => $recipient]));
|
||||
}
|
||||
}
|
||||
$form_state->setValue('recipients', $recipients);
|
||||
|
@ -165,12 +165,12 @@ class ContactFormEditForm extends EntityForm implements ContainerInjectionInterf
|
|||
$edit_link = $this->entity->link($this->t('Edit'));
|
||||
$view_link = $contact_form->link($contact_form->label(), 'canonical');
|
||||
if ($status == SAVED_UPDATED) {
|
||||
drupal_set_message($this->t('Contact form %label has been updated.', array('%label' => $view_link)));
|
||||
$this->logger('contact')->notice('Contact form %label has been updated.', array('%label' => $contact_form->label(), 'link' => $edit_link));
|
||||
drupal_set_message($this->t('Contact form %label has been updated.', ['%label' => $view_link]));
|
||||
$this->logger('contact')->notice('Contact form %label has been updated.', ['%label' => $contact_form->label(), 'link' => $edit_link]);
|
||||
}
|
||||
else {
|
||||
drupal_set_message($this->t('Contact form %label has been added.', array('%label' => $view_link)));
|
||||
$this->logger('contact')->notice('Contact form %label has been added.', array('%label' => $contact_form->label(), 'link' => $edit_link));
|
||||
drupal_set_message($this->t('Contact form %label has been added.', ['%label' => $view_link]));
|
||||
$this->logger('contact')->notice('Contact form %label has been added.', ['%label' => $contact_form->label(), 'link' => $edit_link]);
|
||||
}
|
||||
|
||||
// Update the default form.
|
||||
|
|
|
@ -64,9 +64,9 @@ class ContactController extends ControllerBase {
|
|||
// If there are no forms, do not display the form.
|
||||
if (empty($contact_form)) {
|
||||
if ($this->currentUser()->hasPermission('administer contact forms')) {
|
||||
drupal_set_message($this->t('The contact form has not been configured. <a href=":add">Add one or more forms</a> .', array(
|
||||
':add' => $this->url('contact.form_add'))), 'error');
|
||||
return array();
|
||||
drupal_set_message($this->t('The contact form has not been configured. <a href=":add">Add one or more forms</a> .', [
|
||||
':add' => $this->url('contact.form_add')]), 'error');
|
||||
return [];
|
||||
}
|
||||
else {
|
||||
throw new NotFoundHttpException();
|
||||
|
@ -76,9 +76,9 @@ class ContactController extends ControllerBase {
|
|||
|
||||
$message = $this->entityManager()
|
||||
->getStorage('contact_message')
|
||||
->create(array(
|
||||
->create([
|
||||
'contact_form' => $contact_form->id(),
|
||||
));
|
||||
]);
|
||||
|
||||
$form = $this->entityFormBuilder()->getForm($message);
|
||||
$form['#title'] = $contact_form->label();
|
||||
|
@ -106,13 +106,13 @@ class ContactController extends ControllerBase {
|
|||
throw new NotFoundHttpException();
|
||||
}
|
||||
|
||||
$message = $this->entityManager()->getStorage('contact_message')->create(array(
|
||||
$message = $this->entityManager()->getStorage('contact_message')->create([
|
||||
'contact_form' => 'personal',
|
||||
'recipient' => $user->id(),
|
||||
));
|
||||
]);
|
||||
|
||||
$form = $this->entityFormBuilder()->getForm($message);
|
||||
$form['#title'] = $this->t('Contact @username', array('@username' => $user->getDisplayName()));
|
||||
$form['#title'] = $this->t('Contact @username', ['@username' => $user->getDisplayName()]);
|
||||
$form['#cache']['contexts'][] = 'user.permissions';
|
||||
return $form;
|
||||
}
|
||||
|
|
|
@ -73,7 +73,7 @@ class ContactForm extends ConfigEntityBundleBase implements ContactFormInterface
|
|||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $recipients = array();
|
||||
protected $recipients = [];
|
||||
|
||||
/**
|
||||
* The path to redirect to on form submission.
|
||||
|
|
|
@ -153,29 +153,29 @@ class Message extends ContentEntityBase implements MessageInterface {
|
|||
->setLabel(t('Subject'))
|
||||
->setRequired(TRUE)
|
||||
->setSetting('max_length', 100)
|
||||
->setDisplayOptions('form', array(
|
||||
->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', array(
|
||||
->setDisplayOptions('form', [
|
||||
'type' => 'string_textarea',
|
||||
'weight' => 0,
|
||||
'settings' => array(
|
||||
'settings' => [
|
||||
'rows' => 12,
|
||||
),
|
||||
))
|
||||
],
|
||||
])
|
||||
->setDisplayConfigurable('form', TRUE)
|
||||
->setDisplayOptions('view', array(
|
||||
->setDisplayOptions('view', [
|
||||
'type' => 'string',
|
||||
'weight' => 0,
|
||||
'label' => 'above',
|
||||
))
|
||||
])
|
||||
->setDisplayConfigurable('view', TRUE);
|
||||
|
||||
$fields['copy'] = BaseFieldDefinition::create('boolean')
|
||||
|
|
|
@ -73,7 +73,7 @@ class MailHandler implements MailHandlerInterface {
|
|||
public function sendMailMessages(MessageInterface $message, AccountInterface $sender) {
|
||||
// Clone the sender, as we make changes to mail and name properties.
|
||||
$sender_cloned = clone $this->userStorage->load($sender->id());
|
||||
$params = array();
|
||||
$params = [];
|
||||
$current_langcode = $this->languageManager->getCurrentLanguage()->getId();
|
||||
$recipient_langcode = $this->languageManager->getDefaultLanguage()->getId();
|
||||
$contact_form = $message->getContactForm();
|
||||
|
@ -86,7 +86,7 @@ class MailHandler implements MailHandlerInterface {
|
|||
|
||||
// For the email message, clarify that the sender name is not verified; it
|
||||
// could potentially clash with a username on this site.
|
||||
$sender_cloned->name = $this->t('@name (not verified)', array('@name' => $message->getSenderName()));
|
||||
$sender_cloned->name = $this->t('@name (not verified)', ['@name' => $message->getSenderName()]);
|
||||
}
|
||||
|
||||
// Build email parameters.
|
||||
|
@ -133,18 +133,18 @@ class MailHandler implements MailHandlerInterface {
|
|||
}
|
||||
|
||||
if (!$message->isPersonal()) {
|
||||
$this->logger->notice('%sender-name (@sender-from) sent an email regarding %contact_form.', array(
|
||||
$this->logger->notice('%sender-name (@sender-from) sent an email regarding %contact_form.', [
|
||||
'%sender-name' => $sender_cloned->getUsername(),
|
||||
'@sender-from' => $sender_cloned->getEmail(),
|
||||
'%contact_form' => $contact_form->label(),
|
||||
));
|
||||
]);
|
||||
}
|
||||
else {
|
||||
$this->logger->notice('%sender-name (@sender-from) sent %recipient-name an email.', array(
|
||||
$this->logger->notice('%sender-name (@sender-from) sent %recipient-name an email.', [
|
||||
'%sender-name' => $sender_cloned->getUsername(),
|
||||
'@sender-from' => $sender_cloned->getEmail(),
|
||||
'%recipient-name' => $message->getPersonalRecipient()->getUsername(),
|
||||
));
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,9 +2,11 @@
|
|||
|
||||
namespace Drupal\contact;
|
||||
|
||||
use Drupal\Component\Datetime\TimeInterface;
|
||||
use Drupal\Core\Datetime\DateFormatterInterface;
|
||||
use Drupal\Core\Entity\ContentEntityForm;
|
||||
use Drupal\Core\Entity\EntityManagerInterface;
|
||||
use Drupal\Core\Entity\EntityTypeBundleInfoInterface;
|
||||
use Drupal\Core\Flood\FloodInterface;
|
||||
use Drupal\Core\Form\FormStateInterface;
|
||||
use Drupal\Core\Language\LanguageManagerInterface;
|
||||
|
@ -63,9 +65,13 @@ class MessageForm extends ContentEntityForm {
|
|||
* The contact mail handler service.
|
||||
* @param \Drupal\Core\Datetime\DateFormatterInterface $date_formatter
|
||||
* The date service.
|
||||
* @param \Drupal\Core\Entity\EntityTypeBundleInfoInterface $entity_type_bundle_info
|
||||
* The entity type bundle service.
|
||||
* @param \Drupal\Component\Datetime\TimeInterface $time
|
||||
* The time service.
|
||||
*/
|
||||
public function __construct(EntityManagerInterface $entity_manager, FloodInterface $flood, LanguageManagerInterface $language_manager, MailHandlerInterface $mail_handler, DateFormatterInterface $date_formatter) {
|
||||
parent::__construct($entity_manager);
|
||||
public function __construct(EntityManagerInterface $entity_manager, FloodInterface $flood, LanguageManagerInterface $language_manager, MailHandlerInterface $mail_handler, DateFormatterInterface $date_formatter, EntityTypeBundleInfoInterface $entity_type_bundle_info = NULL, TimeInterface $time = NULL) {
|
||||
parent::__construct($entity_manager, $entity_type_bundle_info, $time);
|
||||
$this->flood = $flood;
|
||||
$this->languageManager = $language_manager;
|
||||
$this->mailHandler = $mail_handler;
|
||||
|
@ -81,7 +87,9 @@ class MessageForm extends ContentEntityForm {
|
|||
$container->get('flood'),
|
||||
$container->get('language_manager'),
|
||||
$container->get('contact.mail_handler'),
|
||||
$container->get('date.formatter')
|
||||
$container->get('date.formatter'),
|
||||
$container->get('entity_type.bundle.info'),
|
||||
$container->get('datetime.time')
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -95,24 +103,24 @@ class MessageForm extends ContentEntityForm {
|
|||
$form['#attributes']['class'][] = 'contact-form';
|
||||
|
||||
if (!empty($message->preview)) {
|
||||
$form['preview'] = array(
|
||||
'#theme_wrappers' => array('container__preview'),
|
||||
'#attributes' => array('class' => array('preview')),
|
||||
);
|
||||
$form['preview'] = [
|
||||
'#theme_wrappers' => ['container__preview'],
|
||||
'#attributes' => ['class' => ['preview']],
|
||||
];
|
||||
$form['preview']['message'] = $this->entityManager->getViewBuilder('contact_message')->view($message, 'full');
|
||||
}
|
||||
|
||||
$form['name'] = array(
|
||||
$form['name'] = [
|
||||
'#type' => 'textfield',
|
||||
'#title' => $this->t('Your name'),
|
||||
'#maxlength' => 255,
|
||||
'#required' => TRUE,
|
||||
);
|
||||
$form['mail'] = array(
|
||||
];
|
||||
$form['mail'] = [
|
||||
'#type' => 'email',
|
||||
'#title' => $this->t('Your email address'),
|
||||
'#required' => TRUE,
|
||||
);
|
||||
];
|
||||
if ($user->isAnonymous()) {
|
||||
$form['#attached']['library'][] = 'core/drupal.form';
|
||||
$form['#attributes']['data-user-info-from-browser'] = TRUE;
|
||||
|
@ -133,24 +141,24 @@ class MessageForm extends ContentEntityForm {
|
|||
|
||||
// The user contact form has a preset recipient.
|
||||
if ($message->isPersonal()) {
|
||||
$form['recipient'] = array(
|
||||
$form['recipient'] = [
|
||||
'#type' => 'item',
|
||||
'#title' => $this->t('To'),
|
||||
'#value' => $message->getPersonalRecipient()->id(),
|
||||
'name' => array(
|
||||
'name' => [
|
||||
'#theme' => 'username',
|
||||
'#account' => $message->getPersonalRecipient(),
|
||||
),
|
||||
);
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
$form['copy'] = array(
|
||||
$form['copy'] = [
|
||||
'#type' => 'checkbox',
|
||||
'#title' => $this->t('Send yourself a copy'),
|
||||
// Do not allow anonymous users to send themselves a copy, because it can
|
||||
// be abused to spam people.
|
||||
'#access' => $user->isAuthenticated(),
|
||||
);
|
||||
];
|
||||
return $form;
|
||||
}
|
||||
|
||||
|
@ -160,11 +168,11 @@ class MessageForm extends ContentEntityForm {
|
|||
public function actions(array $form, FormStateInterface $form_state) {
|
||||
$elements = parent::actions($form, $form_state);
|
||||
$elements['submit']['#value'] = $this->t('Send message');
|
||||
$elements['preview'] = array(
|
||||
$elements['preview'] = [
|
||||
'#type' => 'submit',
|
||||
'#value' => $this->t('Preview'),
|
||||
'#submit' => array('::submitForm', '::preview'),
|
||||
);
|
||||
'#submit' => ['::submitForm', '::preview'],
|
||||
];
|
||||
return $elements;
|
||||
}
|
||||
|
||||
|
@ -189,10 +197,10 @@ class MessageForm extends ContentEntityForm {
|
|||
$interval = $this->config('contact.settings')->get('flood.interval');
|
||||
|
||||
if (!$this->flood->isAllowed('contact', $limit, $interval)) {
|
||||
$form_state->setErrorByName('', $this->t('You cannot send more than %limit messages in @interval. Try again later.', array(
|
||||
$form_state->setErrorByName('', $this->t('You cannot send more than %limit messages in @interval. Try again later.', [
|
||||
'%limit' => $limit,
|
||||
'@interval' => $this->dateFormatter->formatInterval($interval),
|
||||
)));
|
||||
]));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -205,6 +213,10 @@ class MessageForm extends ContentEntityForm {
|
|||
public function save(array $form, FormStateInterface $form_state) {
|
||||
$message = $this->entity;
|
||||
$user = $this->currentUser();
|
||||
// Save the message. In core this is a no-op but should contrib wish to
|
||||
// implement message storage, this will make the task of swapping in a real
|
||||
// storage controller straight-forward.
|
||||
$message->save();
|
||||
$this->mailHandler->sendMailMessages($message, $user);
|
||||
$contact_form = $message->getContactForm();
|
||||
|
||||
|
@ -221,10 +233,6 @@ class MessageForm extends ContentEntityForm {
|
|||
else {
|
||||
$form_state->setRedirectUrl($contact_form->getRedirectUrl());
|
||||
}
|
||||
// Save the message. In core this is a no-op but should contrib wish to
|
||||
// implement message storage, this will make the task of swapping in a real
|
||||
// storage controller straight-forward.
|
||||
$message->save();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -23,25 +23,6 @@ class MessageViewBuilder extends EntityViewBuilder {
|
|||
return $build;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function buildComponents(array &$build, array $entities, array $displays, $view_mode) {
|
||||
parent::buildComponents($build, $entities, $displays, $view_mode);
|
||||
|
||||
foreach ($entities as $id => $entity) {
|
||||
// Add the message extra field, if enabled.
|
||||
$display = $displays[$entity->bundle()];
|
||||
if ($entity->getMessage() && $display->getComponent('message')) {
|
||||
$build[$id]['message'] = array(
|
||||
'#type' => 'item',
|
||||
'#title' => t('Message'),
|
||||
'#plain_text' => $entity->getMessage(),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
@ -54,7 +35,7 @@ class MessageViewBuilder extends EntityViewBuilder {
|
|||
// convert DIVs correctly.
|
||||
foreach (Element::children($build) as $key) {
|
||||
if (isset($build[$key]['#label_display']) && $build[$key]['#label_display'] == 'above') {
|
||||
$build[$key] += array('#prefix' => '');
|
||||
$build[$key] += ['#prefix' => ''];
|
||||
$build[$key]['#prefix'] = $build[$key]['#title'] . ":\n";
|
||||
$build[$key]['#label_display'] = 'hidden';
|
||||
}
|
||||
|
|
|
@ -20,14 +20,14 @@ class ContactCategory extends DrupalSqlBase {
|
|||
*/
|
||||
public function query() {
|
||||
$query = $this->select('contact', 'c')
|
||||
->fields('c', array(
|
||||
->fields('c', [
|
||||
'cid',
|
||||
'category',
|
||||
'recipients',
|
||||
'reply',
|
||||
'weight',
|
||||
'selected',
|
||||
)
|
||||
]
|
||||
);
|
||||
$query->orderBy('c.cid');
|
||||
return $query;
|
||||
|
@ -45,14 +45,14 @@ class ContactCategory extends DrupalSqlBase {
|
|||
* {@inheritdoc}
|
||||
*/
|
||||
public function fields() {
|
||||
return array(
|
||||
return [
|
||||
'cid' => $this->t('Primary Key: Unique category ID.'),
|
||||
'category' => $this->t('Category name.'),
|
||||
'recipients' => $this->t('Comma-separated list of recipient email addresses.'),
|
||||
'reply' => $this->t('Text of the auto-reply message.'),
|
||||
'weight' => $this->t("The category's weight."),
|
||||
'selected' => $this->t('Flag to indicate whether or not category is selected by default. (1 = Yes, 0 = No)'),
|
||||
);
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -42,8 +42,8 @@ class ContactLink extends LinkBase {
|
|||
$this->options['alter']['make_link'] = TRUE;
|
||||
$this->options['alter']['url'] = $this->getUrlInfo($row);
|
||||
|
||||
$title = $this->t('Contact %user', array('%user' => $entity->label()));
|
||||
$this->options['alter']['attributes'] = array('title' => $title);
|
||||
$title = $this->t('Contact %user', ['%user' => $entity->label()]);
|
||||
$this->options['alter']['attributes'] = ['title' => $title];
|
||||
|
||||
if (!empty($this->options['text'])) {
|
||||
return $this->options['text'];
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\contact\Tests;
|
||||
|
||||
use Drupal\simpletest\WebTestBase;
|
||||
|
||||
/**
|
||||
* Tests contact form textfields are present if authenticated.
|
||||
*
|
||||
* @group contact
|
||||
*/
|
||||
class ContactAuthenticatedUserTest extends WebTestBase {
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array('contact');
|
||||
|
||||
/**
|
||||
* Tests that name and email fields are not present for authenticated users.
|
||||
*/
|
||||
function testContactSiteWideTextfieldsLoggedInTestCase() {
|
||||
$this->drupalLogin($this->drupalCreateUser(array('access site-wide contact form')));
|
||||
$this->drupalGet('contact');
|
||||
|
||||
// Ensure that there is no textfield for name.
|
||||
$this->assertFalse($this->xpath('//input[@name=:name]', array(':name' => 'name')));
|
||||
|
||||
// Ensure that there is no textfield for email.
|
||||
$this->assertFalse($this->xpath('//input[@name=:name]', array(':name' => 'mail')));
|
||||
}
|
||||
|
||||
}
|
|
@ -19,7 +19,7 @@ class ContactFieldsTest extends ViewTestBase {
|
|||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array('field', 'text', 'contact');
|
||||
public static $modules = ['field', 'text', 'contact'];
|
||||
|
||||
/**
|
||||
* Contains the field storage definition for contact used for this test.
|
||||
|
@ -31,11 +31,11 @@ class ContactFieldsTest extends ViewTestBase {
|
|||
protected function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
$this->fieldStorage = FieldStorageConfig::create(array(
|
||||
$this->fieldStorage = FieldStorageConfig::create([
|
||||
'field_name' => strtolower($this->randomMachineName()),
|
||||
'entity_type' => 'contact_message',
|
||||
'type' => 'text'
|
||||
));
|
||||
]);
|
||||
$this->fieldStorage->save();
|
||||
|
||||
ContactForm::create([
|
||||
|
|
|
@ -27,14 +27,14 @@ class ContactLinkTest extends ViewTestBase {
|
|||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array('contact_test_views');
|
||||
public static $modules = ['contact_test_views'];
|
||||
|
||||
/**
|
||||
* Views used by this test.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $testViews = array('test_contact_link');
|
||||
public static $testViews = ['test_contact_link'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
|
@ -42,7 +42,7 @@ class ContactLinkTest extends ViewTestBase {
|
|||
protected function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
ViewTestData::createTestViews(get_class($this), array('contact_test_views'));
|
||||
ViewTestData::createTestViews(get_class($this), ['contact_test_views']);
|
||||
|
||||
$this->userData = $this->container->get('user.data');
|
||||
}
|
||||
|
@ -51,39 +51,39 @@ class ContactLinkTest extends ViewTestBase {
|
|||
* Tests contact link.
|
||||
*/
|
||||
public function testContactLink() {
|
||||
$accounts = array();
|
||||
$accounts = [];
|
||||
$accounts['root'] = User::load(1);
|
||||
// Create an account with access to all contact pages.
|
||||
$admin_account = $this->drupalCreateUser(array('administer users'));
|
||||
$admin_account = $this->drupalCreateUser(['administer users']);
|
||||
$accounts['admin'] = $admin_account;
|
||||
// Create an account with no access to contact pages.
|
||||
$no_contact_account = $this->drupalCreateUser();
|
||||
$accounts['no_contact'] = $no_contact_account;
|
||||
|
||||
// Create an account with access to contact pages.
|
||||
$contact_account = $this->drupalCreateUser(array('access user contact forms'));
|
||||
$contact_account = $this->drupalCreateUser(['access user contact forms']);
|
||||
$accounts['contact'] = $contact_account;
|
||||
|
||||
$this->drupalLogin($admin_account);
|
||||
$this->drupalGet('test-contact-link');
|
||||
// The admin user has access to all contact links beside his own.
|
||||
$this->assertContactLinks($accounts, array('root', 'no_contact', 'contact'));
|
||||
$this->assertContactLinks($accounts, ['root', 'no_contact', 'contact']);
|
||||
|
||||
$this->drupalLogin($no_contact_account);
|
||||
$this->drupalGet('test-contact-link');
|
||||
// Ensure that the user without the permission doesn't see any link.
|
||||
$this->assertContactLinks($accounts, array());
|
||||
$this->assertContactLinks($accounts, []);
|
||||
|
||||
$this->drupalLogin($contact_account);
|
||||
$this->drupalGet('test-contact-link');
|
||||
$this->assertContactLinks($accounts, array('root', 'admin', 'no_contact'));
|
||||
$this->assertContactLinks($accounts, ['root', 'admin', 'no_contact']);
|
||||
|
||||
// Disable contact link for no_contact.
|
||||
$this->userData->set('contact', $no_contact_account->id(), 'enabled', FALSE);
|
||||
// @todo Remove cache invalidation in https://www.drupal.org/node/2477903.
|
||||
Cache::invalidateTags($no_contact_account->getCacheTagsToInvalidate());
|
||||
$this->drupalGet('test-contact-link');
|
||||
$this->assertContactLinks($accounts, array('root', 'admin'));
|
||||
$this->assertContactLinks($accounts, ['root', 'admin']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -100,7 +100,7 @@ class ContactLinkTest extends ViewTestBase {
|
|||
foreach ($names as $name) {
|
||||
$account = $accounts[$name];
|
||||
|
||||
$result = $this->xpath('//div[contains(@class, "views-field-contact")]//a[contains(@href, :url)]', array(':url' => $account->url('contact-form')));
|
||||
$result = $this->xpath('//div[contains(@class, "views-field-contact")]//a[contains(@href, :url)]', [':url' => $account->url('contact-form')]);
|
||||
$this->assertTrue(count($result));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,23 +11,23 @@
|
|||
|
||||
// Update the default category to that it is not selected.
|
||||
db_update('contact')
|
||||
->fields(array('selected' => '0'))
|
||||
->fields(['selected' => '0'])
|
||||
->condition('cid', '1')
|
||||
->execute();
|
||||
|
||||
// Add a custom contact category.
|
||||
db_insert('contact')->fields(array(
|
||||
db_insert('contact')->fields([
|
||||
'category',
|
||||
'recipients',
|
||||
'reply',
|
||||
'weight',
|
||||
'selected'
|
||||
))
|
||||
->values(array(
|
||||
])
|
||||
->values([
|
||||
'category' => 'Upgrade test',
|
||||
'recipients' => 'test1@example.com,test2@example.com',
|
||||
'reply' => 'Test reply',
|
||||
'weight' => 1,
|
||||
'selected' => 1,
|
||||
))
|
||||
])
|
||||
->execute();
|
||||
|
|
|
@ -15,7 +15,7 @@ use Drupal\Core\Form\FormStateInterface;
|
|||
*/
|
||||
function contact_storage_test_entity_base_field_info(EntityTypeInterface $entity_type) {
|
||||
if ($entity_type->id() == 'contact_message') {
|
||||
$fields = array();
|
||||
$fields = [];
|
||||
|
||||
$fields['id'] = BaseFieldDefinition::create('integer')
|
||||
->setLabel(t('Message ID'))
|
||||
|
@ -48,12 +48,12 @@ function contact_storage_test_entity_type_alter(array &$entity_types) {
|
|||
function contact_storage_test_form_contact_form_form_alter(&$form, FormStateInterface $form_state) {
|
||||
/** @var \Drupal\contact\ContactFormInterface $contact_form */
|
||||
$contact_form = $form_state->getFormObject()->getEntity();
|
||||
$form['send_a_pony'] = array(
|
||||
$form['send_a_pony'] = [
|
||||
'#type' => 'checkbox',
|
||||
'#title' => t('Send submitters a voucher for a free pony.'),
|
||||
'#description' => t('Enable to send an additional email with a free pony voucher to anyone who submits the form.'),
|
||||
'#default_value' => $contact_form->getThirdPartySetting('contact_storage_test', 'send_a_pony', FALSE),
|
||||
);
|
||||
];
|
||||
$form['#entity_builders'][] = 'contact_storage_test_contact_form_form_builder';
|
||||
}
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\contact\Functional;
|
||||
|
||||
use Drupal\Tests\BrowserTestBase;
|
||||
|
||||
/**
|
||||
* Tests contact form textfields are present if authenticated.
|
||||
*
|
||||
* @group contact
|
||||
*/
|
||||
class ContactAuthenticatedUserTest extends BrowserTestBase {
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = ['contact'];
|
||||
|
||||
/**
|
||||
* Tests that name and email fields are not present for authenticated users.
|
||||
*/
|
||||
public function testContactSiteWideTextfieldsLoggedInTestCase() {
|
||||
$this->drupalLogin($this->drupalCreateUser(['access site-wide contact form']));
|
||||
$this->drupalGet('contact');
|
||||
|
||||
// Ensure that there is no textfield for name.
|
||||
$this->assertFalse($this->xpath('//input[@name=:name]', [':name' => 'name']));
|
||||
|
||||
// Ensure that there is no textfield for email.
|
||||
$this->assertFalse($this->xpath('//input[@name=:name]', [':name' => 'mail']));
|
||||
}
|
||||
|
||||
}
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\contact\Tests;
|
||||
namespace Drupal\Tests\contact\Functional;
|
||||
|
||||
use Drupal\simpletest\WebTestBase;
|
||||
use Drupal\Tests\BrowserTestBase;
|
||||
|
||||
/**
|
||||
* Tests contact messages with language module.
|
||||
|
@ -13,18 +13,18 @@ use Drupal\simpletest\WebTestBase;
|
|||
*
|
||||
* @group contact
|
||||
*/
|
||||
class ContactLanguageTest extends WebTestBase {
|
||||
class ContactLanguageTest extends BrowserTestBase {
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array(
|
||||
public static $modules = [
|
||||
'contact',
|
||||
'language',
|
||||
'contact_test',
|
||||
);
|
||||
];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
|
@ -33,10 +33,10 @@ class ContactLanguageTest extends WebTestBase {
|
|||
parent::setUp();
|
||||
|
||||
// Create and log in administrative user.
|
||||
$admin_user = $this->drupalCreateUser(array(
|
||||
$admin_user = $this->drupalCreateUser([
|
||||
'access site-wide contact form',
|
||||
'administer languages',
|
||||
));
|
||||
]);
|
||||
$this->drupalLogin($admin_user);
|
||||
}
|
||||
|
|
@ -1,11 +1,13 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\contact\Tests;
|
||||
namespace Drupal\Tests\contact\Functional;
|
||||
|
||||
use Drupal\Component\Utility\SafeMarkup;
|
||||
use Drupal\Component\Render\PlainTextOutput;
|
||||
use Drupal\Core\Session\AccountInterface;
|
||||
use Drupal\simpletest\WebTestBase;
|
||||
use Drupal\Core\Test\AssertMailTrait;
|
||||
use Drupal\system\Tests\Cache\AssertPageCacheContextsAndTagsTrait;
|
||||
use Drupal\Tests\BrowserTestBase;
|
||||
use Drupal\user\RoleInterface;
|
||||
|
||||
/**
|
||||
|
@ -13,14 +15,17 @@ use Drupal\user\RoleInterface;
|
|||
*
|
||||
* @group contact
|
||||
*/
|
||||
class ContactPersonalTest extends WebTestBase {
|
||||
class ContactPersonalTest extends BrowserTestBase {
|
||||
|
||||
use AssertMailTrait;
|
||||
use AssertPageCacheContextsAndTagsTrait;
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array('contact', 'dblog');
|
||||
public static $modules = ['contact', 'dblog'];
|
||||
|
||||
/**
|
||||
* A user with some administrative permissions.
|
||||
|
@ -47,18 +52,18 @@ class ContactPersonalTest extends WebTestBase {
|
|||
parent::setUp();
|
||||
|
||||
// Create an admin user.
|
||||
$this->adminUser = $this->drupalCreateUser(array('administer contact forms', 'administer users', 'administer account settings', 'access site reports'));
|
||||
$this->adminUser = $this->drupalCreateUser(['administer contact forms', 'administer users', 'administer account settings', 'access site reports']);
|
||||
|
||||
// Create some normal users with their contact forms enabled by default.
|
||||
$this->config('contact.settings')->set('user_default_enabled', TRUE)->save();
|
||||
$this->webUser = $this->drupalCreateUser(array('access user profiles', 'access user contact forms'));
|
||||
$this->webUser = $this->drupalCreateUser(['access user profiles', 'access user contact forms']);
|
||||
$this->contactUser = $this->drupalCreateUser();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that mails for contact messages are correctly sent.
|
||||
*/
|
||||
function testSendPersonalContactMessage() {
|
||||
public function testSendPersonalContactMessage() {
|
||||
// Ensure that the web user's email needs escaping.
|
||||
$mail = $this->webUser->getUsername() . '&escaped@example.com';
|
||||
$this->webUser->setEmail($mail)->save();
|
||||
|
@ -67,18 +72,18 @@ class ContactPersonalTest extends WebTestBase {
|
|||
$this->drupalGet('user/' . $this->contactUser->id() . '/contact');
|
||||
$this->assertEscaped($mail);
|
||||
$message = $this->submitPersonalContact($this->contactUser);
|
||||
$mails = $this->drupalGetMails();
|
||||
$mails = $this->getMails();
|
||||
$this->assertEqual(1, count($mails));
|
||||
$mail = $mails[0];
|
||||
$this->assertEqual($mail['to'], $this->contactUser->getEmail());
|
||||
$this->assertEqual($mail['from'], $this->config('system.site')->get('mail'));
|
||||
$this->assertEqual($mail['reply-to'], $this->webUser->getEmail());
|
||||
$this->assertEqual($mail['key'], 'user_mail');
|
||||
$variables = array(
|
||||
$variables = [
|
||||
'@site-name' => $this->config('system.site')->get('name'),
|
||||
'@subject' => $message['subject[0][value]'],
|
||||
'@recipient-name' => $this->contactUser->getDisplayName(),
|
||||
);
|
||||
];
|
||||
$subject = PlainTextOutput::renderFromHtml(t('[@site-name] @subject', $variables));
|
||||
$this->assertEqual($mail['subject'], $subject, 'Subject is in sent message.');
|
||||
$this->assertTrue(strpos($mail['body'], 'Hello ' . $variables['@recipient-name']) !== FALSE, 'Recipient name is in sent message.');
|
||||
|
@ -90,11 +95,11 @@ class ContactPersonalTest extends WebTestBase {
|
|||
$this->drupalLogin($this->adminUser);
|
||||
// Verify that the correct watchdog message has been logged.
|
||||
$this->drupalGet('/admin/reports/dblog');
|
||||
$placeholders = array(
|
||||
$placeholders = [
|
||||
'@sender_name' => $this->webUser->username,
|
||||
'@sender_email' => $this->webUser->getEmail(),
|
||||
'@recipient_name' => $this->contactUser->getUsername()
|
||||
);
|
||||
];
|
||||
$this->assertRaw(SafeMarkup::format('@sender_name (@sender_email) sent @recipient_name an email.', $placeholders));
|
||||
// Ensure an unescaped version of the email does not exist anywhere.
|
||||
$this->assertNoRaw($this->webUser->getEmail());
|
||||
|
@ -103,13 +108,13 @@ class ContactPersonalTest extends WebTestBase {
|
|||
/**
|
||||
* Tests access to the personal contact form.
|
||||
*/
|
||||
function testPersonalContactAccess() {
|
||||
public function testPersonalContactAccess() {
|
||||
// Test allowed access to admin user's contact form.
|
||||
$this->drupalLogin($this->webUser);
|
||||
$this->drupalGet('user/' . $this->adminUser->id() . '/contact');
|
||||
$this->assertResponse(200);
|
||||
// Check the page title is properly displayed.
|
||||
$this->assertRaw(t('Contact @username', array('@username' => $this->adminUser->getDisplayName())));
|
||||
$this->assertRaw(t('Contact @username', ['@username' => $this->adminUser->getDisplayName()]));
|
||||
|
||||
// Test denied access to admin user's own contact form.
|
||||
$this->drupalLogout();
|
||||
|
@ -149,7 +154,7 @@ class ContactPersonalTest extends WebTestBase {
|
|||
|
||||
// Test that anonymous users can access the contact form.
|
||||
$this->drupalLogout();
|
||||
user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, array('access user contact forms'));
|
||||
user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, ['access user contact forms']);
|
||||
$this->drupalGet('user/' . $this->contactUser->id() . '/contact');
|
||||
$this->assertResponse(200);
|
||||
|
||||
|
@ -159,7 +164,7 @@ class ContactPersonalTest extends WebTestBase {
|
|||
$this->assertCacheContext('user');
|
||||
|
||||
// Revoke the personal contact permission for the anonymous user.
|
||||
user_role_revoke_permissions(RoleInterface::ANONYMOUS_ID, array('access user contact forms'));
|
||||
user_role_revoke_permissions(RoleInterface::ANONYMOUS_ID, ['access user contact forms']);
|
||||
$this->drupalGet('user/' . $this->contactUser->id() . '/contact');
|
||||
$this->assertResponse(403);
|
||||
$this->assertCacheContext('user');
|
||||
|
@ -168,7 +173,7 @@ class ContactPersonalTest extends WebTestBase {
|
|||
|
||||
// Disable the personal contact form.
|
||||
$this->drupalLogin($this->adminUser);
|
||||
$edit = array('contact_default_status' => FALSE);
|
||||
$edit = ['contact_default_status' => FALSE];
|
||||
$this->drupalPostForm('admin/config/people/accounts', $edit, t('Save configuration'));
|
||||
$this->assertText(t('The configuration options have been saved.'), 'Setting successfully saved.');
|
||||
$this->drupalLogout();
|
||||
|
@ -206,7 +211,7 @@ class ContactPersonalTest extends WebTestBase {
|
|||
$this->drupalGet('user/' . $this->webUser->id() . '/edit');
|
||||
$this->assertNoFieldChecked('edit-contact--2');
|
||||
$this->assertFalse(\Drupal::service('user.data')->get('contact', $this->webUser->id(), 'enabled'), 'Personal contact form disabled');
|
||||
$this->drupalPostForm(NULL, array('contact' => TRUE), t('Save'));
|
||||
$this->drupalPostForm(NULL, ['contact' => TRUE], t('Save'));
|
||||
$this->assertFieldChecked('edit-contact--2');
|
||||
$this->assertTrue(\Drupal::service('user.data')->get('contact', $this->webUser->id(), 'enabled'), 'Personal contact form enabled');
|
||||
|
||||
|
@ -223,7 +228,7 @@ class ContactPersonalTest extends WebTestBase {
|
|||
/**
|
||||
* Tests the personal contact form flood protection.
|
||||
*/
|
||||
function testPersonalContactFlood() {
|
||||
public function testPersonalContactFlood() {
|
||||
$flood_limit = 3;
|
||||
$this->config('contact.settings')->set('flood.limit', $flood_limit)->save();
|
||||
|
||||
|
@ -237,7 +242,7 @@ class ContactPersonalTest extends WebTestBase {
|
|||
|
||||
// Submit contact form one over limit.
|
||||
$this->submitPersonalContact($this->contactUser);
|
||||
$this->assertRaw(t('You cannot send more than %number messages in @interval. Try again later.', array('%number' => $flood_limit, '@interval' => \Drupal::service('date.formatter')->formatInterval($this->config('contact.settings')->get('flood.interval')))), 'Normal user denied access to flooded contact form.');
|
||||
$this->assertRaw(t('You cannot send more than %number messages in @interval. Try again later.', ['%number' => $flood_limit, '@interval' => \Drupal::service('date.formatter')->formatInterval($this->config('contact.settings')->get('flood.interval'))]), 'Normal user denied access to flooded contact form.');
|
||||
|
||||
// Test that the admin user can still access the contact form even though
|
||||
// the flood limit was reached.
|
||||
|
@ -248,8 +253,8 @@ class ContactPersonalTest extends WebTestBase {
|
|||
/**
|
||||
* Tests the personal contact form based access when an admin adds users.
|
||||
*/
|
||||
function testAdminContact() {
|
||||
user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, array('access user contact forms'));
|
||||
public function testAdminContact() {
|
||||
user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, ['access user contact forms']);
|
||||
$this->checkContactAccess(200);
|
||||
$this->checkContactAccess(403, FALSE);
|
||||
$config = $this->config('contact.settings');
|
||||
|
@ -276,13 +281,13 @@ class ContactPersonalTest extends WebTestBase {
|
|||
$this->assertNoFieldChecked('edit-contact--2');
|
||||
}
|
||||
$name = $this->randomMachineName();
|
||||
$edit = array(
|
||||
$edit = [
|
||||
'name' => $name,
|
||||
'mail' => $this->randomMachineName() . '@example.com',
|
||||
'pass[pass1]' => $pass = $this->randomString(),
|
||||
'pass[pass2]' => $pass,
|
||||
'notify' => FALSE,
|
||||
);
|
||||
];
|
||||
if (isset($contact_value)) {
|
||||
$edit['contact'] = $contact_value;
|
||||
}
|
||||
|
@ -306,11 +311,11 @@ class ContactPersonalTest extends WebTestBase {
|
|||
* @return array
|
||||
* An array with the form fields being used.
|
||||
*/
|
||||
protected function submitPersonalContact(AccountInterface $account, array $message = array()) {
|
||||
$message += array(
|
||||
protected function submitPersonalContact(AccountInterface $account, array $message = []) {
|
||||
$message += [
|
||||
'subject[0][value]' => $this->randomMachineName(16),
|
||||
'message[0][value]' => $this->randomMachineName(64),
|
||||
);
|
||||
];
|
||||
$this->drupalPostForm('user/' . $account->id() . '/contact', $message, t('Send message'));
|
||||
return $message;
|
||||
}
|
|
@ -1,26 +1,27 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\contact\Tests;
|
||||
namespace Drupal\Tests\contact\Functional;
|
||||
|
||||
use Drupal\Component\Utility\Unicode;
|
||||
use Drupal\contact\Entity\ContactForm;
|
||||
use Drupal\Core\Mail\MailFormatHelper;
|
||||
use Drupal\Core\Url;
|
||||
use Drupal\Core\Test\AssertMailTrait;
|
||||
use Drupal\field_ui\Tests\FieldUiTestTrait;
|
||||
use Drupal\simpletest\WebTestBase;
|
||||
use Drupal\Tests\BrowserTestBase;
|
||||
use Drupal\Core\Entity\EntityTypeInterface;
|
||||
use Drupal\user\RoleInterface;
|
||||
|
||||
/**
|
||||
* Tests site-wide contact form functionality.
|
||||
*
|
||||
* @see \Drupal\contact\Tests\ContactStorageTest
|
||||
* @see \Drupal\Tests\contact\Functional\ContactStorageTest
|
||||
*
|
||||
* @group contact
|
||||
*/
|
||||
class ContactSitewideTest extends WebTestBase {
|
||||
class ContactSitewideTest extends BrowserTestBase {
|
||||
|
||||
use FieldUiTestTrait;
|
||||
use AssertMailTrait;
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
|
@ -42,13 +43,14 @@ class ContactSitewideTest extends WebTestBase {
|
|||
/**
|
||||
* Tests configuration options and the site-wide contact form.
|
||||
*/
|
||||
function testSiteWideContact() {
|
||||
public function testSiteWideContact() {
|
||||
// Create and log in administrative user.
|
||||
$admin_user = $this->drupalCreateUser([
|
||||
'access site-wide contact form',
|
||||
'administer contact forms',
|
||||
'administer users',
|
||||
'administer account settings',
|
||||
'administer contact_message display',
|
||||
'administer contact_message fields',
|
||||
'administer contact_message form display',
|
||||
]);
|
||||
|
@ -65,7 +67,7 @@ class ContactSitewideTest extends WebTestBase {
|
|||
->save();
|
||||
|
||||
// Set settings.
|
||||
$edit = array();
|
||||
$edit = [];
|
||||
$edit['contact_default_status'] = TRUE;
|
||||
$this->drupalPostForm('admin/config/people/accounts', $edit, t('Save configuration'));
|
||||
$this->assertText(t('The configuration options have been saved.'));
|
||||
|
@ -77,11 +79,11 @@ class ContactSitewideTest extends WebTestBase {
|
|||
// Cannot use ::assertNoLinkByHref as it does partial url matching and with
|
||||
// field_ui enabled admin/structure/contact/manage/personal/fields exists.
|
||||
// @todo: See https://www.drupal.org/node/2031223 for the above.
|
||||
$edit_link = $this->xpath('//a[@href=:href]', array(
|
||||
':href' => \Drupal::url('entity.contact_form.edit_form', array('contact_form' => 'personal'))
|
||||
));
|
||||
$edit_link = $this->xpath('//a[@href=:href]', [
|
||||
':href' => \Drupal::url('entity.contact_form.edit_form', ['contact_form' => 'personal'])
|
||||
]);
|
||||
$this->assertTrue(empty($edit_link), format_string('No link containing href %href found.',
|
||||
array('%href' => 'admin/structure/contact/manage/personal')
|
||||
['%href' => 'admin/structure/contact/manage/personal']
|
||||
));
|
||||
$this->assertNoLinkByHref('admin/structure/contact/manage/personal/delete');
|
||||
|
||||
|
@ -95,7 +97,7 @@ class ContactSitewideTest extends WebTestBase {
|
|||
$this->assertNoLinkByHref('admin/structure/contact/manage/feedback');
|
||||
|
||||
// Ensure that the contact form won't be shown without forms.
|
||||
user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, array('access site-wide contact form'));
|
||||
user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, ['access site-wide contact form']);
|
||||
$this->drupalLogout();
|
||||
$this->drupalGet('contact');
|
||||
$this->assertResponse(404);
|
||||
|
@ -110,10 +112,10 @@ class ContactSitewideTest extends WebTestBase {
|
|||
|
||||
// Add forms.
|
||||
// Test invalid recipients.
|
||||
$invalid_recipients = array('invalid', 'invalid@', 'invalid@site.', '@site.', '@site.com');
|
||||
$invalid_recipients = ['invalid', 'invalid@', 'invalid@site.', '@site.', '@site.com'];
|
||||
foreach ($invalid_recipients as $invalid_recipient) {
|
||||
$this->addContactForm($this->randomMachineName(16), $this->randomMachineName(16), $invalid_recipient, '', FALSE);
|
||||
$this->assertRaw(t('%recipient is an invalid email address.', array('%recipient' => $invalid_recipient)));
|
||||
$this->assertRaw(t('%recipient is an invalid email address.', ['%recipient' => $invalid_recipient]));
|
||||
}
|
||||
|
||||
// Test validation of empty form and recipients fields.
|
||||
|
@ -123,24 +125,24 @@ class ContactSitewideTest extends WebTestBase {
|
|||
$this->assertText(t('Recipients field is required.'));
|
||||
|
||||
// Test validation of max_length machine name.
|
||||
$recipients = array('simpletest&@example.com', 'simpletest2@example.com', 'simpletest3@example.com');
|
||||
$recipients = ['simpletest&@example.com', 'simpletest2@example.com', 'simpletest3@example.com'];
|
||||
$max_length = EntityTypeInterface::BUNDLE_MAX_LENGTH;
|
||||
$max_length_exceeded = $max_length + 1;
|
||||
$this->addContactForm($id = Unicode::strtolower($this->randomMachineName($max_length_exceeded)), $label = $this->randomMachineName($max_length_exceeded), implode(',', array($recipients[0])), '', TRUE);
|
||||
$this->assertText(format_string('Machine-readable name cannot be longer than @max characters but is currently @exceeded characters long.', array('@max' => $max_length, '@exceeded' => $max_length_exceeded)));
|
||||
$this->addContactForm($id = Unicode::strtolower($this->randomMachineName($max_length)), $label = $this->randomMachineName($max_length), implode(',', array($recipients[0])), '', TRUE);
|
||||
$this->assertText(t('Contact form @label has been added.', array('@label' => $label)));
|
||||
$this->addContactForm($id = Unicode::strtolower($this->randomMachineName($max_length_exceeded)), $label = $this->randomMachineName($max_length_exceeded), implode(',', [$recipients[0]]), '', TRUE);
|
||||
$this->assertText(format_string('Machine-readable name cannot be longer than @max characters but is currently @exceeded characters long.', ['@max' => $max_length, '@exceeded' => $max_length_exceeded]));
|
||||
$this->addContactForm($id = Unicode::strtolower($this->randomMachineName($max_length)), $label = $this->randomMachineName($max_length), implode(',', [$recipients[0]]), '', TRUE);
|
||||
$this->assertText(t('Contact form @label has been added.', ['@label' => $label]));
|
||||
|
||||
// Verify that the creation message contains a link to a contact form.
|
||||
$view_link = $this->xpath('//div[@class="messages"]//a[contains(@href, :href)]', array(':href' => 'contact/'));
|
||||
$view_link = $this->xpath('//div[@class="messages"]//a[contains(@href, :href)]', [':href' => 'contact/']);
|
||||
$this->assert(isset($view_link), 'The message area contains a link to a contact form.');
|
||||
|
||||
// Create first valid form.
|
||||
$this->addContactForm($id = Unicode::strtolower($this->randomMachineName(16)), $label = $this->randomMachineName(16), implode(',', array($recipients[0])), '', TRUE);
|
||||
$this->assertText(t('Contact form @label has been added.', array('@label' => $label)));
|
||||
$this->addContactForm($id = Unicode::strtolower($this->randomMachineName(16)), $label = $this->randomMachineName(16), implode(',', [$recipients[0]]), '', TRUE);
|
||||
$this->assertText(t('Contact form @label has been added.', ['@label' => $label]));
|
||||
|
||||
// Verify that the creation message contains a link to a contact form.
|
||||
$view_link = $this->xpath('//div[@class="messages"]//a[contains(@href, :href)]', array(':href' => 'contact/'));
|
||||
$view_link = $this->xpath('//div[@class="messages"]//a[contains(@href, :href)]', [':href' => 'contact/']);
|
||||
$this->assert(isset($view_link), 'The message area contains a link to a contact form.');
|
||||
|
||||
// Check that the form was created in site default language.
|
||||
|
@ -156,13 +158,13 @@ class ContactSitewideTest extends WebTestBase {
|
|||
$this->assertEscaped($recipients[0]);
|
||||
|
||||
// Test update contact form.
|
||||
$this->updateContactForm($id, $label = $this->randomMachineName(16), $recipients_str = implode(',', array($recipients[0], $recipients[1])), $reply = $this->randomMachineName(30), FALSE, 'Your message has been sent.', '/user');
|
||||
$this->updateContactForm($id, $label = $this->randomMachineName(16), $recipients_str = implode(',', [$recipients[0], $recipients[1]]), $reply = $this->randomMachineName(30), FALSE, 'Your message has been sent.', '/user');
|
||||
$config = $this->config('contact.form.' . $id)->get();
|
||||
$this->assertEqual($config['label'], $label);
|
||||
$this->assertEqual($config['recipients'], array($recipients[0], $recipients[1]));
|
||||
$this->assertEqual($config['recipients'], [$recipients[0], $recipients[1]]);
|
||||
$this->assertEqual($config['reply'], $reply);
|
||||
$this->assertNotEqual($id, $this->config('contact.settings')->get('default_form'));
|
||||
$this->assertText(t('Contact form @label has been updated.', array('@label' => $label)));
|
||||
$this->assertText(t('Contact form @label has been updated.', ['@label' => $label]));
|
||||
// Ensure the label is displayed on the contact page for this form.
|
||||
$this->drupalGet('contact/' . $id);
|
||||
$this->assertText($label);
|
||||
|
@ -171,7 +173,7 @@ class ContactSitewideTest extends WebTestBase {
|
|||
$this->config('contact.settings')->set('default_form', $id)->save();
|
||||
|
||||
// Ensure that the contact form is shown without a form selection input.
|
||||
user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, array('access site-wide contact form'));
|
||||
user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, ['access site-wide contact form']);
|
||||
$this->drupalLogout();
|
||||
$this->drupalGet('contact');
|
||||
$this->assertText(t('Your email address'));
|
||||
|
@ -179,26 +181,26 @@ class ContactSitewideTest extends WebTestBase {
|
|||
$this->drupalLogin($admin_user);
|
||||
|
||||
// Add more forms.
|
||||
$this->addContactForm(Unicode::strtolower($this->randomMachineName(16)), $label = $this->randomMachineName(16), implode(',', array($recipients[0], $recipients[1])), '', FALSE);
|
||||
$this->assertText(t('Contact form @label has been added.', array('@label' => $label)));
|
||||
$this->addContactForm(Unicode::strtolower($this->randomMachineName(16)), $label = $this->randomMachineName(16), implode(',', [$recipients[0], $recipients[1]]), '', FALSE);
|
||||
$this->assertText(t('Contact form @label has been added.', ['@label' => $label]));
|
||||
|
||||
$this->addContactForm($name = Unicode::strtolower($this->randomMachineName(16)), $label = $this->randomMachineName(16), implode(',', array($recipients[0], $recipients[1], $recipients[2])), '', FALSE);
|
||||
$this->assertText(t('Contact form @label has been added.', array('@label' => $label)));
|
||||
$this->addContactForm($name = Unicode::strtolower($this->randomMachineName(16)), $label = $this->randomMachineName(16), implode(',', [$recipients[0], $recipients[1], $recipients[2]]), '', FALSE);
|
||||
$this->assertText(t('Contact form @label has been added.', ['@label' => $label]));
|
||||
|
||||
// Try adding a form that already exists.
|
||||
$this->addContactForm($name, $label, '', '', FALSE);
|
||||
$this->assertNoText(t('Contact form @label has been added.', array('@label' => $label)));
|
||||
$this->assertNoText(t('Contact form @label has been added.', ['@label' => $label]));
|
||||
$this->assertRaw(t('The machine-readable name is already in use. It must be unique.'));
|
||||
|
||||
$this->drupalLogout();
|
||||
|
||||
// Check to see that anonymous user cannot see contact page without permission.
|
||||
user_role_revoke_permissions(RoleInterface::ANONYMOUS_ID, array('access site-wide contact form'));
|
||||
user_role_revoke_permissions(RoleInterface::ANONYMOUS_ID, ['access site-wide contact form']);
|
||||
$this->drupalGet('contact');
|
||||
$this->assertResponse(403);
|
||||
|
||||
// Give anonymous user permission and see that page is viewable.
|
||||
user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, array('access site-wide contact form'));
|
||||
user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, ['access site-wide contact form']);
|
||||
$this->drupalGet('contact');
|
||||
$this->assertResponse(200);
|
||||
|
||||
|
@ -210,7 +212,7 @@ class ContactSitewideTest extends WebTestBase {
|
|||
$this->assertText(t('Your email address field is required.'));
|
||||
|
||||
$this->submitContact($this->randomMachineName(16), $invalid_recipients[0], $this->randomMachineName(16), $id, $this->randomMachineName(64));
|
||||
$this->assertRaw(t('The email address %mail is not valid.', array('%mail' => 'invalid')));
|
||||
$this->assertRaw(t('The email address %mail is not valid.', ['%mail' => 'invalid']));
|
||||
|
||||
$this->submitContact($this->randomMachineName(16), $recipients[0], '', $id, $this->randomMachineName(64));
|
||||
$this->assertText(t('Subject field is required.'));
|
||||
|
@ -238,7 +240,7 @@ class ContactSitewideTest extends WebTestBase {
|
|||
}
|
||||
// Submit contact form one over limit.
|
||||
$this->submitContact($this->randomMachineName(16), $recipients[0], $this->randomMachineName(16), $id, $this->randomMachineName(64));
|
||||
$this->assertRaw(t('You cannot send more than %number messages in 10 min. Try again later.', array('%number' => $this->config('contact.settings')->get('flood.limit'))));
|
||||
$this->assertRaw(t('You cannot send more than %number messages in 10 min. Try again later.', ['%number' => $this->config('contact.settings')->get('flood.limit')]));
|
||||
|
||||
// Test listing controller.
|
||||
$this->drupalLogin($admin_user);
|
||||
|
@ -246,7 +248,7 @@ class ContactSitewideTest extends WebTestBase {
|
|||
$this->deleteContactForms();
|
||||
|
||||
$label = $this->randomMachineName(16);
|
||||
$recipients = implode(',', array($recipients[0], $recipients[1], $recipients[2]));
|
||||
$recipients = implode(',', [$recipients[0], $recipients[1], $recipients[2]]);
|
||||
$contact_form = Unicode::strtolower($this->randomMachineName(16));
|
||||
$this->addContactForm($contact_form, $label, $recipients, '', FALSE);
|
||||
$this->drupalGet('admin/structure/contact');
|
||||
|
@ -265,15 +267,13 @@ class ContactSitewideTest extends WebTestBase {
|
|||
$this->assertTrue(!empty($view_link), 'Contact listing links to contact form.');
|
||||
|
||||
// Find out in which row the form we want to add a field to is.
|
||||
$i = 0;
|
||||
foreach ($this->xpath('//table/tbody/tr') as $row) {
|
||||
if (((string) $row->td[0]->a) == $label) {
|
||||
if ($row->findLink($label)) {
|
||||
$row->clickLink('Manage fields');
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
|
||||
$this->clickLink(t('Manage fields'), $i);
|
||||
$this->assertResponse(200);
|
||||
$this->clickLink(t('Add field'));
|
||||
$this->assertResponse(200);
|
||||
|
@ -293,15 +293,15 @@ class ContactSitewideTest extends WebTestBase {
|
|||
$this->assertText($field_label);
|
||||
|
||||
// Submit the contact form and verify the content.
|
||||
$edit = array(
|
||||
$edit = [
|
||||
'subject[0][value]' => $this->randomMachineName(),
|
||||
'message[0][value]' => $this->randomMachineName(),
|
||||
$field_name . '[0][value]' => $this->randomMachineName(),
|
||||
);
|
||||
];
|
||||
$this->drupalPostForm(NULL, $edit, t('Send message'));
|
||||
$mails = $this->drupalGetMails();
|
||||
$mails = $this->getMails();
|
||||
$mail = array_pop($mails);
|
||||
$this->assertEqual($mail['subject'], t('[@label] @subject', array('@label' => $label, '@subject' => $edit['subject[0][value]'])));
|
||||
$this->assertEqual($mail['subject'], t('[@label] @subject', ['@label' => $label, '@subject' => $edit['subject[0][value]']]));
|
||||
$this->assertTrue(strpos($mail['body'], $field_label));
|
||||
$this->assertTrue(strpos($mail['body'], $edit[$field_name . '[0][value]']));
|
||||
|
||||
|
@ -315,11 +315,11 @@ class ContactSitewideTest extends WebTestBase {
|
|||
$this->drupalGet('contact/' . $contact_form);
|
||||
|
||||
// Submit the contact form and verify the content.
|
||||
$edit = array(
|
||||
$edit = [
|
||||
'subject[0][value]' => $this->randomMachineName(),
|
||||
'message[0][value]' => $this->randomMachineName(),
|
||||
$field_name . '[0][value]' => $this->randomMachineName(),
|
||||
);
|
||||
];
|
||||
$this->drupalPostForm(NULL, $edit, t('Send message'));
|
||||
$this->assertText('Thanks for your submission.');
|
||||
$this->assertUrl('user/' . $admin_user->id());
|
||||
|
@ -335,21 +335,50 @@ class ContactSitewideTest extends WebTestBase {
|
|||
$this->drupalGet('contact/' . $contact_form);
|
||||
|
||||
// Submit the contact form and verify the content.
|
||||
$edit = array(
|
||||
$edit = [
|
||||
'subject[0][value]' => $this->randomMachineName(),
|
||||
'message[0][value]' => $this->randomMachineName(),
|
||||
$field_name . '[0][value]' => $this->randomMachineName(),
|
||||
);
|
||||
];
|
||||
$this->drupalPostForm(NULL, $edit, t('Send message'));
|
||||
$result = $this->xpath('//div[@role=:role]', array(':role' => 'contentinfo'));
|
||||
$result = $this->xpath('//div[@role=:role]', [':role' => 'contentinfo']);
|
||||
$this->assertEqual(count($result), 0, 'Messages not found.');
|
||||
$this->assertUrl('user/' . $admin_user->id());
|
||||
|
||||
// Test preview and visibility of the message field and label. Submit the
|
||||
// contact form and verify the content.
|
||||
$edit = [
|
||||
'subject[0][value]' => $this->randomMachineName(),
|
||||
'message[0][value]' => $this->randomMachineName(),
|
||||
$field_name . '[0][value]' => $this->randomMachineName(),
|
||||
];
|
||||
$this->drupalPostForm($form->toUrl('canonical'), $edit, t('Preview'));
|
||||
|
||||
// Message is now by default displayed twice, once for the form element and
|
||||
// once for the viewed message.
|
||||
$page_text = $this->getSession()->getPage()->getText();
|
||||
$this->assertGreaterThan(1, substr_count($page_text, t('Message')));
|
||||
$this->assertSession()->responseContains('class="field field--name-message field--type-string-long field--label-above');
|
||||
$this->assertSession()->pageTextContains($edit['message[0][value]']);
|
||||
|
||||
// Hide the message field label.
|
||||
$display_edit = [
|
||||
'fields[message][label]' => 'hidden',
|
||||
];
|
||||
$this->drupalPostForm('admin/structure/contact/manage/' . $contact_form . '/display', $display_edit, t('Save'));
|
||||
|
||||
$this->drupalPostForm($form->toUrl('canonical'), $edit, t('Preview'));
|
||||
// Message should only be displayed once now.
|
||||
$page_text = $this->getSession()->getPage()->getText();
|
||||
$this->assertEquals(1, substr_count($page_text, t('Message')));
|
||||
$this->assertSession()->responseContains('class="field field--name-message field--type-string-long field--label-hidden field__item">');
|
||||
$this->assertSession()->pageTextContains($edit['message[0][value]']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests auto-reply on the site-wide contact form.
|
||||
*/
|
||||
function testAutoReply() {
|
||||
public function testAutoReply() {
|
||||
// Create and log in administrative user.
|
||||
$admin_user = $this->drupalCreateUser([
|
||||
'access site-wide contact form',
|
||||
|
@ -369,7 +398,7 @@ class ContactSitewideTest extends WebTestBase {
|
|||
|
||||
// Log the current user out in order to test the name and email fields.
|
||||
$this->drupalLogout();
|
||||
user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, array('access site-wide contact form'));
|
||||
user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, ['access site-wide contact form']);
|
||||
|
||||
// Test the auto-reply for form 'foo'.
|
||||
$email = $this->randomMachineName(32) . '@example.com';
|
||||
|
@ -377,7 +406,7 @@ class ContactSitewideTest extends WebTestBase {
|
|||
$this->submitContact($this->randomMachineName(16), $email, $subject, 'foo', $this->randomString(128));
|
||||
|
||||
// We are testing the auto-reply, so there should be one email going to the sender.
|
||||
$captured_emails = $this->drupalGetMails(array('id' => 'contact_page_autoreply', 'to' => $email));
|
||||
$captured_emails = $this->getMails(['id' => 'contact_page_autoreply', 'to' => $email]);
|
||||
$this->assertEqual(count($captured_emails), 1);
|
||||
$this->assertEqual(trim($captured_emails[0]['body']), trim(MailFormatHelper::htmlToText($foo_autoreply)));
|
||||
|
||||
|
@ -386,14 +415,14 @@ class ContactSitewideTest extends WebTestBase {
|
|||
$this->submitContact($this->randomMachineName(16), $email, $this->randomString(64), 'bar', $this->randomString(128));
|
||||
|
||||
// Auto-reply for form 'bar' should result in one auto-reply email to the sender.
|
||||
$captured_emails = $this->drupalGetMails(array('id' => 'contact_page_autoreply', 'to' => $email));
|
||||
$captured_emails = $this->getMails(['id' => 'contact_page_autoreply', 'to' => $email]);
|
||||
$this->assertEqual(count($captured_emails), 1);
|
||||
$this->assertEqual(trim($captured_emails[0]['body']), trim(MailFormatHelper::htmlToText($bar_autoreply)));
|
||||
|
||||
// Verify that no auto-reply is sent when the auto-reply field is left blank.
|
||||
$email = $this->randomMachineName(32) . '@example.com';
|
||||
$this->submitContact($this->randomMachineName(16), $email, $this->randomString(64), 'no_autoreply', $this->randomString(128));
|
||||
$captured_emails = $this->drupalGetMails(array('id' => 'contact_page_autoreply', 'to' => $email));
|
||||
$captured_emails = $this->getMails(['id' => 'contact_page_autoreply', 'to' => $email]);
|
||||
$this->assertEqual(count($captured_emails), 0);
|
||||
|
||||
// Verify that the current error message doesn't show, that the auto-reply
|
||||
|
@ -404,7 +433,7 @@ class ContactSitewideTest extends WebTestBase {
|
|||
->save();
|
||||
$this->submitContact($this->randomMachineName(16), $email, $this->randomString(64), 'foo', $this->randomString(128));
|
||||
$this->assertNoText('Unable to send email. Contact the site administrator if the problem persists.');
|
||||
$captured_emails = $this->drupalGetMails(['id' => 'contact_page_autoreply', 'to' => $email]);
|
||||
$captured_emails = $this->getMails(['id' => 'contact_page_autoreply', 'to' => $email]);
|
||||
$this->assertEqual(count($captured_emails), 0);
|
||||
$this->drupalLogin($admin_user);
|
||||
$this->drupalGet('admin/reports/dblog');
|
||||
|
@ -431,8 +460,8 @@ class ContactSitewideTest extends WebTestBase {
|
|||
* @param array $third_party_settings
|
||||
* Array of third party settings to be added to the posted form data.
|
||||
*/
|
||||
function addContactForm($id, $label, $recipients, $reply, $selected, $message = 'Your message has been sent.', $third_party_settings = []) {
|
||||
$edit = array();
|
||||
public function addContactForm($id, $label, $recipients, $reply, $selected, $message = 'Your message has been sent.', $third_party_settings = []) {
|
||||
$edit = [];
|
||||
$edit['label'] = $label;
|
||||
$edit['id'] = $id;
|
||||
$edit['message'] = $message;
|
||||
|
@ -463,8 +492,8 @@ class ContactSitewideTest extends WebTestBase {
|
|||
* @param string $redirect
|
||||
* The path where user will be redirect after this form has been submitted..
|
||||
*/
|
||||
function updateContactForm($id, $label, $recipients, $reply, $selected, $message = 'Your message has been sent.', $redirect = '/') {
|
||||
$edit = array();
|
||||
public function updateContactForm($id, $label, $recipients, $reply, $selected, $message = 'Your message has been sent.', $redirect = '/') {
|
||||
$edit = [];
|
||||
$edit['label'] = $label;
|
||||
$edit['recipients'] = $recipients;
|
||||
$edit['reply'] = $reply;
|
||||
|
@ -488,8 +517,8 @@ class ContactSitewideTest extends WebTestBase {
|
|||
* @param string $message
|
||||
* The message body.
|
||||
*/
|
||||
function submitContact($name, $mail, $subject, $id, $message) {
|
||||
$edit = array();
|
||||
public function submitContact($name, $mail, $subject, $id, $message) {
|
||||
$edit = [];
|
||||
$edit['name'] = $name;
|
||||
$edit['mail'] = $mail;
|
||||
$edit['subject[0][value]'] = $subject;
|
||||
|
@ -505,7 +534,7 @@ class ContactSitewideTest extends WebTestBase {
|
|||
/**
|
||||
* Deletes all forms.
|
||||
*/
|
||||
function deleteContactForms() {
|
||||
public function deleteContactForms() {
|
||||
$contact_forms = ContactForm::loadMultiple();;
|
||||
foreach ($contact_forms as $id => $contact_form) {
|
||||
if ($id == 'personal') {
|
||||
|
@ -514,9 +543,9 @@ class ContactSitewideTest extends WebTestBase {
|
|||
$this->assertResponse(403);
|
||||
}
|
||||
else {
|
||||
$this->drupalPostForm("admin/structure/contact/manage/$id/delete", array(), t('Delete'));
|
||||
$this->assertRaw(t('The contact form %label has been deleted.', array('%label' => $contact_form->label())));
|
||||
$this->assertFalse(ContactForm::load($id), format_string('Form %contact_form not found', array('%contact_form' => $contact_form->label())));
|
||||
$this->drupalPostForm("admin/structure/contact/manage/$id/delete", [], t('Delete'));
|
||||
$this->assertRaw(t('The contact form %label has been deleted.', ['%label' => $contact_form->label()]));
|
||||
$this->assertFalse(ContactForm::load($id), format_string('Form %contact_form not found', ['%contact_form' => $contact_form->label()]));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\contact\Tests;
|
||||
namespace Drupal\Tests\contact\Functional;
|
||||
|
||||
use Drupal\Component\Utility\Unicode;
|
||||
use Drupal\contact\Entity\Message;
|
||||
|
@ -37,23 +37,23 @@ class ContactStorageTest extends ContactSitewideTest {
|
|||
*/
|
||||
public function testContactStorage() {
|
||||
// Create and log in administrative user.
|
||||
$admin_user = $this->drupalCreateUser(array(
|
||||
$admin_user = $this->drupalCreateUser([
|
||||
'access site-wide contact form',
|
||||
'administer contact forms',
|
||||
'administer users',
|
||||
'administer account settings',
|
||||
'administer contact_message fields',
|
||||
));
|
||||
]);
|
||||
$this->drupalLogin($admin_user);
|
||||
// Create first valid contact form.
|
||||
$mail = 'simpletest@example.com';
|
||||
$this->addContactForm($id = Unicode::strtolower($this->randomMachineName(16)), $label = $this->randomMachineName(16), implode(',', array($mail)), '', TRUE, 'Your message has been sent.', [
|
||||
$this->addContactForm($id = Unicode::strtolower($this->randomMachineName(16)), $label = $this->randomMachineName(16), implode(',', [$mail]), '', TRUE, 'Your message has been sent.', [
|
||||
'send_a_pony' => 1,
|
||||
]);
|
||||
$this->assertText(t('Contact form @label has been added.', array('@label' => $label)));
|
||||
$this->assertText(t('Contact form @label has been added.', ['@label' => $label]));
|
||||
|
||||
// Ensure that anonymous can submit site-wide contact form.
|
||||
user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, array('access site-wide contact form'));
|
||||
user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, ['access site-wide contact form']);
|
||||
$this->drupalLogout();
|
||||
$this->drupalGet('contact');
|
||||
$this->assertText(t('Your email address'));
|
|
@ -17,17 +17,17 @@ class MessageEntityTest extends EntityKernelTestBase {
|
|||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array(
|
||||
public static $modules = [
|
||||
'system',
|
||||
'contact',
|
||||
'field',
|
||||
'user',
|
||||
'contact_test',
|
||||
);
|
||||
];
|
||||
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
$this->installConfig(array('contact', 'contact_test'));
|
||||
$this->installConfig(['contact', 'contact_test']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -35,7 +35,7 @@ class MessageEntityTest extends EntityKernelTestBase {
|
|||
*/
|
||||
public function testMessageMethods() {
|
||||
$message_storage = $this->container->get('entity.manager')->getStorage('contact_message');
|
||||
$message = $message_storage->create(array('contact_form' => 'feedback'));
|
||||
$message = $message_storage->create(['contact_form' => 'feedback']);
|
||||
|
||||
// Check for empty values first.
|
||||
$this->assertEqual($message->getMessage(), '');
|
||||
|
|
|
@ -18,7 +18,7 @@ class MigrateContactCategoryTest extends MigrateDrupal6TestBase {
|
|||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array('contact');
|
||||
public static $modules = ['contact'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
|
@ -59,6 +59,26 @@ class MigrateContactCategoryTest extends MigrateDrupal6TestBase {
|
|||
$this->assertEntity('website_feedback', 'Website feedback', ['admin@example.com'], '', 0);
|
||||
$this->assertEntity('some_other_category', 'Some other category', ['test@example.com'], 'Thanks for contacting us, we will reply ASAP!', 1);
|
||||
$this->assertEntity('a_category_much_longer_than_thir', 'A category much longer than thirty two characters', ['fortyninechars@example.com'], '', 2);
|
||||
|
||||
// Test there are no duplicated roles.
|
||||
$contact_forms = [
|
||||
'website_feedback1',
|
||||
'some_other_category1',
|
||||
'a_category_much_longer_than_thir1',
|
||||
];
|
||||
$this->assertEmpty(ContactForm::loadMultiple($contact_forms));
|
||||
|
||||
/*
|
||||
* Remove the map row for the Website feedback contact form so that it
|
||||
* can be migrated again.
|
||||
*/
|
||||
$id_map = $this->getMigration('contact_category')->getIdMap();
|
||||
$id_map->delete(['cid' => '1']);
|
||||
$this->executeMigration('contact_category');
|
||||
|
||||
// Test there is a duplicate Website feedback form.
|
||||
$contact_form = ContactForm::load('website_feedback1');
|
||||
$this->assertEntity('website_feedback1', 'Website feedback', ['admin@example.com'], '', 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,75 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\contact\Kernel\Migrate\d6;
|
||||
|
||||
use Drupal\contact\Entity\ContactForm;
|
||||
use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase;
|
||||
|
||||
/**
|
||||
* Migrate contact categories to contact.form.*.yml.
|
||||
*
|
||||
* @group migrate_drupal_6
|
||||
*/
|
||||
class MigrateContactCategoryTest extends MigrateDrupal6TestBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $modules = ['contact'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
$this->executeMigration('contact_category');
|
||||
}
|
||||
|
||||
/**
|
||||
* The Drupal 6 contact categories to Drupal 8 migration.
|
||||
*/
|
||||
public function testContactCategory() {
|
||||
/** @var \Drupal\contact\Entity\ContactForm $contact_form */
|
||||
$contact_form = ContactForm::load('website_feedback');
|
||||
$this->assertIdentical('Website feedback', $contact_form->label());
|
||||
$this->assertIdentical(array('admin@example.com'), $contact_form->getRecipients());
|
||||
$this->assertIdentical('', $contact_form->getReply());
|
||||
$this->assertIdentical(0, $contact_form->getWeight());
|
||||
|
||||
$contact_form = ContactForm::load('some_other_category');
|
||||
$this->assertIdentical('Some other category', $contact_form->label());
|
||||
$this->assertIdentical(array('test@example.com'), $contact_form->getRecipients());
|
||||
$this->assertIdentical('Thanks for contacting us, we will reply ASAP!', $contact_form->getReply());
|
||||
$this->assertIdentical(1, $contact_form->getWeight());
|
||||
|
||||
$contact_form = ContactForm::load('a_category_much_longer_than_thir');
|
||||
$this->assertIdentical('A category much longer than thirty two characters', $contact_form->label());
|
||||
$this->assertIdentical(array('fortyninechars@example.com'), $contact_form->getRecipients());
|
||||
$this->assertIdentical('', $contact_form->getReply());
|
||||
$this->assertIdentical(2, $contact_form->getWeight());
|
||||
|
||||
// Test there are no duplicated roles.
|
||||
$contact_forms = [
|
||||
'website_feedback1',
|
||||
'some_other_category1',
|
||||
'a_category_much_longer_than_thir1',
|
||||
];
|
||||
$this->assertEmpty(ContactForm::loadMultiple($contact_forms));
|
||||
|
||||
/*
|
||||
* Remove the map row for the Website feedback contact form so that it
|
||||
* can be migrated again.
|
||||
*/
|
||||
$id_map = $this->getMigration('contact_category')->getIdMap();
|
||||
$id_map->delete(['cid' => '1']);
|
||||
$this->executeMigration('contact_category');
|
||||
|
||||
// Test there is a duplicate Website feedback form.
|
||||
$contact_form = ContactForm::load('website_feedback1');
|
||||
$this->assertSame('Website feedback', $contact_form->label());
|
||||
$this->assertSame(array('admin@example.com'), $contact_form->getRecipients());
|
||||
$this->assertSame('', $contact_form->getReply());
|
||||
$this->assertSame(0, $contact_form->getWeight());
|
||||
}
|
||||
|
||||
}
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
namespace Drupal\Tests\contact\Kernel\Migrate\d6;
|
||||
|
||||
use Drupal\config\Tests\SchemaCheckTestTrait;
|
||||
use Drupal\Tests\SchemaCheckTestTrait;
|
||||
use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase;
|
||||
|
||||
/**
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
namespace Drupal\Tests\contact\Unit;
|
||||
|
||||
use Drupal\contact\MailHandler;
|
||||
use Drupal\contact\MailHandlerException;
|
||||
use Drupal\contact\MessageInterface;
|
||||
use Drupal\Core\Language\Language;
|
||||
use Drupal\Core\Session\AccountInterface;
|
||||
|
@ -80,7 +81,7 @@ class MailHandlerTest extends UnitTestCase {
|
|||
|
||||
$string_translation = $this->getStringTranslationStub();
|
||||
$this->contactMailHandler = new MailHandler($this->mailManager, $this->languageManager, $this->logger, $string_translation, $this->entityManager);
|
||||
$language = new Language(array('id' => 'en'));
|
||||
$language = new Language(['id' => 'en']);
|
||||
|
||||
$this->languageManager->expects($this->any())
|
||||
->method('getDefaultLanguage')
|
||||
|
@ -94,9 +95,6 @@ class MailHandlerTest extends UnitTestCase {
|
|||
/**
|
||||
* Tests the children() method with an invalid key.
|
||||
*
|
||||
* @expectedException \Drupal\contact\MailHandlerException
|
||||
* @expectedExceptionMessage Unable to determine message recipient
|
||||
*
|
||||
* @covers ::sendMailMessages
|
||||
*/
|
||||
public function testInvalidRecipient() {
|
||||
|
@ -121,6 +119,7 @@ class MailHandlerTest extends UnitTestCase {
|
|||
$sender->expects($this->once())
|
||||
->method('isAnonymous')
|
||||
->willReturn(FALSE);
|
||||
$this->setExpectedException(MailHandlerException::class, 'Unable to determine message recipient');
|
||||
$this->contactMailHandler->sendMailMessages($message, $sender);
|
||||
}
|
||||
|
||||
|
@ -156,76 +155,76 @@ class MailHandlerTest extends UnitTestCase {
|
|||
* Data provider for ::testSendMailMessages.
|
||||
*/
|
||||
public function getSendMailMessages() {
|
||||
$data = array();
|
||||
$recipients = array('admin@drupal.org', 'user@drupal.org');
|
||||
$default_result = array(
|
||||
$data = [];
|
||||
$recipients = ['admin@drupal.org', 'user@drupal.org'];
|
||||
$default_result = [
|
||||
'module' => 'contact',
|
||||
'key' => '',
|
||||
'to' => implode(', ', $recipients),
|
||||
'langcode' => 'en',
|
||||
'params' => array(),
|
||||
'params' => [],
|
||||
'from' => 'anonymous@drupal.org',
|
||||
);
|
||||
$results = array();
|
||||
];
|
||||
$results = [];
|
||||
$message = $this->getAnonymousMockMessage($recipients, '');
|
||||
$sender = $this->getMockSender();
|
||||
$result = array(
|
||||
$result = [
|
||||
'key' => 'page_mail',
|
||||
'params' => array(
|
||||
'params' => [
|
||||
'contact_message' => $message,
|
||||
'sender' => $sender,
|
||||
'contact_form' => $message->getContactForm(),
|
||||
),
|
||||
);
|
||||
],
|
||||
];
|
||||
$results[] = $result + $default_result;
|
||||
$data[] = array($message, $sender, $results);
|
||||
$data[] = [$message, $sender, $results];
|
||||
|
||||
$results = array();
|
||||
$results = [];
|
||||
$message = $this->getAnonymousMockMessage($recipients, 'reply');
|
||||
$sender = $this->getMockSender();
|
||||
$result = array(
|
||||
$result = [
|
||||
'key' => 'page_mail',
|
||||
'params' => array(
|
||||
'params' => [
|
||||
'contact_message' => $message,
|
||||
'sender' => $sender,
|
||||
'contact_form' => $message->getContactForm(),
|
||||
),
|
||||
);
|
||||
],
|
||||
];
|
||||
$results[] = $result + $default_result;
|
||||
$result['key'] = 'page_autoreply';
|
||||
$result['to'] = 'anonymous@drupal.org';
|
||||
$result['from'] = NULL;
|
||||
$results[] = $result + $default_result;
|
||||
$data[] = array($message, $sender, $results);
|
||||
$data[] = [$message, $sender, $results];
|
||||
|
||||
$results = array();
|
||||
$results = [];
|
||||
$message = $this->getAnonymousMockMessage($recipients, '', TRUE);
|
||||
$sender = $this->getMockSender();
|
||||
$result = array(
|
||||
$result = [
|
||||
'key' => 'page_mail',
|
||||
'params' => array(
|
||||
'params' => [
|
||||
'contact_message' => $message,
|
||||
'sender' => $sender,
|
||||
'contact_form' => $message->getContactForm(),
|
||||
),
|
||||
);
|
||||
],
|
||||
];
|
||||
$results[] = $result + $default_result;
|
||||
$result['key'] = 'page_copy';
|
||||
$result['to'] = 'anonymous@drupal.org';
|
||||
$results[] = $result + $default_result;
|
||||
$data[] = array($message, $sender, $results);
|
||||
$data[] = [$message, $sender, $results];
|
||||
|
||||
$results = array();
|
||||
$results = [];
|
||||
$message = $this->getAnonymousMockMessage($recipients, 'reply', TRUE);
|
||||
$sender = $this->getMockSender();
|
||||
$result = array(
|
||||
$result = [
|
||||
'key' => 'page_mail',
|
||||
'params' => array(
|
||||
'params' => [
|
||||
'contact_message' => $message,
|
||||
'sender' => $sender,
|
||||
'contact_form' => $message->getContactForm(),
|
||||
),
|
||||
);
|
||||
],
|
||||
];
|
||||
$results[] = $result + $default_result;
|
||||
$result['key'] = 'page_copy';
|
||||
$result['to'] = 'anonymous@drupal.org';
|
||||
|
@ -233,48 +232,48 @@ class MailHandlerTest extends UnitTestCase {
|
|||
$result['key'] = 'page_autoreply';
|
||||
$result['from'] = NULL;
|
||||
$results[] = $result + $default_result;
|
||||
$data[] = array($message, $sender, $results);
|
||||
$data[] = [$message, $sender, $results];
|
||||
|
||||
//For authenticated user.
|
||||
$results = array();
|
||||
$results = [];
|
||||
$message = $this->getAuthenticatedMockMessage();
|
||||
$sender = $this->getMockSender(FALSE, 'user@drupal.org');
|
||||
$result = array(
|
||||
$result = [
|
||||
'module' => 'contact',
|
||||
'key' => 'user_mail',
|
||||
'to' => 'user2@drupal.org',
|
||||
'langcode' => 'en',
|
||||
'params' => array(
|
||||
'params' => [
|
||||
'contact_message' => $message,
|
||||
'sender' => $sender,
|
||||
'recipient' => $message->getPersonalRecipient(),
|
||||
),
|
||||
],
|
||||
'from' => 'user@drupal.org',
|
||||
);
|
||||
];
|
||||
$results[] = $result;
|
||||
$data[] = array($message, $sender, $results);
|
||||
$data[] = [$message, $sender, $results];
|
||||
|
||||
$results = array();
|
||||
$results = [];
|
||||
$message = $this->getAuthenticatedMockMessage(TRUE);
|
||||
$sender = $this->getMockSender(FALSE, 'user@drupal.org');
|
||||
$result = array(
|
||||
$result = [
|
||||
'module' => 'contact',
|
||||
'key' => 'user_mail',
|
||||
'to' => 'user2@drupal.org',
|
||||
'langcode' => 'en',
|
||||
'params' => array(
|
||||
'params' => [
|
||||
'contact_message' => $message,
|
||||
'sender' => $sender,
|
||||
'recipient' => $message->getPersonalRecipient(),
|
||||
),
|
||||
],
|
||||
'from' => 'user@drupal.org',
|
||||
);
|
||||
];
|
||||
$results[] = $result;
|
||||
|
||||
$result['key'] = 'user_copy';
|
||||
$result['to'] = $result['from'];
|
||||
$results[] = $result;
|
||||
$data[] = array($message, $sender, $results);
|
||||
$data[] = [$message, $sender, $results];
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
|
Reference in a new issue