function access_filter_boot in Access Filter 7
Implements hook_boot().
File
- ./
access_filter.module, line 76 - Allows users to manage access filters.
Code
function access_filter_boot() {
// Always allow access when running in CLI mode for Drush.
if (drupal_is_cli()) {
return;
}
global $conf;
if (!empty($conf['access_filter_disabled'])) {
return;
}
include_once DRUPAL_ROOT . '/includes/common.inc';
include_once DRUPAL_ROOT . '/' . variable_get('path_inc', 'includes/path.inc');
include_once DRUPAL_ROOT . '/includes/password.inc';
include_once DRUPAL_ROOT . '/includes/session.inc';
// Ensure $language_url for drupal_lookup_path().
global $language_url;
if (!$language_url) {
include_once DRUPAL_ROOT . '/includes/locale.inc';
include_once DRUPAL_ROOT . '/includes/language.inc';
$languages = language_list();
$saveq = $_GET['q'];
$_GET['q'] = request_path();
$language_code = locale_language_from_url($languages);
$_GET['q'] = $saveq;
if ($language_code) {
$language_url = $languages[$language_code];
}
}
if (!$language_url) {
$language_url = language_default();
}
// Also ensure $language for check_markup().
global $language;
if (!$language) {
$language = $language_url;
}
// Retrieve filters.
global $_access_filter_fast_mode_enabled;
$_access_filter_fast_mode_enabled = TRUE;
$filters = NULL;
if (isset($conf['access_filter_fast'])) {
$filters = unserialize($conf['access_filter_fast']);
}
if (!$filters) {
$filters = access_filter_load_all();
$_access_filter_fast_mode_enabled = FALSE;
}
// Check access.
foreach ($filters as $filter) {
if (access_filter_check_access($filter)) {
continue;
}
if ($filter->deny_action_settings->force_logout) {
global $user;
if ($user->uid) {
watchdog('access_filter', 'Session closed for %name.', array(
'%name' => $user->name,
));
module_invoke_all('user_logout', $user);
session_destroy();
}
}
switch ($filter->deny_action_settings->type) {
case ACCESS_FILTER_DENY_ACTION_403:
case ACCESS_FILTER_DENY_ACTION_404:
case ACCESS_FILTER_DENY_ACTION_200:
default:
// Replace response code.
header('HTTP', TRUE, $filter->deny_action_settings->type);
// Print formatted message.
module_load_include('module', 'filter');
$message = $filter->deny_action_settings->error_message;
echo check_markup($message['value'], $message['format']);
break;
case ACCESS_FILTER_DENY_ACTION_301:
case ACCESS_FILTER_DENY_ACTION_302:
drupal_goto($filter->deny_action_settings->redirect_destination, array(), $filter->deny_action_settings->type);
break;
}
drupal_exit();
}
}