Completed
Push — master ( 2dcb43...e8e430 )
by Yannick
30:24
created
country-statistics-aircraft.php 1 patch
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -3,8 +3,8 @@
 block discarded – undo
3 3
 require_once('require/class.Spotter.php');
4 4
 require_once('require/class.Language.php');
5 5
 if (!isset($_GET['country'])) {
6
-        header('Location: '.$globalURL.'/country');
7
-        die();
6
+		header('Location: '.$globalURL.'/country');
7
+		die();
8 8
 }
9 9
 $Spotter = new Spotter();
10 10
 
Please login to merge, or discard this patch.
contribute.php 1 patch
Braces   +13 added lines, -2 removed lines patch added patch discarded remove patch
@@ -11,10 +11,21 @@
 block discarded – undo
11 11
     <p>You can contribute to <?php print $globalName; ?> if you have an ADS-B receiver.</p>
12 12
     <h3>You need to : </h3>
13 13
     <ul>
14
-	<li>Create an account on <a href="<?php if (isset($globalContributeLogin)) print $globalContributeLogin.'">'.$globalContributeLogin; else print 'https://login.flightairmap.fr">login.flightairmap.fr'; ?></a></li>
14
+	<li>Create an account on <a href="<?php if (isset($globalContributeLogin)) {
15
+	print $globalContributeLogin.'">'.$globalContributeLogin;
16
+} else {
17
+	print 'https://login.flightairmap.fr">login.flightairmap.fr';
18
+}
19
+?></a></li>
15 20
 	<li>Download dump1090 fork from <a href="https://github.com/Ysurac/dump1090">https://github.com/Ysurac/dump1090</a></li>
16 21
 	<li>Compile zfamup1090 with <em>make zfamup1090</em> (you need to have libcurl installed)</li>
17
-	<li>Run zfamup1090 : <em>./zfamup1090 --net-zfam-user YourUsername --net-zfam-pass YourPassword<?php if (isset($globalContributeURL)) print ' --net-zfam-addr '.$globalContributeURL; if (isset($globalContributePort)) print ' --net-zfam-port '.$globalContributePort; ?></em> (add <em>--net-bo-ipaddr ipofbeastsource --net-bo-port portofbeastsource</em> if needed, default to 127.0.0.1 and 30005)</li>
22
+	<li>Run zfamup1090 : <em>./zfamup1090 --net-zfam-user YourUsername --net-zfam-pass YourPassword<?php if (isset($globalContributeURL)) {
23
+	print ' --net-zfam-addr '.$globalContributeURL;
24
+}
25
+if (isset($globalContributePort)) {
26
+	print ' --net-zfam-port '.$globalContributePort;
27
+}
28
+?></em> (add <em>--net-bo-ipaddr ipofbeastsource --net-bo-port portofbeastsource</em> if needed, default to 127.0.0.1 and 30005)</li>
18 29
     </ul>
19 30
 </div>
20 31
 <?php
Please login to merge, or discard this patch.
tools-acars.php 1 patch
Braces   +3 added lines, -1 removed lines patch added patch discarded remove patch
@@ -21,7 +21,9 @@
 block discarded – undo
21 21
 print '<fieldset class="form-group">';
22 22
 print '<label for="acars_message">'._("ACARS Message").'</label>';
23 23
 print '<textarea class="form-control" name="acars_message" id="acars_message" rows="5">';
24
-if ($message != '') print $message;
24
+if ($message != '') {
25
+	print $message;
26
+}
25 27
 print '</textarea>';
26 28
 print '</fieldset>';
27 29
 print '<button type="submit" class="btn btn-primary">Submit</button>';
Please login to merge, or discard this patch.
install/populate_ivao.php 1 patch
Indentation   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -1,23 +1,23 @@
 block discarded – undo
1 1
 #!/usr/bin/php
2 2
 <?php
3
-    require_once('../require/settings.php');
4
-    if ($globalInstalled) {
5
-        echo '$globalInstalled must be set to FALSE in require/settings.php';
6
-        exit;
7
-    }
8
-    require('class.update_db.php');
9
-    if (isset($globalVATSIM) && $globalVATSIM) {
3
+	require_once('../require/settings.php');
4
+	if ($globalInstalled) {
5
+		echo '$globalInstalled must be set to FALSE in require/settings.php';
6
+		exit;
7
+	}
8
+	require('class.update_db.php');
9
+	if (isset($globalVATSIM) && $globalVATSIM) {
10 10
 	echo "Install VATSIM airlines...";
11 11
 	update_db::update_vatsim();
12 12
 	echo "Done !\n";
13
-    }
14
-    if (isset($globalIVAO) && $globalIVAO) {
13
+	}
14
+	if (isset($globalIVAO) && $globalIVAO) {
15 15
 	if (!file_exists('tmp/ivae_feb2013.zip')) {
16 16
 		echo "You have to download the file ivae_feb2013.zip from https://www.ivao.aero/softdev/mirrors.asp?software=IvAeDataUp and put it in install/tmp directory";
17 17
 	} else {
18
-	        echo "Install IVAO airlines and logos...";
19
-	        update_db::update_IVAO();
18
+			echo "Install IVAO airlines and logos...";
19
+			update_db::update_IVAO();
20 20
 		echo "Done !\n";
21 21
 	}
22
-    }
22
+	}
23 23
 ?>
