public function SocialBulkGroupInvitation::buildForm in Open Social 8.9
Same name and namespace in other branches
- 10.3.x modules/social_features/social_group/modules/social_group_invite/src/Form/SocialBulkGroupInvitation.php \Drupal\social_group_invite\Form\SocialBulkGroupInvitation::buildForm()
- 10.0.x modules/social_features/social_group/modules/social_group_invite/src/Form/SocialBulkGroupInvitation.php \Drupal\social_group_invite\Form\SocialBulkGroupInvitation::buildForm()
- 10.1.x modules/social_features/social_group/modules/social_group_invite/src/Form/SocialBulkGroupInvitation.php \Drupal\social_group_invite\Form\SocialBulkGroupInvitation::buildForm()
- 10.2.x modules/social_features/social_group/modules/social_group_invite/src/Form/SocialBulkGroupInvitation.php \Drupal\social_group_invite\Form\SocialBulkGroupInvitation::buildForm()
File
- modules/
social_features/ social_group/ modules/ social_group_invite/ src/ Form/ SocialBulkGroupInvitation.php, line 165
Class
- SocialBulkGroupInvitation
- Class SocialBulkGroupInvitation.
Namespace
Drupal\social_group_invite\FormCode
public function buildForm(array $form, FormStateInterface $form_state) {
$form = parent::buildForm($form, $form_state);
$form['#attributes']['class'][] = 'form--default';
$group = $this->routeMatch
->getParameter('group');
$params = [
'user' => $this
->currentUser(),
'group' => $this->routeMatch
->getParameter('group'),
];
// Replace recipients field by select2.
unset($form['email_address']);
$form['users_fieldset'] = [
'#type' => 'fieldset',
'#tree' => TRUE,
'#collapsible' => FALSE,
'#collapsed' => FALSE,
'#attributes' => [
'class' => [
'form-horizontal',
],
],
];
$form['users_fieldset']['user'] = [
'#title' => $this
->t('Find people by name or email address'),
'#type' => 'select2',
'#description' => $this
->t('You can enter or paste multiple entries separated by comma or semicolon'),
'#multiple' => TRUE,
'#tags' => TRUE,
'#autocomplete' => TRUE,
'#selection_handler' => 'social',
'#target_type' => 'user',
'#select2' => [
'tags' => TRUE,
'placeholder' => t('Jane Doe, johndoe@example.com'),
'tokenSeparators' => [
',',
';',
],
'autocomplete' => FALSE,
],
'#required' => TRUE,
'#validated' => TRUE,
];
// Load plugin configuration.
$group_plugin_collection = $this->pluginManager
->getInstalled($group
->getGroupType());
$group_invite_config = $group_plugin_collection
->getConfiguration()['group_invitation'];
// Get invite settings.
$invite_settings = $this->configFactory
->get('social_group.settings')
->get('group_invite');
// Set preview subject and message.
$invitation_subject = $invite_settings['invite_subject'] ?? $group_invite_config['invitation_subject'];
$invitation_body = $invite_settings['invite_message'] ?? $group_invite_config['invitation_body'];
// Cleanup message body and replace any links on preview page.
$invitation_body = $this->token
->replace($invitation_body, $params);
$invitation_body = preg_replace('/href="([^"]*)"/', 'href="#"', $invitation_body);
// Get default logo image and replace if it overridden with email settings.
$theme_id = $this->configFactory
->get('system.theme')
->get('default');
$logo = $this
->getRequest()
->getBaseUrl() . theme_get_setting('logo.url', $theme_id);
$email_logo = theme_get_setting('email_logo', $theme_id);
if (is_array($email_logo) && !empty($email_logo)) {
$file = File::load(reset($email_logo));
if ($file instanceof File) {
$logo = file_create_url($file
->getFileUri());
}
}
// Load event invite configuration.
$invite_config = $this->configFactory
->get('social_group_invite.settings');
$form['email_preview'] = [
'#type' => 'fieldset',
'#title' => [
'text' => [
'#markup' => t('Preview your email invite'),
],
'icon' => [
'#markup' => '<svg class="icon icon-expand_more"><use xlink:href="#icon-expand_more" /></svg>',
'#allowed_tags' => [
'svg',
'use',
],
],
],
'#tree' => TRUE,
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#attributes' => [
'class' => [
'form-horizontal',
'form-preview-email',
],
],
];
$form['email_preview']['preview'] = [
'#theme' => 'invite_email_preview',
'#logo' => $logo,
'#subject' => $this->token
->replace($invitation_subject, $params),
'#body' => $invitation_body,
'#helper' => $this->token
->replace($invite_config
->get('invite_helper'), $params),
];
$form['actions']['#type'] = 'actions';
unset($form['submit']);
$form['actions']['submit'] = [
'#type' => 'submit',
'#value' => $this
->t('Send your invite(s) by email'),
];
return $form;
}