root/branches/user_agent/functions.php

Revision 73, 4.2 KB (checked in by daris, 2 years ago)

user_agent: css styling

Line 
1<?php
2
3
4function ua_get_filename($name, $folder)
5{
6        global $base_url;
7       
8        $name = strtolower($name);
9        $name = str_replace(' ', '', $name); // remove spaces
10        $name = preg_replace('[^a-z0-9_]', '', $name); // remove special characters
11        $name = forum_htmlencode($name);
12        $name = $base_url.'/extensions/user_agent/img/'.$folder.'/'.$name.'.png';
13        return $name;
14}
15
16function ua_str_contains($string, $search)
17{
18        return (strpos($string, $search) !== false);
19}
20
21function ua_search_for_item($items, $useragent)
22{
23        $result = '';
24       
25        foreach ($items as $item)
26        {
27                if (ua_str_contains($useragent, strtolower($item)))
28                {
29                        $result = $item;
30                        break;
31                }
32        }
33        return $result;
34}
35
36function get_useragent_names($useragent)
37{
38        if ($useragent == '')
39        {
40                $result = array(
41                        'system'                        => 'Unknown',
42                        'browser_img'           => 'Unknown',
43                        'browser_version'       => 'Unknown',
44                        'browser_name'          => 'Unknown'
45                );
46                return $result;
47        }
48       
49        $browser_img = '';
50        $browser_version = '';
51       
52        $useragent = strtolower($useragent);
53       
54        // Browser detection
55        $browsers = array('AWeb', 'Camino', 'Epiphany', 'Galeon', 'HotJava', 'iCab', 'MSIE', 'Chrome', 'Safari', 'Konqueror', 'Flock', 'Iceweasel', 'SeaMonkey', 'Firefox', 'Firebird', 'Netscape', 'Mozilla', 'Opera', 'Maxthon', 'PhaseOut', 'SlimBrowser');
56       
57        $browser = ua_search_for_item($browsers, $useragent);
58
59        $browser_version = substr($useragent, strpos($useragent, strtolower($browser)) + strlen($browser) + 1);
60        preg_match('#([\.0-9]*)#', $browser_version, $matches);
61        $browser_version = $matches[1];
62
63        if ($browser == 'MSIE')
64        {
65                if (intval($browser_version) > 6)
66                        $browser_img = 'Internet Explorer 7';
67                $browser = 'Internet Explorer';
68        }
69       
70        // System detection
71        $systems = array('Amiga', 'BeOS', 'FreeBSD', 'HP-UX', 'Linux', 'NetBSD', 'OS/2', 'SunOS', 'Symbian', 'Unix', 'Windows', 'Sun', 'Macintosh', 'Mac');
72       
73        $system = ua_search_for_item($systems, $useragent);
74       
75        if ($system == 'Linux')
76        {
77                $systems = array('CentOS', 'Debian', 'Fedora', 'Freespire', 'Gentoo', 'Katonix', 'KateOS', 'Knoppix', 'Kubuntu', 'Linspire', 'Mandriva', 'Mandrake', 'RedHat', 'Slackware', 'Slax', 'Suse', 'Xubuntu', 'Ubuntu', 'Xandros', 'Arch', 'Ark');
78
79                $system = ua_search_for_item($systems, $useragent);
80                if ($system == '')
81                        $system = 'Linux';
82               
83                if ($system == 'Mandrake')
84                        $system = 'Mandriva';
85        }
86        elseif ($system == 'Windows')
87        {
88                $version = substr($useragent, strpos($useragent, 'windows nt ') + 11);
89                if (substr($version, 0, 3) == 5.1)
90                        $system = 'Windows XP';
91                elseif (substr($version, 0, 1) == 6)
92                {
93                        if (substr($version, 0, 3) == 6.0)
94                                $system = 'Windows Vista';
95                        else
96                                $system = 'Windows Seven';
97                }
98        }
99        elseif ($system == 'Mac')
100                $system = 'Macintosh';
101
102        if (!$system)
103                $system = 'Unknown';
104        if (!$browser)
105                $browser = 'Unknown';
106
107        if (!$browser_img)
108                $browser_img = $browser;
109
110        $result = array(
111                'system'                        => $system,
112                'browser_img'           => $browser_img,
113                'browser_version'       => $browser_version,
114                'browser_name'          => $browser.' '.$browser_version
115        );
116
117        return $result;
118}
119
120
121function get_useragent_icons($useragent)
122{
123        $agent = get_useragent_names($useragent);
124
125        $result = '<img src="'.ua_get_filename($agent['system'], 'system').'" title="'.forum_htmlencode($agent['system']).'" alt="'.forum_htmlencode($agent['system']).'" style="margin-right: 1px"/>';
126        $result .= '<img src="'.ua_get_filename($agent['browser_img'], 'browser').'" title="'.forum_htmlencode($agent['browser_name']).'" alt="'.forum_htmlencode($agent['browser_name']).'" style="margin-left: 1px"/>';
127
128        // addslashes is needed for javascript
129        $description = addslashes($useragent) . '\n\nSystem:\t\t' . addslashes($agent['system']) .'\nPrzeglądarka:\t' . addslashes($agent['browser_name']);
130
131        $result = '<span class="user-agent" onclick="alert(\'' . forum_htmlencode($description) . '\')">' . $result . '</span>';
132
133        return $result;
134}
135
136
137
138function ua_chart($value, $max)
139{
140        $width = $value * 100 / $max;
141
142        return '<div style="float: left; width: 70%; border: 1px solid #aaa; margin-right: 1%; padding: 0;"><div style="width: '.$width.'%; padding: 0; background: #ddd; border-right: 1px solid #aaa;">&nbsp;</div></div>';
143}
Note: See TracBrowser for help on using the browser.