24 24
\ No newline at end of file
Please login to merge, or discard this patch.
install/libs/sparqllib.php 1 patch
Braces   +2 added lines, -10 removed lines patch added patch discarded remove patch
@@ -215,14 +215,7 @@  discard block
 block discarded – undo
215 215
 		}
216 216
 		$r = null;
217 217
 
218
-		if( $code == "select" ) { $r = $this->test_select(); }
219
-		elseif( $code == "constant_as" ) { $r = $this->test_constant_as(); }
220
-		elseif( $code == "math_as" ) { $r = $this->test_math_as(); }
221
-		elseif( $code == "count" ) { $r = $this->test_count(); }
222
-		elseif( $code == "max" ) { $r = $this->test_max(); }
223
-		elseif( $code == "load" ) { $r = $this->test_load(); }
224
-		elseif( $code == "sample" ) { $r = $this->test_sample(); }
225
-		else { print "<p>Unknown capability code: '$code'</p>"; return false; }
218
+		if( $code == "select" ) { $r = $this->test_select(); } elseif( $code == "constant_as" ) { $r = $this->test_constant_as(); } elseif( $code == "math_as" ) { $r = $this->test_math_as(); } elseif( $code == "count" ) { $r = $this->test_count(); } elseif( $code == "max" ) { $r = $this->test_max(); } elseif( $code == "load" ) { $r = $this->test_load(); } elseif( $code == "sample" ) { $r = $this->test_sample(); } else { print "<p>Unknown capability code: '$code'</p>"; return false; }
226 219
 		$this->caps[$code] = $r;
227 220
 		if( isset( $this->caps_cache ) )
228 221
 		{
@@ -231,8 +224,7 @@  discard block
 block discarded – undo
231 224
 			if( $was_cached )
232 225
 			{
233 226
 				dba_replace( $db_key, $db_val, $this->caps_cache );
234
-			}
235
-			else
227
+			} else
236 228
 			{
237 229
 				dba_insert( $db_key, $db_val, $this->caps_cache );
238 230
 			}
Please login to merge, or discard this patch.
install/update_arrival_airport.php 1 patch
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -4,13 +4,13 @@
 block discarded – undo
4 4
  *    This Script will try to find all real arrival airports for all flights in DB
5 5
  *
6 6
 */
7
-    require_once('../require/settings.php');
8
-    if ($globalInstalled) {
9
-        echo '$globalInstalled must be set to FALSE in require/settings.php';
10
-        exit;
11
-    }
12
-    require('../require/class.Spotter.php');
13
-    $Spotter = new Spotter();
14
-    $Spotter->updateArrivalAirports();
7
+	require_once('../require/settings.php');
8
+	if ($globalInstalled) {
9
+		echo '$globalInstalled must be set to FALSE in require/settings.php';
10
+		exit;
11
+	}
12
+	require('../require/class.Spotter.php');
13
+	$Spotter = new Spotter();
14
+	$Spotter->updateArrivalAirports();
15 15
 
16 16
 ?>
17 17
\ No newline at end of file
Please login to merge, or discard this patch.
tools-notam.php 1 patch
Braces   +3 added lines, -1 removed lines patch added patch discarded remove patch
@@ -23,7 +23,9 @@
 block discarded – undo
23 23
 print '<fieldset class="form-group">';
24 24
 print '<label for="notam_message">'._("NOTAM Message").'</label>';
25 25
 print '<textarea class="form-control" name="notam_message" id="notam_message" rows="5">';
26
-if ($message != '') print $message;
26
+if ($message != '') {
27
+	print $message;
28
+}
27 29
 print '</textarea>';
28 30
 print '</fieldset>';
29 31
 print '<button type="submit" class="btn btn-primary">Submit</button>';
Please login to merge, or discard this patch.
require/class.Language.php 2 patches
Braces   +6 added lines, -2 removed lines patch added patch discarded remove patch
@@ -86,7 +86,9 @@  discard block
 block discarded – undo
86 86
 			return $result;
87 87
 		}
88 88
 		$handle = @opendir('./locale');
89
-		if ($handle === false) return $result;
89
+		if ($handle === false) {
90
+			return $result;
91
+		}
90 92
 		while (false !== ($file = readdir($handle))) {
91 93
 			$path = './locale'.'/'.$file.'/LC_MESSAGES/fam.mo';
92 94
 			if ($file != "." && $file != ".." && @file_exists($path)) {
@@ -112,7 +114,9 @@  discard block
 block discarded – undo
112 114
 		$available = $this->listLocaleDir();
113 115
 		$allAvailableLanguages = array();
114 116
 		foreach ($available as $lang) {
115
-			if (isset($this->all_languages[$lang])) $allAvailableLanguages[$lang] = $this->all_languages[$lang];
117
+			if (isset($this->all_languages[$lang])) {
118
+				$allAvailableLanguages[$lang] = $this->all_languages[$lang];
119
+			}
116 120
 		}
117 121
 		return $allAvailableLanguages;
118 122
 	}
Please login to merge, or discard this patch.
Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -68,10 +68,10 @@  discard block
 block discarded – undo
68 68
 			);
