Project

General

Profile

Bug #20784 » 0011585_v3.patch

Administrator Admin, 2009-08-02 00:59

View differences:

t3lib/utility/class.t3lib_utility_client.php (Revision 0)
<?php
/***************************************************************
* Copyright notice
*
* (c) 2009 Oliver Hader <oliver@typo3.org>
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
* A copy is found in the textfile GPL.txt and important notices to the license
* from the author is found in LICENSE.txt distributed with these scripts.
*
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Class to handle and determine browser specific information.
*
* $Id$
*
* @author Oliver Hader <oliver@typo3.org>
*/
final class t3lib_utility_client {
/**
* Generates an array with abstracted browser information
* This method is used in the function match() in this class
*
* @param string $userAgent: The useragent string, t3lib_div::getIndpEnv('HTTP_USER_AGENT')
* @return array Contains keys "browser", "version", "system"
*/
static public function getBrowserInfo($userAgent) {
// Hook: $TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/div/class.t3lib_utility_client.php']['getBrowserInfo']:
$getBrowserInfoHooks =& $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/div/class.t3lib_utility_client.php']['getBrowserInfo'];
if (is_array($getBrowserInfoHooks)) {
foreach ($getBrowserInfoHooks as $hookFunction) {
$returnResult = true;
$hookParameters = array(
'userAgent' => &$userAgent,
'returnResult' => &$returnResult,
);
$hookResult = t3lib_div::callUserFunction($hookFunction, $hookParameters, NULL);
if ($returnResult && is_array($hookResult) && count($hookResult)) {
return $hookResult;
}
}
}
$userAgent = trim($userAgent);
$browserInfo = array(
'useragent' => $userAgent,
);
if ($userAgent) {
// browser
if (strstr($userAgent,'MSIE')) {
$browserInfo['browser']='msie';
} elseif(strstr($userAgent,'Konqueror')) {
$browserInfo['browser']='konqueror';
} elseif(strstr($userAgent,'Opera')) {
$browserInfo['browser']='opera';
} elseif(strstr($userAgent,'Lynx')) {
$browserInfo['browser']='lynx';
} elseif(strstr($userAgent,'PHP')) {
$browserInfo['browser']='php';
} elseif(strstr($userAgent,'AvantGo')) {
$browserInfo['browser']='avantgo';
} elseif(strstr($userAgent,'WebCapture')) {
$browserInfo['browser']='acrobat';
} elseif(strstr($userAgent,'IBrowse')) {
$browserInfo['browser']='ibrowse';
} elseif(strstr($userAgent,'Teleport')) {
$browserInfo['browser']='teleport';
} elseif(strstr($userAgent,'Mozilla')) {
$browserInfo['browser']='netscape';
} else {
$browserInfo['browser']='unknown';
}
// version
switch($browserInfo['browser']) {
case 'netscape':
$browserInfo['version'] = self::getVersion(substr($userAgent, 8));
if (strstr($userAgent, 'Netscape6')) {
$browserInfo['version'] = 6;
}
break;
case 'msie':
$tmp = strstr($userAgent, 'MSIE');
$browserInfo['version'] = self::getVersion(substr($tmp, 4));
break;
case 'opera':
$tmp = strstr($userAgent, 'Opera');
$browserInfo['version'] = self::getVersion(substr($tmp, 5));
break;
case 'lynx':
$tmp = strstr($userAgent, 'Lynx/');
$browserInfo['version'] = self::getVersion(substr($tmp, 5));
break;
case 'php':
$tmp = strstr($userAgent, 'PHP/');
$browserInfo['version'] = self::getVersion(substr($tmp, 4));
break;
case 'avantgo':
$tmp = strstr($userAgent, 'AvantGo');
$browserInfo['version'] = self::getVersion(substr($tmp, 7));
break;
case 'acrobat':
$tmp = strstr($userAgent, 'WebCapture');
$browserInfo['version'] = self::getVersion(substr($tmp, 10));
break;
case 'ibrowse':
$tmp = strstr($userAgent, 'IBrowse/');
$browserInfo['version'] = self::getVersion(substr($tmp ,8));
break;
case 'konqueror':
$tmp = strstr($userAgent, 'Konqueror/');
$browserInfo['version'] = self::getVersion(substr($tmp, 10));
break;
}
// system
$browserInfo['system'] = '';
if (strstr($userAgent, 'Win')) {
// windows
if (strstr($userAgent, 'Win98') || strstr($userAgent, 'Windows 98')) {
$browserInfo['system'] = 'win98';
} elseif (strstr($userAgent, 'Win95') || strstr($userAgent, 'Windows 95')) {
$browserInfo['system'] = 'win95';
} elseif (strstr($userAgent, 'WinNT') || strstr($userAgent, 'Windows NT')) {
$browserInfo['system'] = 'winNT';
} elseif (strstr($userAgent, 'Win16') || strstr($userAgent, 'Windows 311')) {
$browserInfo['system'] = 'win311';
}
} elseif (strstr($userAgent,'Mac')) {
$browserInfo['system'] = 'mac';
// unixes
} elseif (strstr($userAgent, 'Linux')) {
$browserInfo['system'] = 'linux';
} elseif (strstr($userAgent, 'SGI') && strstr($userAgent, ' IRIX ')) {
$browserInfo['system'] = 'unix_sgi';
} elseif (strstr($userAgent, ' SunOS ')) {
$browserInfo['system'] = 'unix_sun';
} elseif (strstr($userAgent, ' HP-UX ')) {
$browserInfo['system'] = 'unix_hp';
}
}
return $browserInfo;
}
/**
* Returns the version of a browser; Basically getting doubleval() of the input string,
* stripping of any non-numeric values in the beginning of the string first.
*
* @param string $version: A string with version number, eg. "/7.32 blablabla"
* @return double Returns double value, eg. "7.32"
*/
static public function getVersion($version) {
return doubleval(preg_replace('/^[^0-9]*/', '', $version));
}
}
?>
t3lib/class.t3lib_matchcondition.php (Arbeitskopie)
}
}
$useragent = trim($useragent);
$browserInfo=Array();
$browserInfo['useragent']=$useragent;
if ($useragent) {
// browser
if (strstr($useragent,'MSIE')) {
$browserInfo['browser']='msie';
} elseif(strstr($useragent,'Konqueror')) {
$browserInfo['browser']='konqueror';
} elseif(strstr($useragent,'Opera')) {
$browserInfo['browser']='opera';
} elseif(strstr($useragent,'Lynx')) {
$browserInfo['browser']='lynx';
} elseif(strstr($useragent,'PHP')) {
$browserInfo['browser']='php';
} elseif(strstr($useragent,'AvantGo')) {
$browserInfo['browser']='avantgo';
} elseif(strstr($useragent,'WebCapture')) {
$browserInfo['browser']='acrobat';
} elseif(strstr($useragent,'IBrowse')) {
$browserInfo['browser']='ibrowse';
} elseif(strstr($useragent,'Teleport')) {
$browserInfo['browser']='teleport';
} elseif(strstr($useragent,'Mozilla')) {
$browserInfo['browser']='netscape';
} else {
$browserInfo['browser']='unknown';
}
// version
switch($browserInfo['browser']) {
case 'netscape':
$browserInfo['version'] = $this->browserInfo_version(substr($useragent,8));
if (strstr($useragent,'Netscape6')) {$browserInfo['version']=6;}
break;
case 'msie':
$tmp = strstr($useragent,'MSIE');
$browserInfo['version'] = $this->browserInfo_version(substr($tmp,4));
break;
case 'opera':
$tmp = strstr($useragent,'Opera');
$browserInfo['version'] = $this->browserInfo_version(substr($tmp,5));
break;
case 'lynx':
$tmp = strstr($useragent,'Lynx/');
$browserInfo['version'] = $this->browserInfo_version(substr($tmp,5));
break;
case 'php':
$tmp = strstr($useragent,'PHP/');
$browserInfo['version'] = $this->browserInfo_version(substr($tmp,4));
break;
case 'avantgo':
$tmp = strstr($useragent,'AvantGo');
$browserInfo['version'] = $this->browserInfo_version(substr($tmp,7));
break;
case 'acrobat':
$tmp = strstr($useragent,'WebCapture');
$browserInfo['version'] = $this->browserInfo_version(substr($tmp,10));
break;
case 'ibrowse':
$tmp = strstr($useragent,'IBrowse/');
$browserInfo['version'] = $this->browserInfo_version(substr($tmp,8));
break;
case 'konqueror':
$tmp = strstr($useragent,'Konqueror/');
$browserInfo['version'] = $this->browserInfo_version(substr($tmp,10));
break;
}
// system
$browserInfo['system']='';
if (strstr($useragent,'Win')) {
// windows
if (strstr($useragent,'Win98') || strstr($useragent,'Windows 98')) {
$browserInfo['system']='win98';
} elseif (strstr($useragent,'Win95') || strstr($useragent,'Windows 95')) {
$browserInfo['system']='win95';
} elseif (strstr($useragent,'WinNT') || strstr($useragent,'Windows NT')) {
$browserInfo['system']='winNT';
} elseif (strstr($useragent,'Win16') || strstr($useragent,'Windows 311')) {
$browserInfo['system']='win311';
}
} elseif (strstr($useragent,'Mac')) {
$browserInfo['system']='mac';
// unixes
} elseif (strstr($useragent,'Linux')) {
$browserInfo['system']='linux';
} elseif (strstr($useragent,'SGI') && strstr($useragent,' IRIX ')) {
$browserInfo['system']='unix_sgi';
} elseif (strstr($useragent,' SunOS ')) {
$browserInfo['system']='unix_sun';
} elseif (strstr($useragent,' HP-UX ')) {
$browserInfo['system']='unix_hp';
}
}
$browserInfo = t3lib_utility_client::getBrowserInfo($useragent);
return $browserInfo;
}
......
*
* @param string A string with version number, eg. "/7.32 blablabla"
* @return double Returns double value, eg. "7.32"
* @deprecated since TYPO3 4.3 - use t3lib_utility_client::getVersion() instead
*/
function browserInfo_version($tmp) {
return doubleval(preg_replace('/^[^0-9]*/','',$tmp));
t3lib_div::logDeprecatedFunction();
return t3lib_utility_client::getVersion($tmp);
}
/**
t3lib/core_autoload.php (Arbeitskopie)
't3lib_localrecordlistgettablehook' => PATH_t3lib . 'interfaces/interface.t3lib_localrecordlistgettablehook.php',
't3lib_singleton' => PATH_t3lib . 'interfaces/interface.t3lib_singleton.php',
't3lib_tceformsinlinehook' => PATH_t3lib . 'interfaces/interface.t3lib_tceformsinlinehook.php',
't3lib_utility_client' => PATH_t3lib . 'utility/class.t3lib_utility_client.php',
'tslib_adminpanel' => PATH_tslib . 'class.tslib_adminpanel.php',
'tslib_cobj' => PATH_tslib . 'class.tslib_content.php',
'tslib_frameset' => PATH_tslib . 'class.tslib_content.php',
typo3/template.php (Arbeitskopie)
}
// Get the browser info
$matchObject = t3lib_div::makeInstance('t3lib_matchCondition');
$browserInfo = $matchObject->browserInfo(t3lib_div::getIndpEnv('HTTP_USER_AGENT'));
$browserInfo = t3lib_utility_client::getBrowserInfo(t3lib_div::getIndpEnv('HTTP_USER_AGENT'));
// Set the XML prologue
$xmlPrologue = '<?xml version="1.0" encoding="' . $this->charset . '"?>';
(3-3/4)