global $template, $config; function rok_isIe($version = false) { $agent=$_SERVER['HTTP_USER_AGENT']; $found = strpos($agent,'MSIE '); if ($found) { if ($version) { $ieversion = substr(substr($agent,$found+5),0,1); if ($ieversion == $version) return true; else return false; } else { return true; } } else { return false; } if (stristr($agent, 'msie'.$ieversion)) return true; return false; } if (rok_isIe(6)) { $template->assign_vars(array( 'IE_VERSION' => "6", )); } if (rok_isIe(7)) { $template->assign_vars(array( 'IE_VERSION' => "7", )); } if (rok_isIe(8)) { $template->assign_vars(array( 'IE_VERSION' => "8", )); } class GantryBrowser { var $_ua; var $name; var $version; var $shortversion; var $platform; var $engine; var $_checks = array(); function GantryBrowser() { $this->_ua = $_SERVER['HTTP_USER_AGENT']; $this->_checkPlatform(); $this->_checkBrowser(); $this->_checkEngine(); // add short version if ($this->version != 'unknown') $this->shortversion = substr($this->version, 0, strpos($this->version, '.')); else $this->shortversion = 'unknown'; $this->_createChecks(); } function _checkPlatform() { if (preg_match("/iPhone/", $this->_ua) || preg_match("/iPod/", $this->_ua)) { $this->platform = "iphone"; } elseif (preg_match("/iPad/", $this->_ua)) { $this->platform = "ipad"; } elseif (preg_match("/Android/", $this->_ua)) { $this->platform = "android"; } elseif (preg_match("/Mobile/i", $this->_ua)) { $this->platform = "mobile"; } elseif (preg_match("/win/i", $this->_ua)) { $this->platform = "win"; } elseif (preg_match("/mac/i", $this->_ua)) { $this->platform = "mac"; } elseif (preg_match("/linux/i", $this->_ua)) { $this->platform = "linux"; } else { $this->platform = "unknown"; } return $this->platform; } function _checkEngine(){ switch($this->name){ case 'ie': $this->engine = 'trident'; break; case 'firefox': $this->engine = 'gecko'; break; case 'android': case 'ipad': case 'iphone': case 'chrome': case 'safari': $this->engine = 'webkit'; break; case 'opera': $this->engine = 'presto'; break; default: $this->engine = 'unknown'; break; } } function _checkBrowser() { // IE if (preg_match('/msie/i', $this->_ua) && !preg_match('/opera/i', $this->_ua)) { $result = explode(' ', stristr(str_replace(';', ' ', $this->_ua), 'msie')); $this->name = 'ie'; $this->version = $result[1]; } // Firefox elseif (preg_match('/Firefox/', $this->_ua)) { $result = explode('/', stristr($this->_ua, 'Firefox')); $version = explode(' ', $result[1]); $this->name = 'firefox'; $this->version = $version[0]; } // Chrome elseif (preg_match('/Chrome/', $this->_ua)) { $result = explode('/', stristr($this->_ua, 'Chrome')); $version = explode(' ', $result[1]); $this->name = 'chrome'; $this->version = $version[0]; } //Safari elseif (preg_match('/Safari/', $this->_ua) && !preg_match('/iPhone/', $this->_ua) && !preg_match('/iPod/', $this->_ua) && !preg_match('/iPad/', $this->_ua)) { $result = explode('/', stristr($this->_ua, 'Version')); $this->name = 'safari'; if (isset ($result[1])) { $version = explode(' ', $result[1]); $this->version = $version[0]; } else { $this->version = 'unknown'; } } // Opera elseif (preg_match('/opera/i', $this->_ua)) { $result = stristr($this->_ua, 'opera'); if (preg_match('/\//', $result)) { $result = explode('/', $result); $version = explode(' ', $result[1]); $this->name = 'opera'; $this->version = $version[0]; } else { $version = explode(' ', stristr($result, 'opera')); $this->name = 'opera'; $this->version = $version[1]; } } // iPhone/iPod elseif (preg_match('/iPhone/', $this->_ua) || preg_match('/iPod/', $this->_ua)) { $result = explode('/', stristr($this->_ua, 'Version')); $this->name = 'iphone'; if (isset ($result[1])) { $version = explode(' ', $result[1]); $this->version = $version[0]; } else { $this->version = 'unknown'; } } // iPad elseif (preg_match('/iPad/', $this->_ua)) { $result = explode('/', stristr($this->_ua, 'Version')); $this->name = 'ipad'; if (isset ($result[1])) { $version = explode(' ', $result[1]); $this->version = $version[0]; } else { $this->version = 'unknown'; } } // Android elseif (preg_match('/Android/', $this->_ua)) { $result = explode('/', stristr($this->_ua, 'Version')); $this->name = 'android'; if (isset ($result[1])) { $version = explode(' ', $result[1]); $this->version = $version[0]; } else { $this->version = "unknown"; } } else { $this->name = "unknown"; $this->version = "unknown"; } } function _createChecks() { $this->_checks = array( '', // filename '-' . $this->name, // browser check '-' . $this->platform, // platform check '-' . $this->engine, // render engine '-' . $this->name . '-' . $this->platform, // browser + platform check '-' . $this->name . $this->shortversion, // short browser version check '-' . $this->name . $this->version, // longbrowser version check '-' . $this->name . $this->shortversion . '-' . $this->platform, // short browser version + platform check '-' . $this->name . $this->version . '-' . $this->platform // longbrowser version + platform check ); } function getChecks($file, $keep_path = false) { $checkfiles = array(); $ext = substr($file, strrpos($file, '.')); $path = ($keep_path)?dirname($file).DS:''; $filename = basename($file, $ext); foreach($this->_checks as $suffix){ $checkfiles[] = $path.$filename.$suffix.$ext; } return $checkfiles; } } $browser = new GantryBrowser(); $url_file_checks = $browser->getChecks($file_path, false); $template->assign_vars(array( 'BROWSER' => $url_file_checks[1], 'PLATFORM' => $url_file_checks[2], 'ENGINE' => $url_file_checks[3] ));