12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <?php
- /**
- * @file
- *
- * Provide tokens for session limit.
- */
- /**
- * Implements hook_token_info().
- *
- * Create tokens for the current user.
- */
- function session_limit_token_info() {
- $type = array(
- 'name' => t('Session limit'),
- 'description' => t('Tokens related to session limit module.'),
- 'needs-data' => 'user',
- );
- $session_limit['default'] = array(
- 'name' => t('Default sessions'),
- 'description' => t('Maximum number of active sessions configured specific to the user.'),
- );
- $session_limit['max'] = array(
- 'name' => t('Maximum sessions'),
- 'description' => t('Maximum number of active sessions allowed, accounting for all configuration possibilities.'),
- );
- $session_limit['role'] = array(
- 'name' => t('Maximum sessions by role'),
- 'description' => t('Maximum number of active sessions allowed by role.'),
- );
- $session_limit['user'] = array(
- 'name' => t('Maximum sessions for user'),
- 'description' => t('Maximum number of active sessions configured specific to the user.'),
- );
- return array(
- 'types' => array('session_limit' => $type),
- 'tokens' => array('session_limit' => $session_limit),
- );
- }
- /**
- * Implements hook_tokens().
- */
- function session_limit_tokens($type, $tokens, array $data = array(), array $options = array()) {
- $replacements = array();
- // The session limit variable does not need the user context.
- if ($type == 'session_limit') {
- foreach ($tokens as $name => $original) {
- if ($name == 'default') {
- $replacements[$original] = variable_get('session_limit_max', 1);
- }
- }
- }
- if ($type == 'session_limit' && !empty($data['user'])) {
- $account = user_load($data['user']->uid);
- foreach ($tokens as $name => $original) {
- switch ($name) {
- case 'max':
- $replacements[$original] = session_limit_user_max_sessions($account);
- break;
- case 'role':
- $replacements[$original] = session_limit_user_max_sessions_byrole($account);
- break;
- case 'user':
- $replacements[$original] = empty($account->session_limit) ? 0 : check_plain($account->session_limit);
- break;
- }
- }
- }
- return $replacements;
- }
|