Unable to get my Mobile PHP to function as expected

I am very new to PHP and I think the below code is correct, but perhaps it is in the wrong order. I’m not receiving any syntax errors, but my full-HTML theme is not changing to mobile correctly. Any assistance with this would be greatly appreciated:

[php]function settheme() {
$theme = ‘branda’;

$theme_param = getUrlParm(‘theme’);
if($theme_param)
{
$theme_param = strtolower($theme_param);
}
$theme_session = $this->CI->session->getSessionData(‘theme’);
if($theme_param)
{
$theme = $theme_param;
}
else
{
if($theme_session)
{
$theme = $theme_session;
}
}
if (($theme = “euf/assets/themes/$theme”) && array_key_exists($theme, $CI->themes->setTheme()))
{
setcookie(‘theme’, $setTheme, 0, ‘/’);
$CI->themes->setTheme($theme);
}
elseif(((strpos($_SERVER[‘HTTP_USER_AGENT’],‘iphone’, ‘Android’, ‘webOS’, ‘ipad’, ‘Blackberry’) != false)) && ($theme = “euf/assets/themes/mobile”) && array_key_exists($theme, $CI->themes-> setTheme()))
{
$theme = “/euf/assets/themes/mobile”;
$CI->themes->setTheme($theme);
}
elseif (($setTheme = $_COOKIE[‘theme’]) && ($theme = “euf/assets/themes/$theme”) && array_key_exists($theme, $CI->themes->setTheme()))
{
$theme = “/euf/assets/themes/$theme”;
$CI->themes->setTheme($theme);
}
if($theme !== $theme_session)
{
$this->CI->session->setSessionData(array(‘theme’ => $theme));
}
$CI =& get_instance();
if($theme)
{
$theme = “/euf/assets/themes/$theme”;
$CI->themes->setTheme($theme);
}
}
}[/php]

For one you should use a proper editor / IDE so your code get structured better.

Other than that it’s hard to say, there are some custom objects and functions you haven’t included the source for so it’s everyones guess.

I would start with cleaning up. You could clean up the ifs, you have a lot of assignments in the if conditions which won’t really do much other than obfuscate what the conditions really are.

Ex:
[php]if (($theme = “euf/assets/themes/$theme”) && array_key_exists($theme, $CI->themes->setTheme())) {
setcookie(‘theme’, $setTheme, 0, ‘/’);
$CI->themes->setTheme($theme);
} elseif ((strpos($_SERVER[‘HTTP_USER_AGENT’],‘iphone’, ‘Android’, ‘webOS’, ‘ipad’, ‘Blackberry’) != false) && ($theme = “euf/assets/themes/mobile”) && array_key_exists($theme, $CI->themes-> setTheme())) {
$theme = “/euf/assets/themes/mobile”;
$CI->themes->setTheme($theme);
} elseif (($setTheme = $_COOKIE[‘theme’]) && ($theme = “euf/assets/themes/$theme”) && array_key_exists($theme, $CI->themes->setTheme())) {
$theme = “/euf/assets/themes/$theme”;
$CI->themes->setTheme($theme);
}[/php]

These will always equal to true
[php]if ($theme = “euf/assets/themes/$theme”)

elseif ($theme = “euf/assets/themes/mobile”)

elseif (($setTheme = $_COOKIE[‘theme’]) && ($theme = “euf/assets/themes/$theme”))[/php]

Sponsor our Newsletter | Privacy Policy | Terms of Service