- Daily/weekly/monthly reset completely rewritten
[mailer.git] / inc / theme-manager.php
1 <?php
2 /************************************************************************
3  * MXChange v0.2.1                                    Start: 12/03/2004 *
4  * ===============                              Last change: 12/13/2004 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : theme-manager.php                                *
8  * -------------------------------------------------------------------- *
9  * Short description : Theme manager                                    *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Themen-Manager                                   *
12  * -------------------------------------------------------------------- *
13  *                                                                      *
14  * -------------------------------------------------------------------- *
15  * Copyright (c) 2003 - 2008 by Roland Haeder                           *
16  * For more information visit: http://www.mxchange.org                  *
17  *                                                                      *
18  * This program is free software; you can redistribute it and/or modify *
19  * it under the terms of the GNU General Public License as published by *
20  * the Free Software Foundation; either version 2 of the License, or    *
21  * (at your option) any later version.                                  *
22  *                                                                      *
23  * This program is distributed in the hope that it will be useful,      *
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
26  * GNU General Public License for more details.                         *
27  *                                                                      *
28  * You should have received a copy of the GNU General Public License    *
29  * along with this program; if not, write to the Free Software          *
30  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
31  * MA  02110-1301  USA                                                  *
32  ************************************************************************/
33
34 // Some security stuff...
35 if (ereg(basename(__FILE__), $_SERVER['PHP_SELF']))
36 {
37         $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
38         require($INC);
39 }
40
41 // Always make sure the session management is initialized first
42 require_once(PATH."inc/session.php");
43
44 // Get current theme name
45 function GET_CURR_THEME() {
46         global $INC_POOL, $_CONFIG, $CSS;
47
48         // The default theme is 'default'... ;-)
49         $ret = "default";
50
51         // Load default theme if not empty from configuration
52         if (!empty($_CONFIG['default_theme'])) $ret = $_CONFIG['default_theme'];
53
54         if (!isSessionVariableSet('mxchange_theme')) {
55                 // Set default theme
56                 set_session("mxchange_theme", $ret);
57         } elseif ((isSessionVariableSet('mxchange_theme')) && (GET_EXT_VERSION("sql_patches") >= "0.1.4")) {
58                 // Get theme from cookie
59                 $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_themes WHERE theme_path='%s' LIMIT 1", array(get_session('mxchange_theme')), __FILE__, __LINE__);
60                 if (SQL_NUMROWS($result) == 1) {
61                         // Design is valid!
62                         $ret = get_session('mxchange_theme');
63                 }
64
65                 // Free memory
66                 SQL_FREERESULT($result);
67         } elseif ((!isBooleanConstantAndTrue('mxchange_installed')) && ((isBooleanConstantAndTrue('mxchange_installing')) || ($CSS == true)) && ((!empty($_GET['theme'])) || (!empty($_POST['theme'])))) {
68                 // Prepare FQFN for checking
69                 $theme = sprintf("%stheme/%s/theme.php", PATH, $_GET['theme']);
70
71                 // Installation mode active
72                 if ((!empty($_GET['theme'])) && (file_exists($theme)) && (is_readable($theme))) {
73                         // Set cookie from URL data
74                         set_session("mxchange_theme", $_GET['theme']);
75                 } elseif (file_exists(PATH."theme/".$_POST['theme']."/theme.php")) {
76                         // Set cookie from posted data
77                         set_session("mxchange_theme", $_POST['theme']);
78                 }
79
80                 // Set return value
81                 $ret = get_session('mxchange_theme');
82         } else {
83                 // Invalid design, reset cookie
84                 set_session("mxchange_theme", $ret);
85         }
86
87         // Add (maybe) found theme.php file to inclusion list
88         $theme = sprintf("%stheme/%s/theme.php", PATH, SQL_ESCAPE($ret));
89
90         // Try to load the requested include file
91         if ((@file_exists($theme)) && (is_readable($theme))) $INC_POOL[] = $theme;
92
93         // Return theme value
94         return $ret;
95 }
96
97 function THEME_SELECTION_BOX($mod, $act, $wht, $result) {
98         // Construction URL
99         global $currTheme;
100         $FORM = URL."/modules.php?module=".$mod;
101         if (!empty($act)) $FORM .= "&amp;action=".$act;
102         if (!empty($wht))   $FORM .= "&amp;what=".$wht;
103         define('__FORM_VALUE', $FORM);
104
105         // Initialize array
106         $THEMES = array(
107                 'theme_unix'   => array(), // Unix name from filesystem
108                 'theme_name'   => array()  // Title
109         );
110
111         // Load all themes
112         while(list($theme) = SQL_FETCHROW($result)) {
113                 // Load it's theme.php file
114                 $INC = sprintf("%stheme/%s/theme.php", PATH, SQL_ESCAPE($theme));
115                 if ((file_exists($INC)) && (is_readable($INC))) {
116                         // And save all data in array
117                         require($INC);
118                         $THEMES['theme_unix'][] = $theme;
119                         $THEMES['theme_name'][] = $THEME_NAME;
120                 } // END - if
121         } // END - while
122
123         // Sort whole array by title
124         array_pk_sort($THEMES, array("theme_name"));
125
126         // Construct selection form for the box template
127         $OUT = "";
128         foreach ($THEMES['theme_unix'] as $key => $theme) {
129                 $OUT .= "  <OPTION value=\"".$theme."\"";
130                 if ($theme == $currTheme) $OUT .= " selected=\"selected\"";
131                 $OUT .= ">".$THEMES['theme_name'][$key]."</OPTION>\n";
132         } // END - foreach
133
134         // Return generated selection
135         define('__THEME_SELECTION_OPTIONS', $OUT);
136         $OUT = LOAD_TEMPLATE("theme_select_form", true);
137         return $OUT;
138 }
139
140 // Initialize variables
141 $currTheme = GET_CURR_THEME();
142 if (empty($_POST['new_theme'])) $_POST['new_theme'] = "";
143
144 // Check if new theme is selcted
145 if ((!empty($_POST['new_theme'])) && ($_POST['new_theme'] != $currTheme)) {
146         // Set new theme for guests
147         $NewTheme = $_POST['new_theme'];
148
149         // Change to new theme
150         set_session("mxchange_theme", $NewTheme);
151
152         // Remove current from array and set new
153         $theme = sprintf("%stheme/%s/theme.php", PATH, $currTheme);
154         unset($INC_POOL[array_search($theme, $INC_POOL)]);
155         $INC_POOL[] = sprintf("%stheme/%s/theme.php", PATH, $NewTheme);
156 } // END - if
157
158 // Remove variable again
159 unset($_POST['new_theme']);
160
161 //
162 ?>