You are here

function admin_theme_init in Administration theme 6

Implementation of hook_init().

File

./admin_theme.module, line 120
Enable the administration theme on more pages then possible with Drupal's default administration page.

Code

function admin_theme_init() {
  $admin_theme_disallow = FALSE;
  $admin_theme = FALSE;

  // check if some paths are disallow to get the theme
  if (trim(variable_get('admin_theme_path_disallow', '')) != '') {

    // pages that are defined by their normal path
    $admin_theme_disallow = drupal_match_path($_GET['q'], variable_get('admin_theme_path_disallow', ''));

    // pages that are defined with their alias
    $alias = drupal_get_path_alias($_GET['q']);
    if ($alias != $_GET['q']) {
      $admin_theme_disallow = $admin_theme || drupal_match_path($alias, variable_get('admin_theme_path_disallow', ''));
    }
  }

  // we should not show the admin theme if the user has no access or the path is in the disallow list
  if (!user_access('access admin theme') || $admin_theme_disallow) {
    unset($GLOBALS['custom_theme']);
    return;
  }

  // check if an option is enabled and if it results to TRUE
  $list = admin_theme_list();
  foreach ($list as $info) {
    $var = admin_theme_variable_name($info['module'], $info['option']);
    if ((bool) variable_get($var, '0') && module_invoke($info['module'], 'admin_theme_options', 'check', $info['option'])) {
      $admin_theme = TRUE;
    }
  }

  // some custom defined pages should get admin theme
  if (trim(variable_get('admin_theme_path', '')) != '') {

    // pages that are defined by their normal path
    $admin_theme = $admin_theme || drupal_match_path($_GET['q'], variable_get('admin_theme_path', ''));

    // pages that are defined with their alias
    $alias = drupal_get_path_alias($_GET['q']);
    if ($alias != $_GET['q']) {
      $admin_theme = $admin_theme || drupal_match_path($alias, variable_get('admin_theme_path', ''));
    }
  }

  // Use the admin theme for the current request (if global admin theme setting is checked).
  if ($admin_theme) {
    global $custom_theme;
    $custom_theme = variable_get('admin_theme', '0');
    drupal_add_css(drupal_get_path('module', 'system') . '/admin.css', 'module');
  }
}