public function CampaignMonitorUserSubscriptionForm::buildForm in Campaign Monitor 8
Form constructor.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array The form structure.
Overrides FormInterface::buildForm
File
- modules/
campaignmonitor_user/ src/ Form/ CampaignMonitorUserSubscriptionForm.php, line 48
Class
- CampaignMonitorUserSubscriptionForm
- Subscribe to a campaignmonitor list.
Namespace
Drupal\campaignmonitor_user\FormCode
public function buildForm(array $form, FormStateInterface $form_state, $user = NULL) {
// Get the e-mail address from the user object.
// This is not working - url is always user 1.
$account = User::load($user);
$current_user = \Drupal::currentUser();
$account = User::load($current_user
->id());
$email = $account
->get('mail')
->getValue()[0]['value'];
$config = \Drupal::config('campaignmonitor_user.settings');
$form = [];
$form['email'] = [
'#type' => 'hidden',
'#value' => $email,
];
$form['name'] = [
'#type' => 'hidden',
'#value' => $account
->get('name')
->getValue()[0]['value'],
];
$lists = campaignmonitor_get_lists();
// Build options for the form selector.
$options = [];
$option_descriptions = [];
$default = [];
foreach ($lists as $list_id => $list) {
// Check if the list is selected to be shown.
$list_options = campaignmonitor_get_list_settings($list_id);
if (campaignmonitor_is_list_enabled($list_id)) {
$options[$list_id] = $list['name'];
$defaults = campaignmonitor_get_list_settings($list_id);
$option_descriptions[$list_id] = $defaults['display']['description'];
// Check if the user is subscribed to the current list.
$default[$list_id] = 0;
if (campaignmonitor_is_subscribed($list_id, $email)) {
$default[$list_id] = $list_id;
}
}
}
if (!empty($options)) {
$form['subscription_text'] = [
'#type' => 'container',
'#attributes' => [
'class' => [
'subscription-text',
],
],
];
$form['subscription_text']['text'] = [
'#markup' => $config
->get('subscription_text'),
];
$form['lists'] = [
'#type' => 'checkboxes',
'#title' => $config
->get('list_heading'),
// '#description' => !empty($config['instructions']) ? t($config['instructions']) : t('Select the news lists
// that you want to subscribe to.'),.
'#options' => $options,
'#default_value' => $default,
'#option_descriptions' => $option_descriptions,
'#after_build' => [
'\\Drupal\\campaignmonitor_user\\Form\\CampaignMonitorUserSubscriptionForm::_option_descriptions',
],
];
$form['actions']['submit'] = [
'#type' => 'submit',
'#value' => t('Update subscriptions'),
'#attached' => [
'library' => [
'campaignmonitor_user/campaignmonitor_user.subscriptions',
],
],
];
}
else {
drupal_set_message('There are no available lists to subscribe to at the moment.', 'warning');
}
return $form;
}