system_theme_data

Хочешь помочь с переводом? Это очень просто и быстро. Лишь зарегистрируйся, и можешь тут же начать переводить.

modules/system/system.module, строка 914

Версии
5 – 6
system_theme_data()

Collect data about all currently available themes

▾ 3 функции вызывают system_theme_data()

system_admin_theme_settings in modules/system/system.module
This function allows selection of the theme to show in administration sections.
system_themes in modules/system/system.module
Menu callback; displays a listing of all themes.
system_theme_settings in modules/system/system.module
Menu callback; display theme configuration for entire site and individual themes.

Код

<?php
function system_theme_data() {
  include_once './includes/install.inc';

  // Find themes
  $themes = drupal_system_listing('\.theme$', 'themes');

  // Find theme engines
  $engines = drupal_system_listing('\.engine$', 'themes/engines');

  // can't iterate over array itself as it uses a copy of the array items
  foreach (array_keys($themes) as $key) {
    drupal_get_filename('theme', $themes[$key]->name, $themes[$key]->filename);
    drupal_load('theme', $themes[$key]->name);
    $themes[$key]->owner = $themes[$key]->filename;
    $themes[$key]->prefix = $key;
  }

  // Remove all theme engines from the system table
  db_query("DELETE FROM {system} WHERE type = 'theme_engine'");

  foreach ($engines as $engine) {
    // Insert theme engine into system table
    drupal_get_filename('theme_engine', $engine->name, $engine->filename);
    drupal_load('theme_engine', $engine->name);
    db_query("INSERT INTO {system} (name, type, filename, status, throttle, bootstrap) VALUES ('%s', '%s', '%s', %d, %d, %d)", $engine->name, 'theme_engine', $engine->filename, 1, 0, 0);

    // Add templates to the site listing
    foreach (call_user_func($engine->name .'_templates') as $template) {
      // Do not double-insert templates with theme files in their directory,
      // but do register their engine data.
      if (array_key_exists($template->name, $themes)) {
        $themes[$template->name]->template = TRUE;
        $themes[$template->name]->owner = $engine->filename;
        $themes[$template->name]->prefix = $engine->name;
      }
      else {
        $template->template = TRUE;
        $template->name = basename(dirname($template->filename));
        $template->owner = $engine->filename;
        $template->prefix = $engine->name;

        $themes[$template->name] = $template;
      }
    }
  }

  // Find styles in each theme's directory.
  foreach ($themes as $theme) {
    foreach (file_scan_directory(dirname($theme->filename), 'style.css$') as $style) {
      $style->style = TRUE;
      $style->template = isset($theme->template) ? $theme->template : FALSE;
      $style->name = basename(dirname($style->filename));
      $style->owner = $theme->filename;
      $style->prefix = $theme->template ? $theme->prefix : $theme->name;
      // do not double-insert styles with theme files in their directory
      if (array_key_exists($style->name, $themes)) {
        continue;
      }
      $themes[$style->name] = $style;
    }
  }

  // Extract current files from database.
  system_get_files_database($themes, 'theme');

  db_query("DELETE FROM {system} WHERE type = 'theme'");

  foreach ($themes as $theme) {
    db_query("INSERT INTO {system} (name, description, type, filename, status, throttle, bootstrap) VALUES ('%s', '%s', '%s', '%s', %d, %d, %d)", $theme->name, $theme->owner, 'theme', $theme->filename, $theme->status, 0, 0);
  }

  return $themes;
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вход в систему