You are here

function commerce_payment_form_rules_ui_edit_element_alter in Commerce Core 7

Implements hook_form_FORM_ID_alter().

Disable payment method settings form elements that are overridden.

File

modules/payment/commerce_payment.module, line 1297
Defines the payment system and checkout integration.

Code

function commerce_payment_form_rules_ui_edit_element_alter(&$form, &$form_state) {
  if (!isset($form['parameter']['payment_method'])) {
    return;
  }

  // Retrieve the Rule from the $form_state.
  $rule = reset($form_state['build_info']['args']);
  $payment_method =& $form['parameter']['payment_method']['settings']['payment_method'];
  $instance_id = commerce_payment_method_instance_id($payment_method['method_id']['#value'], $rule);
  $settings = variable_get($instance_id, array());
  if (!empty($settings) && is_array($settings)) {
    $display_override_message = FALSE;
    foreach (element_get_visible_children($payment_method['settings']) as $key) {
      if (isset($settings[$key]) && isset($payment_method['settings'][$key])) {
        $payment_method['settings'][$key]['#disabled'] = TRUE;
        $payment_method['settings'][$key]['#required'] = FALSE;
        $display_override_message = TRUE;
      }
    }

    // Display a warning message to warn the user about the settings
    // that are overridden.
    if ($display_override_message) {
      drupal_set_message(t('Disabled fields below have been configured in code and cannot be changed here.'), 'warning');
    }
  }
}