From 15499d5dc13cb4680fa2a683f459bbfe785d70a5 Mon Sep 17 00:00:00 2001 From: plegall Date: Mon, 22 Mar 2010 14:11:10 +0000 Subject: feature 1514: improvement, impossible to delete a theme that is required by another installed theme. git-svn-id: http://piwigo.org/svn/trunk@5258 68402e56-0260-453c-a942-63ccdbb3a9ee --- admin/include/themes.class.php | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'admin/include') 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'; -- cgit v1.2.3