diff options
Diffstat (limited to '')
-rw-r--r-- | admin/include/themes.class.php | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/admin/include/themes.class.php b/admin/include/themes.class.php index 98a75339c..ad32b6f7f 100644 --- a/admin/include/themes.class.php +++ b/admin/include/themes.class.php @@ -140,6 +140,19 @@ DELETE // nothing to do here break; } + + $children = $this->get_children_themes($theme_id); + if (count($children) > 0) + { + array_push( + $errors, + sprintf( + l10n('Impossible to delete this theme. Other themes depends on it: %s'), + implode(', ', $children) + ) + ); + break; + } if (!$this->deltree(PHPWG_THEMES_PATH.$theme_id)) { @@ -155,6 +168,21 @@ DELETE return $errors; } + function get_children_themes($theme_id) + { + $children = array(); + + foreach ($this->fs_themes as $test_child) + { + if (isset($test_child['parent']) and $test_child['parent'] == $theme_id) + { + array_push($children, $test_child['name']); + } + } + + return $children; + } + function set_default_theme($theme_id) { // first we need to know which users are using the current default theme @@ -267,6 +295,10 @@ SELECT list( , $extension) = explode('extension_view.php?eid=', $theme['uri']); if (is_numeric($extension)) $theme['extension'] = $extension; } + if (preg_match('/["\']parent["\'][^"\']+["\']([^"\']+)["\']/', $theme_data, $val)) + { + $theme['parent'] = $val[1]; + } // screenshot $screenshot_path = $path.'/screenshot.png'; |