Dieser Commit ist enthalten in:
Ursprung
2b21070b1a
Commit
f7a7c71f86
1583 geänderte Dateien mit 454759 neuen und 0 gelöschten Zeilen
974
library/Zend/Http/UserAgent/AbstractDevice.php
Normale Datei
974
library/Zend/Http/UserAgent/AbstractDevice.php
Normale Datei
|
|
@ -0,0 +1,974 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
require_once 'Zend/Http/UserAgent/Device.php';
|
||||
|
||||
/**
|
||||
* Abstract Class to define a browser device.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
abstract class Zend_Http_UserAgent_AbstractDevice
|
||||
implements Zend_Http_UserAgent_Device
|
||||
{
|
||||
/**
|
||||
* Browser signature
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_browser = '';
|
||||
|
||||
/**
|
||||
* Browser version
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_browserVersion = '';
|
||||
|
||||
/**
|
||||
* Configuration
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_config;
|
||||
|
||||
/**
|
||||
* User Agent chain
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_userAgent;
|
||||
|
||||
/**
|
||||
* Server variable
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_server;
|
||||
|
||||
/**
|
||||
* Image types
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_images = array(
|
||||
'jpeg',
|
||||
'gif',
|
||||
'png',
|
||||
'pjpeg',
|
||||
'x-png',
|
||||
'bmp',
|
||||
);
|
||||
|
||||
/**
|
||||
* Browser/Device features
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_aFeatures = array();
|
||||
|
||||
/**
|
||||
* Browser/Device features groups
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_aGroup = array();
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param null|string|array $userAgent If array, restores from serialized version
|
||||
* @param array $server
|
||||
* @param array $config
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($userAgent = null, array $server = array(), array $config = array())
|
||||
{
|
||||
if (is_array($userAgent)) {
|
||||
// Restoring from serialized array
|
||||
$this->_restoreFromArray($userAgent);
|
||||
} else {
|
||||
// Constructing new object
|
||||
$this->setUserAgent($userAgent);
|
||||
$this->_server = $server;
|
||||
$this->_config = $config;
|
||||
$this->_getDefaultFeatures();
|
||||
$this->_defineFeatures();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Serialize object
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function serialize()
|
||||
{
|
||||
$spec = array(
|
||||
'_aFeatures' => $this->_aFeatures,
|
||||
'_aGroup' => $this->_aGroup,
|
||||
'_browser' => $this->_browser,
|
||||
'_browserVersion' => $this->_browserVersion,
|
||||
'_userAgent' => $this->_userAgent,
|
||||
'_images' => $this->_images,
|
||||
);
|
||||
return serialize($spec);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unserialize
|
||||
*
|
||||
* @param string $serialized
|
||||
* @return void
|
||||
*/
|
||||
public function unserialize($serialized)
|
||||
{
|
||||
$spec = unserialize($serialized);
|
||||
$this->_restoreFromArray($spec);
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore object state from array
|
||||
*
|
||||
* @param array $spec
|
||||
* @return void
|
||||
*/
|
||||
protected function _restoreFromArray(array $spec)
|
||||
{
|
||||
foreach ($spec as $key => $value) {
|
||||
if (property_exists($this, $key)) {
|
||||
$this->{$key} = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Look for features
|
||||
*
|
||||
* @return array|null
|
||||
*/
|
||||
protected function _defineFeatures()
|
||||
{
|
||||
$features = $this->_loadFeaturesAdapter();
|
||||
|
||||
if (is_array($features)) {
|
||||
$this->_aFeatures = array_merge($this->_aFeatures, $features);
|
||||
}
|
||||
|
||||
return $this->_aFeatures;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the browser type identifier
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
abstract public function getType();
|
||||
|
||||
/**
|
||||
* Check a feature for the current browser/device.
|
||||
*
|
||||
* @param string $feature The feature to check.
|
||||
* @return bool
|
||||
*/
|
||||
public function hasFeature($feature)
|
||||
{
|
||||
return (!empty($this->_aFeatures[$feature]));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the current browser/device feature
|
||||
*
|
||||
* @param string $feature Feature to search
|
||||
* @return string|null
|
||||
*/
|
||||
public function getFeature($feature)
|
||||
{
|
||||
if ($this->hasFeature($feature)) {
|
||||
return $this->_aFeatures[$feature];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a feature for the current browser/device.
|
||||
*
|
||||
* @param string $feature The feature to set.
|
||||
* @param string $value (option) feature value.
|
||||
* @param string $group (option) Group to associate with the feature
|
||||
* @return Zend_Http_UserAgent_AbstractDevice
|
||||
*/
|
||||
public function setFeature($feature, $value = false, $group = '')
|
||||
{
|
||||
$this->_aFeatures[$feature] = $value;
|
||||
if (!empty($group)) {
|
||||
$this->setGroup($group, $feature);
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Affects a feature to a group
|
||||
*
|
||||
* @param string $group Group name
|
||||
* @param string $feature Feature name
|
||||
* @return Zend_Http_UserAgent_AbstractDevice
|
||||
*/
|
||||
public function setGroup($group, $feature)
|
||||
{
|
||||
if (!isset($this->_aGroup[$group])) {
|
||||
$this->_aGroup[$group] = array();
|
||||
}
|
||||
if (!in_array($feature, $this->_aGroup[$group])) {
|
||||
$this->_aGroup[$group][] = $feature;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an array of features associated to a group
|
||||
*
|
||||
* @param string $group Group param
|
||||
* @return array
|
||||
*/
|
||||
public function getGroup($group)
|
||||
{
|
||||
return $this->_aGroup[$group];
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all the browser/device features
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getAllFeatures()
|
||||
{
|
||||
return $this->_aFeatures;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all the browser/device features' groups
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getAllGroups()
|
||||
{
|
||||
return $this->_aGroup;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets all the standard features extracted from the User Agent chain and $this->_server
|
||||
* vars
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function _getDefaultFeatures()
|
||||
{
|
||||
$server = array();
|
||||
|
||||
// gets info from user agent chain
|
||||
$uaExtract = $this->extractFromUserAgent($this->getUserAgent());
|
||||
|
||||
if (is_array($uaExtract)) {
|
||||
foreach ($uaExtract as $key => $info) {
|
||||
$this->setFeature($key, $info, 'product_info');
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($uaExtract['browser_name'])) {
|
||||
$this->_browser = $uaExtract['browser_name'];
|
||||
}
|
||||
if (isset($uaExtract['browser_version'])) {
|
||||
$this->_browserVersion = $uaExtract['browser_version'];
|
||||
}
|
||||
if (isset($uaExtract['device_os'])) {
|
||||
$this->device_os = $uaExtract['device_os_name'];
|
||||
}
|
||||
|
||||
/* browser & device info */
|
||||
$this->setFeature('is_wireless_device', false, 'product_info');
|
||||
$this->setFeature('is_mobile', false, 'product_info');
|
||||
$this->setFeature('is_desktop', false, 'product_info');
|
||||
$this->setFeature('is_tablet', false, 'product_info');
|
||||
$this->setFeature('is_bot', false, 'product_info');
|
||||
$this->setFeature('is_email', false, 'product_info');
|
||||
$this->setFeature('is_text', false, 'product_info');
|
||||
$this->setFeature('device_claims_web_support', false, 'product_info');
|
||||
|
||||
$this->setFeature('is_' . strtolower($this->getType()), true, 'product_info');
|
||||
|
||||
/* sets the browser name */
|
||||
if (isset($this->list) && empty($this->_browser)) {
|
||||
$lowerUserAgent = strtolower($this->getUserAgent());
|
||||
foreach ($this->list as $browser_signature) {
|
||||
if (strpos($lowerUserAgent, $browser_signature) !== false) {
|
||||
$this->_browser = strtolower($browser_signature);
|
||||
$this->setFeature('browser_name', $this->_browser, 'product_info');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* sets the client IP */
|
||||
if (isset($this->_server['remote_addr'])) {
|
||||
$this->setFeature('client_ip', $this->_server['remote_addr'], 'product_info');
|
||||
} elseif (isset($this->_server['http_x_forwarded_for'])) {
|
||||
$this->setFeature('client_ip', $this->_server['http_x_forwarded_for'], 'product_info');
|
||||
} elseif (isset($this->_server['http_client_ip'])) {
|
||||
$this->setFeature('client_ip', $this->_server['http_client_ip'], 'product_info');
|
||||
}
|
||||
|
||||
/* sets the server infos */
|
||||
if (isset($this->_server['server_software'])) {
|
||||
if (strpos($this->_server['server_software'], 'Apache') !== false || strpos($this->_server['server_software'], 'LiteSpeed') !== false) {
|
||||
$server['version'] = 1;
|
||||
if (strpos($this->_server['server_software'], 'Apache/2') !== false) {
|
||||
$server['version'] = 2;
|
||||
}
|
||||
$server['server'] = 'apache';
|
||||
}
|
||||
|
||||
if (strpos($this->_server['server_software'], 'Microsoft-IIS') !== false) {
|
||||
$server['server'] = 'iis';
|
||||
}
|
||||
|
||||
if (strpos($this->_server['server_software'], 'Unix') !== false) {
|
||||
$server['os'] = 'unix';
|
||||
if (isset($_ENV['MACHTYPE'])) {
|
||||
if (strpos($_ENV['MACHTYPE'], 'linux') !== false) {
|
||||
$server['os'] = 'linux';
|
||||
}
|
||||
}
|
||||
} elseif (strpos($this->_server['server_software'], 'Win') !== false) {
|
||||
$server['os'] = 'windows';
|
||||
}
|
||||
|
||||
if (preg_match('/Apache\/([0-9\.]*)/', $this->_server['server_software'], $arr)) {
|
||||
if ($arr[1]) {
|
||||
$server['version'] = $arr[1];
|
||||
$server['server'] = 'apache';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->setFeature('php_version', phpversion(), 'server_info');
|
||||
if (isset($server['server'])) {
|
||||
$this->setFeature('server_os', $server['server'], 'server_info');
|
||||
}
|
||||
if (isset($server['version'])) {
|
||||
$this->setFeature('server_os_version', $server['version'], 'server_info');
|
||||
}
|
||||
if (isset($this->_server['http_accept'])) {
|
||||
$this->setFeature('server_http_accept', $this->_server['http_accept'], 'server_info');
|
||||
}
|
||||
if (isset($this->_server['http_accept_language'])) {
|
||||
$this->setFeature('server_http_accept_language', $this->_server['http_accept_language'], 'server_info');
|
||||
}
|
||||
if (isset($this->_server['server_addr'])) {
|
||||
$this->setFeature('server_ip', $this->_server['server_addr'], 'server_info');
|
||||
}
|
||||
if (isset($this->_server['server_name'])) {
|
||||
$this->setFeature('server_name', $this->_server['server_name'], 'server_info');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract and sets informations from the User Agent chain
|
||||
*
|
||||
* @param string $userAgent User Agent chain
|
||||
* @return array
|
||||
*/
|
||||
public static function extractFromUserAgent($userAgent)
|
||||
{
|
||||
$userAgent = trim($userAgent);
|
||||
|
||||
/**
|
||||
* @see http://www.texsoft.it/index.php?c=software&m=sw.php.useragent&l=it
|
||||
*/
|
||||
$pattern = "(([^/\s]*)(/(\S*))?)(\s*\[[a-zA-Z][a-zA-Z]\])?\s*(\\((([^()]|(\\([^()]*\\)))*)\\))?\s*";
|
||||
preg_match("#^$pattern#", $userAgent, $match);
|
||||
|
||||
$comment = array();
|
||||
if (isset($match[7])) {
|
||||
$comment = explode(';', $match[7]);
|
||||
}
|
||||
|
||||
// second part if exists
|
||||
$end = substr($userAgent, strlen($match[0]));
|
||||
if (!empty($end)) {
|
||||
$result['others']['full'] = $end;
|
||||
}
|
||||
|
||||
$match2 = array();
|
||||
if (isset($result['others'])) {
|
||||
preg_match_all('/(([^\/\s]*)(\/)?([^\/\(\)\s]*)?)(\s\((([^\)]*)*)\))?/i', $result['others']['full'], $match2);
|
||||
}
|
||||
$result['user_agent'] = trim($match[1]);
|
||||
$result['product_name'] = isset($match[2]) ? trim($match[2]) : '';
|
||||
$result['browser_name'] = $result['product_name'];
|
||||
if (isset($match[4]) && trim($match[4])) {
|
||||
$result['product_version'] = trim($match[4]);
|
||||
$result['browser_version'] = trim($match[4]);
|
||||
}
|
||||
if (count($comment) && !empty($comment[0])) {
|
||||
$result['comment']['full'] = trim($match[7]);
|
||||
$result['comment']['detail'] = $comment;
|
||||
$result['compatibility_flag'] = trim($comment[0]);
|
||||
if (isset($comment[1])) {
|
||||
$result['browser_token'] = trim($comment[1]);
|
||||
}
|
||||
if (isset($comment[2])) {
|
||||
$result['device_os_token'] = trim($comment[2]);
|
||||
}
|
||||
}
|
||||
if (empty($result['device_os_token']) && !empty($result['compatibility_flag'])) {
|
||||
// some browsers do not have a platform token
|
||||
$result['device_os_token'] = $result['compatibility_flag'];
|
||||
}
|
||||
if ($match2) {
|
||||
$i = 0;
|
||||
$max = count($match2[0]);
|
||||
for ($i = 0; $i < $max; $i ++) {
|
||||
if (!empty($match2[0][$i])) {
|
||||
$result['others']['detail'][] = array(
|
||||
$match2[0][$i],
|
||||
$match2[2][$i],
|
||||
$match2[4][$i],
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Security level */
|
||||
$security = array(
|
||||
'N' => 'no security',
|
||||
'U' => 'strong security',
|
||||
'I' => 'weak security',
|
||||
);
|
||||
if (!empty($result['browser_token'])) {
|
||||
if (isset($security[$result['browser_token']])) {
|
||||
$result['security_level'] = $security[$result['browser_token']];
|
||||
unset($result['browser_token']);
|
||||
}
|
||||
}
|
||||
|
||||
$product = strtolower($result['browser_name']);
|
||||
|
||||
// Mozilla : true && false
|
||||
$compatibleOrIe = false;
|
||||
if (isset($result['compatibility_flag']) && isset($result['comment'])) {
|
||||
$compatibleOrIe = ($result['compatibility_flag'] == 'compatible' || strpos($result['comment']['full'], "MSIE") !== false);
|
||||
}
|
||||
if ($product == 'mozilla' && $compatibleOrIe) {
|
||||
if (!empty($result['browser_token'])) {
|
||||
// Classic Mozilla chain
|
||||
preg_match_all('/([^\/\s].*)(\/|\s)(.*)/i', $result['browser_token'], $real);
|
||||
} else {
|
||||
// MSIE specific chain with 'Windows' compatibility flag
|
||||
foreach ($result['comment']['detail'] as $v) {
|
||||
if (strpos($v, 'MSIE') !== false) {
|
||||
$real[0][1] = trim($v);
|
||||
$result['browser_engine'] = "MSIE";
|
||||
$real[1][0] = "Internet Explorer";
|
||||
$temp = explode(' ', trim($v));
|
||||
$real[3][0] = $temp[1];
|
||||
|
||||
}
|
||||
if (strpos($v, 'Win') !== false) {
|
||||
$result['device_os_token'] = trim($v);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($real[0])) {
|
||||
$result['browser_name'] = $real[1][0];
|
||||
$result['browser_version'] = $real[3][0];
|
||||
} else {
|
||||
$result['browser_name'] = $result['browser_token'];
|
||||
$result['browser_version'] = '??';
|
||||
}
|
||||
} elseif ($product == 'mozilla' && $result['browser_version'] < 5.0) {
|
||||
// handles the real Mozilla (or old Netscape if version < 5.0)
|
||||
$result['browser_name'] = 'Netscape';
|
||||
}
|
||||
|
||||
/** windows */
|
||||
if ($result['browser_name'] == 'MSIE') {
|
||||
$result['browser_engine'] = 'MSIE';
|
||||
$result['browser_name'] = 'Internet Explorer';
|
||||
}
|
||||
if (isset($result['device_os_token'])) {
|
||||
if (strpos($result['device_os_token'], 'Win') !== false) {
|
||||
|
||||
$windows = array(
|
||||
'Windows NT 6.1' => 'Windows 7',
|
||||
'Windows NT 6.0' => 'Windows Vista',
|
||||
'Windows NT 5.2' => 'Windows Server 2003',
|
||||
'Windows NT 5.1' => 'Windows XP',
|
||||
'Windows NT 5.01' => 'Windows 2000 SP1',
|
||||
'Windows NT 5.0' => 'Windows 2000',
|
||||
'Windows NT 4.0' => 'Microsoft Windows NT 4.0',
|
||||
'WinNT' => 'Microsoft Windows NT 4.0',
|
||||
'Windows 98; Win 9x 4.90' => 'Windows Me',
|
||||
'Windows 98' => 'Windows 98',
|
||||
'Win98' => 'Windows 98',
|
||||
'Windows 95' => 'Windows 95',
|
||||
'Win95' => 'Windows 95',
|
||||
'Windows CE' => 'Windows CE',
|
||||
);
|
||||
if (isset($windows[$result['device_os_token']])) {
|
||||
$result['device_os_name'] = $windows[$result['device_os_token']];
|
||||
} else {
|
||||
$result['device_os_name'] = $result['device_os_token'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// iphone
|
||||
$apple_device = array(
|
||||
'iPhone',
|
||||
'iPod',
|
||||
'iPad',
|
||||
);
|
||||
if (isset($result['compatibility_flag'])) {
|
||||
if (in_array($result['compatibility_flag'], $apple_device)) {
|
||||
$result['device'] = strtolower($result['compatibility_flag']);
|
||||
$result['device_os_token'] = 'iPhone OS';
|
||||
$result['browser_language'] = trim($comment[3]);
|
||||
$result['browser_version'] = $result['others']['detail'][1][2];
|
||||
if (!empty($result['others']['detail'][2])) {
|
||||
$result['firmware'] = $result['others']['detail'][2][2];
|
||||
}
|
||||
if (!empty($result['others']['detail'][3])) {
|
||||
$result['browser_name'] = $result['others']['detail'][3][1];
|
||||
$result['browser_build'] = $result['others']['detail'][3][2];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Safari
|
||||
if (isset($result['others'])) {
|
||||
if ($result['others']['detail'][0][1] == 'AppleWebKit') {
|
||||
$result['browser_engine'] = 'AppleWebKit';
|
||||
if ($result['others']['detail'][1][1] == 'Version') {
|
||||
$result['browser_version'] = $result['others']['detail'][1][2];
|
||||
} else {
|
||||
$result['browser_version'] = $result['others']['detail'][count($result['others']['detail']) - 1][2];
|
||||
}
|
||||
if (isset($comment[3])) {
|
||||
$result['browser_language'] = trim($comment[3]);
|
||||
}
|
||||
|
||||
$last = $result['others']['detail'][count($result['others']['detail']) - 1][1];
|
||||
|
||||
if (empty($result['others']['detail'][2][1]) || $result['others']['detail'][2][1] == 'Safari') {
|
||||
$result['browser_name'] = ($result['others']['detail'][1][1] && $result['others']['detail'][1][1] != 'Version' ? $result['others']['detail'][1][1] : 'Safari');
|
||||
$result['browser_version'] = ($result['others']['detail'][1][2] ? $result['others']['detail'][1][2] : $result['others']['detail'][0][2]);
|
||||
} else {
|
||||
$result['browser_name'] = $result['others']['detail'][2][1];
|
||||
$result['browser_version'] = $result['others']['detail'][2][2];
|
||||
|
||||
// mobile version
|
||||
if ($result['browser_name'] == 'Mobile') {
|
||||
$result['browser_name'] = 'Safari ' . $result['browser_name'];
|
||||
if ($result['others']['detail'][1][1] == 'Version') {
|
||||
$result['browser_version'] = $result['others']['detail'][1][2];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// For Safari < 2.2, AppleWebKit version gives the Safari version
|
||||
if (strpos($result['browser_version'], '.') > 2 || (int) $result['browser_version'] > 20) {
|
||||
$temp = explode('.', $result['browser_version']);
|
||||
$build = (int) $temp[0];
|
||||
$awkVersion = array(
|
||||
48 => '0.8',
|
||||
73 => '0.9',
|
||||
85 => '1.0',
|
||||
103 => '1.1',
|
||||
124 => '1.2',
|
||||
300 => '1.3',
|
||||
400 => '2.0',
|
||||
);
|
||||
foreach ($awkVersion as $k => $v) {
|
||||
if ($build >= $k) {
|
||||
$result['browser_version'] = $v;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Gecko (Firefox or compatible)
|
||||
if ($result['others']['detail'][0][1] == 'Gecko') {
|
||||
$searchRV = true;
|
||||
if (!empty($result['others']['detail'][1][1]) && !empty($result['others']['detail'][count($result['others']['detail']) - 1][2]) || strpos(strtolower($result['others']['full']), 'opera') !== false) {
|
||||
$searchRV = false;
|
||||
$result['browser_engine'] = $result['others']['detail'][0][1];
|
||||
|
||||
// the name of the application is at the end indepenently
|
||||
// of quantity of information in $result['others']['detail']
|
||||
$last = count($result['others']['detail']) - 1;
|
||||
|
||||
// exception : if the version of the last information is
|
||||
// empty we take the previous one
|
||||
if (empty($result['others']['detail'][$last][2])) {
|
||||
$last --;
|
||||
}
|
||||
|
||||
// exception : if the last one is 'Red Hat' or 'Debian' =>
|
||||
// use rv: to find browser_version */
|
||||
if (in_array($result['others']['detail'][$last][1], array(
|
||||
'Debian',
|
||||
'Hat',
|
||||
))) {
|
||||
$searchRV = true;
|
||||
}
|
||||
$result['browser_name'] = $result['others']['detail'][$last][1];
|
||||
$result['browser_version'] = $result['others']['detail'][$last][2];
|
||||
if (isset($comment[4])) {
|
||||
$result['browser_build'] = trim($comment[4]);
|
||||
}
|
||||
$result['browser_language'] = trim($comment[3]);
|
||||
|
||||
// Netscape
|
||||
if ($result['browser_name'] == 'Navigator' || $result['browser_name'] == 'Netscape6') {
|
||||
$result['browser_name'] = 'Netscape';
|
||||
}
|
||||
}
|
||||
if ($searchRV) {
|
||||
// Mozilla alone : the version is identified by rv:
|
||||
$result['browser_name'] = 'Mozilla';
|
||||
if (isset($result['comment']['detail'])) {
|
||||
foreach ($result['comment']['detail'] as $rv) {
|
||||
if (strpos($rv, 'rv:') !== false) {
|
||||
$result['browser_version'] = trim(str_replace('rv:', '', $rv));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Netscape
|
||||
if ($result['others']['detail'][0][1] == 'Netscape') {
|
||||
$result['browser_name'] = 'Netscape';
|
||||
$result['browser_version'] = $result['others']['detail'][0][2];
|
||||
}
|
||||
|
||||
// Opera
|
||||
// Opera: engine Presto
|
||||
if ($result['others']['detail'][0][1] == 'Presto') {
|
||||
$result['browser_engine'] = 'Presto';
|
||||
if (!empty($result['others']['detail'][1][2])) {
|
||||
$result['browser_version'] = $result['others']['detail'][1][2];
|
||||
}
|
||||
}
|
||||
|
||||
// UA ends with 'Opera X.XX'
|
||||
if ($result['others']['detail'][0][1] == 'Opera') {
|
||||
$result['browser_name'] = $result['others']['detail'][0][1];
|
||||
$result['browser_version'] = $result['others']['detail'][1][1];
|
||||
}
|
||||
|
||||
// Opera Mini
|
||||
if (isset($result["browser_token"])) {
|
||||
if (strpos($result["browser_token"], 'Opera Mini') !== false) {
|
||||
$result['browser_name'] = 'Opera Mini';
|
||||
}
|
||||
}
|
||||
|
||||
// Symbian
|
||||
if ($result['others']['detail'][0][1] == 'SymbianOS') {
|
||||
$result['device_os_token'] = 'SymbianOS';
|
||||
}
|
||||
}
|
||||
|
||||
// UA ends with 'Opera X.XX'
|
||||
if (isset($result['browser_name']) && isset($result['browser_engine'])) {
|
||||
if ($result['browser_name'] == 'Opera' && $result['browser_engine'] == 'Gecko' && empty($result['browser_version'])) {
|
||||
$result['browser_version'] = $result['others']['detail'][count($result['others']['detail']) - 1][1];
|
||||
}
|
||||
}
|
||||
|
||||
// cleanup
|
||||
if (isset($result['browser_version']) && isset($result['browser_build'])) {
|
||||
if ($result['browser_version'] == $result['browser_build']) {
|
||||
unset($result['browser_build']);
|
||||
}
|
||||
}
|
||||
|
||||
// compatibility
|
||||
$compatibility['AppleWebKit'] = 'Safari';
|
||||
$compatibility['Gecko'] = 'Firefox';
|
||||
$compatibility['MSIE'] = 'Internet Explorer';
|
||||
$compatibility['Presto'] = 'Opera';
|
||||
if (!empty($result['browser_engine'])) {
|
||||
if (isset($compatibility[$result['browser_engine']])) {
|
||||
$result['browser_compatibility'] = $compatibility[$result['browser_engine']];
|
||||
}
|
||||
}
|
||||
|
||||
ksort($result);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the Features Adapter if it's defined in the $config array
|
||||
* Otherwise, nothing is done
|
||||
*
|
||||
* @param string $browserType Browser type
|
||||
* @return array
|
||||
*/
|
||||
protected function _loadFeaturesAdapter()
|
||||
{
|
||||
$config = $this->_config;
|
||||
$browserType = $this->getType();
|
||||
if (!isset($config[$browserType]) || !isset($config[$browserType]['features'])) {
|
||||
return array();
|
||||
}
|
||||
$config = $config[$browserType]['features'];
|
||||
|
||||
if (empty($config['classname'])) {
|
||||
require_once 'Zend/Http/UserAgent/Exception.php';
|
||||
throw new Zend_Http_UserAgent_Exception('The ' . $this->getType() . ' features adapter must have a "classname" config parameter defined');
|
||||
}
|
||||
|
||||
$className = $config['classname'];
|
||||
if (!class_exists($className)) {
|
||||
if (isset($config['path'])) {
|
||||
$path = $config['path'];
|
||||
} else {
|
||||
require_once 'Zend/Http/UserAgent/Exception.php';
|
||||
throw new Zend_Http_UserAgent_Exception('The ' . $this->getType() . ' features adapter must have a "path" config parameter defined');
|
||||
}
|
||||
|
||||
if (false === include_once ($path)) {
|
||||
require_once 'Zend/Http/UserAgent/Exception.php';
|
||||
throw new Zend_Http_UserAgent_Exception('The ' . $this->getType() . ' features adapter path that does not exist');
|
||||
}
|
||||
}
|
||||
|
||||
return call_user_func(array($className, 'getFromRequest'), $this->_server, $this->_config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve image format support
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getImageFormatSupport()
|
||||
{
|
||||
return $this->_images;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get maximum image height supported by this device
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getMaxImageHeight()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get maximum image width supported by this device
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getMaxImageWidth()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get physical screen height of this device
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getPhysicalScreenHeight()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get physical screen width of this device
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getPhysicalScreenWidth()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get preferred markup type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPreferredMarkup()
|
||||
{
|
||||
return 'xhtml';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get supported X/HTML version
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getXhtmlSupportLevel()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the device support Flash?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasFlashSupport()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the device support PDF?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasPdfSupport()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the device have a phone number associated with it?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasPhoneNumber()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the device support HTTPS?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function httpsSupport()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the browser type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getBrowser()
|
||||
{
|
||||
return $this->_browser;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the browser version
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getBrowserVersion()
|
||||
{
|
||||
return $this->_browserVersion;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the user agent string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getUserAgent()
|
||||
{
|
||||
return $this->_userAgent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the $_images
|
||||
*/
|
||||
public function getImages()
|
||||
{
|
||||
return $this->_images;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $browser
|
||||
*/
|
||||
public function setBrowser($browser)
|
||||
{
|
||||
$this->_browser = $browser;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $browserVersion
|
||||
*/
|
||||
public function setBrowserVersion($browserVersion)
|
||||
{
|
||||
$this->_browserVersion = $browserVersion;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $userAgent
|
||||
*/
|
||||
public function setUserAgent($userAgent)
|
||||
{
|
||||
$this->_userAgent = $userAgent;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $_images
|
||||
*/
|
||||
public function setImages($_images)
|
||||
{
|
||||
$this->_images = $_images;
|
||||
}
|
||||
|
||||
/**
|
||||
* Match a user agent string against a list of signatures
|
||||
*
|
||||
* @param string $userAgent
|
||||
* @param array $signatures
|
||||
* @return bool
|
||||
*/
|
||||
protected static function _matchAgentAgainstSignatures($userAgent, $signatures)
|
||||
{
|
||||
$userAgent = strtolower($userAgent);
|
||||
foreach ($signatures as $signature) {
|
||||
if (!empty($signature)) {
|
||||
if (strpos($userAgent, $signature) !== false) {
|
||||
// Browser signature was found in user agent string
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
129
library/Zend/Http/UserAgent/Bot.php
Normale Datei
129
library/Zend/Http/UserAgent/Bot.php
Normale Datei
|
|
@ -0,0 +1,129 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
require_once 'Zend/Http/UserAgent/AbstractDevice.php';
|
||||
|
||||
/**
|
||||
* Bot browser type matcher
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
class Zend_Http_UserAgent_Bot extends Zend_Http_UserAgent_AbstractDevice
|
||||
{
|
||||
|
||||
/**
|
||||
* User Agent Signatures
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $_uaSignatures = array(
|
||||
// The most common ones.
|
||||
'googlebot',
|
||||
'msnbot',
|
||||
'slurp',
|
||||
'yahoo',
|
||||
|
||||
// The rest, alphabetically.
|
||||
'alexa',
|
||||
'appie',
|
||||
'archiver',
|
||||
'ask jeeves',
|
||||
'baiduspider',
|
||||
'bot',
|
||||
'crawl',
|
||||
'crawler',
|
||||
'curl',
|
||||
'eventbox',
|
||||
'facebookexternal',
|
||||
'fast',
|
||||
'feedfetcher-google',
|
||||
'firefly',
|
||||
'froogle',
|
||||
'gigabot',
|
||||
'girafabot',
|
||||
'google',
|
||||
'htdig',
|
||||
'infoseek',
|
||||
'inktomi',
|
||||
'java',
|
||||
'larbin',
|
||||
'looksmart',
|
||||
'mechanize',
|
||||
'mediapartners-google',
|
||||
'monitor',
|
||||
'nambu',
|
||||
'nationaldirectory',
|
||||
'novarra',
|
||||
'pear',
|
||||
'perl',
|
||||
'python',
|
||||
'rabaz',
|
||||
'radian',
|
||||
'rankivabot',
|
||||
'scooter',
|
||||
'sogou web spider',
|
||||
'spade',
|
||||
'sphere',
|
||||
'spider',
|
||||
'technoratisnoop',
|
||||
'tecnoseek',
|
||||
'teoma',
|
||||
'toolbar',
|
||||
'transcoder',
|
||||
'twitt',
|
||||
'url_spider_sql',
|
||||
'webalta crawler',
|
||||
'webbug',
|
||||
'webfindbot',
|
||||
'wordpress',
|
||||
'www.galaxy.com',
|
||||
'yahoo! searchmonkey',
|
||||
'yahoo! slurp',
|
||||
'yandex',
|
||||
'zyborg',
|
||||
);
|
||||
|
||||
/**
|
||||
* Comparison of the UserAgent chain and browser signatures
|
||||
*
|
||||
* @param string $userAgent User Agent chain
|
||||
* @param array $server $_SERVER like param
|
||||
* @return bool
|
||||
*/
|
||||
public static function match($userAgent, $server)
|
||||
{
|
||||
return self::_matchAgentAgainstSignatures($userAgent, self::$_uaSignatures);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gives the current browser type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return 'bot';
|
||||
}
|
||||
}
|
||||
76
library/Zend/Http/UserAgent/Checker.php
Normale Datei
76
library/Zend/Http/UserAgent/Checker.php
Normale Datei
|
|
@ -0,0 +1,76 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
require_once 'Zend/Http/UserAgent/Desktop.php';
|
||||
|
||||
/**
|
||||
* Checker browser type matcher
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
class Zend_Http_UserAgent_Checker extends Zend_Http_UserAgent_Desktop
|
||||
{
|
||||
|
||||
/**
|
||||
* User Agent Signatures
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $_uaSignatures = array(
|
||||
'abilogic',
|
||||
'checklink',
|
||||
'checker',
|
||||
'linksmanager',
|
||||
'mojoo',
|
||||
'notifixious',
|
||||
'ploetz',
|
||||
'zeller',
|
||||
'sitebar',
|
||||
'xenu',
|
||||
'sleuth',
|
||||
);
|
||||
|
||||
/**
|
||||
* Comparison of the UserAgent chain and User Agent signatures
|
||||
*
|
||||
* @param string $userAgent User Agent chain
|
||||
* @param array $server $_SERVER like param
|
||||
* @return bool
|
||||
*/
|
||||
public static function match($userAgent, $server)
|
||||
{
|
||||
return self::_matchAgentAgainstSignatures($userAgent, self::$_uaSignatures);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gives the current browser type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return 'bot';
|
||||
}
|
||||
}
|
||||
67
library/Zend/Http/UserAgent/Console.php
Normale Datei
67
library/Zend/Http/UserAgent/Console.php
Normale Datei
|
|
@ -0,0 +1,67 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
require_once 'Zend/Http/UserAgent/Desktop.php';
|
||||
|
||||
/**
|
||||
* Console browser type matcher
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Console extends Zend_Http_UserAgent_Desktop
|
||||
{
|
||||
/**
|
||||
* User Agent Signatures
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $_uaSignatures = array(
|
||||
'playstation',
|
||||
'wii',
|
||||
'libnup',
|
||||
);
|
||||
|
||||
/**
|
||||
* Comparison of the UserAgent chain and User Agent signatures
|
||||
*
|
||||
* @param string $userAgent User Agent chain
|
||||
* @param array $server $_SERVER like param
|
||||
* @return bool
|
||||
*/
|
||||
public static function match($userAgent, $server)
|
||||
{
|
||||
return self::_matchAgentAgainstSignatures($userAgent, self::$_uaSignatures);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gives the current browser type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return 'console';
|
||||
}
|
||||
}
|
||||
56
library/Zend/Http/UserAgent/Desktop.php
Normale Datei
56
library/Zend/Http/UserAgent/Desktop.php
Normale Datei
|
|
@ -0,0 +1,56 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
require_once 'Zend/Http/UserAgent/AbstractDevice.php';
|
||||
|
||||
/**
|
||||
* Desktop browser type matcher
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Browser
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Desktop extends Zend_Http_UserAgent_AbstractDevice
|
||||
{
|
||||
|
||||
/**
|
||||
* Used by default : must be always true
|
||||
*
|
||||
* @param string $userAgent User Agent chain
|
||||
* @param array $server $_SERVER like param
|
||||
* @return bool
|
||||
*/
|
||||
public static function match($userAgent, $server)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gives the current browser type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return 'desktop';
|
||||
}
|
||||
}
|
||||
200
library/Zend/Http/UserAgent/Device.php
Normale Datei
200
library/Zend/Http/UserAgent/Device.php
Normale Datei
|
|
@ -0,0 +1,200 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
/**
|
||||
* Interface defining a browser device type.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_Http_UserAgent_Device extends Serializable
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* Allows injecting user agent, server array, and/or config array. If an
|
||||
* array is provided for the first argument, the assumption should be that
|
||||
* the device object is being seeded with cached values from serialization.
|
||||
*
|
||||
* @param null|string|array $userAgent
|
||||
* @param array $server
|
||||
* @param array $config
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($userAgent = null, array $server = array(), array $config = array());
|
||||
|
||||
/**
|
||||
* Attempt to match the user agent
|
||||
*
|
||||
* Return either an array of browser signature strings, or a boolean.
|
||||
*
|
||||
* @param string $userAgent
|
||||
* @param array $server
|
||||
* @return bool|array
|
||||
*/
|
||||
public static function match($userAgent, $server);
|
||||
|
||||
/**
|
||||
* Get all browser/device features
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getAllFeatures();
|
||||
|
||||
/**
|
||||
* Get all of the browser/device's features' groups
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function getAllGroups();
|
||||
|
||||
/**
|
||||
* Whether or not the device has a given feature
|
||||
*
|
||||
* @param string $feature
|
||||
* @return bool
|
||||
*/
|
||||
public function hasFeature($feature);
|
||||
|
||||
/**
|
||||
* Get the value of a specific device feature
|
||||
*
|
||||
* @param string $feature
|
||||
* @return mixed
|
||||
*/
|
||||
public function getFeature($feature);
|
||||
|
||||
/**
|
||||
* Get the browser type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getBrowser();
|
||||
|
||||
/**
|
||||
* Retrurn the browser version
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getBrowserVersion();
|
||||
|
||||
/**
|
||||
* Get an array of features associated with a group
|
||||
*
|
||||
* @param string $group
|
||||
* @return array
|
||||
*/
|
||||
public function getGroup($group);
|
||||
|
||||
/**
|
||||
* Retrieve image format support
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getImageFormatSupport();
|
||||
|
||||
/**
|
||||
* Get image types
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getImages();
|
||||
|
||||
/**
|
||||
* Get the maximum image height supported by this device
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getMaxImageHeight();
|
||||
|
||||
/**
|
||||
* Get the maximum image width supported by this device
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getMaxImageWidth();
|
||||
|
||||
/**
|
||||
* Get the physical screen height of this device
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getPhysicalScreenHeight();
|
||||
|
||||
/**
|
||||
* Get the physical screen width of this device
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getPhysicalScreenWidth();
|
||||
|
||||
/**
|
||||
* Get the preferred markup type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPreferredMarkup();
|
||||
|
||||
/**
|
||||
* Get the user agent string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getUserAgent();
|
||||
|
||||
/**
|
||||
* Get supported X/HTML version
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getXhtmlSupportLevel();
|
||||
|
||||
/**
|
||||
* Does the device support Flash?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasFlashSupport();
|
||||
|
||||
/**
|
||||
* Does the device support PDF?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasPdfSupport();
|
||||
|
||||
/**
|
||||
* Does the device have a phone number associated with it?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasPhoneNumber();
|
||||
|
||||
/**
|
||||
* Does the device support HTTPS?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function httpsSupport();
|
||||
}
|
||||
65
library/Zend/Http/UserAgent/Email.php
Normale Datei
65
library/Zend/Http/UserAgent/Email.php
Normale Datei
|
|
@ -0,0 +1,65 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
require_once 'Zend/Http/UserAgent/Desktop.php';
|
||||
|
||||
/**
|
||||
* Email browser type matcher
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Email extends Zend_Http_UserAgent_Desktop
|
||||
{
|
||||
/**
|
||||
* User Agent Signatures
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $_uaSignatures = array(
|
||||
'thunderbird',
|
||||
);
|
||||
|
||||
/**
|
||||
* Comparison of the UserAgent chain and User Agent signatures
|
||||
*
|
||||
* @param string $userAgent User Agent chain
|
||||
* @param array $server $_SERVER like param
|
||||
* @return bool
|
||||
*/
|
||||
public static function match($userAgent, $server)
|
||||
{
|
||||
return self::_matchAgentAgainstSignatures($userAgent, self::$_uaSignatures);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gives the current browser type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return 'email';
|
||||
}
|
||||
}
|
||||
36
library/Zend/Http/UserAgent/Exception.php
Normale Datei
36
library/Zend/Http/UserAgent/Exception.php
Normale Datei
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_Exception
|
||||
*/
|
||||
require_once 'Zend/Exception.php';
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Exception extends Zend_Exception
|
||||
{
|
||||
}
|
||||
39
library/Zend/Http/UserAgent/Features/Adapter.php
Normale Datei
39
library/Zend/Http/UserAgent/Features/Adapter.php
Normale Datei
|
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
/**
|
||||
* The interface required by all Zend_Browser_Features Adapter classes to implement.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_Http_UserAgent_Features_Adapter
|
||||
{
|
||||
/**
|
||||
* Retrieve the browser's features from a given request object ($_SERVER)
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getFromRequest($request, array $config);
|
||||
}
|
||||
78
library/Zend/Http/UserAgent/Features/Adapter/DeviceAtlas.php
Normale Datei
78
library/Zend/Http/UserAgent/Features/Adapter/DeviceAtlas.php
Normale Datei
|
|
@ -0,0 +1,78 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_Http_UserAgent_Features_Adapter_Interface
|
||||
*/
|
||||
require_once 'Zend/Http/UserAgent/Features/Adapter.php';
|
||||
|
||||
/**
|
||||
* Features adapter build with the Tera Wurfl Api
|
||||
* See installation instruction here : http://deviceatlas.com/licences
|
||||
* Download : http://deviceatlas.com/getAPI/php
|
||||
*
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Features_Adapter_DeviceAtlas implements Zend_Http_UserAgent_Features_Adapter
|
||||
{
|
||||
/**
|
||||
* Get features from request
|
||||
*
|
||||
* @param array $request $_SERVER variable
|
||||
* @return array
|
||||
*/
|
||||
public static function getFromRequest($request, array $config)
|
||||
{
|
||||
if (!class_exists('Mobi_Mtld_DA_Api')) {
|
||||
if (!isset($config['deviceatlas'])) {
|
||||
require_once 'Zend/Http/UserAgent/Features/Exception.php';
|
||||
throw new Zend_Http_UserAgent_Features_Exception('"DeviceAtlas" configuration is not defined');
|
||||
}
|
||||
}
|
||||
|
||||
$config = $config['deviceatlas'];
|
||||
|
||||
if (!class_exists('Mobi_Mtld_DA_Api')) {
|
||||
if (empty($config['deviceatlas_lib_dir'])) {
|
||||
require_once 'Zend/Http/UserAgent/Features/Exception.php';
|
||||
throw new Zend_Http_UserAgent_Features_Exception('The "deviceatlas_lib_dir" parameter is not defined');
|
||||
}
|
||||
|
||||
// Include the Device Atlas file from the specified lib_dir
|
||||
require_once ($config['deviceatlas_lib_dir'] . '/Mobi/Mtld/DA/Api.php');
|
||||
}
|
||||
|
||||
if (empty($config['deviceatlas_data'])) {
|
||||
require_once 'Zend/Http/UserAgent/Features/Exception.php';
|
||||
throw new Zend_Http_UserAgent_Features_Exception('The "deviceatlas_data" parameter is not defined');
|
||||
}
|
||||
|
||||
//load the device data-tree : e.g. 'json/DeviceAtlas.json
|
||||
$tree = Mobi_Mtld_DA_Api::getTreeFromFile($config['deviceatlas_data']);
|
||||
|
||||
$properties = Mobi_Mtld_DA_Api::getProperties($tree, $request['http_user_agent']);
|
||||
|
||||
return $properties;
|
||||
}
|
||||
}
|
||||
102
library/Zend/Http/UserAgent/Features/Adapter/TeraWurfl.php
Normale Datei
102
library/Zend/Http/UserAgent/Features/Adapter/TeraWurfl.php
Normale Datei
|
|
@ -0,0 +1,102 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_Http_UserAgent_Features_Adapter_Interface
|
||||
*/
|
||||
require_once 'Zend/Http/UserAgent/Features/Adapter.php';
|
||||
|
||||
/**
|
||||
* Features adapter build with the Tera Wurfl Api
|
||||
* See installation instruction here : http://www.tera-wurfl.com/wiki/index.php/Installation
|
||||
* Download : http://www.tera-wurfl.com/wiki/index.php/Downloads
|
||||
*
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Features_Adapter_TeraWurfl implements Zend_Http_UserAgent_Features_Adapter
|
||||
{
|
||||
/**
|
||||
* Get features from request
|
||||
*
|
||||
* @param array $request $_SERVER variable
|
||||
* @return array
|
||||
*/
|
||||
public static function getFromRequest($request, array $config)
|
||||
{
|
||||
if (!class_exists('TeraWurfl')) {
|
||||
// If TeraWurfl class not found, see if we can load it from
|
||||
// configuration
|
||||
//
|
||||
if (!isset($config['terawurfl'])) {
|
||||
// No configuration
|
||||
require_once 'Zend/Http/UserAgent/Features/Exception.php';
|
||||
throw new Zend_Http_UserAgent_Features_Exception('"TeraWurfl" configuration is not defined');
|
||||
}
|
||||
|
||||
$config = $config['terawurfl'];
|
||||
|
||||
if (empty($config['terawurfl_lib_dir'])) {
|
||||
// No lib_dir given
|
||||
require_once 'Zend/Http/UserAgent/Features/Exception.php';
|
||||
throw new Zend_Http_UserAgent_Features_Exception('The "terawurfl_lib_dir" parameter is not defined');
|
||||
}
|
||||
|
||||
// Include the Tera-WURFL file
|
||||
require_once ($config['terawurfl_lib_dir'] . '/TeraWurfl.php');
|
||||
}
|
||||
|
||||
|
||||
// instantiate the Tera-WURFL object
|
||||
$wurflObj = new TeraWurfl();
|
||||
|
||||
// Get the capabilities of the current client.
|
||||
$matched = $wurflObj->getDeviceCapabilitiesFromRequest(array_change_key_case($request, CASE_UPPER));
|
||||
|
||||
return self::getAllCapabilities($wurflObj);
|
||||
}
|
||||
|
||||
/***
|
||||
* Builds an array with all capabilities
|
||||
*
|
||||
* @param TeraWurfl $wurflObj TeraWurfl object
|
||||
*/
|
||||
public static function getAllCapabilities(TeraWurfl $wurflObj)
|
||||
{
|
||||
|
||||
foreach ($wurflObj->capabilities as $group) {
|
||||
if (!is_array($group)) {
|
||||
continue;
|
||||
}
|
||||
while (list ($key, $value) = each($group)) {
|
||||
if (is_bool($value)) {
|
||||
// to have the same type than the official WURFL API
|
||||
$features[$key] = ($value ? 'true' : 'false');
|
||||
} else {
|
||||
$features[$key] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $features;
|
||||
}
|
||||
}
|
||||
103
library/Zend/Http/UserAgent/Features/Adapter/WurflApi.php
Normale Datei
103
library/Zend/Http/UserAgent/Features/Adapter/WurflApi.php
Normale Datei
|
|
@ -0,0 +1,103 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_Http_UserAgent_Features_Adapter_Interface
|
||||
*/
|
||||
require_once 'Zend/Http/UserAgent/Features/Adapter.php';
|
||||
|
||||
/**
|
||||
* Features adapter build with the official WURFL PHP API
|
||||
* See installation instruction here : http://wurfl.sourceforge.net/nphp/
|
||||
* Download : http://sourceforge.net/projects/wurfl/files/WURFL PHP/1.1/wurfl-php-1.1.tar.gz/download
|
||||
*
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Features_Adapter_WurflApi
|
||||
implements Zend_Http_UserAgent_Features_Adapter
|
||||
{
|
||||
const DEFAULT_API_VERSION = '1.1';
|
||||
|
||||
/**
|
||||
* Get features from request
|
||||
*
|
||||
* @param array $request $_SERVER variable
|
||||
* @return array
|
||||
*/
|
||||
public static function getFromRequest($request, array $config)
|
||||
{
|
||||
if (!isset($config['wurflapi'])) {
|
||||
require_once 'Zend/Http/UserAgent/Features/Exception.php';
|
||||
throw new Zend_Http_UserAgent_Features_Exception('"wurflapi" configuration is not defined');
|
||||
}
|
||||
|
||||
$config = $config['wurflapi'];
|
||||
|
||||
if (empty($config['wurfl_lib_dir'])) {
|
||||
require_once 'Zend/Http/UserAgent/Features/Exception.php';
|
||||
throw new Zend_Http_UserAgent_Features_Exception('The "wurfl_lib_dir" parameter is not defined');
|
||||
}
|
||||
if (empty($config['wurfl_config_file']) && empty($config['wurfl_config_array'])) {
|
||||
require_once 'Zend/Http/UserAgent/Features/Exception.php';
|
||||
throw new Zend_Http_UserAgent_Features_Exception('The "wurfl_config_file" parameter is not defined');
|
||||
}
|
||||
|
||||
if (empty($config['wurfl_api_version'])) {
|
||||
$config['wurfl_api_version'] = self::DEFAULT_API_VERSION;
|
||||
}
|
||||
|
||||
switch ($config['wurfl_api_version']) {
|
||||
case '1.0':
|
||||
// Zend_Http_UserAgent::$config['wurfl_config_file'] must be an XML file
|
||||
require_once ($config['wurfl_lib_dir'] . 'WURFLManagerProvider.php');
|
||||
$wurflManager = WURFL_WURFLManagerProvider::getWURFLManager(Zend_Http_UserAgent::$config['wurfl_config_file']);
|
||||
break;
|
||||
case '1.1':
|
||||
require_once ($config['wurfl_lib_dir'] . 'Application.php');
|
||||
if (!empty($config['wurfl_config_file'])) {
|
||||
$wurflConfig = WURFL_Configuration_ConfigFactory::create($config['wurfl_config_file']);
|
||||
} elseif (!empty($config['wurfl_config_array'])) {
|
||||
$c = $config['wurfl_config_array'];
|
||||
$wurflConfig = new WURFL_Configuration_InMemoryConfig();
|
||||
$wurflConfig->wurflFile($c['wurfl']['main-file'])
|
||||
->wurflPatch($c['wurfl']['patches'])
|
||||
->persistence($c['persistence']['provider'], $c['persistence']['dir']);
|
||||
}
|
||||
|
||||
$wurflManagerFactory = new WURFL_WURFLManagerFactory($wurflConfig);
|
||||
$wurflManager = $wurflManagerFactory->create();
|
||||
break;
|
||||
default:
|
||||
require_once 'Zend/Http/UserAgent/Features/Exception.php';
|
||||
throw new Zend_Http_UserAgent_Features_Exception(sprintf(
|
||||
'Unknown API version "%s"',
|
||||
$config['wurfl_api_version']
|
||||
));
|
||||
}
|
||||
|
||||
$device = $wurflManager->getDeviceForHttpRequest(array_change_key_case($request, CASE_UPPER));
|
||||
$features = $device->getAllCapabilities();
|
||||
return $features;
|
||||
}
|
||||
}
|
||||
36
library/Zend/Http/UserAgent/Features/Exception.php
Normale Datei
36
library/Zend/Http/UserAgent/Features/Exception.php
Normale Datei
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Browser_Exception
|
||||
*/
|
||||
require_once 'Zend/Http/UserAgent/Exception.php';
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Features_Exception extends Zend_Http_UserAgent_Exception
|
||||
{
|
||||
}
|
||||
81
library/Zend/Http/UserAgent/Feed.php
Normale Datei
81
library/Zend/Http/UserAgent/Feed.php
Normale Datei
|
|
@ -0,0 +1,81 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
require_once 'Zend/Http/UserAgent/AbstractDevice.php';
|
||||
|
||||
/**
|
||||
* Feed browser type matcher
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Feed extends Zend_Http_UserAgent_AbstractDevice
|
||||
{
|
||||
/**
|
||||
* User Agent Signatures
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $_uaSignatures = array(
|
||||
'bloglines',
|
||||
'everyfeed',
|
||||
'feedfetcher',
|
||||
'gregarius',
|
||||
);
|
||||
|
||||
/**
|
||||
* Comparison of the UserAgent chain and User Agent signatures
|
||||
*
|
||||
* @param string $userAgent User Agent chain
|
||||
* @param array $server $_SERVER like param
|
||||
* @return bool
|
||||
*/
|
||||
public static function match($userAgent, $server)
|
||||
{
|
||||
return self::_matchAgentAgainstSignatures($userAgent, self::$_uaSignatures);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gives the current browser type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return 'feed';
|
||||
}
|
||||
|
||||
/**
|
||||
* Look for features
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function _defineFeatures()
|
||||
{
|
||||
$this->setFeature('iframes', false, 'product_capability');
|
||||
$this->setFeature('frames', false, 'product_capability');
|
||||
$this->setFeature('javascript', false, 'product_capability');
|
||||
return parent::_defineFeatures();
|
||||
}
|
||||
}
|
||||
538
library/Zend/Http/UserAgent/Mobile.php
Normale Datei
538
library/Zend/Http/UserAgent/Mobile.php
Normale Datei
|
|
@ -0,0 +1,538 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
require_once 'Zend/Http/UserAgent/AbstractDevice.php';
|
||||
|
||||
/**
|
||||
* Mobile browser type matcher
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Mobile extends Zend_Http_UserAgent_AbstractDevice
|
||||
{
|
||||
|
||||
const DEFAULT_FEATURES_ADAPTER_CLASSNAME = 'Zend_Http_UserAgent_Features_Adapter_WurflApi';
|
||||
|
||||
const DEFAULT_FEATURES_ADAPTER_PATH = 'Zend/Http/UserAgent/Features/Adapter/WurflApi.php';
|
||||
|
||||
/**
|
||||
* User Agent Signatures
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $_uaSignatures = array(
|
||||
'iphone',
|
||||
'ipod',
|
||||
'ipad',
|
||||
'android',
|
||||
'blackberry',
|
||||
'opera mini',
|
||||
'opera mobi',
|
||||
'palm',
|
||||
'palmos',
|
||||
'elaine',
|
||||
'windows ce',
|
||||
'icab',
|
||||
'_mms',
|
||||
'ahong',
|
||||
'archos',
|
||||
'armv',
|
||||
'astel',
|
||||
'avantgo',
|
||||
'benq',
|
||||
'blazer',
|
||||
'brew',
|
||||
'com2',
|
||||
'compal',
|
||||
'danger',
|
||||
'pocket',
|
||||
'docomo',
|
||||
'epoc',
|
||||
'ericsson',
|
||||
'eudoraweb',
|
||||
'hiptop',
|
||||
'htc-',
|
||||
'htc_',
|
||||
'iemobile',
|
||||
'ipad',
|
||||
'iris',
|
||||
'j-phone',
|
||||
'kddi',
|
||||
'kindle',
|
||||
'lg ',
|
||||
'lg-',
|
||||
'lg/',
|
||||
'lg;lx',
|
||||
'lge vx',
|
||||
'lge',
|
||||
'lge-',
|
||||
'lge-cx',
|
||||
'lge-lx',
|
||||
'lge-mx',
|
||||
'linux armv',
|
||||
'maemo',
|
||||
'midp',
|
||||
'mini 9.5',
|
||||
'minimo',
|
||||
'mob-x',
|
||||
'mobi',
|
||||
'mobile',
|
||||
'mobilephone',
|
||||
'mot 24',
|
||||
'mot-',
|
||||
'motorola',
|
||||
'n410',
|
||||
'netfront',
|
||||
'nintendo wii',
|
||||
'nintendo',
|
||||
'nitro',
|
||||
'nokia',
|
||||
'novarra-vision',
|
||||
'nuvifone',
|
||||
'openweb',
|
||||
'oper',
|
||||
'opwv',
|
||||
'palmsource',
|
||||
'pdxgw',
|
||||
'phone',
|
||||
'playstation',
|
||||
'polaris',
|
||||
'portalmmm',
|
||||
'qt embedded',
|
||||
'reqwirelessweb',
|
||||
'sagem',
|
||||
'sam-r',
|
||||
'samsu',
|
||||
'samsung',
|
||||
'sec-',
|
||||
'sec-sgh',
|
||||
'semc-browser',
|
||||
'series60',
|
||||
'series70',
|
||||
'series80',
|
||||
'series90',
|
||||
'sharp',
|
||||
'sie-m',
|
||||
'sie-s',
|
||||
'smartphone',
|
||||
'sony cmd',
|
||||
'sonyericsson',
|
||||
'sprint',
|
||||
'spv',
|
||||
'symbian os',
|
||||
'symbian',
|
||||
'symbianos',
|
||||
'telco',
|
||||
'teleca',
|
||||
'treo',
|
||||
'up.browser',
|
||||
'up.link',
|
||||
'vodafone',
|
||||
'vodaphone',
|
||||
'webos',
|
||||
'wml',
|
||||
'windows phone os 7',
|
||||
'wireless',
|
||||
'wm5 pie',
|
||||
'wms pie',
|
||||
'xiino',
|
||||
'wap',
|
||||
'up/',
|
||||
'psion',
|
||||
'j2me',
|
||||
'klondike',
|
||||
'kbrowser'
|
||||
);
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected static $_haTerms = array(
|
||||
'midp',
|
||||
'wml',
|
||||
'vnd.rim',
|
||||
'vnd.wap',
|
||||
'j2me',
|
||||
);
|
||||
|
||||
/**
|
||||
* first 4 letters of mobile User Agent chains
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $_uaBegin = array(
|
||||
'w3c ',
|
||||
'acs-',
|
||||
'alav',
|
||||
'alca',
|
||||
'amoi',
|
||||
'audi',
|
||||
'avan',
|
||||
'benq',
|
||||
'bird',
|
||||
'blac',
|
||||
'blaz',
|
||||
'brew',
|
||||
'cell',
|
||||
'cldc',
|
||||
'cmd-',
|
||||
'dang',
|
||||
'doco',
|
||||
'eric',
|
||||
'hipt',
|
||||
'inno',
|
||||
'ipaq',
|
||||
'java',
|
||||
'jigs',
|
||||
'kddi',
|
||||
'keji',
|
||||
'leno',
|
||||
'lg-c',
|
||||
'lg-d',
|
||||
'lg-g',
|
||||
'lge-',
|
||||
'maui',
|
||||
'maxo',
|
||||
'midp',
|
||||
'mits',
|
||||
'mmef',
|
||||
'mobi',
|
||||
'mot-',
|
||||
'moto',
|
||||
'mwbp',
|
||||
'nec-',
|
||||
'newt',
|
||||
'noki',
|
||||
'palm',
|
||||
'pana',
|
||||
'pant',
|
||||
'phil',
|
||||
'play',
|
||||
'port',
|
||||
'prox',
|
||||
'qwap',
|
||||
'sage',
|
||||
'sams',
|
||||
'sany',
|
||||
'sch-',
|
||||
'sec-',
|
||||
'send',
|
||||
'seri',
|
||||
'sgh-',
|
||||
'shar',
|
||||
'sie-',
|
||||
'siem',
|
||||
'smal',
|
||||
'smar',
|
||||
'sony',
|
||||
'sph-',
|
||||
'symb',
|
||||
't-mo',
|
||||
'teli',
|
||||
'tim-',
|
||||
'tosh',
|
||||
'tsm-',
|
||||
'upg1',
|
||||
'upsi',
|
||||
'vk-v',
|
||||
'voda',
|
||||
'wap-',
|
||||
'wapa',
|
||||
'wapi',
|
||||
'wapp',
|
||||
'wapr',
|
||||
'webc',
|
||||
'winw',
|
||||
'winw',
|
||||
'xda',
|
||||
'xda-',
|
||||
);
|
||||
|
||||
/**
|
||||
* Comparison of the UserAgent chain and User Agent signatures
|
||||
*
|
||||
* @param string $userAgent User Agent chain
|
||||
* @param array $server $_SERVER like param
|
||||
* @return bool
|
||||
*/
|
||||
public static function match($userAgent, $server)
|
||||
{
|
||||
// To have a quick identification, try light-weight tests first
|
||||
if (isset($server['all_http'])) {
|
||||
if (strpos(strtolower(str_replace(' ', '', $server['all_http'])), 'operam') !== false) {
|
||||
// Opera Mini or Opera Mobi
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($server['http_x_wap_profile']) || isset($server['http_profile'])) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (isset($server['http_accept'])) {
|
||||
if (self::_matchAgentAgainstSignatures($server['http_accept'], self::$_haTerms)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (self::userAgentStart($userAgent)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (self::_matchAgentAgainstSignatures($userAgent, self::$_uaSignatures)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve beginning clause of user agent
|
||||
*
|
||||
* @param string $userAgent
|
||||
* @return string
|
||||
*/
|
||||
public static function userAgentStart($userAgent)
|
||||
{
|
||||
|
||||
$mobile_ua = strtolower(substr($userAgent, 0, 4));
|
||||
|
||||
return (in_array($mobile_ua, self::$_uaBegin));
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($userAgent = null, array $server = array(), array $config = array())
|
||||
{
|
||||
// For mobile detection, an adapter must be defined
|
||||
if (empty($config['mobile']['features'])) {
|
||||
$config['mobile']['features']['path'] = self::DEFAULT_FEATURES_ADAPTER_PATH;
|
||||
$config['mobile']['features']['classname'] = self::DEFAULT_FEATURES_ADAPTER_CLASSNAME;
|
||||
}
|
||||
parent::__construct($userAgent, $server, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gives the current browser type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return 'mobile';
|
||||
}
|
||||
|
||||
/**
|
||||
* Look for features
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function _defineFeatures()
|
||||
{
|
||||
$this->setFeature('is_wireless_device', false, 'product_info');
|
||||
|
||||
parent::_defineFeatures();
|
||||
|
||||
if (isset($this->_aFeatures["mobile_browser"])) {
|
||||
$this->setFeature("browser_name", $this->_aFeatures["mobile_browser"]);
|
||||
$this->_browser = $this->_aFeatures["mobile_browser"];
|
||||
}
|
||||
if (isset($this->_aFeatures["mobile_browser_version"])) {
|
||||
$this->setFeature("browser_version", $this->_aFeatures["mobile_browser_version"]);
|
||||
$this->_browserVersion = $this->_aFeatures["mobile_browser_version"];
|
||||
}
|
||||
|
||||
// markup
|
||||
if ($this->getFeature('device_os') == 'iPhone OS'
|
||||
|| $this->getFeature('device_os_token') == 'iPhone OS'
|
||||
) {
|
||||
$this->setFeature('markup', 'iphone');
|
||||
} else {
|
||||
$this->setFeature('markup', $this->getMarkupLanguage($this->getFeature('preferred_markup')));
|
||||
}
|
||||
|
||||
// image format
|
||||
$this->_images = array();
|
||||
|
||||
if ($this->getFeature('png')) {
|
||||
$this->_images[] = 'png';
|
||||
}
|
||||
if ($this->getFeature('jpg')) {
|
||||
$this->_images[] = 'jpg';
|
||||
}
|
||||
if ($this->getFeature('gif')) {
|
||||
$this->_images[] = 'gif';
|
||||
}
|
||||
if ($this->getFeature('wbmp')) {
|
||||
$this->_images[] = 'wbmp';
|
||||
}
|
||||
|
||||
return $this->_aFeatures;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine markup language expected
|
||||
*
|
||||
* @access public
|
||||
* @return __TYPE__
|
||||
*/
|
||||
public function getMarkupLanguage($preferredMarkup = null)
|
||||
{
|
||||
$return = '';
|
||||
switch ($preferredMarkup) {
|
||||
case 'wml_1_1':
|
||||
case 'wml_1_2':
|
||||
case 'wml_1_3':
|
||||
$return = 'wml'; //text/vnd.wap.wml encoding="ISO-8859-15"
|
||||
case 'html_wi_imode_compact_generic':
|
||||
case 'html_wi_imode_html_1':
|
||||
case 'html_wi_imode_html_2':
|
||||
case 'html_wi_imode_html_3':
|
||||
case 'html_wi_imode_html_4':
|
||||
case 'html_wi_imode_html_5':
|
||||
$return = 'chtml'; //text/html
|
||||
case 'html_wi_oma_xhtmlmp_1_0': //application/vnd.wap.xhtml+xml
|
||||
case 'html_wi_w3_xhtmlbasic': //application/xhtml+xml DTD XHTML Basic 1.0
|
||||
$return = 'xhtml';
|
||||
case 'html_web_3_2': //text/html DTD Html 3.2 Final
|
||||
case 'html_web_4_0': //text/html DTD Html 4.01 Transitional
|
||||
$return = '';
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine image format support
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getImageFormatSupport()
|
||||
{
|
||||
return $this->_images;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine maximum image height supported
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getMaxImageHeight()
|
||||
{
|
||||
return $this->getFeature('max_image_height');
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine maximum image width supported
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getMaxImageWidth()
|
||||
{
|
||||
return $this->getFeature('max_image_width');
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine physical screen height
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getPhysicalScreenHeight()
|
||||
{
|
||||
return $this->getFeature('physical_screen_height');
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine physical screen width
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getPhysicalScreenWidth()
|
||||
{
|
||||
return $this->getFeature('physical_screen_width');
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine preferred markup
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPreferredMarkup()
|
||||
{
|
||||
return $this->getFeature("markup");
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine X/HTML support level
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getXhtmlSupportLevel()
|
||||
{
|
||||
return $this->getFeature('xhtml_support_level');
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the device support Flash?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasFlashSupport()
|
||||
{
|
||||
return $this->getFeature('fl_browser');
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the device support PDF?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasPdfSupport()
|
||||
{
|
||||
return $this->getFeature('pdf_support');
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the device have an associated phone number?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasPhoneNumber()
|
||||
{
|
||||
return $this->getFeature('can_assign_phone_number');
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the device support HTTPS?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function httpsSupport()
|
||||
{
|
||||
return ($this->getFeature('https_support') == 'supported');
|
||||
}
|
||||
}
|
||||
70
library/Zend/Http/UserAgent/Offline.php
Normale Datei
70
library/Zend/Http/UserAgent/Offline.php
Normale Datei
|
|
@ -0,0 +1,70 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
require_once 'Zend/Http/UserAgent/Desktop.php';
|
||||
|
||||
/**
|
||||
* Offline browser type matcher
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Offline extends Zend_Http_UserAgent_Desktop
|
||||
{
|
||||
/**
|
||||
* User Agent Signatures
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $_uaSignatures = array(
|
||||
'wget',
|
||||
'webzip',
|
||||
'webcopier',
|
||||
'downloader',
|
||||
'superbot',
|
||||
'offline',
|
||||
);
|
||||
|
||||
/**
|
||||
* Comparison of the UserAgent chain and User Agent signatures
|
||||
*
|
||||
* @param string $userAgent User Agent chain
|
||||
* @param array $server $_SERVER like param
|
||||
* @return bool
|
||||
*/
|
||||
public static function match($userAgent, $server)
|
||||
{
|
||||
return self::_matchAgentAgainstSignatures($userAgent, self::$_uaSignatures);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gives the current browser type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return 'offline';
|
||||
}
|
||||
}
|
||||
81
library/Zend/Http/UserAgent/Probe.php
Normale Datei
81
library/Zend/Http/UserAgent/Probe.php
Normale Datei
|
|
@ -0,0 +1,81 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
require_once 'Zend/Http/UserAgent/AbstractDevice.php';
|
||||
|
||||
/**
|
||||
* Probe browser type matcher
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Probe extends Zend_Http_UserAgent_AbstractDevice
|
||||
{
|
||||
/**
|
||||
* User Agent Signatures
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $_uaSignatures = array(
|
||||
'witbe',
|
||||
'netvigie',
|
||||
);
|
||||
|
||||
/**
|
||||
* Comparison of the UserAgent chain and User Agent signatures
|
||||
*
|
||||
* @param string $userAgent User Agent chain
|
||||
* @param array $server $_SERVER like param
|
||||
* @return bool
|
||||
*/
|
||||
public static function match($userAgent, $server)
|
||||
{
|
||||
return self::_matchAgentAgainstSignatures($userAgent, self::$_uaSignatures);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gives the current browser type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return 'probe';
|
||||
}
|
||||
|
||||
/**
|
||||
* Look for features
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function _defineFeatures()
|
||||
{
|
||||
$this->setFeature('images', false, 'product_capability');
|
||||
$this->setFeature('iframes', false, 'product_capability');
|
||||
$this->setFeature('frames', false, 'product_capability');
|
||||
$this->setFeature('javascript', false, 'product_capability');
|
||||
return parent::_defineFeatures();
|
||||
}
|
||||
}
|
||||
79
library/Zend/Http/UserAgent/Spam.php
Normale Datei
79
library/Zend/Http/UserAgent/Spam.php
Normale Datei
|
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
require_once 'Zend/Http/UserAgent/AbstractDevice.php';
|
||||
|
||||
/**
|
||||
* Spam browser type matcher
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Spam extends Zend_Http_UserAgent_AbstractDevice
|
||||
{
|
||||
/**
|
||||
* @todo User Agent Signatures
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $_uaSignatures = array(
|
||||
'',
|
||||
);
|
||||
|
||||
/**
|
||||
* Comparison of the UserAgent chain and User Agent signatures
|
||||
*
|
||||
* @param string $userAgent User Agent chain
|
||||
* @param array $server $_SERVER like param
|
||||
* @return bool
|
||||
*/
|
||||
public static function match($userAgent, $server)
|
||||
{
|
||||
return self::_matchAgentAgainstSignatures($userAgent, self::$_uaSignatures);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gives the current browser type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return 'spam';
|
||||
}
|
||||
|
||||
/**
|
||||
* Look for features
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function _defineFeatures()
|
||||
{
|
||||
$this->setFeature('images', false, 'product_capability');
|
||||
$this->setFeature('iframes', false, 'product_capability');
|
||||
$this->setFeature('frames', false, 'product_capability');
|
||||
$this->setFeature('javascript', false, 'product_capability');
|
||||
return parent::_defineFeatures();
|
||||
}
|
||||
}
|
||||
65
library/Zend/Http/UserAgent/Storage.php
Normale Datei
65
library/Zend/Http/UserAgent/Storage.php
Normale Datei
|
|
@ -0,0 +1,65 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_Http_UserAgent_Storage
|
||||
{
|
||||
/**
|
||||
* Returns true if and only if storage is empty
|
||||
*
|
||||
* @throws Zend_Http_UserAgent_Storage_Exception If it is impossible to determine whether storage is empty
|
||||
* @return boolean
|
||||
*/
|
||||
public function isEmpty();
|
||||
|
||||
/**
|
||||
* Returns the contents of storage associated to the key parameter
|
||||
*
|
||||
* Behavior is undefined when storage is empty.
|
||||
*
|
||||
* @throws Zend_Http_UserAgent_Storage_Exception If reading contents from storage is impossible
|
||||
* @return mixed
|
||||
*/
|
||||
public function read();
|
||||
|
||||
/**
|
||||
* Writes $contents associated to the key parameter to storage
|
||||
*
|
||||
* @param mixed $contents
|
||||
* @throws Zend_Http_UserAgent_Storage_Exception If writing $contents to storage is impossible
|
||||
* @return void
|
||||
*/
|
||||
public function write($contents);
|
||||
|
||||
/**
|
||||
* Clears contents from storage
|
||||
*
|
||||
* @throws Zend_Http_UserAgent_Storage_Exception If clearing contents from storage is impossible
|
||||
* @return void
|
||||
*/
|
||||
public function clear();
|
||||
}
|
||||
37
library/Zend/Http/UserAgent/Storage/Exception.php
Normale Datei
37
library/Zend/Http/UserAgent/Storage/Exception.php
Normale Datei
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Http_UserAgent_Exception
|
||||
*/
|
||||
require_once 'Zend/Http/UserAgent/Exception.php';
|
||||
|
||||
|
||||
/**
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Storage_Exception extends Zend_Http_UserAgent_Exception
|
||||
{
|
||||
}
|
||||
97
library/Zend/Http/UserAgent/Storage/NonPersistent.php
Normale Datei
97
library/Zend/Http/UserAgent/Storage/NonPersistent.php
Normale Datei
|
|
@ -0,0 +1,97 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Http_UserAgent_Storage_Interface
|
||||
*/
|
||||
require_once 'Zend/Http/UserAgent/Storage.php';
|
||||
|
||||
|
||||
/**
|
||||
* Non-Persistent Browser Storage
|
||||
*
|
||||
* Since HTTP Browserentication happens again on each request, this will always be
|
||||
* re-populated. So there's no need to use sessions, this simple value class
|
||||
* will hold the data for rest of the current request.
|
||||
*
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Storage_NonPersistent
|
||||
implements Zend_Http_UserAgent_Storage
|
||||
{
|
||||
/**
|
||||
* Holds the actual Browser data
|
||||
* @var mixed
|
||||
*/
|
||||
protected $_data;
|
||||
|
||||
/**
|
||||
* Returns true if and only if storage is empty
|
||||
*
|
||||
* @throws Zend_Http_UserAgent_Storage_Exception If it is impossible to determine whether storage is empty
|
||||
* @return boolean
|
||||
*/
|
||||
public function isEmpty()
|
||||
{
|
||||
return empty($this->_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the contents of storage
|
||||
*
|
||||
* Behavior is undefined when storage is empty.
|
||||
*
|
||||
* @throws Zend_Http_UserAgent_Storage_Exception If reading contents from storage is impossible
|
||||
* @return mixed
|
||||
*/
|
||||
public function read()
|
||||
{
|
||||
return $this->_data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes $contents to storage
|
||||
*
|
||||
* @param mixed $contents
|
||||
* @throws Zend_Http_UserAgent_Storage_Exception If writing $contents to storage is impossible
|
||||
* @return void
|
||||
*/
|
||||
public function write($contents)
|
||||
{
|
||||
$this->_data = $contents;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears contents from storage
|
||||
*
|
||||
* @throws Zend_Http_UserAgent_Storage_Exception If clearing contents from storage is impossible
|
||||
* @return void
|
||||
*/
|
||||
public function clear()
|
||||
{
|
||||
$this->_data = null;
|
||||
}
|
||||
}
|
||||
166
library/Zend/Http/UserAgent/Storage/Session.php
Normale Datei
166
library/Zend/Http/UserAgent/Storage/Session.php
Normale Datei
|
|
@ -0,0 +1,166 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Http_UserAgent_Storage
|
||||
*/
|
||||
require_once 'Zend/Http/UserAgent/Storage.php';
|
||||
|
||||
/**
|
||||
* @see Zend_Session_Namespace
|
||||
*/
|
||||
require_once 'Zend/Session/Namespace.php';
|
||||
|
||||
/**
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Storage_Session implements Zend_Http_UserAgent_Storage
|
||||
{
|
||||
/**
|
||||
* Default session namespace
|
||||
*/
|
||||
const NAMESPACE_DEFAULT = 'Zend_Http_UserAgent';
|
||||
|
||||
/**
|
||||
* Default session object member name
|
||||
*/
|
||||
const MEMBER_DEFAULT = 'storage';
|
||||
|
||||
/**
|
||||
* Object to proxy $_SESSION storage
|
||||
*
|
||||
* @var Zend_Session_Namespace
|
||||
*/
|
||||
protected $_session;
|
||||
|
||||
/**
|
||||
* Session namespace
|
||||
*
|
||||
* @var mixed
|
||||
*/
|
||||
protected $_namespace;
|
||||
|
||||
/**
|
||||
* Session object member
|
||||
*
|
||||
* @var mixed
|
||||
*/
|
||||
protected $_member;
|
||||
|
||||
/**
|
||||
* Sets session storage options and initializes session namespace object
|
||||
*
|
||||
* Expects options to contain 0 or more of the following keys:
|
||||
* - browser_type -- maps to "namespace" internally
|
||||
* - member
|
||||
*
|
||||
* @param null|array|object $options
|
||||
* @return void
|
||||
* @throws Zend_Http_UserAgent_Storage_Exception on invalid $options argument
|
||||
*/
|
||||
public function __construct($options = null)
|
||||
{
|
||||
if (is_object($options) && method_exists($options, 'toArray')) {
|
||||
$options = $options->toArray();
|
||||
} elseif (is_object($options)) {
|
||||
$options = (array) $options;
|
||||
}
|
||||
if (null !== $options && !is_array($options)) {
|
||||
require_once 'Zend/Http/UserAgent/Storage/Exception.php';
|
||||
throw new Zend_Http_UserAgent_Storage_Exception(sprintf(
|
||||
'Expected array or object options; "%s" provided',
|
||||
gettype($options)
|
||||
));
|
||||
}
|
||||
|
||||
// add '.' to prevent the message ''Session namespace must not start with a number'
|
||||
$this->_namespace = '.'
|
||||
. (isset($options['browser_type'])
|
||||
? $options['browser_type']
|
||||
: self::NAMESPACE_DEFAULT);
|
||||
$this->_member = isset($options['member']) ? $options['member'] : self::MEMBER_DEFAULT;
|
||||
$this->_session = new Zend_Session_Namespace($this->_namespace);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the session namespace name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getNamespace()
|
||||
{
|
||||
return $this->_namespace;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the session object member
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getMember()
|
||||
{
|
||||
return $this->_member;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Http_UserAgent_Storage
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function isEmpty()
|
||||
{
|
||||
return empty($this->_session->{$this->_member});
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Http_UserAgent_Storage
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function read()
|
||||
{
|
||||
return $this->_session->{$this->_member};
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Http_UserAgent_Storage
|
||||
*
|
||||
* @param mixed $contents
|
||||
* @return void
|
||||
*/
|
||||
public function write($content)
|
||||
{
|
||||
$this->_session->{$this->_member} = $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Http_UserAgent_Storage
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function clear()
|
||||
{
|
||||
unset($this->_session->{$this->_member});
|
||||
}
|
||||
}
|
||||
132
library/Zend/Http/UserAgent/Text.php
Normale Datei
132
library/Zend/Http/UserAgent/Text.php
Normale Datei
|
|
@ -0,0 +1,132 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
require_once 'Zend/Http/UserAgent/AbstractDevice.php';
|
||||
|
||||
/**
|
||||
* Text browser type matcher
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Text extends Zend_Http_UserAgent_AbstractDevice
|
||||
{
|
||||
/**
|
||||
* User Agent Signatures
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $_uaSignatures = array(
|
||||
'lynx',
|
||||
'retawq',
|
||||
'w3m',
|
||||
);
|
||||
|
||||
/**
|
||||
* Comparison of the UserAgent chain and User Agent signatures
|
||||
*
|
||||
* @param string $userAgent User Agent chain
|
||||
* @param array $server $_SERVER like param
|
||||
* @return bool
|
||||
*/
|
||||
public static function match($userAgent, $server)
|
||||
{
|
||||
return self::_matchAgentAgainstSignatures($userAgent, self::$_uaSignatures);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gives the current browser type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return 'text';
|
||||
}
|
||||
|
||||
/**
|
||||
* Look for features
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function _defineFeatures()
|
||||
{
|
||||
$this->setFeature('images', false, 'product_capability');
|
||||
$this->setFeature('iframes', false, 'product_capability');
|
||||
$this->setFeature('frames', false, 'product_capability');
|
||||
$this->setFeature('javascript', false, 'product_capability');
|
||||
return parent::_defineFeatures();
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine supported image formats
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
public function getImageFormatSupport()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get preferred markup format
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPreferredMarkup()
|
||||
{
|
||||
return 'xhtml';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get supported X/HTML markup level
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getXhtmlSupportLevel()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the device support Flash?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasFlashSupport()
|
||||
{
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the device support PDF?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasPdfSupport()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
73
library/Zend/Http/UserAgent/Validator.php
Normale Datei
73
library/Zend/Http/UserAgent/Validator.php
Normale Datei
|
|
@ -0,0 +1,73 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
require_once 'Zend/Http/UserAgent/Desktop.php';
|
||||
|
||||
/**
|
||||
* Validator browser type matcher
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Http
|
||||
* @subpackage UserAgent
|
||||
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Http_UserAgent_Validator extends Zend_Http_UserAgent_Desktop
|
||||
{
|
||||
/**
|
||||
* User Agent Signatures
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $_uaSignatures = array(
|
||||
'htmlvalidator',
|
||||
'csscheck',
|
||||
'cynthia',
|
||||
'htmlparser',
|
||||
'validator',
|
||||
'jfouffa',
|
||||
'jigsaw',
|
||||
'w3c_validator',
|
||||
'wdg_validator',
|
||||
);
|
||||
|
||||
/**
|
||||
* Comparison of the UserAgent chain and User Agent signatures
|
||||
*
|
||||
* @param string $userAgent User Agent chain
|
||||
* @param array $server $_SERVER like param
|
||||
* @return bool
|
||||
*/
|
||||
public static function match($userAgent, $server)
|
||||
{
|
||||
return self::_matchAgentAgainstSignatures($userAgent, self::$_uaSignatures);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gives the current browser type
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return 'validator';
|
||||
}
|
||||
}
|
||||
Laden …
Tabelle hinzufügen
Einen Link hinzufügen
In neuem Issue referenzieren