You are here

fasttoggle_user.inc in Fasttoggle 7

Fasttoggle user hook implementations.

File

module/fasttoggle_user/fasttoggle_user.inc
View source
<?php

/**
 * @file
 * Fasttoggle user hook implementations.
 */

/**
 * Get a list of roles that can be toggled.
 *
 * @return array
 *   Toggleable roles.
 */
function fasttoggle_potential_toggleable_roles() {
  static $roles;
  if (!isset($roles)) {
    $roles = user_roles(TRUE);
    unset($roles[DRUPAL_AUTHENTICATED_RID]);
  }
  return $roles;
}

/**
 * Get a list of roles for the sitewide settings form.
 *
 * @return array
 *   List of roles.
 */
function fasttoggle_sitewide_toggleable_roles() {
  static $roles;
  if (!isset($roles)) {
    $potential_roles = fasttoggle_potential_toggleable_roles();
    $defaults = array();
    foreach ($potential_roles as $rid => $role_name) {
      $defaults["role_{$rid}"] = "role_{$rid}";
    }
    $values = variable_get('fasttoggle_user_role_settings', $defaults);
    $allowed_roles = array_filter(variable_get('fasttoggle_user_role_settings', $defaults));

    // Trim the group ("role_") off the front of each key.
    $new_array = array();
    foreach ($allowed_roles as $role) {
      $new_array[substr(array_pop($allowed_roles), 5)] = $role;
    }
    $roles = $new_array ? array_intersect_key(fasttoggle_potential_toggleable_roles(), $new_array) : array();
  }
  return $roles;
}

/**
 * The list of roles a user can toggle.
 *
 * @param object $account
 *   The account to check.
 *
 * @return array
 *   The list of roles the user can toggle.
 */
function fasttoggle_user_toggleable_roles($account = NULL) {
  global $user;
  static $roles;
  if (!$account) {
    $account = $user;
  }
  if (!isset($roles[$account->uid])) {
    $roles[$account->uid] = array();
    foreach (fasttoggle_sitewide_toggleable_roles() as $rid => $name) {
      if (user_access(fasttoggle_role_permission($name), $account)) {
        $roles[$account->uid][$rid] = $name;
      }
    }
  }
  return $roles[$account->uid];
}

Functions

Namesort descending Description
fasttoggle_potential_toggleable_roles Get a list of roles that can be toggled.
fasttoggle_sitewide_toggleable_roles Get a list of roles for the sitewide settings form.
fasttoggle_user_toggleable_roles The list of roles a user can toggle.