You are here

function _password_policy_load_active_policy in Password Policy 6

Same name and namespace in other branches
  1. 7 password_policy.module \_password_policy_load_active_policy()

Loads the first enabled policy that matches the specified roles.

Parameters

$roles: An array of role IDs.

Return value

A policy array, or NULL if no active policy exists.

4 calls to _password_policy_load_active_policy()
password_policy_cron in ./password_policy.module
Implements hook_cron().
password_policy_form_alter in ./password_policy.module
Implements hook_form_alter().
password_policy_user in ./password_policy.module
Implements hook_user().
_password_policy_constraint_validate in ./password_policy.module
Validates user password. Returns NULL on success or array with error messages from the constraints on failure.

File

./password_policy.module, line 914
The password policy module allows you to enforce a specific level of password complexity for the user passwords on the system.

Code

function _password_policy_load_active_policy($roles) {
  static $cache = array();
  if (empty($roles)) {
    $roles = array(
      DRUPAL_AUTHENTICATED_RID,
    );
  }
  $key = implode(',', $roles);

  // Use array_key_exists() instead of isset() as NULLs may be in the array.
  if (!array_key_exists($key, $cache)) {
    $result = db_query('SELECT p.* FROM {password_policy} p INNER JOIN {password_policy_role} r ON p.pid = r.pid WHERE p.enabled = 1 AND r.rid IN (' . db_placeholders($roles) . ') ORDER BY p.weight LIMIT 1', $roles);
    $row = db_fetch_array($result);
    if (is_array($row)) {

      // fetch and unserialize the serialized policy
      $row['policy'] = unserialize($row['policy']);
      $cache[$key] = $row;
    }
    else {
      $cache[$key] = NULL;
    }
  }
  return $cache[$key];
}