You are here

function shib_auth_save_rule in Shibboleth Authentication 7.4

Same name and namespace in other branches
  1. 6.4 shib_auth_roles_forms.inc \shib_auth_save_rule()

Saves a new rule into database.

Parameters

array $form_state: The state of the form, which we have just received, including all of the variables.

int $update: Decides if it is a new rule (NULL), or we're just modifying one rule id.

2 calls to shib_auth_save_rule()
shib_auth_edit_rule_submit in ./shib_auth_roles_forms.inc
Submit rule edit form.
shib_auth_new_rule_submit in ./shib_auth_roles_forms.inc
Submit the new rule from.

File

./shib_auth_roles_forms.inc, line 298
Roles manager forms.

Code

function shib_auth_save_rule(array $form_state, $update) {
  $values = $form_state['values'];
  $new_id = $values['shib_auth_new_id'] == '0' ? NULL : (int) $values['shib_auth_new_id'];

  // Collect ther roles into an array.
  $roles = array();
  if (is_array($values['shib_auth_roles'])) {
    foreach ($values['shib_auth_roles'] as $role_id) {
      if (!empty($role_id)) {
        $roles[] = $role_id;
      }
    }
  }

  // Save the new element into an array.
  $new_element = array(
    'id' => $new_id,
    'field' => urlencode($values['shib_auth_new_attrib']),
    'regexpression' => urlencode($values['shib_auth_new_regexp']),
    'role' => serialize($roles),
    'sticky' => urlencode($values['shib_auth_new_sticky']),
  );

  // Write it in a record.
  $ret = drupal_write_record('shib_auth', $new_element, $update);

  // If it wasn't an error.
  if (empty($update)) {
    if ($ret === SAVED_NEW) {
      drupal_set_message(t('New rule has been stored.'));
    }
    else {
      drupal_set_message(t('Unexpected error has been detected.'));
    }
  }
  else {
    if ($ret === SAVED_UPDATED) {
      drupal_set_message(t('The rule has been modified.'));
    }
    else {
      drupal_set_message(t('Unexpected error has been detected.'));
    }
  }
  drupal_goto('admin/config/people/shib_auth/rules');
}