source: trunk/admin/themes_installed.php @ 5382

Last change on this file since 5382 was 5382, checked in by plg, 10 years ago

feature 1514: make the "deactivate" action inactive if there is no active
theme left.

bug fixed: when setting the default theme, make sure at least one user will
be updated.

File size: 4.8 KB
Line 
1<?php
2// +-----------------------------------------------------------------------+
3// | Piwigo - a PHP based picture gallery                                  |
4// +-----------------------------------------------------------------------+
5// | Copyright(C) 2008-2010 Piwigo Team                  http://piwigo.org |
6// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
7// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
8// +-----------------------------------------------------------------------+
9// | This program is free software; you can redistribute it and/or modify  |
10// | it under the terms of the GNU General Public License as published by  |
11// | the Free Software Foundation                                          |
12// |                                                                       |
13// | This program is distributed in the hope that it will be useful, but   |
14// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
15// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
16// | General Public License for more details.                              |
17// |                                                                       |
18// | You should have received a copy of the GNU General Public License     |
19// | along with this program; if not, write to the Free Software           |
20// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
21// | USA.                                                                  |
22// +-----------------------------------------------------------------------+
23
24if( !defined("PHPWG_ROOT_PATH") )
25{
26  die ("Hacking attempt!");
27}
28
29include_once(PHPWG_ROOT_PATH.'admin/include/themes.class.php');
30
31$base_url = get_root_url().'admin.php?page='.$page['page'];
32
33$themes = new themes();
34
35// +-----------------------------------------------------------------------+
36// |                          perform actions                              |
37// +-----------------------------------------------------------------------+
38
39if (isset($_GET['action']) and isset($_GET['theme']) and !is_adviser())
40{
41  $page['errors'] = $themes->perform_action($_GET['action'], $_GET['theme']);
42
43  if (empty($page['errors']))
44  {
45    if ($_GET['action'] == 'activate' or $_GET['action'] == 'deactivate')
46    {
47      $template->delete_compiled_templates();
48    }
49    redirect($base_url);
50  }
51}
52
53// +-----------------------------------------------------------------------+
54// |                     start template output                             |
55// +-----------------------------------------------------------------------+
56
57$themes->sort_fs_themes();
58
59$default_theme = get_default_theme();
60
61$db_themes = $themes->get_db_themes();
62$db_theme_ids = array();
63foreach ($db_themes as $db_theme)
64{
65  array_push($db_theme_ids, $db_theme['id']);
66}
67
68$active_themes = array();
69$inactive_themes = array();
70
71foreach ($themes->fs_themes as $theme_id => $fs_theme)
72{
73  if ($theme_id == 'default')
74  {
75    continue;
76  }
77
78  if (in_array($theme_id, $db_theme_ids))
79  {
80    $fs_theme['deactivable'] = true;
81   
82    if (count($db_theme_ids) <= 1)
83    {
84      $fs_theme['deactivable'] = false;
85      $fs_theme['deactivate_tooltip'] = l10n('Impossible to deactivate this theme, you need at least one theme.');
86    }
87   
88    if ($theme_id == $default_theme)
89    {
90      $fs_theme['is_default'] = true;
91      array_unshift($active_themes, $fs_theme);
92    }
93    else
94    {
95      array_push($active_themes, $fs_theme);
96    }
97  }
98  else
99  {
100    // is the theme "activable" ?
101    $fs_theme['activable'] = true;
102   
103    $missing_parent = $themes->missing_parent_theme($theme_id);
104    if (isset($missing_parent))
105    {
106      $fs_theme['activable'] = false;
107     
108      $fs_theme['activate_tooltip'] = sprintf(
109        l10n('Impossible to activate this theme, the parent theme is missing: %s'),
110        $missing_parent
111        );
112    }
113
114    // is the theme "deletable" ?
115    $children = $themes->get_children_themes($theme_id);
116
117    $fs_theme['deletable'] = true;
118   
119    if (count($children) > 0)
120    {
121      $fs_theme['deletable'] = false;
122     
123      $fs_theme['delete_tooltip'] = sprintf(
124        l10n('Impossible to delete this theme. Other themes depends on it: %s'),
125        implode(', ', $children)
126        );
127    }
128   
129    array_push($inactive_themes, $fs_theme);
130  }
131}
132
133$template->assign(
134    array(
135      'activate_baseurl' => $base_url.'&action=activate&theme=',
136      'deactivate_baseurl' => $base_url.'&action=deactivate&theme=',
137      'set_default_baseurl' => $base_url.'&action=set_default&theme=',
138      'delete_baseurl' => $base_url.'&action=delete&theme=',
139
140      'active_themes' => $active_themes,
141      'inactive_themes' => $inactive_themes,
142    )
143  );
144
145
146$themes->set_tabsheet($page['page']);
147$template->set_filenames(array('themes' => 'themes_installed.tpl'));
148$template->assign_var_from_handle('ADMIN_CONTENT', 'themes');
149?>
Note: See TracBrowser for help on using the repository browser.