function registration_form in Entity Registration 7.2
Same name and namespace in other branches
- 8.2 includes/registration.forms.inc \registration_form()
- 8 includes/registration.forms.inc \registration_form()
- 7 includes/registration.forms.inc \registration_form()
Form callback: create or edit a registration.
Parameters
Registration $registration: The registration object to edit or for a create form an empty registration object with a node defined.
4 string references to 'registration_form'
- RegistrationTestCase::setUpEntity in tests/
registration.test - registration_field_formatter_view in includes/
registration.field.inc - Implements hook_field_formatter_view().
- registration_menu in ./
registration.module - Implements hook_menu().
- registration_register_page in ./
registration.module - Page callback: Add a new registration to a host entity.
File
- includes/
registration.forms.inc, line 15 - Form definitions and callbacks for Registration.
Code
function registration_form($form, &$form_state, Registration $registration, $new = TRUE) {
global $user;
$wrapper = entity_metadata_wrapper('registration', $registration);
$host = $wrapper->entity
->value();
$state = $wrapper->state
->value();
$type = $wrapper
->getBundle();
$registrant_mail = $wrapper->registrant_mail
->value();
$form_state['registration'] = $registration;
$form['#registration_is_new'] = $new;
$settings = registration_entity_settings($registration->entity_type, $registration->entity_id);
if (!registration_has_room($registration->entity_type, $registration->entity_id)) {
if ($settings['settings']['registration_waitlist_enable'] == 1 && $settings['settings']['registration_waitlist_message_enable'] == 1) {
drupal_set_message(t($settings['settings']['registration_waitlist_message']), 'warning');
}
}
// Options for who is registering.
$who_options = array();
if (!empty($user->mail) && user_access("create own {$type} registration")) {
$who_options[REGISTRATION_REGISTRANT_TYPE_SELF] = t('Myself');
}
if (user_access("create {$type} registration")) {
$who_options[REGISTRATION_REGISTRANT_TYPE_OTHER] = t('Other person');
}
// Default value for who is registering.
$who_default = NULL;
if (isset($registration->registration_id) && $registrant_mail) {
if (!empty($user->mail) && $user->mail === $registrant_mail) {
$who_default = REGISTRATION_REGISTRANT_TYPE_SELF;
}
else {
$who_default = REGISTRATION_REGISTRANT_TYPE_OTHER;
}
}
elseif (count($who_options) == 1) {
$keys = array_keys($who_options);
$who_default = reset($keys);
}
$form['who_is_registering'] = array(
'#type' => 'select',
'#title' => t('This registration is for:'),
'#options' => $who_options,
'#default_value' => $who_default,
'#required' => TRUE,
'#access' => count($who_options) > 1,
);
if (isset($who_options[REGISTRATION_REGISTRANT_TYPE_SELF])) {
// Show a message for registering yourself.
$form['registrant_self'] = array(
'#type' => 'container',
'#states' => array(
'visible' => array(
':input[name="who_is_registering"]' => array(
'value' => REGISTRATION_REGISTRANT_TYPE_SELF,
),
),
),
);
$form['registrant_self']['content'] = array(
'#markup' => '<div class="form-item registration-registrant-self">' . t('You are registering: %mail', array(
'%mail' => $user->mail,
)) . '</div>',
);
}
$form['registrant_mail'] = array(
'#type' => 'textfield',
'#title' => t('Email'),
'#description' => t('The email to associate with this registration.'),
'#default_value' => $registrant_mail,
'#size' => 40,
'#maxlength' => 255,
'#access' => isset($who_options[REGISTRATION_REGISTRANT_TYPE_OTHER]),
'#states' => array(
'visible' => array(
':input[name="who_is_registering"]' => array(
'value' => REGISTRATION_REGISTRANT_TYPE_OTHER,
),
),
'required' => array(
':input[name="who_is_registering"]' => array(
'value' => REGISTRATION_REGISTRANT_TYPE_OTHER,
),
),
),
);
// Add a container to hold registrant form fields.
$form['registrant_fields'] = array(
'#type' => 'container',
'#access' => !empty($settings['settings']['upsert_registrants']),
'#attributes' => array(
'class' => array(
'registrant-fields',
),
),
);
$capacity = $settings['capacity'];
$limit = isset($settings['settings']['maximum_spaces']) ? $settings['settings']['maximum_spaces'] : 1;
// Just in case it was unset:
$settings['settings']['maximum_spaces'] = $limit;
$remaining = $capacity - registration_event_count($registration->entity_type, $registration->entity_id);
if ($capacity && $limit) {
$description = t('The number of spaces you wish to reserve. @spaces_remaining spaces remaining. You may register up to @max spaces.', array(
'@spaces_remaining' => $remaining,
'@max' => min($limit, $remaining),
));
}
elseif ($capacity) {
$description = t('The number of spaces you wish to reserve. @spaces_remaining spaces remaining.', array(
'@spaces_remaining' => $remaining,
));
}
elseif ($limit) {
$description = t('The number of spaces you wish to reserve. You may register up to @max spaces.', array(
'@max' => $limit,
));
}
else {
$description = t('The number of spaces you wish to reserve.');
}
$form['count'] = array(
'#type' => 'textfield',
'#title' => t('Spaces'),
'#description' => $description,
'#default_value' => isset($registration->count) ? $registration->count : 1,
'#size' => drupal_strlen($remaining),
'#access' => isset($settings['settings']['maximum_spaces']) && $settings['settings']['maximum_spaces'] == 1 ? FALSE : TRUE,
'#element_validate' => array(
'element_validate_integer_positive',
'_registration_validate_space_request',
),
);
$default_state = registration_get_default_state($type);
$states = registration_get_states_options(array(
'show_on_form' => TRUE,
));
// Ensure default state is in options or it won't be set.
if (!isset($states[$default_state->name])) {
$states[$default_state->name] = t('@state', array(
'@state' => entity_label('registration_state', $default_state),
));
}
$form['state'] = array(
'#type' => 'select',
'#title' => t('State'),
'#description' => t('State of this registration'),
'#default_value' => $state ? $state
->identifier() : $default_state
->identifier(),
'#options' => $states,
'#access' => !empty($states) && user_access('edit ' . $registration->type . ' registration state'),
);
field_attach_form('registration', $registration, $form, $form_state);
$form['actions'] = array(
'#type' => 'actions',
);
$form['actions']['submit'] = array(
'#type' => 'submit',
'#value' => t('Save Registration'),
);
// Add a delete button for existing registration:
if (isset($registration->registration_id) && entity_access('delete', 'registration', $registration)) {
$form['actions']['delete'] = array(
'#type' => 'submit',
'#value' => t('Delete'),
'#submit' => array(
'registration_form_delete_submit',
),
"#limit_validation_errors" => array(),
);
}
if ($host && entity_access('view', $registration->entity_type, $host)) {
$uri = entity_uri($registration->entity_type, $host);
$form['actions']['cancel'] = array(
'#type' => 'link',
'#title' => t('Cancel'),
'#href' => $uri['path'],
);
}
$form['#registration_settings'] = $settings;
return $form;
}