You are here

function password_policy_admin_form_submit in Password Policy 6

Same name and namespace in other branches
  1. 7 password_policy.admin.inc \password_policy_admin_form_submit()

Form submission hook for new or edited password policies.

File

./password_policy.admin.inc, line 316
Admin page callback file for the password_policy module.

Code

function password_policy_admin_form_submit($form, &$form_state) {
  $op = $form_state['values']['op'];
  if ($op == t('Delete')) {
    drupal_goto('admin/settings/password_policy/delete/' . $form_state['values']['pid']);
  }
  $policy = array();
  foreach ($form_state['values'] as $key => $value) {

    // If we have no form value, then we have no constraint to set.
    if (!is_array($value)) {

      //dodge issues with roles array
      $value = trim($value);
      if ($value != "" && preg_match("/^constraint_/", $key)) {
        $policy[substr($key, 11)] = $value;
      }
    }
  }

  // If we have a pid, update, else save.
  if (isset($form_state['values']['pid'])) {
    db_query("UPDATE {password_policy} SET name = '%s', description = '%s', policy = '%s', expiration = %d, warning = '%s' WHERE pid = %d", $form_state['values']['name'], $form_state['values']['description'], serialize($policy), trim($form_state['values']['expiration']), str_replace(' ', '', $form_state['values']['warning']), $form_state['values']['pid']);
    drupal_set_message(t('Policy %name has been updated.', array(
      '%name' => $form_state['values']['name'],
    )));
    watchdog('password_policy', 'Policy %name updated.', array(
      '%name' => $form_state['values']['name'],
    ), WATCHDOG_NOTICE, l(t('edit'), 'admin/settings/password_policy/' . $form_state['values']['pid'] . '/edit'));
    $pid = $form_state['values']['pid'];
    db_query("DELETE FROM {password_policy_role} WHERE pid = %d", $pid);
  }
  else {
    db_query("INSERT INTO {password_policy} (name, description, enabled, policy, expiration, warning) VALUES ('%s', '%s', %d, '%s', %d, '%s')", $form_state['values']['name'], $form_state['values']['description'], 0, serialize($policy), trim($form_state['values']['expiration']), str_replace(' ', '', $form_state['values']['warning']));
    $pid = db_last_insert_id('password_policy', 'pid');
    drupal_set_message(t('Policy %name has been created.', array(
      '%name' => $form_state['values']['name'],
    )));
    watchdog('password_policy', 'New policy %name created.', array(
      '%name' => $form_state['values']['name'],
    ), WATCHDOG_NOTICE, l(t('edit'), 'admin/settings/password_policy/' . $pid . '/edit'));
  }
  foreach (array_filter($form_state['values']['roles']) as $rid => $enabled) {
    db_query("INSERT INTO {password_policy_role} (pid, rid) VALUES (%d, %d)", $pid, $rid);
  }
  drupal_goto('admin/settings/password_policy/list');
}