Joomla Platform  13.1
Documentation des API du framework Joomla Platform
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Pages
Référence de la classe JApplicationWebClient
+ Graphe d'héritage de JApplicationWebClient:

Liste de tous les membres

Fonctions membres publiques

 __construct ($userAgent=null, $acceptEncoding=null, $acceptLanguage=null)
 __get ($name)

Attributs publics

const WINDOWS = 1
const WINDOWS_PHONE = 2
const WINDOWS_CE = 3
const IPHONE = 4
const IPAD = 5
const IPOD = 6
const MAC = 7
const BLACKBERRY = 8
const ANDROID = 9
const LINUX = 10
const TRIDENT = 11
const WEBKIT = 12
const GECKO = 13
const PRESTO = 14
const KHTML = 15
const AMAYA = 16
const IE = 17
const FIREFOX = 18
const CHROME = 19
const SAFARI = 20
const OPERA = 21
const ANDROIDTABLET = 22

Fonctions membres protégées

 detectBrowser ($userAgent)
 detectEncoding ($acceptEncoding)
 detectEngine ($userAgent)
 detectLanguage ($acceptLanguage)
 detectPlatform ($userAgent)
 detectRobot ($userAgent)

Attributs protégés

 $platform
 $mobile = false
 $engine
 $browser
 $browserVersion
 $languages = array()
 $encodings = array()
 $userAgent
 $acceptEncoding
 $acceptLanguage
 $robot = false
 $detection = array()

Description détaillée

Définition à la ligne 32 du fichier client.php.


Documentation des constructeurs et destructeur

JApplicationWebClient::__construct (   $userAgent = null,
  $acceptEncoding = null,
  $acceptLanguage = null 
)

Class constructor.

Paramètres:
string$userAgentThe optional user-agent string to parse.
string$acceptEncodingThe optional client accept encoding string to parse.
string$acceptLanguageThe optional client accept language string to parse.
Depuis:
12.1

Réimplémentée dans JWebClient.

Définition à la ligne 138 du fichier client.php.

{
// If no explicit user agent string was given attempt to use the implicit one from server environment.
if (empty($userAgent) && isset($_SERVER['HTTP_USER_AGENT']))
{
$this->userAgent = $_SERVER['HTTP_USER_AGENT'];
}
else
{
$this->userAgent = $userAgent;
}
// If no explicit acceptable encoding string was given attempt to use the implicit one from server environment.
if (empty($acceptEncoding) && isset($_SERVER['HTTP_ACCEPT_ENCODING']))
{
$this->acceptEncoding = $_SERVER['HTTP_ACCEPT_ENCODING'];
}
else
{
$this->acceptEncoding = $acceptEncoding;
}
// If no explicit acceptable languages string was given attempt to use the implicit one from server environment.
if (empty($acceptLanguage) && isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
$this->acceptLanguage = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
}
else
{
$this->acceptLanguage = $acceptLanguage;
}
}

Documentation des fonctions membres

JApplicationWebClient::__get (   $name)

Magic method to get an object property's value by name.

Paramètres:
string$nameName of the property for which to return a value.
Renvoie:
mixed The requested value if it exists.
Depuis:
12.1

Définition à la ligne 180 du fichier client.php.

{
switch ($name)
{
case 'mobile':
case 'platform':
if (empty($this->detection['platform']))
{
$this->detectPlatform($this->userAgent);
}
break;
case 'engine':
if (empty($this->detection['engine']))
{
$this->detectEngine($this->userAgent);
}
break;
case 'browser':
case 'browserVersion':
if (empty($this->detection['browser']))
{
$this->detectBrowser($this->userAgent);
}
break;
case 'languages':
if (empty($this->detection['acceptLanguage']))
{
$this->detectLanguage($this->acceptLanguage);
}
break;
case 'encodings':
if (empty($this->detection['acceptEncoding']))
{
$this->detectEncoding($this->acceptEncoding);
}
break;
case 'robot':
if (empty($this->detection['robot']))
{
$this->detectRobot($this->userAgent);
}
break;
}
// Return the property if it exists.
if (isset($this->$name))
{
return $this->$name;
}
}
JApplicationWebClient::detectBrowser (   $userAgent)
protected

