You are here

function commerce_registration_node_registrations_settings_form in Commerce Registration 7.2

Registration settings form for product display nodes.

1 string reference to 'commerce_registration_node_registrations_settings_form'
commerce_registration_menu_alter in ./commerce_registration.module
Implements hook_menu_alter().

File

includes/commerce_registration.forms.inc, line 11
Commerce Registration modified validation and submit handlers for registration settings for commerce products.

Code

function commerce_registration_node_registrations_settings_form($form, &$form_state, $type, $entity) {

  // Loop through all products on the entity and add the settings form to a
  // fieldset.
  form_load_include($form_state, 'inc', 'registration', 'includes/registration.forms');
  $form = array();
  if ($type == 'node') {
    $fields = field_read_fields(array(
      'type' => 'registration',
    ));
    foreach ($fields as $field) {
      if (isset($entity->{$field['field_name']})) {
        $form['settings'] = array(
          '#type' => 'container',
          '#tree' => TRUE,
        );
        $settings = registration_entity_settings('node', $entity->nid);
        $fieldset = 'node-' . $entity->nid;
        $form['settings'][$fieldset] = array(
          '#type' => 'fieldset',
          '#title' => t('Registration Settings for !node', array(
            '!node' => '<em>Node: ' . $entity->title . '</em>',
          )),
          '#collapsible' => TRUE,
          '#collapsed' => TRUE,
        );
        $addform = registration_entity_settings_form($form, $form_state, $settings, 'node', $entity);
        unset($addform['save']);
        $addform['status']['#weight'] = -10;
        $addform['capacity']['#weight'] = -9;
        $addform['reminder']['reminder_settings']['#states']['visible'] = array(
          ':input[name="settings[' . $fieldset . '][reminder][send_reminder]"]' => array(
            'checked' => TRUE,
          ),
        );
        $form['settings'][$fieldset] += $addform;
        $form['settings'][$fieldset]['reminder']['#parents'] = array(
          'settings',
          $fieldset,
          'reminder',
        );
      }
    }
  }
  $fields = field_read_fields(array(
    'type' => 'commerce_product_reference',
  ));
  foreach ($fields as $field) {
    if (!empty($entity->{$field['field_name']})) {
      $settings = array();
      if (isset($form['settings'])) {
        $settings = $form['settings'];
      }
      $form['settings'] = $settings + array(
        '#type' => 'container',
        '#tree' => TRUE,
      );
      if ($field['translatable'] != 0) {
        $lang = entity_language($type, $entity);
      }
      if (!isset($lang)) {
        $lang = LANGUAGE_NONE;
      }
      foreach ($entity->{$field['field_name']}[$lang] as $product) {
        if (commerce_registration_product_has_registration_field($product['product_id'])) {
          $product = commerce_product_load($product['product_id']);
          $settings = registration_entity_settings('commerce_product', $product->product_id);
          $prod = 'commerce_product-' . check_plain($product->product_id);
          $form['settings'][$prod] = array(
            '#type' => 'fieldset',
            '#title' => t('Registration Settings for !product (@sku)', array(
              '!product' => '<em>Commerce Product: ' . $product->title . '</em>',
              '@sku' => $product->sku,
            )),
            '#collapsible' => TRUE,
            '#collapsed' => TRUE,
            '#entity' => $product,
            '#entity_type' => 'commerce_product',
          );
          if (!function_exists('registration_entity_settings_form')) {
            module_load_include('inc', 'registration', 'includes/registration.forms');
          }
          $addform = registration_entity_settings_form($form, $form_state, $settings, 'commerce_product', $product);
          unset($addform['save']);
          $addform['status']['#weight'] = -10;
          $addform['capacity']['#weight'] = -9;
          $addform['reminder']['reminder_settings']['#states']['visible'] = array(
            ':input[name="settings[' . $prod . '][reminder][send_reminder]"]' => array(
              'checked' => TRUE,
            ),
          );
          $form['settings'][$prod] += $addform;
          $form['settings'][$prod]['reminder']['#parents'] = array(
            'settings',
            $prod,
            'reminder',
          );
        }
      }
    }
  }
  if (empty($form)) {
    list($entity_id) = entity_extract_ids($type, $entity);
    $settings = registration_entity_settings($type, $entity_id);
    $form = registration_entity_settings_form($form, $form_state, $settings, $type, $entity);
    $form['#submit'] = array(
      'registration_entity_settings_form_submit',
    );
    $form['#validate'] = array(
      'registration_entity_settings_form_validate',
    );
  }
  else {
    $form['submit'] = array(
      '#type' => 'submit',
      '#value' => t('Save Settings'),
      '#validate' => array(
        'commerce_registration_node_registrations_settings_form_validate',
      ),
      '#submit' => array(
        'commerce_registration_node_registrations_settings_form_submit',
      ),
    );
  }
  return $form;
}