webERP Forum

Full Version: $_SESSION['DefaultTheme'] is never initialized
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
While working on integrating the theme code into my Views project, I've come to find that while $_SESSION['DefaultTheme'] is referenced multiple times (line 245, CustLoginSetup.php,line 263, SuppLoginSetup.php, Lines 111 & 389, SystemParameters.php, line 625 WWW_Users.php, session.inc 199 & 200), however it is never actually initialized.

instead, $Theme is set to 'gel' if $_SESSION['Theme'] is not initialized (only applies to the login screen (line 99, session.inc) and, if the user logs in, the session is set according to what is saved in their preferences. At no point is $_SESSION['DefaultTheme'] set to a value.

Likely this error has gone unnoticed since $Theme and $_SESSION['Theme'] are always initialized to something.

Suggestion:
a) remove it entirely, it's confusing and doesn't do anything.
b) make it do what it's supposed to, aka represent the default system theme, in which case the login screen should reflect that. I don't see how it is really useful beyond that though.
OK so looking closer it should theoretically be set by GetConfig.php but for some reason it's not being set, and in any case isn't used for anything.
Hi serakfalcon, it is one of the config table variables. GetConfig.php loads the values of the config table into the session variable in the form $_SESSION[confname]=confvalue. This appears to work ok on my system (I get the correct value in $_SESSION['DefaultTheme'] anyway. Whether its worse having a config value for it is another matter.

Thanks
Tim
Hey Tim,
yeah, $_SESSION['DefaultTheme'] not being set seems to have been my problem, regardless, in line 195-203 of session.inc:

Code:
If (isset($_POST['Theme']) AND ($_SESSION['UsersRealName'] == $_POST['RealName'])) {
    $_SESSION['Theme'] = $_POST['Theme'];
    $Theme = $_POST['Theme'];
} elseif (!isset($_SESSION['Theme'])) {
    $Theme = $_SESSION['DefaultTheme'];
    $_SESSION['Theme'] = $_SESSION['DefaultTheme'];

} else {
    $Theme = $_SESSION['Theme'];
}

The elseif will never happen because $_SESSION['Theme'] is always set prior- it's not possible to add a user without a theme, and the user settings are loaded before that statement runs. Basically the only time $_SESSION['DefaultTheme'] is used is on the WWW_Users.php & SystemParamaters.php page, to make sure the select box is set to the default.

likewise, on line 98,

Code:
$Theme = (isset($_SESSION['Theme'])) ? $_SESSION['Theme'] : 'gel';

Why gel? this could be a use for $_SESSION['DefaultTheme'].
To be honest I can't see the point of it at all.

It's not possible to sign on without having a theme setup in your user record, so what point does a default theme serve?. It would be nice to remove one of the config options.

Tim
Agreed - think we can ditch the config parameter and remove the code in SystemParameters and modify session.inc to avoid references to SESSION['DefaultTheme']
Reference URL's