Detects the client browser and version in a user agent string.

Paramètres:
string$userAgentThe user-agent string to parse.
Renvoie:
void
Depuis:
12.1

Définition à la ligne 245 du fichier client.php.

{
// Attempt to detect the browser type. Obviously we are only worried about major browsers.
if ((stripos($userAgent, 'MSIE') !== false) && (stripos($userAgent, 'Opera') === false))
{
$this->browser = self::IE;
$patternBrowser = 'MSIE';
}
elseif ((stripos($userAgent, 'Firefox') !== false) && (stripos($userAgent, 'like Firefox') === false))
{
$this->browser = self::FIREFOX;
$patternBrowser = 'Firefox';
}
elseif (stripos($userAgent, 'Chrome') !== false)
{
$this->browser = self::CHROME;
$patternBrowser = 'Chrome';
}
elseif (stripos($userAgent, 'Safari') !== false)
{
$this->browser = self::SAFARI;
$patternBrowser = 'Safari';
}
elseif (stripos($userAgent, 'Opera') !== false)
{
$this->browser = self::OPERA;
$patternBrowser = 'Opera';
}
// If we detected a known browser let's attempt to determine the version.
if ($this->browser)
{
// Build the REGEX pattern to match the browser version string within the user agent string.
$pattern = '#(?<browser>Version|' . $patternBrowser . ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
// Attempt to find version strings in the user agent string.
$matches = array();
if (preg_match_all($pattern, $userAgent, $matches))
{
// Do we have both a Version and browser match?
if (count($matches['browser']) == 2)
{
// See whether Version or browser came first, and use the number accordingly.
if (strripos($userAgent, 'Version') < strripos($userAgent, $patternBrowser))
{
$this->browserVersion = $matches['version'][0];
}
else
{
$this->browserVersion = $matches['version'][1];
}
}
elseif (count($matches['browser']) > 2)
{
$key = array_search('Version', $matches['browser']);
if ($key)
{
$this->browserVersion = $matches['version'][$key];
}
}
// We only have a Version or a browser so use what we have.
else
{
$this->browserVersion = $matches['version'][0];
}
}
}
// Mark this detection routine as run.
$this->detection['browser'] = true;
}
JApplicationWebClient::detectEncoding (   $acceptEncoding)
protected

Method to detect the accepted response encoding by the client.

Paramètres:
string$acceptEncodingThe client accept encoding string to parse.
Renvoie:
void
Depuis:
12.1

Définition à la ligne 328 du fichier client.php.

{
// Parse the accepted encodings.
$this->encodings = array_map('trim', (array) explode(',', $acceptEncoding));
// Mark this detection routine as run.
$this->detection['acceptEncoding'] = true;
}
JApplicationWebClient::detectEngine (   $userAgent)
protected

Detects the client rendering engine in a user agent string.

Paramètres:
string$userAgentThe user-agent string to parse.
Renvoie:
void
Depuis:
12.1

Définition à la ligne 346 du fichier client.php.

{
// Attempt to detect the client engine -- starting with the most popular ... for now.
if (stripos($userAgent, 'MSIE') !== false || stripos($userAgent, 'Trident') !== false)
{
$this->engine = self::TRIDENT;
}
// Evidently blackberry uses WebKit and doesn't necessarily report it. Bad RIM.
elseif (stripos($userAgent, 'AppleWebKit') !== false || stripos($userAgent, 'blackberry') !== false)
{
$this->engine = self::WEBKIT;
}
// We have to check for like Gecko because some other browsers spoof Gecko.
elseif (stripos($userAgent, 'Gecko') !== false && stripos($userAgent, 'like Gecko') === false)
{
$this->engine = self::GECKO;
}
// Sometimes Opera browsers don't say Presto.
elseif (stripos($userAgent, 'Opera') !== false || stripos($userAgent, 'Presto') !== false)
{
$this->engine = self::PRESTO;
}
// *sigh*
elseif (stripos($userAgent, 'KHTML') !== false)
{
$this->engine = self::KHTML;
}
// Lesser known engine but it finishes off the major list from Wikipedia :-)
elseif (stripos($userAgent, 'Amaya') !== false)
{
$this->engine = self::AMAYA;
}
// Mark this detection routine as run.
$this->detection['engine'] = true;
}
JApplicationWebClient::detectLanguage (   $acceptLanguage)
protected

