You are here

function field_encrypt_form_field_ui_field_edit_form_alter in Field Encryption 7

Implements hook_form_FORM_ID_alter().

File

./field_encrypt.module, line 59
Core functions for the Field Encryption module.

Code

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

  // Obtain the field name from form (should really be $form_state,
  // but the Date field doesn't comply).
  $field_name = $form['#field']['field_name'];

  // Try to obtain information about this field.
  $field_info = field_info_field($field_name);
  $field_type_info = field_info_field_types($field_info['type']);

  // Check that there are encryptable columns on this field as Indexes can not
  // be encrypted.
  if (array_keys($field_info['columns']) == array_keys($field_info['indexes'])) {
    return;
  }
  $fld_settings =& $field_info['settings'];
  $form_state['field_encrypt'] = array(
    'field_name' => $field_name,
    'field_info' => $field_info,
    'field_type_info' => $field_type_info,
    'encrypt' => isset($fld_settings['field_encrypt']) ? $fld_settings['field_encrypt']['encrypt'] : FALSE,
  );
  $settings =& $form['field']['settings'];
  $settings['field_encrypt'] = array(
    '#type' => 'fieldset',
    '#title' => t('Encrypt this field'),
    '#description' => t('Set up the parameters for encrypting this field.'),
    '#tree' => TRUE,
    'encrypt' => array(
      '#type' => 'checkbox',
      '#title' => t('Encrypt this field'),
      '#default_value' => $form_state['field_encrypt']['encrypt'],
      '#weight' => 0,
    ),
    '#weight' => -2,
  );

  // Hide the option from non-privileged users, but ensure the values carried
  // through.
  if (!user_access('administer text field encryption')) {
    $field_encrypt =& $settings['field_encrypt'];
    $field_encrypt['encrypt']['#type'] = 'value';
    $field_encrypt['encrypt']['#value'] = $field_encrypt['encrypt']['#default_value'];
  }
}