summaryrefslogtreecommitdiff
path: root/browser.class
blob: 2018247058cbfae4d30916c36cefa51991a82c85 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?php
/*
**      $Id$
**
**	ITools - the Internet Tools Library
**
**	Copyright (C) 1995-2003 by the ITools Authors.
**	This program is free software; you can redistribute it and/or
**	modify it under the terms of either the GNU General Public License
**	or the GNU Lesser General Public License, as published by the Free
**	Software Foundation. See http://www.gnu.org/licenses/ for details.
**
**	Class it_Browser: Browser capability class
**	For a good list see http://www.msb.edu/dept/msbtc/waehner/browser/
**
**	Inspired by browser.pinc,v 1.1.1.1 1999/03/23 14:51:39 bobak Exp
*/

/**
 * Browser capabilities class
 * var $Type		string: Browser type, "Netscape", "MSIE", "Konqueror" etc.
 * var $Version		float:  Browser-Version x.y for all brands
 * var $Platform	string: "Win95", "Macintosh", "Linux" ... may be wrong
 * var $Language	string: Browser's language, "de", "en", ... or unset
 * var $HTMLVersion	float:  Suported HTML version x.y
 * var $JavaScript	bool:   Browser supports Javascript
 * var $CSS		bool:   Browser supports Style sheets
 * var $TextOnly	bool:   Browser supports only text, no graphics
 */
class it_browser
{
	/* Generic attributes */
	var $UserAgent;		/* string: Unparsed HTTP_USER_AGENT */
	var $Type = '';		/* string: Browser type, "Netscape", "MSIE", etc. */
	var $Version;		/* float:  Browser-Version x.y for all brands */
	var $Platform;		/* string: "Win95", "Macintosh", "Linux" ... may be wrong */
	var $Language;		/* string: Browser's language, "de", "en", ... or unset */
	var $HTMLVersion=0;	/* float:  Suported HTML version x.y */
	var $JavaScript=0;	/* bool:   Browser supports Javascript */
	var $CSS=1;		/* int:    Style sheet level (0..3) */
	var $TextOnly=0;	/* bool:   Browser supports only text, no graphics */

	/* Browser specific stuff (DEPRECATED, use generic attributes above) */
	var $MSIE;		/* float:  Microsoft Internet Explorer Version or 0 */
	var $NS;		/* float:  Netscape Navigator Version or 0 */

/**
 * Constructor: Initializes public fields with browser capabilities
 */
function it_browser()
{
	$this->UserAgent = $_SERVER['HTTP_USER_AGENT'];
	/* $this->UserAgent = "Mozilla/4.0 [de] (compatible; MSIE 5.0; Bill Gates 1.0; Windows 95)"; */

	/* Find "Mozilla/4.0" */
	if (ereg("([^/]*)/([^ ]*)", $this->UserAgent, $regs))
	{
		$this->Type = $regs[1];
		$this->Version = (double)$regs[2];
	}

	/* Find optional "(compatible; MSIE 3.0; Win95)" */
	if (ereg("\((.*)\)", $this->UserAgent, $regs))
	{
		$optattr = split("; ", $regs[1]);
		if ($optattr[0] == "compatible")
		{
			if (ereg("([^/]*)[/ ]([^/]*)", $optattr[1], $regs))
			{
				$this->Type = $regs[1];
				$this->Version = (double)$regs[2];
			}
			else $this->Type = $optattr[1];
			$this->Platform = $optattr[count($optattr)-1];
		}
		else
			$this->Platform = $optattr[0];
	}

	if ($this->Type == "Mozilla")
		$this->Type = "Netscape";

	/* Find optional "[de]" */
	if (ereg("\[(.*)\]", $this->UserAgent, $regs))
		$this->Language = $regs[1];

	/* And now for the browser capabilities ... */
	if ($this->Type == "MSIE")
	{
		$this->MSIE = $this->Version;
		$this->HTMLVersion = 4.0;
		$this->JavaScript  = 1;

		if ($this->Version >= 4.0)
			$this->CSS = 2;
	}
	else if ($this->Type == "Opera")
	{
		$this->Opera = $this->Version;
		if ($this->Version >= 3.5)
			$this->HTMLVersion = 4.0;
		else
			$this->HTMLVersion = 3.2;
		$this->JavaScript = 1;
	}
	else if ($this->Type == "Konqueror")
	{
		$this->HTMLVersion = 4.0;
		$this->CSS = 2;
		$this->JavaScript = 1;
	}
	else if ($this->Type == "Netscape")
	{
		$this->NS = $this->Version;
		$this->HTMLVersion = 4.0;
		$this->JavaScript = 1;

		if ($this->Version >= 5.0)
			$this->CSS = 2;
	}
	else if ($this->Type == "Lynx")
		$this->TextOnly = 1;
}

} /* End Class it_Browser */
?>