protected function MailchimpListsSelectWidget::setupInterestGroups in Mailchimp 2.x
Parameters
array $element:
FormStateInterface $form_state:
$instance:
$email:
$hide_subscribe_checkbox:
$at_least_one_interest_group:
$mailchimp_list_id:
Return value
array
1 call to MailchimpListsSelectWidget::setupInterestGroups()
- MailchimpListsSelectWidget::formElement in modules/
mailchimp_lists/ src/ Plugin/ Field/ FieldWidget/ MailchimpListsSelectWidget.php - Returns the form for a single field widget.
File
- modules/
mailchimp_lists/ src/ Plugin/ Field/ FieldWidget/ MailchimpListsSelectWidget.php, line 134
Class
- MailchimpListsSelectWidget
- Plugin implementation of the 'mailchimp_lists_select' widget.
Namespace
Drupal\mailchimp_lists\Plugin\Field\FieldWidgetCode
protected function setupInterestGroups(array $element, FormStateInterface $form_state, $instance, $email, $hide_subscribe_checkbox, $at_least_one_interest_group, $mailchimp_list_id) {
$interest_groups_label = $instance
->getFieldDefinition()
->getSetting('interest_groups_label');
$instance_name = $instance
->getFieldDefinition()
->getName();
$instance_list_id = $instance
->getFieldDefinition()
->getSetting('mc_list_id');
$mc_instance_list = mailchimp_get_list($instance_list_id);
// TRUE if interest groups are enabled for this list.
$show_interest_groups = $this->fieldDefinition
->getSetting('show_interest_groups');
// TRUE if widget is being used to set default values via admin form.
$is_default_value_widget = $this
->isDefaultValueWidget($form_state);
// TRUE if interest groups are enabled but hidden from the user.
$interest_groups_hidden = $this->fieldDefinition
->getSetting('interest_groups_hidden');
$interest_group_element_type = 'fieldset';
if (!$is_default_value_widget && $show_interest_groups && $hide_subscribe_checkbox && $at_least_one_interest_group && !$this
->memberIsUnsubscribed($mailchimp_list_id, $email)) {
$interest_group_element_type = 'container';
}
if ($show_interest_groups || $is_default_value_widget) {
if ($interest_groups_hidden && !$is_default_value_widget) {
$element['interest_groups'] = [];
}
else {
$element['interest_groups'] = [
'#type' => $interest_group_element_type,
'#title' => Html::escape($interest_groups_label),
'#weight' => 100,
];
$element['interest_groups']['#states'] = [
'invisible' => [
':input[name="' . $instance_name . '[0][value][subscribe]"]' => [
'checked' => FALSE,
],
],
];
}
if ($is_default_value_widget) {
$element['interest_groups']['#states']['invisible'] = [
':input[name="settings[show_interest_groups]"]' => [
'checked' => FALSE,
],
];
}
$groups_default = $this
->getInterestGroupsDefaults($instance);
if (!empty($mc_instance_list->intgroups)) {
$mode = $is_default_value_widget ? 'admin' : ($interest_groups_hidden ? 'hidden' : 'default');
$element['interest_groups'] += mailchimp_interest_groups_form_elements($mc_instance_list, $groups_default, $email, $mode);
}
}
return $element;
}