69 69
 
70 70
 	/**
71
-	* Returns list of available locales
72
-	*
73
-	* @return array
74
-	*/
71
+	 * Returns list of available locales
72
+	 *
73
+	 * @return array
74
+	 */
75 75
 	public function listLocaleDir()
76 76
 	{
77 77
 		$result = array('en_GB');
@@ -96,9 +96,9 @@  discard block
 block discarded – undo
96 96
 	}
97 97
 
98 98
 	/**
99
-	* Returns list of available languages
100
-	*
101
-	* @return array
99
+	 * Returns list of available languages
100
+	 *
101
+	 * @return array
102 102
 	 */
103 103
 	public function getLanguages()
104 104
 	{
Please login to merge, or discard this patch.
require/libs/uagent/uagent.php 2 patches
Indentation   +342 added lines, -342 removed lines patch added patch discarded remove patch
@@ -8,347 +8,347 @@
 block discarded – undo
8 8
 
9 9
 class UAgent
10 10
 {
11
-    // General token that says the browser is Mozilla compatible, 
12
-    // and is common to almost every browser today.
13
-    const MOZILLA = 'Mozilla/5.0 ';
14
-
15
-    /**
16
-     * Processors by Arch.
17
-     */
18
-    public static $processors = array(
19
-        'lin' => array( 'i686', 'x86_64' ),
20
-        'mac' => array( 'Intel', 'PPC', 'U; Intel', 'U; PPC' ),
21
-        'win' => array( 'foo' )
22
-    );
23
-
24
-    /**
25
-     * Browsers
26
-     * 
27
-     * Weighting is based on market share to determine frequency.
28
-     */
29
-    public static $browsers = array(
30
-        34 => array(
31
-            89 => array( 'chrome', 'win' ),
32
-            9  => array( 'chrome', 'mac' ),
33
-            2  => array( 'chrome', 'lin' )
34
-        ),
35
-        32 => array(
36
-            100 => array( 'iexplorer', 'win' )
37
-        ),
38
-        25 => array(
39
-            83 => array( 'firefox', 'win' ),
40
-            16 => array( 'firefox', 'mac' ),
41
-            1  => array( 'firefox', 'lin' )
42
-        ),
43
-        7 => array(
44
-            95 => array( 'safari', 'mac' ),
45
-            4  => array( 'safari', 'win' ),
46
-            1  => array( 'safari', 'lin' )
47
-        ),
48
-        2 => array(
49
-            91 => array( 'opera', 'win' ),
50
-            6  => array( 'opera', 'lin' ),
51
-            3  => array( 'opera', 'mac' )
52
-        )
53
-    );
54
-
55
-    /**
56
-     * List of Lanuge Culture Codes (ISO 639-1)
57
-     *
58
-     * @see: http://msdn.microsoft.com/en-gb/library/ee825488(v=cs.20).aspx
59
-     */
60
-    public static $languages = array(
61
-        'af-ZA', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB',
62
-        'ar-LY', 'ar-MA', 'ar-OM', 'ar-QA', 'ar-SA', 'ar-SY', 'ar-TN', 'ar-YE', 'be-BY',
63
-        'bg-BG', 'ca-ES', 'cs-CZ', 'Cy-az-AZ', 'Cy-sr-SP', 'Cy-uz-UZ', 'da-DK', 'de-AT',
64
-        'de-CH', 'de-DE', 'de-LI', 'de-LU', 'div-MV', 'el-GR', 'en-AU', 'en-BZ', 'en-CA', 
65
-        'en-CB', 'en-GB', 'en-IE', 'en-JM', 'en-NZ', 'en-PH', 'en-TT', 'en-US', 'en-ZA', 
66
-        'en-ZW', 'es-AR', 'es-BO', 'es-CL', 'es-CO',  'es-CR', 'es-DO', 'es-EC', 'es-ES',
67
-        'es-GT', 'es-HN', 'es-MX', 'es-NI', 'es-PA', 'es-PE', 'es-PR', 'es-PY', 'es-SV',
68
-        'es-UY', 'es-VE', 'et-EE', 'eu-ES', 'fa-IR', 'fi-FI', 'fo-FO', 'fr-BE', 'fr-CA',
69
-        'fr-CH', 'fr-FR', 'fr-LU', 'fr-MC', 'gl-ES', 'gu-IN', 'he-IL', 'hi-IN', 'hr-HR', 
70
-        'hu-HU', 'hy-AM', 'id-ID', 'is-IS', 'it-CH', 'it-IT', 'ja-JP', 'ka-GE', 'kk-KZ',
71
-        'kn-IN', 'kok-IN', 'ko-KR', 'ky-KZ', 'Lt-az-AZ', 'lt-LT', 'Lt-sr-SP', 'Lt-uz-UZ', 
72
-        'lv-LV', 'mk-MK', 'mn-MN', 'mr-IN', 'ms-BN', 'ms-MY', 'nb-NO', 'nl-BE', 'nl-NL', 
73
-        'nn-NO', 'pa-IN', 'pl-PL', 'pt-BR', 'pt-PT', 'ro-RO', 'ru-RU', 'sa-IN', 'sk-SK', 
74
-        'sl-SI', 'sq-AL', 'sv-FI', 'sv-SE', 'sw-KE', 'syr-SY', 'ta-IN', 'te-IN', 'th-TH', 
75
-        'tr-TR', 'tt-RU', 'uk-UA', 'ur-PK', 'vi-VN', 'zh-CHS', 'zh-CHT', 'zh-CN', 'zh-HK', 
76
-        'zh-MO', 'zh-SG', 'zh-TW',   
77
-    );    
78
-
79
-    /**
80
-     * Generate Device Platform
81
-     *
82
-     * Uses a random result with a weighting related to frequencies.
83
-     */
84
-    public static function generate_platform()
85
-    {
86
-        $rand = mt_rand( 1, 100 );
87
-        $sum = 0;
88
-
89
-        foreach ( self::$browsers as $share => $freq_os )
90
-        {
91
-            $sum += $share;
92
-
93
-            if ( $rand <= $sum )
94
-            {
95
-                $rand = mt_rand( 1, 100 );
96
-                $sum = 0;
97
-
98
-                foreach ( $freq_os as $share => $choice )
99
-                {
100
-                    $sum += $share;
101
-
102
-                    if ( $rand <= $sum )
103
-                    {
104
-                        return $choice;
105
-                    }
106
-                }
107
-            }
108
-        }
109
-
110
-        throw new Exception( 'Sum of $browsers frequency is not 100.' );
111
-    }
112
-
113
-    private static function array_random( $array )
114
-    {
115
-        $i = array_rand( $array, 1 );
116
-
117
-        return $array[$i];
118
-    }
119
-
120
-    private static function get_language( $lang = array() )
121
-    {
122
-        return self::array_random( empty( $lang ) ? self::$languages : $lang );
123
-    }
124
-
125
-    private static function get_processor( $os )
126
-    {
127
-        return self::array_random( self::$processors[$os] );
128
-    }
129
-
130
-    private static function get_version_nt()
131
-    {   
132
-        // Win2k (5.0) to Win 7 (6.1).
133
-        return mt_rand( 5, 6 ) . '.' . mt_rand( 0, 1 );
134
-    }
135
-
136
-    private static function get_version_osx()
137
-    {
138
-        return '10_' . mt_rand( 5, 7 ) . '_' . mt_rand( 0, 9 );
139
-    }
140
-
141
-    private static function get_version_webkit()
142
-    {
143
-        return mt_rand( 531, 536 ) . mt_rand( 0, 2 );
144
-    }
145
-
146
-    private static function get_verison_chrome()
147
-    {
148
-        return mt_rand( 13, 15 ) . '.0.' . mt_rand( 800, 899 ) . '.0';
149
-    }
150
-
151
-    private static function get_version_gecko()
152
-    {
153
-        return mt_rand( 17, 31 ) . '.0';
154
-    }
155
-
156
-    private static function get_version_ie()
157
-    {
158
-        return mt_rand( 7, 9 ) . '.0';
159
-    }
160
-
161
-    private static function get_version_trident()
162
-    {
163
-        // IE8 (4.0) to IE11 (7.0).
164
-        return mt_rand( 4, 7 ) . '.0';
165
-    }
166
-
167
-    private static function get_version_net()
168
-    {
169
-        // generic .NET Framework common language run time (CLR) version numbers.
170
-        $frameworks = array(
171
-            '2.0.50727',
172
-            '3.0.4506',
173
-            '3.5.30729',
174
-        );
175
-
176
-        $rev = '.' . mt_rand( 26, 648 );
177
-
178
-        return self::array_random( $frameworks ) . $rev;
179
-    }
180
-
181
-    private static function get_version_safari()
182
-    {
183
-        if ( mt_rand( 0, 1 ) == 0 )
184
-        {
185
-            $ver = mt_rand( 4, 5 ) . '.' . mt_rand( 0, 1 );
186
-        }
187
-        else
188
-        {
189
-            $ver = mt_rand( 4, 5 ) . '.0.' . mt_rand( 1, 5 );
190
-        }
191
-
192
-        return $ver;
193
-    }
194
-
195
-    private static function get_version_opera()
196
-    {
197
-        return mt_rand( 15, 19 ) . '.0.' . mt_rand( 1147, 1284 ) . mt_rand( 49, 100 );
198
-    }
199
-
200
-    /**
201
-     * Opera
202
-     * 
203
-     * @see: http://dev.opera.com/blog/opera-user-agent-strings-opera-15-and-beyond/
204
-     */
205
-    public static function opera( $arch )
206
-    {
207
-        $opera = ' OPR/' . self::get_version_opera();
208
-
209
-        // WebKit Rendering Engine (WebKit = Backend, Safari = Frontend).
210
-        $engine = self::get_version_webkit();
211
-        $webkit = ' AppleWebKit/' . $engine . ' (KHTML, like Gecko)';
212
-        $chrome = ' Chrome/' . self::get_verison_chrome();
213
-        $safari = ' Safari/' . $engine;
214
-
215
-        switch ( $arch )
216
-        {
217
-            case 'lin':
218
-                return '(X11; Linux {proc}) ' . $webkit . $chrome . $safari . $opera;
219
-            case 'mac':
220
-                $osx = self::get_version_osx();
221
-                return '(Macintosh; U; {proc} Mac OS X ' . $osx . ')' . $webkit . $chrome . $safari . $opera;
222
-            case 'win':
223
-                // fall through.
224
-            default:
225
-                $nt = self::get_version_nt();
226
-                return '(Windows NT ' . $nt . '; WOW64) ' . $webkit . $chrome . $safari . $opera;
227
-        }
228
-    }    
229
-
230
-    /**
231
-     * Safari
232
-     *
233
-     */
234
-    public static function safari( $arch )
235
-    {
236
-        $version = ' Version/' . self::get_version_safari();
237
-
238
-        // WebKit Rendering Engine (WebKit = Backend, Safari = Frontend).
239
-        $engine = self::get_version_webkit();
240
-        $webkit = ' AppleWebKit/' . $engine . ' (KHTML, like Gecko)';
241
-        $safari = ' Safari/' . $engine;
242
-
243
-        switch ( $arch )
244
-        {
245
-            case 'mac':
246
-                $osx = self::get_version_osx();
247
-                return '(Macintosh; U; {proc} Mac OS X ' . $osx . '; {lang})' . $webkit . $version . $safari;
248
-            case 'win':
249
-                // fall through.
250
-            default:
251
-                $nt = self::get_version_nt();
252
-                return '(Windows; U; Windows NT ' . $nt . ')' . $webkit . $version . $safari;
253
-        }
254
-
255
-    }
256
-
257
-    /**
258
-     * Internet Explorer
259
-     * 
260
-     * @see: http://msdn.microsoft.com/en-gb/library/ms537503(v=vs.85).aspx
261
-     */
262
-    public static function iexplorer( $arch )
263
-    {
264
-        $nt = self::get_version_nt();
265
-        $ie = self::get_version_ie();
266
-        $trident = self::get_version_trident();
267
-        $net = self::get_version_net();
268
-
269
-        return '(compatible' 
270
-            . '; MSIE ' . $ie 
271
-            . '; Windows NT ' . $nt 
272
-            . '; WOW64' // A 32-bit version of Internet Explorer is running on a 64-bit processor.
273
-            . '; Trident/' . $trident 
274
-            . '; .NET CLR ' . $net
275
-            . ')';
276
-    }
277
-
278
-    /**
279
-     * Firefox User-Agent
280
-     *
281
-     * @see: https://developer.mozilla.org/en-US/docs/Web/HTTP/Gecko_user_agent_string_reference
282
-     */
283
-    public static function firefox( $arch )
284
-    {
285
-        // The release version of Gecko. 
286
-        $gecko = self::get_version_gecko();
287
-
288
-        // On desktop, the gecko trail is fixed.
289
-        $trail = '20100101';
290
-
291
-        $release = 'rv:' . $gecko;
292
-        $version = 'Gecko/' . $trail . ' Firefox/' . $gecko;
293
-
294
-        switch ( $arch )
295
-        {
296
-            case 'lin':
297
-                return '(X11; Linux {proc}; ' . $release . ') ' . $version;
298
-            case 'mac':
299
-                $osx = self::get_version_osx();
300
-                return '(Macintosh; {proc} Mac OS X ' . $osx . '; ' . $release . ') ' . $version;
301
-            case 'win':
302
-                // fall through.
303
-            default:
304
-                $nt = self::get_version_nt();
305
-                return '(Windows NT ' . $nt . '; {lang}; ' . $release . ') ' . $version;
306
-        }
307
-    }
308
-
309
-    public static function chrome( $arch )
310
-    {
311
-        $chrome = ' Chrome/' . self::get_verison_chrome();
312
-
313
-        // WebKit Rendering Engine (WebKit = Backend, Safari = Frontend).
314
-        $engine = self::get_version_webkit();
315
-        $webkit = ' AppleWebKit/' . $engine . ' (KHTML, like Gecko)';
316
-        $safari = ' Safari/' . $engine;
317
-
318
-        switch ( $arch )
319
-        {
320
-            case 'lin':
321
-                return '(X11; Linux {proc}) ' . $webkit . $chrome . $safari;
322
-            case 'mac':
323
-                $osx = self::get_version_osx();
324
-                return '(Macintosh; U; {proc} Mac OS X ' . $osx . ')' . $webkit . $chrome . $safari;
325
-            case 'win':
326
-                // fall through.
327
-            default:
328
-                $nt = self::get_version_nt();
329
-                return '(Windows NT ' . $nt . ') ' . $webkit . $chrome . $safari;
330
-        }
331
-    }
332
-
333
-    public static function random( $lang = array( 'en-US' ) )
334
-    {
335
-        list( $browser, $os ) = self::generate_platform();
336
-
337
-        return self::generate( $browser, $os, $lang );
338
-    }
339
-
340
-    public static function generate( $browser = 'chrome', $os = 'win', $lang = array( 'en-US' ) )
341
-    {
342
-        $ua = self::MOZILLA . call_user_func( 'UAgent::' . $browser, $os );
343
-
344
-        $tags = array(
345
-            '{proc}' => self::get_processor( $os ),
346
-            '{lang}' => self::get_language( $lang ),
347
-        );
348
-
349
-        $ua = str_replace( array_keys( $tags ), array_values( $tags ), $ua );
350
-
351
-        return $ua;
352
-    }
11
+	// General token that says the browser is Mozilla compatible, 
12
+	// and is common to almost every browser today.
13
+	const MOZILLA = 'Mozilla/5.0 ';
14
+
15
+	/**
16
+	 * Processors by Arch.
17
+	 */
18
+	public static $processors = array(
19
+		'lin' => array( 'i686', 'x86_64' ),
20
+		'mac' => array( 'Intel', 'PPC', 'U; Intel', 'U; PPC' ),
21
+		'win' => array( 'foo' )
22
+	);
23
+
24
+	/**
25
+	 * Browsers
26
+	 * 
27
+	 * Weighting is based on market share to determine frequency.
28
+	 */
29
+	public static $browsers = array(
30
+		34 => array(
31
+			89 => array( 'chrome', 'win' ),
32
+			9  => array( 'chrome', 'mac' ),
33
+			2  => array( 'chrome', 'lin' )
34
+		),
35
+		32 => array(
36
+			100 => array( 'iexplorer', 'win' )
37
+		),
38
+		25 => array(
39
+			83 => array( 'firefox', 'win' ),
40
+			16 => array( 'firefox', 'mac' ),
41
+			1  => array( 'firefox', 'lin' )
42
+		),
43
+		7 => array(
44
+			95 => array( 'safari', 'mac' ),
45
+			4  => array( 'safari', 'win' ),
46
+			1  => array( 'safari', 'lin' )
47
+		),
48
+		2 => array(
49
+			91 => array( 'opera', 'win' ),
50
+			6  => array( 'opera', 'lin' ),
51
+			3  => array( 'opera', 'mac' )
52
+		)
53
+	);
54
+
55
+	/**
56
+	 * List of Lanuge Culture Codes (ISO 639-1)
57
+	 *
58
+	 * @see: http://msdn.microsoft.com/en-gb/library/ee825488(v=cs.20).aspx
59
+	 */
60
+	public static $languages = array(
61
+		'af-ZA', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB',
62
+		'ar-LY', 'ar-MA', 'ar-OM', 'ar-QA', 'ar-SA', 'ar-SY', 'ar-TN', 'ar-YE', 'be-BY',
63
+		'bg-BG', 'ca-ES', 'cs-CZ', 'Cy-az-AZ', 'Cy-sr-SP', 'Cy-uz-UZ', 'da-DK', 'de-AT',
64
+		'de-CH', 'de-DE', 'de-LI', 'de-LU', 'div-MV', 'el-GR', 'en-AU', 'en-BZ', 'en-CA', 
65
+		'en-CB', 'en-GB', 'en-IE', 'en-JM', 'en-NZ', 'en-PH', 'en-TT', 'en-US', 'en-ZA', 
66
+		'en-ZW', 'es-AR', 'es-BO', 'es-CL', 'es-CO',  'es-CR', 'es-DO', 'es-EC', 'es-ES',
67
+		'es-GT', 'es-HN', 'es-MX', 'es-NI', 'es-PA', 'es-PE', 'es-PR', 'es-PY', 'es-SV',
68
+		'es-UY', 'es-VE', 'et-EE', 'eu-ES', 'fa-IR', 'fi-FI', 'fo-FO', 'fr-BE', 'fr-CA',
69
+		'fr-CH', 'fr-FR', 'fr-LU', 'fr-MC', 'gl-ES', 'gu-IN', 'he-IL', 'hi-IN', 'hr-HR', 
70
+		'hu-HU', 'hy-AM', 'id-ID', 'is-IS', 'it-CH', 'it-IT', 'ja-JP', 'ka-GE', 'kk-KZ',
71
+		'kn-IN', 'kok-IN', 'ko-KR', 'ky-KZ', 'Lt-az-AZ', 'lt-LT', 'Lt-sr-SP', 'Lt-uz-UZ', 
72
+		'lv-LV', 'mk-MK', 'mn-MN', 'mr-IN', 'ms-BN', 'ms-MY', 'nb-NO', 'nl-BE', 'nl-NL', 
73
+		'nn-NO', 'pa-IN', 'pl-PL', 'pt-BR', 'pt-PT', 'ro-RO', 'ru-RU', 'sa-IN', 'sk-SK', 
74
+		'sl-SI', 'sq-AL', 'sv-FI', 'sv-SE', 'sw-KE', 'syr-SY', 'ta-IN', 'te-IN', 'th-TH', 
75
+		'tr-TR', 'tt-RU', 'uk-UA', 'ur-PK', 'vi-VN', 'zh-CHS', 'zh-CHT', 'zh-CN', 'zh-HK', 
76
+		'zh-MO', 'zh-SG', 'zh-TW',   
77
+	);    
78
+
79
+	/**
80
+	 * Generate Device Platform
81
+	 *
82
+	 * Uses a random result with a weighting related to frequencies.
83
+	 */
84
+	public static function generate_platform()
85
+	{
86
+		$rand = mt_rand( 1, 100 );
87
+		$sum = 0;
88
+
89
+		foreach ( self::$browsers as $share => $freq_os )
90
+		{
91
+			$sum += $share;
92
+
93
+			if ( $rand <= $sum )
94
+			{
95
+				$rand = mt_rand( 1, 100 );
96
+				$sum = 0;
97
+
98
+				foreach ( $freq_os as $share => $choice )
99
+				{
100
+					$sum += $share;
101
+
102
+					if ( $rand <= $sum )
103
+					{
104
+						return $choice;
105
+					}
106
+				}
107
+			}
108
+		}
109
+
110
+		throw new Exception( 'Sum of $browsers frequency is not 100.' );
111
+	}
112
+
113
+	private static function array_random( $array )
114
+	{
115
+		$i = array_rand( $array, 1 );
116
+
117
+		return $array[$i];
118
+	}
119
+
120
+	private static function get_language( $lang = array() )
121
+	{
122
+		return self::array_random( empty( $lang ) ? self::$languages : $lang );
123
+	}
124
+
125
+	private static function get_processor( $os )
126
+	{
127
+		return self::array_random( self::$processors[$os] );
128
+	}
129
+
130
+	private static function get_version_nt()
131
+	{   
132
+		// Win2k (5.0) to Win 7 (6.1).
133
+		return mt_rand( 5, 6 ) . '.' . mt_rand( 0, 1 );
134
+	}
135
+
136
+	private static function get_version_osx()
137
+	{
138
+		return '10_' . mt_rand( 5, 7 ) . '_' . mt_rand( 0, 9 );
139
+	}
140
+
141
+	private static function get_version_webkit()
142
+	{
143
+		return mt_rand( 531, 536 ) . mt_rand( 0, 2 );
144
+	}
145
+
146
+	private static function get_verison_chrome()
147
+	{
148
+		return mt_rand( 13, 15 ) . '.0.' . mt_rand( 800, 899 ) . '.0';
149
+	}
150
+
151
+	private static function get_version_gecko()
152
+	{
153
+		return mt_rand( 17, 31 ) . '.0';
154
+	}
155
+
156
+	private static function get_version_ie()
157
+	{
158
+		return mt_rand( 7, 9 ) . '.0';
159
+	}
160
+
161
+	private static function get_version_trident()
162
+	{
163
+		// IE8 (4.0) to IE11 (7.0).
164
+		return mt_rand( 4, 7 ) . '.0';
165
+	}
166
+
167
+	private static function get_version_net()
168
+	{
169
+		// generic .NET Framework common language run time (CLR) version numbers.
170
+		$frameworks = array(
171
+			'2.0.50727',
172
+			'3.0.4506',
173
+			'3.5.30729',
174
+		);
175
+
176
+		$rev = '.' . mt_rand( 26, 648 );
177
+
178
+		return self::array_random( $frameworks ) . $rev;
179
+	}
180
+
181
+	private static function get_version_safari()
182
+	{
183
+		if ( mt_rand( 0, 1 ) == 0 )
184
+		{
185
+			$ver = mt_rand( 4, 5 ) . '.' . mt_rand( 0, 1 );
186
+		}
187
+		else
188
+		{
189
+			$ver = mt_rand( 4, 5 ) . '.0.' . mt_rand( 1, 5 );
190
+		}
191
+
192
+		return $ver;
193
+	}
194
+
195
+	private static function get_version_opera()
196
+	{
197
+		return mt_rand( 15, 19 ) . '.0.' . mt_rand( 1147, 1284 ) . mt_rand( 49, 100 );
198
+	}
199
+
200
+	/**
201
+	 * Opera
202
+	 * 
203
+	 * @see: http://dev.opera.com/blog/opera-user-agent-strings-opera-15-and-beyond/
204
+	 */
205
+	public static function opera( $arch )
206
+	{
207
+		$opera = ' OPR/' . self::get_version_opera();
208
+
209
+		// WebKit Rendering Engine (WebKit = Backend, Safari = Frontend).
210
+		$engine = self::get_version_webkit();
211
+		$webkit = ' AppleWebKit/' . $engine . ' (KHTML, like Gecko)';
212
+		$chrome = ' Chrome/' . self::get_verison_chrome();
213
+		$safari = ' Safari/' . $engine;
214
+
215
+		switch ( $arch )
216
+		{
217
+			case 'lin':
218
+				return '(X11; Linux {proc}) ' . $webkit . $chrome . $safari . $opera;
219
+			case 'mac':
220
+				$osx = self::get_version_osx();
221
+				return '(Macintosh; U; {proc} Mac OS X ' . $osx . ')' . $webkit . $chrome . $safari . $opera;
222
+			case 'win':
223
+				// fall through.
224
+			default:
225
+				$nt = self::get_version_nt();
226
+				return '(Windows NT ' . $nt . '; WOW64) ' . $webkit . $chrome . $safari . $opera;
227
+		}
228
+	}    
229
+
230
+	/**
231
+	 * Safari
232
+	 *
233
+	 */
234
+	public static function safari( $arch )
235
+	{
236
+		$version = ' Version/' . self::get_version_safari();
237
+
238
+		// WebKit Rendering Engine (WebKit = Backend, Safari = Frontend).
239
+		$engine = self::get_version_webkit();
240
+		$webkit = ' AppleWebKit/' . $engine . ' (KHTML, like Gecko)';
241
+		$safari = ' Safari/' . $engine;
242
+
243
+		switch ( $arch )
244
+		{
245
+			case 'mac':
246
+				$osx = self::get_version_osx();
247
+				return '(Macintosh; U; {proc} Mac OS X ' . $osx . '; {lang})' . $webkit . $version . $safari;
248
+			case 'win':
249
+				// fall through.
250
+			default:
251
+				$nt = self::get_version_nt();
252
+				return '(Windows; U; Windows NT ' . $nt . ')' . $webkit . $version . $safari;
253
+		}
254
+
255
+	}
256
+
257
+	/**
258
+	 * Internet Explorer
259
+	 * 
260
+	 * @see: http://msdn.microsoft.com/en-gb/library/ms537503(v=vs.85).aspx
261
+	 */
262
+	public static function iexplorer( $arch )
263
+	{
264
+		$nt = self::get_version_nt();
265
+		$ie = self::get_version_ie();
266
+		$trident = self::get_version_trident();
267
+		$net = self::get_version_net();
268
+
269
+		return '(compatible' 
270
+			. '; MSIE ' . $ie 
271
+			. '; Windows NT ' . $nt 
272
+			. '; WOW64' // A 32-bit version of Internet Explorer is running on a 64-bit processor.
273
+			. '; Trident/' . $trident 
274
+			. '; .NET CLR ' . $net
275
+			. ')';
276
+	}
277
+
278
+	/**
279
+	 * Firefox User-Agent
280
+	 *
281
+	 * @see: https://developer.mozilla.org/en-US/docs/Web/HTTP/Gecko_user_agent_string_reference
282
+	 */
283
+	public static function firefox( $arch )
284
+	{
285
+		// The release version of Gecko. 
286
+		$gecko = self::get_version_gecko();
287
+
288
+		// On desktop, the gecko trail is fixed.
289
+		$trail = '20100101';
290
+
291
+		$release = 'rv:' . $gecko;
292
+		$version = 'Gecko/' . $trail . ' Firefox/' . $gecko;
293
+
294
+		switch ( $arch )
295
+		{
296
+			case 'lin':
297
+				return '(X11; Linux {proc}; ' . $release . ') ' . $version;
298
+			case 'mac':
299
+				$osx = self::get_version_osx();
300
+				return '(Macintosh; {proc} Mac OS X ' . $osx . '; ' . $release . ') ' . $version;
301
+			case 'win':
302
+				// fall through.
303
+			default:
304
+				$nt = self::get_version_nt();
305
+				return '(Windows NT ' . $nt . '; {lang}; ' . $release . ') ' . $version;
306
+		}
307
+	}
308
+
309
+	public static function chrome( $arch )
310
+	{
311
+		$chrome = ' Chrome/' . self::get_verison_chrome();
312
+
313
+		// WebKit Rendering Engine (WebKit = Backend, Safari = Frontend).
314
+		$engine = self::get_version_webkit();
315
+		$webkit = ' AppleWebKit/' . $engine . ' (KHTML, like Gecko)';
316
+		$safari = ' Safari/' . $engine;
317
+
318
+		switch ( $arch )
319
+		{
320
+			case 'lin':
321
+				return '(X11; Linux {proc}) ' . $webkit . $chrome . $safari;
322
+			case 'mac':
323
+				$osx = self::get_version_osx();
324
+				return '(Macintosh; U; {proc} Mac OS X ' . $osx . ')' . $webkit . $chrome . $safari;
325
+			case 'win':
326
+				// fall through.
327
+			default:
328
+				$nt = self::get_version_nt();
329
+				return '(Windows NT ' . $nt . ') ' . $webkit . $chrome . $safari;
330
+		}
331
+	}
332
+
333
+	public static function random( $lang = array( 'en-US' ) )
334
+	{
335
+		list( $browser, $os ) = self::generate_platform();
336
+
337
+		return self::generate( $browser, $os, $lang );
338
+	}
339
+
340
+	public static function generate( $browser = 'chrome', $os = 'win', $lang = array( 'en-US' ) )
341
+	{
342
+		$ua = self::MOZILLA . call_user_func( 'UAgent::' . $browser, $os );
343
+
344
+		$tags = array(
345
+			'{proc}' => self::get_processor( $os ),
346
+			'{lang}' => self::get_language( $lang ),
347
+		);
348
+
349
+		$ua = str_replace( array_keys( $tags ), array_values( $tags ), $ua );
350
+
351
+		return $ua;
352
+	}
353 353
 }
354 354
 ?>
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -183,8 +183,7 @@
 block discarded – undo
183 183
         if ( mt_rand( 0, 1 ) == 0 )
184 184
         {
185 185
             $ver = mt_rand( 4, 5 ) . '.' . mt_rand( 0, 1 );
186
-        }
187
-        else
186
+        } else
188 187
         {
189 188
             $ver = mt_rand( 4, 5 ) . '.0.' . mt_rand( 1, 5 );
190 189
         }
Please login to merge, or discard this patch.