function social_event_max_enroll_form_alter in Open Social 10.3.x
Same name and namespace in other branches
- 8.9 modules/social_features/social_event/modules/social_event_max_enroll/social_event_max_enroll.module \social_event_max_enroll_form_alter()
- 8.5 modules/social_features/social_event/modules/social_event_max_enroll/social_event_max_enroll.module \social_event_max_enroll_form_alter()
- 8.6 modules/social_features/social_event/modules/social_event_max_enroll/social_event_max_enroll.module \social_event_max_enroll_form_alter()
- 8.7 modules/social_features/social_event/modules/social_event_max_enroll/social_event_max_enroll.module \social_event_max_enroll_form_alter()
- 8.8 modules/social_features/social_event/modules/social_event_max_enroll/social_event_max_enroll.module \social_event_max_enroll_form_alter()
- 10.0.x modules/social_features/social_event/modules/social_event_max_enroll/social_event_max_enroll.module \social_event_max_enroll_form_alter()
- 10.1.x modules/social_features/social_event/modules/social_event_max_enroll/social_event_max_enroll.module \social_event_max_enroll_form_alter()
- 10.2.x modules/social_features/social_event/modules/social_event_max_enroll/social_event_max_enroll.module \social_event_max_enroll_form_alter()
Implements hook_form_alter().
Check and display "Allow anonymous enrollments" checkbox for public events.
File
- modules/
social_features/ social_event/ modules/ social_event_max_enroll/ social_event_max_enroll.module, line 40 - The Social Event Max Enroll module.
Code
function social_event_max_enroll_form_alter(&$form, FormStateInterface $form_state, $form_id) {
switch ($form_id) {
// Alter the Node Event forms.
case 'node_event_form':
case 'node_event_edit_form':
if (!empty($form['field_event_max_enroll'])) {
$config = \Drupal::config('social_event_max_enroll.settings');
$form['field_event_max_enroll']['#access'] = $config
->get('max_enroll');
$form['field_event_max_enroll_num']['#access'] = $config
->get('max_enroll');
// Hide checkbox if event enrollment is disabled for event.
$form['field_event_max_enroll_num']['#states'] = [
'visible' => [
':input[name="field_event_max_enroll[value]"]' => [
'checked' => TRUE,
],
':input[name="field_enroll_method"]' => [
'!value' => '3',
],
],
];
// Show the checkbox only when max enroll is enabled.
if ($config
->get('max_enroll_required')) {
$form['field_event_max_enroll']['widget']['value']['#default_value'] = TRUE;
$form['field_event_max_enroll']['widget']['value']['#disabled'] = TRUE;
$form['field_event_max_enroll']['widget']['value']['#required'] = TRUE;
$form['field_event_max_enroll_num']['widget'][0]['value']['#required'] = TRUE;
}
else {
$form['field_event_max_enroll_num']['#states'] = [
'visible' => [
':input[name="field_event_max_enroll[value]"]' => [
'checked' => TRUE,
],
':input[name="field_enroll_method"]' => [
'!value' => '3',
],
],
];
}
// Add an details element to status.
// Also hide checkbox if feature is disabled globally.
$form['field_event_max_enroll_wrapper'] = [
'#type' => 'details',
'#title' => t('Enrollment limit'),
'#description' => '',
'#weight' => 150,
'#group' => 'group_enrollment_methods',
'#open' => TRUE,
'#tree' => TRUE,
'#states' => [
'visible' => [
':input[name="field_event_enroll[value]"]' => [
'checked' => TRUE,
],
],
'invisible' => [
':input[name="field_enroll_method"]' => [
'value' => '3',
],
],
],
];
$form['field_event_max_enroll_wrapper']['field_event_max_enroll'] = $form['field_event_max_enroll'];
$form['field_event_max_enroll_wrapper']['field_event_max_enroll_num'] = $form['field_event_max_enroll_num'];
unset($form['field_event_max_enroll'], $form['field_event_max_enroll_num']);
}
break;
// Alter the Event Enrollments forms.
case 'enroll_action_form':
case 'event_an_enroll_action_form':
case 'event_invite_enroll_action_form':
// We can't use dependency injection, because service is optional.
$event_max_enroll_service = \Drupal::service('social_event_max_enroll.service');
$node = \Drupal::routeMatch()
->getParameter('node');
if ($node instanceof NodeInterface && $event_max_enroll_service
->isEnabled($node)) {
// Count how many spots are left.
$left = $event_max_enroll_service
->getEnrollmentsLeft($node);
if ($left < 1) {
$enrollments = FALSE;
// Only load enrollments for authenticated users.
if (\Drupal::currentUser()
->isAuthenticated()) {
$enrollments = \Drupal::entityTypeManager()
->getStorage('event_enrollment')
->loadByProperties([
'field_event' => $node
->id(),
'field_account' => \Drupal::currentUser()
->id(),
'field_enrollment_status' => 1,
]);
}
$an_enrollments = FALSE;
// If Social Event AN Enroll module is enabled, check if the current
// visitor is enrolled to the event.
if (\Drupal::service('module_handler')
->moduleExists('social_event_an_enroll') && \Drupal::service('social_event_an_enroll.service')
->isEnrolled()) {
$an_enrollments = TRUE;
}
// If this user or visitor is not enrolled to the event, show that
// there are no more spots left, exception for the owner or organizer.
if (!$enrollments && !$an_enrollments && social_event_manager_or_organizer() === FALSE) {
if ($form_id === 'enroll_action_form' || $form_id === 'event_invite_enroll_action_form') {
$form['enroll_for_this_event']['#type'] = 'submit';
$form['enroll_for_this_event']['#value'] = t('No spots left');
$form['enroll_for_this_event']['#disabled'] = TRUE;
}
elseif ($form_id === 'event_an_enroll_action_form' && !isset($form['enroll_for_this_event'])) {
$form['event_enrollment'] = [
'#type' => 'submit',
'#value' => t('No spots left'),
'#disabled' => TRUE,
'#attributes' => [
'class' => [
'btn',
'btn-accent',
'btn-lg',
'btn-raised',
'brand-bg-accent',
'waves-effect',
],
],
];
}
}
}
}
break;
}
}