/**
  * @return array Users filtered by >= $role
  */
 protected function filter_users_by_role($users, $role)
 {
     $filtered_users = array();
     if ($role === 'everyone') {
         $filtered_users = $users;
     } else {
         foreach ($users as $user) {
             if (ClefUtils::user_fulfills_role($user, $role)) {
                 $filtered_users[] = $user;
             }
         }
     }
     return $filtered_users;
 }
 /**
  * Returns whether passwords are disabled for a specific user based on
  * user roles.
  *
  * @param WP_User $user
  * @return bool
  */
 public function passwords_are_disabled_for_user($user)
 {
     if (!$this->is_configured()) {
         return false;
     }
     if ($this->get('clef_password_settings_force')) {
         return true;
     }
     if ($this->get('clef_password_settings_disable_passwords') && ClefUtils::user_has_clef($user)) {
         return true;
     }
     $disable_certain_passwords = $this->get('clef_password_settings_disable_certain_passwords');
     if ($disable_certain_passwords && $disable_certain_passwords != "") {
         $max_role = strtolower($disable_certain_passwords);
         if (ClefUtils::user_fulfills_role($user, $max_role)) {
             return true;
         }
     }
     $potential_custom_user_roles = (array) $user->roles;
     foreach ($potential_custom_user_roles as $role) {
         if ($this->get("clef_password_settings_disable_passwords_custom_role_{$role}")) {
             return true;
         }
     }
     return false;
 }