summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2002-05-25 06:47:47 +0000
committerDries Buytaert <dries@buytaert.net>2002-05-25 06:47:47 +0000
commite426775fd55ee7e5a6129d77da30e517b58eb27d (patch)
tree5b5a5db7fa48a8c8b6f2b49adb46bf79000b06ec /includes
parent04e491f8469382fe1935d89ed9b05978fce2ee00 (diff)
downloadbrdo-e426775fd55ee7e5a6129d77da30e517b58eb27d.tar.gz
brdo-e426775fd55ee7e5a6129d77da30e517b58eb27d.tar.bz2
- Bugfix. When a theme does no longer exist on disk, it should not be
returned by theme_list() as it breaks the site ... The attached patch prevents this from happening but does not remove the theme from the system table in the SQL database - if the theme is removed from the database upon viewing the themes administration page (or another trigger), I guess that is fine. Kjartan: my fix is the right thing to apply because theme_list() is used elsewhere where it requires to return a list of existing themes. Maybe it's a little sad but the current theme loading code might be slower and more complex than the old Drupal 3 theme loading code ... ?
Diffstat (limited to 'includes')
-rw-r--r--includes/theme.inc6
1 files changed, 4 insertions, 2 deletions
diff --git a/includes/theme.inc b/includes/theme.inc
index 4aa89b6d6..11d2c82e9 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -40,7 +40,7 @@ class BaseTheme {
$terms[] = l($term->name, array("or" => $term->tid), "index");
}
}
-
+
$output = "<b>". check_output($node->title) ."</b> by ". format_name($node) ."<br />";
if (count($terms)) {
$output .= "<small>(". $this->links($terms) .")</small><br />";
@@ -97,7 +97,9 @@ function theme_list() {
$list = array();
$result = db_query("SELECT * FROM system where type = 'theme' AND status = '1' ORDER BY name");
while ($theme = db_fetch_object($result)) {
- $list[$theme->name] = $theme;
+ if (file_exists($theme->filename)) {
+ $list[$theme->name] = $theme;
+ }
}
}