Method to detect the accepted languages by the client.

Paramètres:
mixed$acceptLanguageThe client accept language string to parse.
Renvoie:
void
Depuis:
12.1

Définition à la ligne 392 du fichier client.php.

{
// Parse the accepted encodings.
$this->languages = array_map('trim', (array) explode(',', $acceptLanguage));
// Mark this detection routine as run.
$this->detection['acceptLanguage'] = true;
}
JApplicationWebClient::detectPlatform (   $userAgent)
protected

Detects the client platform in a user agent string.

Paramètres:
string$userAgentThe user-agent string to parse.
Renvoie:
void
Depuis:
12.1

Attempt to distinguish between Android phones and tablets There is no totally foolproof method but certain rules almost always hold Android 3.x is only used for tablets Some devices and browsers encourage users to change their UA string to include Tablet. Google encourages manufacturers to exclude the string Mobile from tablet device UA strings. In some modes Kindle Android devices include the string Mobile but they include the string Silk.

Définition à la ligne 410 du fichier client.php.

{
// Attempt to detect the client platform.
if (stripos($userAgent, 'Windows') !== false)
{
$this->platform = self::WINDOWS;
// Let's look at the specific mobile options in the Windows space.
if (stripos($userAgent, 'Windows Phone') !== false)
{
$this->mobile = true;
$this->platform = self::WINDOWS_PHONE;
}
elseif (stripos($userAgent, 'Windows CE') !== false)
{
$this->mobile = true;
$this->platform = self::WINDOWS_CE;
}
}
// Interestingly 'iPhone' is present in all iOS devices so far including iPad and iPods.
elseif (stripos($userAgent, 'iPhone') !== false)
{
$this->mobile = true;
$this->platform = self::IPHONE;
// Let's look at the specific mobile options in the iOS space.
if (stripos($userAgent, 'iPad') !== false)
{
$this->platform = self::IPAD;
}
elseif (stripos($userAgent, 'iPod') !== false)
{
$this->platform = self::IPOD;
}
}
// In case where iPhone is not mentioed in iPad user agent string
elseif (stripos($userAgent, 'iPad') !== false)
{
$this->mobile = true;
$this->platform = self::IPAD;
}
// In case where iPhone is not mentioed in iPod user agent string
elseif (stripos($userAgent, 'iPod') !== false)
{
$this->mobile = true;
$this->platform = self::IPOD;
}
// This has to come after the iPhone check because mac strings are also present in iOS devices.
elseif (preg_match('/macintosh|mac os x/i', $userAgent))
{
$this->platform = self::MAC;
}
elseif (stripos($userAgent, 'Blackberry') !== false)
{
$this->mobile = true;
$this->platform = self::BLACKBERRY;
}
elseif (stripos($userAgent, 'Android') !== false)
{
$this->mobile = true;
$this->platform = self::ANDROID;
/**
* Attempt to distinguish between Android phones and tablets
* There is no totally foolproof method but certain rules almost always hold
* Android 3.x is only used for tablets
* Some devices and browsers encourage users to change their UA string to include Tablet.
* Google encourages manufacturers to exclude the string Mobile from tablet device UA strings.
* In some modes Kindle Android devices include the string Mobile but they include the string Silk.
*/
if (stripos($userAgent, 'Android 3') !== false || stripos($userAgent, 'Tablet') !== false
|| stripos($userAgent, 'Mobile') === false || stripos($userAgent, 'Silk') !== false )
{
$this->platform = self::ANDROIDTABLET;
}
}
elseif (stripos($userAgent, 'Linux') !== false)
{
$this->platform = self::LINUX;
}
// Mark this detection routine as run.
$this->detection['platform'] = true;
}
JApplicationWebClient::detectRobot (   $userAgent)
protected

