You are here

function commerce_registration_form_alter in Commerce Registration 7

Same name and namespace in other branches
  1. 7.2 commerce_registration.module \commerce_registration_form_alter()

Implements hook_form_alter().

Changes the product title in the add to cart form to have the remaining capacity if available.

File

./commerce_registration.module, line 278
Commerce Registration module code.

Code

function commerce_registration_form_alter(&$form, &$form_state, $form_id) {

  // Add waitlist/slots available text to Add to Cart form.
  if (substr($form_id, 0, 30) == 'commerce_cart_add_to_cart_form') {
    switch ($form['product_id']['#type']) {
      case "select":
        $products = $form['product_id']['#options'];
        foreach ($products as $product_id => $title) {
          $product = commerce_product_load($product_id);
          $title = commerce_registration_get_product_title($product);
          $form['product_id']['#options'][$product_id] = $title;
        }
        break;
      case "hidden":
        $product = commerce_product_load($form['product_id']['#value']);
        $entity = array(
          'id' => $product->product_id,
          'type' => 'commerce_product',
          'bundle' => $product->type,
        );
        if (registration_entity_registration_status($entity) == 1) {
          $submit = $form['submit'];
          unset($form['submit']);
          if (registration_entity_has_capacity_limit($entity)) {
            $capacity = registration_entity_slots_available($entity);
            $settings = registration_entity_settings($entity);
            $wl = 0 == $settings['settings']['waitlist'] ? "" : "(waitlist only)";
            $capacity = $capacity != 0 ? format_plural($capacity, '1 slot available', '@count slots available') : t('No slots available @wl', array(
              '@wl' => $wl,
            ));
            $form['capacity'] = array(
              '#type' => 'markup',
              '#markup' => '<em>' . $capacity . '</em>',
            );
          }
          if (registration_can_register($entity)) {
            $form['submit'] = $submit;
          }
          else {
            $form['not_available'] = array(
              '#type' => 'markup',
              '#markup' => t('<p><strong>This item is currently unavailable.</strong></p>'),
            );
          }
        }
        break;
    }
  }

  // Add administrative Registration settings to Product Add/Edit form.
  if (substr($form_id, 0, 32) == 'commerce_product_ui_product_form') {
    if (!function_exists('registration_bundle_options')) {
      module_load_include('inc', 'registration', 'includes/registration.admin');
    }
    $product_info = array(
      'id' => 0,
      'type' => 'commerce_product',
      'bundle' => 'product',
    );
    if (isset($form_state['build_info']['args'][0])) {
      $product = $form_state['build_info']['args'][0];
      $product_info['id'] = $product->product_id;
      $product_info['bundle'] = $product->type;
    }
    $form['registration_settings'] = array(
      '#type' => 'fieldset',
      '#title' => t('Registration Settings'),
      '#collapsible' => TRUE,
      '#collapsed' => !registration_entity_registration_status($product_info),
    );
    $settings = registration_entity_settings($product_info);
    $form['registration_settings'] += registration_default_settings_base_form(array(
      'registration_settings',
    ), $settings);
    $open = $form['registration_settings']['settings']['open_date']['#default_value'];
    $close = $form['registration_settings']['settings']['close_date']['#default_value'];
    $form['registration_settings']['settings']['open_date']['#default_value'] = date('c', (int) $open);
    $form['registration_settings']['settings']['close_date']['#default_value'] = date('c', (int) $close);
    $form['registration_settings']['settings']['status']['#weight'] = -2;
    $form['registration_settings']['settings']['bundle'] = array(
      '#type' => 'select',
      '#options' => registration_bundle_options(),
      '#title' => t('Registration Bundle'),
      '#parents' => array(
        'registration_settings',
        'settings',
        'bundle',
      ),
      '#weight' => -1,
      '#default_value' => registration_entity_registration_bundle($product_info),
    );
    unset($form['registration_settings']['actions']);
    $form['actions']['submit']['#submit'][] = 'commerce_registration_product_ui_form_submit';
  }
}