summaryrefslogtreecommitdiff
path: root/pear/packages/Net_UserAgent_Detect-2.0.1.tar
blob: 1d2478bd0c02893156184c518044eb9573916886 (plain)
ofshex dumpascii
0000 70 61 63 6b 61 67 65 2e 78 6d 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 package.xml.....................
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0060 00 00 00 00 31 30 30 36 36 30 20 00 20 20 20 37 36 34 20 00 20 20 20 37 36 34 20 00 20 20 20 20 ....100660.....764.....764......
0080 20 20 20 34 31 30 35 20 31 30 30 32 34 31 31 33 37 37 37 20 20 20 36 33 36 35 20 00 00 00 00 00 ...4105.10024113777...6365......
00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0200 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 49 53 <?xml.version="1.0".encoding="IS
0220 4f 2d 38 38 35 39 2d 31 22 20 3f 3e 0a 3c 21 44 4f 43 54 59 50 45 20 70 61 63 6b 61 67 65 20 53 O-8859-1".?>.<!DOCTYPE.package.S
0240 59 53 54 45 4d 20 22 68 74 74 70 3a 2f 2f 70 65 61 72 2e 70 68 70 2e 6e 65 74 2f 64 74 64 2f 70 YSTEM."http://pear.php.net/dtd/p
0260 61 63 6b 61 67 65 2d 31 2e 30 22 3e 0a 3c 70 61 63 6b 61 67 65 20 76 65 72 73 69 6f 6e 3d 22 31 ackage-1.0">.<package.version="1
0280 2e 30 22 3e 0a 20 20 3c 6e 61 6d 65 3e 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 .0">...<name>Net_UserAgent_Detec
02a0 74 3c 2f 6e 61 6d 65 3e 0a 20 20 3c 73 75 6d 6d 61 72 79 3e 4e 65 74 5f 55 73 65 72 41 67 65 6e t</name>...<summary>Net_UserAgen
02c0 74 5f 44 65 74 65 63 74 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 57 65 62 20 62 72 6f 77 t_Detect.determines.the.Web.brow
02e0 73 65 72 2c 20 76 65 72 73 69 6f 6e 2c 20 61 6e 64 20 70 6c 61 74 66 6f 72 6d 20 66 72 6f 6d 20 ser,.version,.and.platform.from.
0300 61 6e 20 48 54 54 50 20 75 73 65 72 20 61 67 65 6e 74 20 73 74 72 69 6e 67 3c 2f 73 75 6d 6d 61 an.HTTP.user.agent.string</summa
0320 72 79 3e 0a 20 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 68 65 20 4e 65 74 5f 55 73 65 72 41 ry>...<description>The.Net_UserA
0340 67 65 6e 74 20 6f 62 6a 65 63 74 20 64 6f 65 73 20 61 20 6e 75 6d 62 65 72 20 6f 66 20 74 65 73 gent.object.does.a.number.of.tes
0360 74 73 20 6f 6e 20 61 6e 20 48 54 54 50 20 75 73 65 72 0a 61 67 65 6e 74 20 73 74 72 69 6e 67 2e ts.on.an.HTTP.user.agent.string.
0380 20 20 54 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 73 65 20 74 65 73 74 73 20 61 72 65 ..The.results.of.these.tests.are
03a0 20 61 76 61 69 6c 61 62 6c 65 20 76 69 61 20 6d 65 74 68 6f 64 73 20 6f 66 0a 74 68 65 20 6f 62 .available.via.methods.of.the.ob
03c0 6a 65 63 74 2e 0a 0a 54 68 69 73 20 6d 6f 64 75 6c 65 20 69 73 20 62 61 73 65 64 20 75 70 6f 6e ject...This.module.is.based.upon
03e0 20 74 68 65 20 4a 61 76 61 53 63 72 69 70 74 20 62 72 6f 77 73 65 72 20 64 65 74 65 63 74 69 6f .the.JavaScript.browser.detectio
0400 6e 20 63 6f 64 65 0a 61 76 61 69 6c 61 62 6c 65 20 61 74 20 68 74 74 70 3a 2f 2f 77 77 77 2e 6d n.code.available.at.http://www.m
0420 6f 7a 69 6c 6c 61 2e 6f 72 67 2f 64 6f 63 73 2f 77 65 62 2d 64 65 76 65 6c 6f 70 65 72 2f 73 6e ozilla.org/docs/web-developer/sn
0440 69 66 66 65 72 2f 62 72 6f 77 73 65 72 5f 74 79 70 65 2e 68 74 6d 6c 2e 0a 54 68 69 73 20 6d 6f iffer/browser_type.html..This.mo
0460 64 75 6c 65 20 68 61 64 20 6d 61 6e 79 20 69 6e 66 6c 75 65 6e 63 65 73 20 66 72 6f 6d 20 74 68 dule.had.many.influences.from.th
0480 65 20 6c 69 62 2f 42 72 6f 77 73 65 72 2e 70 68 70 20 63 6f 64 65 20 69 6e 0a 76 65 72 73 69 6f e.lib/Browser.php.code.in.versio
04a0 6e 20 31 2e 33 20 6f 66 20 48 6f 72 64 65 2e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0a 20 20 n.1.3.of.Horde.</description>...
04c0 3c 6d 61 69 6e 74 61 69 6e 65 72 73 3e 0a 20 20 20 20 3c 6d 61 69 6e 74 61 69 6e 65 72 3e 0a 20 <maintainers>.....<maintainer>..
04e0 20 20 20 20 20 3c 75 73 65 72 3e 6a 72 75 73 74 3c 2f 75 73 65 72 3e 0a 20 20 20 20 20 20 3c 6e .....<user>jrust</user>.......<n
0500 61 6d 65 3e 4a 61 73 6f 6e 20 52 75 73 74 3c 2f 6e 61 6d 65 3e 0a 20 20 20 20 20 20 3c 65 6d 61 ame>Jason.Rust</name>.......<ema
0520 69 6c 3e 6a 72 75 73 74 40 70 68 70 2e 6e 65 74 3c 2f 65 6d 61 69 6c 3e 0a 20 20 20 20 20 20 3c il>jrust@php.net</email>.......<
0540 72 6f 6c 65 3e 6c 65 61 64 3c 2f 72 6f 6c 65 3e 0a 20 20 20 20 3c 2f 6d 61 69 6e 74 61 69 6e 65 role>lead</role>.....</maintaine
0560 72 3e 0a 20 20 20 20 3c 6d 61 69 6e 74 61 69 6e 65 72 3e 0a 20 20 20 20 20 20 3c 75 73 65 72 3e r>.....<maintainer>.......<user>
0580 64 61 6c 6c 65 6e 3c 2f 75 73 65 72 3e 0a 20 20 20 20 20 20 3c 6e 61 6d 65 3e 44 61 6e 20 41 6c dallen</user>.......<name>Dan.Al
05a0 6c 65 6e 3c 2f 6e 61 6d 65 3e 0a 20 20 20 20 20 20 3c 65 6d 61 69 6c 3e 64 61 6c 6c 65 6e 40 70 len</name>.......<email>dallen@p
05c0 68 70 2e 6e 65 74 3c 2f 65 6d 61 69 6c 3e 0a 20 20 20 20 20 20 3c 72 6f 6c 65 3e 68 65 6c 70 65 hp.net</email>.......<role>helpe
05e0 72 3c 2f 72 6f 6c 65 3e 0a 20 20 20 20 3c 2f 6d 61 69 6e 74 61 69 6e 65 72 3e 0a 20 20 20 20 3c r</role>.....</maintainer>.....<
0600 6d 61 69 6e 74 61 69 6e 65 72 3e 0a 20 20 20 20 20 20 3c 75 73 65 72 3e 67 75 72 75 67 65 65 6b maintainer>.......<user>gurugeek
0620 3c 2f 75 73 65 72 3e 0a 20 20 20 20 20 20 3c 6e 61 6d 65 3e 44 61 76 69 64 20 43 6f 73 74 61 3c </user>.......<name>David.Costa<
0640 2f 6e 61 6d 65 3e 0a 20 20 20 20 20 20 3c 65 6d 61 69 6c 3e 67 75 72 75 67 65 65 6b 40 70 68 70 /name>.......<email>gurugeek@php
0660 2e 6e 65 74 3c 2f 65 6d 61 69 6c 3e 0a 20 20 20 20 20 20 3c 72 6f 6c 65 3e 68 65 6c 70 65 72 3c .net</email>.......<role>helper<
0680 2f 72 6f 6c 65 3e 0a 20 20 20 20 3c 2f 6d 61 69 6e 74 61 69 6e 65 72 3e 0a 20 20 3c 2f 6d 61 69 /role>.....</maintainer>...</mai
06a0 6e 74 61 69 6e 65 72 73 3e 0a 20 20 3c 72 65 6c 65 61 73 65 3e 0a 20 20 20 20 3c 76 65 72 73 69 ntainers>...<release>.....<versi
06c0 6f 6e 3e 32 2e 30 2e 31 3c 2f 76 65 72 73 69 6f 6e 3e 0a 20 20 20 20 3c 64 61 74 65 3e 32 30 30 on>2.0.1</version>.....<date>200
06e0 34 2d 30 33 2d 31 31 3c 2f 64 61 74 65 3e 0a 20 20 20 20 3c 6c 69 63 65 6e 73 65 3e 50 48 50 20 4-03-11</date>.....<license>PHP.
0700 32 2e 30 31 3c 2f 6c 69 63 65 6e 73 65 3e 0a 20 20 20 20 3c 73 74 61 74 65 3e 73 74 61 62 6c 65 2.01</license>.....<state>stable
0720 3c 2f 73 74 61 74 65 3e 0a 20 20 20 20 3c 6e 6f 74 65 73 3e 2a 20 4d 61 64 65 20 69 74 20 50 48 </state>.....<notes>*.Made.it.PH
0740 50 35 20 63 6f 6d 70 61 74 69 62 6c 65 20 69 6e 20 61 20 77 61 79 20 74 68 61 74 20 69 73 20 42 P5.compatible.in.a.way.that.is.B
0760 43 0a 2a 20 41 64 64 65 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 53 61 66 61 72 69 0a 2a 20 42 C.*.Added.support.for.Safari.*.B
0780 75 6d 70 65 64 20 6b 6f 6e 71 27 73 20 6a 61 76 61 73 63 72 69 70 74 20 76 65 72 73 69 6f 6e 20 umped.konq's.javascript.version.
07a0 75 70 20 74 6f 20 31 2e 34 0a 2a 20 46 69 78 20 62 75 67 20 77 68 65 72 65 20 77 33 6d 20 63 61 up.to.1.4.*.Fix.bug.where.w3m.ca
07c0 75 73 65 64 20 77 61 72 6e 69 6e 67 73 0a 2a 20 66 69 78 65 64 20 61 20 6e 6f 74 69 63 65 20 65 used.warnings.*.fixed.a.notice.e
07e0 72 72 6f 72 20 77 68 65 6e 20 74 68 65 20 75 73 65 72 20 61 67 65 6e 74 20 69 73 20 65 6d 70 74 rror.when.the.user.agent.is.empt
0800 79 0a 2a 20 46 69 78 65 64 20 6d 69 73 73 69 6e 67 20 77 69 6e 64 6f 77 73 20 78 70 20 64 65 74 y.*.Fixed.missing.windows.xp.det
0820 65 63 74 69 6f 6e 20 61 6e 64 20 61 64 64 65 64 20 6e 65 73 74 65 64 5f 74 61 62 6c 65 5f 72 65 ection.and.added.nested_table_re
0840 6e 64 65 72 5f 62 75 67 20 71 75 69 72 6b 20 66 6f 72 20 6e 65 74 73 63 61 70 65 20 34 2e 38 20 nder_bug.quirk.for.netscape.4.8.
0860 61 6e 64 20 62 65 6c 6f 77 2e 20 0a 2a 20 43 6f 64 65 20 63 6c 65 61 6e 75 70 73 2e 3c 2f 6e 6f and.below...*.Code.cleanups.</no
0880 74 65 73 3e 0a 20 20 20 20 3c 64 65 70 73 3e 0a 20 20 20 20 20 20 3c 64 65 70 20 74 79 70 65 3d tes>.....<deps>.......<dep.type=
08a0 22 70 68 70 22 20 72 65 6c 3d 22 67 65 22 20 76 65 72 73 69 6f 6e 3d 22 34 2e 31 2e 30 22 2f 3e "php".rel="ge".version="4.1.0"/>
08c0 0a 20 20 20 20 3c 2f 64 65 70 73 3e 0a 20 20 20 20 3c 66 69 6c 65 6c 69 73 74 3e 0a 20 20 20 20 .....</deps>.....<filelist>.....
08e0 20 20 3c 66 69 6c 65 20 72 6f 6c 65 3d 22 70 68 70 22 20 62 61 73 65 69 6e 73 74 61 6c 6c 64 69 ..<file.role="php".baseinstalldi
0900 72 3d 22 4e 65 74 2f 55 73 65 72 41 67 65 6e 74 22 20 6e 61 6d 65 3d 22 44 65 74 65 63 74 2e 70 r="Net/UserAgent".name="Detect.p
0920 68 70 22 2f 3e 0a 20 20 20 20 3c 2f 66 69 6c 65 6c 69 73 74 3e 0a 20 20 3c 2f 72 65 6c 65 61 73 hp"/>.....</filelist>...</releas
0940 65 3e 0a 20 20 3c 63 68 61 6e 67 65 6c 6f 67 3e 0a 20 20 20 20 3c 72 65 6c 65 61 73 65 3e 0a 20 e>...<changelog>.....<release>..
0960 20 20 20 20 20 3c 76 65 72 73 69 6f 6e 3e 31 2e 30 3c 2f 76 65 72 73 69 6f 6e 3e 0a 20 20 20 20 .....<version>1.0</version>.....
0980 20 20 3c 64 61 74 65 3e 32 30 30 32 2d 30 35 2d 32 31 3c 2f 64 61 74 65 3e 0a 20 20 20 20 20 20 ..<date>2002-05-21</date>.......
09a0 3c 6c 69 63 65 6e 73 65 3e 50 48 50 20 32 2e 30 31 3c 2f 6c 69 63 65 6e 73 65 3e 0a 20 20 20 20 <license>PHP.2.01</license>.....
09c0 20 20 3c 73 74 61 74 65 3e 73 74 61 62 6c 65 3c 2f 73 74 61 74 65 3e 0a 20 20 20 20 20 20 3c 6e ..<state>stable</state>.......<n
09e0 6f 74 65 73 3e 54 68 69 73 20 69 73 20 74 68 65 20 69 6e 69 74 69 61 6c 20 69 6e 64 65 70 65 6e otes>This.is.the.initial.indepen
0a00 64 65 6e 74 20 50 45 41 52 20 72 65 6c 65 61 73 65 2e 0a 3c 2f 6e 6f 74 65 73 3e 0a 20 20 20 20 dent.PEAR.release..</notes>.....
0a20 3c 2f 72 65 6c 65 61 73 65 3e 0a 20 20 3c 2f 63 68 61 6e 67 65 6c 6f 67 3e 0a 3c 2f 70 61 63 6b </release>...</changelog>.</pack
0a40 61 67 65 3e 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 age>............................
0a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c00 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 2d 32 2e 30 2e 31 2f 44 65 74 65 63 Net_UserAgent_Detect-2.0.1/Detec
0c20 74 2e 70 68 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 t.php...........................
0c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c60 00 00 00 00 31 30 30 36 36 30 20 00 20 20 20 37 36 34 20 00 20 20 20 37 36 34 20 00 20 20 20 20 ....100660.....764.....764......
0c80 20 31 31 31 32 32 36 20 31 30 30 32 34 31 31 33 35 36 33 20 20 31 32 36 35 34 20 00 00 00 00 00 .111226.10024113563..12654......
0ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0e00 3c 3f 70 68 70 0a 2f 2f 20 7b 7b 7b 20 6c 69 63 65 6e 73 65 0a 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d <?php.//.{{{.license..//.+------
0e20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
0e40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
0e60 2b 0a 2f 2f 20 7c 20 50 48 50 20 76 65 72 73 69 6f 6e 20 34 2e 32 20 20 20 20 20 20 20 20 20 20 +.//.|.PHP.version.4.2..........
0e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
0ea0 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ............|.//.+--------------
0ec0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
0ee0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 2f 2f 20 7c 20 43 ------------------------+.//.|.C
0f00 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 37 2d 32 30 30 33 20 54 68 65 20 50 48 50 20 47 opyright.(c).1997-2003.The.PHP.G
0f20 72 6f 75 70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 roup............................
0f40 20 20 20 20 7c 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ....|.//.+----------------------
0f60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
0f80 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 2f 2f 20 7c 20 54 68 69 73 20 73 6f 75 72 ----------------+.//.|.This.sour
0fa0 63 65 20 66 69 6c 65 20 69 73 20 73 75 62 6a 65 63 74 20 74 6f 20 76 65 72 73 69 6f 6e 20 32 2e ce.file.is.subject.to.version.2.
0fc0 30 20 6f 66 20 74 68 65 20 50 48 50 20 6c 69 63 65 6e 73 65 2c 20 20 20 20 20 20 20 7c 0a 2f 2f 0.of.the.PHP.license,.......|.//
0fe0 20 7c 20 74 68 61 74 20 69 73 20 62 75 6e 64 6c 65 64 20 77 69 74 68 20 74 68 69 73 20 70 61 63 .|.that.is.bundled.with.this.pac
1000 6b 61 67 65 20 69 6e 20 74 68 65 20 66 69 6c 65 20 4c 49 43 45 4e 53 45 2c 20 61 6e 64 20 69 73 kage.in.the.file.LICENSE,.and.is
1020 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 61 76 61 69 6c 61 62 6c 65 20 61 74 20 74 68 72 6f ........|.//.|.available.at.thro
1040 75 67 68 20 74 68 65 20 77 6f 72 6c 64 2d 77 69 64 65 2d 77 65 62 20 61 74 20 20 20 20 20 20 20 ugh.the.world-wide-web.at.......
1060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 68 74 74 70 3a ....................|.//.|.http:
1080 2f 2f 77 77 77 2e 70 68 70 2e 6e 65 74 2f 6c 69 63 65 6e 73 65 2f 32 5f 30 32 2e 74 78 74 2e 20 //www.php.net/license/2_02.txt..
10a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
10c0 7c 0a 2f 2f 20 7c 20 49 66 20 79 6f 75 20 64 69 64 20 6e 6f 74 20 72 65 63 65 69 76 65 20 61 20 |.//.|.If.you.did.not.receive.a.
10e0 63 6f 70 79 20 6f 66 20 74 68 65 20 50 48 50 20 6c 69 63 65 6e 73 65 20 61 6e 64 20 61 72 65 20 copy.of.the.PHP.license.and.are.
1100 75 6e 61 62 6c 65 20 74 6f 20 20 20 7c 0a 2f 2f 20 7c 20 6f 62 74 61 69 6e 20 69 74 20 74 68 72 unable.to...|.//.|.obtain.it.thr
1120 6f 75 67 68 20 74 68 65 20 77 6f 72 6c 64 2d 77 69 64 65 2d 77 65 62 2c 20 70 6c 65 61 73 65 20 ough.the.world-wide-web,.please.
1140 73 65 6e 64 20 61 20 6e 6f 74 65 20 74 6f 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 6c send.a.note.to..........|.//.|.l
1160 69 63 65 6e 73 65 40 70 68 70 2e 6e 65 74 20 73 6f 20 77 65 20 63 61 6e 20 6d 61 69 6c 20 79 6f icense@php.net.so.we.can.mail.yo
1180 75 20 61 20 63 6f 70 79 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e 20 20 20 20 20 20 20 20 20 20 20 u.a.copy.immediately............
11a0 20 20 20 20 7c 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ....|.//.+----------------------
11c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
11e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 2f 2f 20 7c 20 41 75 74 68 6f 72 73 3a 20 ----------------+.//.|.Authors:.
1200 44 61 6e 20 41 6c 6c 65 6e 20 3c 64 61 6e 40 6d 6f 6a 61 76 65 6c 69 6e 75 78 2e 63 6f 6d 3e 20 Dan.Allen.<dan@mojavelinux.com>.
1220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f ............................|.//
1240 20 7c 20 20 20 20 20 20 20 20 20 20 4a 61 73 6f 6e 20 52 75 73 74 20 3c 6a 72 75 73 74 40 70 68 .|..........Jason.Rust.<jrust@ph
1260 70 2e 6e 65 74 3e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 p.net>..........................
1280 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ........|.//.+------------------
12a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
12c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 0a 2f 2f 20 24 49 64 3a 20 44 --------------------+..//.$Id:.D
12e0 65 74 65 63 74 2e 70 68 70 2c 76 20 31 2e 31 32 20 32 30 30 34 2f 30 33 2f 31 30 20 32 30 3a 32 etect.php,v.1.12.2004/03/10.20:2
1300 32 3a 33 34 20 6a 72 75 73 74 20 45 78 70 20 24 0a 0a 2f 2f 20 7d 7d 7d 0a 2f 2f 20 7b 7b 7b 20 2:34.jrust.Exp.$..//.}}}.//.{{{.
1320 63 6f 6e 73 74 61 6e 74 73 0a 0a 64 65 66 69 6e 65 28 27 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 constants..define('NET_USERAGENT
1340 5f 44 45 54 45 43 54 5f 42 52 4f 57 53 45 52 27 2c 20 20 27 62 72 6f 77 73 65 72 27 29 3b 0a 64 _DETECT_BROWSER',..'browser');.d
1360 65 66 69 6e 65 28 27 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 54 45 43 54 5f 4f 53 27 2c efine('NET_USERAGENT_DETECT_OS',
1380 20 20 20 20 20 20 20 27 6f 73 27 29 3b 0a 64 65 66 69 6e 65 28 27 4e 45 54 5f 55 53 45 52 41 47 .......'os');.define('NET_USERAG
13a0 45 4e 54 5f 44 45 54 45 43 54 5f 46 45 41 54 55 52 45 53 27 2c 20 27 66 65 61 74 75 72 65 73 27 ENT_DETECT_FEATURES',.'features'
13c0 29 3b 0a 64 65 66 69 6e 65 28 27 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 54 45 43 54 5f );.define('NET_USERAGENT_DETECT_
13e0 51 55 49 52 4b 53 27 2c 20 20 20 27 71 75 69 72 6b 73 27 29 3b 0a 64 65 66 69 6e 65 28 27 4e 45 QUIRKS',...'quirks');.define('NE
1400 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 54 45 43 54 5f 41 43 43 45 50 54 27 2c 20 20 20 27 61 T_USERAGENT_DETECT_ACCEPT',...'a
1420 63 63 65 70 74 27 29 3b 0a 64 65 66 69 6e 65 28 27 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 ccept');.define('NET_USERAGENT_D
1440 45 54 45 43 54 5f 41 4c 4c 27 2c 20 20 20 20 20 20 27 61 6c 6c 27 29 3b 0a 0a 2f 2f 20 7d 7d 7d ETECT_ALL',......'all');..//.}}}
1460 0a 2f 2f 20 7b 7b 7b 20 63 6c 61 73 73 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 .//.{{{.class.Net_UserAgent_Dete
1480 63 74 0a 0a 2f 2a 2a 0a 20 2a 20 54 68 65 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 ct../**..*.The.Net_UserAgent_Det
14a0 65 63 74 20 6f 62 6a 65 63 74 20 64 6f 65 73 20 61 20 6e 75 6d 62 65 72 20 6f 66 20 74 65 73 74 ect.object.does.a.number.of.test
14c0 73 20 6f 6e 20 61 6e 20 48 54 54 50 20 75 73 65 72 0a 20 2a 20 61 67 65 6e 74 20 73 74 72 69 6e s.on.an.HTTP.user..*.agent.strin
14e0 67 2e 20 20 54 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 73 65 20 74 65 73 74 73 20 61 g...The.results.of.these.tests.a
1500 72 65 20 61 76 61 69 6c 61 62 6c 65 20 76 69 61 20 6d 65 74 68 6f 64 73 20 6f 66 0a 20 2a 20 74 re.available.via.methods.of..*.t
1520 68 65 20 6f 62 6a 65 63 74 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 61 6c 6c 20 6d 65 74 68 6f 64 he.object...Note.that.all.method
1540 73 20 69 6e 20 74 68 69 73 20 63 6c 61 73 73 20 63 61 6e 20 62 65 20 63 61 6c 6c 65 64 0a 20 2a s.in.this.class.can.be.called..*
1560 20 73 74 61 74 69 63 61 6c 6c 79 2e 20 20 54 68 65 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 61 6e .statically...The.constructor.an
1580 64 20 73 69 6e 67 6c 65 74 6f 6e 20 6d 65 74 68 6f 64 73 20 61 72 65 20 6f 6e 6c 79 20 72 65 74 d.singleton.methods.are.only.ret
15a0 61 69 6e 65 64 0a 20 2a 20 66 6f 72 20 42 43 2e 0a 20 2a 0a 20 2a 20 54 68 69 73 20 6d 6f 64 75 ained..*.for.BC...*..*.This.modu
15c0 6c 65 20 69 73 20 62 61 73 65 64 20 75 70 6f 6e 20 74 68 65 20 4a 61 76 61 53 63 72 69 70 74 20 le.is.based.upon.the.JavaScript.
15e0 62 72 6f 77 73 65 72 20 64 65 74 65 63 74 69 6f 6e 20 63 6f 64 65 0a 20 2a 20 61 76 61 69 6c 61 browser.detection.code..*.availa
1600 62 6c 65 20 61 74 20 68 74 74 70 3a 2f 2f 77 77 77 2e 6d 6f 7a 69 6c 6c 61 2e 6f 72 67 2f 64 6f ble.at.http://www.mozilla.org/do
1620 63 73 2f 77 65 62 2d 64 65 76 65 6c 6f 70 65 72 2f 73 6e 69 66 66 65 72 2f 62 72 6f 77 73 65 72 cs/web-developer/sniffer/browser
1640 5f 74 79 70 65 2e 68 74 6d 6c 2e 0a 20 2a 20 54 68 69 73 20 6d 6f 64 75 6c 65 20 68 61 64 20 6d _type.html...*.This.module.had.m
1660 61 6e 79 20 69 6e 66 6c 75 65 6e 63 65 73 20 66 72 6f 6d 20 74 68 65 20 6c 69 62 2f 42 72 6f 77 any.influences.from.the.lib/Brow
1680 73 65 72 2e 70 68 70 20 63 6f 64 65 20 69 6e 0a 20 2a 20 76 65 72 73 69 6f 6e 20 31 2e 33 20 6f ser.php.code.in..*.version.1.3.o
16a0 66 20 48 6f 72 64 65 2e 0a 20 2a 0a 20 2a 20 40 61 75 74 68 6f 72 20 20 20 4a 61 73 6f 6e 20 52 f.Horde...*..*.@author...Jason.R
16c0 75 73 74 20 3c 6a 72 75 73 74 40 70 68 70 2e 6e 65 74 3e 0a 20 2a 20 40 61 75 74 68 6f 72 20 20 ust.<jrust@php.net>..*.@author..
16e0 20 44 61 6e 20 41 6c 6c 65 6e 20 3c 64 61 6e 40 6d 6f 6a 61 76 65 6c 69 6e 75 78 2e 63 6f 6d 3e .Dan.Allen.<dan@mojavelinux.com>
1700 0a 20 2a 20 40 61 75 74 68 6f 72 20 20 20 43 68 75 63 6b 20 48 61 67 65 6e 62 75 63 68 20 3c 63 ..*.@author...Chuck.Hagenbuch.<c
1720 68 75 63 6b 40 68 6f 72 64 65 2e 6f 72 67 3e 0a 20 2a 20 40 61 75 74 68 6f 72 20 20 20 4a 6f 6e huck@horde.org>..*.@author...Jon
1740 20 50 61 72 69 73 65 20 3c 6a 6f 6e 40 68 6f 72 64 65 2e 6f 72 67 3e 0a 20 2a 20 40 70 61 63 6b .Parise.<jon@horde.org>..*.@pack
1760 61 67 65 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 0a 20 2a 2f 0a 0a 2f 2f 20 7d 7d 7d 0a 63 age..Net_UserAgent..*/..//.}}}.c
1780 6c 61 73 73 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 20 7b 0a 20 20 20 20 lass.Net_UserAgent_Detect.{.....
17a0 2f 2f 20 7b 7b 7b 20 63 6f 6e 73 74 72 75 63 74 6f 72 0a 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e //.{{{.constructor......function
17c0 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 28 24 69 6e 5f 75 73 65 72 41 67 .Net_UserAgent_Detect($in_userAg
17e0 65 6e 74 20 3d 20 6e 75 6c 6c 2c 20 24 69 6e 5f 64 65 74 65 63 74 20 3d 20 6e 75 6c 6c 29 0a 20 ent.=.null,.$in_detect.=.null)..
1800 20 20 20 7b 0a 20 20 20 20 20 20 20 20 24 74 68 69 73 2d 3e 64 65 74 65 63 74 28 24 69 6e 5f 75 ...{.........$this->detect($in_u
1820 73 65 72 41 67 65 6e 74 2c 20 24 69 6e 5f 64 65 74 65 63 74 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 serAgent,.$in_detect);.....}....
1840 20 20 2f 2f 20 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 73 69 6e 67 6c 65 74 6f 6e 0a 0a 20 ..//.}}}.....//.{{{.singleton...
1860 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 6f 20 62 65 20 75 73 65 64 20 69 6e 20 70 6c 61 63 .../**......*.To.be.used.in.plac
1880 65 20 6f 66 20 74 68 65 20 63 6f 6e 74 72 75 63 74 6f 72 20 74 6f 20 72 65 74 75 72 6e 20 6f 6e e.of.the.contructor.to.return.on
18a0 6c 79 20 6f 70 65 6e 20 69 6e 73 74 61 6e 63 65 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 ly.open.instance.......*......*.
18c0 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 20 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 6f @access.public.......*.@return.o
18e0 62 6a 65 63 74 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 20 69 6e 73 74 61 bject.Net_UserAgent_Detect.insta
1900 6e 63 65 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 26 73 69 6e 67 6c 65 nce......*/.....function.&single
1920 74 6f 6e 28 24 69 6e 5f 75 73 65 72 41 67 65 6e 74 20 3d 20 6e 75 6c 6c 2c 20 24 69 6e 5f 64 65 ton($in_userAgent.=.null,.$in_de
1940 74 65 63 74 20 3d 20 6e 75 6c 6c 29 20 0a 20 20 20 20 7b 20 0a 20 20 20 20 20 20 20 20 73 74 61 tect.=.null)......{..........sta
1960 74 69 63 20 24 69 6e 73 74 61 6e 63 65 3b 0a 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 tic.$instance;.................i
1980 66 20 28 21 69 73 73 65 74 28 24 69 6e 73 74 61 6e 63 65 29 29 20 7b 20 0a 20 20 20 20 20 20 20 f.(!isset($instance)).{.........
19a0 20 20 20 20 20 24 69 6e 73 74 61 6e 63 65 20 3d 20 6e 65 77 20 4e 65 74 5f 55 73 65 72 41 67 65 .....$instance.=.new.Net_UserAge
19c0 6e 74 5f 44 65 74 65 63 74 28 24 69 6e 5f 75 73 65 72 41 67 65 6e 74 2c 20 24 69 6e 5f 64 65 74 nt_Detect($in_userAgent,.$in_det
19e0 65 63 74 29 3b 20 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 ect);..........}................
1a00 20 20 72 65 74 75 72 6e 20 24 69 6e 73 74 61 6e 63 65 3b 20 0a 20 20 20 20 7d 0a 0a 20 20 20 20 ..return.$instance;......}......
1a20 2f 2f 20 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 64 65 74 65 63 74 28 29 0a 0a 20 20 20 20 //.}}}.....//.{{{.detect()......
1a40 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 74 65 63 74 20 74 68 65 20 75 73 65 72 20 61 67 65 6e 74 /**......*.Detect.the.user.agent
1a60 20 61 6e 64 20 70 72 65 70 61 72 65 20 66 6c 61 67 73 2c 20 66 65 61 74 75 72 65 73 20 61 6e 64 .and.prepare.flags,.features.and
1a80 20 71 75 69 72 6b 73 0a 20 20 20 20 20 2a 20 62 61 73 65 64 20 6f 6e 20 77 68 61 74 20 69 73 20 .quirks......*.based.on.what.is.
1aa0 66 6f 75 6e 64 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 54 68 69 73 20 69 73 20 74 68 65 20 found......*......*.This.is.the.
1ac0 63 6f 72 65 20 6f 66 20 74 68 65 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 core.of.the.Net_UserAgent_Detect
1ae0 20 63 6c 61 73 73 2e 20 20 49 74 20 6d 6f 76 65 73 20 69 74 73 0a 20 20 20 20 20 2a 20 77 61 79 .class...It.moves.its......*.way
1b00 20 74 68 72 6f 75 67 68 20 74 68 65 20 75 73 65 72 20 61 67 65 6e 74 20 73 74 72 69 6e 67 20 73 .through.the.user.agent.string.s
1b20 65 74 74 69 6e 67 20 75 70 20 74 68 65 20 66 6c 61 67 73 20 62 61 73 65 64 20 6f 6e 0a 20 20 20 etting.up.the.flags.based.on....
1b40 20 20 2a 20 74 68 65 20 76 65 6e 64 6f 72 73 20 61 6e 64 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 ..*.the.vendors.and.versions.of.
1b60 74 68 65 20 62 72 6f 77 73 65 72 73 2c 20 64 65 74 65 72 6d 69 6e 69 6e 67 20 74 68 65 20 4f 53 the.browsers,.determining.the.OS
1b80 20 61 6e 64 0a 20 20 20 20 20 2a 20 73 65 74 74 69 6e 67 20 75 70 20 74 68 65 20 66 65 61 74 75 .and......*.setting.up.the.featu
1ba0 72 65 73 20 61 6e 64 20 71 75 69 72 6b 73 20 6f 77 6e 65 64 20 62 79 20 65 61 63 68 20 6f 66 20 res.and.quirks.owned.by.each.of.
1bc0 74 68 65 20 72 65 6c 65 76 61 6e 74 0a 20 20 20 20 20 2a 20 63 6c 69 65 6e 74 73 2e 20 20 4e 6f the.relevant......*.clients...No
1be0 74 65 20 74 68 61 74 20 69 66 20 79 6f 75 20 61 72 65 20 67 6f 69 6e 67 20 74 6f 20 62 65 20 63 te.that.if.you.are.going.to.be.c
1c00 61 6c 6c 69 6e 67 20 6d 65 74 68 6f 64 73 20 6f 66 0a 20 20 20 20 20 2a 20 74 68 69 73 20 63 6c alling.methods.of......*.this.cl
1c20 61 73 73 20 73 74 61 74 69 63 61 6c 6c 79 20 74 68 65 6e 20 73 65 74 20 61 6c 6c 20 74 68 65 20 ass.statically.then.set.all.the.
1c40 70 61 72 61 6d 65 74 65 72 73 20 75 73 69 6e 67 20 74 68 0a 20 20 20 20 20 2a 20 73 65 74 4f 70 parameters.using.th......*.setOp
1c60 74 69 6f 6e 28 29 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 20 73 74 72 tion()......*......*.@param..str
1c80 69 6e 67 20 24 69 6e 5f 75 73 65 72 41 67 65 6e 74 20 28 6f 70 74 69 6f 6e 61 6c 29 20 55 73 65 ing.$in_userAgent.(optional).Use
1ca0 72 20 61 67 65 6e 74 20 6f 76 65 72 72 69 64 65 2e 20 20 0a 20 20 20 20 20 2a 20 40 70 61 72 61 r.agent.override.........*.@para
1cc0 6d 20 20 6d 69 78 65 64 20 24 69 6e 5f 64 65 74 65 63 74 20 28 6f 70 74 69 6f 6e 61 6c 29 20 54 m..mixed.$in_detect.(optional).T
1ce0 68 65 20 6c 65 76 65 6c 20 6f 66 20 63 68 65 63 6b 69 6e 67 20 74 6f 20 64 6f 2e 20 0a 20 20 20 he.level.of.checking.to.do......
1d00 20 20 2a 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a ..*......*.@access.public......*
1d20 20 40 72 65 74 75 72 6e 20 76 6f 69 64 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 .@return.void......*/.....functi
1d40 6f 6e 20 64 65 74 65 63 74 28 24 69 6e 5f 75 73 65 72 41 67 65 6e 74 20 3d 20 6e 75 6c 6c 2c 20 on.detect($in_userAgent.=.null,.
1d60 24 69 6e 5f 64 65 74 65 63 74 20 3d 20 6e 75 6c 6c 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 $in_detect.=.null).....{........
1d80 20 73 74 61 74 69 63 20 24 68 61 73 52 75 6e 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 65 6d .static.$hasRun;.........if.(!em
1da0 70 74 79 28 24 68 61 73 52 75 6e 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 pty($hasRun)).{.............retu
1dc0 72 6e 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 24 68 61 73 52 75 6e 20 3d rn;.........}..........$hasRun.=
1de0 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 2f 2f 20 7b 7b 7b 20 73 65 74 20 75 70 20 73 74 61 .true;.........//.{{{.set.up.sta
1e00 74 69 63 20 70 72 6f 70 65 72 74 69 65 73 0a 0a 20 20 20 20 20 20 20 20 24 6f 70 74 69 6f 6e 73 tic.properties..........$options
1e20 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 .=.&Net_UserAgent_Detect::_getSt
1e40 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 6f 70 74 69 6f 6e 73 27 29 3b 0a 20 20 20 20 20 20 20 aticProperty('options');........
1e60 20 24 69 6e 5f 75 73 65 72 41 67 65 6e 74 20 3d 20 69 73 73 65 74 28 24 6f 70 74 69 6f 6e 73 5b .$in_userAgent.=.isset($options[
1e80 27 75 73 65 72 41 67 65 6e 74 27 5d 29 20 26 26 20 69 73 5f 6e 75 6c 6c 28 24 69 6e 5f 75 73 65 'userAgent']).&&.is_null($in_use
1ea0 72 41 67 65 6e 74 29 20 3f 20 24 6f 70 74 69 6f 6e 73 5b 27 75 73 65 72 41 67 65 6e 74 27 5d 20 rAgent).?.$options['userAgent'].
1ec0 3a 20 6e 75 6c 6c 3b 0a 20 20 20 20 20 20 20 20 24 69 6e 5f 64 65 74 65 63 74 20 3d 20 69 73 73 :.null;.........$in_detect.=.iss
1ee0 65 74 28 24 6f 70 74 69 6f 6e 73 5b 27 64 65 74 65 63 74 4f 70 74 69 6f 6e 73 27 5d 29 20 26 26 et($options['detectOptions']).&&
1f00 20 69 73 5f 6e 75 6c 6c 28 24 69 6e 5f 64 65 74 65 63 74 29 20 3f 20 24 6f 70 74 69 6f 6e 73 5b .is_null($in_detect).?.$options[
1f20 27 64 65 74 65 63 74 4f 70 74 69 6f 6e 73 27 5d 20 3a 20 6e 75 6c 6c 3b 0a 0a 20 20 20 20 20 20 'detectOptions'].:.null;........
1f40 20 20 2f 2f 20 55 73 65 72 20 61 67 65 6e 74 20 73 74 72 69 6e 67 20 74 68 61 74 20 69 73 20 62 ..//.User.agent.string.that.is.b
1f60 65 69 6e 67 20 61 6e 61 6c 79 7a 65 64 0a 20 20 20 20 20 20 20 20 24 75 73 65 72 41 67 65 6e 74 eing.analyzed.........$userAgent
1f80 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 .=.&Net_UserAgent_Detect::_getSt
1fa0 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 75 73 65 72 41 67 65 6e 74 27 29 3b 0a 0a 20 20 20 20 aticProperty('userAgent');......
1fc0 20 20 20 20 2f 2f 20 41 72 72 61 79 20 74 68 61 74 20 73 74 6f 72 65 73 20 61 6c 6c 20 6f 66 20 ....//.Array.that.stores.all.of.
1fe0 74 68 65 20 66 6c 61 67 73 20 66 6f 72 20 74 68 65 20 76 65 6e 64 6f 72 20 61 6e 64 20 76 65 72 the.flags.for.the.vendor.and.ver
2000 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 2f 2f 20 6f 66 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 sion.........//.of.the.different
2020 20 62 72 6f 77 73 65 72 73 0a 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 20 3d 20 26 4e 65 .browsers.........$browser.=.&Ne
2040 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 t_UserAgent_Detect::_getStaticPr
2060 6f 70 65 72 74 79 28 27 62 72 6f 77 73 65 72 27 29 3b 0a 20 20 20 20 20 20 20 20 24 62 72 6f 77 operty('browser');.........$brow
2080 73 65 72 20 3d 20 61 72 72 61 79 5f 66 6c 69 70 28 61 72 72 61 79 28 27 6e 73 27 2c 20 27 6e 73 ser.=.array_flip(array('ns',.'ns
20a0 32 27 2c 20 27 6e 73 33 27 2c 20 27 6e 73 34 27 2c 20 27 6e 73 34 75 70 27 2c 20 27 6e 61 76 27 2',.'ns3',.'ns4',.'ns4up',.'nav'
20c0 2c 20 27 6e 73 36 27 2c 20 27 6e 73 36 75 70 27 2c 20 27 67 65 63 6b 6f 27 2c 20 27 69 65 27 2c ,.'ns6',.'ns6up',.'gecko',.'ie',
20e0 20 27 69 65 33 27 2c 20 27 69 65 34 27 2c 20 27 69 65 34 75 70 27 2c 20 27 69 65 35 27 2c 20 27 .'ie3',.'ie4',.'ie4up',.'ie5',.'
2100 69 65 35 5f 35 27 2c 20 27 69 65 35 75 70 27 2c 20 27 69 65 36 27 2c 20 27 69 65 36 75 70 27 2c ie5_5',.'ie5up',.'ie6',.'ie6up',
2120 20 27 6f 70 65 72 61 27 2c 20 27 6f 70 65 72 61 32 27 2c 20 27 6f 70 65 72 61 33 27 2c 20 27 6f .'opera',.'opera2',.'opera3',.'o
2140 70 65 72 61 34 27 2c 20 27 6f 70 65 72 61 35 27 2c 20 27 6f 70 65 72 61 35 75 70 27 2c 20 27 61 pera4',.'opera5',.'opera5up',.'a
2160 6f 6c 27 2c 20 27 61 6f 6c 33 27 2c 20 27 61 6f 6c 34 27 2c 20 27 61 6f 6c 35 27 2c 20 27 61 6f ol',.'aol3',.'aol4',.'aol5',.'ao
2180 6c 36 27 2c 20 27 61 6f 6c 37 27 2c 20 27 77 65 62 74 76 27 2c 20 27 61 6f 6c 74 76 27 2c 20 27 l6',.'aol7',.'webtv',.'aoltv',.'
21a0 74 76 6e 61 76 69 67 61 74 6f 72 27 2c 20 27 68 6f 74 6a 61 76 61 27 2c 20 27 68 6f 74 6a 61 76 tvnavigator',.'hotjava',.'hotjav
21c0 61 33 27 2c 20 27 68 6f 74 6a 61 76 61 33 75 70 27 2c 20 27 6b 6f 6e 71 27 2c 20 27 73 61 66 61 a3',.'hotjava3up',.'konq',.'safa
21e0 72 69 27 29 29 3b 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 2f 2f 20 41 72 72 61 79 ri'));..................//.Array
2200 20 74 68 61 74 20 73 74 6f 72 65 73 20 61 6c 6c 20 6f 66 20 74 68 65 20 66 6c 61 67 73 20 66 6f .that.stores.all.of.the.flags.fo
2220 72 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 73 2c 0a 20 20 20 20 20 20 20 r.the.operating.systems,........
2240 20 2f 2f 20 61 6e 64 20 69 6e 20 73 6f 6d 65 20 63 61 73 65 73 20 74 68 65 20 76 65 72 73 69 6f .//.and.in.some.cases.the.versio
2260 6e 73 20 6f 66 20 74 68 6f 73 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 73 20 28 77 ns.of.those.operating.systems.(w
2280 69 6e 64 6f 77 73 29 0a 20 20 20 20 20 20 20 20 24 6f 73 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 indows).........$os.=.&Net_UserA
22a0 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 gent_Detect::_getStaticProperty(
22c0 27 6f 73 27 29 3b 0a 20 20 20 20 20 20 20 20 24 6f 73 20 3d 20 61 72 72 61 79 5f 66 6c 69 70 28 'os');.........$os.=.array_flip(
22e0 61 72 72 61 79 28 27 77 69 6e 27 2c 20 27 77 69 6e 39 35 27 2c 20 27 77 69 6e 31 36 27 2c 20 27 array('win',.'win95',.'win16',.'
2300 77 69 6e 33 31 27 2c 20 27 77 69 6e 39 78 27 2c 20 27 77 69 6e 39 38 27 2c 20 27 77 69 6e 6d 65 win31',.'win9x',.'win98',.'winme
2320 27 2c 20 27 77 69 6e 32 6b 27 2c 20 27 77 69 6e 78 70 27 2c 20 27 77 69 6e 6e 74 27 2c 20 27 6f ',.'win2k',.'winxp',.'winnt',.'o
2340 73 32 27 2c 20 27 6d 61 63 27 2c 20 27 6d 61 63 36 38 6b 27 2c 20 27 6d 61 63 70 70 63 27 2c 20 s2',.'mac',.'mac68k',.'macppc',.
2360 27 6c 69 6e 75 78 27 2c 20 27 75 6e 69 78 27 2c 20 27 76 6d 73 27 2c 20 27 73 75 6e 27 2c 20 27 'linux',.'unix',.'vms',.'sun',.'
2380 73 75 6e 34 27 2c 20 27 73 75 6e 35 27 2c 20 27 73 75 6e 69 38 36 27 2c 20 27 69 72 69 78 27 2c sun4',.'sun5',.'suni86',.'irix',
23a0 20 27 69 72 69 78 35 27 2c 20 27 69 72 69 78 36 27 2c 20 27 68 70 75 78 27 2c 20 27 68 70 75 78 .'irix5',.'irix6',.'hpux',.'hpux
23c0 39 27 2c 20 27 68 70 75 78 31 30 27 2c 20 27 61 69 78 27 2c 20 27 61 69 78 31 27 2c 20 27 61 69 9',.'hpux10',.'aix',.'aix1',.'ai
23e0 78 32 27 2c 20 27 61 69 78 33 27 2c 20 27 61 69 78 34 27 2c 20 27 73 63 6f 27 2c 20 27 75 6e 69 x2',.'aix3',.'aix4',.'sco',.'uni
2400 78 77 61 72 65 27 2c 20 27 6d 70 72 61 73 27 2c 20 27 72 65 6c 69 61 6e 74 27 2c 20 27 64 65 63 xware',.'mpras',.'reliant',.'dec
2420 27 2c 20 27 73 69 6e 69 78 27 2c 20 27 66 72 65 65 62 73 64 27 2c 20 27 62 73 64 27 29 29 3b 0a ',.'sinix',.'freebsd',.'bsd'));.
2440 0a 20 20 20 20 20 20 20 20 2f 2f 20 41 72 72 61 79 20 77 68 69 63 68 20 73 74 6f 72 65 73 20 6b .........//.Array.which.stores.k
2460 6e 6f 77 6e 20 69 73 73 75 65 73 20 77 69 74 68 20 74 68 65 20 67 69 76 65 6e 20 63 6c 69 65 6e nown.issues.with.the.given.clien
2480 74 20 74 68 61 74 20 63 61 6e 0a 20 20 20 20 20 20 20 20 2f 2f 20 62 65 20 75 73 65 64 20 66 6f t.that.can.........//.be.used.fo
24a0 72 20 6f 6e 20 74 68 65 20 66 6c 79 20 74 77 65 61 6b 69 6e 67 20 73 6f 20 74 68 61 74 20 74 68 r.on.the.fly.tweaking.so.that.th
24c0 65 20 63 6c 69 65 6e 74 20 6d 61 79 20 72 65 63 69 65 76 65 0a 20 20 20 20 20 20 20 20 2f 2f 20 e.client.may.recieve.........//.
24e0 74 68 65 20 70 72 6f 70 65 72 20 68 61 6e 64 6c 69 6e 67 20 6f 66 20 74 68 69 73 20 71 75 69 72 the.proper.handling.of.this.quir
2500 6b 2e 0a 20 20 20 20 20 20 20 20 24 71 75 69 72 6b 73 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 k..........$quirks.=.&Net_UserAg
2520 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 ent_Detect::_getStaticProperty('
2540 71 75 69 72 6b 73 27 29 3b 0a 20 20 20 20 20 20 20 20 24 71 75 69 72 6b 73 20 3d 20 61 72 72 61 quirks');.........$quirks.=.arra
2560 79 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 75 73 74 5f 63 61 63 68 65 5f 66 y(.................'must_cache_f
2580 6f 72 6d 73 27 20 20 20 20 20 20 20 20 20 3d 3e 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 orms'.........=>.false,.........
25a0 20 20 20 20 20 20 20 20 27 70 6f 70 75 70 73 5f 64 69 73 61 62 6c 65 64 27 20 20 20 20 20 20 20 ........'popups_disabled'.......
25c0 20 20 20 3d 3e 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 65 6d ...=>.false,.................'em
25e0 70 74 79 5f 66 69 6c 65 5f 69 6e 70 75 74 5f 76 61 6c 75 65 27 20 20 20 3d 3e 20 66 61 6c 73 65 pty_file_input_value'...=>.false
2600 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 63 61 63 68 65 5f 73 73 6c 5f 64 6f 77 ,.................'cache_ssl_dow
2620 6e 6c 6f 61 64 73 27 20 20 20 20 20 20 3d 3e 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 20 nloads'......=>.false,..........
2640 20 20 20 20 20 20 20 27 73 63 72 6f 6c 6c 62 61 72 5f 69 6e 5f 77 61 79 27 20 20 20 20 20 20 20 .......'scrollbar_in_way'.......
2660 20 20 3d 3e 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 62 72 65 ..=>.false,.................'bre
2680 61 6b 5f 64 69 73 70 6f 73 69 74 69 6f 6e 5f 68 65 61 64 65 72 27 20 3d 3e 20 66 61 6c 73 65 2c ak_disposition_header'.=>.false,
26a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6e 65 73 74 65 64 5f 74 61 62 6c 65 5f 72 .................'nested_table_r
26c0 65 6e 64 65 72 5f 62 75 67 27 20 20 3d 3e 20 66 61 6c 73 65 29 3b 0a 0a 20 20 20 20 20 20 20 20 ender_bug'..=>.false);..........
26e0 2f 2f 20 41 72 72 61 79 20 74 68 61 74 20 73 74 6f 72 65 73 20 63 72 65 64 65 6e 74 69 61 6c 73 //.Array.that.stores.credentials
2700 20 66 6f 72 20 65 61 63 68 20 6f 66 20 74 68 65 20 62 72 6f 77 73 65 72 2f 6f 73 0a 20 20 20 20 .for.each.of.the.browser/os.....
2720 20 20 20 20 2f 2f 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73 2e 20 20 54 68 65 73 65 20 61 6c 6c 6f ....//.combinations...These.allo
2740 77 20 71 75 69 63 6b 20 61 63 63 65 73 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 74 w.quick.access.to.determine.if.t
2760 68 65 0a 20 20 20 20 20 20 20 20 2f 2f 20 63 75 72 72 65 6e 74 20 63 6c 69 65 6e 74 20 68 61 73 he.........//.current.client.has
2780 20 61 20 66 65 61 74 75 72 65 20 74 68 61 74 20 69 73 20 67 6f 69 6e 67 20 74 6f 20 62 65 20 69 .a.feature.that.is.going.to.be.i
27a0 6d 70 6c 65 6d 65 6e 74 65 64 0a 20 20 20 20 20 20 20 20 2f 2f 20 69 6e 20 74 68 65 20 73 63 72 mplemented.........//.in.the.scr
27c0 69 70 74 2e 0a 20 20 20 20 20 20 20 20 24 66 65 61 74 75 72 65 73 20 3d 20 26 4e 65 74 5f 55 73 ipt..........$features.=.&Net_Us
27e0 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 erAgent_Detect::_getStaticProper
2800 74 79 28 27 66 65 61 74 75 72 65 73 27 29 3b 0a 20 20 20 20 20 20 20 20 24 66 65 61 74 75 72 65 ty('features');.........$feature
2820 73 20 3d 20 61 72 72 61 79 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6a 61 76 61 s.=.array(.................'java
2840 73 63 72 69 70 74 27 20 20 20 3d 3e 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 script'...=>.false,.............
2860 20 20 20 20 27 64 68 74 6d 6c 27 20 20 20 20 20 20 20 20 3d 3e 20 66 61 6c 73 65 2c 0a 20 20 20 ....'dhtml'........=>.false,....
2880 20 20 20 20 20 20 20 20 20 20 20 20 20 27 64 6f 6d 27 20 20 20 20 20 20 20 20 20 20 3d 3e 20 66 .............'dom'..........=>.f
28a0 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 73 69 64 65 62 61 72 27 20 alse,.................'sidebar'.
28c0 20 20 20 20 20 3d 3e 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 .....=>.false,.................'
28e0 67 65 63 6b 6f 27 20 20 20 20 20 20 20 20 3d 3e 20 66 61 6c 73 65 29 3b 0a 0a 20 20 20 20 20 20 gecko'........=>.false);........
2900 20 20 2f 2f 20 54 68 65 20 6c 65 61 64 69 6e 67 20 69 64 65 6e 74 69 66 69 65 72 20 69 73 20 74 ..//.The.leading.identifier.is.t
2920 68 65 20 76 65 72 79 20 66 69 72 73 74 20 74 65 72 6d 20 69 6e 20 74 68 65 20 75 73 65 72 0a 20 he.very.first.term.in.the.user..
2940 20 20 20 20 20 20 20 2f 2f 20 61 67 65 6e 74 20 73 74 72 69 6e 67 2c 20 77 68 69 63 68 20 69 73 .......//.agent.string,.which.is
2960 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20 63 6c 69 65 6e 74 73 20 77 68 69 63 68 20 .used.to.identify.clients.which.
2980 61 72 65 20 6e 6f 74 0a 20 20 20 20 20 20 20 20 2f 2f 20 4d 6f 73 61 69 63 2d 62 61 73 65 64 20 are.not.........//.Mosaic-based.
29a0 62 72 6f 77 73 65 72 73 2e 0a 20 20 20 20 20 20 20 20 24 6c 65 61 64 69 6e 67 49 64 65 6e 74 69 browsers..........$leadingIdenti
29c0 66 69 65 72 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 fier.=.&Net_UserAgent_Detect::_g
29e0 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 6c 65 61 64 69 6e 67 49 64 65 6e 74 69 66 etStaticProperty('leadingIdentif
2a00 69 65 72 27 29 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 54 68 65 20 66 75 6c 6c 20 76 65 72 73 ier');..........//.The.full.vers
2a20 69 6f 6e 20 6f 66 20 74 68 65 20 63 6c 69 65 6e 74 20 61 73 20 73 75 70 70 6c 69 65 64 20 62 79 ion.of.the.client.as.supplied.by
2a40 20 74 68 65 20 76 65 72 79 20 66 69 72 73 74 0a 20 20 20 20 20 20 20 20 2f 2f 20 6e 75 6d 62 65 .the.very.first.........//.numbe
2a60 72 73 20 69 6e 20 74 68 65 20 75 73 65 72 20 61 67 65 6e 74 0a 20 20 20 20 20 20 20 20 24 76 65 rs.in.the.user.agent.........$ve
2a80 72 73 69 6f 6e 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f rsion.=.&Net_UserAgent_Detect::_
2aa0 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 76 65 72 73 69 6f 6e 27 29 3b 0a 20 20 getStaticProperty('version');...
2ac0 20 20 20 20 20 20 24 76 65 72 73 69 6f 6e 20 3d 20 30 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 ......$version.=.0;..........//.
2ae0 54 68 65 20 6d 61 6a 6f 72 20 70 61 72 74 20 6f 66 20 74 68 65 20 63 6c 69 65 6e 74 20 76 65 72 The.major.part.of.the.client.ver
2b00 73 69 6f 6e 2c 20 77 68 69 63 68 20 69 73 20 74 68 65 20 69 6e 74 65 67 65 72 0a 20 20 20 20 20 sion,.which.is.the.integer......
2b20 20 20 20 2f 2f 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 76 65 72 73 69 6f 6e 2e 0a 20 20 20 20 ...//.value.of.the.version......
2b40 20 20 20 20 24 6d 61 6a 6f 72 56 65 72 73 69 6f 6e 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 ....$majorVersion.=.&Net_UserAge
2b60 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 6d nt_Detect::_getStaticProperty('m
2b80 61 6a 6f 72 56 65 72 73 69 6f 6e 27 29 3b 0a 20 20 20 20 20 20 20 20 24 6d 61 6a 6f 72 56 65 72 ajorVersion');.........$majorVer
2ba0 73 69 6f 6e 20 3d 20 30 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 54 68 65 20 6d 69 6e 6f 72 20 sion.=.0;..........//.The.minor.
2bc0 70 61 72 74 20 6f 66 20 74 68 65 20 63 6c 69 65 6e 74 20 76 65 72 73 69 6f 6e 2c 20 77 68 69 63 part.of.the.client.version,.whic
2be0 68 20 69 73 20 74 68 65 20 64 65 63 69 6d 61 6c 0a 20 20 20 20 20 20 20 20 2f 2f 20 70 61 72 74 h.is.the.decimal.........//.part
2c00 73 20 6f 66 20 74 68 65 20 76 65 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 24 73 75 62 56 65 72 s.of.the.version.........$subVer
2c20 73 69 6f 6e 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 sion.=.&Net_UserAgent_Detect::_g
2c40 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 73 75 62 56 65 72 73 69 6f 6e 27 29 3b 0a etStaticProperty('subVersion');.
2c60 20 20 20 20 20 20 20 20 24 73 75 62 56 65 72 73 69 6f 6e 20 3d 20 30 3b 0a 0a 20 20 20 20 20 20 ........$subVersion.=.0;........
2c80 20 20 2f 2f 20 7d 7d 7d 0a 20 20 20 20 20 20 20 20 2f 2f 20 64 65 74 65 6d 69 6e 65 20 77 68 61 ..//.}}}.........//.detemine.wha
2ca0 74 20 75 73 65 72 20 61 67 65 6e 74 20 77 65 20 61 72 65 20 75 73 69 6e 67 0a 20 20 20 20 20 20 t.user.agent.we.are.using.......
2cc0 20 20 69 66 20 28 69 73 5f 6e 75 6c 6c 28 24 69 6e 5f 75 73 65 72 41 67 65 6e 74 29 29 20 7b 0a ..if.(is_null($in_userAgent)).{.
2ce0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 5f 53 45 52 56 45 52 5b 27 ............if.(isset($_SERVER['
2d00 48 54 54 50 5f 55 53 45 52 5f 41 47 45 4e 54 27 5d 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 HTTP_USER_AGENT'])).{...........
2d20 20 20 20 20 20 20 24 75 73 65 72 41 67 65 6e 74 20 3d 20 24 5f 53 45 52 56 45 52 5b 27 48 54 54 ......$userAgent.=.$_SERVER['HTT
2d40 50 5f 55 53 45 52 5f 41 47 45 4e 54 27 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 P_USER_AGENT'];.............}...
2d60 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 69 66 20 28 69 73 73 65 74 28 24 47 4c 4f 42 41 4c 53 ..........elseif.(isset($GLOBALS
2d80 5b 27 48 54 54 50 5f 53 45 52 56 45 52 5f 56 41 52 53 27 5d 5b 27 48 54 54 50 5f 55 53 45 52 5f ['HTTP_SERVER_VARS']['HTTP_USER_
2da0 41 47 45 4e 54 27 5d 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 75 73 65 AGENT'])).{.................$use
2dc0 72 41 67 65 6e 74 20 3d 20 24 47 4c 4f 42 41 4c 53 5b 27 48 54 54 50 5f 53 45 52 56 45 52 5f 56 rAgent.=.$GLOBALS['HTTP_SERVER_V
2de0 41 52 53 27 5d 5b 27 48 54 54 50 5f 55 53 45 52 5f 41 47 45 4e 54 27 5d 3b 0a 20 20 20 20 20 20 ARS']['HTTP_USER_AGENT'];.......
2e00 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 ......}.............else.{......
2e20 20 20 20 20 20 20 20 20 20 20 20 24 75 73 65 72 41 67 65 6e 74 20 3d 20 27 27 3b 0a 20 20 20 20 ...........$userAgent.=.'';.....
2e40 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 ........}.........}.........else
2e60 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 75 73 65 72 41 67 65 6e 74 20 3d 20 24 69 6e 5f .{.............$userAgent.=.$in_
2e80 75 73 65 72 41 67 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 2f 2f userAgent;.........}..........//
2ea0 20 67 65 74 20 74 68 65 20 6c 6f 77 65 72 63 61 73 65 20 76 65 72 73 69 6f 6e 20 66 6f 72 20 63 .get.the.lowercase.version.for.c
2ec0 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 73 65 61 72 63 68 69 6e 67 0a 20 20 20 20 20 20 ase-insensitive.searching.......
2ee0 20 20 24 61 67 74 20 3d 20 73 74 72 74 6f 6c 6f 77 65 72 28 24 75 73 65 72 41 67 65 6e 74 29 3b ..$agt.=.strtolower($userAgent);
2f00 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 66 69 67 75 72 65 20 6f 75 74 20 77 68 61 74 20 77 65 20 ..........//.figure.out.what.we.
2f20 6e 65 65 64 20 74 6f 20 6c 6f 6f 6b 20 66 6f 72 0a 20 20 20 20 20 20 20 20 24 64 65 74 65 63 74 need.to.look.for.........$detect
2f40 4f 70 74 69 6f 6e 73 20 3d 20 61 72 72 61 79 28 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 Options.=.array(NET_USERAGENT_DE
2f60 54 45 43 54 5f 42 52 4f 57 53 45 52 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4e 45 TECT_BROWSER,.................NE
2f80 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 54 45 43 54 5f 4f 53 2c 20 4e 45 54 5f 55 53 45 52 41 T_USERAGENT_DETECT_OS,.NET_USERA
2fa0 47 45 4e 54 5f 44 45 54 45 43 54 5f 46 45 41 54 55 52 45 53 2c 0a 20 20 20 20 20 20 20 20 20 20 GENT_DETECT_FEATURES,...........
2fc0 20 20 20 20 20 20 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 54 45 43 54 5f 51 55 49 52 4b ......NET_USERAGENT_DETECT_QUIRK
2fe0 53 2c 20 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 54 45 43 54 5f 41 43 43 45 50 54 2c 20 S,.NET_USERAGENT_DETECT_ACCEPT,.
3000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 .................NET_USERAGENT_D
3020 45 54 45 43 54 5f 41 4c 4c 29 3b 0a 20 20 20 20 20 20 20 20 24 64 65 74 65 63 74 20 3d 20 69 73 ETECT_ALL);.........$detect.=.is
3040 5f 6e 75 6c 6c 28 24 69 6e 5f 64 65 74 65 63 74 29 20 3f 20 4e 45 54 5f 55 53 45 52 41 47 45 4e _null($in_detect).?.NET_USERAGEN
3060 54 5f 44 45 54 45 43 54 5f 41 4c 4c 20 3a 20 24 69 6e 5f 64 65 74 65 63 74 3b 0a 20 20 20 20 20 T_DETECT_ALL.:.$in_detect;......
3080 20 20 20 73 65 74 74 79 70 65 28 24 64 65 74 65 63 74 2c 20 27 61 72 72 61 79 27 29 3b 0a 20 20 ...settype($detect,.'array');...
30a0 20 20 20 20 20 20 66 6f 72 65 61 63 68 28 24 64 65 74 65 63 74 4f 70 74 69 6f 6e 73 20 61 73 20 ......foreach($detectOptions.as.
30c0 24 6f 70 74 69 6f 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 5f 61 72 $option).{.............if.(in_ar
30e0 72 61 79 28 24 6f 70 74 69 6f 6e 2c 20 24 64 65 74 65 63 74 29 29 20 7b 0a 20 20 20 20 20 20 20 ray($option,.$detect)).{........
3100 20 20 20 20 20 20 20 20 20 24 64 65 74 65 63 74 46 6c 61 67 73 5b 24 6f 70 74 69 6f 6e 5d 20 3d .........$detectFlags[$option].=
3120 20 74 72 75 65 3b 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 .true;..............}...........
3140 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 64 65 74 65 63 74 ..else.{.................$detect
3160 46 6c 61 67 73 5b 24 6f 70 74 69 6f 6e 5d 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 Flags[$option].=.false;.........
3180 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 69 6e 69 74 ....}.........}..........//.init
31a0 69 61 6c 69 7a 65 20 74 68 65 20 61 72 72 61 79 73 20 6f 66 20 62 72 6f 77 73 65 72 73 20 61 6e ialize.the.arrays.of.browsers.an
31c0 64 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 73 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 d.operating.systems..........//.
31e0 47 65 74 20 74 68 65 20 74 79 70 65 20 61 6e 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 Get.the.type.and.version.of.the.
3200 63 6c 69 65 6e 74 0a 20 20 20 20 20 20 20 20 69 66 20 28 70 72 65 67 5f 6d 61 74 63 68 28 22 3b client.........if.(preg_match(";
3220 5e 28 5b 5b 3a 61 6c 6e 75 6d 3a 5d 5d 2b 29 5b 20 2f 5c 28 5d 2a 5b 5b 3a 61 6c 70 68 61 3a 5d ^([[:alnum:]]+)[./\(]*[[:alpha:]
3240 5d 2a 28 5b 5c 64 5d 2a 29 28 5c 2e 5b 5c 64 5c 2e 5d 2a 29 3b 22 2c 20 24 61 67 74 2c 20 24 6d ]*([\d]*)(\.[\d\.]*);",.$agt,.$m
3260 61 74 63 68 65 73 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 73 74 28 2c 20 24 6c atches)).{.............list(,.$l
3280 65 61 64 69 6e 67 49 64 65 6e 74 69 66 69 65 72 2c 20 24 6d 61 6a 6f 72 56 65 72 73 69 6f 6e 2c eadingIdentifier,.$majorVersion,
32a0 20 24 73 75 62 56 65 72 73 69 6f 6e 29 20 3d 20 24 6d 61 74 63 68 65 73 3b 0a 20 20 20 20 20 20 .$subVersion).=.$matches;.......
32c0 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 65 6d 70 74 79 28 24 6c 65 61 64 69 6e 67 49 ..}..........if.(empty($leadingI
32e0 64 65 6e 74 69 66 69 65 72 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6c 65 61 64 69 dentifier)).{.............$leadi
3300 6e 67 49 64 65 6e 74 69 66 69 65 72 20 3d 20 27 55 6e 6b 6e 6f 77 6e 27 3b 0a 20 20 20 20 20 20 ngIdentifier.=.'Unknown';.......
3320 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 24 76 65 72 73 69 6f 6e 20 3d 20 24 6d 61 6a 6f 72 56 65 ..}..........$version.=.$majorVe
3340 72 73 69 6f 6e 20 2e 20 24 73 75 62 56 65 72 73 69 6f 6e 3b 0a 20 20 20 20 0a 20 20 20 20 20 20 rsion...$subVersion;............
3360 20 20 2f 2f 20 42 72 6f 77 73 65 72 20 74 79 70 65 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 64 ..//.Browser.type.........if.($d
3380 65 74 65 63 74 46 6c 61 67 73 5b 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 54 45 43 54 5f etectFlags[NET_USERAGENT_DETECT_
33a0 41 4c 4c 5d 20 7c 7c 20 24 64 65 74 65 63 74 46 6c 61 67 73 5b 4e 45 54 5f 55 53 45 52 41 47 45 ALL].||.$detectFlags[NET_USERAGE
33c0 4e 54 5f 44 45 54 45 43 54 5f 42 52 4f 57 53 45 52 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 NT_DETECT_BROWSER]).{...........
33e0 20 20 24 62 72 6f 77 73 65 72 5b 27 6b 6f 6e 71 27 5d 20 20 20 20 3d 20 24 62 72 6f 77 73 65 72 ..$browser['konq']....=.$browser
3400 5b 27 73 61 66 61 72 69 27 5d 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 6b 6f 6e 71 ['safari'].=.(strpos($agt,.'konq
3420 75 65 72 6f 72 27 29 20 21 3d 3d 20 66 61 6c 73 65 20 7c 7c 20 73 74 72 70 6f 73 28 24 61 67 74 ueror').!==.false.||.strpos($agt
3440 2c 20 27 73 61 66 61 72 69 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 ,.'safari').!==.false);.........
3460 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 74 65 78 74 27 5d 20 20 20 20 3d 20 28 73 74 72 70 6f ....$browser['text']....=.(strpo
3480 73 28 24 61 67 74 2c 20 27 6c 69 6e 6b 73 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 s($agt,.'links').!==.false).||.(
34a0 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 6c 79 6e 78 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 strpos($agt,.'lynx').!==.false).
34c0 7c 7c 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 77 33 6d 27 29 20 21 3d 3d 20 66 61 6c 73 ||.(strpos($agt,.'w3m').!==.fals
34e0 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 6e 73 27 5d 20 20 e);.............$browser['ns']..
3500 20 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 6d 6f 7a 69 6c 6c 61 27 29 20 21 ....=.(strpos($agt,.'mozilla').!
3520 3d 3d 20 66 61 6c 73 65 29 20 26 26 20 21 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 73 70 6f ==.false).&&.!(strpos($agt,.'spo
3540 6f 66 65 72 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 26 26 20 21 28 73 74 72 70 6f 73 28 24 61 ofer').!==.false).&&.!(strpos($a
3560 67 74 2c 20 27 63 6f 6d 70 61 74 69 62 6c 65 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 26 26 20 gt,.'compatible').!==.false).&&.
3580 21 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 68 6f 74 6a 61 76 61 27 29 20 21 3d 3d 20 66 61 !(strpos($agt,.'hotjava').!==.fa
35a0 6c 73 65 29 20 26 26 20 21 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 6f 70 65 72 61 27 29 20 lse).&&.!(strpos($agt,.'opera').
35c0 21 3d 3d 20 66 61 6c 73 65 29 20 26 26 20 21 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 77 65 !==.false).&&.!(strpos($agt,.'we
35e0 62 74 76 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 3f 20 31 20 3a 20 30 3b 0a 20 20 20 20 20 20 btv').!==.false).?.1.:.0;.......
3600 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 6e 73 32 27 5d 20 20 20 20 20 3d 20 24 62 72 6f ......$browser['ns2'].....=.$bro
3620 77 73 65 72 5b 27 6e 73 27 5d 20 26 26 20 24 6d 61 6a 6f 72 56 65 72 73 69 6f 6e 20 3d 3d 20 32 wser['ns'].&&.$majorVersion.==.2
3640 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 6e 73 33 27 5d 20 20 20 ;.............$browser['ns3']...
3660 20 20 3d 20 24 62 72 6f 77 73 65 72 5b 27 6e 73 27 5d 20 26 26 20 24 6d 61 6a 6f 72 56 65 72 73 ..=.$browser['ns'].&&.$majorVers
3680 69 6f 6e 20 3d 3d 20 33 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 ion.==.3;.............$browser['
36a0 6e 73 34 27 5d 20 20 20 20 20 3d 20 24 62 72 6f 77 73 65 72 5b 27 6e 73 27 5d 20 26 26 20 24 6d ns4'].....=.$browser['ns'].&&.$m
36c0 61 6a 6f 72 56 65 72 73 69 6f 6e 20 3d 3d 20 34 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 ajorVersion.==.4;.............$b
36e0 72 6f 77 73 65 72 5b 27 6e 73 34 75 70 27 5d 20 20 20 3d 20 24 62 72 6f 77 73 65 72 5b 27 6e 73 rowser['ns4up']...=.$browser['ns
3700 27 5d 20 26 26 20 24 6d 61 6a 6f 72 56 65 72 73 69 6f 6e 20 3e 3d 20 34 3b 0a 20 20 20 20 20 20 '].&&.$majorVersion.>=.4;.......
3720 20 20 20 20 20 20 2f 2f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 74 68 69 73 20 69 73 20 61 20 ......//.determine.if.this.is.a.
3740 4e 65 74 73 63 61 70 65 20 4e 61 76 69 67 61 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 Netscape.Navigator.............$
3760 62 72 6f 77 73 65 72 5b 27 6e 61 76 27 5d 20 20 20 20 20 3d 20 24 62 72 6f 77 73 65 72 5b 27 6e browser['nav'].....=.$browser['n
3780 73 27 5d 20 26 26 20 24 6d 61 6a 6f 72 56 65 72 73 69 6f 6e 20 3c 20 35 3b 0a 20 20 20 20 20 20 s'].&&.$majorVersion.<.5;.......
37a0 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 6e 73 36 27 5d 20 20 20 20 20 3d 20 21 24 62 72 ......$browser['ns6'].....=.!$br
37c0 6f 77 73 65 72 5b 27 6b 6f 6e 71 27 5d 20 26 26 20 24 62 72 6f 77 73 65 72 5b 27 6e 73 27 5d 20 owser['konq'].&&.$browser['ns'].
37e0 26 26 20 24 6d 61 6a 6f 72 56 65 72 73 69 6f 6e 20 3d 3d 20 35 3b 0a 20 20 20 20 20 20 20 20 20 &&.$majorVersion.==.5;..........
3800 20 20 20 24 62 72 6f 77 73 65 72 5b 27 6e 73 36 75 70 27 5d 20 20 20 3d 20 24 62 72 6f 77 73 65 ...$browser['ns6up']...=.$browse
3820 72 5b 27 6e 73 36 27 5d 20 26 26 20 24 6d 61 6a 6f 72 56 65 72 73 69 6f 6e 20 3e 3d 20 35 3b 0a r['ns6'].&&.$majorVersion.>=.5;.
3840 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 67 65 63 6b 6f 27 5d 20 20 20 ............$browser['gecko']...
3860 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 67 65 63 6b 6f 27 29 20 21 3d 3d 20 66 61 6c =.(strpos($agt,.'gecko').!==.fal
3880 73 65 20 26 26 20 21 24 62 72 6f 77 73 65 72 5b 27 6b 6f 6e 71 27 5d 29 3b 0a 20 20 20 20 20 20 se.&&.!$browser['konq']);.......
38a0 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 69 65 27 5d 20 20 20 20 20 20 3d 20 28 73 74 72 ......$browser['ie']......=.(str
38c0 70 6f 73 28 24 61 67 74 2c 20 27 6d 73 69 65 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 26 26 20 pos($agt,.'msie').!==.false).&&.
38e0 21 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 6f 70 65 72 61 27 29 20 21 3d 3d 20 66 61 6c 73 !(strpos($agt,.'opera').!==.fals
3900 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 69 65 33 27 5d 20 e);.............$browser['ie3'].
3920 20 20 20 20 3d 20 24 62 72 6f 77 73 65 72 5b 27 69 65 27 5d 20 26 26 20 24 6d 61 6a 6f 72 56 65 ....=.$browser['ie'].&&.$majorVe
3940 72 73 69 6f 6e 20 3c 20 34 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b rsion.<.4;.............$browser[
3960 27 69 65 34 27 5d 20 20 20 20 20 3d 20 24 62 72 6f 77 73 65 72 5b 27 69 65 27 5d 20 26 26 20 24 'ie4'].....=.$browser['ie'].&&.$
3980 6d 61 6a 6f 72 56 65 72 73 69 6f 6e 20 3d 3d 20 34 20 26 26 20 28 73 74 72 70 6f 73 28 24 61 67 majorVersion.==.4.&&.(strpos($ag
39a0 74 2c 20 27 6d 73 69 65 20 34 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 t,.'msie.4').!==.false);........
39c0 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 69 65 34 75 70 27 5d 20 20 20 3d 20 24 62 72 6f 77 .....$browser['ie4up']...=.$brow
39e0 73 65 72 5b 27 69 65 27 5d 20 26 26 20 21 24 62 72 6f 77 73 65 72 5b 27 69 65 33 27 5d 3b 0a 20 ser['ie'].&&.!$browser['ie3'];..
3a00 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 69 65 35 27 5d 20 20 20 20 20 3d ...........$browser['ie5'].....=
3a20 20 24 62 72 6f 77 73 65 72 5b 27 69 65 34 75 70 27 5d 20 26 26 20 28 73 74 72 70 6f 73 28 24 61 .$browser['ie4up'].&&.(strpos($a
3a40 67 74 2c 20 27 6d 73 69 65 20 35 2e 30 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 gt,.'msie.5.0').!==.false);.....
3a60 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 69 65 35 5f 35 27 5d 20 20 20 3d 20 24 62 ........$browser['ie5_5']...=.$b
3a80 72 6f 77 73 65 72 5b 27 69 65 34 75 70 27 5d 20 26 26 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c rowser['ie4up'].&&.(strpos($agt,
3aa0 20 27 6d 73 69 65 20 35 2e 35 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 .'msie.5.5').!==.false);........
3ac0 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 69 65 35 75 70 27 5d 20 20 20 3d 20 24 62 72 6f 77 .....$browser['ie5up']...=.$brow
3ae0 73 65 72 5b 27 69 65 34 75 70 27 5d 20 26 26 20 21 24 62 72 6f 77 73 65 72 5b 27 69 65 33 27 5d ser['ie4up'].&&.!$browser['ie3']
3b00 20 26 26 20 21 24 62 72 6f 77 73 65 72 5b 27 69 65 34 27 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 .&&.!$browser['ie4'];...........
3b20 20 20 24 62 72 6f 77 73 65 72 5b 27 69 65 35 5f 35 75 70 27 5d 20 3d 20 24 62 72 6f 77 73 65 72 ..$browser['ie5_5up'].=.$browser
3b40 5b 27 69 65 35 75 70 27 5d 20 26 26 20 21 24 62 72 6f 77 73 65 72 5b 27 69 65 35 27 5d 3b 0a 20 ['ie5up'].&&.!$browser['ie5'];..
3b60 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 69 65 36 27 5d 20 20 20 20 20 3d ...........$browser['ie6'].....=
3b80 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 6d 73 69 65 20 36 27 29 20 21 3d 3d 20 66 61 6c .(strpos($agt,.'msie.6').!==.fal
3ba0 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 69 65 36 75 70 se);.............$browser['ie6up
3bc0 27 5d 20 20 20 3d 20 24 62 72 6f 77 73 65 72 5b 27 69 65 35 75 70 27 5d 20 26 26 20 21 24 62 72 ']...=.$browser['ie5up'].&&.!$br
3be0 6f 77 73 65 72 5b 27 69 65 35 27 5d 20 26 26 20 21 24 62 72 6f 77 73 65 72 5b 27 69 65 35 5f 35 owser['ie5'].&&.!$browser['ie5_5
3c00 27 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 6f 70 65 72 61 27 '];.............$browser['opera'
3c20 5d 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 6f 70 65 72 61 27 29 20 21 3d 3d ]...=.(strpos($agt,.'opera').!==
3c40 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 6f .false);.............$browser['o
3c60 70 65 72 61 32 27 5d 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 6f 70 65 72 61 20 pera2']..=.(strpos($agt,.'opera.
3c80 32 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 2').!==.false).||.(strpos($agt,.
3ca0 27 6f 70 65 72 61 2f 32 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 'opera/2').!==.false);..........
3cc0 20 20 20 24 62 72 6f 77 73 65 72 5b 27 6f 70 65 72 61 33 27 5d 20 20 3d 20 28 73 74 72 70 6f 73 ...$browser['opera3']..=.(strpos
3ce0 28 24 61 67 74 2c 20 27 6f 70 65 72 61 20 33 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 ($agt,.'opera.3').!==.false).||.
3d00 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 6f 70 65 72 61 2f 33 27 29 20 21 3d 3d 20 66 61 6c (strpos($agt,.'opera/3').!==.fal
3d20 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 6f 70 65 72 61 se);.............$browser['opera
3d40 34 27 5d 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 6f 70 65 72 61 20 34 27 29 20 4']..=.(strpos($agt,.'opera.4').
3d60 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 6f 70 65 !==.false).||.(strpos($agt,.'ope
3d80 72 61 2f 34 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 ra/4').!==.false);.............$
3da0 62 72 6f 77 73 65 72 5b 27 6f 70 65 72 61 35 27 5d 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 browser['opera5']..=.(strpos($ag
3dc0 74 2c 20 27 6f 70 65 72 61 20 35 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 t,.'opera.5').!==.false).||.(str
3de0 70 6f 73 28 24 61 67 74 2c 20 27 6f 70 65 72 61 2f 35 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b pos($agt,.'opera/5').!==.false);
3e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 6f 70 65 72 61 35 75 70 27 .............$browser['opera5up'
3e20 5d 20 3d 20 24 62 72 6f 77 73 65 72 5b 27 6f 70 65 72 61 27 5d 20 26 26 20 21 24 62 72 6f 77 73 ].=.$browser['opera'].&&.!$brows
3e40 65 72 5b 27 6f 70 65 72 61 32 27 5d 20 26 26 20 21 24 62 72 6f 77 73 65 72 5b 27 6f 70 65 72 61 er['opera2'].&&.!$browser['opera
3e60 33 27 5d 20 26 26 20 21 24 62 72 6f 77 73 65 72 5b 27 6f 70 65 72 61 34 27 5d 3b 0a 0a 20 20 20 3'].&&.!$browser['opera4'];.....
3e80 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 61 6f 6c 27 5d 20 20 20 3d 20 28 73 74 .........$browser['aol']...=.(st
3ea0 72 70 6f 73 28 24 61 67 74 2c 20 27 61 6f 6c 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 rpos($agt,.'aol').!==.false);...
3ec0 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 61 6f 6c 33 27 5d 20 20 3d 20 24 62 ..........$browser['aol3']..=.$b
3ee0 72 6f 77 73 65 72 5b 27 61 6f 6c 27 5d 20 26 26 20 24 62 72 6f 77 73 65 72 5b 27 69 65 33 27 5d rowser['aol'].&&.$browser['ie3']
3f00 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 61 6f 6c 34 27 5d 20 20 ;.............$browser['aol4']..
3f20 3d 20 24 62 72 6f 77 73 65 72 5b 27 61 6f 6c 27 5d 20 26 26 20 24 62 72 6f 77 73 65 72 5b 27 69 =.$browser['aol'].&&.$browser['i
3f40 65 34 27 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 61 6f 6c 35 e4'];.............$browser['aol5
3f60 27 5d 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 61 6f 6c 20 35 27 29 20 21 3d 3d ']..=.(strpos($agt,.'aol.5').!==
3f80 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 61 .false);.............$browser['a
3fa0 6f 6c 36 27 5d 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 61 6f 6c 20 36 27 29 20 ol6']..=.(strpos($agt,.'aol.6').
3fc0 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 !==.false);.............$browser
3fe0 5b 27 61 6f 6c 37 27 5d 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 61 6f 6c 20 37 ['aol7']..=.(strpos($agt,.'aol.7
4000 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 ').!==.false);.............$brow
4020 73 65 72 5b 27 77 65 62 74 76 27 5d 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 77 65 ser['webtv'].=.(strpos($agt,.'we
4040 62 74 76 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 btv').!==.false);..............$
4060 62 72 6f 77 73 65 72 5b 27 61 6f 6c 74 76 27 5d 20 3d 20 24 62 72 6f 77 73 65 72 5b 27 74 76 6e browser['aoltv'].=.$browser['tvn
4080 61 76 69 67 61 74 6f 72 27 5d 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 6e 61 76 69 avigator'].=.(strpos($agt,.'navi
40a0 6f 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 o').!==.false).||.(strpos($agt,.
40c0 27 6e 61 76 69 6f 5f 61 6f 6c 74 76 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 20 0a 20 20 20 20 'navio_aoltv').!==.false);......
40e0 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 68 6f 74 6a 61 76 61 27 5d 20 3d 20 28 73 ........$browser['hotjava'].=.(s
4100 74 72 70 6f 73 28 24 61 67 74 2c 20 27 68 6f 74 6a 61 76 61 27 29 20 21 3d 3d 20 66 61 6c 73 65 trpos($agt,.'hotjava').!==.false
4120 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 5b 27 68 6f 74 6a 61 76 61 );.............$browser['hotjava
4140 33 27 5d 20 3d 20 24 62 72 6f 77 73 65 72 5b 27 68 6f 74 6a 61 76 61 27 5d 20 26 26 20 24 6d 61 3'].=.$browser['hotjava'].&&.$ma
4160 6a 6f 72 56 65 72 73 69 6f 6e 20 3d 3d 20 33 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 72 jorVersion.==.3;.............$br
4180 6f 77 73 65 72 5b 27 68 6f 74 6a 61 76 61 33 75 70 27 5d 20 3d 20 24 62 72 6f 77 73 65 72 5b 27 owser['hotjava3up'].=.$browser['
41a0 68 6f 74 6a 61 76 61 27 5d 20 26 26 20 24 6d 61 6a 6f 72 56 65 72 73 69 6f 6e 20 3e 3d 20 33 3b hotjava'].&&.$majorVersion.>=.3;
41c0 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 64 65 74 65 63 74 46 .........}..........if.($detectF
41e0 6c 61 67 73 5b 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 54 45 43 54 5f 41 4c 4c 5d 20 7c lags[NET_USERAGENT_DETECT_ALL].|
4200 7c 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 24 64 65 74 65 63 74 46 6c 61 67 73 5b 4e 45 54 |..............($detectFlags[NET
4220 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 54 45 43 54 5f 42 52 4f 57 53 45 52 5d 20 26 26 20 24 64 _USERAGENT_DETECT_BROWSER].&&.$d
4240 65 74 65 63 74 46 6c 61 67 73 5b 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 54 45 43 54 5f etectFlags[NET_USERAGENT_DETECT_
4260 46 45 41 54 55 52 45 53 5d 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4a 61 76 FEATURES])).{.............//.Jav
4280 61 73 63 72 69 70 74 20 43 68 65 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 24 62 ascript.Check.............if.($b
42a0 72 6f 77 73 65 72 5b 27 6e 73 32 27 5d 20 7c 7c 20 24 62 72 6f 77 73 65 72 5b 27 69 65 33 27 5d rowser['ns2'].||.$browser['ie3']
42c0 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e ).{.................Net_UserAgen
42e0 74 5f 44 65 74 65 63 74 3a 3a 73 65 74 46 65 61 74 75 72 65 28 27 6a 61 76 61 73 63 72 69 70 74 t_Detect::setFeature('javascript
4300 27 2c 20 31 2e 30 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 ',.1.0);.............}..........
4320 20 20 20 65 6c 73 65 69 66 20 28 24 62 72 6f 77 73 65 72 5b 27 6f 70 65 72 61 35 75 70 27 5d 29 ...elseif.($browser['opera5up'])
4340 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 .{.................Net_UserAgent
4360 5f 44 65 74 65 63 74 3a 3a 73 65 74 46 65 61 74 75 72 65 28 27 6a 61 76 61 73 63 72 69 70 74 27 _Detect::setFeature('javascript'
4380 2c 20 31 2e 33 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 ,.1.3);.............}...........
43a0 20 20 65 6c 73 65 69 66 20 28 24 62 72 6f 77 73 65 72 5b 27 6f 70 65 72 61 27 5d 20 7c 7c 20 24 ..elseif.($browser['opera'].||.$
43c0 62 72 6f 77 73 65 72 5b 27 6e 73 33 27 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 browser['ns3']).{...............
43e0 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 73 65 74 46 65 61 74 75 ..Net_UserAgent_Detect::setFeatu
4400 72 65 28 27 6a 61 76 61 73 63 72 69 70 74 27 2c 20 31 2e 31 29 3b 0a 20 20 20 20 20 20 20 20 20 re('javascript',.1.1);..........
4420 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 69 66 20 28 28 24 62 72 6f 77 73 ...}.............elseif.(($brows
4440 65 72 5b 27 6e 73 34 27 5d 20 26 26 20 28 24 76 65 72 73 69 6f 6e 20 3c 3d 20 34 2e 30 35 29 29 er['ns4'].&&.($version.<=.4.05))
4460 20 7c 7c 20 24 62 72 6f 77 73 65 72 5b 27 69 65 34 27 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 20 .||.$browser['ie4']).{..........
4480 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 73 65 74 .......Net_UserAgent_Detect::set
44a0 46 65 61 74 75 72 65 28 27 6a 61 76 61 73 63 72 69 70 74 27 2c 20 31 2e 32 29 3b 0a 20 20 20 20 Feature('javascript',.1.2);.....
44c0 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 69 66 20 28 28 24 ........}.............elseif.(($
44e0 62 72 6f 77 73 65 72 5b 27 69 65 35 75 70 27 5d 20 26 26 20 73 74 72 70 6f 73 28 24 61 67 74 2c browser['ie5up'].&&.strpos($agt,
4500 20 27 6d 61 63 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 24 62 72 6f 77 73 65 72 5b 27 .'mac').!==.false).||.$browser['
4520 6b 6f 6e 71 27 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 konq']).{.................Net_Us
4540 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 73 65 74 46 65 61 74 75 72 65 28 27 6a 61 76 61 erAgent_Detect::setFeature('java
4560 73 63 72 69 70 74 27 2c 20 31 2e 34 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 script',.1.4);.............}....
4580 20 20 20 20 20 20 20 20 20 2f 2f 20 49 20 63 61 6e 27 74 20 62 65 6c 69 65 76 65 20 49 45 36 20 .........//.I.can't.believe.IE6.
45a0 73 74 69 6c 6c 20 68 61 73 20 6a 61 76 61 73 63 72 69 70 74 20 31 2e 33 2c 20 77 68 61 74 20 61 still.has.javascript.1.3,.what.a
45c0 20 73 68 69 74 74 79 20 62 72 6f 77 73 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 .shitty.browser.............else
45e0 69 66 20 28 28 24 62 72 6f 77 73 65 72 5b 27 6e 73 34 27 5d 20 26 26 20 28 24 76 65 72 73 69 6f if.(($browser['ns4'].&&.($versio
4600 6e 20 3e 20 34 2e 30 35 29 29 20 7c 7c 20 24 62 72 6f 77 73 65 72 5b 27 69 65 35 75 70 27 5d 20 n.>.4.05)).||.$browser['ie5up'].
4620 7c 7c 20 24 62 72 6f 77 73 65 72 5b 27 68 6f 74 6a 61 76 61 33 75 70 27 5d 29 20 7b 0a 20 20 20 ||.$browser['hotjava3up']).{....
4640 20 20 20 20 20 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 .............Net_UserAgent_Detec
4660 74 3a 3a 73 65 74 46 65 61 74 75 72 65 28 27 6a 61 76 61 73 63 72 69 70 74 27 2c 20 31 2e 33 29 t::setFeature('javascript',.1.3)
4680 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 ;.............}.............else
46a0 69 66 20 28 24 62 72 6f 77 73 65 72 5b 27 6e 73 36 75 70 27 5d 20 7c 7c 20 24 62 72 6f 77 73 65 if.($browser['ns6up'].||.$browse
46c0 72 5b 27 67 65 63 6b 6f 27 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4e 65 r['gecko']).{.................Ne
46e0 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 73 65 74 46 65 61 74 75 72 65 28 27 t_UserAgent_Detect::setFeature('
4700 6a 61 76 61 73 63 72 69 70 74 27 2c 20 31 2e 35 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d javascript',.1.5);.............}
4720 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 2f 2a 2a 20 .........}................../**.
4740 4f 53 20 43 68 65 63 6b 20 2a 2a 2f 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 64 65 74 65 63 74 OS.Check.**/.........if.($detect
4760 46 6c 61 67 73 5b 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 54 45 43 54 5f 41 4c 4c 5d 20 Flags[NET_USERAGENT_DETECT_ALL].
4780 7c 7c 20 24 64 65 74 65 63 74 46 6c 61 67 73 5b 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 ||.$detectFlags[NET_USERAGENT_DE
47a0 54 45 43 54 5f 4f 53 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 77 69 6e TECT_OS]).{.............$os['win
47c0 27 5d 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 77 69 6e 27 29 20 21 3d 3d 20 ']...=.(strpos($agt,.'win').!==.
47e0 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 31 36 62 69 74 27 29 false).||.(strpos($agt,.'16bit')
4800 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 77 69 .!==.false);.............$os['wi
4820 6e 39 35 27 5d 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 77 69 6e 39 35 27 29 20 21 n95'].=.(strpos($agt,.'win95').!
4840 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 77 69 6e 64 ==.false).||.(strpos($agt,.'wind
4860 6f 77 73 20 39 35 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ows.95').!==.false);............
4880 20 24 6f 73 5b 27 77 69 6e 31 36 27 5d 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 77 .$os['win16'].=.(strpos($agt,.'w
48a0 69 6e 31 36 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 6f 73 28 24 61 67 in16').!==.false).||.(strpos($ag
48c0 74 2c 20 27 31 36 62 69 74 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 6f t,.'16bit').!==.false).||.(strpo
48e0 73 28 24 61 67 74 2c 20 27 77 69 6e 64 6f 77 73 20 33 2e 31 27 29 20 21 3d 3d 20 66 61 6c 73 65 s($agt,.'windows.3.1').!==.false
4900 29 20 7c 7c 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 77 69 6e 64 6f 77 73 20 31 36 2d 62 ).||.(strpos($agt,.'windows.16-b
4920 69 74 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 it').!==.false);...............$
4940 6f 73 5b 27 77 69 6e 33 31 27 5d 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 77 69 6e os['win31'].=.(strpos($agt,.'win
4960 64 6f 77 73 20 33 2e 31 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 6f 73 dows.3.1').!==.false).||.(strpos
4980 28 24 61 67 74 2c 20 27 77 69 6e 31 36 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 ($agt,.'win16').!==.false).||.(s
49a0 74 72 70 6f 73 28 24 61 67 74 2c 20 27 77 69 6e 64 6f 77 73 20 31 36 2d 62 69 74 27 29 20 21 3d trpos($agt,.'windows.16-bit').!=
49c0 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 77 69 6e 6d 65 =.false);.............$os['winme
49e0 27 5d 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 77 69 6e 20 39 78 20 34 2e 39 30 27 '].=.(strpos($agt,.'win.9x.4.90'
4a00 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 77 ).!==.false);.............$os['w
4a20 69 6e 32 6b 27 5d 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 77 69 6e 64 6f 77 73 20 in2k'].=.(strpos($agt,.'windows.
4a40 6e 74 20 35 2e 30 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 nt.5.0').!==.false);............
4a60 20 24 6f 73 5b 27 77 69 6e 78 70 27 5d 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 77 .$os['winxp'].=.(strpos($agt,.'w
4a80 69 6e 64 6f 77 73 20 6e 74 20 35 2e 31 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 indows.nt.5.1').!==.false);.....
4aa0 20 20 20 20 20 20 20 20 24 6f 73 5b 27 77 69 6e 39 38 27 5d 20 3d 20 28 73 74 72 70 6f 73 28 24 ........$os['win98'].=.(strpos($
4ac0 61 67 74 2c 20 27 77 69 6e 39 38 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 agt,.'win98').!==.false).||.(str
4ae0 70 6f 73 28 24 61 67 74 2c 20 27 77 69 6e 64 6f 77 73 20 39 38 27 29 20 21 3d 3d 20 66 61 6c 73 pos($agt,.'windows.98').!==.fals
4b00 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 77 69 6e 39 78 27 5d 20 3d 20 24 e);.............$os['win9x'].=.$
4b20 6f 73 5b 27 77 69 6e 39 35 27 5d 20 7c 7c 20 24 6f 73 5b 27 77 69 6e 39 38 27 5d 3b 0a 20 20 20 os['win95'].||.$os['win98'];....
4b40 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 77 69 6e 6e 74 27 5d 20 3d 20 28 28 73 74 72 70 6f 73 .........$os['winnt'].=.((strpos
4b60 28 24 61 67 74 2c 20 27 77 69 6e 6e 74 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 ($agt,.'winnt').!==.false).||.(s
4b80 74 72 70 6f 73 28 24 61 67 74 2c 20 27 77 69 6e 64 6f 77 73 20 6e 74 27 29 20 21 3d 3d 20 66 61 trpos($agt,.'windows.nt').!==.fa
4ba0 6c 73 65 29 29 20 26 26 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 77 69 6e 64 6f 77 73 20 lse)).&&.(strpos($agt,.'windows.
4bc0 6e 74 20 35 27 29 20 3d 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 nt.5').===.false);.............$
4be0 6f 73 5b 27 77 69 6e 33 32 27 5d 20 3d 20 24 6f 73 5b 27 77 69 6e 39 35 27 5d 20 7c 7c 20 24 6f os['win32'].=.$os['win95'].||.$o
4c00 73 5b 27 77 69 6e 6e 74 27 5d 20 7c 7c 20 24 6f 73 5b 27 77 69 6e 39 38 27 5d 20 7c 7c 20 24 6d s['winnt'].||.$os['win98'].||.$m
4c20 61 6a 6f 72 56 65 72 73 69 6f 6e 20 3e 3d 20 34 20 26 26 20 28 73 74 72 70 6f 73 28 24 61 67 74 ajorVersion.>=.4.&&.(strpos($agt
4c40 2c 20 27 77 69 6e 33 32 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 6f 73 ,.'win32').!==.false).||.(strpos
4c60 28 24 61 67 74 2c 20 27 33 32 62 69 74 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 ($agt,.'32bit').!==.false);.....
4c80 20 20 20 20 20 20 20 20 24 6f 73 5b 27 6f 73 32 27 5d 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 ........$os['os2']...=.(strpos($
4ca0 61 67 74 2c 20 27 6f 73 2f 32 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 agt,.'os/2').!==.false).||.(strp
4cc0 6f 73 28 24 61 67 74 2c 20 27 69 62 6d 2d 77 65 62 65 78 70 6c 6f 72 65 72 27 29 20 21 3d 3d 20 os($agt,.'ibm-webexplorer').!==.
4ce0 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 6d 61 63 27 5d 20 20 false);.............$os['mac']..
4d00 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 6d 61 63 27 29 20 21 3d 3d 20 66 61 6c 73 .=.(strpos($agt,.'mac').!==.fals
4d20 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 6d 61 63 36 38 6b 27 5d 20 20 20 e);.............$os['mac68k']...
4d40 3d 20 24 6f 73 5b 27 6d 61 63 27 5d 20 26 26 20 28 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 =.$os['mac'].&&.((strpos($agt,.'
4d60 36 38 6b 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 6f 73 28 24 61 67 74 68k').!==.false).||.(strpos($agt
4d80 2c 20 27 36 38 30 30 30 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 29 3b 0a 20 20 20 20 20 20 20 20 ,.'68000').!==.false));.........
4da0 20 20 20 20 24 6f 73 5b 27 6d 61 63 70 70 63 27 5d 20 20 20 3d 20 24 6f 73 5b 27 6d 61 63 27 5d ....$os['macppc']...=.$os['mac']
4dc0 20 26 26 20 28 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 70 70 63 27 29 20 21 3d 3d 20 66 61 .&&.((strpos($agt,.'ppc').!==.fa
4de0 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 70 6f 77 65 72 70 63 27 29 lse).||.(strpos($agt,.'powerpc')
4e00 20 21 3d 3d 20 66 61 6c 73 65 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 73 .!==.false));.............$os['s
4e20 75 6e 27 5d 20 20 20 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 73 75 6e 6f 73 un']......=.(strpos($agt,.'sunos
4e40 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 ').!==.false);.............$os['
4e60 73 75 6e 34 27 5d 20 20 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 73 75 6e 6f sun4'].....=.(strpos($agt,.'suno
4e80 73 20 34 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f s.4').!==.false);.............$o
4ea0 73 5b 27 73 75 6e 35 27 5d 20 20 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 73 s['sun5'].....=.(strpos($agt,.'s
4ec0 75 6e 6f 73 20 35 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 unos.5').!==.false);............
4ee0 20 24 6f 73 5b 27 73 75 6e 69 38 36 27 5d 20 20 20 3d 20 24 6f 73 5b 27 73 75 6e 27 5d 20 26 26 .$os['suni86']...=.$os['sun'].&&
4f00 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 69 38 36 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 .(strpos($agt,.'i86').!==.false)
4f20 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 69 72 69 78 27 5d 20 20 20 20 20 3d 20 ;.............$os['irix'].....=.
4f40 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 69 72 69 78 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 (strpos($agt,.'irix').!==.false)
4f60 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 69 72 69 78 35 27 5d 20 20 20 20 3d 20 ;.............$os['irix5']....=.
4f80 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 69 72 69 78 20 35 27 29 20 21 3d 3d 20 66 61 6c 73 (strpos($agt,.'irix.5').!==.fals
4fa0 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 69 72 69 78 36 27 5d 20 20 20 20 e);.............$os['irix6']....
4fc0 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 69 72 69 78 20 36 27 29 20 21 3d 3d 20 66 61 =.(strpos($agt,.'irix.6').!==.fa
4fe0 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 69 72 69 78 36 27 29 20 21 lse).||.(strpos($agt,.'irix6').!
5000 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 68 70 75 78 ==.false);.............$os['hpux
5020 27 5d 20 20 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 68 70 2d 75 78 27 29 20 '].....=.(strpos($agt,.'hp-ux').
5040 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 68 70 75 !==.false);.............$os['hpu
5060 78 39 27 5d 20 20 20 20 3d 20 24 6f 73 5b 27 68 70 75 78 27 5d 20 26 26 20 28 73 74 72 70 6f 73 x9']....=.$os['hpux'].&&.(strpos
5080 28 24 61 67 74 2c 20 27 30 39 2e 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 ($agt,.'09.').!==.false);.......
50a0 20 20 20 20 20 20 24 6f 73 5b 27 68 70 75 78 31 30 27 5d 20 20 20 3d 20 24 6f 73 5b 27 68 70 75 ......$os['hpux10']...=.$os['hpu
50c0 78 27 5d 20 26 26 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 31 30 2e 27 29 20 21 3d 3d 20 x'].&&.(strpos($agt,.'10.').!==.
50e0 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 61 69 78 27 5d 20 20 false);.............$os['aix']..
5100 20 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 61 69 78 27 29 20 21 3d 3d 20 66 ....=.(strpos($agt,.'aix').!==.f
5120 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 61 69 78 31 27 5d 20 20 alse);.............$os['aix1']..
5140 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 61 69 78 20 31 27 29 20 21 3d 3d 20 ...=.(strpos($agt,.'aix.1').!==.
5160 66 61 6c 73 65 29 3b 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 61 69 78 false);.................$os['aix
5180 32 27 5d 20 20 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 61 69 78 20 32 27 29 2'].....=.(strpos($agt,.'aix.2')
51a0 20 21 3d 3d 20 66 61 6c 73 65 29 3b 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 .!==.false);.................$os
51c0 5b 27 61 69 78 33 27 5d 20 20 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 61 69 ['aix3'].....=.(strpos($agt,.'ai
51e0 78 20 33 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 x.3').!==.false);...............
5200 20 20 24 6f 73 5b 27 61 69 78 34 27 5d 20 20 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 ..$os['aix4'].....=.(strpos($agt
5220 2c 20 27 61 69 78 20 34 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 20 20 20 20 0a 20 20 20 20 20 ,.'aix.4').!==.false);..........
5240 20 20 20 20 20 20 20 24 6f 73 5b 27 6c 69 6e 75 78 27 5d 20 20 20 20 3d 20 28 73 74 72 70 6f 73 .......$os['linux']....=.(strpos
5260 28 24 61 67 74 2c 20 27 69 6e 75 78 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 ($agt,.'inux').!==.false);......
5280 20 20 20 20 20 20 20 24 6f 73 5b 27 73 63 6f 27 5d 20 20 20 20 20 20 3d 20 28 73 74 72 70 6f 73 .......$os['sco']......=.(strpos
52a0 28 24 61 67 74 2c 20 27 73 63 6f 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 ($agt,.'sco').!==.false).||.(str
52c0 70 6f 73 28 24 61 67 74 2c 20 27 75 6e 69 78 5f 73 76 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b pos($agt,.'unix_sv').!==.false);
52e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 75 6e 69 78 77 61 72 65 27 5d 20 3d 20 28 .............$os['unixware'].=.(
5300 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 75 6e 69 78 5f 73 79 73 74 65 6d 5f 76 27 29 20 21 3d strpos($agt,.'unix_system_v').!=
5320 3d 20 66 61 6c 73 65 29 3b 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 6d 70 72 61 =.false);..............$os['mpra
5340 73 27 5d 20 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 6e 63 72 27 29 20 21 3d s']....=.(strpos($agt,.'ncr').!=
5360 3d 20 66 61 6c 73 65 29 3b 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 72 65 6c 69 =.false);..............$os['reli
5380 61 6e 74 27 5d 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 72 65 6c 69 61 6e 74 27 ant']..=.(strpos($agt,.'reliant'
53a0 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 64 ).!==.false);.............$os['d
53c0 65 63 27 5d 20 20 20 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 64 65 63 27 29 ec']......=.(strpos($agt,.'dec')
53e0 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 6f 73 .!==.false).||.(strpos($agt,.'os
5400 66 31 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c f1').!==.false).||.(strpos($agt,
5420 20 27 64 65 63 5f 61 6c 70 68 61 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 .'dec_alpha').!==.false).||.(str
5440 70 6f 73 28 24 61 67 74 2c 20 27 61 6c 70 68 61 73 65 72 76 65 72 27 29 20 21 3d 3d 20 66 61 6c pos($agt,.'alphaserver').!==.fal
5460 73 65 29 20 7c 7c 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 75 6c 74 72 69 78 27 29 20 21 se).||.(strpos($agt,.'ultrix').!
5480 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 61 6c 70 68 ==.false).||.(strpos($agt,.'alph
54a0 61 73 74 61 74 69 6f 6e 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 astation').!==.false);..........
54c0 20 20 20 24 6f 73 5b 27 73 69 6e 69 78 27 5d 20 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 ...$os['sinix']....=.(strpos($ag
54e0 74 2c 20 27 73 69 6e 69 78 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 t,.'sinix').!==.false);.........
5500 20 20 20 20 24 6f 73 5b 27 66 72 65 65 62 73 64 27 5d 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 ....$os['freebsd']..=.(strpos($a
5520 67 74 2c 20 27 66 72 65 65 62 73 64 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 gt,.'freebsd').!==.false);......
5540 20 20 20 20 20 20 20 24 6f 73 5b 27 62 73 64 27 5d 20 20 20 20 20 20 3d 20 28 73 74 72 70 6f 73 .......$os['bsd']......=.(strpos
5560 28 24 61 67 74 2c 20 27 62 73 64 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 ($agt,.'bsd').!==.false);.......
5580 20 20 20 20 20 20 24 6f 73 5b 27 75 6e 69 78 27 5d 20 20 20 20 20 3d 20 28 73 74 72 70 6f 73 28 ......$os['unix'].....=.(strpos(
55a0 24 61 67 74 2c 20 27 78 31 31 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 $agt,.'x11').!==.false).||.(strp
55c0 6f 73 28 24 61 67 74 2c 20 27 75 6e 69 78 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7c 7c 20 24 os($agt,.'unix').!==.false).||.$
55e0 6f 73 5b 27 73 75 6e 27 5d 20 7c 7c 20 24 6f 73 5b 27 69 72 69 78 27 5d 20 7c 7c 20 24 6f 73 5b os['sun'].||.$os['irix'].||.$os[
5600 27 68 70 75 78 27 5d 20 7c 7c 20 24 6f 73 5b 27 73 63 6f 27 5d 20 7c 7c 20 24 6f 73 5b 27 75 6e 'hpux'].||.$os['sco'].||.$os['un
5620 69 78 77 61 72 65 27 5d 20 7c 7c 20 24 6f 73 5b 27 6d 70 72 61 73 27 5d 20 7c 7c 20 24 6f 73 5b ixware'].||.$os['mpras'].||.$os[
5640 27 72 65 6c 69 61 6e 74 27 5d 20 7c 7c 20 24 6f 73 5b 27 64 65 63 27 5d 20 7c 7c 20 24 6f 73 5b 'reliant'].||.$os['dec'].||.$os[
5660 27 73 69 6e 69 78 27 5d 20 7c 7c 20 24 6f 73 5b 27 61 69 78 27 5d 20 7c 7c 20 24 6f 73 5b 27 6c 'sinix'].||.$os['aix'].||.$os['l
5680 69 6e 75 78 27 5d 20 7c 7c 20 24 6f 73 5b 27 62 73 64 27 5d 20 7c 7c 20 24 6f 73 5b 27 66 72 65 inux'].||.$os['bsd'].||.$os['fre
56a0 65 62 73 64 27 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 73 5b 27 76 6d 73 27 5d 20 20 ebsd'];.............$os['vms']..
56c0 20 20 20 20 3d 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 76 61 78 27 29 20 21 3d 3d 20 66 ....=.(strpos($agt,.'vax').!==.f
56e0 61 6c 73 65 29 20 7c 7c 20 28 73 74 72 70 6f 73 28 24 61 67 74 2c 20 27 6f 70 65 6e 76 6d 73 27 alse).||.(strpos($agt,.'openvms'
5700 29 20 21 3d 3d 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 ).!==.false);.........}.........
5720 20 2f 2f 20 53 65 74 75 70 20 74 68 65 20 71 75 69 72 6b 73 0a 20 20 20 20 20 20 20 20 69 66 20 .//.Setup.the.quirks.........if.
5740 28 24 64 65 74 65 63 74 46 6c 61 67 73 5b 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 54 45 ($detectFlags[NET_USERAGENT_DETE
5760 43 54 5f 41 4c 4c 5d 20 7c 7c 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 24 64 65 74 65 63 74 CT_ALL].||..............($detect
5780 46 6c 61 67 73 5b 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 54 45 43 54 5f 42 52 4f 57 53 Flags[NET_USERAGENT_DETECT_BROWS
57a0 45 52 5d 20 26 26 20 24 64 65 74 65 63 74 46 6c 61 67 73 5b 4e 45 54 5f 55 53 45 52 41 47 45 4e ER].&&.$detectFlags[NET_USERAGEN
57c0 54 5f 44 45 54 45 43 54 5f 51 55 49 52 4b 53 5d 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 T_DETECT_QUIRKS])).{............
57e0 20 69 66 20 28 24 62 72 6f 77 73 65 72 5b 27 6b 6f 6e 71 27 5d 29 20 7b 0a 20 20 20 20 20 20 20 .if.($browser['konq']).{........
5800 20 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 73 .........Net_UserAgent_Detect::s
5820 65 74 51 75 69 72 6b 28 27 65 6d 70 74 79 5f 66 69 6c 65 5f 69 6e 70 75 74 5f 76 61 6c 75 65 27 etQuirk('empty_file_input_value'
5840 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 );.............}..............if
5860 20 28 24 62 72 6f 77 73 65 72 5b 27 69 65 27 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 .($browser['ie']).{.............
5880 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 73 65 74 51 75 69 ....Net_UserAgent_Detect::setQui
58a0 72 6b 28 27 63 61 63 68 65 5f 73 73 6c 5f 64 6f 77 6e 6c 6f 61 64 73 27 29 3b 0a 20 20 20 20 20 rk('cache_ssl_downloads');......
58c0 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 24 62 72 6f 77 73 .......}..............if.($brows
58e0 65 72 5b 27 69 65 36 27 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4e 65 74 er['ie6']).{.................Net
5900 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 73 65 74 51 75 69 72 6b 28 27 73 63 72 _UserAgent_Detect::setQuirk('scr
5920 6f 6c 6c 62 61 72 5f 69 6e 5f 77 61 79 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 0a ollbar_in_way');.............}..
5940 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 24 62 72 6f 77 73 65 72 5b 27 69 65 35 27 5d 29 ............if.($browser['ie5'])
5960 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 .{.................Net_UserAgent
5980 5f 44 65 74 65 63 74 3a 3a 73 65 74 51 75 69 72 6b 28 27 62 72 65 61 6b 5f 64 69 73 70 6f 73 69 _Detect::setQuirk('break_disposi
59a0 74 69 6f 6e 5f 68 65 61 64 65 72 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 tion_header');.............}....
59c0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 24 62 72 6f 77 73 65 72 5b 27 6e 73 36 27 5d 29 20 7b ..........if.($browser['ns6']).{
59e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 .................Net_UserAgent_D
5a00 65 74 65 63 74 3a 3a 73 65 74 51 75 69 72 6b 28 27 70 6f 70 75 70 73 5f 64 69 73 61 62 6c 65 64 etect::setQuirk('popups_disabled
5a20 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e ');.................Net_UserAgen
5a40 74 5f 44 65 74 65 63 74 3a 3a 73 65 74 51 75 69 72 6b 28 27 6d 75 73 74 5f 63 61 63 68 65 5f 66 t_Detect::setQuirk('must_cache_f
5a60 6f 72 6d 73 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 orms');.............}...........
5a80 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 24 62 72 6f 77 73 65 72 5b 27 6e 61 76 ...............if.($browser['nav
5aa0 27 5d 20 26 26 20 24 73 75 62 56 65 72 73 69 6f 6e 20 3c 20 2e 37 39 29 20 7b 0a 20 20 20 20 20 '].&&.$subVersion.<..79).{......
5ac0 20 20 20 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a ...........Net_UserAgent_Detect:
5ae0 3a 73 65 74 51 75 69 72 6b 28 27 6e 65 73 74 65 64 5f 74 61 62 6c 65 5f 72 65 6e 64 65 72 5f 62 :setQuirk('nested_table_render_b
5b00 75 67 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 ug');.............}.........}...
5b20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 2f 2f 20 53 65 74 20 66 65 61 74 75 72 ...................//.Set.featur
5b40 65 73 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 64 65 74 65 63 74 46 6c 61 67 73 5b 4e 45 54 5f es.........if.($detectFlags[NET_
5b60 55 53 45 52 41 47 45 4e 54 5f 44 45 54 45 43 54 5f 41 4c 4c 5d 20 7c 7c 20 0a 20 20 20 20 20 20 USERAGENT_DETECT_ALL].||........
5b80 20 20 20 20 20 20 28 24 64 65 74 65 63 74 46 6c 61 67 73 5b 4e 45 54 5f 55 53 45 52 41 47 45 4e ......($detectFlags[NET_USERAGEN
5ba0 54 5f 44 45 54 45 43 54 5f 42 52 4f 57 53 45 52 5d 20 26 26 20 24 64 65 74 65 63 74 46 6c 61 67 T_DETECT_BROWSER].&&.$detectFlag
5bc0 73 5b 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 54 45 43 54 5f 46 45 41 54 55 52 45 53 5d s[NET_USERAGENT_DETECT_FEATURES]
5be0 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 24 62 72 6f 77 73 65 72 5b 27 67 )).{.............if.($browser['g
5c00 65 63 6b 6f 27 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 67 5f 6d ecko']).{.................preg_m
5c20 61 74 63 68 28 27 3b 67 65 63 6b 6f 2f 28 5b 5c 64 5d 2b 29 5c 62 3b 69 27 2c 20 24 61 67 74 2c atch(';gecko/([\d]+)\b;i',.$agt,
5c40 20 24 6d 61 74 63 68 65 73 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4e 65 74 5f .$matches);.................Net_
5c60 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 73 65 74 46 65 61 74 75 72 65 28 27 67 65 UserAgent_Detect::setFeature('ge
5c80 63 6b 6f 27 2c 20 24 6d 61 74 63 68 65 73 5b 31 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 cko',.$matches[1]);.............
5ca0 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 24 62 72 6f 77 73 65 72 5b 27 6e 73 36 }..............if.($browser['ns6
5cc0 75 70 27 5d 20 7c 7c 20 24 62 72 6f 77 73 65 72 5b 27 6f 70 65 72 61 35 75 70 27 5d 20 7c 7c 20 up'].||.$browser['opera5up'].||.
5ce0 24 62 72 6f 77 73 65 72 5b 27 6b 6f 6e 71 27 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 $browser['konq']).{.............
5d00 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 73 65 74 46 65 61 ....Net_UserAgent_Detect::setFea
5d20 74 75 72 65 28 27 64 6f 6d 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 ture('dom');.............}......
5d40 20 20 20 20 20 20 20 20 69 66 20 28 24 62 72 6f 77 73 65 72 5b 27 69 65 34 75 70 27 5d 20 7c 7c ........if.($browser['ie4up'].||
5d60 20 24 62 72 6f 77 73 65 72 5b 27 6e 73 34 75 70 27 5d 20 7c 7c 20 24 62 72 6f 77 73 65 72 5b 27 .$browser['ns4up'].||.$browser['
5d80 6f 70 65 72 61 35 75 70 27 5d 20 7c 7c 20 24 62 72 6f 77 73 65 72 5b 27 6b 6f 6e 71 27 5d 29 20 opera5up'].||.$browser['konq']).
5da0 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f {.................Net_UserAgent_
5dc0 44 65 74 65 63 74 3a 3a 73 65 74 46 65 61 74 75 72 65 28 27 64 68 74 6d 6c 27 29 3b 0a 20 20 20 Detect::setFeature('dhtml');....
5de0 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 .........}.........}..........if
5e00 20 28 24 64 65 74 65 63 74 46 6c 61 67 73 5b 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 54 .($detectFlags[NET_USERAGENT_DET
5e20 45 43 54 5f 41 4c 4c 5d 20 7c 7c 20 24 64 65 74 65 63 74 46 6c 61 67 73 5b 4e 45 54 5f 55 53 45 ECT_ALL].||.$detectFlags[NET_USE
5e40 52 41 47 45 4e 54 5f 44 45 54 45 43 54 5f 41 43 43 45 50 54 5d 29 20 7b 0a 20 20 20 20 20 20 20 RAGENT_DETECT_ACCEPT]).{........
5e60 20 20 20 20 20 24 6d 69 6d 65 74 79 70 65 73 20 3d 20 70 72 65 67 5f 73 70 6c 69 74 28 27 3b 5b .....$mimetypes.=.preg_split(';[
5e80 5c 73 2c 5d 2b 3b 27 2c 20 73 75 62 73 74 72 28 67 65 74 65 6e 76 28 27 48 54 54 50 5f 41 43 43 \s,]+;',.substr(getenv('HTTP_ACC
5ea0 45 50 54 27 29 2c 20 30 2c 20 73 74 72 70 6f 73 28 67 65 74 65 6e 76 28 27 48 54 54 50 5f 41 43 EPT'),.0,.strpos(getenv('HTTP_AC
5ec0 43 45 50 54 27 29 20 2e 20 27 3b 27 2c 20 27 3b 27 29 29 2c 20 2d 31 2c 20 50 52 45 47 5f 53 50 CEPT')...';',.';')),.-1,.PREG_SP
5ee0 4c 49 54 5f 4e 4f 5f 45 4d 50 54 59 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 4e 65 74 5f 55 LIT_NO_EMPTY);.............Net_U
5f00 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 73 65 74 41 63 63 65 70 74 54 79 70 65 28 28 serAgent_Detect::setAcceptType((
5f20 61 72 72 61 79 29 20 24 6d 69 6d 65 74 79 70 65 73 2c 20 27 6d 69 6d 65 74 79 70 65 27 29 3b 0a array).$mimetypes,.'mimetype');.
5f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6c 61 6e 67 75 61 67 65 73 20 3d 20 70 72 65 67 5f 73 .............$languages.=.preg_s
5f60 70 6c 69 74 28 27 3b 5b 5c 73 2c 5d 2b 3b 27 2c 20 73 75 62 73 74 72 28 67 65 74 65 6e 76 28 27 plit(';[\s,]+;',.substr(getenv('
5f80 48 54 54 50 5f 41 43 43 45 50 54 5f 4c 41 4e 47 55 41 47 45 27 29 2c 20 30 2c 20 73 74 72 70 6f HTTP_ACCEPT_LANGUAGE'),.0,.strpo
5fa0 73 28 67 65 74 65 6e 76 28 27 48 54 54 50 5f 41 43 43 45 50 54 5f 4c 41 4e 47 55 41 47 45 27 29 s(getenv('HTTP_ACCEPT_LANGUAGE')
5fc0 20 2e 20 27 3b 27 2c 20 27 3b 27 29 29 2c 20 2d 31 2c 20 50 52 45 47 5f 53 50 4c 49 54 5f 4e 4f ...';',.';')),.-1,.PREG_SPLIT_NO
5fe0 5f 45 4d 50 54 59 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6d 70 74 79 28 24 _EMPTY);.............if.(empty($
6000 6c 61 6e 67 75 61 67 65 73 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 6c languages)).{.................$l
6020 61 6e 67 75 61 67 65 73 20 3d 20 27 65 6e 27 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 0a anguages.=.'en';.............}..
6040 20 20 20 20 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 ............Net_UserAgent_Detect
6060 3a 3a 73 65 74 41 63 63 65 70 74 54 79 70 65 28 28 61 72 72 61 79 29 20 24 6c 61 6e 67 75 61 67 ::setAcceptType((array).$languag
6080 65 73 2c 20 27 6c 61 6e 67 75 61 67 65 27 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 65 es,.'language');..............$e
60a0 6e 63 6f 64 69 6e 67 73 20 3d 20 70 72 65 67 5f 73 70 6c 69 74 28 27 3b 5b 5c 73 2c 5d 2b 3b 27 ncodings.=.preg_split(';[\s,]+;'
60c0 2c 20 73 75 62 73 74 72 28 67 65 74 65 6e 76 28 27 48 54 54 50 5f 41 43 43 45 50 54 5f 45 4e 43 ,.substr(getenv('HTTP_ACCEPT_ENC
60e0 4f 44 49 4e 47 27 29 2c 20 30 2c 20 73 74 72 70 6f 73 28 67 65 74 65 6e 76 28 27 48 54 54 50 5f ODING'),.0,.strpos(getenv('HTTP_
6100 41 43 43 45 50 54 5f 45 4e 43 4f 44 49 4e 47 27 29 20 2e 20 27 3b 27 2c 20 27 3b 27 29 29 2c 20 ACCEPT_ENCODING')...';',.';')),.
6120 2d 31 2c 20 50 52 45 47 5f 53 50 4c 49 54 5f 4e 4f 5f 45 4d 50 54 59 29 3b 0a 20 20 20 20 20 20 -1,.PREG_SPLIT_NO_EMPTY);.......
6140 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 73 65 74 41 ......Net_UserAgent_Detect::setA
6160 63 63 65 70 74 54 79 70 65 28 28 61 72 72 61 79 29 20 24 65 6e 63 6f 64 69 6e 67 73 2c 20 27 65 cceptType((array).$encodings,.'e
6180 6e 63 6f 64 69 6e 67 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 ncoding');......................
61a0 20 20 20 20 24 63 68 61 72 73 65 74 73 20 3d 20 70 72 65 67 5f 73 70 6c 69 74 28 27 3b 5b 5c 73 ....$charsets.=.preg_split(';[\s
61c0 2c 5d 2b 3b 27 2c 20 73 75 62 73 74 72 28 67 65 74 65 6e 76 28 27 48 54 54 50 5f 41 43 43 45 50 ,]+;',.substr(getenv('HTTP_ACCEP
61e0 54 5f 43 48 41 52 53 45 54 27 29 2c 20 30 2c 20 73 74 72 70 6f 73 28 67 65 74 65 6e 76 28 27 48 T_CHARSET'),.0,.strpos(getenv('H
6200 54 54 50 5f 41 43 43 45 50 54 5f 43 48 41 52 53 45 54 27 29 20 2e 20 27 3b 27 2c 20 27 3b 27 29 TTP_ACCEPT_CHARSET')...';',.';')
6220 29 2c 20 2d 31 2c 20 50 52 45 47 5f 53 50 4c 49 54 5f 4e 4f 5f 45 4d 50 54 59 29 3b 0a 20 20 20 ),.-1,.PREG_SPLIT_NO_EMPTY);....
6240 20 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 73 .........Net_UserAgent_Detect::s
6260 65 74 41 63 63 65 70 74 54 79 70 65 28 28 61 72 72 61 79 29 20 24 63 68 61 72 73 65 74 73 2c 20 etAcceptType((array).$charsets,.
6280 27 63 68 61 72 73 65 74 27 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 'charset');.........}.....}.....
62a0 0a 20 20 20 20 2f 2f 20 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 73 65 74 4f 70 74 69 6f 6e .....//.}}}.....//.{{{.setOption
62c0 28 29 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 53 65 74 73 20 61 20 63 6c 61 73 73 20 ()....../**......*.Sets.a.class.
62e0 6f 70 74 69 6f 6e 2e 20 20 54 68 65 20 61 76 61 69 6c 61 62 6c 65 20 73 65 74 74 69 6e 67 73 20 option...The.available.settings.
6300 61 72 65 3a 0a 20 20 20 20 20 2a 20 6f 20 27 75 73 65 72 41 67 65 6e 74 27 20 3d 3e 20 54 68 65 are:......*.o.'userAgent'.=>.The
6320 20 75 73 65 72 20 61 67 65 6e 74 20 73 74 72 69 6e 67 20 74 6f 20 64 65 74 65 63 74 20 28 75 73 .user.agent.string.to.detect.(us
6340 65 66 75 6c 20 66 6f 72 0a 20 20 20 20 20 2a 20 63 68 65 63 6b 69 6e 67 20 61 20 73 74 72 69 6e eful.for......*.checking.a.strin
6360 67 20 6d 61 6e 75 61 6c 6c 79 29 2e 0a 20 20 20 20 20 2a 20 6f 20 27 64 65 74 65 63 74 4f 70 74 g.manually).......*.o.'detectOpt
6380 69 6f 6e 73 27 20 3d 3e 20 54 68 65 20 6c 65 76 65 6c 20 6f 66 20 63 68 65 63 6b 69 6e 67 20 74 ions'.=>.The.level.of.checking.t
63a0 6f 20 64 6f 2e 20 20 41 20 73 69 6e 67 6c 65 20 6c 65 76 65 6c 0a 20 20 20 20 20 2a 20 6f 72 20 o.do...A.single.level......*.or.
63c0 61 6e 20 61 72 72 61 79 20 6f 66 20 6f 70 74 69 6f 6e 73 2e 20 20 44 65 66 61 75 6c 74 20 69 73 an.array.of.options...Default.is
63e0 20 4e 45 54 5f 55 53 45 52 41 47 45 4e 54 5f 44 45 54 45 43 54 5f 41 4c 4c 2e 0a 20 20 20 20 20 .NET_USERAGENT_DETECT_ALL.......
6400 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 69 6e 5f 66 69 65 6c 64 *......*.@param.string.$in_field
6420 20 54 68 65 20 6f 70 74 69 6f 6e 20 66 69 65 6c 64 20 28 75 73 65 72 41 67 65 6e 74 20 6f 72 20 .The.option.field.(userAgent.or.
6440 64 65 74 65 63 74 4f 70 74 69 6f 6e 73 29 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 6d 69 78 detectOptions)......*.@param.mix
6460 65 64 20 24 69 6e 5f 76 61 6c 75 65 20 54 68 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20 66 ed.$in_value.The.value.for.the.f
6480 69 65 6c 64 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 74 4f 70 74 ield......*/.....function.setOpt
64a0 69 6f 6e 28 24 69 6e 5f 66 69 65 6c 64 2c 20 24 69 6e 5f 76 61 6c 75 65 29 0a 20 20 20 20 7b 0a ion($in_field,.$in_value).....{.
64c0 20 20 20 20 20 20 20 20 24 6f 70 74 69 6f 6e 73 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e ........$options.=.&Net_UserAgen
64e0 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 6f 70 t_Detect::_getStaticProperty('op
6500 74 69 6f 6e 73 27 29 3b 0a 20 20 20 20 20 20 20 20 24 6f 70 74 69 6f 6e 73 5b 24 69 6e 5f 66 69 tions');.........$options[$in_fi
6520 65 6c 64 5d 20 3d 20 24 69 6e 5f 76 61 6c 75 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 eld].=.$in_value;.....}......//.
6540 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 69 73 42 72 6f 77 73 65 72 28 29 0a 0a 20 20 20 20 }}}.....//.{{{.isBrowser()......
6560 2f 2a 2a 0a 20 20 20 20 20 2a 20 4c 6f 6f 6b 20 75 70 20 74 68 65 20 70 72 6f 76 69 64 65 20 62 /**......*.Look.up.the.provide.b
6580 72 6f 77 73 65 72 20 66 6c 61 67 20 61 6e 64 20 72 65 74 75 72 6e 20 61 20 62 6f 6f 6c 65 61 6e rowser.flag.and.return.a.boolean
65a0 20 76 61 6c 75 65 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 47 69 76 65 6e 20 6f 6e 65 20 6f .value......*......*.Given.one.o
65c0 66 20 74 68 65 20 66 6c 61 67 73 20 6c 69 73 74 65 64 20 69 6e 20 74 68 65 20 70 72 6f 70 65 72 f.the.flags.listed.in.the.proper
65e0 74 69 65 73 2c 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 72 65 74 75 72 6e 0a ties,.this.function.will.return.
6600 20 20 20 20 20 2a 20 74 68 65 20 76 61 6c 75 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 .....*.the.value.associated.with
6620 20 74 68 61 74 20 66 6c 61 67 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d .that.flag.......*......*.@param
6640 20 20 73 74 72 69 6e 67 20 24 69 6e 5f 6d 61 74 63 68 20 66 6c 61 67 20 74 6f 20 6c 6f 6f 6b 75 ..string.$in_match.flag.to.looku
6660 70 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 p......*......*.@access.public..
6680 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 62 6f 6f 6c 65 61 6e 20 77 68 65 74 68 65 72 20 6f 72 ....*.@return.boolean.whether.or
66a0 20 6e 6f 74 20 74 68 65 20 62 72 6f 77 73 65 72 20 73 61 74 69 73 66 69 65 73 20 74 68 69 73 20 .not.the.browser.satisfies.this.
66c0 66 6c 61 67 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 42 72 6f 77 flag......*/.....function.isBrow
66e0 73 65 72 28 24 69 6e 5f 6d 61 74 63 68 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 4e 65 74 ser($in_match).....{.........Net
6700 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 64 65 74 65 63 74 28 29 3b 0a 20 20 20 _UserAgent_Detect::detect();....
6720 20 20 20 20 20 24 62 72 6f 77 73 65 72 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 .....$browser.=.&Net_UserAgent_D
6740 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 62 72 6f 77 73 etect::_getStaticProperty('brows
6760 65 72 27 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 73 73 65 74 28 24 62 72 6f 77 er');.........return.isset($brow
6780 73 65 72 5b 73 74 72 74 6f 6c 6f 77 65 72 28 24 69 6e 5f 6d 61 74 63 68 29 5d 29 20 3f 20 24 62 ser[strtolower($in_match)]).?.$b
67a0 72 6f 77 73 65 72 5b 73 74 72 74 6f 6c 6f 77 65 72 28 24 69 6e 5f 6d 61 74 63 68 29 5d 20 3a 20 rowser[strtolower($in_match)].:.
67c0 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 7d 7d 7d 0a 20 20 20 20 2f 2f 20 false;.....}......//.}}}.....//.
67e0 7b 7b 7b 20 67 65 74 42 72 6f 77 73 65 72 28 29 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a {{{.getBrowser()....../**......*
6800 20 53 69 6e 63 65 20 73 69 6d 70 6c 79 20 72 65 74 75 72 6e 69 6e 67 20 74 68 65 20 22 62 72 6f .Since.simply.returning.the."bro
6820 77 73 65 72 22 20 69 73 20 73 6f 6d 65 77 68 61 74 20 61 6d 62 69 67 75 6f 75 73 20 73 69 6e 63 wser".is.somewhat.ambiguous.sinc
6840 65 20 74 68 65 72 65 0a 20 20 20 20 20 2a 20 61 72 65 20 64 69 66 66 65 72 65 6e 74 20 77 61 79 e.there......*.are.different.way
6860 73 20 74 6f 20 63 6c 61 73 73 69 66 79 20 74 68 65 20 62 72 6f 77 73 65 72 2c 20 74 68 69 73 20 s.to.classify.the.browser,.this.
6880 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 20 62 79 20 74 61 6b 69 6e 67 0a 20 20 20 20 20 2a 20 function.works.by.taking......*.
68a0 61 6e 20 65 78 70 65 63 74 20 6c 69 73 74 20 61 6e 64 20 72 65 74 75 72 6e 69 6e 67 20 74 68 65 an.expect.list.and.returning.the
68c0 20 73 74 72 69 6e 67 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 6d 61 74 63 68 2c 20 73 6f 20 70 .string.of.the.first.match,.so.p
68e0 75 74 20 74 68 65 20 69 6d 70 6f 72 74 61 6e 74 0a 20 20 20 20 20 2a 20 6f 6e 65 73 20 66 69 72 ut.the.important......*.ones.fir
6900 73 74 20 69 6e 20 74 68 65 20 61 72 72 61 79 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 st.in.the.array.......*......*.@
6920 70 61 72 61 6d 20 20 61 72 72 61 79 20 24 69 6e 5f 65 78 70 65 63 74 4c 69 73 74 20 74 68 65 20 param..array.$in_expectList.the.
6940 62 72 6f 77 73 65 72 20 66 6c 61 67 73 20 74 6f 20 73 65 61 72 63 68 20 66 6f 72 0a 20 20 20 20 browser.flags.to.search.for.....
6960 20 2a 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 20 .*......*.@access.public......*.
6980 40 72 65 74 75 72 6e 20 73 74 72 69 6e 67 20 66 69 72 73 74 20 66 6c 61 67 20 74 68 61 74 20 6d @return.string.first.flag.that.m
69a0 61 74 63 68 65 73 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 42 atches......*/.....function.getB
69c0 72 6f 77 73 65 72 28 24 69 6e 5f 65 78 70 65 63 74 4c 69 73 74 29 0a 20 20 20 20 7b 0a 20 20 20 rowser($in_expectList).....{....
69e0 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 64 65 74 65 63 .....Net_UserAgent_Detect::detec
6a00 74 28 29 3b 0a 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 20 3d 20 26 4e 65 74 5f 55 73 65 t();.........$browser.=.&Net_Use
6a20 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 rAgent_Detect::_getStaticPropert
6a40 79 28 27 62 72 6f 77 73 65 72 27 29 3b 0a 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 28 28 61 y('browser');.........foreach((a
6a60 72 72 61 79 29 20 24 69 6e 5f 65 78 70 65 63 74 4c 69 73 74 20 61 73 20 24 62 72 77 73 72 29 20 rray).$in_expectList.as.$brwsr).
6a80 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 65 6d 70 74 79 28 24 62 72 6f 77 73 65 {.............if.(!empty($browse
6aa0 72 5b 73 74 72 74 6f 6c 6f 77 65 72 28 24 62 72 77 73 72 29 5d 29 29 20 7b 0a 20 20 20 20 20 20 r[strtolower($brwsr)])).{.......
6ac0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 62 72 77 73 72 3b 0a 20 20 20 20 20 20 20 ..........return.$brwsr;........
6ae0 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 7d .....}.........}.....}......//.}
6b00 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 67 65 74 42 72 6f 77 73 65 72 53 74 72 69 6e 67 28 29 }}.....//.{{{.getBrowserString()
6b20 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 ....../**......*.This.function.r
6b40 65 74 75 72 6e 73 20 74 68 65 20 76 65 6e 64 6f 72 20 73 74 72 69 6e 67 20 63 6f 72 72 65 73 70 eturns.the.vendor.string.corresp
6b60 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 66 6c 61 67 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 onding.to.the.flag.......*......
6b80 2a 20 45 69 74 68 65 72 20 75 73 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 61 74 63 68 65 73 *.Either.use.the.default.matches
6ba0 20 6f 72 20 70 61 73 73 20 69 6e 20 61 6e 20 61 73 73 6f 63 69 61 74 69 76 65 20 61 72 72 61 79 .or.pass.in.an.associative.array
6bc0 20 6f 66 0a 20 20 20 20 20 2a 20 66 6c 61 67 73 20 61 6e 64 20 63 6f 72 72 65 73 70 6f 6e 64 69 .of......*.flags.and.correspondi
6be0 6e 67 20 76 65 6e 64 6f 72 20 73 74 72 69 6e 67 73 2e 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f ng.vendor.strings...This.functio
6c00 6e 20 77 69 6c 6c 20 66 69 6e 64 0a 20 20 20 20 20 2a 20 74 68 65 20 68 69 67 68 65 73 74 20 76 n.will.find......*.the.highest.v
6c20 65 72 73 69 6f 6e 20 66 6c 61 67 20 61 6e 64 20 72 65 74 75 72 6e 20 74 68 65 20 76 65 6e 64 6f ersion.flag.and.return.the.vendo
6c40 72 20 73 74 72 69 6e 67 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a 20 20 20 20 20 2a 20 74 6f r.string.corresponding......*.to
6c60 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 20 66 6c 61 67 2e 20 20 42 65 20 73 75 72 65 20 .the.appropriate.flag...Be.sure.
6c80 74 6f 20 70 61 73 73 20 69 6e 20 74 68 65 20 66 6c 61 67 73 20 69 6e 20 61 73 63 65 6e 64 69 6e to.pass.in.the.flags.in.ascendin
6ca0 67 20 6f 72 64 65 72 0a 20 20 20 20 20 2a 20 69 66 20 79 6f 75 20 77 61 6e 74 20 61 20 62 61 73 g.order......*.if.you.want.a.bas
6cc0 69 63 20 6d 61 74 63 68 65 73 20 66 69 72 73 74 2c 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 6d 6f ic.matches.first,.followed.by.mo
6ce0 72 65 20 64 65 74 61 69 6c 65 64 20 6d 61 74 63 68 65 73 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 re.detailed.matches.......*.....
6d00 20 2a 20 40 70 61 72 61 6d 20 20 61 72 72 61 79 20 24 69 6e 5f 76 65 6e 64 6f 72 53 74 72 69 6e .*.@param..array.$in_vendorStrin
6d20 67 73 20 28 6f 70 74 69 6f 6e 61 6c 29 20 61 72 72 61 79 20 6f 66 20 66 6c 61 67 73 20 6d 61 74 gs.(optional).array.of.flags.mat
6d40 63 68 65 64 20 77 69 74 68 20 76 65 6e 64 6f 72 20 73 74 72 69 6e 67 73 0a 20 20 20 20 20 2a 0a ched.with.vendor.strings......*.
6d60 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 20 40 72 65 .....*.@access.public......*.@re
6d80 74 75 72 6e 20 73 74 72 69 6e 67 20 76 65 6e 64 6f 72 20 73 74 72 69 6e 67 20 6d 61 74 63 68 65 turn.string.vendor.string.matche
6da0 73 20 61 70 70 72 6f 70 72 69 61 74 65 20 66 6c 61 67 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 s.appropriate.flag......*/.....f
6dc0 75 6e 63 74 69 6f 6e 20 67 65 74 42 72 6f 77 73 65 72 53 74 72 69 6e 67 28 24 69 6e 5f 76 65 6e unction.getBrowserString($in_ven
6de0 64 6f 72 53 74 72 69 6e 67 73 20 3d 20 61 72 72 61 79 20 28 0a 20 20 20 20 20 20 20 20 27 69 65 dorStrings.=.array.(.........'ie
6e00 27 20 20 20 20 20 20 20 3d 3e 20 27 4d 69 63 72 6f 73 6f 66 74 20 49 6e 74 65 72 6e 65 74 20 45 '.......=>.'Microsoft.Internet.E
6e20 78 70 6c 6f 72 65 72 27 2c 0a 20 20 20 20 20 20 20 20 27 69 65 34 75 70 27 20 20 20 20 3d 3e 20 xplorer',.........'ie4up'....=>.
6e40 27 4d 69 63 72 6f 73 6f 66 74 20 49 6e 74 65 72 6e 65 74 20 45 78 70 6c 6f 72 65 72 20 34 2e 78 'Microsoft.Internet.Explorer.4.x
6e60 27 2c 0a 20 20 20 20 20 20 20 20 27 69 65 35 75 70 27 20 20 20 20 3d 3e 20 27 4d 69 63 72 6f 73 ',.........'ie5up'....=>.'Micros
6e80 6f 66 74 20 49 6e 74 65 72 6e 65 74 20 45 78 70 6c 6f 72 65 72 20 35 2e 78 27 2c 0a 20 20 20 20 oft.Internet.Explorer.5.x',.....
6ea0 20 20 20 20 27 69 65 36 75 70 27 20 20 20 20 3d 3e 20 27 4d 69 63 72 6f 73 6f 66 74 20 49 6e 74 ....'ie6up'....=>.'Microsoft.Int
6ec0 65 72 6e 65 74 20 45 78 70 6c 6f 72 65 72 20 36 2e 78 27 2c 0a 20 20 20 20 20 20 20 20 27 6f 70 ernet.Explorer.6.x',.........'op
6ee0 65 72 61 34 27 20 20 20 3d 3e 20 27 4f 70 65 72 61 20 34 2e 78 27 2c 0a 20 20 20 20 20 20 20 20 era4'...=>.'Opera.4.x',.........
6f00 27 6f 70 65 72 61 35 75 70 27 20 3d 3e 20 27 4f 70 65 72 61 20 35 2e 78 27 2c 0a 20 20 20 20 20 'opera5up'.=>.'Opera.5.x',......
6f20 20 20 20 27 6e 61 76 27 20 20 20 20 20 20 3d 3e 20 27 4e 65 74 73 63 61 70 65 20 4e 61 76 69 67 ...'nav'......=>.'Netscape.Navig
6f40 61 74 6f 72 27 2c 0a 20 20 20 20 20 20 20 20 27 6e 73 34 27 20 20 20 20 20 20 3d 3e 20 27 4e 65 ator',.........'ns4'......=>.'Ne
6f60 74 73 63 61 70 65 20 34 2e 78 27 2c 0a 20 20 20 20 20 20 20 20 27 6e 73 36 75 70 27 20 20 20 20 tscape.4.x',.........'ns6up'....
6f80 3d 3e 20 27 4d 6f 7a 69 6c 6c 61 2f 4e 65 74 73 63 61 70 65 20 36 2e 78 27 2c 0a 20 20 20 20 20 =>.'Mozilla/Netscape.6.x',......
6fa0 20 20 20 27 6b 6f 6e 71 27 20 20 20 20 20 3d 3e 20 27 4b 6f 6e 71 75 65 72 6f 72 2f 53 61 66 61 ...'konq'.....=>.'Konqueror/Safa
6fc0 72 69 27 2c 0a 20 20 20 20 29 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 ri',.....)).....{.........Net_Us
6fe0 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 64 65 74 65 63 74 28 29 3b 0a 20 20 20 20 20 20 erAgent_Detect::detect();.......
7000 20 20 24 62 72 6f 77 73 65 72 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 ..$browser.=.&Net_UserAgent_Dete
7020 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 62 72 6f 77 73 65 72 27 ct::_getStaticProperty('browser'
7040 29 3b 0a 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 28 28 61 72 72 61 79 29 20 24 69 6e 5f 76 );.........foreach((array).$in_v
7060 65 6e 64 6f 72 53 74 72 69 6e 67 73 20 61 73 20 24 66 6c 61 67 20 3d 3e 20 24 73 74 72 69 6e 67 endorStrings.as.$flag.=>.$string
7080 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 65 6d 70 74 79 28 24 62 72 6f 77 ).{.............if.(!empty($brow
70a0 73 65 72 5b 24 66 6c 61 67 5d 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 ser[$flag])).{.................$
70c0 76 65 6e 64 6f 72 53 74 72 69 6e 67 20 3d 20 24 73 74 72 69 6e 67 3b 0a 20 20 20 20 20 20 20 20 vendorString.=.$string;.........
70e0 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 69 66 20 74 ....}.........}..........//.if.t
7100 68 65 72 65 20 61 72 65 20 6e 6f 20 6d 61 74 63 68 65 73 20 6a 75 73 74 20 75 73 65 20 74 68 65 here.are.no.matches.just.use.the
7120 20 75 73 65 72 20 61 67 65 6e 74 20 6c 65 61 64 69 6e 67 20 69 64 65 6e 64 69 66 69 65 72 20 28 .user.agent.leading.idendifier.(
7140 75 73 75 61 6c 6c 79 20 4d 6f 7a 69 6c 6c 61 29 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 69 73 usually.Mozilla).........if.(!is
7160 73 65 74 28 24 76 65 6e 64 6f 72 53 74 72 69 6e 67 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 set($vendorString)).{...........
7180 20 20 24 6c 65 61 64 69 6e 67 49 64 65 6e 74 69 66 69 65 72 20 3d 20 26 4e 65 74 5f 55 73 65 72 ..$leadingIdentifier.=.&Net_User
71a0 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 Agent_Detect::_getStaticProperty
71c0 28 27 6c 65 61 64 69 6e 67 49 64 65 6e 74 69 66 69 65 72 27 29 3b 0a 20 20 20 20 20 20 20 20 20 ('leadingIdentifier');..........
71e0 20 20 20 24 76 65 6e 64 6f 72 53 74 72 69 6e 67 20 3d 20 24 6c 65 61 64 69 6e 67 49 64 65 6e 74 ...$vendorString.=.$leadingIdent
7200 69 66 69 65 72 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 ifier;.........}................
7220 20 20 72 65 74 75 72 6e 20 24 76 65 6e 64 6f 72 53 74 72 69 6e 67 3b 0a 20 20 20 20 7d 0a 0a 20 ..return.$vendorString;.....}...
7240 20 20 20 2f 2f 20 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 69 73 49 45 28 29 0a 0a 20 20 20 ...//.}}}.....//.{{{.isIE().....
7260 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 74 65 72 6d 69 6e 65 20 69 66 20 74 68 65 20 62 72 6f ./**......*.Determine.if.the.bro
7280 77 73 65 72 20 69 73 20 61 6e 20 49 6e 74 65 72 6e 65 74 20 45 78 70 6c 6f 72 65 72 20 62 72 6f wser.is.an.Internet.Explorer.bro
72a0 77 73 65 72 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 wser......*......*.@access.publi
72c0 63 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 62 6f 6f 6c 20 77 68 65 74 68 65 72 20 6f 72 c......*.@return.bool.whether.or
72e0 20 6e 6f 74 20 74 68 69 73 20 62 72 6f 77 73 65 72 20 69 73 20 61 6e 20 69 65 20 62 72 6f 77 73 .not.this.browser.is.an.ie.brows
7300 65 72 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 49 45 28 29 0a 20 er......*/.....function.isIE()..
7320 20 20 20 7b 0a 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 ...{.........Net_UserAgent_Detec
7340 74 3a 3a 64 65 74 65 63 74 28 29 3b 0a 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 20 3d 20 t::detect();.........$browser.=.
7360 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 &Net_UserAgent_Detect::_getStati
7380 63 50 72 6f 70 65 72 74 79 28 27 62 72 6f 77 73 65 72 27 29 3b 0a 20 20 20 20 20 20 20 20 72 65 cProperty('browser');.........re
73a0 74 75 72 6e 20 21 65 6d 70 74 79 28 24 62 72 6f 77 73 65 72 5b 27 69 65 27 5d 29 3b 0a 20 20 20 turn.!empty($browser['ie']);....
73c0 20 7d 0a 0a 20 20 20 20 2f 2f 20 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 69 73 4e 61 76 69 .}......//.}}}.....//.{{{.isNavi
73e0 67 61 74 6f 72 28 29 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 74 65 72 6d 69 6e gator()....../**......*.Determin
7400 65 20 69 66 20 74 68 65 20 62 72 6f 77 73 65 72 20 69 73 20 61 20 4e 65 74 73 63 61 70 65 20 4e e.if.the.browser.is.a.Netscape.N
7420 61 76 69 67 61 74 6f 72 20 62 72 6f 77 73 65 72 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 avigator.browser......*......*.@
7440 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 62 6f 6f access.public......*.@return.boo
7460 6c 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 69 73 20 62 72 6f 77 73 65 72 20 69 73 l.whether.or.not.this.browser.is
7480 20 61 20 4e 65 74 73 63 61 70 65 20 4e 61 76 69 67 61 74 6f 72 20 62 72 6f 77 73 65 72 0a 20 20 .a.Netscape.Navigator.browser...
74a0 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4e 61 76 69 67 61 74 6f 72 28 29 ...*/.....function.isNavigator()
74c0 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 .....{.........Net_UserAgent_Det
74e0 65 63 74 3a 3a 64 65 74 65 63 74 28 29 3b 0a 20 20 20 20 20 20 20 20 24 62 72 6f 77 73 65 72 20 ect::detect();.........$browser.
7500 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 =.&Net_UserAgent_Detect::_getSta
7520 74 69 63 50 72 6f 70 65 72 74 79 28 27 62 72 6f 77 73 65 72 27 29 3b 0a 20 20 20 20 20 20 20 20 ticProperty('browser');.........
7540 72 65 74 75 72 6e 20 21 65 6d 70 74 79 28 24 62 72 6f 77 73 65 72 5b 27 6e 61 76 27 5d 29 3b 0a return.!empty($browser['nav']);.
7560 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 69 73 4e ....}......//.}}}.....//.{{{.isN
7580 65 74 73 63 61 70 65 28 29 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 74 65 72 6d etscape()....../**......*.Determ
75a0 69 6e 65 20 69 66 20 74 68 65 20 62 72 6f 77 73 65 72 20 69 73 20 61 20 4e 65 74 73 63 61 70 65 ine.if.the.browser.is.a.Netscape
75c0 20 6f 72 20 4d 6f 7a 69 6c 6c 61 20 62 72 6f 77 73 65 72 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 .or.Mozilla.browser......*......
75e0 2a 20 4e 6f 74 65 20 74 68 61 74 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 *.Note.that.this.function.is.not
7600 20 74 68 65 20 73 61 6d 65 20 61 73 20 69 73 4e 61 76 69 67 61 74 6f 72 2c 20 73 69 6e 63 65 20 .the.same.as.isNavigator,.since.
7620 74 68 65 0a 20 20 20 20 20 2a 20 6e 65 77 20 4d 6f 7a 69 6c 6c 61 20 62 72 6f 77 73 65 72 73 20 the......*.new.Mozilla.browsers.
7640 61 72 65 20 73 74 69 6c 6c 20 73 70 6f 6e 73 65 72 65 64 20 62 79 20 4e 65 74 73 63 61 70 65 2c are.still.sponsered.by.Netscape,
7660 20 61 6e 64 20 68 65 6e 63 65 20 61 72 65 0a 20 20 20 20 20 2a 20 4e 65 74 73 63 61 70 65 20 70 .and.hence.are......*.Netscape.p
7680 72 6f 64 75 63 74 73 2c 20 62 75 74 20 6e 6f 74 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 4e 61 roducts,.but.not.the.original.Na
76a0 76 69 67 61 74 6f 72 73 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 vigators......*......*.@access.p
76c0 75 62 6c 69 63 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 62 6f 6f 6c 20 77 68 65 74 68 65 ublic......*.@return.bool.whethe
76e0 72 20 6f 72 20 6e 6f 74 20 74 68 69 73 20 62 72 6f 77 73 65 72 20 69 73 20 61 20 4e 65 74 73 63 r.or.not.this.browser.is.a.Netsc
7700 61 70 65 20 70 72 6f 64 75 63 74 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ape.product......*/.....function
7720 20 69 73 4e 65 74 73 63 61 70 65 28 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 4e 65 74 5f .isNetscape().....{.........Net_
7740 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 64 65 74 65 63 74 28 29 3b 0a 20 20 20 20 UserAgent_Detect::detect();.....
7760 20 20 20 20 24 62 72 6f 77 73 65 72 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 ....$browser.=.&Net_UserAgent_De
7780 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 62 72 6f 77 73 65 tect::_getStaticProperty('browse
77a0 72 27 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 65 6d 70 74 79 28 24 62 72 6f 77 r');.........return.!empty($brow
77c0 73 65 72 5b 27 6e 73 34 75 70 27 5d 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 0a 20 20 20 20 2f 2f ser['ns4up']);.....}..........//
77e0 20 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 69 73 4f 53 28 29 0a 0a 20 20 20 20 2f 2a 2a 0a .}}}.....//.{{{.isOS()....../**.
7800 20 20 20 20 20 2a 20 4c 6f 6f 6b 20 75 70 20 74 68 65 20 70 72 6f 76 69 64 65 20 4f 53 20 66 6c .....*.Look.up.the.provide.OS.fl
7820 61 67 20 61 6e 64 20 72 65 74 75 72 6e 20 61 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 0a 20 20 ag.and.return.a.boolean.value...
7840 20 20 20 2a 0a 20 20 20 20 20 2a 20 47 69 76 65 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6c 61 ...*......*.Given.one.of.the.fla
7860 67 73 20 6c 69 73 74 65 64 20 69 6e 20 74 68 65 20 70 72 6f 70 65 72 74 69 65 73 2c 20 74 68 69 gs.listed.in.the.properties,.thi
7880 73 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 72 65 74 75 72 6e 0a 20 20 20 20 20 2a 20 74 68 s.function.will.return......*.th
78a0 65 20 76 61 6c 75 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 61 74 20 66 6c 61 e.value.associated.with.that.fla
78c0 67 20 66 6f 72 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0a 20 20 20 20 g.for.the.operating.system......
78e0 20 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 20 73 74 72 69 6e 67 20 24 69 6e 5f 6d 61 74 .*......*.@param..string.$in_mat
7900 63 68 20 66 6c 61 67 20 74 6f 20 6c 6f 6f 6b 75 70 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 ch.flag.to.lookup......*......*.
7920 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 62 6f @access.public......*.@return.bo
7940 6f 6c 65 61 6e 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 4f 53 20 73 61 74 69 olean.whether.or.not.the.OS.sati
7960 73 66 69 65 73 20 74 68 69 73 20 66 6c 61 67 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 sfies.this.flag......*/.....func
7980 74 69 6f 6e 20 69 73 4f 53 28 24 69 6e 5f 6d 61 74 63 68 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 tion.isOS($in_match).....{......
79a0 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 64 65 74 65 63 74 28 ...Net_UserAgent_Detect::detect(
79c0 29 3b 0a 20 20 20 20 20 20 20 20 24 6f 73 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f );.........$os.=.&Net_UserAgent_
79e0 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 6f 73 27 29 Detect::_getStaticProperty('os')
7a00 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 73 73 65 74 28 24 6f 73 5b 73 74 72 74 6f ;.........return.isset($os[strto
7a20 6c 6f 77 65 72 28 24 69 6e 5f 6d 61 74 63 68 29 5d 29 20 3f 20 24 6f 73 5b 73 74 72 74 6f 6c 6f lower($in_match)]).?.$os[strtolo
7a40 77 65 72 28 24 69 6e 5f 6d 61 74 63 68 29 5d 20 3a 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 0a wer($in_match)].:.false;.....}..
7a60 20 20 20 20 2f 2f 20 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 67 65 74 4f 53 28 29 0a 0a 20 ....//.}}}.....//.{{{.getOS()...
7a80 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 53 69 6e 63 65 20 73 69 6d 70 6c 79 20 72 65 74 75 72 .../**......*.Since.simply.retur
7aa0 6e 69 6e 67 20 74 68 65 20 22 6f 73 22 20 69 73 20 73 6f 6d 65 77 68 61 74 20 61 6d 62 69 67 75 ning.the."os".is.somewhat.ambigu
7ac0 6f 75 73 20 73 69 6e 63 65 20 74 68 65 72 65 0a 20 20 20 20 20 2a 20 61 72 65 20 64 69 66 66 65 ous.since.there......*.are.diffe
7ae0 72 65 6e 74 20 77 61 79 73 20 74 6f 20 63 6c 61 73 73 69 66 79 20 74 68 65 20 62 72 6f 77 73 65 rent.ways.to.classify.the.browse
7b00 72 2c 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 20 62 79 20 74 61 6b 69 6e 67 r,.this.function.works.by.taking
7b20 0a 20 20 20 20 20 2a 20 61 6e 20 65 78 70 65 63 74 20 6c 69 73 74 20 61 6e 64 20 72 65 74 75 72 ......*.an.expect.list.and.retur
7b40 6e 69 6e 67 20 74 68 65 20 73 74 72 69 6e 67 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 6d 61 74 ning.the.string.of.the.first.mat
7b60 63 68 2c 20 73 6f 20 70 75 74 20 74 68 65 20 69 6d 70 6f 72 74 61 6e 74 0a 20 20 20 20 20 2a 20 ch,.so.put.the.important......*.
7b80 6f 6e 65 73 20 66 69 72 73 74 20 69 6e 20 74 68 65 20 61 72 72 61 79 2e 0a 20 20 20 20 20 2a 0a ones.first.in.the.array.......*.
7ba0 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 20 40 72 65 .....*.@access.public......*.@re
7bc0 74 75 72 6e 20 73 74 72 69 6e 67 20 66 69 72 73 74 20 66 6c 61 67 20 74 68 61 74 20 6d 61 74 63 turn.string.first.flag.that.matc
7be0 68 65 73 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4f 53 28 24 hes......*/.....function.getOS($
7c00 69 6e 5f 65 78 70 65 63 74 4c 69 73 74 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 4e 65 74 in_expectList).....{.........Net
7c20 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 64 65 74 65 63 74 28 29 3b 0a 20 20 20 _UserAgent_Detect::detect();....
7c40 20 20 20 20 20 24 6f 73 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 .....$os.=.&Net_UserAgent_Detect
7c60 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 6f 73 27 29 3b 0a 20 20 20 20 ::_getStaticProperty('os');.....
7c80 20 20 20 20 66 6f 72 65 61 63 68 28 28 61 72 72 61 79 29 20 24 69 6e 5f 65 78 70 65 63 74 4c 69 ....foreach((array).$in_expectLi
7ca0 73 74 20 61 73 20 24 65 78 70 65 63 74 4f 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 st.as.$expectOs).{.............i
7cc0 66 20 28 21 65 6d 70 74 79 28 24 6f 73 5b 73 74 72 74 6f 6c 6f 77 65 72 28 24 65 78 70 65 63 74 f.(!empty($os[strtolower($expect
7ce0 4f 73 29 5d 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 Os)])).{.................return.
7d00 24 65 78 70 65 63 74 4f 73 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 $expectOs;.............}........
7d20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 .}.....}......//.}}}.....//.{{{.
7d40 67 65 74 4f 53 53 74 72 69 6e 67 28 29 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 getOSString()....../**......*.Th
7d60 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 6f 73 20 73 74 72 69 6e is.function.returns.the.os.strin
7d80 67 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 66 6c 61 67 2e 0a 20 20 20 g.corresponding.to.the.flag.....
7da0 20 20 2a 0a 20 20 20 20 20 2a 20 45 69 74 68 65 72 20 75 73 65 20 74 68 65 20 64 65 66 61 75 6c ..*......*.Either.use.the.defaul
7dc0 74 20 6d 61 74 63 68 65 73 20 6f 72 20 70 61 73 73 20 69 6e 20 61 6e 20 61 73 73 6f 63 69 61 74 t.matches.or.pass.in.an.associat
7de0 69 76 65 20 61 72 72 61 79 20 6f 66 0a 20 20 20 20 20 2a 20 66 6c 61 67 73 20 61 6e 64 20 63 6f ive.array.of......*.flags.and.co
7e00 72 72 65 73 70 6f 6e 64 69 6e 67 20 6f 73 20 73 74 72 69 6e 67 73 2e 20 20 54 68 69 73 20 66 75 rresponding.os.strings...This.fu
7e20 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 66 69 6e 64 0a 20 20 20 20 20 2a 20 74 68 65 20 68 69 67 68 nction.will.find......*.the.high
7e40 65 73 74 20 76 65 72 73 69 6f 6e 20 66 6c 61 67 20 61 6e 64 20 72 65 74 75 72 6e 20 74 68 65 20 est.version.flag.and.return.the.
7e60 6f 73 20 73 74 72 69 6e 67 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a 20 20 20 20 20 2a 20 74 os.string.corresponding......*.t
7e80 6f 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 20 66 6c 61 67 2e 20 20 42 65 20 73 75 72 65 o.the.appropriate.flag...Be.sure
7ea0 20 74 6f 20 70 61 73 73 20 69 6e 20 74 68 65 20 66 6c 61 67 73 20 69 6e 20 61 73 63 65 6e 64 69 .to.pass.in.the.flags.in.ascendi
7ec0 6e 67 20 6f 72 64 65 72 0a 20 20 20 20 20 2a 20 69 66 20 79 6f 75 20 77 61 6e 74 20 61 20 62 61 ng.order......*.if.you.want.a.ba
7ee0 73 69 63 20 6d 61 74 63 68 65 73 20 66 69 72 73 74 2c 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 6d sic.matches.first,.followed.by.m
7f00 6f 72 65 20 64 65 74 61 69 6c 65 64 20 6d 61 74 63 68 65 73 2e 0a 20 20 20 20 20 2a 0a 20 20 20 ore.detailed.matches.......*....
7f20 20 20 2a 20 40 70 61 72 61 6d 20 20 61 72 72 61 79 20 24 69 6e 5f 6f 73 53 74 72 69 6e 67 73 20 ..*.@param..array.$in_osStrings.
7f40 28 6f 70 74 69 6f 6e 61 6c 29 20 61 72 72 61 79 20 6f 66 20 66 6c 61 67 73 20 6d 61 74 63 68 65 (optional).array.of.flags.matche
7f60 64 20 77 69 74 68 20 6f 73 20 73 74 72 69 6e 67 73 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 d.with.os.strings......*......*.
7f80 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 73 74 @access.public......*.@return.st
7fa0 72 69 6e 67 20 6f 73 20 73 74 72 69 6e 67 20 6d 61 74 63 68 65 73 20 61 70 70 72 6f 70 72 69 61 ring.os.string.matches.appropria
7fc0 74 65 20 66 6c 61 67 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 te.flag......*/.....function.get
7fe0 4f 53 53 74 72 69 6e 67 28 24 69 6e 5f 6f 73 53 74 72 69 6e 67 73 20 3d 20 61 72 72 61 79 28 0a OSString($in_osStrings.=.array(.
8000 20 20 20 20 20 20 20 27 77 69 6e 27 20 20 20 3d 3e 20 27 4d 69 63 72 6f 73 6f 66 74 20 57 69 6e .......'win'...=>.'Microsoft.Win
8020 64 6f 77 73 27 2c 0a 20 20 20 20 20 20 20 27 77 69 6e 39 78 27 20 3d 3e 20 27 4d 69 63 72 6f 73 dows',........'win9x'.=>.'Micros
8040 6f 66 74 20 57 69 6e 64 6f 77 73 20 39 78 27 2c 0a 20 20 20 20 20 20 20 27 77 69 6e 6d 65 27 20 oft.Windows.9x',........'winme'.
8060 3d 3e 20 27 4d 69 63 72 6f 73 6f 66 74 20 57 69 6e 64 6f 77 73 20 4d 69 6c 6c 65 6e 69 75 6d 27 =>.'Microsoft.Windows.Millenium'
8080 2c 0a 20 20 20 20 20 20 20 27 77 69 6e 32 6b 27 20 3d 3e 20 27 4d 69 63 72 6f 73 6f 66 74 20 57 ,........'win2k'.=>.'Microsoft.W
80a0 69 6e 64 6f 77 73 20 32 30 30 30 27 2c 0a 20 20 20 20 20 20 20 27 77 69 6e 6e 74 27 20 3d 3e 20 indows.2000',........'winnt'.=>.
80c0 27 4d 69 63 72 6f 73 6f 66 74 20 57 69 6e 64 6f 77 73 20 4e 54 27 2c 0a 20 20 20 20 20 20 20 27 'Microsoft.Windows.NT',........'
80e0 77 69 6e 78 70 27 20 3d 3e 20 27 4d 69 63 72 6f 73 6f 66 74 20 57 69 6e 64 6f 77 73 20 58 50 27 winxp'.=>.'Microsoft.Windows.XP'
8100 2c 0a 20 20 20 20 20 20 20 27 6d 61 63 27 20 20 20 3d 3e 20 27 4d 61 63 69 6e 74 6f 73 68 27 2c ,........'mac'...=>.'Macintosh',
8120 0a 20 20 20 20 20 20 20 27 75 6e 69 78 27 20 20 3d 3e 20 27 4c 69 6e 75 78 2f 55 6e 69 78 27 2c ........'unix'..=>.'Linux/Unix',
8140 0a 20 20 20 20 29 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 .....)).....{.........Net_UserAg
8160 65 6e 74 5f 44 65 74 65 63 74 3a 3a 64 65 74 65 63 74 28 29 3b 0a 20 20 20 20 20 20 20 20 24 6f ent_Detect::detect();.........$o
8180 73 53 74 72 69 6e 67 20 3d 20 27 55 6e 6b 6e 6f 77 6e 27 3b 0a 0a 20 20 20 20 20 20 20 20 24 6f sString.=.'Unknown';..........$o
81a0 73 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 s.=.&Net_UserAgent_Detect::_getS
81c0 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 6f 73 27 29 3b 0a 20 20 20 20 20 20 20 20 66 6f 72 taticProperty('os');.........for
81e0 65 61 63 68 28 28 61 72 72 61 79 29 20 24 69 6e 5f 6f 73 53 74 72 69 6e 67 73 20 61 73 20 24 66 each((array).$in_osStrings.as.$f
8200 6c 61 67 20 3d 3e 20 24 73 74 72 69 6e 67 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 lag.=>.$string).{.............if
8220 20 28 21 65 6d 70 74 79 28 24 6f 73 5b 24 66 6c 61 67 5d 29 29 20 7b 0a 20 20 20 20 20 20 20 20 .(!empty($os[$flag])).{.........
8240 20 20 20 20 20 20 20 20 24 6f 73 53 74 72 69 6e 67 20 3d 20 24 73 74 72 69 6e 67 3b 0a 20 20 20 ........$osString.=.$string;....
8260 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 72 65 .........}.........}..........re
8280 74 75 72 6e 20 24 6f 73 53 74 72 69 6e 67 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 7d 7d turn.$osString;.....}......//.}}
82a0 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 73 65 74 51 75 69 72 6b 28 29 0a 0a 20 20 20 20 2f 2a 2a }.....//.{{{.setQuirk()....../**
82c0 0a 20 20 20 20 20 2a 20 53 65 74 20 61 20 75 6e 69 71 75 65 20 62 65 68 61 76 69 6f 72 20 66 6f ......*.Set.a.unique.behavior.fo
82e0 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 72 6f 77 73 65 72 2e 0a 20 20 20 20 20 2a 0a 20 20 r.the.current.browser.......*...
8300 20 20 20 2a 20 4d 61 6e 79 20 63 6c 69 65 6e 74 20 62 72 6f 77 73 65 72 73 20 64 6f 20 73 6f 6d ...*.Many.client.browsers.do.som
8320 65 20 72 65 61 6c 6c 79 20 66 75 6e 6b 79 20 74 68 69 6e 67 73 2c 20 61 6e 64 20 74 68 69 73 0a e.really.funky.things,.and.this.
8340 20 20 20 20 20 2a 20 6d 65 63 68 61 6e 69 73 6d 20 61 6c 6c 6f 77 73 20 74 68 65 20 63 6f 64 65 .....*.mechanism.allows.the.code
8360 72 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 61 6e 20 65 78 63 65 70 65 74 69 6f 6e 20 r.to.determine.if.an.excepetion.
8380 6d 75 73 74 0a 20 20 20 20 20 2a 20 62 65 20 6d 61 64 65 20 77 69 74 68 20 74 68 65 20 63 75 72 must......*.be.made.with.the.cur
83a0 72 65 6e 74 20 63 6c 69 65 6e 74 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 61 63 63 65 rent.client.......*......*.@acce
83c0 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 76 6f 69 64 0a 20 20 ss.public......*.@return.void...
83e0 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 74 51 75 69 72 6b 28 24 69 6e 5f ...*/.....function.setQuirk($in_
8400 71 75 69 72 6b 2c 20 24 69 6e 5f 68 61 73 51 75 69 72 6b 20 3d 20 74 72 75 65 29 0a 20 20 20 20 quirk,.$in_hasQuirk.=.true).....
8420 7b 0a 20 20 20 20 20 20 20 20 24 71 75 69 72 6b 73 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 {.........$quirks.=.&Net_UserAge
8440 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 71 nt_Detect::_getStaticProperty('q
8460 75 69 72 6b 73 27 29 3b 0a 20 20 20 20 20 20 20 20 24 68 61 73 51 75 69 72 6b 20 3d 20 21 65 6d uirks');.........$hasQuirk.=.!em
8480 70 74 79 28 24 69 6e 5f 68 61 73 51 75 69 72 6b 29 3b 20 0a 20 20 20 20 20 20 20 20 24 71 75 69 pty($in_hasQuirk);..........$qui
84a0 72 6b 73 5b 73 74 72 74 6f 6c 6f 77 65 72 28 24 69 6e 5f 71 75 69 72 6b 29 5d 20 3d 20 24 68 61 rks[strtolower($in_quirk)].=.$ha
84c0 73 51 75 69 72 6b 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 7d 7d 7d 0a 20 20 20 20 2f 2f sQuirk;.....}......//.}}}.....//
84e0 20 7b 7b 7b 20 68 61 73 51 75 69 72 6b 28 29 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 .{{{.hasQuirk()....../**......*.
8500 43 68 65 63 6b 20 61 20 75 6e 69 71 75 65 20 62 65 68 61 76 69 6f 72 20 66 6f 72 20 74 68 65 20 Check.a.unique.behavior.for.the.
8520 63 75 72 72 65 6e 74 20 62 72 6f 77 73 65 72 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 4d current.browser.......*......*.M
8540 61 6e 79 20 63 6c 69 65 6e 74 20 62 72 6f 77 73 65 72 73 20 64 6f 20 73 6f 6d 65 20 72 65 61 6c any.client.browsers.do.some.real
8560 6c 79 20 66 75 6e 6b 79 20 74 68 69 6e 67 73 2c 20 61 6e 64 20 74 68 69 73 0a 20 20 20 20 20 2a ly.funky.things,.and.this......*
8580 20 6d 65 63 68 61 6e 69 73 6d 20 61 6c 6c 6f 77 73 20 74 68 65 20 63 6f 64 65 72 20 74 6f 20 64 .mechanism.allows.the.coder.to.d
85a0 65 74 65 72 6d 69 6e 65 20 69 66 20 61 6e 20 65 78 63 65 70 65 74 69 6f 6e 20 6d 75 73 74 0a 20 etermine.if.an.excepetion.must..
85c0 20 20 20 20 2a 20 62 65 20 6d 61 64 65 20 77 69 74 68 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 ....*.be.made.with.the.current.c
85e0 6c 69 65 6e 74 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 lient.......*......*.@access.pub
8600 6c 69 63 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 62 6f 6f 6c 20 77 68 65 74 68 65 72 20 lic......*.@return.bool.whether.
8620 6f 72 20 6e 6f 74 20 62 72 6f 77 73 65 72 20 68 61 73 20 74 68 69 73 20 71 75 69 72 6b 0a 20 20 or.not.browser.has.this.quirk...
8640 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 68 61 73 51 75 69 72 6b 28 24 69 6e 5f ...*/.....function.hasQuirk($in_
8660 71 75 69 72 6b 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 quirk).....{.........Net_UserAge
8680 6e 74 5f 44 65 74 65 63 74 3a 3a 64 65 74 65 63 74 28 29 3b 0a 20 20 20 20 20 20 20 20 24 71 75 nt_Detect::detect();.........$qu
86a0 69 72 6b 73 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 irks.=.&Net_UserAgent_Detect::_g
86c0 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 71 75 69 72 6b 73 27 29 3b 0a 20 20 20 20 etStaticProperty('quirks');.....
86e0 20 20 20 20 72 65 74 75 72 6e 20 21 65 6d 70 74 79 28 24 71 75 69 72 6b 73 5b 73 74 72 74 6f 6c ....return.!empty($quirks[strtol
8700 6f 77 65 72 28 24 69 6e 5f 71 75 69 72 6b 29 5d 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 0a 20 20 ower($in_quirk)]);.....}........
8720 20 20 2f 2f 20 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 67 65 74 51 75 69 72 6b 28 29 0a 0a ..//.}}}.....//.{{{.getQuirk()..
8740 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 47 65 74 20 74 68 65 20 75 6e 69 71 75 65 20 62 65 ..../**......*.Get.the.unique.be
8760 68 61 76 69 6f 72 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 72 6f 77 73 65 72 2e 0a havior.for.the.current.browser..
8780 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 4d 61 6e 79 20 63 6c 69 65 6e 74 20 62 72 6f 77 73 65 .....*......*.Many.client.browse
87a0 72 73 20 64 6f 20 73 6f 6d 65 20 72 65 61 6c 6c 79 20 66 75 6e 6b 79 20 74 68 69 6e 67 73 2c 20 rs.do.some.really.funky.things,.
87c0 61 6e 64 20 74 68 69 73 0a 20 20 20 20 20 2a 20 6d 65 63 68 61 6e 69 73 6d 20 61 6c 6c 6f 77 73 and.this......*.mechanism.allows
87e0 20 74 68 65 20 63 6f 64 65 72 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 61 6e 20 65 78 .the.coder.to.determine.if.an.ex
8800 63 65 70 65 74 69 6f 6e 20 6d 75 73 74 0a 20 20 20 20 20 2a 20 62 65 20 6d 61 64 65 20 77 69 74 cepetion.must......*.be.made.wit
8820 68 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6c 69 65 6e 74 2e 0a 20 20 20 20 20 2a 0a 20 20 20 h.the.current.client.......*....
8840 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 ..*.@access.public......*.@retur
8860 6e 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 71 75 69 72 6b 2c 20 69 6e 20 n.string.value.of.the.quirk,.in.
8880 74 68 69 73 20 63 61 73 65 20 75 73 75 61 6c 6c 79 20 61 20 62 6f 6f 6c 65 61 6e 0a 20 20 20 20 this.case.usually.a.boolean.....
88a0 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 51 75 69 72 6b 28 29 0a 20 20 20 20 .*/.....function.getQuirk().....
88c0 7b 0a 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a {.........Net_UserAgent_Detect::
88e0 64 65 74 65 63 74 28 29 3b 0a 20 20 20 20 20 20 20 20 24 71 75 69 72 6b 73 20 3d 20 26 4e 65 74 detect();.........$quirks.=.&Net
8900 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f _UserAgent_Detect::_getStaticPro
8920 70 65 72 74 79 28 27 71 75 69 72 6b 73 27 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 perty('quirks');.........return.
8940 69 73 73 65 74 28 24 71 75 69 72 6b 73 5b 73 74 72 74 6f 6c 6f 77 65 72 28 24 69 6e 5f 71 75 69 isset($quirks[strtolower($in_qui
8960 72 6b 73 29 5d 29 20 3f 20 24 71 75 69 72 6b 73 5b 73 74 72 74 6f 6c 6f 77 65 72 28 24 69 6e 5f rks)]).?.$quirks[strtolower($in_
8980 71 75 69 72 6b 73 29 5d 20 3a 20 6e 75 6c 6c 3b 20 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 quirks)].:.null;......}......//.
89a0 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 73 65 74 46 65 61 74 75 72 65 28 29 0a 0a 20 20 20 }}}.....//.{{{.setFeature().....
89c0 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 53 65 74 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 66 6f 72 ./**......*.Set.capabilities.for
89e0 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 72 6f 77 73 65 72 2e 0a 20 20 20 20 20 2a 0a 20 20 20 .the.current.browser.......*....
8a00 20 20 2a 20 53 69 6e 63 65 20 74 68 65 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 6f 66 20 63 6c ..*.Since.the.capabilities.of.cl
8a20 69 65 6e 74 20 62 72 6f 77 73 65 72 73 20 76 61 72 79 20 77 69 64 6c 79 2c 20 74 68 69 73 20 69 ient.browsers.vary.widly,.this.i
8a40 6e 74 65 72 66 61 63 65 0a 20 20 20 20 20 2a 20 68 65 6c 70 73 20 6b 65 65 70 20 74 72 61 63 6b nterface......*.helps.keep.track
8a60 20 6f 66 20 74 68 65 20 63 6f 72 65 20 66 65 61 74 75 72 65 73 20 6f 66 20 61 20 63 6c 69 65 6e .of.the.core.features.of.a.clien
8a80 74 2c 20 73 75 63 68 20 61 73 20 69 66 20 74 68 65 20 63 6c 69 65 6e 74 0a 20 20 20 20 20 2a 20 t,.such.as.if.the.client......*.
8aa0 73 75 70 70 6f 72 74 73 20 64 68 74 6d 6c 2c 20 64 6f 6d 2c 20 6a 61 76 61 73 63 72 69 70 74 2c supports.dhtml,.dom,.javascript,
8ac0 20 65 74 63 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c .etc.......*......*.@access.publ
8ae0 69 63 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 76 6f 69 64 0a 20 20 20 20 20 2a 2f 0a 20 ic......*.@return.void......*/..
8b00 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 74 46 65 61 74 75 72 65 28 24 69 6e 5f 66 65 61 74 75 ...function.setFeature($in_featu
8b20 72 65 2c 20 24 69 6e 5f 68 61 73 46 65 61 74 75 72 65 20 3d 20 74 72 75 65 29 0a 20 20 20 20 7b re,.$in_hasFeature.=.true).....{
8b40 0a 20 20 20 20 20 20 20 20 24 66 65 61 74 75 72 65 73 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 .........$features.=.&Net_UserAg
8b60 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 ent_Detect::_getStaticProperty('
8b80 66 65 61 74 75 72 65 73 27 29 3b 0a 20 20 20 20 20 20 20 20 24 66 65 61 74 75 72 65 73 5b 73 74 features');.........$features[st
8ba0 72 74 6f 6c 6f 77 65 72 28 24 69 6e 5f 66 65 61 74 75 72 65 29 5d 20 3d 20 24 69 6e 5f 68 61 73 rtolower($in_feature)].=.$in_has
8bc0 46 65 61 74 75 72 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 7d 7d 7d 0a 20 20 20 20 2f Feature;.....}......//.}}}...../
8be0 2f 20 7b 7b 7b 20 68 61 73 46 65 61 74 75 72 65 28 29 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 /.{{{.hasFeature()....../**.....
8c00 20 2a 20 43 68 65 63 6b 20 74 68 65 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 66 6f 72 20 74 68 .*.Check.the.capabilities.for.th
8c20 65 20 63 75 72 72 65 6e 74 20 62 72 6f 77 73 65 72 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a e.current.browser.......*......*
8c40 20 53 69 6e 63 65 20 74 68 65 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 6f 66 20 63 6c 69 65 6e .Since.the.capabilities.of.clien
8c60 74 20 62 72 6f 77 73 65 72 73 20 76 61 72 79 20 77 69 64 6c 79 2c 20 74 68 69 73 20 69 6e 74 65 t.browsers.vary.widly,.this.inte
8c80 72 66 61 63 65 0a 20 20 20 20 20 2a 20 68 65 6c 70 73 20 6b 65 65 70 20 74 72 61 63 6b 20 6f 66 rface......*.helps.keep.track.of
8ca0 20 74 68 65 20 63 6f 72 65 20 66 65 61 74 75 72 65 73 20 6f 66 20 61 20 63 6c 69 65 6e 74 2c 20 .the.core.features.of.a.client,.
8cc0 73 75 63 68 20 61 73 20 69 66 20 74 68 65 20 63 6c 69 65 6e 74 0a 20 20 20 20 20 2a 20 73 75 70 such.as.if.the.client......*.sup
8ce0 70 6f 72 74 73 20 64 68 74 6d 6c 2c 20 64 6f 6d 2c 20 6a 61 76 61 73 63 72 69 70 74 2c 20 65 74 ports.dhtml,.dom,.javascript,.et
8d00 63 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a c.......*......*.@access.public.
8d20 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 62 6f 6f 6c 20 77 68 65 74 68 65 72 20 6f 72 20 6e .....*.@return.bool.whether.or.n
8d40 6f 74 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6c 69 65 6e 74 20 68 61 73 20 74 68 69 73 20 66 ot.the.current.client.has.this.f
8d60 65 61 74 75 72 65 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 68 61 73 46 eature......*/.....function.hasF
8d80 65 61 74 75 72 65 28 24 69 6e 5f 66 65 61 74 75 72 65 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 eature($in_feature).....{.......
8da0 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 64 65 74 65 63 74 28 29 ..Net_UserAgent_Detect::detect()
8dc0 3b 0a 20 20 20 20 20 20 20 20 24 66 65 61 74 75 72 65 73 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 ;.........$features.=.&Net_UserA
8de0 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 gent_Detect::_getStaticProperty(
8e00 27 66 65 61 74 75 72 65 73 27 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 65 6d 70 'features');.........return.!emp
8e20 74 79 28 24 66 65 61 74 75 72 65 73 5b 73 74 72 74 6f 6c 6f 77 65 72 28 24 69 6e 5f 66 65 61 74 ty($features[strtolower($in_feat
8e40 75 72 65 29 5d 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 0a 20 20 20 20 2f 2f 20 7d 7d 7d 0a 20 20 ure)]);.....}..........//.}}}...
8e60 20 20 2f 2f 20 7b 7b 7b 20 67 65 74 46 65 61 74 75 72 65 28 29 0a 0a 20 20 20 20 2f 2a 2a 0a 20 ..//.{{{.getFeature()....../**..
8e80 20 20 20 20 2a 20 47 65 74 20 74 68 65 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 66 6f 72 20 74 ....*.Get.the.capabilities.for.t
8ea0 68 65 20 63 75 72 72 65 6e 74 20 62 72 6f 77 73 65 72 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 he.current.browser.......*......
8ec0 2a 20 53 69 6e 63 65 20 74 68 65 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 6f 66 20 63 6c 69 65 *.Since.the.capabilities.of.clie
8ee0 6e 74 20 62 72 6f 77 73 65 72 73 20 76 61 72 79 20 77 69 64 6c 79 2c 20 74 68 69 73 20 69 6e 74 nt.browsers.vary.widly,.this.int
8f00 65 72 66 61 63 65 0a 20 20 20 20 20 2a 20 68 65 6c 70 73 20 6b 65 65 70 20 74 72 61 63 6b 20 6f erface......*.helps.keep.track.o
8f20 66 20 74 68 65 20 63 6f 72 65 20 66 65 61 74 75 72 65 73 20 6f 66 20 61 20 63 6c 69 65 6e 74 2c f.the.core.features.of.a.client,
8f40 20 73 75 63 68 20 61 73 20 69 66 20 74 68 65 20 63 6c 69 65 6e 74 0a 20 20 20 20 20 2a 20 73 75 .such.as.if.the.client......*.su
8f60 70 70 6f 72 74 73 20 64 68 74 6d 6c 2c 20 64 6f 6d 2c 20 6a 61 76 61 73 63 72 69 70 74 2c 20 65 pports.dhtml,.dom,.javascript,.e
8f80 74 63 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 tc.......*......*.@access.public
8fa0 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 6f 66 20 ......*.@return.string.value.of.
8fc0 74 68 65 20 66 65 61 74 75 72 65 20 72 65 71 75 65 73 74 65 64 0a 20 20 20 20 20 2a 2f 0a 20 20 the.feature.requested......*/...
8fe0 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 46 65 61 74 75 72 65 28 24 69 6e 5f 66 65 61 74 75 72 ..function.getFeature($in_featur
9000 65 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 e).....{.........Net_UserAgent_D
9020 65 74 65 63 74 3a 3a 64 65 74 65 63 74 28 29 3b 0a 20 20 20 20 20 20 20 20 24 66 65 61 74 75 72 etect::detect();.........$featur
9040 65 73 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 es.=.&Net_UserAgent_Detect::_get
9060 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 66 65 61 74 75 72 65 73 27 29 3b 0a 20 20 20 20 StaticProperty('features');.....
9080 20 20 20 20 72 65 74 75 72 6e 20 69 73 73 65 74 28 24 66 65 61 74 75 72 65 73 5b 73 74 72 74 6f ....return.isset($features[strto
90a0 6c 6f 77 65 72 28 24 69 6e 5f 66 65 61 74 75 72 65 29 5d 29 20 3f 20 24 66 65 61 74 75 72 65 73 lower($in_feature)]).?.$features
90c0 5b 73 74 72 74 6f 6c 6f 77 65 72 28 24 69 6e 5f 66 65 61 74 75 72 65 29 5d 20 3a 20 6e 75 6c 6c [strtolower($in_feature)].:.null
90e0 3b 20 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 ;......}......//.}}}.....//.{{{.
9100 67 65 74 41 63 63 65 70 74 54 79 70 65 28 29 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 getAcceptType()....../**......*.
9120 52 65 74 72 69 76 65 20 74 68 65 20 61 63 63 65 70 74 20 74 79 70 65 20 66 6f 72 20 74 68 65 20 Retrive.the.accept.type.for.the.
9140 63 75 72 72 65 6e 74 20 62 72 6f 77 73 65 72 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 54 current.browser.......*......*.T
9160 6f 20 6b 65 65 70 20 74 72 61 63 6b 20 6f 66 20 74 68 65 20 6d 69 6d 65 2d 74 79 70 65 73 2c 20 o.keep.track.of.the.mime-types,.
9180 6c 61 6e 67 75 61 67 65 73 2c 20 63 68 61 72 73 65 74 73 20 61 6e 64 20 65 6e 63 6f 64 69 6e 67 languages,.charsets.and.encoding
91a0 73 0a 20 20 20 20 20 2a 20 74 68 61 74 20 65 61 63 68 20 62 72 6f 77 73 65 72 20 61 63 63 65 70 s......*.that.each.browser.accep
91c0 74 73 20 77 65 20 75 73 65 20 61 73 73 6f 63 69 61 74 69 76 65 20 61 72 72 61 79 73 20 66 6f 72 ts.we.use.associative.arrays.for
91e0 20 65 61 63 68 20 74 79 70 65 2e 0a 20 20 20 20 20 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e .each.type.......*.This.function
9200 20 77 6f 72 6b 73 20 6c 69 6b 65 20 67 65 74 42 72 6f 77 73 65 72 28 29 20 61 73 20 69 74 20 74 .works.like.getBrowser().as.it.t
9220 61 6b 65 73 20 61 6e 20 65 78 70 65 63 74 20 6c 69 73 74 0a 20 20 20 20 20 2a 20 61 6e 64 20 72 akes.an.expect.list......*.and.r
9240 65 74 75 72 6e 73 20 74 68 65 20 66 69 72 73 74 20 6d 61 74 63 68 2e 20 20 46 6f 72 20 69 6e 73 eturns.the.first.match...For.ins
9260 74 61 6e 63 65 2c 20 74 6f 20 66 69 6e 64 20 74 68 65 20 6c 61 6e 67 75 61 67 65 0a 20 20 20 20 tance,.to.find.the.language.....
9280 20 2a 20 79 6f 75 20 77 6f 75 6c 64 20 70 61 73 73 20 69 6e 20 79 6f 75 72 20 61 6c 6c 6f 77 65 .*.you.would.pass.in.your.allowe
92a0 64 20 6c 61 6e 67 75 61 67 65 73 20 61 6e 64 20 73 65 65 20 69 66 20 61 6e 79 20 6f 66 20 74 68 d.languages.and.see.if.any.of.th
92c0 65 0a 20 20 20 20 20 2a 20 6c 61 6e 67 75 61 67 65 73 20 73 65 74 20 69 6e 20 74 68 65 20 62 72 e......*.languages.set.in.the.br
92e0 6f 77 73 65 72 20 6d 61 74 63 68 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 61 owser.match.......*......*.@para
9300 6d 20 20 73 74 72 69 6e 67 20 24 69 6e 5f 65 78 70 65 63 74 4c 69 73 74 20 76 61 6c 75 65 73 20 m..string.$in_expectList.values.
9320 74 6f 20 63 68 65 63 6b 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 20 73 74 72 69 6e 67 20 24 to.check......*.@param..string.$
9340 69 6e 5f 74 79 70 65 20 74 79 70 65 20 6f 66 20 61 63 63 65 70 74 0a 20 20 20 20 20 2a 0a 20 20 in_type.type.of.accept......*...
9360 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 20 40 72 65 74 75 ...*.@access.public......*.@retu
9380 72 6e 20 73 74 72 69 6e 67 20 74 68 65 20 66 69 72 73 74 20 6d 61 74 63 68 65 64 20 76 61 6c 75 rn.string.the.first.matched.valu
93a0 65 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 41 63 63 65 70 74 e......*/.....function.getAccept
93c0 54 79 70 65 28 24 69 6e 5f 65 78 70 65 63 74 4c 69 73 74 2c 20 24 69 6e 5f 74 79 70 65 29 0a 20 Type($in_expectList,.$in_type)..
93e0 20 20 20 7b 0a 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 ...{.........Net_UserAgent_Detec
9400 74 3a 3a 64 65 74 65 63 74 28 29 3b 0a 20 20 20 20 20 20 20 20 24 74 79 70 65 20 3d 20 73 74 72 t::detect();.........$type.=.str
9420 74 6f 6c 6f 77 65 72 28 24 69 6e 5f 74 79 70 65 29 3b 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 tolower($in_type);..........if.(
9440 24 74 79 70 65 20 3d 3d 20 27 6d 69 6d 65 74 79 70 65 27 20 7c 7c 20 24 74 79 70 65 20 3d 3d 20 $type.==.'mimetype'.||.$type.==.
9460 27 6c 61 6e 67 75 61 67 65 27 20 7c 7c 20 24 74 79 70 65 20 3d 3d 20 27 63 68 61 72 73 65 74 27 'language'.||.$type.==.'charset'
9480 20 7c 7c 20 24 74 79 70 65 20 3d 3d 20 27 65 6e 63 6f 64 69 6e 67 27 29 20 7b 0a 20 20 20 20 20 .||.$type.==.'encoding').{......
94a0 20 20 20 20 20 20 20 24 74 79 70 65 41 72 72 61 79 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 .......$typeArray.=.&Net_UserAge
94c0 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 24 74 nt_Detect::_getStaticProperty($t
94e0 79 70 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 28 28 61 72 72 61 79 ype);.............foreach((array
9500 29 20 24 69 6e 5f 65 78 70 65 63 74 4c 69 73 74 20 61 73 20 24 6d 61 74 63 68 29 20 7b 0a 20 20 ).$in_expectList.as.$match).{...
9520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 65 6d 70 74 79 28 24 74 79 70 65 41 72 ..............if.(!empty($typeAr
9540 72 61 79 5b 24 6d 61 74 63 68 5d 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ray[$match])).{.................
9560 20 20 20 20 72 65 74 75 72 6e 20 24 6d 61 74 63 68 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ....return.$match;..............
9580 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 ...}.............}.........}....
95a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f ......return.null;.....}......//
95c0 20 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 73 65 74 41 63 63 65 70 74 54 79 70 65 28 29 0a .}}}.....//.{{{.setAcceptType().
95e0 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 53 65 74 20 74 68 65 20 61 63 63 65 70 74 20 74 ...../**......*.Set.the.accept.t
9600 79 70 65 73 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 72 6f 77 73 65 72 2e 0a 20 20 ypes.for.the.current.browser....
9620 20 20 20 2a 0a 20 20 20 20 20 2a 20 54 6f 20 6b 65 65 70 20 74 72 61 63 6b 20 6f 66 20 74 68 65 ...*......*.To.keep.track.of.the
9640 20 6d 69 6d 65 2d 74 79 70 65 73 2c 20 6c 61 6e 67 75 61 67 65 73 2c 20 63 68 61 72 73 65 74 73 .mime-types,.languages,.charsets
9660 20 61 6e 64 20 65 6e 63 6f 64 69 6e 67 73 0a 20 20 20 20 20 2a 20 74 68 61 74 20 65 61 63 68 20 .and.encodings......*.that.each.
9680 62 72 6f 77 73 65 72 20 61 63 63 65 70 74 73 20 77 65 20 75 73 65 20 61 73 73 6f 63 69 61 74 69 browser.accepts.we.use.associati
96a0 76 65 20 61 72 72 61 79 73 20 66 6f 72 20 65 61 63 68 20 74 79 70 65 2e 0a 20 20 20 20 20 2a 20 ve.arrays.for.each.type.......*.
96c0 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 74 61 6b 65 73 20 61 6e 64 20 61 72 72 61 79 20 6f 66 This.function.takes.and.array.of
96e0 20 61 63 63 65 70 74 65 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 74 79 70 65 20 61 6e .accepted.values.for.the.type.an
9700 64 0a 20 20 20 20 20 2a 20 72 65 63 6f 72 64 73 20 74 68 65 6d 20 66 6f 72 20 72 65 74 72 69 65 d......*.records.them.for.retrie
9720 76 61 6c 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 20 61 72 72 61 79 val.......*......*.@param..array
9740 20 24 69 6e 5f 76 61 6c 75 65 73 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65 20 61 63 63 65 70 74 .$in_values.values.of.the.accept
9760 20 74 79 70 65 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 20 73 74 72 69 6e 67 20 24 69 6e 5f .type......*.@param..string.$in_
9780 74 79 70 65 20 74 79 70 65 20 6f 66 20 61 63 63 65 70 74 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 type.type.of.accept......*......
97a0 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 *.@access.public......*.@return.
97c0 76 6f 69 64 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 74 41 63 63 void......*/.....function.setAcc
97e0 65 70 74 54 79 70 65 28 24 69 6e 5f 76 61 6c 75 65 73 2c 20 24 69 6e 5f 74 79 70 65 29 0a 20 20 eptType($in_values,.$in_type)...
9800 20 20 7b 0a 20 20 20 20 20 20 20 20 24 74 79 70 65 20 3d 20 73 74 72 74 6f 6c 6f 77 65 72 28 24 ..{.........$type.=.strtolower($
9820 69 6e 5f 74 79 70 65 29 3b 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 74 79 70 65 20 3d 3d 20 in_type);..........if.($type.==.
9840 27 6d 69 6d 65 74 79 70 65 27 20 7c 7c 20 24 74 79 70 65 20 3d 3d 20 27 6c 61 6e 67 75 61 67 65 'mimetype'.||.$type.==.'language
9860 27 20 7c 7c 20 24 74 79 70 65 20 3d 3d 20 27 63 68 61 72 73 65 74 27 20 7c 7c 20 24 74 79 70 65 '.||.$type.==.'charset'.||.$type
9880 20 3d 3d 20 27 65 6e 63 6f 64 69 6e 67 27 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 74 .==.'encoding').{.............$t
98a0 79 70 65 41 72 72 61 79 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 ypeArray.=.&Net_UserAgent_Detect
98c0 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 24 74 79 70 65 29 3b 0a 20 20 20 ::_getStaticProperty($type);....
98e0 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 28 28 61 72 72 61 79 29 20 24 69 6e 5f 76 61 6c .........foreach((array).$in_val
9900 75 65 73 20 61 73 20 24 76 61 6c 75 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ues.as.$value).{................
9920 20 24 74 79 70 65 41 72 72 61 79 5b 24 76 61 6c 75 65 5d 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 .$typeArray[$value].=.true;.....
9940 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f ........}.........}.....}....../
9960 2f 20 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 68 61 73 41 63 63 65 70 74 54 79 70 65 28 29 /.}}}.....//.{{{.hasAcceptType()
9980 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 43 68 65 63 6b 20 74 68 65 20 61 63 63 65 70 ....../**......*.Check.the.accep
99a0 74 20 74 79 70 65 73 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 72 6f 77 73 65 72 2e t.types.for.the.current.browser.
99c0 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 54 6f 20 6b 65 65 70 20 74 72 61 63 6b 20 6f 66 20 ......*......*.To.keep.track.of.
99e0 74 68 65 20 6d 69 6d 65 2d 74 79 70 65 73 2c 20 6c 61 6e 67 75 61 67 65 73 2c 20 63 68 61 72 73 the.mime-types,.languages,.chars
9a00 65 74 73 20 61 6e 64 20 65 6e 63 6f 64 69 6e 67 73 0a 20 20 20 20 20 2a 20 74 68 61 74 20 65 61 ets.and.encodings......*.that.ea
9a20 63 68 20 62 72 6f 77 73 65 72 20 61 63 63 65 70 74 73 20 77 65 20 75 73 65 20 61 73 73 6f 63 69 ch.browser.accepts.we.use.associ
9a40 61 74 69 76 65 20 61 72 72 61 79 73 20 66 6f 72 20 65 61 63 68 20 74 79 70 65 2e 0a 20 20 20 20 ative.arrays.for.each.type......
9a60 20 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 68 65 63 6b 73 20 74 68 65 20 61 72 72 61 .*.This.function.checks.the.arra
9a80 79 20 66 6f 72 20 74 68 65 20 67 69 76 65 6e 20 74 79 70 65 20 61 6e 64 20 64 65 74 65 72 6d 69 y.for.the.given.type.and.determi
9aa0 6e 65 73 20 69 66 0a 20 20 20 20 20 2a 20 74 68 65 20 62 72 6f 77 73 65 72 20 61 63 63 65 70 74 nes.if......*.the.browser.accept
9ac0 73 20 69 74 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 20 73 74 72 69 s.it.......*......*.@param..stri
9ae0 6e 67 20 24 69 6e 5f 76 61 6c 75 65 20 76 61 6c 75 65 73 20 74 6f 20 63 68 65 63 6b 0a 20 20 20 ng.$in_value.values.to.check....
9b00 20 20 2a 20 40 70 61 72 61 6d 20 20 73 74 72 69 6e 67 20 24 69 6e 5f 74 79 70 65 20 74 79 70 65 ..*.@param..string.$in_type.type
9b20 20 6f 66 20 61 63 63 65 70 74 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 .of.accept......*......*.@access
9b40 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 62 6f 6f 6c 20 77 68 65 74 .public......*.@return.bool.whet
9b60 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 76 61 6c 75 65 20 69 73 20 61 63 63 65 70 74 20 66 her.or.not.the.value.is.accept.f
9b80 6f 72 20 74 68 69 73 20 74 79 70 65 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f or.this.type......*/.....functio
9ba0 6e 20 68 61 73 41 63 63 65 70 74 54 79 70 65 28 24 69 6e 5f 76 61 6c 75 65 2c 20 24 69 6e 5f 74 n.hasAcceptType($in_value,.$in_t
9bc0 79 70 65 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 ype).....{.........Net_UserAgent
9be0 5f 44 65 74 65 63 74 3a 3a 64 65 74 65 63 74 28 29 3b 0a 20 20 20 20 20 20 20 20 24 74 79 70 65 _Detect::detect();.........$type
9c00 20 3d 20 73 74 72 74 6f 6c 6f 77 65 72 28 24 69 6e 5f 74 79 70 65 29 3b 0a 0a 20 20 20 20 20 20 .=.strtolower($in_type);........
9c20 20 20 69 66 20 28 24 74 79 70 65 20 3d 3d 20 27 6d 69 6d 65 74 79 70 65 27 20 7c 7c 20 24 74 79 ..if.($type.==.'mimetype'.||.$ty
9c40 70 65 20 3d 3d 20 27 6c 61 6e 67 75 61 67 65 27 20 7c 7c 20 24 74 79 70 65 20 3d 3d 20 27 63 68 pe.==.'language'.||.$type.==.'ch
9c60 61 72 73 65 74 27 20 7c 7c 20 24 74 79 70 65 20 3d 3d 20 27 65 6e 63 6f 64 69 6e 67 27 29 20 7b arset'.||.$type.==.'encoding').{
9c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 74 79 70 65 41 72 72 61 79 20 3d 20 26 4e 65 74 5f 55 .............$typeArray.=.&Net_U
9ca0 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 serAgent_Detect::_getStaticPrope
9cc0 72 74 79 28 24 74 79 70 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 rty($type);.............return.!
9ce0 65 6d 70 74 79 28 24 74 79 70 65 41 72 72 61 79 5b 24 69 6e 5f 76 61 6c 75 65 5d 29 3b 0a 20 20 empty($typeArray[$in_value]);...
9d00 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 ......}.........else.{..........
9d20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d ...return.false;.........}.....}
9d40 0a 0a 20 20 20 20 2f 2f 20 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b 20 67 65 74 55 73 65 72 41 ......//.}}}.....//.{{{.getUserA
9d60 67 65 6e 74 28 29 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 52 65 74 75 72 6e 20 74 68 gent()....../**......*.Return.th
9d80 65 20 75 73 65 72 20 61 67 65 6e 74 20 73 74 72 69 6e 67 20 74 68 61 74 20 69 73 20 62 65 69 6e e.user.agent.string.that.is.bein
9da0 67 20 77 6f 72 6b 65 64 20 6f 6e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 g.worked.on......*......*.@acces
9dc0 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 73 74 72 69 6e 67 20 75 s.public......*.@return.string.u
9de0 73 65 72 20 61 67 65 6e 74 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 ser.agent......*/.....function.g
9e00 65 74 55 73 65 72 41 67 65 6e 74 28 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 4e 65 74 5f etUserAgent().....{.........Net_
9e20 55 73 65 72 41 67 65 6e 74 5f 44 65 74 65 63 74 3a 3a 64 65 74 65 63 74 28 29 3b 0a 20 20 20 20 UserAgent_Detect::detect();.....
9e40 20 20 20 20 24 75 73 65 72 41 67 65 6e 74 20 3d 20 26 4e 65 74 5f 55 73 65 72 41 67 65 6e 74 5f ....$userAgent.=.&Net_UserAgent_
9e60 44 65 74 65 63 74 3a 3a 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 27 75 73 65 72 Detect::_getStaticProperty('user
9e80 41 67 65 6e 74 27 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 75 73 65 72 41 67 65 Agent');.........return.$userAge
9ea0 6e 74 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 7d 7d 7d 0a 20 20 20 20 2f 2f 20 7b 7b 7b nt;.....}......//.}}}.....//.{{{
9ec0 20 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 29 0a 0a 20 20 20 20 2f 2a 2a 0a 20 ._getStaticProperty()....../**..
9ee0 20 20 20 20 2a 20 43 6f 70 79 20 6f 66 20 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 ....*.Copy.of.getStaticProperty(
9f00 29 20 66 72 6f 6d 20 50 45 41 52 2e 70 68 70 20 74 6f 20 61 76 6f 69 64 20 68 61 76 69 6e 67 20 ).from.PEAR.php.to.avoid.having.
9f20 74 6f 0a 20 20 20 20 20 2a 20 69 6e 63 6c 75 64 65 20 50 45 41 52 2e 70 68 70 0a 20 20 20 20 20 to......*.include.PEAR.php......
9f40 2a 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0a 20 20 20 20 20 2a 20 *......*.@access.private......*.
9f60 40 70 61 72 61 6d 20 20 73 74 72 69 6e 67 20 24 76 61 72 20 20 20 20 54 68 65 20 76 61 72 69 61 @param..string.$var....The.varia
9f80 62 6c 65 20 74 6f 20 72 65 74 72 69 65 76 65 2e 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 ble.to.retrieve.......*.@return.
9fa0 6d 69 78 65 64 20 20 20 41 20 72 65 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 76 61 72 69 61 mixed...A.reference.to.the.varia
9fc0 62 6c 65 2e 20 49 66 20 6e 6f 74 20 73 65 74 20 69 74 20 77 69 6c 6c 20 62 65 0a 20 20 20 20 20 ble..If.not.set.it.will.be......
9fe0 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 6f 20 69 6e 69 74 69 61 6c 69 73 *.................auto.initialis
a000 65 64 20 74 6f 20 4e 55 4c 4c 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ed.to.NULL.......*/.....function
a020 20 26 5f 67 65 74 53 74 61 74 69 63 50 72 6f 70 65 72 74 79 28 24 76 61 72 29 0a 20 20 20 20 7b .&_getStaticProperty($var).....{
a040 0a 20 20 20 20 20 20 20 20 73 74 61 74 69 63 20 24 70 72 6f 70 65 72 74 69 65 73 3b 0a 20 20 20 .........static.$properties;....
a060 20 20 20 20 20 72 65 74 75 72 6e 20 24 70 72 6f 70 65 72 74 69 65 73 5b 24 76 61 72 5d 3b 0a 20 .....return.$properties[$var];..
a080 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 7d 7d 7d 0a 7d 0a 3f 3e 0a 00 00 00 00 00 00 00 00 00 00 ...}......//.}}}.}.?>...........
a0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................