aboutsummaryrefslogtreecommitdiffstats
path: root/admin/include
diff options
context:
space:
mode:
Diffstat (limited to 'admin/include')
-rw-r--r--admin/include/themes.class.php36
1 files changed, 36 insertions, 0 deletions
diff --git a/admin/include/themes.class.php b/admin/include/themes.class.php
index ad32b6f7f..82622d878 100644
--- a/admin/include/themes.class.php
+++ b/admin/include/themes.class.php
@@ -80,6 +80,20 @@ class themes
// the theme is already active
break;
}
+
+ $missing_parent = $this->missing_parent_theme($theme_id);
+ if (isset($missing_parent))
+ {
+ array_push(
+ $errors,
+ sprintf(
+ l10n('Impossible to activate this theme, the parent theme is missing: %s'),
+ $missing_parent
+ )
+ );
+
+ break;
+ }
$query = "
INSERT INTO ".THEMES_TABLE."
@@ -168,6 +182,28 @@ DELETE
return $errors;
}
+ function missing_parent_theme($theme_id)
+ {
+ if (!isset($this->fs_themes[$theme_id]['parent']))
+ {
+ return null;
+ }
+
+ $parent = $this->fs_themes[$theme_id]['parent'];
+
+ if ('default' == $parent)
+ {
+ return null;
+ }
+
+ if (!isset($this->fs_themes[$parent]))
+ {
+ return $parent;
+ }
+
+ return $this->missing_parent_theme($parent);
+ }
+
function get_children_themes($theme_id)
{
$children = array();