You are here

function uc_addresses_form_user_register_form_alter in Ubercart Addresses 7

Implements hook_form_FORM_ID_alter() for form user_register_form().

Adds an address form to the user register form if set.

Return value

void|array Void if no address is required upon registering. The complete form array otherwise.

See also

uc_addresses_form_user_register_form_alter()

uc_addresses_user_insert()

File

./uc_addresses.module, line 1509
Adds user profile address support to Ubercart.

Code

function uc_addresses_form_user_register_form_alter(&$form, &$form_state) {

  // Check if we need to ask for an address upon registering.
  if (user_access('administer users')) {

    // User is admin.
    $require_address = variable_get('uc_addresses_require_address_admin', TRUE);
  }
  else {
    $require_address = variable_get('uc_addresses_require_address', TRUE);
  }
  if ($require_address) {
    if (isset($form_state['storage']['uc_addresses_address']) && $form_state['storage']['uc_addresses_address'] instanceof UcAddressesAddress) {
      $address = $form_state['storage']['uc_addresses_address'];
    }
    else {
      $address = UcAddressesAddressBook::newAddress();
    }
    $form['uc_addresses'] = array(
      '#type' => 'fieldset',
      '#title' => t('Address'),
    );
    $form['uc_addresses']['address'] = array(
      '#type' => 'uc_addresses_address',
      '#uc_addresses_address' => $address,
      '#uc_addresses_context' => 'register',
    );

    // Execute uc_addresses_form_user_register_form_submit() before the account gets saved.
    array_unshift($form['#submit'], 'uc_addresses_form_user_register_form_submit');

    // Store address, so it can be picked up when the form is rebuild
    // (this happens when an other country is chosen and the zone field is updated).
    $form_state['storage']['uc_addresses_address'] = $address;
    return $form;
  }
}