wernis extension is now alpha code (only listing in admin area is missing), naming...
[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 //
42 function GET_CURR_THEME() {
43         global $INC_POOL, $_CONFIG, $CSS;
44
45         // The default theme is 'default'... ;-)
46         $ret = "default";
47
48         // Load default theme if not empty from configuration
49         if (!empty($_CONFIG['default_theme'])) $ret = $_CONFIG['default_theme'];
50
51         if (empty($_COOKIE['mxchange_theme'])) {
52                 // Set default theme
53                 @setcookie("mxchange_theme", $ret, (time() + 60*60*24*365), COOKIE_PATH);
54         } elseif ((!empty($_COOKIE['mxchange_theme'])) && (GET_EXT_VERSION("sql_patches") >= "0.1.4")) {
55                 // Get theme from cookie
56                 $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_themes WHERE theme_path='%s' LIMIT 1", array($_COOKIE['mxchange_theme']), __FILE__, __LINE__);
57                 if (SQL_NUMROWS($result) == 1) {
58                         // Design is valid!
59                         $ret = $_COOKIE['mxchange_theme'];
60                 }
61
62                 // Free memory
63                 SQL_FREERESULT($result);
64         } elseif ((!mxchange_installed) && ((mxchange_installing) || ($CSS == true)) && ((!empty($_GET['theme'])) || (!empty($_POST['theme'])))) {
65                 // Prepare FQFN for checking
66                 $theme = sprintf("%stheme/%s/theme.php", PATH, $_GET['theme']);
67
68                 // Installation mode active
69                 if ((!empty($_GET['theme'])) && (file_exists($theme)) && (is_readable($theme))) {
70                         // Set cookie from URL data
71                         @setcookie("mxchange_theme", $_GET['theme'], (time() + 60*60*24*365), COOKIE_PATH);
72                         $_COOKIE['mxchange_theme'] = $_GET['theme'];
73                 } elseif (file_exists(PATH."theme/".$_POST['theme']."/theme.php")) {
74                         // Set cookie from posted data
75                         @setcookie("mxchange_theme", $_POST['theme'], (time() + 60*60*24*365), COOKIE_PATH);
76                         $_COOKIE['mxchange_theme'] = $_POST['theme'];
77                 }
78
79                 // Set return value
80                 $ret = $_COOKIE['mxchange_theme'];
81         } else {
82                 // Invalid design, reset cookie
83                 @setcookie("mxchange_theme", $ret, (time() + 60*60*24*365), COOKIE_PATH);
84         }
85
86         // Add (maybe) found theme.php file to inclusion list
87         $theme = sprintf("%stheme/%s/theme.php", PATH, SQL_ESCAPE($ret));
88
89         // Try to load the requested include file
90         if ((@file_exists($theme)) && (is_readable($theme))) $INC_POOL[] = $theme;
91
92         // Return theme value
93         return $ret;
94 }
95
96 function THEME_SELECTION_BOX($mod, $act, $wht, $result)
97 {
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         {
114                 // Load it's theme.php file
115                 $INC = PATH."theme/".$theme."/theme.php";
116                 if (file_exists($INC))
117                 {
118                         // And save all data in array
119                         include($INC);
120                         $THEMES['theme_unix'][] = $theme;
121                         $THEMES['theme_name'][] = $THEME_NAME;
122                 }
123         }
124
125         // Sort whole array by title
126         array_pk_sort($THEMES, array("theme_name"));
127
128         // Construct selection form for the box template
129         $OUT = "";
130         foreach ($THEMES['theme_unix'] as $key=>$theme)
131         {
132                 $OUT .= "  <OPTION value=\"".$theme."\"";
133                 if ($theme == $CurrTheme) $OUT .= " selected=\"selected\"";
134                 $OUT .= ">".$THEMES['theme_name'][$key]."</OPTION>\n";
135         }
136
137         // Return generated selection
138         define('__THEME_SELECTION_OPTIONS', $OUT);
139         $OUT = LOAD_TEMPLATE("theme_select_form", true);
140         return $OUT;
141 }
142
143 // Initialize variables
144 $CurrTheme = GET_CURR_THEME();
145 if (empty($_POST['new_theme'])) $_POST['new_theme'] = "";
146
147 // Check if new theme is selcted
148 if ((!empty($_POST['new_theme'])) && ($_POST['new_theme'] != $CurrTheme))
149 {
150         // Set new theme for guests
151         $NewTheme = $_POST['new_theme'];
152
153         // Change to new theme
154         @setcookie("mxchange_theme", $NewTheme, (time() + 60*60*24*365), COOKIE_PATH);
155
156         // Remove current from array and set new
157         $theme = PATH."theme/".$CurrTheme."/theme.php";
158         unset($INC_POOL[array_search($theme, $INC_POOL)]);
159         $INC_POOL[] = PATH."theme/".$NewTheme."/theme.php";
160 }
161
162 // Remove variable again
163 unset($_POST['new_theme']);
164
165 //
166 ?>