You are here

function password_policy_form_policy_form_submit in Password Policy 5

Form submission hook for new or edited password policies.

File

./password_policy.module, line 471

Code

function password_policy_form_policy_form_submit($form_id, $form_values) {

  // create the policy
  _password_policy_load_constraint_definitions();

  // Here we build/re-build a new password policy using an
  // And_Constraint object instance.  We add a constraint for
  // each type where the user entered a number for the minimum value.
  $policy = new And_Constraint();
  $policy
    ->setName($form_values['name']);
  $policy
    ->setDescription($form_values['description']);
  $policy
    ->setExpiration(trim($form_values['expiration']));
  $policy
    ->setWarning(str_replace(' ', '', $form_values['warning']));
  foreach ($form_values as $key => $value) {

    // if we have no form value, then we have no constraint to set.
    $value = trim($value);
    if ($value != '' && preg_match("/^.*constraint\$/i", $key)) {
      $class_name = $key;
      if (class_exists($class_name)) {
        $constraint = new $class_name($value);
        $constraint->minimumConstraintValue = $value;
        $policy
          ->addConstraint($constraint);
      }
    }
  }

  // if we have an id, update, else save.
  if ($form_values['pid']) {
    password_policy_update_policy($form_values['pid'], $policy);
    drupal_set_message(t('Policy \'%name\' has been updated.', array(
      '%name' => $policy->name,
    )));
    watchdog('password_policy', t('Policy \'%name\' updated.', array(
      '%name' => $policy->name,
    )), WATCHDOG_NOTICE, l(t('view'), 'admin/user/password_policy/' . $form_values['pid']));
  }
  else {
    password_policy_save_policy($policy);
    watchdog('password_policy', t('New policy \'%name\' added.', array(
      '%name' => $policy->name,
    )), WATCHDOG_NOTICE, l(t('view'), 'admin/user/password_policy'));
  }
  return "admin/user/password_policy";
}