Determines if the browser is a robot or not.

Paramètres:
string$userAgentThe user-agent string to parse.
Renvoie:
void
Depuis:
12.3

Définition à la ligne 503 du fichier client.php.

{
if (preg_match('/http|bot|robot|spider|crawler|curl|^$/i', $userAgent))
{
$this->robot = true;
}
else
{
$this->robot = false;
}
$this->detection['robot'] = true;
}

Documentation des données membres

JApplicationWebClient::$acceptEncoding
protected

Définition à la ligne 109 du fichier client.php.

JApplicationWebClient::$acceptLanguage
protected

Définition à la ligne 115 du fichier client.php.

JApplicationWebClient::$browser
protected

Définition à la ligne 79 du fichier client.php.

JApplicationWebClient::$browserVersion
protected

Définition à la ligne 85 du fichier client.php.

JApplicationWebClient::$detection = array()
protected

Définition à la ligne 127 du fichier client.php.

JApplicationWebClient::$encodings = array()
protected

Définition à la ligne 97 du fichier client.php.

JApplicationWebClient::$engine
protected

Définition à la ligne 73 du fichier client.php.

JApplicationWebClient::$languages = array()
protected

Définition à la ligne 91 du fichier client.php.

JApplicationWebClient::$mobile = false
protected

Définition à la ligne 67 du fichier client.php.

JApplicationWebClient::$platform
protected

Définition à la ligne 61 du fichier client.php.

JApplicationWebClient::$robot = false
protected

Définition à la ligne 121 du fichier client.php.

JApplicationWebClient::$userAgent
protected

Définition à la ligne 103 du fichier client.php.

const JApplicationWebClient::AMAYA = 16

Définition à la ligne 49 du fichier client.php.

const JApplicationWebClient::ANDROID = 9

Définition à la ligne 42 du fichier client.php.

const JApplicationWebClient::ANDROIDTABLET = 22

Définition à la ligne 55 du fichier client.php.

const JApplicationWebClient::BLACKBERRY = 8

Définition à la ligne 41 du fichier client.php.

const JApplicationWebClient::CHROME = 19

Définition à la ligne 52 du fichier client.php.

const JApplicationWebClient::FIREFOX = 18

Définition à la ligne 51 du fichier client.php.

const JApplicationWebClient::GECKO = 13

Définition à la ligne 46 du fichier client.php.

const JApplicationWebClient::IE = 17

Définition à la ligne 50 du fichier client.php.

const JApplicationWebClient::IPAD = 5

Définition à la ligne 38 du fichier client.php.

const JApplicationWebClient::IPHONE = 4

Définition à la ligne 37 du fichier client.php.

const JApplicationWebClient::IPOD = 6

Définition à la ligne 39 du fichier client.php.

const JApplicationWebClient::KHTML = 15

Définition à la ligne 48 du fichier client.php.

const JApplicationWebClient::LINUX = 10

Définition à la ligne 43 du fichier client.php.

const JApplicationWebClient::MAC = 7

Définition à la ligne 40 du fichier client.php.

const JApplicationWebClient::OPERA = 21

Définition à la ligne 54 du fichier client.php.

const JApplicationWebClient::PRESTO = 14

Définition à la ligne 47 du fichier client.php.

const JApplicationWebClient::SAFARI = 20

Définition à la ligne 53 du fichier client.php.

const JApplicationWebClient::TRIDENT = 11

Définition à la ligne 44 du fichier client.php.

Référencé par JApplication\redirect(), et JApplicationWeb\redirect().

const JApplicationWebClient::WEBKIT = 12

Définition à la ligne 45 du fichier client.php.

const JApplicationWebClient::WINDOWS = 1

Définition à la ligne 34 du fichier client.php.

const JApplicationWebClient::WINDOWS_CE = 3

Définition à la ligne 36 du fichier client.php.

const JApplicationWebClient::WINDOWS_PHONE = 2

Définition à la ligne 35 du fichier client.php.


La documentation de cette classe a été générée à partir du fichier suivant :