| 1 | <?php
|
|---|
| 2 |
|
|---|
| 3 |
|
|---|
| 4 | function 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 |
|
|---|
| 16 | function ua_str_contains($string, $search)
|
|---|
| 17 | {
|
|---|
| 18 | return (strpos($string, $search) !== false);
|
|---|
| 19 | }
|
|---|
| 20 |
|
|---|
| 21 | function 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 |
|
|---|
| 36 | function 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 |
|
|---|
| 121 | function 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 |
|
|---|
| 138 | function 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;"> </div></div>';
|
|---|
| 143 | } |
|---|