function browscap_get_browser in Browscap 8
Same name and namespace in other branches
- 5 browscap.module \browscap_get_browser()
- 6.2 browscap.module \browscap_get_browser()
- 6 browscap.module \browscap_get_browser()
- 7.2 browscap.module \browscap_get_browser()
- 7 browscap.module \browscap_get_browser()
Provide data about a user agent string or the current user agent.
Parameters
string $user_agent: Optional user agent string to test. If empty, use the value from the current request.
Return value
array An array of information about the user agent.
File
- ./
browscap.module, line 78 - Replacement for PHP's get_browser() function.
Code
function browscap_get_browser($user_agent = NULL) {
// Determine the current user agent if a user agent was not specified
if ($user_agent != NULL) {
$user_agent = check_plain(trim($user_agent));
}
elseif ($user_agent == NULL && isset($_SERVER['HTTP_USER_AGENT'])) {
$user_agent = check_plain(trim($_SERVER['HTTP_USER_AGENT']));
}
else {
$user_agent = 'Default Browser';
}
// Check the cache for user agent data
$cache = cache_get($user_agent, 'cache_browscap');
// Attempt to find a cached user agent
// Otherwise store the user agent data in the cache
if (!empty($cache) && $cache->created > REQUEST_TIME - 60 * 60 * 24) {
$user_agent_properties = $cache->data;
}
else {
// Find the user agent's properties
// The useragent column contains the wildcarded pattern to match against our
// full-length string while the ORDER BY chooses the most-specific matching
// pattern
$user_agent_properties = db_query("SELECT * FROM {browscap} WHERE :useragent LIKE useragent ORDER BY LENGTH(useragent) DESC", array(
':useragent' => $user_agent,
))
->fetchObject();
// Store user agent data in the cache
cache_set($user_agent, $user_agent_properties, 'cache_browscap');
}
// Create an array to hold the user agent's properties
$properties = array();
// Return an array of user agent properties
if (isset($user_agent_properties) && isset($user_agent_properties->data)) {
// Unserialize the user agent data found in the cache or the database
$properties = unserialize($user_agent_properties->data);
// Set the user agent name and name pattern
$properties['useragent'] = $user_agent;
$properties['browser_name_pattern'] = strtr($user_agent_properties->useragent, '%_', '*?');
}
else {
// Set the user agent name and name pattern to 'unrecognized'
$properties['useragent'] = 'unrecognized';
$properties['browser_name_pattern'] = strtr('unrecognized', '%_', '*?');
}
return $properties;
}