source: trunk/admin/themes_installed.php @ 5259

Last change on this file since 5259 was 5259, checked in by plg, 14 years ago

ture 1514: improvement, impossible to activate a theme is a parent is missing
(a parent includes grand father and his own father, and his own father, and so
on... until the root theme is "default" or has no parent declared)

File size: 4.6 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    if ($theme_id == $default_theme)
81    {
82      $fs_theme['is_default'] = true;
83      array_unshift($active_themes, $fs_theme);
84    }
85    else
86    {
87      array_push($active_themes, $fs_theme);
88    }
89  }
90  else
91  {
92    // is the theme "activable" ?
93    $fs_theme['activable'] = true;
94   
95    $missing_parent = $themes->missing_parent_theme($theme_id);
96    if (isset($missing_parent))
97    {
98      $fs_theme['activable'] = false;
99     
100      $fs_theme['activate_tooltip'] = sprintf(
101        l10n('Impossible to activate this theme, the parent theme is missing: %s'),
102        $missing_parent
103        );
104    }
105
106    // is the theme "deletable" ?
107    $children = $themes->get_children_themes($theme_id);
108
109    $fs_theme['deletable'] = true;
110   
111    if (count($children) > 0)
112    {
113      $fs_theme['deletable'] = false;
114     
115      $fs_theme['delete_tooltip'] = sprintf(
116        l10n('Impossible to delete this theme. Other themes depends on it: %s'),
117        implode(', ', $children)
118        );
119    }
120   
121    array_push($inactive_themes, $fs_theme);
122  }
123}
124
125$template->assign(
126    array(
127      'activate_baseurl' => $base_url.'&action=activate&theme=',
128      'deactivate_baseurl' => $base_url.'&action=deactivate&theme=',
129      'set_default_baseurl' => $base_url.'&action=set_default&theme=',
130      'delete_baseurl' => $base_url.'&action=delete&theme=',
131
132      'active_themes' => $active_themes,
133      'inactive_themes' => $inactive_themes,
134    )
135  );
136
137
138$themes->set_tabsheet($page['page']);
139$template->set_filenames(array('themes' => 'themes_installed.tpl'));
140$template->assign_var_from_handle('ADMIN_CONTENT', 'themes');
141?>
Note: See TracBrowser for help on using the repository browser.