Sync plugins from current page
Signed-off-by: Adrian Nöthlich <git@promasu.tech>
This commit is contained in:
7
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.coveralls.yml
vendored
Normal file
7
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.coveralls.yml
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
service_name: travis-ci
|
||||
|
||||
coverage_clover:
|
||||
- runner.xml
|
||||
- phpunit.xml
|
||||
|
||||
json_path: coveralls.json
|
||||
12
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.gitignore
vendored
Normal file
12
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.gitignore
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
runner.log
|
||||
runner.xml
|
||||
composer.lock
|
||||
package-lock.json
|
||||
vendor/*
|
||||
package.json
|
||||
Gruntfile.js
|
||||
node_modules/*
|
||||
humbug*
|
||||
build/*
|
||||
.vscode
|
||||
.DS_Store
|
||||
39
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.travis.yml
vendored
Normal file
39
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.travis.yml
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
sudo: false
|
||||
dist: trusty
|
||||
language: php
|
||||
|
||||
php:
|
||||
- 5.4
|
||||
- 5.5
|
||||
- 5.6
|
||||
- 7.0
|
||||
- 7.1
|
||||
- 7.2
|
||||
|
||||
before_script:
|
||||
- composer self-update
|
||||
- composer update --prefer-source
|
||||
|
||||
# Install suggested cache/array-adapter on supported versions of PHP
|
||||
- composer require --dev cache/array-adapter || true
|
||||
|
||||
# Set memory limit to 2 MB
|
||||
- echo "memory_limit=2048M" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
|
||||
|
||||
# Disable X-debug on all but PHP 5.6
|
||||
- if [ "$TRAVIS_PHP_VERSION" != "5.6" ]; then phpenv config-rm xdebug.ini; fi
|
||||
|
||||
script:
|
||||
- vendor/bin/phpcs --standard=PSR1,PSR2 -n src
|
||||
|
||||
# Run tests (all except PHP 5.6)
|
||||
- if [ "$TRAVIS_PHP_VERSION" != "5.6" ]; then php bin/runner.php --show check; fi
|
||||
- if [ "$TRAVIS_PHP_VERSION" != "5.6" ]; then vendor/bin/phpunit; fi
|
||||
|
||||
# Run tests with coverage enabled (only PHP 5.6)
|
||||
- if [ "$TRAVIS_PHP_VERSION" = "5.6" ]; then php bin/runner.php --coverage --show check; fi
|
||||
- if [ "$TRAVIS_PHP_VERSION" = "5.6" ]; then vendor/bin/phpunit --coverage-clover phpunit.xml; fi
|
||||
|
||||
after_script:
|
||||
# Upload coverage to Coveralls.io
|
||||
- if [ "$TRAVIS_PHP_VERSION" = "5.6" ]; then travis_retry php vendor/bin/coveralls -v; fi
|
||||
125
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/CONTRIBUTING.md
vendored
Normal file
125
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,125 @@
|
||||
|
||||
# Pull requests
|
||||
|
||||
This project does continuous integration with [Travis](https://travis-ci.org/WhichBrowser/Parser-PHP/) and [Coveralls](https://coveralls.io/github/WhichBrowser/Parser-PHP). This means that every pull request must have the proper PSR-2 code standards and working unit tests. Please make sure your pull request passes all tests before submitting it.
|
||||
|
||||
To test your coding style run:
|
||||
|
||||
```
|
||||
vendor/bin/phpcs --standard=PSR1,PSR2 src/
|
||||
```
|
||||
|
||||
Then try the PHPunit unit tests:
|
||||
|
||||
```
|
||||
vendor/bin/phpunit
|
||||
```
|
||||
|
||||
And finally to test the WhichBrowser analyser:
|
||||
|
||||
```
|
||||
php bin/runner.php check --show
|
||||
```
|
||||
|
||||
# Unit tests
|
||||
|
||||
This project uses both unit tests for the public API and it's own testing tool for testing if the analyser properly works.
|
||||
|
||||
If you contribute to the public API, please add revelant tests. The API currently has 100% code coverage and any PR should maintain this number. The tests can be found in the `tests/unit/Model/` directory and are checked using PHPunit. This should be fairly simple.
|
||||
|
||||
To run the unit tests:
|
||||
|
||||
```
|
||||
vendor/bin/phpunit
|
||||
```
|
||||
|
||||
The data for the analyser can be found in the `tests/data/` directories. These are Yaml files containing an entry for every single test that is executed. Currently these directories contain 5000 different tests resulting in almost 100% code coverage. Every entries contains a number of keys, which represent the different parameters of the Parser object and an extra key which contains the result. If you add a new test, you should not provide the result yourself, but instead just provide the parameters and let the testing framework generate the result.
|
||||
|
||||
A very simple test entry looks like this:
|
||||
|
||||
```
|
||||
-
|
||||
headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox)'
|
||||
|
||||
```
|
||||
|
||||
Once the results if generated by it will look like this:
|
||||
|
||||
```
|
||||
-
|
||||
headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox)'
|
||||
result: { browser: { name: 'Internet Explorer', version: '9.0' }, engine: { name: Trident, version: '5.0' }, device: { type: gaming, subtype: console, manufacturer: Microsoft, model: 'Xbox 360' } }
|
||||
```
|
||||
|
||||
To run the tests:
|
||||
|
||||
```
|
||||
php bin/runner.php check --show
|
||||
```
|
||||
|
||||
And to rebase the tests to generate the new results:
|
||||
|
||||
```
|
||||
php bin/runner.php rebase
|
||||
```
|
||||
|
||||
# Data files
|
||||
|
||||
A large part of the device model information is maintained in the data files. You can find these files in the `data/` directory. The files are little more than just arrays with the model number as key and another array a the value for each entry. The value contains a manufacturer, a model name and optionally the device type. If no device type is provided we assume it is a mobile phone. The device types that you are allowed to use are defined in the `src/Contstants/DeviceType.php` file.
|
||||
|
||||
```
|
||||
DeviceModels::$ANDROID_MODELS = [
|
||||
'LG-L30L' => [ 'LG', 'F70' ]
|
||||
];
|
||||
```
|
||||
|
||||
In the example above, the model number is `LG-L30L`, the manufacturer is LG and the model name is F70. And because no device type is provided, it is a mobile phone.
|
||||
|
||||
Things can get a bit more complicated, because the key of the array can also be a regular expression. To mark this, the final character of the key must be an exclamation mark.
|
||||
|
||||
```
|
||||
DeviceModels::$ANDROID_MODELS = [
|
||||
'LG-H8(10|11|12|15|18|19)!' => [ 'LG', 'G4' ]
|
||||
];
|
||||
```
|
||||
|
||||
Because the G4 uses multiple model numbers, like LG-H810, LG-H811, LG-H812 and so on, we do not want to include a seperate line for every single permutation. So we match all different model numbers with just a single regular expression.
|
||||
|
||||
The actual regular expression that is executed will look like this: `/^LG-H8(10|11|12|15|18|19)/iu`.
|
||||
|
||||
As an optimalisation it is also possible to use subsets. One regular expression will be tested to see if the whole subset must be skipped or looked at. A subset is marked by two exclamation marks.
|
||||
|
||||
```
|
||||
DeviceModels::$ANDROID_MODELS = [
|
||||
'LG-F[0-9]{3,3}!!' => [
|
||||
'LG-F320!' => [ 'LG', 'G2' ],
|
||||
'LG-F340!' => [ 'LG', 'G Flex' ]
|
||||
]
|
||||
];
|
||||
```
|
||||
|
||||
And finally, it is also possible to use backreferences to match multiple models at the same time:
|
||||
|
||||
```
|
||||
DeviceModels::$ANDROID_MODELS = [
|
||||
'Aspire ([0-9]{4,4}[A-Z]?)!' => [ 'Acer', 'Aspire $1', DeviceType::DESKTOP ]
|
||||
];
|
||||
```
|
||||
|
||||
This will both match the "Aspire 5750G", the "Aspire 4738G" and many more similar models.
|
||||
|
||||
|
||||
On more thing you need to be aware of, all of the keys are not tested against the raw value extracted from the useragent string, but instead is pre-processed. The code for this can be found in the `DeviceModels::cleanup()` function in the `src/Data/DeviceModels.php` file.
|
||||
|
||||
Indices
|
||||
-------
|
||||
|
||||
In order to reduce the time needed for model lookups, WhichBrowser uses an index. These files are located in the `data/indices/` directory and are automatically generated by the `update-indices.php` script. This script will evaluate every single regular expression and will try to create a key for every single possible value that matches the regular expression. If the regular expression is too complicated or has too many possible values it will place it in a secondary list of *difficult* regular expressions.
|
||||
|
||||
After making a change to the data files you **need** to regenerate the indices, otherwise the new device model will not be picked up by WhichBrowser.
|
||||
|
||||
To update the indices of all relevant data files:
|
||||
|
||||
```
|
||||
php bin/update-indices.php --all
|
||||
```
|
||||
20
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/LICENSE
vendored
Normal file
20
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/LICENSE
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
Copyright (c) 2010-2017 Niels Leenheer
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
510
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/README.md
vendored
Normal file
510
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/README.md
vendored
Normal file
@@ -0,0 +1,510 @@
|
||||
<img src="https://api.whichbrowser.net/whichbrowser.svg" width="400">
|
||||
|
||||
This is an extremely complicated and almost completely useless browser sniffing library. Useless because you shouldn't use browser sniffing. So stop right now and go read something about feature detecting instead. I'm serious. Go away. You'll thank me later.
|
||||
|
||||
|
||||
WhichBrowser/Parser-PHP
|
||||
=======================
|
||||
|
||||
The PHP version of WhichBrowser for use on a server. Fully compatible with PHP 5.4 or higher, including PHP 7 and HHVM.
|
||||
|
||||
[](https://travis-ci.org/WhichBrowser/Parser)
|
||||
[](https://coveralls.io/github/WhichBrowser/Parser-PHP?branch=master)
|
||||
[](https://packagist.org/packages/whichbrowser/parser)
|
||||
[](https://packagist.org/packages/whichbrowser/parser)
|
||||
|
||||
[](https://twitter.com/whichbrowserlib)
|
||||
|
||||
Also available:
|
||||
|
||||
- [WhichBrowser/Parser-JavaScript](https://github.com/WhichBrowser/Parser-JavaScript)<br>
|
||||
A JavaScript version of WhichBrowser for use with Node.js on the server
|
||||
|
||||
- [WhichBrowser/Server](https://github.com/WhichBrowser/Server)<br>
|
||||
A server written in PHP that provides a JavaScript API for use in the browser
|
||||
|
||||
---
|
||||
|
||||
|
||||
About WhichBrowser
|
||||
------------------
|
||||
|
||||
**But why *almost completely useless* and not completely useless?**
|
||||
Well, there is always an exception to the rule. There are valid reasons to do browser sniffing: to improve the user experience or to gather intelligence about which browsers are used on your website. My website is html5test.com and I wanted to know which score belongs to which browser. And to do that you need a browser sniffing library.
|
||||
|
||||
**Why is it extremely complicated?**
|
||||
Because everybody lies. Seriously, there is not a single browser that is completely truthful. Almost all browsers say they are Netscape 5 and almost all WebKit browsers say they are based on Gecko. Even Internet Explorer 11 now no longer claims to be IE at all, but instead an unnamed browser that is like Gecko. And it gets worse. That is why it is complicated.
|
||||
|
||||
**What kind of information does it give?**
|
||||
You get a nice object which has information about the browser, rendering engine, os and device. It gives you names and versions and even device manufacturer and model. And WhichBrowser is pretty tenacious. It gives you info that others don't. For example:
|
||||
|
||||
JUC (Linux; U; 2.3.6; zh-cn; GT-I8150; 480*800) UCWEB8.7.4.225/145/800
|
||||
UC Browser 8.7 on a Samsung Galaxy W running Android 2.3.6
|
||||
|
||||
Android is never mentioned
|
||||
|
||||
Mozilla/5.0 (Series40; Nokia501/10.0.2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.0.0.0.73
|
||||
Nokia Xpress 3.0.0 on a Nokia Asha 501 running Nokia Asha Platform
|
||||
|
||||
Despite the useragent header claiming to be a Series40 device, we know it's actually running the Asha Platform and we also know that OviBrowser has been renamed to Nokia Xpress.
|
||||
|
||||
Opera/9.80 (X11; Linux zvav; U; zh) Presto/2.8.119 Version/11.10
|
||||
Opera Mini on a Nokia 5230 running Series60 5.0
|
||||
|
||||
The useragent header looks like Opera 11.10 on Linux, but we know it's Opera Mini. We can even figure out the real operating system and device model from other headers.
|
||||
|
||||
|
||||
|
||||
Requirements
|
||||
-----------------
|
||||
|
||||
WhichBrowser requires with PHP 5.4 or higher and supports PHP 7 and HHVM. WhichBrowser is compatible with the PSR-4 autoloading standard and follows PSR-1 and PSR-2 coding style.
|
||||
|
||||
|
||||
How to install it
|
||||
-----------------
|
||||
|
||||
You can install WhichBrowser by using Composer - the standard package manager for PHP. The package is called `whichbrowser/parser`.
|
||||
|
||||
composer require whichbrowser/parser
|
||||
|
||||
You can easily update WhichBrowser by running a simple command.
|
||||
|
||||
composer update whichbrowser/parser
|
||||
|
||||
You should run this command as often as possible. You might even want to consider setting up a cron job for this purpose.
|
||||
|
||||
|
||||
|
||||
|
||||
How to use it
|
||||
-------------
|
||||
|
||||
The first step require the Composer autoloader:
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
require 'vendor/autoload.php';
|
||||
```
|
||||
|
||||
The second step is to create a new `WhichBrowser\Parser` object. This object will contain all the information the library could find about the browser. The object has a required parameter, either the headers send by the browser, or a useragent string. Using the headers is preferable, because it will allow a better detection, but if you have just the useragent string, this will also work.
|
||||
|
||||
For example:
|
||||
|
||||
```php
|
||||
$result = new WhichBrowser\Parser(getallheaders());
|
||||
```
|
||||
|
||||
or:
|
||||
|
||||
```php
|
||||
$result = new WhichBrowser\Parser($_SERVER['HTTP_USER_AGENT']);
|
||||
```
|
||||
|
||||
|
||||
The variable `$result` now contains an object which you can query for information. There are various ways to access the information.
|
||||
|
||||
|
||||
First of all, you can call to `toString()` function to get a human readable identification:
|
||||
|
||||
```php
|
||||
"You are using " . $result->toString();
|
||||
// You are using Chrome 27 on OS X Mountain Lion 10.8
|
||||
```
|
||||
|
||||
Another possiblity is to query the object:
|
||||
|
||||
```php
|
||||
$result->isType('desktop');
|
||||
// true
|
||||
|
||||
$result->isType('mobile', 'tablet', 'media', 'gaming:portable');
|
||||
// false
|
||||
|
||||
$result->isBrowser('Maxthon', '<', '4.0.5');
|
||||
// false
|
||||
|
||||
$result->isOs('iOS', '>=', '8');
|
||||
// false
|
||||
|
||||
$result->isOs('OS X');
|
||||
// true
|
||||
|
||||
$result->isEngine('Blink');
|
||||
// true
|
||||
```
|
||||
|
||||
You can also access these properties directly:
|
||||
|
||||
```php
|
||||
$result->browser->toString();
|
||||
// Chrome 27
|
||||
|
||||
$result->engine->toString();
|
||||
// Blink
|
||||
|
||||
$result->os->toString();
|
||||
// OS X Mountain Lion 10.8
|
||||
```
|
||||
|
||||
Or access parts of these properties directly:
|
||||
|
||||
```php
|
||||
$result->browser->name;
|
||||
// Chrome
|
||||
|
||||
$result->browser->name . ' ' . $result->browser->version.toString();
|
||||
// Chrome 27
|
||||
|
||||
$result->browser->version->value;
|
||||
// 27.0.1453.110
|
||||
|
||||
$result->engine->name;
|
||||
// Blink
|
||||
```
|
||||
|
||||
Finally you can also query versions directly:
|
||||
|
||||
```php
|
||||
$result->browser->version->is('>', 26);
|
||||
// true
|
||||
|
||||
$result->os->version->is('<', '10.7.4');
|
||||
// false
|
||||
```
|
||||
|
||||
Options
|
||||
-------
|
||||
|
||||
It is possible to set additional options by passing an array as the second parameter when creating the `Parser` object.
|
||||
|
||||
### Disabling detection of bots
|
||||
|
||||
In some cases you may want to disable the detection of bots. This allows the bot the deliberately fool WhichBrowser, so you can pick up the identity of useragent what the bot tries to mimic. This is especially handy when you want to use WhichBrowser to switch between different variants of your website and want to make sure crawlers see the right variant of the website. For example, a bot that mimics a mobile device will see the mobile variant of you site.
|
||||
|
||||
```php
|
||||
$result = new WhichBrowser\Parser(getallheaders(), [ 'detectBots' => false ]);
|
||||
```
|
||||
|
||||
Enable result caching
|
||||
---------------------
|
||||
|
||||
WhichBrowser supports PSR-6 compatible cache adapters for caching results between requests. Using a cache is especially useful if you use WhichBrowser on every page of your website and a user visits multiple pages. During the first visit the headers will be parsed and the result will be cached. Upon further visits, the cached results will be used, which is much faster than having to parse the headers again and again.
|
||||
|
||||
There are adapters available for other types of caches, such as APC, Doctrine, Memcached, MongoDB, Redis and many more. The configuration of these adapters all differ from each other, but once configured, all you have to do is pass it as an option when creating the `Parser` object, or use the `setCache()` function to set it afterwards. WhichBrowser has been tested to work with the adapters provided by [PHP Cache](http://php-cache.readthedocs.org/en/latest/). For a list of other packages that provide adapters see [Packagist](https://packagist.org/providers/psr/cache-implementation).
|
||||
|
||||
For example, if you want to enable a memcached based cache you need to install an extra composer package:
|
||||
|
||||
composer require cache/memcached-adapter
|
||||
|
||||
And change the call to WhichBrowser/Parser as follows:
|
||||
|
||||
```php
|
||||
$client = new \Memcached();
|
||||
$client->addServer('localhost', 11211);
|
||||
|
||||
$pool = new \Cache\Adapter\Memcached\MemcachedCachePool($client);
|
||||
|
||||
$result = new WhichBrowser\Parser(getallheaders(), [ 'cache' => $pool ]);
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```php
|
||||
$client = new \Memcached();
|
||||
$client->addServer('localhost', 11211);
|
||||
|
||||
$pool = new \Cache\Adapter\Memcached\MemcachedCachePool($client);
|
||||
|
||||
$result = new WhichBrowser\Parser();
|
||||
$result->setCache($pool);
|
||||
$result->analyse(getallheaders());
|
||||
```
|
||||
|
||||
You can also specify after how many seconds a cached result should be discarded. The default value is 900 seconds or 15 minutes. If you think WhichBrowser uses too much memory for caching, you should lower this value. You can do this by setting the `cacheExpires` option or passing it as a second parameter to the `setCache()` function.
|
||||
|
||||
|
||||
API reference
|
||||
-------------
|
||||
|
||||
### The Parser object
|
||||
|
||||
After a new `WhichBrowser\Parser` object is created, it contains a number of properties and functions. All of these properties are guaranteed to be present.
|
||||
|
||||
**Properties:**
|
||||
|
||||
* `browser`
|
||||
an object that contains information about the browser itself
|
||||
* `engine`
|
||||
an object that contains information about the rendering engine
|
||||
* `os`
|
||||
an object that contains information about the operating system
|
||||
* `device`
|
||||
an object that contains information about the device
|
||||
|
||||
**Functions:**
|
||||
|
||||
`getType()`
|
||||
Returns the `type` and `subtype` property of the `device` object. If a subtype is present it is concatenated to the type and seperated by a semicolor, for example: `mobile:smart` or `gaming:portable`. If the subtype is not applicable, it just return the type, for example: `desktop` or `ereader`.
|
||||
|
||||
`isType($type [,$type [,$type [,$type]]])`
|
||||
If a single argument is used, the function returns `true` if the argument matches the `type` propery of `device` object. The argument can optionally also provide a subtype by concatenating it to the type and seperating it with a semicolon. It can use multiple arguments in which case the function returns `true` if one of the arguments matches. If none of the arguments matches, it returns `false`
|
||||
|
||||
`isMobile()`
|
||||
Return `true` if the browser is a mobile device, like a phone, tablet, ereader, camera, portable media player, watch or portable gaming console. Otherwise it returns `false`.
|
||||
|
||||
`isBrowser($name [, $comparison, $version])`
|
||||
Is used to query the `name` and `version` property of the `browser` object. The funcion can contain a single argument to a simple comparison based on `name`, or three arguments to compare both `name` and `version`. The first argument always contains the name of the browser. The second arguments is a string that can container either `<`, `<=`, `=`, `=>` or `>`. The third is an integer, float or string that contains the version. You can use versions like `10`, `10.7` or `'10.7.4'`. For more information about how version comparisons are performed, please see the `is()` function of the `Version` object.
|
||||
|
||||
`isEngine($name [, $comparison, $version])`
|
||||
Is used to query the `name` and `version` property of the `engine` object. This function works in exactly the same way as `isBrowser`.
|
||||
|
||||
`isOs($name [, $comparison, $version])`
|
||||
Is used to query the `name` and `version` property of the `os` object. This function works in exactly the same way as `isBrowser`.
|
||||
|
||||
`isDetected()`
|
||||
Is there actually some browser detected, for did we fail to detect anything?
|
||||
|
||||
`toString()`
|
||||
Get a human readable representation of the detected browser, including operating system and device information.
|
||||
|
||||
|
||||
### The browser object
|
||||
|
||||
An object of the `WhichBrowser\Model\Browser` class is used for the `browser` property of the main `WhichBrowser\Parser` object and contains a number of properties. If a property is not applicable in this situation it will be null or undefined.
|
||||
|
||||
**Properties:**
|
||||
|
||||
* `name`
|
||||
a string containing the name of the browser
|
||||
* `alias`
|
||||
a string containing an alternative name of the browser
|
||||
* `version`
|
||||
a version object containing information about the version of the browser
|
||||
* `stock`
|
||||
a boolean, true if the browser is the default browser of the operating system, false otherwise
|
||||
* `channel`
|
||||
a string containing the distribution channel, ie. 'Nightly' or 'Next'.
|
||||
* `mode`
|
||||
a string that can contain the operating mode of the browser, ie. 'proxy'.
|
||||
* `hidden`
|
||||
a boolean that is true if the browser does not have a name and is the default of the operating system.
|
||||
* `family`
|
||||
an object that contains information about to which family this browser belongs
|
||||
* `using`
|
||||
an object that contains information about to which kind of webview this browser uses
|
||||
|
||||
**Functions:**
|
||||
|
||||
`isFamily($name)`
|
||||
Does the family of this browser have this name, or does the browser itself have this name.
|
||||
|
||||
`isUsing($name)`
|
||||
Is the browser using a webview using with the provided name.
|
||||
|
||||
`getName()`
|
||||
Get the name of the browser
|
||||
|
||||
`getVersion()`
|
||||
Get the version of the browser
|
||||
|
||||
`toString()`
|
||||
Get a human readable representation of the detected browser
|
||||
|
||||
|
||||
### The engine object
|
||||
|
||||
An object of the `WhichBrowser\Model\Engine` class is used for the `engine` property of the main `WhichBrowser\Parser` object and contains a number of properties. If a property is not applicable in this situation it will be null or undefined.
|
||||
|
||||
**Properties:**
|
||||
|
||||
* `name`
|
||||
a string containing the name of the rendering engine
|
||||
* `version`
|
||||
a version object containing information about the version of the rendering engine
|
||||
|
||||
**Functions:**
|
||||
|
||||
`getName()`
|
||||
Get the name of the rendering engine
|
||||
|
||||
`getVersion()`
|
||||
Get the version of the rendering engine
|
||||
|
||||
`toString()`
|
||||
Get a human readable representation of the detected rendering engine
|
||||
|
||||
|
||||
### The os object
|
||||
|
||||
An object of the `WhichBrowser\Model\Os` class is used for the `os` property of the main `WhichBrowser\Parser` object and contains a number of properties. If a property is not applicable in this situation it will be null or undefined.
|
||||
|
||||
**Properties:**
|
||||
|
||||
* `name`
|
||||
a string containing the name of the operating system
|
||||
* `version`
|
||||
a version object containing information about the version of the operating system
|
||||
* `family`
|
||||
an object that contains information about to which family this operating system belongs
|
||||
|
||||
**Functions:**
|
||||
|
||||
`isFamily($name)`
|
||||
Does the family of this operating system have this name, or does the operating system itself have this name.
|
||||
|
||||
`getName()`
|
||||
Get the name of the operating system
|
||||
|
||||
`getVersion()`
|
||||
Get the version of the operating system
|
||||
|
||||
`toString()`
|
||||
Get a human readable representation of the detected operating system
|
||||
|
||||
|
||||
### The device object
|
||||
|
||||
An object of the `WhichBrowser\Model\Device` class is used for the `device` property of the main `WhichBrowser\Parser` object and contains a number of properties. If a property is not applicable in this situation it will be null or undefined.
|
||||
|
||||
**Properties:**
|
||||
|
||||
* `type`
|
||||
a string containing the type of the browser.
|
||||
* `subtype`
|
||||
a string containing the subtype of the browser.
|
||||
* `identified`
|
||||
a boolean that is true if the device has been positively identified.
|
||||
* `manufacturer`
|
||||
a string containing the manufacturer of the device, ie. 'Apple' or 'Samsung'.
|
||||
* `model`
|
||||
as string containing the model of the device, ie. 'iPhone' or 'Galaxy S4'.
|
||||
|
||||
The `type` property can contain any value from the following list:
|
||||
|
||||
* desktop
|
||||
* mobile
|
||||
* tablet
|
||||
* gaming
|
||||
* headset
|
||||
* ereader
|
||||
* media
|
||||
* emulator
|
||||
* television
|
||||
* monitor
|
||||
* camera
|
||||
* signage
|
||||
* whiteboard
|
||||
* car
|
||||
* pos
|
||||
* bot
|
||||
|
||||
If the `type` is "mobile", the `subtype` property can contain any value from the following list:
|
||||
|
||||
* feature
|
||||
* smart
|
||||
|
||||
If the `type` is "gaming", the `subtype` property can contain any value from the following list:
|
||||
|
||||
* console
|
||||
* portable
|
||||
|
||||
**Functions:**
|
||||
|
||||
`getManufacturer()`
|
||||
Get the name of the manufacturer
|
||||
|
||||
`getModel()`
|
||||
Get the name of the model
|
||||
|
||||
`toString()`
|
||||
Get a human readable representation of the detected device
|
||||
|
||||
|
||||
### The family object
|
||||
|
||||
An object of the `WhichBrowser\Model\Family` class is used for the `family` property of the `WhichBrowser\Model\Browser` and `WhichBrowser\Model\Os` object and contains a number of properties. If a property is not applicable in this situation it will be null or undefined.
|
||||
|
||||
**Properties:**
|
||||
|
||||
* `name`
|
||||
a string containing the name of the family
|
||||
* `version`
|
||||
a version object containing information about the version of the family
|
||||
|
||||
**Functions:**
|
||||
|
||||
`getName()`
|
||||
Get the name of the family
|
||||
|
||||
`getVersion()`
|
||||
Get the version of the family
|
||||
|
||||
`toString()`
|
||||
Get a human readable representation of the family
|
||||
|
||||
|
||||
### The using object
|
||||
|
||||
An object of the `WhichBrowser\Model\Using` class is used for the `using` property of the `WhichBrowser\Model\Browser` object and contains a number of properties. If a property is not applicable in this situation it will be null or undefined.
|
||||
|
||||
**Properties:**
|
||||
|
||||
* `name`
|
||||
a string containing the name of the webview
|
||||
* `version`
|
||||
a version object containing information about the version of the webview
|
||||
|
||||
**Functions:**
|
||||
|
||||
`getName()`
|
||||
Get the name of the webview
|
||||
|
||||
`getVersion()`
|
||||
Get the version of the webview
|
||||
|
||||
`toString()`
|
||||
Get a human readable representation of the webview
|
||||
|
||||
|
||||
### The version object
|
||||
|
||||
An object of the `WhichBrowser\Model\Version` class is used for the `version` property of the `browser`, `engine` and `os` object and contains a number of properties and functions. If a property is not applicable in this situation it will be null or undefined.
|
||||
|
||||
**Properties:**
|
||||
|
||||
* `value`
|
||||
a string containing the original version number.
|
||||
* `alias`
|
||||
a string containing an alias for the version number, ie. 'XP' for Windows '5.1'.
|
||||
* `details`
|
||||
an integer containing the number of digits of the version number that should be printed.
|
||||
|
||||
**Functions:**
|
||||
|
||||
`is($version)` or `is($comparison, $version)`
|
||||
Using this function it is easy to compare a version to another version. If you specify only one argument, this function will return if the versions are the same. You can also specify two arguments, in that case the first argument contains the comparison operator, such as `<`, `<=`, `=`, `=>` or `>`. The second argument is the version you want to compare it to. You can use versions like `10`, `10.7` or `'10.7.4'`, but be aware that `10` is not the same as `10.0`. For example if our OS version is `10.7.4`:
|
||||
|
||||
```php
|
||||
$result->os->version->is('10.7.4');
|
||||
// true
|
||||
|
||||
$result->os->version->is('10.7');
|
||||
// true
|
||||
|
||||
$result->os->version->is('10');
|
||||
// true
|
||||
|
||||
$result->os->version->is('10.0');
|
||||
// false
|
||||
|
||||
$result->os->version->is('>', '10');
|
||||
// false
|
||||
|
||||
$result->os->version->is('>', '10.7');
|
||||
// false
|
||||
|
||||
$result->os->version->is('>', '10.7.3');
|
||||
// true
|
||||
```
|
||||
10
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/bootstrap.php
vendored
Normal file
10
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/bootstrap.php
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
$standaloneAutoloader = __DIR__ . '/../vendor/autoload.php';
|
||||
$packageAutoloader = __DIR__ . '/../../../autoload.php';
|
||||
|
||||
if (file_exists($packageAutoloader)) {
|
||||
require_once $packageAutoloader;
|
||||
} else {
|
||||
require_once $standaloneAutoloader;
|
||||
}
|
||||
42
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/query.php
vendored
Normal file
42
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/query.php
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__ . '/bootstrap.php';
|
||||
|
||||
use WhichBrowser\Parser;
|
||||
|
||||
$command = 'exec';
|
||||
$options = [];
|
||||
$payload = [];
|
||||
|
||||
array_shift($argv);
|
||||
|
||||
if (count($argv)) {
|
||||
foreach ($argv as $argument) {
|
||||
if (in_array($argument, [ 'exec' ])) {
|
||||
$command = $argument;
|
||||
} elseif (substr($argument, 0, 2) == '--') {
|
||||
$options[] = substr($argument, 2);
|
||||
} else {
|
||||
$payload[] = $argument;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$payload = implode(' ', $payload);
|
||||
|
||||
|
||||
if ($command == 'exec') {
|
||||
if ($payload == '') {
|
||||
$payload = file_get_contents('php://stdin');
|
||||
}
|
||||
|
||||
if ($payload != '') {
|
||||
echo "\n\033[0;32mInput:\033[0;0m\n" . trim($payload) . "\n";
|
||||
|
||||
$result = new Parser(trim($payload));
|
||||
echo "\n\033[0;32mHuman readable:\033[0;0m\n" . $result->toString() . "\n";
|
||||
echo "\n\033[0;32mData:\033[0;0m\n";
|
||||
echo json_encode($result, JSON_PRETTY_PRINT);
|
||||
echo "\n\n";
|
||||
}
|
||||
}
|
||||
101
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/runner.php
vendored
Normal file
101
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/runner.php
vendored
Normal file
@@ -0,0 +1,101 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__ . '/bootstrap.php';
|
||||
|
||||
use WhichBrowser\Testrunner;
|
||||
use WhichBrowser\Tests;
|
||||
|
||||
set_error_handler(function ($errno, $errstr, $errfile, $errline, array $errcontext) {
|
||||
// error was suppressed with the @-operator
|
||||
if (0 === error_reporting()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
|
||||
});
|
||||
|
||||
|
||||
|
||||
$all = false;
|
||||
$command = 'compare';
|
||||
$files = [];
|
||||
$options = [];
|
||||
|
||||
array_shift($argv);
|
||||
|
||||
if (count($argv)) {
|
||||
foreach ($argv as $argument) {
|
||||
if (in_array($argument, [ 'compare', 'check', 'rebase', 'list' ])) {
|
||||
$command = $argument;
|
||||
} elseif (substr($argument, 0, 2) == '--') {
|
||||
$options[] = substr($argument, 2);
|
||||
} else {
|
||||
if (fnmatch("*.yaml", $argument)) {
|
||||
$files[] = $argument;
|
||||
} else {
|
||||
$files = array_merge($files, Tests::getFromCategory($argument));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (count($files) === 0) {
|
||||
$files = Tests::getAll();
|
||||
}
|
||||
|
||||
switch ($command) {
|
||||
case 'list':
|
||||
Testrunner::search($files);
|
||||
break;
|
||||
|
||||
case 'check':
|
||||
if (in_array('coverage', $options)) {
|
||||
$coverage = new PHP_CodeCoverage;
|
||||
$coverage->filter()->addDirectoryToWhitelist('src');
|
||||
$coverage->start('Testrunner');
|
||||
}
|
||||
|
||||
$result = Testrunner::compare($files, false);
|
||||
|
||||
if (in_array('coverage', $options)) {
|
||||
$coverage->stop();
|
||||
|
||||
$writer = new PHP_CodeCoverage_Report_Clover;
|
||||
$writer->process($coverage, 'runner.xml');
|
||||
|
||||
echo "\nCoverage saved as runner.xml\n\n";
|
||||
}
|
||||
|
||||
if (!$result) {
|
||||
echo "\033[0;31mTestrunner failed, please fix or rebase before building or deploying!\033[0m\n\n";
|
||||
|
||||
if (in_array('show', $options)) {
|
||||
echo file_get_contents('runner.log') . "\n\n";
|
||||
echo "Done!\n\n";
|
||||
}
|
||||
|
||||
exit(1);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'compare':
|
||||
$result = Testrunner::compare($files, false);
|
||||
|
||||
if (!$result) {
|
||||
echo "\033[0;31mTestrunner failed, please look at runner.log for the details!\033[0m\n\n";
|
||||
|
||||
if (in_array('show', $options)) {
|
||||
echo file_get_contents('runner.log') . "\n\n";
|
||||
echo "Done!\n\n";
|
||||
}
|
||||
|
||||
exit(1);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'rebase':
|
||||
Testrunner::rebase($files, false);
|
||||
break;
|
||||
}
|
||||
34
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-browser-ids.php
vendored
Normal file
34
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-browser-ids.php
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__ . '/bootstrap.php';
|
||||
|
||||
echo "Updating browser ids...\n";
|
||||
|
||||
$ids = json_decode(file_get_contents("https://api.whichbrowser.net/resources/browser-ids.json"));
|
||||
|
||||
$result = "";
|
||||
$result .= "<?php\n";
|
||||
$result .= "\n";
|
||||
$result .= "/* This file is automatically generated, do not edit manually! */\n";
|
||||
$result .= "\n";
|
||||
$result .= "namespace WhichBrowser\\Data;\n";
|
||||
$result .= "\n";
|
||||
$result .= "BrowserIds::\$ANDROID_BROWSERS = [\n";
|
||||
|
||||
foreach($ids as $key => $id) {
|
||||
$result .= " '" . addslashes(trim($id->browserId)) . "'" . str_repeat(" ", max(0, 100 - strlen($id->browserId)));
|
||||
$result .= "=> " . deviceString($id->browserName) . ",\n";
|
||||
}
|
||||
|
||||
$result .= "];\n";
|
||||
|
||||
file_put_contents(__DIR__ . '/../data/id-android.php', $result);
|
||||
|
||||
|
||||
function deviceString($s) {
|
||||
if (is_null($s) || $s == '') {
|
||||
return 'null';
|
||||
}
|
||||
|
||||
return "'" . addslashes(trim($s)) . "'";
|
||||
}
|
||||
58
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-chrome.php
vendored
Normal file
58
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-chrome.php
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__ . '/bootstrap.php';
|
||||
include __DIR__ . '/../data/browsers-chrome.php';
|
||||
|
||||
echo "Updating chrome versions...\n";
|
||||
|
||||
$stable = [
|
||||
'desktop' => [],
|
||||
'mobile' => []
|
||||
];
|
||||
|
||||
|
||||
$omaha = explode("\n", file_get_contents("http://omahaproxy.appspot.com/history"));
|
||||
foreach ($omaha as $i => $line) {
|
||||
$items = explode(",", $line);
|
||||
|
||||
if ($items[0] == 'mac' && $items[1] == 'stable') {
|
||||
$stable['desktop'][] = implode('.', array_slice(explode('.', $items[2]), 0, 3));
|
||||
}
|
||||
|
||||
if ($items[0] == 'android' && $items[1] == 'stable') {
|
||||
$stable['mobile'][] = implode('.', array_slice(explode('.', $items[2]), 0, 3));
|
||||
}
|
||||
}
|
||||
|
||||
$stable['desktop'] = array_unique($stable['desktop']);
|
||||
$stable['mobile'] = array_unique($stable['mobile']);
|
||||
|
||||
sort($stable['desktop']);
|
||||
sort($stable['mobile']);
|
||||
|
||||
|
||||
foreach ($stable['desktop'] as $i => $version) {
|
||||
if (!isset(WhichBrowser\Data\Chrome::$DESKTOP[$version])) {
|
||||
WhichBrowser\Data\Chrome::$DESKTOP[$version] = 'stable';
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($stable['mobile'] as $i => $version) {
|
||||
if (!isset(WhichBrowser\Data\Chrome::$MOBILE[$version])) {
|
||||
WhichBrowser\Data\Chrome::$MOBILE[$version] = 'stable';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$result = "";
|
||||
$result .= "<?php\n\n";
|
||||
$result .= "namespace WhichBrowser\Data;\n\n";
|
||||
$result .= "Chrome::\$DESKTOP = [\n";
|
||||
foreach (WhichBrowser\Data\Chrome::$DESKTOP as $version => $channel) $result .= " '{$version}' => '{$channel}',\n";
|
||||
$result .= "];\n\n";
|
||||
$result .= "Chrome::\$MOBILE = [\n";
|
||||
foreach (WhichBrowser\Data\Chrome::$MOBILE as $version => $channel) $result .= " '{$version}' => '{$channel}',\n";
|
||||
$result .= "];\n";
|
||||
|
||||
|
||||
file_put_contents(__DIR__ . '/../data/browsers-chrome.php', $result);
|
||||
199
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-indices.php
vendored
Normal file
199
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-indices.php
vendored
Normal file
@@ -0,0 +1,199 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__ . '/bootstrap.php';
|
||||
|
||||
use WhichBrowser\Data\DeviceModels;
|
||||
use ReverseRegex\Lexer;
|
||||
|
||||
$command = 'list';
|
||||
$types = [];
|
||||
$options = [];
|
||||
|
||||
array_shift($argv);
|
||||
|
||||
if (count($argv)) {
|
||||
foreach ($argv as $argument) {
|
||||
if (in_array($argument, [ 'list' ])) {
|
||||
$command = $argument;
|
||||
} elseif (substr($argument, 0, 2) == '--') {
|
||||
$options[] = substr($argument, 2);
|
||||
} else {
|
||||
$types[] = $argument;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (in_array('all', $options)) {
|
||||
$types = [
|
||||
'android', 'asha', 'bada', 'brew', 'feature', 'firefoxos',
|
||||
'kddi', 'palmos', 's30plus', 's40', 'symbian', 'tizen',
|
||||
'touchwiz', 'wm', 'wp'
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
foreach ($types as $i => $type) {
|
||||
command($command, $type);
|
||||
}
|
||||
|
||||
|
||||
function command($command, $type) {
|
||||
switch($command) {
|
||||
case 'list':
|
||||
command_list($type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function command_list($type) {
|
||||
echo "Creating index for 'data/models-{$type}.php'...\n";
|
||||
|
||||
require_once __DIR__ . '/../data/models-' . $type . '.php';
|
||||
|
||||
$name = strtoupper($type) . '_MODELS';
|
||||
$list = DeviceModels::$$name;
|
||||
|
||||
$index = [];
|
||||
|
||||
foreach ($list as $key => $value) {
|
||||
|
||||
if (substr($key, -2) == '!!') {
|
||||
$keys = getKeysFromRegexp(substr($key, 0, -2));
|
||||
}
|
||||
elseif (substr($key, -1) == '!') {
|
||||
$keys = getKeysFromRegexp(substr($key, 0, -1));
|
||||
}
|
||||
else {
|
||||
$keys = [ substr(strtoupper($key), 0, 2) ];
|
||||
}
|
||||
|
||||
foreach ($keys as $k => $v) {
|
||||
if ($v == '**') {
|
||||
$v = '';
|
||||
}
|
||||
|
||||
if (!isset($index['@'.$v])) {
|
||||
$index['@'.$v] = [];
|
||||
}
|
||||
|
||||
$index['@'.$v][] = $key;
|
||||
}
|
||||
}
|
||||
|
||||
ksort($index);
|
||||
|
||||
$file = "<" . "?php\n";
|
||||
$file .= "\n";
|
||||
$file .= "namespace WhichBrowser\\Data;\n";
|
||||
$file .= "\n";
|
||||
$file .= "DeviceModels::\$" . strtoupper($type) . "_INDEX = " . var_export($index, true) . ";\n";
|
||||
|
||||
file_put_contents(__DIR__ . '/../data/indices/models-' . $type . '.php', $file);
|
||||
}
|
||||
|
||||
function getKeysFromRegexp($regexp) {
|
||||
$lexer = new Lexer($regexp);
|
||||
$lexer->moveNext();
|
||||
|
||||
$keys = readKeysFromLexer($lexer);
|
||||
|
||||
return array_unique($keys);
|
||||
}
|
||||
|
||||
|
||||
function readKeysFromLexer($lexer) {
|
||||
$keys = [];
|
||||
|
||||
if ($lexer->isNextTokenAny([ Lexer::T_LITERAL_CHAR,Lexer::T_LITERAL_NUMERIC ])) {
|
||||
$current = strtoupper($lexer->lookahead['value']);
|
||||
|
||||
$lexer->moveNext();
|
||||
if ($lexer->isNextTokenAny([ Lexer::T_LITERAL_CHAR,Lexer::T_LITERAL_NUMERIC ])) {
|
||||
$keys[] = $current . strtoupper($lexer->lookahead['value']);
|
||||
}
|
||||
else {
|
||||
$keys[] = '**';
|
||||
}
|
||||
}
|
||||
|
||||
else if ($lexer->isNextToken(Lexer::T_GROUP_OPEN)) {
|
||||
$current = '';
|
||||
$active = true;
|
||||
|
||||
while ($lexer->moveNext()) {
|
||||
if ($lexer->isNextTokenAny([ Lexer::T_LITERAL_CHAR,Lexer::T_LITERAL_NUMERIC ])) {
|
||||
if ($active && strlen($current) < 2) {
|
||||
$current .= strtoupper($lexer->lookahead['value']);
|
||||
}
|
||||
}
|
||||
|
||||
else if ($lexer->isNextToken(Lexer::T_CHOICE_BAR)) {
|
||||
$keys[] = $current;
|
||||
$current = '';
|
||||
$active = true;
|
||||
}
|
||||
|
||||
else if ($lexer->isNextToken(Lexer::T_GROUP_OPEN)) {
|
||||
if ($lexer->moveNext()) {
|
||||
$more = readKeysFromLexer($lexer);
|
||||
|
||||
if (count($more)) {
|
||||
$keys = array_merge($keys, $more);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if ($lexer->isNextToken(Lexer::T_GROUP_CLOSE)) {
|
||||
if (strlen($current) == 2) {
|
||||
$keys[] = $current;
|
||||
} else {
|
||||
$keys[] = '**';
|
||||
}
|
||||
|
||||
$current = '';
|
||||
$active = true;
|
||||
break;
|
||||
}
|
||||
|
||||
else if ($lexer->isNextToken(Lexer::T_DOT)) {
|
||||
$keys[] = '**';
|
||||
$current = '';
|
||||
$active = false;
|
||||
break;
|
||||
}
|
||||
|
||||
else {
|
||||
$active = false;
|
||||
}
|
||||
}
|
||||
|
||||
while ($lexer->moveNext()) {
|
||||
if ($lexer->isNextToken(Lexer::T_QUANTIFIER_QUESTION)) {
|
||||
if ($lexer->moveNext()) {
|
||||
$more = readKeysFromLexer($lexer);
|
||||
|
||||
if (count($more)) {
|
||||
$keys = array_merge($keys, $more);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if ($lexer->isNextToken(Lexer::T_SET_OPEN)) {
|
||||
$keys[] = '**';
|
||||
}
|
||||
|
||||
else if ($lexer->isNextToken(Lexer::T_DOT)) {
|
||||
$keys[] = '**';
|
||||
}
|
||||
|
||||
return array_unique($keys);
|
||||
}
|
||||
47
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-profiles.php
vendored
Normal file
47
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-profiles.php
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__ . '/bootstrap.php';
|
||||
|
||||
echo "Downloading...";
|
||||
|
||||
$profiles = json_decode(file_get_contents("https://api.whichbrowser.net/resources/profiles.json"));
|
||||
|
||||
$total = count($profiles);
|
||||
|
||||
$result = "";
|
||||
$result .= "<?php\n";
|
||||
$result .= "\n";
|
||||
$result .= "/* This file is automatically generated, do not edit manually! */\n";
|
||||
$result .= "\n";
|
||||
$result .= "namespace WhichBrowser\\Data;\n";
|
||||
$result .= "\n";
|
||||
$result .= "use WhichBrowser\\Constants\\DeviceType;\n";
|
||||
$result .= "\n";
|
||||
$result .= "DeviceProfiles::\$PROFILES = [\n";
|
||||
|
||||
foreach($profiles as $key => $profile) {
|
||||
$result .= " '" . addslashes(trim($profile->url)) . "'" . str_repeat(" ", max(0, 100 - strlen($profile->url)));
|
||||
$result .= "=> [ " . deviceString($profile->deviceManufacturer) . ", " . deviceString($profile->deviceModel);
|
||||
$result .= ", " . deviceString($profile->osName) . ", " . deviceType($profile->deviceType) . " ],\n";
|
||||
}
|
||||
|
||||
$result .= "];\n";
|
||||
|
||||
echo " and writing {$total} profiles...\n";
|
||||
file_put_contents(__DIR__ . '/../data/profiles.php', $result);
|
||||
|
||||
|
||||
function deviceString($s) {
|
||||
if (is_null($s) || $s == '') {
|
||||
return 'null';
|
||||
}
|
||||
|
||||
return "'" . addslashes(trim($s)) . "'";
|
||||
}
|
||||
|
||||
function deviceType($type) {
|
||||
switch ($type) {
|
||||
case 'mobile': return 'DeviceType::MOBILE';
|
||||
case 'tablet': return 'DeviceType::TABLET';
|
||||
}
|
||||
}
|
||||
118
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-regexes.php
vendored
Normal file
118
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-regexes.php
vendored
Normal file
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__ . '/bootstrap.php';
|
||||
|
||||
use WhichBrowser\Data\Applications;
|
||||
|
||||
$command = 'list';
|
||||
$types = [];
|
||||
$options = [];
|
||||
|
||||
array_shift($argv);
|
||||
|
||||
if (count($argv)) {
|
||||
foreach ($argv as $argument) {
|
||||
if (in_array($argument, [ 'list' ])) {
|
||||
$command = $argument;
|
||||
} elseif (substr($argument, 0, 2) == '--') {
|
||||
$options[] = substr($argument, 2);
|
||||
} else {
|
||||
$types[] = $argument;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (in_array('all', $options)) {
|
||||
$types = [
|
||||
'applications-bots',
|
||||
'applications-browsers',
|
||||
'applications-others'
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
foreach ($types as $i => $type) {
|
||||
command($command, $type);
|
||||
}
|
||||
|
||||
|
||||
function command($command, $type) {
|
||||
switch($command) {
|
||||
case 'list':
|
||||
command_list($type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function command_list($type) {
|
||||
echo "Creating regex for 'data/{$type}.php'...\n";
|
||||
|
||||
require_once __DIR__ . '/../data/' . $type . '.php';
|
||||
|
||||
if ($type == 'applications-bots') {
|
||||
$list = Applications::$BOTS;
|
||||
|
||||
$ids = [];
|
||||
|
||||
foreach ($list as $i => $bot) {
|
||||
$ids[] = $bot['id'];
|
||||
}
|
||||
|
||||
$ids = array_unique($ids);
|
||||
$regex = '/(' . implode('|', $ids) . ')/i';
|
||||
|
||||
$file = "<" . "?php\n";
|
||||
$file .= "\n";
|
||||
$file .= "namespace WhichBrowser\\Data;\n";
|
||||
$file .= "\n";
|
||||
$file .= "Applications::\$BOTS_REGEX = '" . $regex . "';\n";
|
||||
|
||||
file_put_contents(__DIR__ . '/../data/regexes/' . $type . '.php', $file);
|
||||
}
|
||||
|
||||
if ($type == 'applications-browsers') {
|
||||
$list = Applications::$BROWSERS;
|
||||
|
||||
$ids = [];
|
||||
|
||||
foreach ($list as $t => $l) {
|
||||
foreach ($l as $i => $item) {
|
||||
$ids[] = $item['id'];
|
||||
}
|
||||
}
|
||||
|
||||
$ids = array_unique($ids);
|
||||
$regex = '/(' . implode('|', $ids) . ')/i';
|
||||
|
||||
$file = "<" . "?php\n";
|
||||
$file .= "\n";
|
||||
$file .= "namespace WhichBrowser\\Data;\n";
|
||||
$file .= "\n";
|
||||
$file .= "Applications::\$BROWSERS_REGEX = '" . $regex . "';\n";
|
||||
|
||||
file_put_contents(__DIR__ . '/../data/regexes/' . $type . '.php', $file);
|
||||
}
|
||||
|
||||
if ($type == 'applications-others') {
|
||||
$list = Applications::$OTHERS;
|
||||
|
||||
$ids = [];
|
||||
|
||||
foreach ($list as $t => $l) {
|
||||
foreach ($l as $i => $item) {
|
||||
$ids[] = $item['id'];
|
||||
}
|
||||
}
|
||||
|
||||
$ids = array_unique($ids);
|
||||
$regex = '/(' . implode('|', $ids) . ')/i';
|
||||
|
||||
$file = "<" . "?php\n";
|
||||
$file .= "\n";
|
||||
$file .= "namespace WhichBrowser\\Data;\n";
|
||||
$file .= "\n";
|
||||
$file .= "Applications::\$OTHERS_REGEX = '" . $regex . "';\n";
|
||||
|
||||
file_put_contents(__DIR__ . '/../data/regexes/' . $type . '.php', $file);
|
||||
}
|
||||
}
|
||||
30
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bootstrap.php
vendored
Normal file
30
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bootstrap.php
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
spl_autoload_register(function ($class) {
|
||||
|
||||
// project-specific namespace prefix
|
||||
$prefix = 'WhichBrowser\\';
|
||||
|
||||
// base directory for the namespace prefix
|
||||
$base_dir = __DIR__ . '/src/';
|
||||
|
||||
// does the class use the namespace prefix?
|
||||
$len = strlen($prefix);
|
||||
if (strncmp($prefix, $class, $len) !== 0) {
|
||||
// no, move to the next registered autoloader
|
||||
return;
|
||||
}
|
||||
|
||||
// get the relative class name
|
||||
$relative_class = substr($class, $len);
|
||||
|
||||
// replace the namespace prefix with the base directory, replace namespace
|
||||
// separators with directory separators in the relative class name, append
|
||||
// with .php
|
||||
$file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
|
||||
|
||||
// if the file exists, require it
|
||||
if (file_exists($file)) {
|
||||
require $file;
|
||||
}
|
||||
});
|
||||
47
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/composer.json
vendored
Normal file
47
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/composer.json
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"name": "whichbrowser/parser",
|
||||
|
||||
"description": "Useragent sniffing library for PHP",
|
||||
"keywords": ["useragent","browser","sniffing", "ua"],
|
||||
"homepage": "http://whichbrowser.net",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Niels Leenheer",
|
||||
"email": "niels@leenheer.nl",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
|
||||
"require": {
|
||||
"php": ">=5.4.0",
|
||||
"psr/cache": "^1.0"
|
||||
},
|
||||
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"WhichBrowser\\": [ "src/", "tests/src/" ]
|
||||
}
|
||||
},
|
||||
|
||||
"suggest": {
|
||||
"cache/array-adapter": "Allows testing of the caching functionality"
|
||||
},
|
||||
|
||||
"require-dev": {
|
||||
"symfony/yaml": ">=2.8",
|
||||
"phpunit/php-code-coverage": "^2.2|^3.0",
|
||||
"phpunit/PHPUnit": "^4.0|^5.0",
|
||||
"satooshi/php-coveralls": "^1.0",
|
||||
"icomefromthenet/reverse-regex" : "0.0.6.3",
|
||||
"squizlabs/php_codesniffer": "2.5.*"
|
||||
},
|
||||
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"WhichBrowserTest\\": "tests/unit"
|
||||
},
|
||||
|
||||
"files": [ "tests/src/polyfills.php" ]
|
||||
}
|
||||
}
|
||||
293
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-bots.php
vendored
Normal file
293
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-bots.php
vendored
Normal file
@@ -0,0 +1,293 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
Applications::$BOTS = [
|
||||
[ 'name' => '80legs', 'id' => '008', 'regexp' => '/(?:^|\s)008\/([0-9.]*)/u' ],
|
||||
[ 'name' => '360spider', 'id' => '360', 'regexp' => '/360Spider/u' ],
|
||||
[ 'name' => '360spider', 'id' => '360', 'regexp' => '/360spider-image/u' ],
|
||||
[ 'name' => 'A6 Indexer', 'id' => 'a6', 'regexp' => '/A6-Indexer(?:\/([0-9.]*))?/u' ],
|
||||
[ 'name' => 'Aboundex', 'id' => 'abound', 'regexp' => '/Aboundex\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Ad Muncher', 'id' => 'muncher', 'regexp' => '/Ad Muncher v([0-9.]*)/u' ],
|
||||
[ 'name' => 'Adaxas', 'id' => 'adaxas', 'regexp' => '/Adaxas Spider/u' ],
|
||||
[ 'name' => 'AddThis.com', 'id' => 'addthis', 'regexp' => '/AddThis.com/u' ],
|
||||
[ 'name' => 'ADmantX', 'id' => 'admantx', 'regexp' => '/ADmantX Platform Semantic Analyzer/u' ],
|
||||
[ 'name' => 'AhrefsBot', 'id' => 'ahrefsbot', 'regexp' => '/AhrefsBot.Feeds v([0-9.]*)/u' ],
|
||||
[ 'name' => 'AhrefsBot', 'id' => 'ahrefsbot', 'regexp' => '/AhrefsBot\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Alexa', 'id' => 'archiver', 'regexp' => '/ia_archiver/u' ],
|
||||
[ 'name' => 'AltaVista', 'id' => 'altavista', 'regexp' => '/AltaVista Intranet V([0-9.]*)/u' ],
|
||||
[ 'name' => 'Analytics SEO', 'id' => 'curious', 'regexp' => '/Curious George - www.analyticsseo.com\/crawler/u' ],
|
||||
[ 'name' => 'Amazon CloudFront', 'id' => 'cloudfront', 'regexp' => '/Amazon CloudFront/u' ],
|
||||
[ 'name' => 'Amorank Spider', 'id' => 'amorank', 'regexp' => '/AmorankSpider\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'ArchiveBot', 'id' => 'archive', 'regexp' => '/ArchiveTeam ArchiveBot/u' ],
|
||||
[ 'name' => 'Archive.org', 'id' => 'archive', 'regexp' => '/archive.org_bot(?:\/([0-9.]*))?/u' ],
|
||||
[ 'name' => 'Archive.org', 'id' => 'archive', 'regexp' => '/special_archiver(?:\/([0-9.]*))?/u' ],
|
||||
[ 'name' => 'Ask Jeeves', 'id' => 'jeeves', 'regexp' => '/Ask Jeeves\/Teoma/u' ],
|
||||
[ 'name' => 'AstraSpider', 'id' => 'astra', 'regexp' => '/AstraSpider V([0-9.]*)/u' ],
|
||||
[ 'name' => 'Backlink-Check', 'id' => 'backlink', 'regexp' => '/Backlink-Ceck.de/u' ],
|
||||
[ 'name' => 'BacklinkCrawler', 'id' => 'backlink', 'regexp' => '/BacklinkCrawler/u' ],
|
||||
[ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/Baiduspider[\+ ]\([\+ ]/u' ],
|
||||
[ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/Baiduspider\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/Baiduspider/u' ],
|
||||
[ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/baiduspider-mobile-gate/u' ],
|
||||
[ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/\+http:\/\/www.baidu.com\/search\/spider.html/u' ],
|
||||
[ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/BaiduImagespider/u' ],
|
||||
[ 'name' => 'BazQux', 'id' => 'bazqux', 'regexp' => '/BazQux\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Bing', 'id' => 'bingbot', 'regexp' => '/bingbot\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/msnbot\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/msnbot-UDiscovery\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/msnbot-media\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/MsnBot-Media \/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/msnbot-NewsBlogs\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/MSNBOT_Mobile/u' ],
|
||||
[ 'name' => 'Bing', 'id' => 'msmobot', 'regexp' => '/MSMOBOT/u' ],
|
||||
[ 'name' => 'Bing Preview', 'id' => 'bing', 'regexp' => '/BingPreview\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'BlogBridge', 'id' => 'blogbridge', 'regexp' => '/BlogBridge ([0-9.]*)/u' ],
|
||||
[ 'name' => 'Bloglines', 'id' => 'bloglines', 'regexp' => '/Bloglines\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Bloglovin', 'id' => 'bloglovin', 'regexp' => '/Bloglovin\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'BlogPulse', 'id' => 'blogpulse', 'regexp' => '/BlogPulse \(ISSpider-([0-9.]*)/u' ],
|
||||
[ 'name' => 'Blogram', 'id' => 'blogram', 'regexp' => '/BlogramCrawler\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Blogtrottr', 'id' => 'blogtrot', 'regexp' => '/Blogtrottr\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Blogshares', 'id' => 'blogshares', 'regexp' => '/Blogshares/u' ],
|
||||
[ 'name' => 'BoardReader', 'id' => 'boardreader', 'regexp' => '/BoardReader\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Browsershots', 'id' => 'browsershots', 'regexp' => '/Browsershots/u' ],
|
||||
[ 'name' => 'BUbiNG', 'id' => 'bubing', 'regexp' => '/BUbiNG/u' ],
|
||||
[ 'name' => 'Butterfly', 'id' => 'butterfly', 'regexp' => '/Butterfly\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'CiteSeerX', 'id' => 'heritrix', 'regexp' => '/heritrix\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Cliqzbot', 'id' => 'cliqz', 'regexp' => '/Cliqzbot\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'CloudFare Always Online', 'id' => 'cloudflare', 'regexp' => '/CloudFlare-AlwaysOnline\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Comodo', 'id' => 'comodo', 'regexp' => '/Comodo Spider ([0-9.]*)/u' ],
|
||||
[ 'name' => 'CommaFeed', 'id' => 'commafeed', 'regexp' => '/CommaFeed\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'CommonCrawl', 'id' => 'cbot', 'regexp' => '/CCBot\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Data Hotel Watchdog', 'id' => 'watchdog', 'regexp' => '/Data-Hotel-Watchdog\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'DataparkSearch', 'id' => 'datasearch', 'regexp' => '/DataparkSearch\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Daumoa', 'id' => 'daumoa', 'regexp' => '/Daumoa ([0-9.]*)/u' ],
|
||||
[ 'name' => 'Digg', 'id' => 'digg', 'regexp' => '/Digg Deeper\/v([0-9.]*)/u' ],
|
||||
[ 'name' => 'Digg', 'id' => 'digg', 'regexp' => '/Digg\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Domain Re-Animator', 'id' => 'domain', 'regexp' => '/Domain Re-Animator Bot/u' ],
|
||||
[ 'name' => 'Exabot Thumbnails', 'id' => 'exabot', 'regexp' => '/Exabot-Thumbnails/u' ],
|
||||
[ 'name' => 'ExactSeek', 'id' => 'exactseek', 'regexp' => '/ExactSeek Crawler/u' ],
|
||||
[ 'name' => 'Ezooms Crawler', 'id' => 'ezooms', 'regexp' => '/Ezooms\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Facebook', 'id' => 'facebook', 'regexp' => '/facebookplatform\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Facebook', 'id' => 'facebook', 'regexp' => '/facebookexternalhit\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Facebook', 'id' => 'facebook', 'regexp' => '/facebookscraper\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Facebook', 'id' => 'facebook', 'regexp' => '/FacebookSecurity\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'FAST Crawler', 'id' => 'fast', 'regexp' => '/FAST Crawler ([0-9.]*)/u' ],
|
||||
[ 'name' => 'FAST Crawler', 'id' => 'fast', 'regexp' => '/FastCrawler3/u' ],
|
||||
[ 'name' => 'FAST Enterprise Crawler', 'id' => 'fast', 'regexp' => '/FAST Enterprise Crawler\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'FAST Enterprise Crawler', 'id' => 'fast', 'regexp' => '/FAST Enterprise Crawler ([0-9.]*)/u' ],
|
||||
[ 'name' => 'FAST Enterprise Crawler', 'id' => 'fast', 'regexp' => '/FAST EnterpriseCrawler ([0-9.]*)/u' ],
|
||||
[ 'name' => 'FAST MetaWeb Crawler', 'id' => 'fast', 'regexp' => '/FAST MetaWeb Crawler/u' ],
|
||||
[ 'name' => 'FAST mSEARCH Crawler', 'id' => 'fast', 'regexp' => '/FAST-mSEARCH Crawler ([0-9.]*)/u' ],
|
||||
[ 'name' => 'FAST Web Crawler', 'id' => 'fast', 'regexp' => '/FAST-WebCrawler\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Flamingo Search', 'id' => 'flamingo', 'regexp' => '/Flamingo_SearchEngine/u' ],
|
||||
[ 'name' => 'Fastladder', 'id' => 'fastladder', 'regexp' => '/Fastladder FeedFetcher\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Feedbin', 'id' => 'feed', 'regexp' => '/Feedbin/u' ],
|
||||
[ 'name' => 'FeedWrangler', 'id' => 'wrangler', 'regexp' => '/Feed Wrangler\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Feedly', 'id' => 'feed', 'regexp' => '/FeedlyApp\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Feedly', 'id' => 'feed', 'regexp' => '/FeedlyBot\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Feedly', 'id' => 'feed', 'regexp' => '/MetaFeedly\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Feedspot', 'id' => 'feed', 'regexp' => '/Feedspot/u' ],
|
||||
[ 'name' => 'FeedValidator', 'id' => 'validator', 'regexp' => '/FeedValidator\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'FeedZirra', 'id' => 'feed', 'regexp' => '/feedzirra/u' ],
|
||||
[ 'name' => 'Fever', 'id' => 'fever', 'regexp' => '/Fever\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Friendica', 'id' => 'friendica', 'regexp' => '/Friendica/u' ],
|
||||
[ 'name' => 'FTRF: Friendly Robot', 'id' => 'robot', 'regexp' => '/FTRF: Friendly robot\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Genieo Web Filter', 'id' => 'genieo', 'regexp' => '/Genieo\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'GNIP', 'id' => 'fetchor', 'regexp' => '/UnwindFetchor\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Gocrawl', 'id' => 'google', 'regexp' => '/Googlebot \(gocrawl v([0-9.]*)\)/u' ],
|
||||
[ 'name' => 'GomezAgent', 'id' => 'gomez', 'regexp' => '/GomezAgent ([0-9.]+)/u' ],
|
||||
[ 'name' => 'Goo', 'id' => 'ichiro', 'regexp' => '/ichiro\/mobile goo/u' ],
|
||||
[ 'name' => 'Goo Blog Search', 'id' => 'gooblog', 'regexp' => '/gooblog\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Goo Blog Search', 'id' => 'gooblog', 'regexp' => '/gooblogsearch\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Goo RSS Reader', 'id' => 'goorss', 'regexp' => '/gooRSSreader([0-9.]*)/u' ],
|
||||
[ 'name' => 'Googlebot', 'id' => 'google', 'regexp' => '/Google[Bb]ot\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Googlebot Mobile', 'id' => 'google', 'regexp' => '/Googlebot-Mobile\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Googlebot Image', 'id' => 'google', 'regexp' => '/Googlebot-Image\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Googlebot Video', 'id' => 'google', 'regexp' => '/Googlebot-Video\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Google Ads Bot', 'id' => 'google', 'regexp' => '/AdsBot-Google/u' ],
|
||||
[ 'name' => 'Google Adsense Snapshot', 'id' => 'google', 'regexp' => '/Adsense-Snapshot-Google/u' ],
|
||||
[ 'name' => 'Google App Engine', 'id' => 'google', 'regexp' => '/AppEngine-Google/u' ],
|
||||
[ 'name' => 'Google Web Preview', 'id' => 'google', 'regexp' => '/Google Web Preview/u' ],
|
||||
[ 'name' => 'Google Page Speed', 'id' => 'google', 'regexp' => '/Google Page Speed Insights/u' ],
|
||||
[ 'name' => 'Google FeedBurner', 'id' => 'feed', 'regexp' => '/FeedBurner\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Google Feedfetcher', 'id' => 'google', 'regexp' => '/Feedfetcher-Google/iu' ],
|
||||
[ 'name' => 'Google Font Analysis', 'id' => 'google', 'regexp' => '/Google-FontAnalysis\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Google Sitemaps', 'id' => 'google', 'regexp' => '/Google-Sitemaps\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Google Site Verification', 'id' => 'google', 'regexp' => '/Google-Site-Verification\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Google Rich Snippets', 'id' => 'google', 'regexp' => '/Googlebot-richsnippets/u' ],
|
||||
[ 'name' => 'Google Mediapartners', 'id' => 'google', 'regexp' => '/Mediapartners-Google\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Google Mediapartners', 'id' => 'google', 'regexp' => '/Mediapartners-Google/u' ],
|
||||
[ 'name' => 'Google News', 'id' => 'google', 'regexp' => '/Googlebot-News/u' ],
|
||||
[ 'name' => 'Google Wireless Transcoder', 'id' => 'google', 'regexp' => '/Google Wireless Transcoder/u' ],
|
||||
[ 'name' => 'Google Play Newsstand', 'id' => 'google', 'regexp' => '/GoogleProducer/u' ],
|
||||
[ 'name' => 'Google YouTube Sample', 'id' => 'google', 'regexp' => '/Google-YouTubeSample\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Grammarly', 'id' => 'grammarly', 'regexp' => '/Grammarly\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Grub', 'id' => 'grub', 'regexp' => '/grub-client-([0-9.]*)/u' ],
|
||||
[ 'name' => 'Hatena Antenna', 'id' => 'hatena', 'regexp' => '/Hatena Antenna\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Hatena Diary', 'id' => 'hatena', 'regexp' => '/Hatena Diary RSS Module/u' ],
|
||||
[ 'name' => 'Hatena Pagetitle', 'id' => 'hatena', 'regexp' => '/Hatena Pagetitle Agent\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'HeartRails Capture', 'id' => 'capture', 'regexp' => '/HeartRails_Capture\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Heureka Feed', 'id' => 'heureka', 'regexp' => '/Heurekabot-Feed/u' ],
|
||||
[ 'name' => 'htdig', 'id' => 'htdig', 'regexp' => '/htdig\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'HTTPMon', 'id' => 'httpmon', 'regexp' => '/HTTPMon\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'HubPages', 'id' => 'hubpages', 'regexp' => '/HubPages V([0-9.]*)/u' ],
|
||||
[ 'name' => 'iAsk Spider', 'id' => 'spider', 'regexp' => '/iaskspider\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'iAsk Spider', 'id' => 'spider', 'regexp' => '/iaskspider2/u' ],
|
||||
[ 'name' => 'Ichiro', 'id' => 'ichiro', 'regexp' => '/ichiro\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Internet Archive', 'id' => 'archive', 'regexp' => '/InternetArchive\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'JamesBOT', 'id' => 'crawler', 'regexp' => '/James BOT - WebCrawler/u' ],
|
||||
[ 'name' => 'Jayde', 'id' => 'crawler', 'regexp' => '/Jayde Crawler./u' ],
|
||||
[ 'name' => 'Kouio', 'id' => 'kouio', 'regexp' => '/kouio.com/u' ],
|
||||
[ 'name' => 'Larbin', 'id' => 'larbin', 'regexp' => '/[Ll]arbin[\/_]([0-9.]*)/u' ],
|
||||
[ 'name' => 'Linkedin Bot', 'id' => 'linkedin', 'regexp' => '/LinkedInBot\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Linkdex Bot', 'id' => 'linkdex', 'regexp' => '/linkdexbot-mobile\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Linkdex Bot', 'id' => 'linkdex', 'regexp' => '/linkdex.com\/v([0-9.]*)/u' ],
|
||||
[ 'name' => 'Livedoor', 'id' => 'livedoor', 'regexp' => '/livedoor/u' ],
|
||||
[ 'name' => 'LTX71', 'id' => 'ltx71', 'regexp' => '/ltx71/u' ],
|
||||
[ 'name' => 'Magpie RSS', 'id' => 'magpie', 'regexp' => '/MagpieRSS\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Mapian News Bot', 'id' => 'mapion', 'regexp' => '/mapion-news-bot\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Microsoft Social Streams', 'id' => 'socialstreams', 'regexp' => '/Microsoft MSN SocialStreams Bot/u' ],
|
||||
[ 'name' => 'Mixi', 'id' => 'mixi', 'regexp' => '/mixi-check\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'MnoGoSearch', 'id' => 'mnogo', 'regexp' => '/MnoGoSearch\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Monitor.us', 'id' => 'monitor', 'regexp' => '/monitor.us/u' ],
|
||||
[ 'name' => 'Naver Yeti', 'id' => 'yeti', 'regexp' => '/Yeti\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Netcraft Survey Bot', 'id' => 'netcraft', 'regexp' => '/Netcraft Web Server Survey/u' ],
|
||||
[ 'name' => 'Netvibes', 'id' => 'netvibes', 'regexp' => '/Netvibes/u' ],
|
||||
[ 'name' => 'NewsBlur', 'id' => 'newsblur', 'regexp' => '/NewsBlur Favicon Fetcher/u' ],
|
||||
[ 'name' => 'NewsBlur', 'id' => 'newsblur', 'regexp' => '/NewsBlur Feed Fetcher/u' ],
|
||||
[ 'name' => 'NewsBlur', 'id' => 'newsblur', 'regexp' => '/NewsBlur Feed Finder/u' ],
|
||||
[ 'name' => 'NewsBlur', 'id' => 'newsblur', 'regexp' => '/NewsBlur Page Fetcher/u' ],
|
||||
[ 'name' => 'NewsGator', 'id' => 'newsgator', 'regexp' => '/NewsGator\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'NewsGator', 'id' => 'newsgator', 'regexp' => '/NewsGatorOnline\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'NewsGator FetchLinks', 'id' => 'newsgator', 'regexp' => '/NewsGator FetchLinks extension\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'OpenWebSpider', 'id' => 'spider', 'regexp' => '/OpenWebSpider v([0-9.]*)/u' ],
|
||||
[ 'name' => 'OrangeBot', 'id' => 'orange', 'regexp' => '/OrangeBot-Collector\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'OrangeBot', 'id' => 'orange', 'regexp' => '/OrangeBot-Mobile/u' ],
|
||||
[ 'name' => 'PagesInventory ', 'id' => 'pages', 'regexp' => '/PagesInventory/u' ],
|
||||
[ 'name' => 'Picsearch bot', 'id' => 'psbot', 'regexp' => '/psbot-page/u' ],
|
||||
[ 'name' => 'Pingdom', 'id' => 'pingdom', 'regexp' => '/Pingdom.com_bot_version_([0-9.]*)/u' ],
|
||||
[ 'name' => 'Pinterest', 'id' => 'pinterest', 'regexp' => '/Pinterest\/([0-9.]+)( \(+|$)/u' ],
|
||||
[ 'name' => 'PostRank', 'id' => 'postrank', 'regexp' => '/PostRank\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'PowerMapper', 'id' => 'crawler', 'regexp' => '/CrawlerProcess \(http:\/\/www\.PowerMapper\.com\) \/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Radian 6', 'id' => 'feed', 'regexp' => '/R6_FeedFetcher/u' ],
|
||||
[ 'name' => 'Radian 6', 'id' => 'comment', 'regexp' => '/R6_CommentReader/u' ],
|
||||
[ 'name' => 'RssBar', 'id' => 'rssbar', 'regexp' => '/RssBar\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'ROI Hunter', 'id' => 'hunter', 'regexp' => '/ROI Hunter/u' ],
|
||||
[ 'name' => 'QuerySeekerSpider', 'id' => 'spider', 'regexp' => '/QuerySeekerSpider(?:\/([0-9.]*))?/u' ],
|
||||
[ 'name' => 'Quora Link Preview', 'id' => 'quora', 'regexp' => '/Quora Link Preview\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'SafeSearch Microdata', 'id' => 'safesearch', 'regexp' => '/SafeSearch microdata crawler/u' ],
|
||||
[ 'name' => 'Scrapy', 'id' => 'scrapy', 'regexp' => '/Scrapy\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'ScreenerBot', 'id' => 'crawler', 'regexp' => '/ScreenerBot Crawler Beta ([0-9.]*)/u' ],
|
||||
[ 'name' => 'Server Density', 'id' => 'monitor', 'regexp' => '/Server Density Service Monitoring/u' ],
|
||||
[ 'name' => 'Seznam bot', 'id' => 'seznam', 'regexp' => '/SeznamBot|SklikBot|Seznam screenshot-generator/u' ],
|
||||
[ 'name' => 'Seznam Email Proxy', 'id' => 'seznam', 'regexp' => '/SeznamEmailProxy/u' ],
|
||||
[ 'name' => 'Seznam Zbozi.cz', 'id' => 'seznam', 'regexp' => '/Seznam-Zbozi-robot/u' ],
|
||||
[ 'name' => 'ShopWiki', 'id' => 'shopwiki', 'regexp' => '/ShopWiki\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'SilverReader', 'id' => 'reader', 'regexp' => '/SilverReader\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'SimplePie', 'id' => 'simplepie', 'regexp' => '/SimplePie\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Site24x7', 'id' => 'site24', 'regexp' => '/Site24x7/u' ],
|
||||
[ 'name' => 'Sogou Web Spider', 'id' => 'sogou', 'regexp' => '/sogou spider/u' ],
|
||||
[ 'name' => 'Sogou Web Spider', 'id' => 'sogou', 'regexp' => '/Sogou pic spider\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Sogou Web Spider', 'id' => 'sogou', 'regexp' => '/Sogou inst spider\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Sogou Web Spider', 'id' => 'sogou', 'regexp' => '/Sogou web spider\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Sogou Mobile Spider', 'id' => 'sogou', 'regexp' => '/Sogou Mobile Spider([0-9.]*)/u' ],
|
||||
[ 'name' => 'Sophora Linkchecker', 'id' => 'sophora', 'regexp' => '/Sophora Linkchecker/u' ],
|
||||
[ 'name' => 'Soso Web Spider', 'id' => 'soso', 'regexp' => '/Sosospider\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Soso Web Spider', 'id' => 'soso', 'regexp' => '/Sosospider/u' ],
|
||||
[ 'name' => 'Soso Image Spider', 'id' => 'soso', 'regexp' => '/Sosoimagespider/u' ],
|
||||
[ 'name' => 'SPDYCheck', 'id' => 'spdycheck', 'regexp' => '/SPDYCheck SPDY Protocol Tester/iu' ],
|
||||
[ 'name' => 'Spinn3r', 'id' => 'spinn', 'regexp' => '/Spinn3r ([0-9.]*)/iu' ],
|
||||
[ 'name' => 'Spiderlytics', 'id' => 'spider', 'regexp' => '/Spiderlytics\/([0-9.]*)/iu' ],
|
||||
[ 'name' => 'StatusCake Error Detector', 'id' => 'detector', 'regexp' => '/StatusCake Error Detector/iu' ],
|
||||
[ 'name' => 'Summify', 'id' => 'summify', 'regexp' => '/Summify\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'TelegramBot', 'id' => 'telegram', 'regexp' => '/TelegramBot/u' ],
|
||||
[ 'name' => 'Twisted PageGetter', 'id' => 'twisted', 'regexp' => '/Twisted PageGetter/u' ],
|
||||
[ 'name' => 'Twitterbot', 'id' => 'twitter', 'regexp' => '/Twitterbot\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Tiny Tiny RSS', 'id' => 'tiny', 'regexp' => '/Tiny Tiny RSS\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'TLSProber', 'id' => 'tlsprober', 'regexp' => '/TLSProber\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Typhoeus', 'id' => 'typhoeus', 'regexp' => '/Typhoeus/u' ],
|
||||
[ 'name' => 'Vagabondo', 'id' => 'vagabondo', 'regexp' => '/Vagabondo\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Voilabot', 'id' => 'voila', 'regexp' => '/Voila[Bb]ot/u' ],
|
||||
[ 'name' => 'VocusBot', 'id' => 'vocus', 'regexp' => '/VocusBot ([0-9.]*)/u' ],
|
||||
[ 'name' => 'Vodafone mCrawler', 'id' => 'mcrawler', 'regexp' => '/Vodafone mCrawler/u' ],
|
||||
[ 'name' => 'W3Bot', 'id' => 'w3bot', 'regexp' => '/W3Bot ([0-9.]*)/u' ],
|
||||
[ 'name' => 'W3C CSS Validator', 'id' => 'jigsaw', 'regexp' => '/Jigsaw\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'W3C Internationalization Checker', 'id' => 'w3c', 'regexp' => '/W3C_I18n-Checker\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'W3C Line Mode', 'id' => 'w3c', 'regexp' => '/W3CLineMode\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'W3C Link Checker', 'id' => 'w3c', 'regexp' => '/W3C-checklink\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'W3C Markup Validator', 'id' => 'w3c', 'regexp' => '/W3C_Validator\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'W3C MobileOK Checker', 'id' => 'w3c', 'regexp' => '/W3C-mobileOK\/DDC-([0-9.]*)/u' ],
|
||||
[ 'name' => 'W3C Multipage Validator', 'id' => 'w3c', 'regexp' => '/W3C_Multipage_Validator\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'W3C Robot', 'id' => 'w3c', 'regexp' => '/W3CRobot\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'W3C Unified Validator', 'id' => 'w3c', 'regexp' => '/W3C_Unicorn\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'W3C Validator.nu', 'id' => 'validator', 'regexp' => '/Validator.nu\//u' ],
|
||||
[ 'name' => 'Wayback Archive', 'id' => 'wayback', 'regexp' => '/waybackarchive.org\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'WebbCrawler', 'id' => 'crawler', 'regexp' => '/WebbCrawler ([0-9.]*)/u' ],
|
||||
[ 'name' => 'WebIndexer', 'id' => 'webindexer', 'regexp' => '/WebIndexer\//u' ],
|
||||
[ 'name' => 'WordPress', 'id' => 'wordpress', 'regexp' => '/WordPress\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'WordPress.com', 'id' => 'wordpress', 'regexp' => '/WordPress\.com; http/u' ],
|
||||
[ 'name' => 'WordPress Jetpack', 'id' => 'wordpress', 'regexp' => '/Jetpack by WordPress\.com/u' ],
|
||||
[ 'name' => 'WWW Mechanize', 'id' => 'mechanize', 'regexp' => '/WWW-Mechanize\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Xerka WebBot', 'id' => 'xerka', 'regexp' => '/Xerka WebBot v([0-9.]*)/u' ],
|
||||
[ 'name' => 'XML Sitemaps Generator', 'id' => 'sitemap', 'regexp' => '/XML-Sitemaps\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'XMLSitemapGenerator', 'id' => 'sitemap', 'regexp' => '/XmlSitemapGenerator/u' ],
|
||||
[ 'name' => 'YaCy Bot', 'id' => 'yacy', 'regexp' => '/yacy(?:\/|\s|bot)/u' ],
|
||||
[ 'name' => 'Yandex Anti Virus', 'id' => 'yandex', 'regexp' => '/YandexAntivirus\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yandex Blogs', 'id' => 'yandex', 'regexp' => '/YandexBlogs\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yandex Bot', 'id' => 'yandex', 'regexp' => '/YandexBot\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yandex Direct', 'id' => 'yandex', 'regexp' => '/YandexDirect\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yandex Favicons', 'id' => 'yandex', 'regexp' => '/YandexFavicons\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yandex Image Resizer', 'id' => 'yandex', 'regexp' => '/YandexImageResizer\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yandex Images', 'id' => 'yandex', 'regexp' => '/YandexImages\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yandex Metrika', 'id' => 'yandex', 'regexp' => '/YandexMetrika\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yandex News', 'id' => 'yandex', 'regexp' => '/YandexNews\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yandex Newslinks', 'id' => 'yandex', 'regexp' => '/YandexNewslinks(?:\/([0-9.]*))?/u' ],
|
||||
[ 'name' => 'Yahoo! Ad Monitoring', 'id' => 'yahoo', 'regexp' => '/Yahoo Ad monitoring/u' ],
|
||||
[ 'name' => 'Yahoo! Blogs', 'id' => 'yahoo', 'regexp' => '/Yahoo-Blogs\/v([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yahoo! Cache System', 'id' => 'yahoo', 'regexp' => '/YahooCacheSystem/u' ],
|
||||
[ 'name' => 'Yahoo! Feed Seeker', 'id' => 'yahoo', 'regexp' => '/YahooFeedSeeker\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yahoo! Feed Seeker', 'id' => 'yahoo', 'regexp' => '/YahooFeedSeeker Testing\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yahoo! Image', 'id' => 'yahoo', 'regexp' => '/Yahoo-MMCrawler\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yahoo! Link Expander', 'id' => 'yahoo', 'regexp' => '/Yahoo:LinkExpander/u' ],
|
||||
[ 'name' => 'Yahoo! Link Preview', 'id' => 'yahoo', 'regexp' => '/Yahoo Link Preview/u' ],
|
||||
[ 'name' => 'Yahoo! Video', 'id' => 'yahoo', 'regexp' => '/Yahoo-MMAudVid\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yahoo! Mindset', 'id' => 'yahoo', 'regexp' => '/Yahoo\! Mindset/u' ],
|
||||
[ 'name' => 'Yahoo! Product Search', 'id' => 'yahoo', 'regexp' => '/YahooSeeker\/ProductSearch([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yahoo! Slurp', 'id' => 'yahoo', 'regexp' => '/Yahoo\! Slurp\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yahoo! Slurp', 'id' => 'yahoo', 'regexp' => '/Yahoo\! Slurp/u' ],
|
||||
[ 'name' => 'Yahoo! Seeker', 'id' => 'yahoo', 'regexp' => '/YahooSeeker(?:\/([0-9.]*))?/u' ],
|
||||
[ 'name' => 'Yahoo! Seeker', 'id' => 'yahoo', 'regexp' => '/YahooSeeker-Testing\/v([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yahoo! Seeker', 'id' => 'yahoo', 'regexp' => '/yahooseeker-jp-mobile/u' ],
|
||||
[ 'name' => 'Yahoo! Site Checker', 'id' => 'y\!j', 'regexp' => '/Y\!J SiteChecker/u' ],
|
||||
[ 'name' => 'Yahoo! Pipes', 'id' => 'yahoo', 'regexp' => '/Yahoo Pipes ([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yahoo! Video Search', 'id' => 'yahoo', 'regexp' => '/YahooVideoSearch/u' ],
|
||||
[ 'name' => 'Yahoo! Japan', 'id' => 'yahoo', 'regexp' => '/Yahoo\! Japan/u' ],
|
||||
[ 'name' => 'Yahoo! Japan', 'id' => 'y\!j', 'regexp' => '/(^|\(compatible; )Y\!J-/u' ],
|
||||
|
||||
[ 'name' => 'Inktomi Slurp', 'id' => 'slurp', 'regexp' => '/Slurp\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Inktomi Slurp', 'id' => 'slurp', 'regexp' => '/Slurp\.so\/([0-9.]*)/u' ],
|
||||
|
||||
/* Generic bots */
|
||||
[ 'name' => 'Apache Httpd', 'id' => 'httpclient', 'regexp' => '/Apache-HttpClient(?:\/([0-9.]*))?/u' ],
|
||||
[ 'name' => 'Apache Jakarta', 'id' => 'httpclient', 'regexp' => '/Jakarta Commons-HttpClient(?:\/([0-9.]*))?/u' ],
|
||||
[ 'name' => 'Apache Nutch', 'id' => 'nutch', 'regexp' => '/\/Nutch-([0-9.]*)/u' ],
|
||||
[ 'name' => 'Apache Nutch', 'id' => 'nutch', 'regexp' => '/Nutch(?:CVS|Org)\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Apache Synapse', 'id' => 'synapse', 'regexp' => '/compatible; Synapse/u' ],
|
||||
[ 'name' => 'Borland Delphi', 'id' => 'indy', 'regexp' => '/Indy Library/u' ],
|
||||
[ 'name' => 'Wget', 'id' => 'wget', 'regexp' => '/Wget\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Curl', 'id' => 'curl', 'regexp' => '/^curl\/([0-9.]*)/u' ],
|
||||
|
||||
[ 'name' => 'Go', 'id' => 'package', 'regexp' => '/Go [0-9\.]+ package http/u' ],
|
||||
[ 'name' => 'Java', 'id' => 'java', 'regexp' => '/^Java\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Perl', 'id' => 'simple', 'regexp' => '/LWP::Simple\//u' ],
|
||||
[ 'name' => 'Perl', 'id' => 'libwww', 'regexp' => '/libwww-perl\//u' ],
|
||||
[ 'name' => 'Perl', 'id' => 'lwp', 'regexp' => '/lwp-trivial\//u' ],
|
||||
[ 'name' => 'Python', 'id' => 'urllib', 'regexp' => '/Python-urllib/u' ],
|
||||
[ 'name' => 'PHP', 'id' => 'php', 'regexp' => '/ PHP\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'PHP', 'id' => 'php', 'regexp' => '/^PHP/u' ],
|
||||
[ 'name' => 'PHP', 'id' => 'pear', 'regexp' => '/PEAR HTTP_Request class/u' ],
|
||||
[ 'name' => 'PHP', 'id' => 'php', 'regexp' => '/CakePHP/u' ],
|
||||
[ 'name' => 'PHP', 'id' => 'zend', 'regexp' => '/Zend_Http_Client/u' ],
|
||||
[ 'name' => 'Ruby', 'id' => 'ruby', 'regexp' => '/^Ruby/u' ],
|
||||
];
|
||||
253
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-browsers.php
vendored
Normal file
253
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-browsers.php
vendored
Normal file
@@ -0,0 +1,253 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
|
||||
Applications::$BROWSERS = [
|
||||
|
||||
Constants\BrowserType::BROWSER => [
|
||||
|
||||
/* Desktop browsers */
|
||||
[ 'name' => '115 Browser', 'id' => '115', 'regexp' =>'/115Browser\/([0-9.]*)/u' ],
|
||||
[ 'name' => '115 Chrome', 'id' => '115', 'regexp' =>'/115Chrome\/([0-9.]*)/u' ],
|
||||
[ 'name' => '126 Browser', 'id' => '126', 'regexp' =>'/126BROWSER/u' ],
|
||||
[ 'name' => '2345 Explorer', 'id' => '2345', 'regexp' =>'/2345Explorer\/([0-9.]*)/u', 'details' => 3 ],
|
||||
[ 'name' => '2345 Explorer', 'id' => '2345', 'regexp' =>'/2345Explorer v([0-9.]*)/u', 'details' => 3 ],
|
||||
[ 'name' => '2345 Chrome', 'id' => '2345', 'regexp' =>'/2345chrome v([0-9.]*)/u', 'details' => 3 ],
|
||||
[ 'name' => '360 Extreme Explorer', 'id' => 'qihu', 'regexp' =>'/QIHU 360EE/u', 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => '360 Safe Explorer', 'id' => 'qihu', 'regexp' =>'/QIHU 360SE/u', 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => '7Star', 'id' => '7star', 'regexp' =>'/7Star\/([0-9.]*)/u' ], // see: http://www.qixing123.com
|
||||
[ 'name' => 'ABrowse', 'id' => 'abrowse', 'regexp' =>'/A[Bb]rowse ([0-9.]*)/u' ], // browser for the Syllable OS
|
||||
[ 'name' => 'Abrowser', 'id' => 'abrowse', 'regexp' =>'/Abrowser\/([0-9.]*)/u' ], // unbranded version of Firefox
|
||||
[ 'name' => 'Acorn Browse', 'id' => 'acorn', 'regexp' =>'/Acorn Browse ([0-9.]+)/u' ],
|
||||
[ 'name' => 'Acorn Browse', 'id' => 'acorn', 'regexp' =>'/Acorn Phoenix ([0-9.]+)/u' ],
|
||||
[ 'name' => 'Acoo Browser', 'id' => 'acoo', 'regexp' =>'/Acoo Browser/u' ],
|
||||
[ 'name' => 'AOL Desktop', 'id' => 'aol', 'regexp' =>'/AOL ([0-9.]*); AOLBuild/i' ],
|
||||
[ 'name' => 'AOL Browser', 'id' => 'america', 'regexp' =>'/America Online Browser (?:[0-9.]*); rev([0-9.]*);/i' ],
|
||||
[ 'name' => 'Arachne', 'id' => 'arachne', 'regexp' =>'/xChaos_Arachne\/[0-9]\.([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: www.glennmcc.org
|
||||
[ 'name' => 'Arora', 'id' => 'arora', 'regexp' =>'/[Aa]rora\/([0-9.]*)/u' ], // see: www.arora-browser.org
|
||||
[ 'name' => 'AWeb', 'id' => 'aweb', 'regexp' =>'/Amiga-AWeb(?:\/([0-9.]*))?/u' ],
|
||||
[ 'name' => 'AvantGo', 'id' => 'avant', 'regexp' =>'/AvantGo ([0-9.]+)/u' ],
|
||||
[ 'name' => 'Avant Browser', 'id' => 'avant', 'regexp' =>'/Avant Browser/u' ],
|
||||
[ 'name' => 'Avant Browser', 'id' => 'avant', 'regexp' =>'/Avant TriCore/u' ],
|
||||
[ 'name' => 'Avast SafeZone', 'id' => 'asw', 'regexp' =>'/ASW\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Aviator', 'id' => 'aviator', 'regexp' =>'/Aviator\/([0-9.]*)/u', 'details' => 1 ], // see: https://github.com/WhiteHatSecurity/Aviator
|
||||
[ 'name' => 'Baidu Browser', 'id' => 'flyflow', 'regexp' =>'/FlyFlow\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Baidu Browser', 'id' => 'bdbrowser', 'regexp' =>'/bdbrowser\/([0-9.]*)/i' ],
|
||||
[ 'name' => 'Baidu Browser', 'id' => 'bdbrowser', 'regexp' =>'/bdbrowser_i18n\/([0-9.]*)/i' ],
|
||||
[ 'name' => 'Baidu Spark', 'id' => 'bdspark', 'regexp' =>'/BDSpark\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Beamrise', 'id' => 'beamrise', 'regexp' =>'/Beamrise\/([0-9.]*)/u' ], // see: http://beamrise.com
|
||||
[ 'name' => 'Black Wren', 'id' => 'blackwren', 'regexp' =>'/BlackWren\/([0-9.]*)/u', 'details' => 2 ], // see: https://github.com/conmarap/jetbrowser
|
||||
[ 'name' => 'Brave', 'id' => 'brave', 'regexp' =>'/brave\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Byffox', 'id' => 'byffox', 'regexp' =>'/Byffox\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Camino', 'id' => 'camino', 'regexp' =>'/Camino\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Canure', 'id' => 'canure', 'regexp' =>'/Canure\/([0-9.]*)/u', 'details' => 3 ], // see: http://canure.weebly.com/index.html
|
||||
[ 'name' => 'Charon', 'id' => 'charon', 'regexp' =>'/Charon/' ], // see: http://www.vitanuova.com/inferno/man/1/charon.html
|
||||
[ 'name' => 'ChromePlus', 'id' => 'chromeplus', 'regexp' =>'/ChromePlus(?:\/([0-9.]*))?$/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'CometBird', 'id' => 'cometbird', 'regexp' =>'/CometBird\/([0-9.]*)/u' ], // see: http://www.cometbird.com
|
||||
[ 'name' => 'Comodo Dragon', 'id' => 'comodo', 'regexp' =>'/Comodo_Dragon\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Comodo Dragon', 'id' => 'dragon', 'regexp' =>'/Dragon\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Comodo IceDragon', 'id' => 'dragon', 'regexp' =>'/IceDragon\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Conkeror', 'id' => 'conkeror', 'regexp' =>'/[Cc]onkeror\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'CoolNovo', 'id' => 'coolnovo', 'regexp' =>'/(?:CoolNovo|CoolNovoChromePlus)\/([0-9.]*)/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Cunaguaro', 'id' => 'cunaguaro', 'regexp' =>'/Cunaguaro\/([0-9.]*)/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Cyberfox', 'id' => 'cyberfox', 'regexp' =>'/Cyberfox\/([0-9.]*)/u', 'details' => 2 ], // see: https://cyberfox.8pecxstudios.com
|
||||
[ 'name' => 'Daedalus', 'id' => 'daedalus', 'regexp' =>'/Daedalus ([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Dillo', 'id' => 'dillo', 'regexp' =>'/Dillo\/([0-9.]*)/u' ], // see: http://www.dillo.org
|
||||
[ 'name' => 'Doga Rhodonit', 'id' => 'rhodonit', 'regexp' =>'/DogaRhodonit/u' ],
|
||||
[ 'name' => 'EudoraWeb', 'id' => 'eudoraweb', 'regexp' =>'/EudoraWeb ([0-9.]*)/u' ],
|
||||
[ 'name' => 'Flock', 'id' => 'flock', 'regexp' =>'/Flock\/([0-9.]*)/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Galeon', 'id' => 'galeon', 'regexp' =>'/Galeon\/([0-9.]*)/u', 'details' => 3 ],
|
||||
[ 'name' => 'GNOME Web', 'id' => 'epiphany', 'regexp' =>'/Epiphany\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'IBrowse', 'id' => 'ibrowse', 'regexp' =>'/IBrowse[\/ ]([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'iCab', 'id' => 'icab', 'regexp' =>'/iCab(?: J)?[\/ ](?:Pre)?([0-9.]*)/u' ],
|
||||
[ 'name' => 'Iceape', 'id' => 'iceape', 'regexp' =>'/Iceape\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'IceCat', 'id' => 'icecat', 'regexp' =>'/IceCat[ \/]([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.gnu.org/software/gnuzilla/
|
||||
[ 'name' => 'Iceweasel', 'id' => 'iceweasel', 'regexp' =>'/Iceweasel\/([0-9.]*)/iu', 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Iridium', 'id' => 'iridium', 'regexp' =>'/Iridium\/([0-9.]*)/u', 'details' => 2 ], // see: http://www.srware.net/en/software_srware_iron.php
|
||||
[ 'name' => 'Iron', 'id' => 'iron', 'regexp' =>'/Iron\/([0-9.]*)/u', 'details' => 2 ], // see: http://www.srware.net/en/software_srware_iron.php
|
||||
[ 'name' => 'Kazehakase', 'id' => 'kazehakase', 'regexp' =>'/Kazehakase\/([0-9.]*)/u' ], // see: http://kazehakase.osdn.jp
|
||||
[ 'name' => 'KChrome', 'id' => 'kchrome', 'regexp' =>'/KChrome\/([0-9.]*)/u', 'details' => 3 ], // see: http://www.kchrome.com
|
||||
[ 'name' => 'K-Meleon', 'id' => 'meleon', 'regexp' =>'/K-Meleon\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://kmeleonbrowser.org
|
||||
[ 'name' => 'LieBao', 'id' => 'lbbrowser', 'regexp' =>'/LBBROWSER/u' ], // see: http://www.liebao.cn
|
||||
[ 'name' => 'Lobo', 'id' => 'lobo', 'regexp' =>'/Lobo\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://sourceforge.net/projects/xamj/files/Lobo%20Browser/
|
||||
[ 'name' => 'Lunascape', 'id' => 'lunascape', 'regexp' =>'/ Lunascape[\/| ]([0-9.]*)/u', 'details' => 3 ], // see: http://www.lunascape.tv
|
||||
[ 'name' => 'Naenara', 'id' => 'naenara', 'regexp' =>'/NaenaraBrowser\/([0-9.]*)/u', 'details' => 2 ], // Firefox based browser used with Red Star OS
|
||||
[ 'name' => 'Maxthon', 'id' => 'mxbrowser', 'regexp' =>'/MxBrowser\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Maxthon', 'id' => 'mxbrowser', 'regexp' =>'/MxBrowser-iPhone\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'MixShark', 'id' => 'mixshark', 'regexp' =>'/MixShark\/([0-9.]*)/u' ], // see: http://terbaddo.free.fr/mixshark.php
|
||||
[ 'name' => 'mlbrowser', 'id' => 'mlbrowser', 'regexp' =>'/mlbrowser/u' ], // see: https://github.com/Topguy/mlbrowser
|
||||
[ 'name' => 'NetPositive', 'id' => 'netpositive', 'regexp' =>'/NetPositive\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Origyn', 'id' => 'origyn', 'regexp' =>'/Origyn Web Browser/u' ],
|
||||
[ 'name' => 'Odyssey', 'id' => 'owb', 'regexp' =>'/OWB\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Orca', 'id' => 'orca', 'regexp' =>'/Orca\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Oregano', 'id' => 'oregano', 'regexp' =>'/Oregano ([0-9.]*)/u' ], // see: http://www.xat.nl/en/riscos/sw/oregano/
|
||||
[ 'name' => 'Otter', 'id' => 'otter', 'regexp' =>'/Otter(?: Browser)?\/([0-9.]*)/u' ], // see: https://otter-browser.org
|
||||
[ 'name' => 'Pale Moon', 'id' => 'palemoon', 'regexp' =>'/Pale[mM]oon\/([0-9.]*)/u' ], // see: https://www.palemoon.org
|
||||
[ 'name' => 'Qihoo 360', 'id' => 'qihu', 'regexp' =>'/QIHU THEWORLD/u' ],
|
||||
[ 'name' => 'QtWeb', 'id' => 'qtweb', 'regexp' =>'/QtWeb Internet Browser\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'QupZilla', 'id' => 'qupzilla', 'regexp' =>'/QupZilla\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'rekonq', 'id' => 'rekonq', 'regexp' =>'/rekonq(?:\/([0-9.]*))?/u', 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Ryouko', 'id' => 'ryouko', 'regexp' =>'/Ryouko\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://github.com/foxhead128/ryouko
|
||||
[ 'name' => 'SaaYaa Explorer', 'id' => 'saayaa', 'regexp' =>'/SaaYaa/u', 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Sleipnir', 'id' => 'sleipnir', 'regexp' =>'/Sleipnir\/([0-9.]*)/u', 'details' => 3 ],
|
||||
[ 'name' => 'Sogou Explorer', 'id' => 'metasr', 'regexp' =>'/SE 2.X MetaSr/u', 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Stainless', 'id' => 'stainless', 'regexp' =>'/Stainless\/([0-9.]*)/u' ], // see: http://www.stainlessapp.com
|
||||
[ 'name' => 'SunChrome', 'id' => 'sunchrome', 'regexp' =>'/SunChrome\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Superbird', 'id' => 'superbird', 'regexp' =>'/Super[Bb]ird\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Swing Browser', 'id' => 'swing', 'regexp' =>'/Swing(?:\(And\))?\/([0-9.]*)/u', 'details' => 3 ], // see: http://swing-browser.com
|
||||
[ 'name' => 'Tencent Traveler', 'id' => 'tencent', 'regexp' =>'/TencentTraveler ([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'TenFourFox', 'id' => 'tenfourfox', 'regexp' =>'/TenFourFox\//u' ],
|
||||
[ 'name' => 'The World', 'id' => 'theworld', 'regexp' =>'/TheWorld(?: ([0-9.]*))?/u' ],
|
||||
[ 'name' => 'Tungsten Browser', 'id' => 'tungsten', 'regexp' =>'/TungstenBrowser\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Vivaldi', 'id' => 'vivaldi', 'regexp' =>'/Vivaldi\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Voyager', 'id' => 'voyager', 'regexp' =>'/AmigaVoyager\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Waterfox', 'id' => 'waterfox', 'regexp' =>'/Waterfox\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Yandex Browser', 'id' => 'yabrowser', 'regexp' =>'/YaBrowser\/([0-9.]*)/u', 'details' => 2 ],
|
||||
|
||||
/* Mobile browsers */
|
||||
[ 'name' => '1Browser', 'id' => '1password', 'regexp' =>'/1Password\/([0-9.]*)/u' ],
|
||||
[ 'name' => '2345 Browser', 'id' => '2345', 'regexp' =>'/Mb2345Browser\/([0-9.]*)/u' ],
|
||||
[ 'name' => '3G Explorer', 'id' => '3g explorer', 'regexp' =>'/3G Explorer\/([0-9.]*)/u', 'details' => 3 ],
|
||||
[ 'name' => '4G Explorer', 'id' => '4g explorer', 'regexp' =>'/4G Explorer\/([0-9.]*)/u', 'details' => 3 ],
|
||||
[ 'name' => 'Atomic', 'id' => 'atomiclite', 'regexp' =>'/AtomicLite\/([0-9.]*)/u' ], // see: http://atomicwebbrowser.com
|
||||
[ 'name' => 'AU', 'id' => 'au', 'regexp' =>'/(?:^| )AU(?:.Browser)?\/([0-9.]+)/u' ],
|
||||
[ 'name' => 'Awakening', 'id' => 'awakening', 'regexp' =>'/Awakening Browser\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Baidu Browser', 'id' => 'baidu', 'regexp' =>'/M?BaiduBrowser\/([0-9.]*)/i' ],
|
||||
[ 'name' => 'Baidu Browser', 'id' => 'bdmobile', 'regexp' =>'/BdMobile\/([0-9.]*)/i' ],
|
||||
[ 'name' => 'Baidu Browser', 'id' => 'bidu', 'regexp' =>'/BIDUBrowser[ \/]([0-9.]*)/u' ],
|
||||
[ 'name' => 'Baidu Browser', 'id' => 'baidu', 'regexp' =>'/BaiduHD\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ],
|
||||
[ 'name' => 'Baidu Browser', 'id' => 'baiduboxapp', 'regexp' =>'/baiduboxapp\/([0-9.]*)/i' ],
|
||||
[ 'name' => 'Baidu Browser', 'id' => 'browser', 'regexp' =>'/ browser\/([0-9.]*) \(; P1/i' ],
|
||||
[ 'name' => 'Blazer', 'id' => 'blazer', 'regexp' =>'/Blazer\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'CM Browser', 'id' => 'acheetahi', 'regexp' =>'/ACHEETAHI\//u' ],
|
||||
[ 'name' => 'Cornowser', 'id' => 'cornowser', 'regexp' =>'/Cornowser\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Cool Market', 'id' => 'coolmarket', 'regexp' =>'/CoolMarket\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'CuteBrowser', 'id' => 'cute', 'regexp' =>'/CuteBrowser\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Digia @Web', 'id' => 'digia', 'regexp' =>'/Digia @Web\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Doris', 'id' => 'doris', 'regexp' =>'/Doris\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Dorothy', 'id' => 'doroty', 'regexp' =>'/Dorothy$/u' ],
|
||||
[ 'name' => 'EMOBILE Browser', 'id' => 'www browser', 'regexp' =>'/WWW Browser\/ver([0-9.]*)/u' ],
|
||||
[ 'name' => 'EUI Browser', 'id' => 'eui', 'regexp' =>'/EUI Browser\/[^0-9\s]*([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Go.Web', 'id' => 'go\.web', 'regexp' =>'/Go\.Web\/([0-9.]*)/u' ], // used on early Blackberry, by GoAmerica
|
||||
[ 'name' => 'Helium', 'id' => 'helium', 'regexp' =>'/HeliumMobileBrowser\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Huohou Browser', 'id' => 'huohoubrowser', 'regexp' =>'/HuohouBrowser\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'iCab', 'id' => 'icab', 'regexp' =>'/iCabMobile\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'iLunascape', 'id' => 'lunascape', 'regexp' =>'/iLunascape\/([0-9.]*)/u', 'details' => 3 ], // see: http://www.lunascape.tv
|
||||
[ 'name' => 'InternetSurfboard', 'id' => 'surfboard', 'regexp' =>'/InternetSurfboard\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'iSurf', 'id' => 'isurf', 'regexp' =>'/iSurf version \/v([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Jig Browser', 'id' => 'jig browser', 'regexp' =>'/jig browser(?: web| core|9i?)?;? ?([0-9.]+)?/u', 'type' => Constants\DeviceType::MOBILE ],
|
||||
[ 'name' => 'Jumanji', 'id' => 'jumanji', 'regexp' =>'/jumanji/u' ], // see: jumanji browser ubuntu
|
||||
[ 'name' => 'Kiosk', 'id' => 'kiosk', 'regexp' =>'/Kiosk\/([0-9.]*)/u' ], // see: http://www.kioskbrowser.net
|
||||
[ 'name' => 'LeBrowser', 'id' => 'lebrowser', 'regexp' =>'/LeBrowser\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'LieBaoFast', 'id' => 'liebao', 'regexp' =>'/LieBaoFast\/([0-9.]*)/u' ], // see: http://www.liebao.cn
|
||||
[ 'name' => 'MaCross Mobile', 'id' => 'macross', 'regexp' =>'/MaCross\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Mammoth', 'id' => 'mammoth', 'regexp' =>'/Mammoth\/([0-9.]*)/u' ], // see: https://itunes.apple.com/cn/app/meng-ma-liu-lan-qi/id403760998?mt=8
|
||||
[ 'name' => 'mCent Browser', 'id' => 'mcent', 'regexp' =>'/mCent\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Motorola Internet Browser', 'id' => 'mib', 'regexp' =>'/MIB\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Motorola Internet Browser', 'id' => 'mib', 'regexp' =>'/MIB([0-9.]+)\//u' ],
|
||||
[ 'name' => 'Motorola Internet Browser', 'id' => 'cmcs', 'regexp' =>'/Browser\/CMCS([0-9.]*)/u' ],
|
||||
[ 'name' => 'Motorola WebKit', 'id' => 'motorola', 'regexp' =>'/MotorolaWebKit(?:\/([0-9.]*))?/u', 'details' => 3 ],
|
||||
[ 'name' => 'NetFront Life Browser', 'id' => 'netfrontlife', 'regexp' =>'/NetFrontLifeBrowser\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'OneBrowser', 'id' => 'onebrowser', 'regexp' =>'/OneBrowser\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'PocketLink', 'id' => 'plink', 'regexp' =>'/PLink ([0-9.]+)/iu', 'details' => 2 ],
|
||||
[ 'name' => 'Polaris', 'id' => 'polaris', 'regexp' =>'/Polaris[\/ ]v?([0-9.]*)/iu', 'details' => 2 ],
|
||||
[ 'name' => 'Polaris', 'id' => 'polaris', 'regexp' =>'/POLARIS([0-9.]+)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Openwave', 'id' => 'openwave', 'regexp' =>'/Open[Ww]ave\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ],
|
||||
[ 'name' => 'Openwave', 'id' => 'openwave', 'regexp' =>'/Openwave Mobile Browser ([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ],
|
||||
[ 'name' => 'Openwave', 'id' => 'openwave', 'regexp' =>'/Browser\/OpenWave([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ],
|
||||
[ 'name' => 'Openwave', 'id' => 'up', 'regexp' =>'/UP\. ?Browser(?:\/([a-z0-9.]*))?/iu', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ],
|
||||
[ 'name' => 'Openwave', 'id' => 'km', 'regexp' =>'/KM\.Browser\/([0-9.]+)/iu', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ],
|
||||
[ 'name' => 'Openwave', 'id' => 'up', 'regexp' =>'/UP\/([0-9.]+)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ],
|
||||
[ 'name' => 'Quark Browser', 'id' => 'quark', 'regexp' =>'/Quark\/([0-9.]*)/u', 'details' => 3 ],
|
||||
[ 'name' => 'SEMC Browser', 'id' => 'semc', 'regexp' =>'/SEMC-Browser\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'STNC HitchHiker' , 'id' => 'stnc', 'regexp' =>'/STNC-WTL\/[0-9.]*/u' ],
|
||||
[ 'name' => 'Sogou Mobile', 'id' => 'sogou', 'regexp' =>'/SogouMobileBrowser\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Swing Browser', 'id' => 'swing', 'regexp' =>'/Swing\(And\)\/([0-9.]*)/u', 'details' => 3 ],
|
||||
[ 'name' => 'Symphony', 'id' => 'symphony', 'regexp' =>'/Symphony ([0-9.]+)$/u' ],
|
||||
[ 'name' => 'TinY', 'id' => 'ucpro', 'regexp' =>'/ucpro\/([0-9.]+)/iu' ],
|
||||
[ 'name' => 'WebLite', 'id' => 'weblite', 'regexp' =>'/WebLite\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ],
|
||||
|
||||
/* Television browsers */
|
||||
[ 'name' => 'AltiBrowser', 'id' => 'alti', 'regexp' =>'/AltiBrowser\/([0-9.]*)/i' ],
|
||||
[ 'name' => 'Aplix', 'id' => 'aplix', 'regexp' =>'/Aplix_SANYO_browser\/([0-9](?:.[0-9.]+)?)/u' ], // browser for the Sega Saturn
|
||||
[ 'name' => 'AwoX', 'id' => 'awox', 'regexp' =>'/AwoX(?:\/([0-9.]*))? Browser/i' ],
|
||||
[ 'name' => 'Isis', 'id' => 'browserserver', 'regexp' =>'/BrowserServer/u' ],
|
||||
[ 'name' => 'Isis', 'id' => 'isis', 'regexp' =>'/ISIS\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Spyglass', 'id' => 'spyglass', 'regexp' =>'/Spyglass ([0-9.]+); OpenTV/u' ],
|
||||
[ 'name' => 'Oregan Browser', 'id' => 'oregan', 'regexp' =>'/OreganMediaBrowser(?:\/([0-9.]*))?/u', 'details' => 2 ],
|
||||
[ 'name' => 'Viera Browser', 'id' => 'viera', 'regexp' =>'/Viera\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Zetakey', 'id' => 'zetakey', 'regexp' =>'/Zetakey Webkit\/([0-9.]*)/u', 'type' => Constants\DeviceType::TELEVISION ],
|
||||
[ 'name' => 'Zetakey', 'id' => 'zetakey', 'regexp' =>'/Zetakey\/([0-9.]*)/u', 'type' => Constants\DeviceType::TELEVISION ],
|
||||
|
||||
/* Gaming browsers */
|
||||
[ 'name' => 'Aplix', 'id' => 'aplix', 'regexp' =>'/Aplix_SEGASATURN_browser\/([0-9](?:.[0-9.]+)?)/u' ], // browser for the Sega Saturn
|
||||
[ 'name' => 'Bunjalloo', 'id' => 'bunjalloo', 'regexp' =>'/Bunjalloo\/([0-9.]*)/u' ], // browser for the Nintento DS
|
||||
[ 'name' => 'Nintendo Web Framework', 'id' => 'nwf', 'regexp' =>'/NWF\/([0-9.]*)/u', 'details' => 2 ], // browser for the Sega Dreamcast
|
||||
[ 'name' => 'Nuanti Meta', 'id' => 'nuanti', 'regexp' =>'/Nuanti(?:Meta)?\/([0-9.]*)/u' ], // browser for the Playstation
|
||||
|
||||
/* Other browsers */
|
||||
[ 'name' => 'Wear Internet Browser','id' => 'wib', 'regexp' =>'/WIB\/([0-9.]*)/u' ],
|
||||
|
||||
/* PDF renderers */
|
||||
[ 'name' => 'Prince', 'id' => 'prince', 'regexp' =>'/Prince\/([0-9.]*)/u' ],
|
||||
|
||||
/* Unsorted */
|
||||
[ 'name' => 'Demobrowser', 'id' => 'demobrowser', 'regexp' =>'/demobrowser\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Dooble', 'id' => 'dooble', 'regexp' =>'/Dooble(?:\/([0-9.]*))?/u' ], // see: http://dooble.sourceforge.net
|
||||
[ 'name' => 'DWB', 'id' => 'dwb', 'regexp' =>'/dwb(?:-hg)?(?:\/([0-9.]*))?/u' ],
|
||||
[ 'name' => 'EVM Browser', 'id' => 'evm', 'regexp' =>'/EVMBrowser\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'FireWeb', 'id' => 'fireweb', 'regexp' =>'/FireWeb\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Hive Explorer', 'id' => 'hive', 'regexp' =>'/HiveE/u' ],
|
||||
[ 'name' => 'Intermec Browser', 'id' => 'intermec', 'regexp' =>'/Intermec\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Phantom', 'id' => 'phantom', 'regexp' =>'/Phantom\/V([0-9.]*)/u' ],
|
||||
[ 'name' => 'QtCreator', 'id' => 'qt', 'regexp' =>'/QtCreator\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'QtQmlViewer', 'id' => 'qt', 'regexp' =>'/QtQmlViewer/u' ],
|
||||
[ 'name' => 'QtMiniBrowser', 'id' => 'qt', 'regexp' =>'/QtMiniBrowser\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'QtTestBrowser', 'id' => 'qt', 'regexp' =>'/QtTestBrowser\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Roccat', 'id' => 'roccat', 'regexp' =>'/Roccat\/([0-9]\.[0-9.]*)/u' ],
|
||||
[ 'name' => 'Raven for Mac', 'id' => 'raven', 'regexp' =>'/Raven for Mac\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'RockMelt', 'id' => 'rockmelt', 'regexp' =>'/RockMelt\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Scope', 'id' => 'scope', 'regexp' =>'/Scope\/([0-9.]*)/u', 'details' => 2 ], // see: http://www.programmer.co.jp/scope.shtml
|
||||
[ 'name' => 'SlimBoat', 'id' => 'slim', 'regexp' =>'/SlimBoat\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'SlimBrowser', 'id' => 'slim', 'regexp' =>'/SlimBrowser(?:\/([0-9.]*))?/u' ],
|
||||
[ 'name' => 'SMBrowser', 'id' => 'smbrowser', 'regexp' =>'/SMBrowser/u' ],
|
||||
[ 'name' => 'Snowshoe', 'id' => 'snowshoe', 'regexp' =>'/Snowshoe\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Sputnik', 'id' => 'sputnik', 'regexp' =>'/Sputnik\/([0-9.]*)/iu', 'details' => 3 ],
|
||||
[ 'name' => 'Surf', 'id' => 'surf', 'regexp' =>'/Surf\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'TaoBrowser', 'id' => 'tao', 'regexp' =>'/TaoBrowser\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'TaomeeBrowser', 'id' => 'tao', 'regexp' =>'/TaomeeBrowser\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'TazWeb', 'id' => 'taz', 'regexp' =>'/TazWeb/u' ],
|
||||
[ 'name' => 'Uzbl', 'id' => 'uzbl', 'regexp' =>'/^Uzbl/u' ],
|
||||
[ 'name' => 'Villanova', 'id' => 'villanova', 'regexp' =>'/Villanova\/([0-9.]*)/u', 'details' => 3 ],
|
||||
[ 'name' => 'Vimb', 'id' => 'vimb', 'regexp' =>'/vimb\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'WADA Browser', 'id' => 'wada', 'regexp' =>'/WadaBrowser\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Wavelink Velocity', 'id' => 'wavelink', 'regexp' =>'/Wavelink Velocity Browser\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'WebRender', 'id' => 'webrender', 'regexp' =>'/WebRender/u' ],
|
||||
[ 'name' => 'Webster', 'id' => 'webster', 'regexp' =>'/Webster ([0-9.]*)/u' ],
|
||||
[ 'name' => 'Wyzo', 'id' => 'wyzo', 'regexp' =>'/Wyzo\/([0-9.]*)/u', 'details' => 3 ],
|
||||
[ 'name' => 'Yelang', 'id' => 'yelang', 'regexp' =>'/Yelang\/([0-9.]*)/u', 'details' => 3 ], // see: wellgo.org
|
||||
[ 'name' => 'YRC Weblink', 'id' => 'yrcweb', 'regexp' =>'/YRCWeblink\/([0-9.]*)/u' ],
|
||||
[ 'name' => '冲浪浏览器', 'id' => 'surf', 'regexp' =>'/CMSurfClient-Android/u' ],
|
||||
],
|
||||
|
||||
Constants\BrowserType::BROWSER_TEXT => [
|
||||
[ 'name' => 'CERN LineMode', 'id' => 'linemode', 'regexp' =>'/CERN-LineMode\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Lynx', 'id' => 'lynx', 'regexp' =>'/Lynx\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Lynx', 'id' => 'lynx', 'regexp' =>'/Lynx \(textmode\)/u' ],
|
||||
[ 'name' => 'ELinks', 'id' => 'links', 'regexp' =>'/E[Ll]inks(?:\/| \()([0-9.]*[0-9])/u', 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Links', 'id' => 'links', 'regexp' =>'/Links \(([0-9.]*)/u' ],
|
||||
[ 'name' => 'w3m', 'id' => 'w3m', 'regexp' =>'/w3m\/([0-9.]*)/u' ],
|
||||
],
|
||||
|
||||
Constants\BrowserType::UNKNOWN => [
|
||||
[ 'name' => 'PhantomJS', 'id' => 'phantom', 'regexp' =>'/PhantomJS\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Nimbus', 'id' => 'nimbus', 'regexp' =>'/Nimbus\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'McAfee Web Gateway', 'id' => 'Webwasher', 'regexp' =>'/Webwasher\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Open Sankoré', 'id' => 'sankore', 'regexp' =>'/Open-Sankore\/([0-9.]*)/u', 'type' => Constants\DeviceType::WHITEBOARD ],
|
||||
[ 'name' => 'Adapi', 'id' => 'adapi', 'regexp' =>'/ ADAPI\/([0-9.]*)/u', 'hidden' => true, 'type' => Constants\DeviceType::SIGNAGE ],
|
||||
[ 'name' => 'BrightSign', 'id' => 'brightsign', 'regexp' =>'/BrightSign\/([0-9.]*)/u', 'type' => Constants\DeviceType::SIGNAGE ],
|
||||
[ 'name' => 'Coship MMCP', 'id' => 'coship', 'regexp' =>'/Coship_MMCP_([0-9.]*)/u', 'type' => Constants\DeviceType::SIGNAGE ],
|
||||
]
|
||||
];
|
||||
146
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-others.php
vendored
Normal file
146
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-others.php
vendored
Normal file
@@ -0,0 +1,146 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
|
||||
Applications::$OTHERS = [
|
||||
|
||||
Constants\BrowserType::APP_MEDIAPLAYER => [
|
||||
[ 'name' => 'iTunes', 'id' => 'itunes', 'regexp' =>'/iTunes\/(?:xaa.)?([0-9.]*)/u' ],
|
||||
[ 'name' => 'iTunes', 'id' => 'itunes', 'regexp' =>'/iTunes-AppleTV\//u' ],
|
||||
[ 'name' => 'QuickTime', 'id' => 'qt', 'regexp' =>'/\(qtver=([0-9.]*);/u' ],
|
||||
[ 'name' => 'Bluefish', 'id' => 'bluefish', 'regexp' =>'/bluefish ([0-9.]*)/u' ],
|
||||
[ 'name' => 'Nightingale', 'id' => 'nightingale', 'regexp' =>'/Nightingale\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Songbird', 'id' => 'songbird', 'regexp' =>'/Songbird\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Stagefright', 'id' => 'stagefright', 'regexp' =>'/stagefright\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'SubStream', 'id' => 'substream', 'regexp' =>'/SubStream\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ],
|
||||
[ 'name' => 'VLC', 'id' => 'vlc', 'regexp' =>'/VLC media player - version ([0-9.]*)/u' ],
|
||||
[ 'name' => 'VLC', 'id' => 'vlc', 'regexp' =>'/VLC\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Windows Media Player', 'id' => 'windows-media', 'regexp' =>'/Windows-Media-Player\/([0-9.]*)/u', 'details' => 1 ],
|
||||
[ 'name' => 'CorePlayer', 'id' => 'coreplayer', 'regexp' =>'/CorePlayer\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'FlyCast', 'id' => 'flycast', 'regexp' =>'/FlyCast\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Boxee', 'id' => 'boxee', 'regexp' => '/Boxee(?:\/([0-9.]*))?/u', 'type' => Constants\DeviceType::TELEVISION ],
|
||||
[ 'name' => 'Kodi', 'id' => 'kodi', 'regexp' => '/^Kodi\/([0-9.]+)/u', 'details' => 2 ],
|
||||
[ 'name' => 'XBMC', 'id' => 'xbmc', 'regexp' => '/^XBMC\/(?:PRE-)?([0-9.]+)/u', 'details' => 2 ],
|
||||
],
|
||||
|
||||
Constants\BrowserType::APP_EMAIL => [
|
||||
[ 'name' => 'Lightning', 'id' => 'lightning', 'regexp' =>'/Lightning\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Thunderbird', 'id' => 'thunderbird', 'regexp' =>'/Thunderbird[\/ ]([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Microsoft Outlook', 'id' => 'outlook', 'regexp' =>'/Microsoft Outlook IMO, Build ([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Microsoft Outlook', 'id' => 'outlook', 'regexp' =>'/Microsoft Outlook ([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Microsoft Outlook Express', 'id' => 'outlook', 'regexp' =>'/Outlook-Express\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Lotus Notes', 'id' => 'lotus', 'regexp' =>'/Lotus-Notes\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Postbox', 'id' => 'postbox', 'regexp' =>'/Postbox[\/ ]([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'The Bat!', 'id' => 'bat', 'regexp' =>'/The Bat! ([0-9.]*)/u', 'details' => 3 ],
|
||||
[ 'name' => 'Yahoo Mail', 'id' => 'yahoo', 'regexp' =>'/YahooMobile\/1.0 \(mail; ([0-9.]+)\)/u', 'details' => 3 ],
|
||||
],
|
||||
|
||||
Constants\BrowserType::APP_NEWS => [
|
||||
[ 'name' => 'Daum', 'id' => 'daum', 'regexp' =>'/DaumApps\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Daum', 'id' => 'daum', 'regexp' =>'/daumcafe\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Flipboard', 'id' => 'flipboard', 'regexp' =>'/Flipboard\/([0-9.]+)/u' ],
|
||||
],
|
||||
|
||||
Constants\BrowserType::APP_FEEDREADER => [
|
||||
[ 'name' => 'Akregator', 'id' => 'akregator', 'regexp' =>'/Akregator\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Blogos', 'id' => 'blogos', 'regexp' =>'/Blogos\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ],
|
||||
[ 'name' => 'Cococ', 'id' => 'cococ', 'regexp' =>'/cococ\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'FeedDemon', 'id' => 'feed', 'regexp' =>'/FeedDemon\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Feeddler', 'id' => 'feed', 'regexp' =>'/FeeddlerRSS[ \/]([0-9.]*)/u' ],
|
||||
[ 'name' => 'Feeddler Pro', 'id' => 'feed', 'regexp' =>'/FeeddlerPro\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Liferea', 'id' => 'liferea', 'regexp' =>'/Liferea\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'NewsBlur', 'id' => 'news', 'regexp' =>'/NewsBlur\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ],
|
||||
[ 'name' => 'Newsbeuter', 'id' => 'news', 'regexp' =>'/newsbeuter\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'JetBrains Omea Reader','id' => 'jetbrains', 'regexp' =>'/JetBrains Omea Reader ([0-9.]*)/u' ],
|
||||
[ 'name' => 'RSS Bandit', 'id' => 'rss', 'regexp' =>'/RssBandit\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'RSS Junkie', 'id' => 'rss', 'regexp' =>'/RSS Junkie Daemon/u' ],
|
||||
[ 'name' => 'RSS Owl', 'id' => 'rss', 'regexp' =>'/RSSOwl\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Reeder', 'id' => 'reeder', 'regexp' =>'/Reeder\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'ReedKit', 'id' => 'reedkit', 'regexp' =>'/ReedKit\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'Rome', 'id' => 'rome', 'regexp' =>'/Rome Client/u' ],
|
||||
[ 'name' => 'jsRSS++', 'id' => 'rss', 'regexp' =>'/jsRSS++\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Windows RSS Platorm', 'id' => 'rss', 'regexp' =>'/Windows-RSS-Platform\/([0-9.]*)/u' ],
|
||||
],
|
||||
|
||||
Constants\BrowserType::APP_PODCAST => [
|
||||
[ 'name' => 'Ziepod', 'id' => 'ziepod', 'regexp' =>'/Ziepod\+? ([0-9.]*)/u' ],
|
||||
],
|
||||
|
||||
Constants\BrowserType::APP_CHAT => [
|
||||
[ 'name' => 'Facebook Messenger', 'id' => 'messenger', 'regexp' =>'/FBAN\/MessengerForiOS/u' ],
|
||||
[ 'name' => 'Facebook Messenger', 'id' => 'messenger', 'regexp' =>'/FB_IAB\/MESSENGER/u' ],
|
||||
[ 'name' => 'Kik', 'id' => 'kik', 'regexp' =>'/Kik\/([0-9.]*?)(\.0)?\.[0-9]{3,4}/u' ],
|
||||
[ 'name' => 'WeChat', 'id' => 'messenger', 'regexp' =>'/MicroMessenger\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Wire', 'id' => 'wire', 'regexp' =>'/Wire\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yahoo Messenger', 'id' => 'yahoo', 'regexp' =>'/YahooMobile\/1.0 \(im; ([0-9.]+)\)/u', 'details' => 3 ],
|
||||
[ 'name' => 'Yammer', 'id' => 'yammer', 'regexp' =>'/Yammer\/([0-9.]*)/u', 'details' => 2 ],
|
||||
],
|
||||
|
||||
Constants\BrowserType::APP_SOCIAL => [
|
||||
[ 'name' => 'Facebook', 'id' => 'fbios', 'regexp' =>'/FBAN\/FBIOS/u' ],
|
||||
[ 'name' => 'Facebook', 'id' => 'fb4a', 'regexp' =>'/FBAN\/FB4A/u' ],
|
||||
[ 'name' => 'Facebook', 'id' => 'fb4a', 'regexp' =>'/FB_IAB\/FB4A/u' ],
|
||||
[ 'name' => 'Google+', 'id' => 'googleplus', 'regexp' =>'/com.google.GooglePlus/u' ],
|
||||
[ 'name' => 'Instagram', 'id' => 'instagram', 'regexp' =>'/Instagram ([0-9.]+)/u' ],
|
||||
[ 'name' => 'Pinterest', 'id' => 'pinterest', 'regexp' =>'/\[Pinterest\/(Android|iOS)\]/u' ],
|
||||
[ 'name' => 'Pinterest', 'id' => 'pinterest', 'regexp' =>'/Pinterest\/[0-9.]+/u' ],
|
||||
[ 'name' => 'Sina Weibo', 'id' => 'weibo', 'regexp' =>'/weibo__([0-9.]*)/u' ],
|
||||
[ 'name' => 'Tumblr', 'id' => 'tumblr', 'regexp' =>'/Tumblr\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Twitter', 'id' => 'twitter', 'regexp' =>'/TwitterAndroid/u' ],
|
||||
[ 'name' => 'Twitter', 'id' => 'twitter', 'regexp' =>'/Twitter for iPhone/u' ],
|
||||
[ 'name' => 'WordPress', 'id' => 'wp-android', 'regexp' =>'/wp-android\/([0-9.]*)/u' ],
|
||||
],
|
||||
|
||||
Constants\BrowserType::APP_OFFICE => [
|
||||
[ 'name' => 'LibreOffice', 'id' => 'office', 'regexp' =>'/LibreOffice/u' ],
|
||||
[ 'name' => 'Microsoft Office', 'id' => 'office', 'regexp' =>'/MSOffice ([0-9.]*)/u' ],
|
||||
[ 'name' => 'Microsoft Office', 'id' => 'office', 'regexp' =>'/Microsoft Office Mobile ?\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Microsoft Excel', 'id' => 'office', 'regexp' =>'/Microsoft Office Excel ([0-9.]*)/u' ],
|
||||
[ 'name' => 'Microsoft OneNote', 'id' => 'office', 'regexp' =>'/Microsoft Office OneNote ([0-9.]*)/u' ],
|
||||
[ 'name' => 'Microsoft PowerPoint', 'id' => 'office', 'regexp' =>'/Microsoft Office PowerPoint ([0-9.]*)/u' ],
|
||||
[ 'name' => 'Microsoft Word', 'id' => 'office', 'regexp' =>'/Microsoft Office Word ([0-9.]*)/u' ],
|
||||
[ 'name' => 'OpenOffice', 'id' => 'office', 'regexp' =>'/OpenOffice\/([0-9.]*)/u' ],
|
||||
],
|
||||
|
||||
Constants\BrowserType::APP_SEARCH => [
|
||||
[ 'name' => 'Bing Search', 'id' => 'bingweb', 'regexp' =>'/BingWeb\/([0-9.]*)/u', 'details' => 3 ],
|
||||
[ 'name' => 'Baidu Hao123', 'id' => 'hao123', 'regexp' =>'/hao123\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Google Search', 'id' => 'gsa', 'regexp' =>'/GSA\/([0-9.]*)/u', 'details' => 3 ],
|
||||
[ 'name' => 'NAVER', 'id' => 'naver', 'regexp' =>'/NAVER\(inapp; search; [0-9]+; ([0-9.]*)\)/u' ],
|
||||
[ 'name' => 'Sogou Search', 'id' => 'sogousearch', 'regexp' =>'/SogouSearch Android(?:[0-9.]*) version([0-9.]*)/u' ],
|
||||
[ 'name' => 'Yandex Search', 'id' => 'yandex', 'regexp' =>'/YandexSearch\/([0-9.]*)/u' ],
|
||||
],
|
||||
|
||||
Constants\BrowserType::APP_EDITOR => [
|
||||
[ 'name' => 'Atom', 'id' => 'atom', 'regexp' =>'/Atom\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Adobe GoLive', 'id' => 'golive', 'regexp' =>'/GoLive ([0-9.]*)/u' ],
|
||||
[ 'name' => 'Brackets', 'id' => 'brackets', 'regexp' =>'/Brackets\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'iWeb', 'id' => 'iweb', 'regexp' =>'/(?:^| )iWeb\/([0-9])/u' ],
|
||||
[ 'name' => 'Microsoft FrontPage', 'id' => 'frontpage', 'regexp' =>'/MS ?FrontPage[ \/]([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ],
|
||||
[ 'name' => 'W3C Amaya', 'id' => 'amaya', 'regexp' =>'/amaya\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'IBM WebSphere Homepage Builder', 'id' => 'websphere', 'regexp' =>'/IBM WebSphere Homepage Builder V([0-9.]*)/u' ],
|
||||
],
|
||||
|
||||
Constants\BrowserType::APP_DOWNLOAD => [
|
||||
[ 'name' => 'Download Manager', 'id' => 'download', 'regexp' =>'/AndroidDownloadManager\//u' ],
|
||||
[ 'name' => 'Tanso Download Manager', 'id' => 'tansodl', 'regexp' =>'/TansoDL/u' ],
|
||||
],
|
||||
|
||||
Constants\BrowserType::APP_GAME => [
|
||||
[ 'name' => 'EA Origin', 'id' => 'origin', 'regexp' =>'/Origin\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'SecondLife', 'id' => 'secondlife', 'regexp' =>'/SecondLife\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Valve Steam', 'id' => 'valve', 'regexp' =>'/Valve Steam/u' ],
|
||||
[ 'name' => 'Raptr', 'id' => 'raptr', 'regexp' =>'/Raptr/u' ],
|
||||
],
|
||||
|
||||
Constants\BrowserType::APP => [
|
||||
[ 'name' => 'AliPay', 'id' => 'alipay', 'regexp' =>'/AlipayClient\/([0-9.]*)/u', 'details' => 3 ],
|
||||
[ 'name' => 'Cooliris', 'id' => 'cooliris', 'regexp' =>'/Cooliris\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Google Earth', 'id' => 'google', 'regexp' =>'/Google Earth\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Google Desktop', 'id' => 'google', 'regexp' =>'/Google Desktop\/([0-9.]*)/u', 'details' => 2 ],
|
||||
[ 'name' => 'Leechcraft', 'id' => 'leechcraft', 'regexp' =>'/Leechcraft(?:\/([0-9.]*))?/u', 'details' => 2 ],
|
||||
[ 'name' => 'Lotus Expeditor', 'id' => 'expeditor', 'regexp' =>'/Gecko Expeditor ([0-9.]*)/u', 'details' => 3 ],
|
||||
]
|
||||
];
|
||||
127
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/browsers-chrome.php
vendored
Normal file
127
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/browsers-chrome.php
vendored
Normal file
@@ -0,0 +1,127 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
Chrome::$DESKTOP = [
|
||||
'0.2.149' => 'beta',
|
||||
'0.3.154' => 'beta',
|
||||
'0.4.154' => 'beta',
|
||||
'1.0.154' => 'stable',
|
||||
'2.0.172' => 'stable',
|
||||
'3.0.195' => 'stable',
|
||||
'4.0.249' => 'stable',
|
||||
'4.1.249' => 'stable',
|
||||
'5.0.375' => 'stable',
|
||||
'6.0.472' => 'stable',
|
||||
'7.0.517' => 'stable',
|
||||
'8.0.552' => 'stable',
|
||||
'9.0.597' => 'stable',
|
||||
'10.0.648' => 'stable',
|
||||
'11.0.696' => 'stable',
|
||||
'12.0.742' => 'stable',
|
||||
'13.0.782' => 'stable',
|
||||
'14.0.835' => 'stable',
|
||||
'15.0.874' => 'stable',
|
||||
'16.0.912' => 'stable',
|
||||
'17.0.963' => 'stable',
|
||||
'18.0.1025' => 'stable',
|
||||
'19.0.1084' => 'stable',
|
||||
'20.0.1132' => 'stable',
|
||||
'21.0.1180' => 'stable',
|
||||
'22.0.1229' => 'stable',
|
||||
'23.0.1271' => 'stable',
|
||||
'24.0.1312' => 'stable',
|
||||
'25.0.1364' => 'stable',
|
||||
'26.0.1410' => 'stable',
|
||||
'27.0.1453' => 'stable',
|
||||
'28.0.1500' => 'stable',
|
||||
'29.0.1547' => 'stable',
|
||||
'30.0.1599' => 'stable',
|
||||
'31.0.1650' => 'stable',
|
||||
'32.0.1700' => 'stable',
|
||||
'33.0.1750' => 'stable',
|
||||
'34.0.1847' => 'stable',
|
||||
'35.0.1916' => 'stable',
|
||||
'36.0.1985' => 'stable',
|
||||
'37.0.2062' => 'stable',
|
||||
'38.0.2125' => 'stable',
|
||||
'39.0.2171' => 'stable',
|
||||
'40.0.2214' => 'stable',
|
||||
'41.0.2272' => 'stable',
|
||||
'42.0.2311' => 'stable',
|
||||
'43.0.2357' => 'stable',
|
||||
'44.0.2403' => 'stable',
|
||||
'45.0.2454' => 'stable',
|
||||
'46.0.2490' => 'stable',
|
||||
'47.0.2526' => 'stable',
|
||||
'48.0.2564' => 'stable',
|
||||
'49.0.2623' => 'stable',
|
||||
'50.0.2661' => 'stable',
|
||||
'51.0.2704' => 'stable',
|
||||
'52.0.2743' => 'stable',
|
||||
'53.0.2785' => 'stable',
|
||||
'54.0.2840' => 'stable',
|
||||
'55.0.2883' => 'stable',
|
||||
'56.0.2924' => 'stable',
|
||||
'57.0.2987' => 'stable',
|
||||
'58.0.3029' => 'stable',
|
||||
'59.0.3071' => 'stable',
|
||||
'60.0.3112' => 'stable',
|
||||
'61.0.3163' => 'stable',
|
||||
'62.0.3202' => 'stable',
|
||||
'63.0.3239' => 'stable',
|
||||
'64.0.3282' => 'stable',
|
||||
'65.0.3325' => 'stable',
|
||||
'66.0.3359' => 'stable',
|
||||
'67.0.3396' => 'stable',
|
||||
'68.0.3440' => 'stable',
|
||||
'69.0.3497' => 'stable',
|
||||
];
|
||||
|
||||
Chrome::$MOBILE = [
|
||||
'16.0.912' => 'beta',
|
||||
'18.0.1025' => 'stable',
|
||||
'25.0.1364' => 'stable',
|
||||
'27.0.1453' => 'stable',
|
||||
'29.0.1547' => 'stable',
|
||||
'30.0.1599' => 'stable',
|
||||
'31.0.1650' => 'stable',
|
||||
'32.0.1700' => 'stable',
|
||||
'33.0.1750' => 'stable',
|
||||
'34.0.1847' => 'stable',
|
||||
'35.0.1916' => 'stable',
|
||||
'36.0.1985' => 'stable',
|
||||
'37.0.2062' => 'stable',
|
||||
'38.0.2125' => 'stable',
|
||||
'39.0.2171' => 'stable',
|
||||
'40.0.2214' => 'stable',
|
||||
'41.0.2272' => 'stable',
|
||||
'42.0.2311' => 'stable',
|
||||
'43.0.2357' => 'stable',
|
||||
'44.0.2403' => 'stable',
|
||||
'45.0.2454' => 'stable',
|
||||
'46.0.2490' => 'stable',
|
||||
'47.0.2526' => 'stable',
|
||||
'48.0.2564' => 'stable',
|
||||
'49.0.2623' => 'stable',
|
||||
'50.0.2661' => 'stable',
|
||||
'51.0.2704' => 'stable',
|
||||
'52.0.2743' => 'stable',
|
||||
'53.0.2785' => 'stable',
|
||||
'54.0.2840' => 'stable',
|
||||
'55.0.2883' => 'stable',
|
||||
'56.0.2924' => 'stable',
|
||||
'57.0.2987' => 'stable',
|
||||
'58.0.3029' => 'stable',
|
||||
'59.0.3071' => 'stable',
|
||||
'60.0.3112' => 'stable',
|
||||
'61.0.3163' => 'stable',
|
||||
'62.0.3202' => 'stable',
|
||||
'63.0.3239' => 'stable',
|
||||
'64.0.3282' => 'stable',
|
||||
'65.0.3325' => 'stable',
|
||||
'66.0.3359' => 'stable',
|
||||
'67.0.3396' => 'stable',
|
||||
'68.0.3440' => 'stable',
|
||||
'69.0.3497' => 'stable',
|
||||
];
|
||||
244
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/build-android.php
vendored
Normal file
244
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/build-android.php
vendored
Normal file
@@ -0,0 +1,244 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
BuildIds::$ANDROID_BUILDS = [
|
||||
'CUPCAKE' => '1.5',
|
||||
'DONUT' => '1.6',
|
||||
'ECLAIR' => '2.0',
|
||||
'FROYO' => '2.2',
|
||||
'GINGERBREAD' => '2.3',
|
||||
|
||||
'DRC83' => '1.6',
|
||||
'DRC92' => '1.6',
|
||||
'DRD08' => '1.6',
|
||||
'DRD20' => '1.6',
|
||||
'DMD64' => '1.6',
|
||||
'ESD20' => '2.0',
|
||||
'ESD56' => '2.0.1',
|
||||
'ERD79' => '2.1',
|
||||
'ERE27' => '2.1',
|
||||
'EPE54B' => '2.1',
|
||||
'ESE81' => '2.1',
|
||||
'EPF21B' => '2.1',
|
||||
'FRF85B' => '2.2',
|
||||
'FRF91' => '2.2',
|
||||
'FRG01B' => '2.2',
|
||||
'FRG22D' => '2.2',
|
||||
'FRG83' => '2.2.1',
|
||||
'FRG83D' => '2.2.1',
|
||||
'FRG83G' => '2.2.2',
|
||||
'FRK76' => '2.2.3',
|
||||
'FRK76C' => '2.2.3',
|
||||
'GRH55' => '2.3',
|
||||
'GRH78' => '2.3.1',
|
||||
'GRH78C' => '2.3.2',
|
||||
'GRI40' => '2.3.3',
|
||||
'GRI54' => '2.3.3',
|
||||
'GRJ06D' => '2.3.4',
|
||||
'GRJ22' => '2.3.4',
|
||||
'GRJ90' => '2.3.5',
|
||||
'GRK39C' => '2.3.6',
|
||||
'GRK39F' => '2.3.6',
|
||||
'GWK74' => '2.3.7',
|
||||
|
||||
'HRI39' => '3.0',
|
||||
'HRI66' => '3.0',
|
||||
'HWI69' => '3.0',
|
||||
'HRI83' => '3.0',
|
||||
'HMJ37' => '3.1',
|
||||
'HTJ85B' => '3.2',
|
||||
'HTK55D' => '3.2.1',
|
||||
'HTK75' => '3.2.1',
|
||||
'HTK75D' => '3.2.1',
|
||||
'HLK75C' => '3.2.2',
|
||||
'HLK75D' => '3.2.2',
|
||||
'HLK75F' => '3.2.4',
|
||||
'HLK75H' => '3.2.6',
|
||||
|
||||
'ITL41D' => '4.0.1',
|
||||
'ITL41E' => '4.0.1',
|
||||
'ITL41F' => '4.0.1',
|
||||
'ICL53F' => '4.0.2',
|
||||
'IML74K' => '4.0.3',
|
||||
'IML77' => '4.0.3',
|
||||
'IMM76' => '4.0.4',
|
||||
'IMM76D' => '4.0.4',
|
||||
'IMM76I' => '4.0.4',
|
||||
'IMM76K' => '4.0.4',
|
||||
'IMM76L' => '4.0.4',
|
||||
'JRO03C' => '4.1.1',
|
||||
'JRO03D' => '4.1.1',
|
||||
'JRO03E' => '4.1.1',
|
||||
'JRO03H' => '4.1.1',
|
||||
'JRO03L' => '4.1.1',
|
||||
'JRO03O' => '4.1.1',
|
||||
'JRO03R' => '4.1.1',
|
||||
'JRO03S' => '4.1.1',
|
||||
'JZO54K' => '4.1.2',
|
||||
'JZO54M' => '4.1.2',
|
||||
'JVP15S' => '4.2', // Interim build used by the Nexus 7
|
||||
'JOP40C' => '4.2',
|
||||
'JOP40D' => '4.2.1',
|
||||
'JOP40F' => '4.2.1',
|
||||
'JOP40G' => '4.2.1',
|
||||
'JDQ39' => '4.2.2',
|
||||
'JDQ39B' => '4.2.2',
|
||||
'JDQ39E' => '4.2.2',
|
||||
'JWR66L' => '4.3',
|
||||
'JWR66N' => '4.3',
|
||||
'JWR66N.S005' => '4.3', // Google Play Edition - Samsung Galaxy S4
|
||||
'JWR66V' => '4.3',
|
||||
'JWR66V.H10' => '4.3', // Google Play Edition - HTC One
|
||||
'JWR66V.S014' => '4.3', // Google Play Edition - Samsung Galaxy S4
|
||||
'JWR66Y' => '4.3',
|
||||
'JWR66Y.S003' => '4.3', // Google Play Edition - Samsung Galaxy S4
|
||||
'JSR78D' => '4.3',
|
||||
'JSS15J' => '4.3',
|
||||
'JSS15Q' => '4.3',
|
||||
'KRT16S' => '4.4',
|
||||
'KRT16M' => '4.4',
|
||||
'KOT49E' => '4.4.1',
|
||||
'KOT49H' => '4.4.2',
|
||||
'KVT49L' => '4.4.2',
|
||||
'KTU84L' => '4.4.3',
|
||||
'KTU84M' => '4.4.3',
|
||||
'KTU84P' => '4.4.4',
|
||||
|
||||
'LPV79' => ['value' => '5.0', 'alias' => 'L'],
|
||||
'LPV81C' => ['value' => '5.0', 'alias' => 'L'],
|
||||
'LPX13D' => ['value' => '5.0', 'alias' => 'L'],
|
||||
|
||||
'LRX21L' => '5.0',
|
||||
'LRX21M' => '5.0',
|
||||
'LRX21O' => '5.0',
|
||||
'LRX21P' => '5.0',
|
||||
'LRX21Q' => '5.0',
|
||||
'LRX21R' => '5.0',
|
||||
'LRX21T' => '5.0',
|
||||
'LRX21V' => '5.0',
|
||||
'LRX22C' => '5.0.1',
|
||||
'LRX22G' => '5.0.2',
|
||||
'LRX22L' => '5.0.2',
|
||||
'LGZ23.S3' => '5.0.2', // Sony Bravia Android TV
|
||||
'LGZ23.S15' => '5.0.2', // Sony Bravia Android TV
|
||||
'LGZ23.S37' => '5.0.2', // Sony Bravia Android TV
|
||||
'LGZ23.S49' => '5.0.2', // Sony Bravia Android TV
|
||||
'LGZ23.S55' => '5.0.2', // Sony Bravia Android TV
|
||||
'LGZ23.S59' => '5.0.2', // Sony Bravia Android TV
|
||||
'LGZ23.S61' => '5.0.2', // Sony Bravia Android TV
|
||||
'LGZ23.S73' => '5.0.2', // Sony Bravia Android TV
|
||||
'LGY70.S1' => '5.0.2', // Sony Bravia Android TV
|
||||
'LGY75.S91' => '5.0.2', // Sony Bravia Android TV
|
||||
'LGY75.S105' => '5.0.2', // Sony Bravia Android TV
|
||||
'LGY75.S109' => '5.0.2', // Sony Bravia Android TV
|
||||
'LGY75.S131' => '5.0.2', // Sony Bravia Android TV
|
||||
'LGY75.S143' => '5.0.2', // Sony Bravia Android TV
|
||||
'LGY75.S147' => '5.0.2', // Sony Bravia Android TV
|
||||
'LMY47D' => '5.1',
|
||||
'LMY47E' => '5.1',
|
||||
'LMY47I' => '5.1',
|
||||
'LMY47M' => '5.1',
|
||||
'LMY47O' => '5.1',
|
||||
'LMY47V' => '5.1.1',
|
||||
'LMY47X' => '5.1.1',
|
||||
'LMY47Z' => '5.1.1',
|
||||
'LMY48B' => '5.1.1',
|
||||
'LMY48E.S1' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48E.S39' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48E.S63' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48E.S81' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48E.S89' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48E.S91' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48E.S117' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48E.S127' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48E.S143' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48E.S153' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48E.S155' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48E.S167' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48E.S185' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48E.S191' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48E.S195' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48E.S197' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48E.S223' => '5.1.1', // Sony Bravia Android TV
|
||||
'LMY48B' => '5.1.1',
|
||||
'LMY48G' => '5.1.1',
|
||||
'LMY48I' => '5.1.1',
|
||||
'LMY48J' => '5.1.1',
|
||||
'LMY48M' => '5.1.1',
|
||||
'LMY48N' => '5.1.1',
|
||||
'LMY48P' => '5.1.1',
|
||||
'LMY48T' => '5.1.1',
|
||||
'LMY48U' => '5.1.1',
|
||||
'LMY48W' => '5.1.1',
|
||||
'LMY48X' => '5.1.1',
|
||||
'LMY48Y' => '5.1.1',
|
||||
'LMY48Z' => '5.1.1',
|
||||
'LMY49F' => '5.1.1',
|
||||
'LMY49G' => '5.1.1',
|
||||
'LMY49H' => '5.1.1',
|
||||
'LMY49I' => '5.1.1',
|
||||
'LMY49J' => '5.1.1',
|
||||
'LVY48C' => '5.1.1',
|
||||
'LVY48E' => '5.1.1',
|
||||
'LVY48F' => '5.1.1',
|
||||
'LVY48H' => '5.1.1',
|
||||
'LYZ28E' => '5.1.1',
|
||||
'LYZ28J' => '5.1.1',
|
||||
'LYZ28K' => '5.1.1',
|
||||
'LYZ28M' => '5.1.1',
|
||||
'LYZ28N' => '5.1.1',
|
||||
|
||||
'MPZ44Q' => ['value' => '6.0', 'alias' => 'M'],
|
||||
'MPZ79M' => ['value' => '6.0', 'alias' => 'M'],
|
||||
|
||||
'MRA58K' => '6.0',
|
||||
'MRA58N' => '6.0',
|
||||
'MRA58U' => '6.0',
|
||||
'MRA58V' => '6.0',
|
||||
'MRA58X' => '6.0',
|
||||
'MRA59B' => '6.0',
|
||||
'MDA89D' => '6.0',
|
||||
'MDA89E' => '6.0',
|
||||
'MDB08I' => '6.0',
|
||||
'MDB08K' => '6.0',
|
||||
'MDB08L' => '6.0',
|
||||
'MDB08M' => '6.0',
|
||||
'MMB29N' => '6.0',
|
||||
'MMB29K' => '6.0.1',
|
||||
'MMB29M' => '6.0.1',
|
||||
'MMB29O' => '6.0.1',
|
||||
'MMB29P' => '6.0.1',
|
||||
'MMB29S' => '6.0.1',
|
||||
'MMB29T' => '6.0.1',
|
||||
'MMB29Q' => '6.0.1',
|
||||
'MMB29R' => '6.0.1',
|
||||
'MMB29U' => '6.0.1',
|
||||
'MMB29V' => '6.0.1',
|
||||
'MMB29X' => '6.0.1',
|
||||
'MHC19I' => '6.0.1',
|
||||
'MHC19J' => '6.0.1',
|
||||
'MHC19Q' => '6.0.1',
|
||||
'MOB30D' => '6.0.1',
|
||||
'MOB30G' => '6.0.1',
|
||||
'MOB30H' => '6.0.1',
|
||||
'MOB30I' => '6.0.1',
|
||||
'MOB30J' => '6.0.1',
|
||||
'MTC19T' => '6.0.1',
|
||||
'MXB48J' => '6.0.1',
|
||||
'MXB48K' => '6.0.1',
|
||||
'MXB48T' => '6.0.1',
|
||||
'MXC14G' => '6.0.1',
|
||||
'MXC89F' => '6.0.1',
|
||||
'M5C14J' => '6.0.1',
|
||||
|
||||
'NPC56P' => ['value' => '7.0', 'alias' => 'N'],
|
||||
'NPC56W' => ['value' => '7.0', 'alias' => 'N'],
|
||||
'NPC56X' => ['value' => '7.0', 'alias' => 'N'],
|
||||
'NPC91K' => ['value' => '7.0', 'alias' => 'N'],
|
||||
'NPD35K' => ['value' => '7.0', 'alias' => 'N'],
|
||||
'NRD21D' => ['value' => '7.0', 'alias' => 'N'],
|
||||
'NRD28C' => ['value' => '7.0', 'alias' => 'N'],
|
||||
];
|
||||
|
||||
// Source: http://source.android.com/source/build-numbers.html
|
||||
323
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/id-android.php
vendored
Normal file
323
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/id-android.php
vendored
Normal file
@@ -0,0 +1,323 @@
|
||||
<?php
|
||||
|
||||
/* This file is automatically generated, do not edit manually! */
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
BrowserIds::$ANDROID_BROWSERS = [
|
||||
'com.agilebits.onepassword' => '1Password',
|
||||
'com.browser2345' => '2345 Browser',
|
||||
'com.browser2345_ucc' => '2345 Browser',
|
||||
'com.browser2345hd' => '2345 Browser HD',
|
||||
'air.stage.web.view' => 'Adobe AIR',
|
||||
'air.stagewebview' => 'Adobe AIR',
|
||||
'air.StageWebViewBridgeTest.debug' => 'Adobe AIR',
|
||||
'air.StageWebViewVideo.debug' => 'Adobe AIR',
|
||||
'com.adobe.phonegap.app' => 'Adobe Phonegap',
|
||||
'com.adobe.reader' => 'Adobe Reader',
|
||||
'com.adobe.shadow.android' => 'Adobe Shadow',
|
||||
'com.airwatch.browser' => 'AirWatch Browser',
|
||||
'com.aliyun.mobile.browser' => 'Aliyun Browser',
|
||||
'net.adgjm.angel' => 'Angel Browser',
|
||||
'com.apc.browser' => 'APC',
|
||||
'com.apc.browser.standard' => 'APC',
|
||||
'com.apc.browser.standard6j8s' => 'APC',
|
||||
'com.apusapps.browser' => 'APUS Browser',
|
||||
'com.apusapps.browser.lark' => 'APUS Browser',
|
||||
'com.apusapps.browser.turbo' => 'APUS Browser',
|
||||
'com.asus.browser' => 'Asus Browser',
|
||||
'com.wAuroraWebBrowser' => 'Aurora Web Browser',
|
||||
'bdmobile.android.app' => 'Baidu Browser',
|
||||
'com.baidu.blink.testapp' => 'Baidu Browser',
|
||||
'com.baidu.blink.v38' => 'Baidu Browser',
|
||||
'com.baidu.browser.apps' => 'Baidu Browser',
|
||||
'com.baidu.browser.apps.lite' => 'Baidu Browser',
|
||||
'com.baidu.browser.apps_mr' => 'Baidu Browser',
|
||||
'com.baidu.browser.apps_neo' => 'Baidu Browser',
|
||||
'com.baidu.browser.apps_sj' => 'Baidu Browser',
|
||||
'com.baidu.browser.apps_yt' => 'Baidu Browser',
|
||||
'com.baidu.browser.app_bw' => 'Baidu Browser',
|
||||
'com.baidu.browser.blink.apps' => 'Baidu Browser',
|
||||
'com.baidu.browser.brower' => 'Baidu Browser',
|
||||
'com.baidu.browser.chrome' => 'Baidu Browser',
|
||||
'com.baidu.browser.inter' => 'Baidu Browser',
|
||||
'com.baidu.browser.inter.mini' => 'Baidu Browser',
|
||||
'com.baidu.browser.interyb' => 'Baidu Browser',
|
||||
'com.baidu.browser.lab' => 'Baidu Browser',
|
||||
'com.baidu.browser.pad' => 'Baidu Browser',
|
||||
'com.baidu.browserhd.inter' => 'Baidu Browser',
|
||||
'com.baidu.demo.webview' => 'Baidu Browser',
|
||||
'com.baidu.hi' => 'Baidu Browser',
|
||||
'com.baidu.searchbox' => 'Baidu Browser',
|
||||
'com.baidu.searchbox.pad' => 'Baidu Browser',
|
||||
'com.baidu.searchbox_bbk' => 'Baidu Browser',
|
||||
'com.baidu.searchbox_coolpad' => 'Baidu Browser',
|
||||
'com.baidu.searchbox_gionee' => 'Baidu Browser',
|
||||
'com.baidu.searchbox_hisense' => 'Baidu Browser',
|
||||
'com.baidu.searchbox_htc' => 'Baidu Browser',
|
||||
'com.baidu.searchbox_huawei' => 'Baidu Browser',
|
||||
'com.baidu.searchbox_ktouch' => 'Baidu Browser',
|
||||
'com.baidu.searchbox_lenovo' => 'Baidu Browser',
|
||||
'com.baidu.searchbox_oppo' => 'Baidu Browser',
|
||||
'com.baidu.searchbox_samsung' => 'Baidu Browser',
|
||||
'com.baidu.searchbox_sj' => 'Baidu Browser',
|
||||
'com.baidu.searchbox_sony' => 'Baidu Browser',
|
||||
'com.baidu.searchbox_tianyi' => 'Baidu Browser',
|
||||
'com.baidu.searchbox_zte' => 'Baidu Browser',
|
||||
'com.baidu.zeustest' => 'Baidu Browser',
|
||||
'com.wBestBrowser' => 'Best Browser',
|
||||
'com.boatbrowser.free' => 'Boat Browser',
|
||||
'com.boatbrowser.tablet' => 'Boat Browser',
|
||||
'com.boatgo.browser' => 'Boat Browser Mini',
|
||||
'com.ericsson.research.mario' => 'Bowser',
|
||||
'com.dotsandlines.carbon' => 'Carbon',
|
||||
'app.chameleon_browser' => 'Chameleon browser',
|
||||
'com.coship.mmcp' => 'Coship MMCP',
|
||||
'com.coship.tvos.web' => 'Coship MMCP',
|
||||
'com.coship.webapp' => 'Coship MMCP',
|
||||
'net.daum.android.daum' => 'Daum',
|
||||
'com.phikod.deviceportinfo' => 'Device Info Android',
|
||||
'com.dolphin.browser.android.jp' => 'Dolphin',
|
||||
'com.dolphin.browser.id' => 'Dolphin',
|
||||
'com.dolphin.browser.pad' => 'Dolphin',
|
||||
'com.dolphin.browser.tuna' => 'Dolphin',
|
||||
'com.dolphin.web.browser.android' => 'Dolphin',
|
||||
'mobi.mgeek.TunnyBrowser' => 'Dolphin',
|
||||
'mobile.mgeek.TunnyBrowser' => 'Dolphin',
|
||||
'com.dolphin.browser.xf' => 'Dolphin (Fighter Edition)',
|
||||
'com.dolphin.browser.lab.cn' => 'Dolphin Beta',
|
||||
'com.dolphin.browser.lab.en' => 'Dolphin Beta',
|
||||
'com.dolphin.browser.express.web' => 'Dolphin Express',
|
||||
'com.dolphin.browser.express.web.beta' => 'Dolphin Express',
|
||||
'com.dolphin.browser' => 'Dolphin Mini',
|
||||
'com.dolphin.browser.cn' => 'Dolphin Mini',
|
||||
'com.dolphin.browser.zero' => 'Dolphin Zero',
|
||||
'com.duckduckgo.mobile.android' => 'DuckDuckGo',
|
||||
'easy.browser' => 'Easy Browser',
|
||||
'easy.browser.classic' => 'Easy Browser',
|
||||
'easy.browser.com' => 'Easy Browser',
|
||||
'it.blogspot.fedeveloper' => 'Emergency Browser',
|
||||
'com.easy.browser' => 'ES Browser',
|
||||
'org.espier.browser' => 'Espier Browser',
|
||||
'com.exsoul' => 'Exsoul Web Browser',
|
||||
'com.jv.falcon' => 'Falcon',
|
||||
'com.jv.falcon.pro' => 'Falcon Pro',
|
||||
'com.devhd.feedly' => 'Feedly',
|
||||
'com.firemonkeybrowser' => 'FireMonkey',
|
||||
'com.comespice.browser' => 'Flash Browser',
|
||||
'com.funnyeden.browser' => 'Flash Browser',
|
||||
'com.whattheapps.fbrowser' => 'Flash Browser',
|
||||
'flipboard.app' => 'Flipboard',
|
||||
'flipboard.cn' => 'Flipboard',
|
||||
'com.lwi.android.flapps' => 'Floating Apps',
|
||||
'com.lwi.android.flappsfull' => 'Floating Apps',
|
||||
'gpc.myweb.hinet.net.PopupWeb' => 'Floating Browser Flux',
|
||||
'com.fortune.browser' => 'Fortune Web Browser',
|
||||
'com.browser.frogbrowser' => 'Frog Browser',
|
||||
'com.crowbar.beaverbrowser' => 'Frost Browser',
|
||||
'com.crowbar.beaverlite' => 'Frost Browser',
|
||||
'galaxy.browser.gb.free' => 'Galaxy Browser',
|
||||
'galaxy.browser.gb.pro' => 'Galaxy Browser',
|
||||
'com.mybro.browsah' => 'Genie Browser',
|
||||
'com.noinnion.android.greader.reader' => 'gReader',
|
||||
'com.noinnion.android.greader.readerpro' => 'gReader Pro',
|
||||
'jp.ddo.pigsty.HabitBrowser' => 'Habit Browser',
|
||||
'jp.ddo.pigsty.Habit_Browser' => 'Habit Browser',
|
||||
'com.baidu.hao123' => 'Hao123',
|
||||
'com.baidu.hao123.chrome.browser' => 'Hao123',
|
||||
'com.baidu.hao123.global' => 'Hao123',
|
||||
'com.htc.browser' => 'HTC Sense Browser',
|
||||
'com.htc.sense.browser' => 'HTC Sense Browser',
|
||||
'com.huawei.android.browser' => 'Huawei Emotion Browser',
|
||||
'com.huawei.browser' => 'Huawei Emotion Browser',
|
||||
'jp.co.lunascape.android.ilunascape' => 'iLunascape 2',
|
||||
'nu.tommie.inbrowser' => 'InBrowser',
|
||||
'nu.tommie.inbrowser.beta' => 'InBrowser Beta',
|
||||
'com.infamous.browser' => 'Infamous Browser',
|
||||
'derek.iSurf' => 'iSurf',
|
||||
'com.jerky.browser' => 'Javelin Incognito Browser',
|
||||
'com.jerky.browser2' => 'Javelin Incognito Browser',
|
||||
'com.adsi.kioware.client.mobile.app' => 'KioWare Kiosk',
|
||||
'com.kroniapp.browse' => 'Kronia Browser',
|
||||
'com.web.browser.labaadibrowser' => 'Labaadi Browser',
|
||||
'com.vng.android.zingbrowser' => 'Laban',
|
||||
'com.lastpass.lpandroid' => 'LastPass',
|
||||
'com.lenovo.browser' => 'Lenovo Browser',
|
||||
'com.lenovo.lps.simple' => 'Lenovo Browser',
|
||||
'com.light.browser' => 'Light Browser',
|
||||
'acr.browser.barebones' => 'Lightning Browser',
|
||||
'acr.browser.butterfly' => 'Lightning Browser',
|
||||
'acr.browser.lightning' => 'Lightning Browser',
|
||||
'acr.browser.lightning2' => 'Lightning Browser',
|
||||
'acr.browser.lightningq16w' => 'Lightning Browser',
|
||||
'acr.browser.spartancompany' => 'Lightning Browser',
|
||||
'acr.browser.spartancompanypaid' => 'Lightning Browser',
|
||||
'acr.browser.thunder' => 'Lightning Browser',
|
||||
'com.MoNTE.Lime' => 'Lime',
|
||||
'com.alphonso.pulse' => 'LinkedIn Pulse',
|
||||
'com.logio.logos' => 'Logos Browser',
|
||||
'it.lombardo.Lombardo' => 'Lombardo',
|
||||
'com.powerpoint45.lucidbrowser' => 'Lucid Browser',
|
||||
'com.powerpoint45.lucidbrowserfree' => 'Lucid Browser',
|
||||
'com.fiberlink.maas360.android.securebrowser' => 'MaaS360 Browser',
|
||||
'com.mx.browser' => 'Maxthon',
|
||||
'com.mx.browser.appendix' => 'Maxthon',
|
||||
'com.mx.browser.fast' => 'Maxthon',
|
||||
'com.mx.browser.free.mx100000000000' => 'Maxthon',
|
||||
'com.mx.browser.free.mx100000001915' => 'Maxthon',
|
||||
'com.mx.browser.free.mx100000002422' => 'Maxthon',
|
||||
'com.mx.browser.free.mx100000003135' => 'Maxthon',
|
||||
'com.mx.browser.free.mx100000003415' => 'Maxthon',
|
||||
'com.mx.browser.free.mx100000004211' => 'Maxthon',
|
||||
'com.mx.browser.free.mx100000004981' => 'Maxthon',
|
||||
'com.mx.browser.free.mx100000005137' => 'Maxthon',
|
||||
'com.mx.browser.free.mx200000000239' => 'Maxthon',
|
||||
'com.mx.browser.free.mx200000006760' => 'Maxthon',
|
||||
'com.mx.browser.free.mx200000013070' => 'Maxthon',
|
||||
'com.mx.browser.free.mx200000014602' => 'Maxthon',
|
||||
'com.mx.browser.free.mx200000014853' => 'Maxthon',
|
||||
'com.mx.browser.hg' => 'Maxthon',
|
||||
'com.mx.browser.kids' => 'Maxthon',
|
||||
'com.mx.browser.mtk' => 'Maxthon',
|
||||
'com.mx.browser.tablet' => 'Maxthon',
|
||||
'jp.co.inos.c1Browser' => 'MDM Browser',
|
||||
'com.ilegendsoft.mercury' => 'Mercury',
|
||||
'com.dmkho.mbm' => 'MiniBrowser Mobile',
|
||||
'com.dmkho.mbmbeta' => 'MiniBrowser Mobile',
|
||||
'com.mseven.msecure' => 'mSecure',
|
||||
'com.visvanoid.secretbrowse' => 'My Internet',
|
||||
'com.fevdev.nakedbrowser' => 'Naked Browser',
|
||||
'com.fevdev.nakedbrowserNDM' => 'Naked Browser',
|
||||
'com.fevdev.nakedbrowserpro' => 'Naked Browser Pro',
|
||||
'com.nanobrowser' => 'Nano Browser',
|
||||
'com.bos.ebrowser' => 'Navegador eBrowser',
|
||||
'com.nhn.android.navercafe' => 'Naver',
|
||||
'com.nhn.android.naverdic' => 'Naver',
|
||||
'com.nhn.android.search' => 'Naver',
|
||||
'com.access_company.android.livebrowser' => 'NetFront Life Browser',
|
||||
'com.access_company.android.nflifebrowser.lite' => 'NetFront Life Browser',
|
||||
'com.access_company.android.nflifeconnect' => 'NetFront Life Connect',
|
||||
'com.jiubang.browser' => 'Next Browser',
|
||||
'com.ninesky.browser' => 'Ninesky',
|
||||
'com.ninesky.browsercn' => 'Ninesky',
|
||||
'com.ninesky.browserzh' => 'Ninesky',
|
||||
'com.ninesky.nqbrowsercn' => 'Ninesky',
|
||||
'com.ninesky.nsbrowser' => 'Ninesky',
|
||||
'com.ninesky.sebrowser' => 'Ninesky',
|
||||
'com.appsverse.privatebrowser' => 'Nova Private Browser',
|
||||
'com.browser.nowadvanced' => 'Now Browser',
|
||||
'com.browser.nowbasic' => 'Now Browser',
|
||||
'com.browser.nowpro' => 'Now Browser',
|
||||
'com.browser.nowpro412t' => 'Now Browser',
|
||||
'com.wNewVisionBrowser' => 'NVision Browser',
|
||||
'com.compal.android.browser' => 'Ocean Browser',
|
||||
'com.maskyn.oldbrowser' => 'Old But Gold Internet Browser',
|
||||
'com.tencent.ibibo.mtt' => 'One Browser',
|
||||
'info.guardianproject.browser' => 'Orweb',
|
||||
'com.oupeng.browser' => 'Oupeng Browser',
|
||||
'com.oupeng.browser.beta10' => 'Oupeng Browser',
|
||||
'com.oupeng.browser.turbobeta' => 'Oupeng Browser',
|
||||
'com.oupeng.browserpre.cmcc' => 'Oupeng Browser',
|
||||
'com.oupeng.mini.android' => 'Oupeng Browser',
|
||||
'com.oupeng.xbrowser' => 'Oupeng Browser',
|
||||
'com.oupeng.xbrowser.beta' => 'Oupeng Browser',
|
||||
'com.myboyfriendisageek.airbrowser' => 'OverSkreen',
|
||||
'com.panasonic.pavc.viera.vieraremote2' => 'Panasonic TV Remote',
|
||||
'com.wPcBrowser' => 'PC Browser Mini',
|
||||
'com.penguinbrowser.penguinbrowser' => 'Penguin browser',
|
||||
'com.appsverse.photon' => 'Photon Browser',
|
||||
'com.appsverse.photonamazon' => 'Photon Browser',
|
||||
'com.levelup.touiteur' => 'Plume',
|
||||
'com.ideashower.readitlater.pro' => 'Pocket',
|
||||
'com.gflam.portal' => 'Portal',
|
||||
'com.hat.privatebrowser' => 'Private Browser',
|
||||
'com.JamesBecwar.FreePrivateBrowser' => 'Private Browser',
|
||||
'com.JamesBecwar.PrivateBrowser' => 'Private Browser',
|
||||
'com.qihoa.browser' => 'Qihoo 360 Browser',
|
||||
'com.qihoo.androidbrowser' => 'Qihoo 360 Browser',
|
||||
'com.qihoo.appstore' => 'Qihoo 360 Browser',
|
||||
'com.qihoo.browser' => 'Qihoo 360 Browser',
|
||||
'com.qihoo.browsertest' => 'Qihoo 360 Browser',
|
||||
'com.qihoo.express.browser' => 'Qihoo 360 Browser',
|
||||
'com.qihoo.expressbrowser' => 'Qihoo 360 Browser',
|
||||
'com.qihoo.haosou' => 'Qihoo 360 Browser',
|
||||
'com.qihoo.padbrowser' => 'Qihoo 360 Browser',
|
||||
'com.qihoo.padbrowser7' => 'Qihoo 360 Browser',
|
||||
'com.qihoo360.mobilesafe' => 'Qihoo 360 Browser',
|
||||
'com.qihoo360.mobilesafe_meizu' => 'Qihoo 360 Browser',
|
||||
'com.qihoo360.mobilesafe_mtk6573' => 'Qihoo 360 Browser',
|
||||
'com.tencent.android.pad' => 'QQ Browser',
|
||||
'com.tencent.blink' => 'QQ Browser',
|
||||
'com.tencent.hd.qq' => 'QQ Browser',
|
||||
'com.tencent.internat.mtt' => 'QQ Browser',
|
||||
'com.tencent.international.mtt' => 'QQ Browser',
|
||||
'com.tencent.mobileqq' => 'QQ Browser',
|
||||
'com.tencent.mtt' => 'QQ Browser',
|
||||
'com.tencent.padbrowser' => 'QQ Browser',
|
||||
'appinventor.ai_progetto2003.SCAN' => 'QR Barcode Scanner',
|
||||
'com.rarster.QuantumBrowser' => 'QuantumBrowser',
|
||||
'net.virifi.android.quickbrowser' => 'Quick ICS Browser',
|
||||
'net.virifi.android.quickbrowserpro' => 'Quick ICS Browser',
|
||||
'com.bjy.quicklinkbrowser' => 'Quick Link Browser',
|
||||
'com.rapid.browser' => 'Rapid Browser Pro',
|
||||
'com.rapid.browser2' => 'Rapid Browser Pro',
|
||||
'com.andrewshu.android.reddit' => 'Reddit is fun',
|
||||
'com.andrewshu.android.redditdonation' => 'Reddit is fun',
|
||||
'reddit.news' => 'Reddit News',
|
||||
'com.laurencedawson.reddit_sync.dev' => 'Reddit Sync Dev',
|
||||
'com.laurencedawson.reddit_sync.pro' => 'Reddit Sync Pro',
|
||||
'org.quantumbadger.redreader' => 'RedReader',
|
||||
'de.bomhard.android.RetroBrowser' => 'RetroBrowser',
|
||||
'com.rocket.browser' => 'Rocket Browser',
|
||||
'com.springdesign.screenshare.browser.client' => 'ScreenShare',
|
||||
'com.springdesign.screenshare.browser.server' => 'ScreenShare',
|
||||
'com.shark.sharkbrowser' => 'Shark Browser',
|
||||
'com.sina.weibo' => 'Sina Weibo',
|
||||
'com.sina.weibog3' => 'Sina Weibo',
|
||||
'com.sithagi.sithbrowser' => 'Sith Browser',
|
||||
'com.skyfire.browser' => 'SkyFire',
|
||||
'com.skyfire.browser.toolbar' => 'SkyFire',
|
||||
'com.skyfire.consumer.browser' => 'Skyfire',
|
||||
'jp.co.fenrir.android.sleipnir' => 'Sleipnir',
|
||||
'jp.co.fenrir.android.sleipnir_black' => 'Sleipnir',
|
||||
'jp.co.fenrir.android.sleipnir_ngp' => 'Sleipnir',
|
||||
'jp.co.fenrir.android.sleipnir_test' => 'Sleipnir',
|
||||
'jp.gocro.smartnews.android' => 'SmartNews',
|
||||
'com.cmcc.sofabrowser' => 'Sofa Browser',
|
||||
'sogou.mobile.explorer' => 'Sogou Mobile',
|
||||
'com.solo.browser' => 'Solo',
|
||||
'com.sonymobile.smallbrowser' => 'Sony Small Browser',
|
||||
'com.speedy.browser' => 'Speedy Browser',
|
||||
'com.appestry.split_browser' => 'Split Browser',
|
||||
'com.appestry.split_browser_trial' => 'Split Browser',
|
||||
'com.stumbleupon.android.app' => 'StumbleUpon',
|
||||
'iron.web.jalepano.browser' => 'Super Fast Browser',
|
||||
'com.gears42.surefox' => 'SureFox',
|
||||
'com.mns.android.swing' => 'Swing Browser',
|
||||
'net.biniok.tampermonkey' => 'Tampermonkey',
|
||||
'com.tcl.browser' => 'TCL Browser',
|
||||
'com.thuban.browser' => 'Thuban Handset Browser',
|
||||
'org.tint' => 'Tint Browser',
|
||||
'com.twidroid' => 'UberSocial',
|
||||
'com.uc.browser' => 'UC Browser',
|
||||
'com.uc.browser.en2ly5' => 'UC Browser',
|
||||
'com.uc.browser.hd.x86' => 'UC Browser',
|
||||
'com.uc.browser.hdx3kg' => 'UC Browser',
|
||||
'com.UCMobile' => 'UC Browser',
|
||||
'com.UCMobile.labs' => 'UC Browser',
|
||||
'com.UCMobile.ucsdk' => 'UC Browser',
|
||||
'com.UCMobile295d' => 'UC Browser',
|
||||
'com.UCMobile2jm4' => 'UC Browser',
|
||||
'com.UCMobile9jpo' => 'UC Browser',
|
||||
'com.UCMobileodw6' => 'UC Browser',
|
||||
'com.uc.browser.hd' => 'UC Browser HD',
|
||||
'com.uc.browser.en' => 'UC Browser Mini',
|
||||
'com.tencent.mm' => 'WeChat',
|
||||
'sui.mRelease' => 'xScope Browser Pro',
|
||||
'jp.co.yahoo.android.ybrowser' => 'Yahoo! JAPAN',
|
||||
'jp.co.yahoo.android.yjtop' => 'Yahoo! JAPAN',
|
||||
'ru.yandex.shell' => 'Yandex Shell',
|
||||
'com.zetakey.browser' => 'Zetakey',
|
||||
'org.zirco' => 'Zirco Browser',
|
||||
'com.zte.browser' => 'ZTE Browser',
|
||||
];
|
||||
8273
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-android.php
vendored
Normal file
8273
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-android.php
vendored
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$ASHA_INDEX = array (
|
||||
'@50' =>
|
||||
array (
|
||||
0 => 500,
|
||||
1 => 501,
|
||||
2 => '501s',
|
||||
3 => '501.1',
|
||||
4 => '501.2',
|
||||
5 => 502,
|
||||
6 => 503,
|
||||
7 => '503s',
|
||||
),
|
||||
'@AS' =>
|
||||
array (
|
||||
0 => 'Asha230SingleSIM',
|
||||
1 => 'Asha230DualSIM',
|
||||
2 => 'Asha500SingleSIM',
|
||||
3 => 'Asha500DualSIM',
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$BADA_INDEX = array (
|
||||
'@GT' =>
|
||||
array (
|
||||
0 => 'GT- ?S52(50|53)!',
|
||||
1 => 'GT-S53(30|33)!',
|
||||
2 => 'GT-S5380!',
|
||||
3 => 'GT-S57(50|53)!',
|
||||
4 => 'GT-S57(80)!',
|
||||
5 => 'GT-S72(30|33)!',
|
||||
6 => 'GT-S7250!',
|
||||
7 => 'GT-S8500!',
|
||||
8 => 'GT- ?S8530!',
|
||||
9 => 'GT- ?S8600!',
|
||||
),
|
||||
'@SC' =>
|
||||
array (
|
||||
0 => 'SCH-F859!',
|
||||
),
|
||||
'@SH' =>
|
||||
array (
|
||||
0 => 'SHW-M410',
|
||||
),
|
||||
);
|
||||
180
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-brew.php
vendored
Normal file
180
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-brew.php
vendored
Normal file
@@ -0,0 +1,180 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$BREW_INDEX = array (
|
||||
'@AX' =>
|
||||
array (
|
||||
0 => 'AX8575',
|
||||
),
|
||||
'@CD' =>
|
||||
array (
|
||||
0 => 'CDM8992',
|
||||
1 => 'CDM8999',
|
||||
),
|
||||
'@CO' =>
|
||||
array (
|
||||
0 => 'Coolpad D508',
|
||||
1 => 'Coolpad D510',
|
||||
2 => 'Coolpad E600',
|
||||
),
|
||||
'@E4' =>
|
||||
array (
|
||||
0 => 'E4255',
|
||||
),
|
||||
'@EX' =>
|
||||
array (
|
||||
0 => 'EX200!',
|
||||
),
|
||||
'@HS' =>
|
||||
array (
|
||||
0 => 'HS-E316!',
|
||||
),
|
||||
'@HU' =>
|
||||
array (
|
||||
0 => 'HUAWEI U526',
|
||||
1 => 'HUAWEI U528',
|
||||
2 => 'HUAWEI U2801!',
|
||||
3 => 'HUAWEI U5200!',
|
||||
4 => 'HUAWEI U5300!',
|
||||
5 => 'HUAWEI U5310!',
|
||||
6 => 'HUAWEI U6150!',
|
||||
),
|
||||
'@LG' =>
|
||||
array (
|
||||
0 => 'LG272',
|
||||
1 => 'LG510',
|
||||
2 => 'LGE AX840',
|
||||
3 => 'LGE LG700',
|
||||
4 => 'LGE LG840',
|
||||
5 => 'LGE UX700',
|
||||
6 => 'LGE UX840',
|
||||
7 => 'LGE VX11K',
|
||||
8 => 'LGE VX8575',
|
||||
9 => 'LGE VX9700',
|
||||
),
|
||||
'@LN' =>
|
||||
array (
|
||||
0 => 'LN240',
|
||||
1 => 'LN510',
|
||||
),
|
||||
'@LX' =>
|
||||
array (
|
||||
0 => 'LX610',
|
||||
),
|
||||
'@M2' =>
|
||||
array (
|
||||
0 => 'M260!',
|
||||
),
|
||||
'@M3' =>
|
||||
array (
|
||||
0 => 'M350!',
|
||||
1 => 'M370!',
|
||||
2 => 'M380!',
|
||||
3 => 'M390!',
|
||||
),
|
||||
'@M5' =>
|
||||
array (
|
||||
0 => 'M550!',
|
||||
1 => 'M560!',
|
||||
),
|
||||
'@NO' =>
|
||||
array (
|
||||
0 => 'NOKIA 7705',
|
||||
),
|
||||
'@P5' =>
|
||||
array (
|
||||
0 => 'P5000',
|
||||
),
|
||||
'@P6' =>
|
||||
array (
|
||||
0 => 'P6020',
|
||||
1 => 'P6030',
|
||||
),
|
||||
'@PA' =>
|
||||
array (
|
||||
0 => 'Pantech CDM8992!',
|
||||
1 => 'Pantech CDM8999!',
|
||||
2 => 'Pantech TXT8045!',
|
||||
),
|
||||
'@PL' =>
|
||||
array (
|
||||
0 => 'PLS M330',
|
||||
),
|
||||
'@S2' =>
|
||||
array (
|
||||
0 => 'S2151!',
|
||||
),
|
||||
'@SA' =>
|
||||
array (
|
||||
0 => 'sam-r631',
|
||||
1 => 'sam-r640',
|
||||
2 => 'sam-r900',
|
||||
),
|
||||
'@SC' =>
|
||||
array (
|
||||
0 => 'SCH-B309!',
|
||||
1 => 'SCH-F839',
|
||||
2 => 'SCH-M519!',
|
||||
3 => 'SCH-S559!',
|
||||
4 => 'SCH-S579!',
|
||||
5 => 'SCH-U380!',
|
||||
6 => 'SCH-U485',
|
||||
7 => 'SCH-U640!',
|
||||
8 => 'SCH-U660!',
|
||||
9 => 'SCH-U680!',
|
||||
10 => 'SCH-U750!',
|
||||
11 => 'SCH-U820!',
|
||||
12 => 'SCH-U960!',
|
||||
13 => 'SCH-W709!',
|
||||
14 => 'SCH-W799!',
|
||||
15 => 'SCP-3810',
|
||||
16 => 'SCP3810',
|
||||
17 => 'SCP-6750',
|
||||
18 => 'SCP6760',
|
||||
19 => 'SCP-6760',
|
||||
20 => 'SCP6780',
|
||||
),
|
||||
'@SG' =>
|
||||
array (
|
||||
0 => 'SGH-A937!',
|
||||
1 => 'SGH-A947!',
|
||||
),
|
||||
'@SM' =>
|
||||
array (
|
||||
0 => 'SM-B690V',
|
||||
),
|
||||
'@SP' =>
|
||||
array (
|
||||
0 => 'SPH M330',
|
||||
1 => 'SPH-M570',
|
||||
2 => 'Sprint M850',
|
||||
),
|
||||
'@TX' =>
|
||||
array (
|
||||
0 => 'TXT8045',
|
||||
),
|
||||
'@VN' =>
|
||||
array (
|
||||
0 => 'VN170!',
|
||||
1 => 'VN250!',
|
||||
2 => 'VN271!',
|
||||
3 => 'VN280!',
|
||||
4 => 'VN360!',
|
||||
5 => 'VN370!',
|
||||
6 => 'VN530',
|
||||
),
|
||||
'@VX' =>
|
||||
array (
|
||||
0 => 'VX5600!',
|
||||
1 => 'VX9200!',
|
||||
2 => 'VX9600!',
|
||||
3 => 'VX11000!',
|
||||
),
|
||||
'@ZT' =>
|
||||
array (
|
||||
0 => 'ZTE F-450!',
|
||||
1 => 'ZTE R516!',
|
||||
2 => 'ZTE R518!',
|
||||
),
|
||||
);
|
||||
231
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-feature.php
vendored
Normal file
231
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-feature.php
vendored
Normal file
@@ -0,0 +1,231 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$FEATURE_INDEX = array (
|
||||
'@AM' =>
|
||||
array (
|
||||
0 => 'Amstrad Gamma',
|
||||
),
|
||||
'@BE' =>
|
||||
array (
|
||||
0 => 'Benefon Q',
|
||||
),
|
||||
'@CK' =>
|
||||
array (
|
||||
0 => 'CK13[ai]?$!',
|
||||
1 => 'CK15[ai]?$!',
|
||||
),
|
||||
'@CO' =>
|
||||
array (
|
||||
0 => 'COCOON',
|
||||
),
|
||||
'@EF' =>
|
||||
array (
|
||||
0 => 'EF71',
|
||||
),
|
||||
'@EX' =>
|
||||
array (
|
||||
0 => 'EX115',
|
||||
1 => 'EX118',
|
||||
2 => 'EX119',
|
||||
3 => 'EX128',
|
||||
4 => 'EX225',
|
||||
5 => 'EX226',
|
||||
6 => 'EX430',
|
||||
),
|
||||
'@F1' =>
|
||||
array (
|
||||
0 => 'F100[ai]?$!',
|
||||
),
|
||||
'@GM' =>
|
||||
array (
|
||||
0 => 'GM360',
|
||||
),
|
||||
'@GR' =>
|
||||
array (
|
||||
0 => 'GR700',
|
||||
),
|
||||
'@GS' =>
|
||||
array (
|
||||
0 => 'GS290',
|
||||
1 => 'GS500',
|
||||
),
|
||||
'@GT' =>
|
||||
array (
|
||||
0 => 'GT500!',
|
||||
1 => 'GT550',
|
||||
2 => 'GT-B2710',
|
||||
3 => 'GT-B3210',
|
||||
4 => 'GT-B3313',
|
||||
5 => 'GT-C3200',
|
||||
6 => 'GT-C3222',
|
||||
7 => 'GT-C3322',
|
||||
8 => 'GT-C3500',
|
||||
9 => 'GT-C5010!',
|
||||
10 => 'GT-E1282!',
|
||||
11 => 'GT-E2152',
|
||||
12 => 'GT-E2220',
|
||||
13 => 'GT-E2222',
|
||||
14 => 'GT-E2202',
|
||||
15 => 'GT-E2250',
|
||||
16 => 'GT-E2252',
|
||||
17 => 'GT-E3213',
|
||||
18 => 'GT-E3309I',
|
||||
19 => 'GT-M8910',
|
||||
20 => 'GT-S3332',
|
||||
21 => 'GT-S33(50|53)!',
|
||||
22 => 'GT-S35(70|72)!',
|
||||
23 => 'GT-S5229',
|
||||
24 => 'GT-S5270!',
|
||||
25 => 'GT-S5610!',
|
||||
26 => 'GT-I6410!',
|
||||
27 => 'GT-I8320!',
|
||||
28 => 'GT-I8330!',
|
||||
),
|
||||
'@J1' =>
|
||||
array (
|
||||
0 => 'J105[ai]?$!',
|
||||
1 => 'J108[ai]?$!',
|
||||
2 => 'J10(i2?)?$!',
|
||||
),
|
||||
'@J2' =>
|
||||
array (
|
||||
0 => 'J20[ai]?$!',
|
||||
),
|
||||
'@K6' =>
|
||||
array (
|
||||
0 => 'K612',
|
||||
),
|
||||
'@KC' =>
|
||||
array (
|
||||
0 => 'KC910i',
|
||||
),
|
||||
'@KP' =>
|
||||
array (
|
||||
0 => 'KP500!',
|
||||
1 => 'KP570!',
|
||||
),
|
||||
'@KU' =>
|
||||
array (
|
||||
0 => 'KU990i',
|
||||
),
|
||||
'@LG' =>
|
||||
array (
|
||||
0 => 'LG-KU380',
|
||||
1 => 'LG-KU580',
|
||||
2 => 'LG-KU990',
|
||||
),
|
||||
'@LI' =>
|
||||
array (
|
||||
0 => 'Lightpipe',
|
||||
),
|
||||
'@M3' =>
|
||||
array (
|
||||
0 => 'm3510c',
|
||||
),
|
||||
'@MO' =>
|
||||
array (
|
||||
0 => 'MOTOQA1',
|
||||
),
|
||||
'@P7' =>
|
||||
array (
|
||||
0 => 'P7000',
|
||||
),
|
||||
'@P9' =>
|
||||
array (
|
||||
0 => 'P9020',
|
||||
1 => 'P9050',
|
||||
),
|
||||
'@PL' =>
|
||||
array (
|
||||
0 => 'PLS6600KJ',
|
||||
),
|
||||
'@PM' =>
|
||||
array (
|
||||
0 => 'PM-8200',
|
||||
),
|
||||
'@S7' =>
|
||||
array (
|
||||
0 => 'S7350',
|
||||
),
|
||||
'@SA' =>
|
||||
array (
|
||||
0 => 'sam-r560',
|
||||
),
|
||||
'@SC' =>
|
||||
array (
|
||||
0 => 'SCP-5300',
|
||||
1 => 'SCP-5500',
|
||||
2 => 'SCP-6600',
|
||||
3 => 'SCH-W169',
|
||||
4 => 'SCH-W279',
|
||||
),
|
||||
'@SE' =>
|
||||
array (
|
||||
0 => 'Sendo Wap',
|
||||
),
|
||||
'@SG' =>
|
||||
array (
|
||||
0 => 'SGH-A667',
|
||||
1 => 'SGH-A697',
|
||||
2 => 'SGH-A877',
|
||||
3 => 'SGH-A927',
|
||||
4 => 'SGH-A997',
|
||||
5 => 'SGH-D880',
|
||||
6 => 'SGH-E250i',
|
||||
7 => 'SGH-E250V',
|
||||
8 => 'SGH-G600',
|
||||
9 => 'SGH-J700i',
|
||||
10 => 'SGH-J700V',
|
||||
11 => 'SGH-M200',
|
||||
12 => 'SGH-S150G',
|
||||
13 => 'SGH-S390G',
|
||||
14 => 'SGH-T189N',
|
||||
15 => 'SGHX660V',
|
||||
16 => 'SGH-Z107!',
|
||||
17 => 'SGH-Z130!',
|
||||
18 => 'SGH-Z500!',
|
||||
),
|
||||
'@SM' =>
|
||||
array (
|
||||
0 => 'SM-B313E',
|
||||
1 => 'SM-B350E',
|
||||
2 => 'SM-B360E',
|
||||
3 => 'SM-B780(A|W)!',
|
||||
),
|
||||
'@TE' =>
|
||||
array (
|
||||
0 => 'tecnot36',
|
||||
),
|
||||
'@U1' =>
|
||||
array (
|
||||
0 => 'U100[ai]?$!',
|
||||
1 => 'U10[ai]?$!',
|
||||
),
|
||||
'@VO' =>
|
||||
array (
|
||||
0 => 'Vodafone 575',
|
||||
),
|
||||
'@W1' =>
|
||||
array (
|
||||
0 => 'W100i?$!',
|
||||
1 => 'W150i?$!',
|
||||
),
|
||||
'@W2' =>
|
||||
array (
|
||||
0 => 'W20i?$!',
|
||||
),
|
||||
'@WI' =>
|
||||
array (
|
||||
0 => 'WIDETEL WCX150',
|
||||
),
|
||||
'@WT' =>
|
||||
array (
|
||||
0 => 'WT13i$!',
|
||||
),
|
||||
'@X5' =>
|
||||
array (
|
||||
0 => 'X5i$!',
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$FIREFOXOS_INDEX = array (
|
||||
'@' =>
|
||||
array (
|
||||
0 => '.LYF\\/.F30C!',
|
||||
1 => '.LYF\\/.F101K!',
|
||||
),
|
||||
'@AL' =>
|
||||
array (
|
||||
0 => 'ALCATEL ONE TOUCH FIRE',
|
||||
1 => 'ALCATEL ONE TOUCH 4012A',
|
||||
2 => 'ALCATEL ONE TOUCH 4012X',
|
||||
3 => 'ALCATELOneTouch4012A!',
|
||||
4 => 'ALCATELOneTouch4012X!',
|
||||
5 => 'ALCATELOneTouch4019A!',
|
||||
6 => 'ALCATELOneTouch4019X!',
|
||||
7 => 'ALCATELOneTouch4020D!',
|
||||
8 => 'ALCATELOneTouch4022!',
|
||||
9 => 'ALCATELOneTouch4023!',
|
||||
10 => 'ALCATELOneTouch6015X!',
|
||||
11 => 'ALCATEL4044[MNOTVW]!',
|
||||
12 => 'ALCATEL4044C!',
|
||||
),
|
||||
'@HU' =>
|
||||
array (
|
||||
0 => 'HUAWEI Ascend Y300-F1',
|
||||
1 => 'HUAWEIY300-F1',
|
||||
),
|
||||
'@LG' =>
|
||||
array (
|
||||
0 => 'LG-D3(00|01)!',
|
||||
1 => 'LGL25',
|
||||
),
|
||||
'@LY' =>
|
||||
array (
|
||||
0 => 'LYF\\/F30C!',
|
||||
1 => 'LYF\\/F41T!',
|
||||
2 => 'LYF\\/F50Y!',
|
||||
3 => 'LYF\\/F61F!',
|
||||
4 => 'LYF\\/F81E!',
|
||||
5 => 'LYF\\/F90M!',
|
||||
6 => 'LYF\\/F101K!',
|
||||
),
|
||||
'@MA' =>
|
||||
array (
|
||||
0 => 'madai',
|
||||
),
|
||||
'@ON' =>
|
||||
array (
|
||||
0 => 'OneTouch4019A',
|
||||
),
|
||||
'@OP' =>
|
||||
array (
|
||||
0 => 'OPEN',
|
||||
1 => 'OpenC',
|
||||
2 => 'Open C',
|
||||
3 => 'OPENC2',
|
||||
4 => 'OPEN2',
|
||||
),
|
||||
'@OR' =>
|
||||
array (
|
||||
0 => 'Orange KLIF',
|
||||
1 => 'Orange KLIFD',
|
||||
),
|
||||
'@ZT' =>
|
||||
array (
|
||||
0 => 'ZTEOPEN',
|
||||
),
|
||||
);
|
||||
393
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-kddi.php
vendored
Normal file
393
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-kddi.php
vendored
Normal file
@@ -0,0 +1,393 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$KDDI_INDEX = array (
|
||||
'@CA' =>
|
||||
array (
|
||||
0 => 'CA11',
|
||||
1 => 'CA12',
|
||||
2 => 'CA13',
|
||||
3 => 'CA14',
|
||||
4 => 'CA21',
|
||||
5 => 'CA22',
|
||||
6 => 'CA23',
|
||||
7 => 'CA24',
|
||||
8 => 'CA25',
|
||||
9 => 'CA26',
|
||||
10 => 'CA27',
|
||||
11 => 'CA28',
|
||||
12 => 'CA31',
|
||||
13 => 'CA32',
|
||||
14 => 'CA33',
|
||||
15 => 'CA34',
|
||||
16 => 'CA35',
|
||||
17 => 'CA36',
|
||||
18 => 'CA37',
|
||||
19 => 'CA38',
|
||||
20 => 'CA39',
|
||||
21 => 'CA3A',
|
||||
22 => 'CA3B',
|
||||
23 => 'CA3C',
|
||||
24 => 'CA3D',
|
||||
25 => 'CA3E',
|
||||
26 => 'CA3F',
|
||||
27 => 'CA3G',
|
||||
28 => 'CA3H',
|
||||
29 => 'CA3I',
|
||||
30 => 'CA3J',
|
||||
31 => 'CA3K',
|
||||
),
|
||||
'@DN' =>
|
||||
array (
|
||||
0 => 'DN01',
|
||||
1 => 'DN11',
|
||||
),
|
||||
'@ER' =>
|
||||
array (
|
||||
0 => 'ERK0',
|
||||
),
|
||||
'@FJ' =>
|
||||
array (
|
||||
0 => 'FJ31',
|
||||
),
|
||||
'@HI' =>
|
||||
array (
|
||||
0 => 'HI01',
|
||||
1 => 'HI02',
|
||||
2 => 'HI11',
|
||||
3 => 'HI12',
|
||||
4 => 'HI13',
|
||||
5 => 'HI14',
|
||||
6 => 'HI21',
|
||||
7 => 'HI23',
|
||||
8 => 'HI24',
|
||||
9 => 'HI31',
|
||||
10 => 'HI32',
|
||||
11 => 'HI33',
|
||||
12 => 'HI34',
|
||||
13 => 'HI35',
|
||||
14 => 'HI36',
|
||||
15 => 'HI37',
|
||||
16 => 'HI38',
|
||||
17 => 'HI39',
|
||||
18 => 'HI3A',
|
||||
19 => 'HI3B',
|
||||
20 => 'HI3C',
|
||||
21 => 'HI3D',
|
||||
22 => 'HI3E',
|
||||
23 => 'HI3F',
|
||||
24 => 'HI3G',
|
||||
25 => 'HI3H',
|
||||
),
|
||||
'@KC' =>
|
||||
array (
|
||||
0 => 'KC3Q',
|
||||
1 => 'KC3S',
|
||||
2 => 'KC3V',
|
||||
3 => 'KC11',
|
||||
4 => 'KC12',
|
||||
5 => 'KC13',
|
||||
6 => 'KC14',
|
||||
7 => 'KC15',
|
||||
8 => 'KC21',
|
||||
9 => 'KC22',
|
||||
10 => 'KC23',
|
||||
11 => 'KC24',
|
||||
12 => 'KC25',
|
||||
13 => 'KC26',
|
||||
14 => 'KC27',
|
||||
15 => 'KC28',
|
||||
16 => 'KC29',
|
||||
17 => 'KC2A',
|
||||
18 => 'KC31',
|
||||
19 => 'KC32',
|
||||
20 => 'KC33',
|
||||
21 => 'KC34',
|
||||
22 => 'KC35',
|
||||
23 => 'KC36',
|
||||
24 => 'KC37',
|
||||
25 => 'KC38',
|
||||
26 => 'KC39',
|
||||
27 => 'KC3A',
|
||||
28 => 'KC3B',
|
||||
29 => 'KC3D',
|
||||
30 => 'KC3E',
|
||||
31 => 'KC3G',
|
||||
32 => 'KC3H',
|
||||
33 => 'KC3I',
|
||||
34 => 'KC3K',
|
||||
35 => 'KC3M',
|
||||
36 => 'KC3N',
|
||||
37 => 'KC3O',
|
||||
38 => 'KC3P',
|
||||
39 => 'KC3R',
|
||||
40 => 'KC3T',
|
||||
41 => 'KC3U',
|
||||
42 => 'KC3W',
|
||||
43 => 'KC3X',
|
||||
44 => 'KC3Y',
|
||||
45 => 'KC3Z',
|
||||
46 => 'KC41',
|
||||
47 => 'KC42',
|
||||
48 => 'KC43',
|
||||
49 => 'KC44',
|
||||
50 => 'KC45',
|
||||
51 => 'KC46',
|
||||
52 => 'KC47',
|
||||
53 => 'KC48',
|
||||
54 => 'KC4A',
|
||||
55 => 'KCC1',
|
||||
56 => 'KCC2',
|
||||
57 => 'KCI1',
|
||||
58 => 'KCI2',
|
||||
59 => 'KCT1',
|
||||
60 => 'KCT2',
|
||||
61 => 'KCT3',
|
||||
62 => 'KCT4',
|
||||
63 => 'KCT5',
|
||||
64 => 'KCT6',
|
||||
65 => 'KCT7',
|
||||
66 => 'KCT8',
|
||||
67 => 'KCT9',
|
||||
68 => 'KCTA',
|
||||
69 => 'KCTB',
|
||||
70 => 'KCTC',
|
||||
),
|
||||
'@MA' =>
|
||||
array (
|
||||
0 => 'MA11',
|
||||
1 => 'MA12',
|
||||
2 => 'MA13',
|
||||
3 => 'MA21',
|
||||
4 => 'MA31',
|
||||
5 => 'MA32',
|
||||
6 => 'MA33',
|
||||
7 => 'MA34',
|
||||
8 => 'MA35',
|
||||
9 => 'MAC1',
|
||||
10 => 'MAC2',
|
||||
11 => 'MAI1',
|
||||
12 => 'MAI2',
|
||||
13 => 'MAT1',
|
||||
14 => 'MAT2',
|
||||
15 => 'MAT3',
|
||||
),
|
||||
'@MI' =>
|
||||
array (
|
||||
0 => 'MIT1',
|
||||
),
|
||||
'@PT' =>
|
||||
array (
|
||||
0 => 'PT21',
|
||||
1 => 'PT23',
|
||||
2 => 'PT33',
|
||||
3 => 'PT34',
|
||||
4 => 'PT35',
|
||||
5 => 'PT36',
|
||||
),
|
||||
'@SA' =>
|
||||
array (
|
||||
0 => 'SA21',
|
||||
1 => 'SA22',
|
||||
2 => 'SA24',
|
||||
3 => 'SA25',
|
||||
4 => 'SA26',
|
||||
5 => 'SA27',
|
||||
6 => 'SA28',
|
||||
7 => 'SA29',
|
||||
8 => 'SA2A',
|
||||
9 => 'SA31',
|
||||
10 => 'SA32',
|
||||
11 => 'SA33',
|
||||
12 => 'SA34',
|
||||
13 => 'SA35',
|
||||
14 => 'SA36',
|
||||
15 => 'SA37',
|
||||
16 => 'SA38',
|
||||
17 => 'SA39',
|
||||
18 => 'SA3A',
|
||||
19 => 'SA3B',
|
||||
20 => 'SA3C',
|
||||
21 => 'SA3D',
|
||||
22 => 'SA3E',
|
||||
),
|
||||
'@SH' =>
|
||||
array (
|
||||
0 => 'SH31',
|
||||
1 => 'SH32',
|
||||
2 => 'SH33',
|
||||
3 => 'SH34',
|
||||
4 => 'SH35',
|
||||
5 => 'SH36',
|
||||
6 => 'SH37',
|
||||
7 => 'SH38',
|
||||
8 => 'SH39',
|
||||
9 => 'SH3A',
|
||||
10 => 'SH3B',
|
||||
11 => 'SH3C',
|
||||
12 => 'SH3D',
|
||||
13 => 'SH3E',
|
||||
14 => 'SH3F',
|
||||
15 => 'SH3G',
|
||||
16 => 'SH3H',
|
||||
17 => 'SH3I',
|
||||
18 => 'SH3J',
|
||||
19 => 'SH3K',
|
||||
20 => 'SH3L',
|
||||
),
|
||||
'@SN' =>
|
||||
array (
|
||||
0 => 'SN3K',
|
||||
1 => 'SN3T',
|
||||
2 => 'SN11',
|
||||
3 => 'SN13',
|
||||
4 => 'SN14',
|
||||
5 => 'SN15',
|
||||
6 => 'SN16',
|
||||
7 => 'SN17',
|
||||
8 => 'SN21',
|
||||
9 => 'SN22',
|
||||
10 => 'SN23',
|
||||
11 => 'SN24',
|
||||
12 => 'SN25',
|
||||
13 => 'SN26',
|
||||
14 => 'SN27',
|
||||
15 => 'SN28',
|
||||
16 => 'SN29',
|
||||
17 => 'SN31',
|
||||
18 => 'SN32',
|
||||
19 => 'SN33',
|
||||
20 => 'SN34',
|
||||
21 => 'SN35',
|
||||
22 => 'SN36',
|
||||
23 => 'SN37',
|
||||
24 => 'SN38',
|
||||
25 => 'SN39',
|
||||
26 => 'SN3A',
|
||||
27 => 'SN3B',
|
||||
28 => 'SN3C',
|
||||
29 => 'SN3D',
|
||||
30 => 'SN3E',
|
||||
31 => 'SN3F',
|
||||
32 => 'SN3G',
|
||||
33 => 'SN3H',
|
||||
34 => 'SN3I',
|
||||
35 => 'SN3J',
|
||||
36 => 'SN3L',
|
||||
37 => 'SN3M',
|
||||
38 => 'SN3N',
|
||||
39 => 'SN3O',
|
||||
40 => 'SN3P',
|
||||
41 => 'SN3Q',
|
||||
42 => 'SN3R',
|
||||
43 => 'SN3S',
|
||||
44 => 'SN3U',
|
||||
45 => 'SN3V',
|
||||
),
|
||||
'@ST' =>
|
||||
array (
|
||||
0 => 'ST22',
|
||||
1 => 'ST33',
|
||||
2 => 'ST11',
|
||||
3 => 'ST12',
|
||||
4 => 'ST13',
|
||||
5 => 'ST14',
|
||||
6 => 'ST21',
|
||||
7 => 'ST23',
|
||||
8 => 'ST24',
|
||||
9 => 'ST25',
|
||||
10 => 'ST26',
|
||||
11 => 'ST27',
|
||||
12 => 'ST28',
|
||||
13 => 'ST29',
|
||||
14 => 'ST2A',
|
||||
15 => 'ST2C',
|
||||
16 => 'ST2D',
|
||||
17 => 'ST31',
|
||||
18 => 'ST32',
|
||||
19 => 'ST34',
|
||||
),
|
||||
'@SY' =>
|
||||
array (
|
||||
0 => 'SY12',
|
||||
1 => 'SY13',
|
||||
2 => 'SY14',
|
||||
3 => 'SY15',
|
||||
4 => 'SYC1',
|
||||
5 => 'SYT1',
|
||||
6 => 'SYT2',
|
||||
7 => 'SYT3',
|
||||
8 => 'SYT4',
|
||||
9 => 'SY01',
|
||||
10 => 'SY02',
|
||||
11 => 'SY03',
|
||||
12 => 'SY11',
|
||||
),
|
||||
'@TS' =>
|
||||
array (
|
||||
0 => 'TS3Q',
|
||||
1 => 'TS3U',
|
||||
2 => 'TS3W',
|
||||
3 => 'TS01',
|
||||
4 => 'TS11',
|
||||
5 => 'TS12',
|
||||
6 => 'TS13',
|
||||
7 => 'TS14',
|
||||
8 => 'TS21',
|
||||
9 => 'TS22',
|
||||
10 => 'TS23',
|
||||
11 => 'TS24',
|
||||
12 => 'TS25',
|
||||
13 => 'TS26',
|
||||
14 => 'TS27',
|
||||
15 => 'TS28',
|
||||
16 => 'TS29',
|
||||
17 => 'TS2A',
|
||||
18 => 'TS2B',
|
||||
19 => 'TS2C',
|
||||
20 => 'TS2D',
|
||||
21 => 'TS2E',
|
||||
22 => 'TS31',
|
||||
23 => 'TS32',
|
||||
24 => 'TS33',
|
||||
25 => 'TS34',
|
||||
26 => 'TS35',
|
||||
27 => 'TS36',
|
||||
28 => 'TS37',
|
||||
29 => 'TS38',
|
||||
30 => 'TS39',
|
||||
31 => 'TS3A',
|
||||
32 => 'TS3B',
|
||||
33 => 'TS3C',
|
||||
34 => 'TS3D',
|
||||
35 => 'TS3E',
|
||||
36 => 'TS3G',
|
||||
37 => 'TS3H',
|
||||
38 => 'TS3I',
|
||||
39 => 'TS3J',
|
||||
40 => 'TS3K',
|
||||
41 => 'TS3L',
|
||||
42 => 'TS3M',
|
||||
43 => 'TS3N',
|
||||
44 => 'TS3O',
|
||||
45 => 'TS3P',
|
||||
46 => 'TS3R',
|
||||
47 => 'TS3S',
|
||||
48 => 'TS3T',
|
||||
49 => 'TS3V',
|
||||
50 => 'TS3X',
|
||||
51 => 'TS3Y',
|
||||
52 => 'TS3Z',
|
||||
53 => 'TS41',
|
||||
54 => 'TSC1',
|
||||
55 => 'TSI1',
|
||||
56 => 'TST1',
|
||||
57 => 'TST2',
|
||||
58 => 'TST3',
|
||||
59 => 'TST4',
|
||||
60 => 'TST5',
|
||||
61 => 'TST6',
|
||||
62 => 'TST7',
|
||||
),
|
||||
);
|
||||
115
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-palmos.php
vendored
Normal file
115
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-palmos.php
vendored
Normal file
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$PALMOS_INDEX = array (
|
||||
'@AC' =>
|
||||
array (
|
||||
0 => 'acer-momo',
|
||||
1 => 'acer-coco',
|
||||
2 => 'Acea-MZ01',
|
||||
3 => 'Acea-PD01',
|
||||
),
|
||||
'@GR' =>
|
||||
array (
|
||||
0 => 'grmn-3200',
|
||||
1 => 'grmn-3600',
|
||||
2 => 'grmn-3700',
|
||||
),
|
||||
'@GS' =>
|
||||
array (
|
||||
0 => 'gsRl-zicn',
|
||||
1 => 'gsRl-zcn2',
|
||||
2 => 'gsRl-zcn5',
|
||||
),
|
||||
'@HS' =>
|
||||
array (
|
||||
0 => 'hspr-H101',
|
||||
1 => 'hspr-H102',
|
||||
),
|
||||
'@KW' =>
|
||||
array (
|
||||
0 => 'kwc.-7135',
|
||||
),
|
||||
'@PA' =>
|
||||
array (
|
||||
0 => 'Palm-D061',
|
||||
1 => 'Palm-D062',
|
||||
2 => 'Palm-TunX',
|
||||
3 => 'Palm-stuj',
|
||||
4 => 'Palm-hbbs',
|
||||
5 => 'Palm-trnd',
|
||||
6 => 'Palm-ecty',
|
||||
7 => 'Palm-lith',
|
||||
8 => 'Palm-sky1',
|
||||
9 => 'Palm-D053',
|
||||
10 => 'Palm-D052',
|
||||
11 => 'Palm-D060',
|
||||
12 => 'Palm-MT64',
|
||||
13 => 'Palm-Cct1',
|
||||
14 => 'Palm-Zir4',
|
||||
15 => 'Palm-Frg1',
|
||||
16 => 'Palm-Frg2',
|
||||
17 => 'Palm-Arz1',
|
||||
18 => 'Palm-TnT5',
|
||||
19 => 'Palm-atc1',
|
||||
20 => 'Palm-D050',
|
||||
21 => 'Palm-Cubs',
|
||||
22 => 'Palm-Zi21',
|
||||
23 => 'Palm-D051',
|
||||
24 => 'Palm-Zi22',
|
||||
25 => 'Palm-Zpth',
|
||||
26 => 'Palm-Zi72',
|
||||
),
|
||||
'@QC' =>
|
||||
array (
|
||||
0 => 'qcom-qc20',
|
||||
),
|
||||
'@SM' =>
|
||||
array (
|
||||
0 => 'smsn-phix',
|
||||
1 => 'smsn-Phx2',
|
||||
2 => 'smsn-blch',
|
||||
3 => 'smsn-BLFM',
|
||||
4 => 'smsn-glxy',
|
||||
),
|
||||
'@SO' =>
|
||||
array (
|
||||
0 => 'sony-ystn',
|
||||
1 => 'sony-ysmt',
|
||||
2 => 'sony-ysm2',
|
||||
3 => 'sony-nsca',
|
||||
4 => 'sony-nsc2',
|
||||
5 => 'sony-vnce',
|
||||
6 => 'sony-mdna',
|
||||
7 => 'sony-npls',
|
||||
8 => 'sony-rdwd',
|
||||
9 => 'sony-crdb',
|
||||
10 => 'sony-tldo',
|
||||
11 => 'sony-mdrd',
|
||||
12 => 'sony-grnd',
|
||||
13 => 'sony-frta',
|
||||
14 => 'sony-cocs',
|
||||
15 => 'sony-glps',
|
||||
16 => 'sony-mcnd',
|
||||
17 => 'sony-vrna',
|
||||
18 => 'sony-atom',
|
||||
19 => 'sony-goha',
|
||||
20 => 'sony-leia',
|
||||
21 => 'sony-hwai',
|
||||
22 => 'sony-goku',
|
||||
23 => 'sony-luke',
|
||||
24 => 'sony-amno',
|
||||
25 => 'sony-prmr',
|
||||
26 => 'sony-ancy',
|
||||
),
|
||||
'@TP' =>
|
||||
array (
|
||||
0 => 'Tpwv-Rdog',
|
||||
),
|
||||
'@TR' =>
|
||||
array (
|
||||
0 => 'trgp-trg1',
|
||||
1 => 'trgp-trg2',
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$S30PLUS_INDEX = array (
|
||||
'@21' =>
|
||||
array (
|
||||
0 => 215,
|
||||
),
|
||||
'@22' =>
|
||||
array (
|
||||
0 => 220,
|
||||
1 => 222,
|
||||
2 => 225,
|
||||
),
|
||||
'@23' =>
|
||||
array (
|
||||
0 => 230,
|
||||
),
|
||||
);
|
||||
249
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-s40.php
vendored
Normal file
249
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-s40.php
vendored
Normal file
@@ -0,0 +1,249 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$S40_INDEX = array (
|
||||
'@10' =>
|
||||
array (
|
||||
0 => 109,
|
||||
),
|
||||
'@11' =>
|
||||
array (
|
||||
0 => 110,
|
||||
1 => 111,
|
||||
2 => '111.1',
|
||||
3 => 112,
|
||||
4 => 114,
|
||||
),
|
||||
'@16' =>
|
||||
array (
|
||||
0 => '1682c',
|
||||
),
|
||||
'@20' =>
|
||||
array (
|
||||
0 => 200,
|
||||
1 => 201,
|
||||
2 => 202,
|
||||
3 => 203,
|
||||
4 => 205,
|
||||
5 => '205.1',
|
||||
6 => '205.3',
|
||||
7 => 206,
|
||||
8 => '206.1',
|
||||
9 => 208,
|
||||
10 => '208.1',
|
||||
11 => '208.2',
|
||||
12 => '208.3',
|
||||
13 => '208.4',
|
||||
14 => 2055,
|
||||
15 => 2060,
|
||||
),
|
||||
'@21' =>
|
||||
array (
|
||||
0 => 210,
|
||||
1 => '210.2',
|
||||
2 => '210.3',
|
||||
3 => '210.4',
|
||||
4 => '210.5',
|
||||
),
|
||||
'@22' =>
|
||||
array (
|
||||
0 => '2220s!',
|
||||
),
|
||||
'@23' =>
|
||||
array (
|
||||
0 => '2320c!',
|
||||
1 => '2322c!',
|
||||
2 => '2323c!',
|
||||
3 => '2330c!',
|
||||
),
|
||||
'@26' =>
|
||||
array (
|
||||
0 => '2600c!',
|
||||
1 => '2680s!',
|
||||
2 => 2690,
|
||||
3 => 2692,
|
||||
),
|
||||
'@27' =>
|
||||
array (
|
||||
0 => '2700c!',
|
||||
1 => '2710c',
|
||||
2 => '2710c-2',
|
||||
3 => '2720a!',
|
||||
4 => '2730c!',
|
||||
),
|
||||
'@30' =>
|
||||
array (
|
||||
0 => 300,
|
||||
1 => 301,
|
||||
2 => '301.1',
|
||||
3 => 302,
|
||||
4 => 303,
|
||||
5 => 305,
|
||||
6 => 306,
|
||||
7 => 308,
|
||||
8 => 309,
|
||||
9 => 3020,
|
||||
),
|
||||
'@31' =>
|
||||
array (
|
||||
0 => 310,
|
||||
1 => 311,
|
||||
2 => '3109c',
|
||||
3 => '3110c',
|
||||
4 => '3120c',
|
||||
5 => '3120classic',
|
||||
),
|
||||
'@32' =>
|
||||
array (
|
||||
0 => '3208c',
|
||||
),
|
||||
'@35' =>
|
||||
array (
|
||||
0 => '3500c',
|
||||
1 => '3555b',
|
||||
),
|
||||
'@36' =>
|
||||
array (
|
||||
0 => '3600s',
|
||||
1 => '3610a',
|
||||
),
|
||||
'@37' =>
|
||||
array (
|
||||
0 => '3710fold',
|
||||
1 => '3720c',
|
||||
),
|
||||
'@50' =>
|
||||
array (
|
||||
0 => '5000!',
|
||||
),
|
||||
'@51' =>
|
||||
array (
|
||||
0 => 515,
|
||||
1 => '515.2',
|
||||
2 => '5130!',
|
||||
3 => '5130c!',
|
||||
4 => 5132,
|
||||
),
|
||||
'@52' =>
|
||||
array (
|
||||
0 => '5200!',
|
||||
1 => '5220!',
|
||||
),
|
||||
'@53' =>
|
||||
array (
|
||||
0 => '5300!',
|
||||
1 => '5310!',
|
||||
2 => 5330,
|
||||
3 => '5330-1d',
|
||||
),
|
||||
'@56' =>
|
||||
array (
|
||||
0 => '5610d!',
|
||||
),
|
||||
'@60' =>
|
||||
array (
|
||||
0 => '6070!',
|
||||
),
|
||||
'@62' =>
|
||||
array (
|
||||
0 => '6208c',
|
||||
1 => '6212c',
|
||||
2 => '6260s!',
|
||||
3 => '6230i!',
|
||||
4 => 6233,
|
||||
5 => 6234,
|
||||
6 => '6263!',
|
||||
7 => 6280,
|
||||
),
|
||||
'@63' =>
|
||||
array (
|
||||
0 => 6300,
|
||||
1 => '6300i',
|
||||
2 => 6301,
|
||||
3 => '6303c',
|
||||
4 => '6303classic',
|
||||
5 => '6303iclassic',
|
||||
6 => '6303ci',
|
||||
7 => 6350,
|
||||
),
|
||||
'@65' =>
|
||||
array (
|
||||
0 => '6500s!',
|
||||
),
|
||||
'@66' =>
|
||||
array (
|
||||
0 => '6600f!',
|
||||
1 => '6600s!',
|
||||
2 => '6600i!',
|
||||
),
|
||||
'@67' =>
|
||||
array (
|
||||
0 => '6700c!',
|
||||
1 => '6750c',
|
||||
),
|
||||
'@70' =>
|
||||
array (
|
||||
0 => '7070!',
|
||||
),
|
||||
'@71' =>
|
||||
array (
|
||||
0 => '7100s!',
|
||||
),
|
||||
'@72' =>
|
||||
array (
|
||||
0 => '7210s!',
|
||||
1 => '7210Supernova!',
|
||||
2 => '7230!',
|
||||
),
|
||||
'@73' =>
|
||||
array (
|
||||
0 => '7310c!',
|
||||
),
|
||||
'@75' =>
|
||||
array (
|
||||
0 => 7500,
|
||||
1 => '7510Supernova!',
|
||||
),
|
||||
'@76' =>
|
||||
array (
|
||||
0 => '7610Supernova!',
|
||||
),
|
||||
'@88' =>
|
||||
array (
|
||||
0 => '8800!',
|
||||
),
|
||||
'@C1' =>
|
||||
array (
|
||||
0 => 'C1-01!',
|
||||
1 => 'C1-02!',
|
||||
2 => 'C1-03!',
|
||||
),
|
||||
'@C2' =>
|
||||
array (
|
||||
0 => 'C2-00!',
|
||||
1 => 'C2-01!',
|
||||
2 => 'C2-02!',
|
||||
3 => 'C2-03!',
|
||||
4 => 'C2-05!',
|
||||
5 => 'C2-06!',
|
||||
),
|
||||
'@C3' =>
|
||||
array (
|
||||
0 => 'C3-00!',
|
||||
1 => 'C3-01!',
|
||||
),
|
||||
'@X2' =>
|
||||
array (
|
||||
0 => 'X2-00!',
|
||||
1 => 'X2-01!',
|
||||
2 => 'X2-02!',
|
||||
3 => 'X2-03!',
|
||||
4 => 'X2-05!',
|
||||
),
|
||||
'@X3' =>
|
||||
array (
|
||||
0 => 'X3-00!',
|
||||
1 => 'X3-02!',
|
||||
),
|
||||
);
|
||||
344
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-symbian.php
vendored
Normal file
344
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-symbian.php
vendored
Normal file
@@ -0,0 +1,344 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$SYMBIAN_INDEX = array (
|
||||
'@' =>
|
||||
array (
|
||||
0 => '(?i)U1(a|i|iv)?$!',
|
||||
1 => '(?i)U5(a|i|iv)?$!',
|
||||
2 => '(?i)U8(a|i)?$!',
|
||||
),
|
||||
'@32' =>
|
||||
array (
|
||||
0 => 3230,
|
||||
1 => 3250,
|
||||
),
|
||||
'@36' =>
|
||||
array (
|
||||
0 => 3650,
|
||||
1 => 3660,
|
||||
),
|
||||
'@50' =>
|
||||
array (
|
||||
0 => 500,
|
||||
),
|
||||
'@52' =>
|
||||
array (
|
||||
0 => 5228,
|
||||
1 => '5233!',
|
||||
2 => '5230!',
|
||||
3 => 5232,
|
||||
4 => '5235!',
|
||||
5 => 5236,
|
||||
6 => 5238,
|
||||
7 => 5250,
|
||||
),
|
||||
'@53' =>
|
||||
array (
|
||||
0 => '5320!',
|
||||
),
|
||||
'@55' =>
|
||||
array (
|
||||
0 => '5500d!',
|
||||
1 => '5530!',
|
||||
),
|
||||
'@56' =>
|
||||
array (
|
||||
0 => '5630!',
|
||||
),
|
||||
'@57' =>
|
||||
array (
|
||||
0 => '5700!',
|
||||
1 => '5730!',
|
||||
),
|
||||
'@58' =>
|
||||
array (
|
||||
0 => '5800!',
|
||||
),
|
||||
'@60' =>
|
||||
array (
|
||||
0 => 600,
|
||||
1 => 603,
|
||||
),
|
||||
'@61' =>
|
||||
array (
|
||||
0 => '6110Navigator',
|
||||
1 => '6120c!',
|
||||
2 => '6121c!',
|
||||
3 => '6122c!',
|
||||
4 => '6124c',
|
||||
),
|
||||
'@62' =>
|
||||
array (
|
||||
0 => '6210 ?Navigator!',
|
||||
1 => '6220c!',
|
||||
2 => 6260,
|
||||
3 => '6290!',
|
||||
),
|
||||
'@66' =>
|
||||
array (
|
||||
0 => 6600,
|
||||
1 => 6630,
|
||||
2 => '6650d!',
|
||||
3 => 6670,
|
||||
4 => 6680,
|
||||
5 => 6681,
|
||||
),
|
||||
'@67' =>
|
||||
array (
|
||||
0 => '6700s',
|
||||
1 => '6700s-1c',
|
||||
2 => 6708,
|
||||
3 => '6710s',
|
||||
4 => '6720c!',
|
||||
5 => '6730c!',
|
||||
6 => '6760s!',
|
||||
7 => 6788,
|
||||
8 => '6788i',
|
||||
9 => '6790s-1b!',
|
||||
10 => '6790s-1c!',
|
||||
),
|
||||
'@70' =>
|
||||
array (
|
||||
0 => 700,
|
||||
1 => 701,
|
||||
2 => '702T',
|
||||
),
|
||||
'@76' =>
|
||||
array (
|
||||
0 => 7610,
|
||||
1 => 7650,
|
||||
2 => 7660,
|
||||
),
|
||||
'@80' =>
|
||||
array (
|
||||
0 => '801T',
|
||||
1 => 808,
|
||||
2 => '808PureView',
|
||||
3 => '808 PureView',
|
||||
),
|
||||
'@A1' =>
|
||||
array (
|
||||
0 => 'A1000',
|
||||
),
|
||||
'@A9' =>
|
||||
array (
|
||||
0 => 'A920',
|
||||
1 => 'A925',
|
||||
),
|
||||
'@BE' =>
|
||||
array (
|
||||
0 => 'BenQ P30',
|
||||
1 => 'BenQ P31',
|
||||
),
|
||||
'@C5' =>
|
||||
array (
|
||||
0 => 'C5-00!',
|
||||
1 => 'C5-01',
|
||||
2 => 'C5-03!',
|
||||
3 => 'C5-04',
|
||||
4 => 'C5-05',
|
||||
5 => 'C5-06',
|
||||
),
|
||||
'@C6' =>
|
||||
array (
|
||||
0 => 'C6-00!',
|
||||
1 => 'C6-01!',
|
||||
),
|
||||
'@C7' =>
|
||||
array (
|
||||
0 => 'C7-00!',
|
||||
),
|
||||
'@CO' =>
|
||||
array (
|
||||
0 => 'ConstellationT',
|
||||
1 => 'ConstellationQuest',
|
||||
),
|
||||
'@E-' =>
|
||||
array (
|
||||
0 => 'E-90-1',
|
||||
),
|
||||
'@E5' =>
|
||||
array (
|
||||
0 => 'E5-00!',
|
||||
1 => 'E50(-[1-9])?$!',
|
||||
2 => 'E51(-[1-9])?$!',
|
||||
3 => 'E52(-[1-9])?$!',
|
||||
4 => 'E55(-[1-9])?$!',
|
||||
),
|
||||
'@E6' =>
|
||||
array (
|
||||
0 => 'E6',
|
||||
1 => 'E6-00',
|
||||
2 => 'E60(-[1-9])?$!',
|
||||
3 => 'E61i!',
|
||||
4 => 'E61(-[1-9])?$!',
|
||||
5 => 'E62(-[1-9])?$!',
|
||||
6 => 'E63(-[1-9])?$!',
|
||||
7 => 'E65(-[1-9])?$!',
|
||||
8 => 'E66(-[1-9])?$!',
|
||||
),
|
||||
'@E7' =>
|
||||
array (
|
||||
0 => 'E7-00',
|
||||
1 => 'E70(-[1-9])?$!',
|
||||
2 => 'E71x',
|
||||
3 => 'E71(-[1-9])?$!',
|
||||
4 => 'E72(-[1-9])?$!',
|
||||
5 => 'E73(-[1-9])?$!',
|
||||
6 => 'E75(-[1-9])?$!',
|
||||
),
|
||||
'@E9' =>
|
||||
array (
|
||||
0 => 'E90(-[1-9])?$!',
|
||||
),
|
||||
'@G7' =>
|
||||
array (
|
||||
0 => 'G700',
|
||||
),
|
||||
'@G9' =>
|
||||
array (
|
||||
0 => 'G900',
|
||||
),
|
||||
'@I7' =>
|
||||
array (
|
||||
0 => 'I7710',
|
||||
),
|
||||
'@I8' =>
|
||||
array (
|
||||
0 => 'I8510',
|
||||
1 => 'I8910',
|
||||
),
|
||||
'@LG' =>
|
||||
array (
|
||||
0 => 'LG KS10',
|
||||
1 => 'LGKT610',
|
||||
2 => 'LGKT615',
|
||||
),
|
||||
'@M1' =>
|
||||
array (
|
||||
0 => 'M1000',
|
||||
),
|
||||
'@M6' =>
|
||||
array (
|
||||
0 => 'M600i',
|
||||
),
|
||||
'@N-' =>
|
||||
array (
|
||||
0 => 'N-Gage',
|
||||
1 => 'N-GageQD',
|
||||
),
|
||||
'@N5' =>
|
||||
array (
|
||||
0 => 'N5233!',
|
||||
),
|
||||
'@N7' =>
|
||||
array (
|
||||
0 => 'N70(-[1-9])?$!',
|
||||
1 => 'N71(-[1-9])?$!',
|
||||
2 => 'N72(-[1-9])?$!',
|
||||
3 => 'N73(-[1-9])?$!',
|
||||
4 => 'N75(-[1-9])?$!',
|
||||
5 => 'N76(-[1-9])?$!',
|
||||
6 => 'N77(-[1-9])?$!',
|
||||
7 => 'N78(-[1-9])?$!',
|
||||
8 => 'N79(-[1-9])?$!',
|
||||
),
|
||||
'@N8' =>
|
||||
array (
|
||||
0 => 'N8-00',
|
||||
1 => 'N80(-[1-9])?$!',
|
||||
2 => 'N81(-[1-9])?$!',
|
||||
3 => 'N82(-[1-9])?$!',
|
||||
4 => 'N85(-[1-9])?$!',
|
||||
5 => 'N86(-[1-9])?$!',
|
||||
6 => 'N86 ?8MP$!',
|
||||
),
|
||||
'@N9' =>
|
||||
array (
|
||||
0 => 'N90(-[1-9])?$!',
|
||||
1 => 'N91(-[1-9])?$!',
|
||||
2 => 'N92(-[1-9])?$!',
|
||||
3 => 'N93(-[1-9])?$!',
|
||||
4 => 'N93i',
|
||||
5 => 'N95(-[1-9])?$!',
|
||||
6 => 'N95[ -]8GB(-[1-9])?!',
|
||||
7 => 'N96(-[1-9])?$!',
|
||||
8 => 'N97(-[1-3])?$!',
|
||||
9 => 'N97i',
|
||||
10 => 'N97(-[4-5])?$!',
|
||||
11 => 'N97 ?mini!',
|
||||
),
|
||||
'@NO' =>
|
||||
array (
|
||||
0 => 'Nokia N81',
|
||||
1 => 'Nokia N81 8GB',
|
||||
),
|
||||
'@OR' =>
|
||||
array (
|
||||
0 => 'Oro',
|
||||
),
|
||||
'@P1' =>
|
||||
array (
|
||||
0 => 'P1i',
|
||||
),
|
||||
'@P9' =>
|
||||
array (
|
||||
0 => 'P910i',
|
||||
1 => 'P990i',
|
||||
),
|
||||
'@PA' =>
|
||||
array (
|
||||
0 => 'Panasonic-X700',
|
||||
1 => 'Panasonic-X800',
|
||||
),
|
||||
'@RI' =>
|
||||
array (
|
||||
0 => 'RIZR-Z8',
|
||||
1 => 'RIZR-Z10',
|
||||
),
|
||||
'@SG' =>
|
||||
array (
|
||||
0 => 'SGH-D720',
|
||||
1 => 'SGH-D728',
|
||||
2 => 'SGH-D730',
|
||||
3 => 'SGH-i400!',
|
||||
4 => 'SGH-i408!',
|
||||
5 => 'SGH-i450!',
|
||||
6 => 'SGH-i455!',
|
||||
7 => 'SGH-i458!',
|
||||
8 => 'SGH-i520!',
|
||||
9 => 'SGH-i550!',
|
||||
10 => 'SGH-i560!',
|
||||
11 => 'SGH-i568!',
|
||||
12 => 'SGH-i570!',
|
||||
13 => 'SGH-G810',
|
||||
),
|
||||
'@T7' =>
|
||||
array (
|
||||
0 => 'T7-00',
|
||||
),
|
||||
'@U' =>
|
||||
array (
|
||||
0 => 'U',
|
||||
),
|
||||
'@W9' =>
|
||||
array (
|
||||
0 => 'W950i',
|
||||
1 => 'W960i',
|
||||
),
|
||||
'@X5' =>
|
||||
array (
|
||||
0 => 'X5-00',
|
||||
1 => 'X5-01',
|
||||
),
|
||||
'@X6' =>
|
||||
array (
|
||||
0 => 'X6-00!',
|
||||
),
|
||||
'@X7' =>
|
||||
array (
|
||||
0 => 'X7-00!',
|
||||
),
|
||||
);
|
||||
120
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-tizen.php
vendored
Normal file
120
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-tizen.php
vendored
Normal file
@@ -0,0 +1,120 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$TIZEN_INDEX = array (
|
||||
'@AR' =>
|
||||
array (
|
||||
0 => '(ARMV7 )?SM-Z9005!',
|
||||
),
|
||||
'@BA' =>
|
||||
array (
|
||||
0 => 'Baltic',
|
||||
),
|
||||
'@EM' =>
|
||||
array (
|
||||
0 => 'Emulator',
|
||||
),
|
||||
'@FA' =>
|
||||
array (
|
||||
0 => 'FamilyHub',
|
||||
),
|
||||
'@GT' =>
|
||||
array (
|
||||
0 => 'GT-I8800!',
|
||||
1 => 'GT-I8805!',
|
||||
2 => 'GT-I9500!',
|
||||
),
|
||||
'@HA' =>
|
||||
array (
|
||||
0 => 'hawkp',
|
||||
),
|
||||
'@KI' =>
|
||||
array (
|
||||
0 => 'KIRAN',
|
||||
),
|
||||
'@MO' =>
|
||||
array (
|
||||
0 => 'Mobile-RD-PQ',
|
||||
1 => 'Mobile-Emulator',
|
||||
),
|
||||
'@NX' =>
|
||||
array (
|
||||
0 => 'NX300',
|
||||
),
|
||||
'@RF' =>
|
||||
array (
|
||||
0 => 'RF10M9995!',
|
||||
1 => 'RF23M8590!',
|
||||
2 => 'RF265BEAE!',
|
||||
3 => 'RF28M9580!',
|
||||
4 => 'RF56M9540!',
|
||||
5 => 'RF85K9993!',
|
||||
6 => 'RF85M95A2!',
|
||||
),
|
||||
'@RH' =>
|
||||
array (
|
||||
0 => 'RH81M8090!',
|
||||
),
|
||||
'@SC' =>
|
||||
array (
|
||||
0 => 'SC-03F',
|
||||
),
|
||||
'@SD' =>
|
||||
array (
|
||||
0 => 'sdk',
|
||||
),
|
||||
'@SE' =>
|
||||
array (
|
||||
0 => 'SEC SC-001',
|
||||
1 => 'SEC SC-03F',
|
||||
),
|
||||
'@SG' =>
|
||||
array (
|
||||
0 => 'SGH-N099',
|
||||
),
|
||||
'@SM' =>
|
||||
array (
|
||||
0 => 'SM-HIGGS',
|
||||
1 => '(ARMV7 )?SM-Z9005!',
|
||||
2 => 'SM-Z130!',
|
||||
3 => 'SM-Z200!',
|
||||
4 => 'SM-Z250!',
|
||||
5 => 'SM-Z300!',
|
||||
6 => 'SM-Z400!',
|
||||
7 => 'SM-Z500!',
|
||||
8 => 'SM-Z700!',
|
||||
9 => 'SM-Z900!',
|
||||
10 => 'SM-Z910!',
|
||||
11 => 'SM-G870F0',
|
||||
12 => 'SM-R360!',
|
||||
13 => 'SM-R600!',
|
||||
14 => 'SM-R720!',
|
||||
15 => 'SM-R730!',
|
||||
16 => 'SM-R732!',
|
||||
17 => 'SM-R735!',
|
||||
18 => 'SM-R750!',
|
||||
19 => 'SM-R760!',
|
||||
20 => 'SM-R765!',
|
||||
21 => 'SM-R770!',
|
||||
22 => 'SM-R805!',
|
||||
),
|
||||
'@TI' =>
|
||||
array (
|
||||
0 => 'TIZEN SM-Z130!',
|
||||
1 => 'TIZEN SM-Z300!',
|
||||
2 => 'TIZEN Emulator',
|
||||
),
|
||||
'@TM' =>
|
||||
array (
|
||||
0 => 'TM1',
|
||||
),
|
||||
'@XU' =>
|
||||
array (
|
||||
0 => 'xu3',
|
||||
),
|
||||
'@Z3' =>
|
||||
array (
|
||||
0 => 'Z3 Z910F',
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$TOUCHWIZ_INDEX = array (
|
||||
'@GT' =>
|
||||
array (
|
||||
0 => 'GT-B5310!',
|
||||
1 => 'GT-B3410',
|
||||
2 => 'GT-B7722',
|
||||
3 => 'GT-C3262',
|
||||
4 => 'GT-C33(00|03)!',
|
||||
5 => 'GT-C3312R',
|
||||
6 => 'GT-C3312!',
|
||||
7 => 'GT-C3330',
|
||||
8 => 'GT-C6712',
|
||||
9 => 'GT-E2652!',
|
||||
10 => 'GT-I6230!',
|
||||
11 => 'GT-I6712!',
|
||||
12 => 'GT-M3710',
|
||||
13 => 'GT-M5650',
|
||||
14 => 'GT-S3370!',
|
||||
15 => 'GT-S36(50|53)!',
|
||||
16 => 'GT-S3770!',
|
||||
17 => 'GT-S38(00|02)!',
|
||||
18 => 'GT-S3850',
|
||||
19 => 'GT-S5220',
|
||||
20 => 'GT-S5222R',
|
||||
21 => 'GT-S5222',
|
||||
22 => 'GT-S52(30|33)!',
|
||||
23 => 'GT-S5260P',
|
||||
24 => 'GT-S52(60|63)!',
|
||||
25 => 'GT-S5292R',
|
||||
26 => 'GT-S5292',
|
||||
27 => 'GT-S5560!',
|
||||
28 => 'GT-S5600',
|
||||
29 => 'GT-S5603',
|
||||
30 => 'GT-S5620!',
|
||||
31 => 'GT-S5680',
|
||||
32 => 'GT-S7550',
|
||||
33 => 'GT-S8000c',
|
||||
34 => 'GT-S8003',
|
||||
),
|
||||
'@S8' =>
|
||||
array (
|
||||
0 => 'S80(00|03)!',
|
||||
),
|
||||
'@SG' =>
|
||||
array (
|
||||
0 => 'SGH-A597',
|
||||
1 => 'SGH-F480',
|
||||
2 => 'SGH-F480I',
|
||||
3 => 'SGH-T528g',
|
||||
),
|
||||
);
|
||||
535
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-wm.php
vendored
Normal file
535
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-wm.php
vendored
Normal file
@@ -0,0 +1,535 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$WM_INDEX = array (
|
||||
'@' =>
|
||||
array (
|
||||
0 => '.*T5555!',
|
||||
1 => '.*T8585!',
|
||||
2 => '.*S521!',
|
||||
3 => '.*T33(20|33|35)!',
|
||||
4 => '.*T5353!',
|
||||
5 => '.*P3700!',
|
||||
6 => '.*T82(82|83)!',
|
||||
7 => '.*T73(73|80)!',
|
||||
8 => '.*T7272!',
|
||||
9 => '.*T2223!',
|
||||
),
|
||||
'@-G' =>
|
||||
array (
|
||||
0 => '-GalaxyII',
|
||||
1 => '-GalaxyMini',
|
||||
),
|
||||
'@-P' =>
|
||||
array (
|
||||
0 => '-P525!',
|
||||
1 => '-P526!',
|
||||
2 => '-P527!',
|
||||
3 => '-P552w!',
|
||||
4 => '-P552!',
|
||||
5 => '-P565!',
|
||||
6 => '-P735!',
|
||||
),
|
||||
'@12' =>
|
||||
array (
|
||||
0 => 1210,
|
||||
),
|
||||
'@A3' =>
|
||||
array (
|
||||
0 => 'A3100',
|
||||
1 => 'A3300c',
|
||||
),
|
||||
'@A4' =>
|
||||
array (
|
||||
0 => 'A4500!',
|
||||
),
|
||||
'@AL' =>
|
||||
array (
|
||||
0 => 'Alltel HTC PPC6800',
|
||||
1 => 'Alltel HTC Touch',
|
||||
2 => 'Alltel HTC Touch Diamond',
|
||||
),
|
||||
'@AM' =>
|
||||
array (
|
||||
0 => 'Ameo!',
|
||||
),
|
||||
'@BI' =>
|
||||
array (
|
||||
0 => 'Bird T900',
|
||||
),
|
||||
'@C6' =>
|
||||
array (
|
||||
0 => 'C6625',
|
||||
),
|
||||
'@CH' =>
|
||||
array (
|
||||
0 => 'CHT 9100!',
|
||||
),
|
||||
'@CO' =>
|
||||
array (
|
||||
0 => 'Coolpad F800',
|
||||
),
|
||||
'@DA' =>
|
||||
array (
|
||||
0 => 'Datalogic Memor',
|
||||
),
|
||||
'@DO' =>
|
||||
array (
|
||||
0 => 'Dopod838Pro',
|
||||
1 => 'DopodD810',
|
||||
2 => 'dopod-S900c',
|
||||
3 => 'dopodT5588',
|
||||
4 => 'dopodT8388',
|
||||
5 => 'dopodT8588',
|
||||
),
|
||||
'@DX' =>
|
||||
array (
|
||||
0 => 'DX900',
|
||||
),
|
||||
'@E1' =>
|
||||
array (
|
||||
0 => 'E100',
|
||||
),
|
||||
'@ES' =>
|
||||
array (
|
||||
0 => 'ES405B!',
|
||||
),
|
||||
'@F9' =>
|
||||
array (
|
||||
0 => 'F900',
|
||||
),
|
||||
'@GA' =>
|
||||
array (
|
||||
0 => 'garmin-asus-Nuvifone-M10',
|
||||
),
|
||||
'@GI' =>
|
||||
array (
|
||||
0 => 'GIGABYTE-MS800',
|
||||
),
|
||||
'@GM' =>
|
||||
array (
|
||||
0 => 'GM730',
|
||||
1 => 'GM750Q',
|
||||
),
|
||||
'@GT' =>
|
||||
array (
|
||||
0 => 'GT-B5722',
|
||||
1 => 'GT-B6520',
|
||||
2 => 'GT-B7300',
|
||||
3 => 'GT-B7320!',
|
||||
4 => 'GT-B7330!',
|
||||
5 => 'GT-B7350',
|
||||
6 => 'GT-B7610',
|
||||
7 => 'GT-C6625',
|
||||
8 => 'GT-I8000!',
|
||||
),
|
||||
'@GW' =>
|
||||
array (
|
||||
0 => 'GW550',
|
||||
1 => 'GW825',
|
||||
),
|
||||
'@H-' =>
|
||||
array (
|
||||
0 => 'H-21',
|
||||
),
|
||||
'@HD' =>
|
||||
array (
|
||||
0 => '(HTC )?HD mini!',
|
||||
1 => '(HTC )?HD2!',
|
||||
),
|
||||
'@HP' =>
|
||||
array (
|
||||
0 => 'HP iPAQ 510',
|
||||
1 => 'HPiPAQ510!',
|
||||
2 => 'HPiPAQ610',
|
||||
3 => 'HPiPAQ910!',
|
||||
4 => 'HP iPAQ h6300',
|
||||
5 => 'HP iPAQ hw6500!',
|
||||
6 => 'HPiPAQhw6900!',
|
||||
7 => 'HPiPAQrw6800!',
|
||||
8 => 'HPiPAQrw6815!',
|
||||
9 => 'HPiPAQDataMessenger!',
|
||||
10 => 'HPiPAQVoiceMessenger!',
|
||||
11 => 'HPiPAQGlisten',
|
||||
12 => 'HP KB1',
|
||||
),
|
||||
'@HT' =>
|
||||
array (
|
||||
0 => 'HTC8500',
|
||||
1 => 'HTC P3300',
|
||||
2 => 'HTC love',
|
||||
3 => 'HTC P3350',
|
||||
4 => 'HTC P3400!',
|
||||
5 => 'HTC P3450!',
|
||||
6 => 'HTC HERALD',
|
||||
7 => 'HTC P6300',
|
||||
8 => 'HTC P6500',
|
||||
9 => 'HTC X7500',
|
||||
10 => 'HTC X7510',
|
||||
11 => '(HTC )?HD mini!',
|
||||
12 => '(HTC )?HD2!',
|
||||
13 => 'HTC T8290',
|
||||
14 => 'HTC MAX 4G',
|
||||
15 => 'HTC MTeoR',
|
||||
16 => 'HTC Prophet',
|
||||
17 => 'HTC Snap!',
|
||||
18 => 'HTC Maple S520',
|
||||
19 => 'HTC S620!',
|
||||
20 => 'HTC Excalibur',
|
||||
21 => 'HTC S630',
|
||||
22 => 'HTC S710',
|
||||
23 => 'HTC S730',
|
||||
24 => 'HTC S740',
|
||||
25 => 'HTC Touch',
|
||||
26 => 'HTC Elf',
|
||||
27 => 'HTC 6900',
|
||||
28 => 'HTC6900',
|
||||
29 => 'HTC6900-MR1',
|
||||
30 => 'HTC TouchDual',
|
||||
31 => 'HTC Touch 3G!',
|
||||
32 => 'HTC Jade',
|
||||
33 => 'HTC Mega!',
|
||||
34 => 'HTC Touch2!',
|
||||
35 => 'HTC Touch Cruise!',
|
||||
36 => 'HTC P3650',
|
||||
37 => 'HTC P3651',
|
||||
38 => 'HTC Polaris',
|
||||
39 => 'HTC Touch Diamond2!',
|
||||
40 => 'HTC Touch Diamond!',
|
||||
41 => 'HTC Diamond',
|
||||
42 => 'HTC P3701',
|
||||
43 => 'HTC P5500',
|
||||
44 => 'HTC P5310!',
|
||||
45 => 'HTC Touch HD2!',
|
||||
46 => 'HTC Touch HD!',
|
||||
47 => 'HTC Touch Pro2!',
|
||||
48 => 'HTC Touch Pro!',
|
||||
49 => 'HTC P4600',
|
||||
50 => 'HTC Raphael',
|
||||
51 => 'HTC Touch Viva!',
|
||||
52 => 'HTC Trinity',
|
||||
53 => 'HTC P3600',
|
||||
54 => 'HTC P3600i',
|
||||
55 => 'HTC v3600',
|
||||
56 => 'HTC TyTN II',
|
||||
57 => 'HTC Kaiser',
|
||||
58 => 'HTC TyTN!',
|
||||
59 => 'HTC Mercury',
|
||||
60 => 'HTC wizard',
|
||||
61 => 'HTCPPC6850!',
|
||||
62 => 'HTC VDA V',
|
||||
63 => 'HTC v1510',
|
||||
64 => 'HTC VPACompactIV',
|
||||
65 => 'HT01A',
|
||||
),
|
||||
'@I-' =>
|
||||
array (
|
||||
0 => 'i-mate JAMA',
|
||||
1 => 'i-mate JAMAQ',
|
||||
2 => 'i-mate JAMin',
|
||||
3 => 'i-mate JASJAM',
|
||||
4 => 'i-mate JAQ',
|
||||
5 => 'i-mate JAQ3',
|
||||
6 => 'i-mate K-JAM',
|
||||
7 => 'i-mate PDAL',
|
||||
8 => 'i-mate 6150',
|
||||
9 => 'i-mate 8150!',
|
||||
10 => 'i-mate 8502',
|
||||
11 => 'i-mate 9502!',
|
||||
),
|
||||
'@K-' =>
|
||||
array (
|
||||
0 => 'K-Touch W366!',
|
||||
),
|
||||
'@KD' =>
|
||||
array (
|
||||
0 => 'KDDI-HT01',
|
||||
),
|
||||
'@KY' =>
|
||||
array (
|
||||
0 => 'Kyocera-E4000',
|
||||
),
|
||||
'@LE' =>
|
||||
array (
|
||||
0 => 'Lenovo ET860',
|
||||
1 => 'LENOVO-ET980',
|
||||
),
|
||||
'@LG' =>
|
||||
array (
|
||||
0 => 'LG-GM730!',
|
||||
1 => 'LG-GM750!',
|
||||
2 => 'LG-GW550!',
|
||||
3 => 'LG-KS20',
|
||||
4 => 'LG-MS25',
|
||||
5 => 'LGE VS750',
|
||||
),
|
||||
'@M1' =>
|
||||
array (
|
||||
0 => 'M1i',
|
||||
),
|
||||
'@M5' =>
|
||||
array (
|
||||
0 => 'M530w!',
|
||||
),
|
||||
'@M9' =>
|
||||
array (
|
||||
0 => 'M930!',
|
||||
),
|
||||
'@MC' =>
|
||||
array (
|
||||
0 => 'MC45!',
|
||||
1 => 'MC659B!',
|
||||
),
|
||||
'@MD' =>
|
||||
array (
|
||||
0 => 'MDA III!',
|
||||
1 => 'MDA compact II!',
|
||||
2 => 'MDA compact!',
|
||||
3 => 'MDA Pro!',
|
||||
4 => 'MDA Touch!',
|
||||
5 => 'MDA Vario!',
|
||||
),
|
||||
'@NU' =>
|
||||
array (
|
||||
0 => 'Nuvifone-M10',
|
||||
1 => 'Nuvifone-M20',
|
||||
),
|
||||
'@O2' =>
|
||||
array (
|
||||
0 => 'o2 Xda comet',
|
||||
1 => 'O2 Xda 2mini',
|
||||
2 => 'O2 Xda 2s',
|
||||
),
|
||||
'@P3' =>
|
||||
array (
|
||||
0 => 'P3470!',
|
||||
1 => 'P3450',
|
||||
2 => 'P3650',
|
||||
3 => 'P3650t',
|
||||
4 => 'P3600!',
|
||||
),
|
||||
'@P4' =>
|
||||
array (
|
||||
0 => 'P400',
|
||||
1 => 'P4350!',
|
||||
2 => 'P4550',
|
||||
),
|
||||
'@P5' =>
|
||||
array (
|
||||
0 => 'P550',
|
||||
),
|
||||
'@P7' =>
|
||||
array (
|
||||
0 => 'P750',
|
||||
),
|
||||
'@PA' =>
|
||||
array (
|
||||
0 => 'Palm500!',
|
||||
1 => 'Palm750',
|
||||
2 => 'Palm850!',
|
||||
3 => 'Palm Treo850e',
|
||||
4 => 'PANTECH-C810',
|
||||
),
|
||||
'@PP' =>
|
||||
array (
|
||||
0 => 'PPC6850!',
|
||||
),
|
||||
'@Q-' =>
|
||||
array (
|
||||
0 => 'Q-UMTS',
|
||||
),
|
||||
'@Q8' =>
|
||||
array (
|
||||
0 => 'Q8',
|
||||
),
|
||||
'@Q9' =>
|
||||
array (
|
||||
0 => 'Q9',
|
||||
1 => 'Q9c!',
|
||||
2 => 'Q9m!',
|
||||
),
|
||||
'@S0' =>
|
||||
array (
|
||||
0 => 'S01SH',
|
||||
1 => 'S01SH2',
|
||||
),
|
||||
'@S1' =>
|
||||
array (
|
||||
0 => 'S11HT',
|
||||
1 => 'S12HT',
|
||||
),
|
||||
'@S2' =>
|
||||
array (
|
||||
0 => 'S200',
|
||||
1 => 'S21HT',
|
||||
2 => 'S22HT',
|
||||
),
|
||||
'@SC' =>
|
||||
array (
|
||||
0 => 'SCH-M490',
|
||||
1 => 'SCH-M710',
|
||||
2 => 'SCH-M715',
|
||||
3 => 'SCH-i220!',
|
||||
4 => 'SCH-i225!',
|
||||
5 => 'SCH-i760!',
|
||||
6 => 'SCH-i770!',
|
||||
7 => 'SCHI910!',
|
||||
8 => 'SCH-i920',
|
||||
9 => 'SC-01B',
|
||||
),
|
||||
'@SF' =>
|
||||
array (
|
||||
0 => 'SFR v3650!',
|
||||
),
|
||||
'@SG' =>
|
||||
array (
|
||||
0 => 'SGH-i600!',
|
||||
1 => 'SGH-i601!',
|
||||
2 => 'SGH-I607',
|
||||
3 => 'SGH-i608!',
|
||||
4 => 'SGH-I617',
|
||||
5 => 'SGH-I637',
|
||||
6 => 'SGH-i640!',
|
||||
7 => 'SGH-i718',
|
||||
8 => 'SGH-i718plus',
|
||||
9 => 'SGH-i728',
|
||||
10 => 'SGH-i780!',
|
||||
11 => 'SGH-i900!',
|
||||
12 => 'SGH-i908E',
|
||||
),
|
||||
'@SI' =>
|
||||
array (
|
||||
0 => 'SIE-SX66',
|
||||
1 => 'sigmarion3',
|
||||
),
|
||||
'@SP' =>
|
||||
array (
|
||||
0 => 'Sprint:MotoQ9c',
|
||||
1 => 'Sprint Treo850e',
|
||||
2 => 'SPH-M7200',
|
||||
3 => 'SPH-M7350',
|
||||
4 => 'SPH-M8400',
|
||||
5 => 'SPHI325!',
|
||||
6 => 'Spice D1100',
|
||||
7 => 'SPV E600',
|
||||
8 => 'SPV E650',
|
||||
9 => 'SPV M700',
|
||||
10 => 'SPV M2000',
|
||||
11 => 'SPV M3100',
|
||||
12 => 'Sprint S511',
|
||||
13 => 'Sprint:SPH-ip830w',
|
||||
14 => 'Sprint:PPC6600-1',
|
||||
15 => 'Sprint:PPC-6700',
|
||||
16 => 'Sprint:PPC6800',
|
||||
17 => 'Sprint PPC6850SP',
|
||||
18 => 'Sprint MP6850SP',
|
||||
19 => 'Sprint MP6900SP',
|
||||
20 => 'Sprint MP6950SP',
|
||||
),
|
||||
'@T-' =>
|
||||
array (
|
||||
0 => 'T-Mobile Atlas',
|
||||
1 => 'T-Mobile Dash',
|
||||
2 => 'T-Mobile LEO',
|
||||
3 => 'T-Mobile Cleopatra',
|
||||
4 => 'T-01A!',
|
||||
5 => 'T-01B!',
|
||||
),
|
||||
'@T5' =>
|
||||
array (
|
||||
0 => 'T5388',
|
||||
),
|
||||
'@T9' =>
|
||||
array (
|
||||
0 => 'T9188',
|
||||
1 => 'T9199',
|
||||
),
|
||||
'@TG' =>
|
||||
array (
|
||||
0 => '(Toshiba[- ])?TG01!',
|
||||
),
|
||||
'@TO' =>
|
||||
array (
|
||||
0 => '(Toshiba[- ])?TG01!',
|
||||
),
|
||||
'@TR' =>
|
||||
array (
|
||||
0 => 'Treo800w',
|
||||
),
|
||||
'@V1' =>
|
||||
array (
|
||||
0 => 'v1415',
|
||||
1 => 'v1240',
|
||||
2 => 'v1210',
|
||||
3 => 'v1640',
|
||||
),
|
||||
'@VE' =>
|
||||
array (
|
||||
0 => 'Velocity',
|
||||
),
|
||||
'@VI' =>
|
||||
array (
|
||||
0 => 'VIP12!',
|
||||
),
|
||||
'@VP' =>
|
||||
array (
|
||||
0 => 'VPA Touch',
|
||||
),
|
||||
'@W3' =>
|
||||
array (
|
||||
0 => 'W366',
|
||||
),
|
||||
'@WS' =>
|
||||
array (
|
||||
0 => 'WS003SH',
|
||||
1 => 'WS004SH',
|
||||
2 => 'WS007SH',
|
||||
3 => 'WS011SH',
|
||||
4 => 'WS020SH',
|
||||
5 => 'WS027SH',
|
||||
),
|
||||
'@X0' =>
|
||||
array (
|
||||
0 => 'X01T',
|
||||
1 => 'X02T!',
|
||||
2 => 'X01HT',
|
||||
3 => 'X02HT',
|
||||
4 => 'X03HT',
|
||||
5 => 'X04HT',
|
||||
6 => 'X05HT',
|
||||
7 => 'X01SC',
|
||||
),
|
||||
'@X1' =>
|
||||
array (
|
||||
0 => 'X1',
|
||||
1 => 'X1[ia]!',
|
||||
),
|
||||
'@X2' =>
|
||||
array (
|
||||
0 => 'X2',
|
||||
1 => 'X2[ia]!',
|
||||
),
|
||||
'@XD' =>
|
||||
array (
|
||||
0 => 'Xda diamond',
|
||||
1 => 'Xda neo',
|
||||
2 => 'Xda nova',
|
||||
3 => 'Xda orbit',
|
||||
4 => 'Xda terra',
|
||||
5 => 'Xda trion',
|
||||
),
|
||||
'@XV' =>
|
||||
array (
|
||||
0 => 'XV6175!',
|
||||
1 => 'XV6850!',
|
||||
2 => 'XV6875!',
|
||||
3 => 'XV6900',
|
||||
4 => 'XV6975',
|
||||
),
|
||||
'@ZT' =>
|
||||
array (
|
||||
0 => 'ZTE E N72',
|
||||
1 => 'ZTE E X70',
|
||||
),
|
||||
);
|
||||
548
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-wp.php
vendored
Normal file
548
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-wp.php
vendored
Normal file
@@ -0,0 +1,548 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$WP_INDEX = array (
|
||||
'@' =>
|
||||
array (
|
||||
0 => '(HD7|.*T92(92|95|96))!',
|
||||
1 => '((7 )?Mozart|.*T86(97|98))!',
|
||||
2 => '(7 Pro|.*T75(75|76))!',
|
||||
3 => '.*T8788!',
|
||||
4 => '((7 )?Trophy|.*T8686)!',
|
||||
5 => '(Radar|.*C110e)!',
|
||||
6 => '.*X310e!',
|
||||
7 => '(Lumia ?|Nokia ?)?[0-9]{3,4}!!',
|
||||
),
|
||||
'@- ' =>
|
||||
array (
|
||||
0 => '- BUSH Windows Phone',
|
||||
1 => '- Lazer SMART WIND',
|
||||
),
|
||||
'@0P' =>
|
||||
array (
|
||||
0 => '0P6B140',
|
||||
1 => '0P6B180',
|
||||
),
|
||||
'@40' =>
|
||||
array (
|
||||
0 => '40 Cesium',
|
||||
),
|
||||
'@47' =>
|
||||
array (
|
||||
0 => 47,
|
||||
),
|
||||
'@4A' =>
|
||||
array (
|
||||
0 => '4Afrika',
|
||||
),
|
||||
'@69' =>
|
||||
array (
|
||||
0 => '6990LVW',
|
||||
),
|
||||
'@7 ' =>
|
||||
array (
|
||||
0 => '((7 )?Mozart|.*T86(97|98))!',
|
||||
1 => '7 HTC MOZART',
|
||||
2 => '(7 Pro|.*T75(75|76))!',
|
||||
3 => '7 Surround',
|
||||
4 => '((7 )?Trophy|.*T8686)!',
|
||||
),
|
||||
'@75' =>
|
||||
array (
|
||||
0 => '75eL0N',
|
||||
),
|
||||
'@8S' =>
|
||||
array (
|
||||
0 => '8S',
|
||||
1 => '8S by HTC',
|
||||
),
|
||||
'@8X' =>
|
||||
array (
|
||||
0 => '8X',
|
||||
1 => '8X by HTC',
|
||||
),
|
||||
'@;H' =>
|
||||
array (
|
||||
0 => ';HD2',
|
||||
),
|
||||
'@;P' =>
|
||||
array (
|
||||
0 => ';PD67100',
|
||||
),
|
||||
'@<M' =>
|
||||
array (
|
||||
0 => '<model>!',
|
||||
),
|
||||
'@A6' =>
|
||||
array (
|
||||
0 => 'A620(b|d|e|m|t)!',
|
||||
),
|
||||
'@AC' =>
|
||||
array (
|
||||
0 => 'AC50CE',
|
||||
1 => 'ACD U',
|
||||
2 => 'Accord',
|
||||
),
|
||||
'@AL' =>
|
||||
array (
|
||||
0 => 'Allegro',
|
||||
1 => 'Alpha Neon',
|
||||
2 => 'ALPHA PRIME 5',
|
||||
),
|
||||
'@AN' =>
|
||||
array (
|
||||
0 => 'Andi4L',
|
||||
1 => 'Android!',
|
||||
),
|
||||
'@AT' =>
|
||||
array (
|
||||
0 => 'Ativ S',
|
||||
1 => 'ATIV S Neo',
|
||||
),
|
||||
'@BI' =>
|
||||
array (
|
||||
0 => 'Billy 4',
|
||||
1 => 'Billy 4.7',
|
||||
),
|
||||
'@BP' =>
|
||||
array (
|
||||
0 => 'BP30.BM180',
|
||||
),
|
||||
'@C6' =>
|
||||
array (
|
||||
0 => 'C620(d|e|t)!',
|
||||
1 => 'C625(a|b)!',
|
||||
),
|
||||
'@CE' =>
|
||||
array (
|
||||
0 => 'CETUS',
|
||||
),
|
||||
'@CH' =>
|
||||
array (
|
||||
0 => 'CHERRY-MOBILE Alpha Luxe',
|
||||
),
|
||||
'@DO' =>
|
||||
array (
|
||||
0 => 'DolphinCT50',
|
||||
),
|
||||
'@E2' =>
|
||||
array (
|
||||
0 => 'E260T+',
|
||||
),
|
||||
'@E6' =>
|
||||
array (
|
||||
0 => 'E600',
|
||||
),
|
||||
'@ET' =>
|
||||
array (
|
||||
0 => 'Eternity',
|
||||
),
|
||||
'@FI' =>
|
||||
array (
|
||||
0 => 'FierceXL',
|
||||
),
|
||||
'@FO' =>
|
||||
array (
|
||||
0 => 'Focus i917!',
|
||||
1 => 'FOCUS S',
|
||||
),
|
||||
'@FT' =>
|
||||
array (
|
||||
0 => 'FTJ152E',
|
||||
1 => 'FTJ152F',
|
||||
),
|
||||
'@FZ' =>
|
||||
array (
|
||||
0 => 'FZ-E1',
|
||||
),
|
||||
'@GA' =>
|
||||
array (
|
||||
0 => 'Galaxy6',
|
||||
),
|
||||
'@GO' =>
|
||||
array (
|
||||
0 => 'Gold',
|
||||
),
|
||||
'@GT' =>
|
||||
array (
|
||||
0 => 'GT-[IS][0-9]{4,4}!!',
|
||||
),
|
||||
'@GW' =>
|
||||
array (
|
||||
0 => 'GW910',
|
||||
),
|
||||
'@H8' =>
|
||||
array (
|
||||
0 => 'H883G',
|
||||
),
|
||||
'@HA' =>
|
||||
array (
|
||||
0 => 'Harley Davidson',
|
||||
1 => 'Harley-Davidson',
|
||||
2 => 'Haden',
|
||||
),
|
||||
'@HD' =>
|
||||
array (
|
||||
0 => 'HD2',
|
||||
1 => 'HD2(Leo',
|
||||
2 => 'HD2 LEO',
|
||||
3 => '(HD7|.*T92(92|95|96))!',
|
||||
),
|
||||
'@HE' =>
|
||||
array (
|
||||
0 => 'HELSINKI',
|
||||
),
|
||||
'@HT' =>
|
||||
array (
|
||||
0 => 'HTC HD2',
|
||||
1 => 'HTC Mozart',
|
||||
2 => 'htc mpw6958',
|
||||
3 => 'htcmpw6958',
|
||||
4 => 'HTC 7 Trophy',
|
||||
5 => 'HTC Trophy',
|
||||
6 => 'HTC6690LVW',
|
||||
7 => 'HTC6990LVW',
|
||||
8 => 'HTC6990LVW 4G',
|
||||
9 => 'htc 8x',
|
||||
10 => 'HTCPO881',
|
||||
11 => 'HTC6995LVW',
|
||||
),
|
||||
'@HU' =>
|
||||
array (
|
||||
0 => 'HUAWEI Ascend W1!',
|
||||
1 => 'HUAWEI ?W1-(C00|U00|U34)!',
|
||||
2 => 'HUAWEI ?W2-(T00|T01|U00|U051)!',
|
||||
),
|
||||
'@I9' =>
|
||||
array (
|
||||
0 => 'I917',
|
||||
),
|
||||
'@ID' =>
|
||||
array (
|
||||
0 => 'IDOL 4 PRO',
|
||||
1 => 'IDOL 4S with Windows 10',
|
||||
2 => 'id[0-9]{3,3}!!',
|
||||
),
|
||||
'@IM' =>
|
||||
array (
|
||||
0 => 'Impera I',
|
||||
1 => 'Impera M',
|
||||
2 => 'Impera S',
|
||||
),
|
||||
'@IN' =>
|
||||
array (
|
||||
0 => 'InfoPath!',
|
||||
),
|
||||
'@IQ' =>
|
||||
array (
|
||||
0 => 'IQ400W',
|
||||
1 => 'IQ500W',
|
||||
),
|
||||
'@IR' =>
|
||||
array (
|
||||
0 => 'iris Win 1',
|
||||
),
|
||||
'@IS' =>
|
||||
array (
|
||||
0 => 'IS12T',
|
||||
),
|
||||
'@IX' =>
|
||||
array (
|
||||
0 => 'Ixion W 5',
|
||||
),
|
||||
'@LE' =>
|
||||
array (
|
||||
0 => 'LEO',
|
||||
),
|
||||
'@LG' =>
|
||||
array (
|
||||
0 => 'LG-E740!',
|
||||
1 => 'LG-E-?900!',
|
||||
2 => 'LG-E906',
|
||||
3 => 'LG-C900!',
|
||||
),
|
||||
'@LI' =>
|
||||
array (
|
||||
0 => 'Linux!',
|
||||
),
|
||||
'@LU' =>
|
||||
array (
|
||||
0 => '(Lumia ?|Nokia ?)?[0-9]{3,4}!!',
|
||||
),
|
||||
'@M1' =>
|
||||
array (
|
||||
0 => 'M1010',
|
||||
),
|
||||
'@M2' =>
|
||||
array (
|
||||
0 => 'M220!',
|
||||
),
|
||||
'@M3' =>
|
||||
array (
|
||||
0 => 'M310',
|
||||
),
|
||||
'@M5' =>
|
||||
array (
|
||||
0 => 'M5w',
|
||||
),
|
||||
'@MA' =>
|
||||
array (
|
||||
0 => 'Mazaa',
|
||||
),
|
||||
'@ME' =>
|
||||
array (
|
||||
0 => 'MegaFon SP-W1',
|
||||
),
|
||||
'@MI' =>
|
||||
array (
|
||||
0 => 'MICROMAX-W121',
|
||||
1 => 'MI4',
|
||||
2 => 'Microsoft!',
|
||||
),
|
||||
'@MO' =>
|
||||
array (
|
||||
0 => 'MOBILE Alpha Luxe',
|
||||
1 => 'MOBILE Alpha Style',
|
||||
2 => 'MOBILE Alpha View',
|
||||
3 => 'Mondrian',
|
||||
4 => '((7 )?Mozart|.*T86(97|98))!',
|
||||
5 => 'MouseComputer MADOSMA Q501',
|
||||
),
|
||||
'@MW' =>
|
||||
array (
|
||||
0 => 'MWP6885',
|
||||
1 => 'mwp6985',
|
||||
2 => 'MWP-47!',
|
||||
),
|
||||
'@N8' =>
|
||||
array (
|
||||
0 => 'N880e!',
|
||||
),
|
||||
'@NE' =>
|
||||
array (
|
||||
0 => 'NEO',
|
||||
),
|
||||
'@NO' =>
|
||||
array (
|
||||
0 => '(Lumia ?|Nokia ?)?[0-9]{3,4}!!',
|
||||
),
|
||||
'@OM' =>
|
||||
array (
|
||||
0 => 'Omega',
|
||||
1 => 'OM(NI|IN)A ?7!',
|
||||
2 => 'Omnia W',
|
||||
),
|
||||
'@ON' =>
|
||||
array (
|
||||
0 => 'ONE TOUCH 5040X',
|
||||
1 => 'ONIX AWP4-215',
|
||||
),
|
||||
'@PC' =>
|
||||
array (
|
||||
0 => 'PC93100',
|
||||
1 => 'PC40100',
|
||||
2 => 'PC40200',
|
||||
),
|
||||
'@PD' =>
|
||||
array (
|
||||
0 => 'PD67100',
|
||||
),
|
||||
'@PI' =>
|
||||
array (
|
||||
0 => 'PI39100',
|
||||
1 => 'PI86100',
|
||||
),
|
||||
'@PK' =>
|
||||
array (
|
||||
0 => 'PKT-407',
|
||||
),
|
||||
'@PM' =>
|
||||
array (
|
||||
0 => 'PM23300',
|
||||
),
|
||||
'@PR' =>
|
||||
array (
|
||||
0 => 'PRESTIGIO-PSP8500DUO',
|
||||
),
|
||||
'@PS' =>
|
||||
array (
|
||||
0 => 'PSP8400DUO',
|
||||
1 => 'PSP8500DUO',
|
||||
),
|
||||
'@QS' =>
|
||||
array (
|
||||
0 => 'QSMART STORM W408',
|
||||
1 => 'QSMART DREAM W473',
|
||||
2 => 'QSMART STORM W510',
|
||||
),
|
||||
'@QU' =>
|
||||
array (
|
||||
0 => 'Quantum',
|
||||
),
|
||||
'@RA' =>
|
||||
array (
|
||||
0 => '(Radar|.*C110e)!',
|
||||
),
|
||||
'@RI' =>
|
||||
array (
|
||||
0 => 'RIO U',
|
||||
),
|
||||
'@RM' =>
|
||||
array (
|
||||
0 => 'RM-[0-9]{3,4}!!',
|
||||
),
|
||||
'@S5' =>
|
||||
array (
|
||||
0 => 'S58',
|
||||
),
|
||||
'@S6' =>
|
||||
array (
|
||||
0 => 'S606',
|
||||
),
|
||||
'@SC' =>
|
||||
array (
|
||||
0 => 'Schubert!',
|
||||
1 => 'SCH-R860U',
|
||||
2 => 'SCH-I930',
|
||||
),
|
||||
'@SE' =>
|
||||
array (
|
||||
0 => 'SeaRay',
|
||||
1 => 'Semaphore',
|
||||
),
|
||||
'@SG' =>
|
||||
array (
|
||||
0 => 'SG 7',
|
||||
1 => 'SGH-[IT][0-9]{3,3}!!',
|
||||
),
|
||||
'@SM' =>
|
||||
array (
|
||||
0 => 'SM-W750V',
|
||||
),
|
||||
'@SO' =>
|
||||
array (
|
||||
0 => 'SOUL2',
|
||||
),
|
||||
'@SP' =>
|
||||
array (
|
||||
0 => 'Spark',
|
||||
1 => 'SPH-I800',
|
||||
),
|
||||
'@SU' =>
|
||||
array (
|
||||
0 => 'Surround',
|
||||
1 => 'Surface Phone',
|
||||
),
|
||||
'@T6' =>
|
||||
array (
|
||||
0 => 'T698',
|
||||
),
|
||||
'@TA' =>
|
||||
array (
|
||||
0 => 'Taylor',
|
||||
1 => 'Tania',
|
||||
),
|
||||
'@TC' =>
|
||||
array (
|
||||
0 => 'TC70',
|
||||
),
|
||||
'@TG' =>
|
||||
array (
|
||||
0 => 'TG01',
|
||||
),
|
||||
'@TH' =>
|
||||
array (
|
||||
0 => 'Thunder 340W',
|
||||
1 => 'Thunder 450W',
|
||||
),
|
||||
'@TI' =>
|
||||
array (
|
||||
0 => 'Titan',
|
||||
1 => 'Titanium Wind W4',
|
||||
),
|
||||
'@TO' =>
|
||||
array (
|
||||
0 => 'Touch-IT HD7',
|
||||
1 => 'Touch-IT Trophy',
|
||||
),
|
||||
'@TR' =>
|
||||
array (
|
||||
0 => '((7 )?Trophy|.*T8686)!',
|
||||
),
|
||||
'@TS' =>
|
||||
array (
|
||||
0 => 'TSUNAGI',
|
||||
),
|
||||
'@UL' =>
|
||||
array (
|
||||
0 => 'Ultimate',
|
||||
),
|
||||
'@US' =>
|
||||
array (
|
||||
0 => 'USCCHTC-PC93100',
|
||||
1 => 'USCCN859',
|
||||
),
|
||||
'@V9' =>
|
||||
array (
|
||||
0 => 'V965W',
|
||||
),
|
||||
'@VE' =>
|
||||
array (
|
||||
0 => 'Venue Pro',
|
||||
),
|
||||
'@VI' =>
|
||||
array (
|
||||
0 => 'Virtual!',
|
||||
),
|
||||
'@VW' =>
|
||||
array (
|
||||
0 => 'VW820',
|
||||
),
|
||||
'@W1' =>
|
||||
array (
|
||||
0 => 'W1i',
|
||||
1 => 'W10',
|
||||
2 => 'W1-(C00|U00|U34)!',
|
||||
3 => 'W121',
|
||||
),
|
||||
'@W2' =>
|
||||
array (
|
||||
0 => 'W2-(T00|T01|U00|U051)!',
|
||||
),
|
||||
'@W4' =>
|
||||
array (
|
||||
0 => 'W4',
|
||||
),
|
||||
'@WI' =>
|
||||
array (
|
||||
0 => 'WIN HD LTE',
|
||||
1 => 'WIN HD W510l',
|
||||
2 => 'WIN HD W510u',
|
||||
3 => 'WIN JR LTE',
|
||||
4 => 'WIN JR W410a',
|
||||
5 => 'WIN JR W410i',
|
||||
6 => 'WIN JR W410l',
|
||||
7 => 'WIN JR W410u',
|
||||
8 => 'WIN 400',
|
||||
9 => 'WINJOY',
|
||||
10 => 'WinWin',
|
||||
11 => 'Windows Phone 8X by HTC!',
|
||||
12 => 'WindowsPhone8Xby',
|
||||
13 => 'Windows Phone 8S by HTC!',
|
||||
14 => 'WindowsPhone8Sby',
|
||||
15 => 'Win1',
|
||||
16 => 'Win-Q900S',
|
||||
17 => 'Win Q1000',
|
||||
18 => 'WinQ1000',
|
||||
19 => 'Windows!',
|
||||
),
|
||||
'@WP' =>
|
||||
array (
|
||||
0 => 'WP 4.7',
|
||||
),
|
||||
'@XX' =>
|
||||
array (
|
||||
0 => 'XXX!',
|
||||
),
|
||||
);
|
||||
40
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/manufacturer-names.php
vendored
Normal file
40
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/manufacturer-names.php
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
Manufacturers::$GENERIC = [
|
||||
'LG Electronics' => 'LG',
|
||||
'LGE' => 'LG',
|
||||
'TOSHIBA' => 'Toshiba',
|
||||
'SAMSUNG' => 'Samsung',
|
||||
'SHARP' => 'Sharp',
|
||||
'SONY' => 'Sony',
|
||||
];
|
||||
|
||||
Manufacturers::$TELEVISION = [
|
||||
'ALDISUED' => 'Aldi',
|
||||
'BANGOLUFSEN' => 'Bang & Olufsen',
|
||||
'CHANGHONG' => 'Changhong',
|
||||
'changhong' => 'Changhong',
|
||||
'FINLUX' => 'Finlux',
|
||||
'HHW HAIER' => 'Haier',
|
||||
'HITACHI' => 'Hitachi',
|
||||
'HYUNDAI' => 'Hyundai',
|
||||
'inverto' => 'Inverto',
|
||||
'LOEWE' => 'Loewe',
|
||||
'MEDION' => 'Medion',
|
||||
'Nagra OpenTV' => 'NAGRA',
|
||||
'PANASONIC' => 'Panasonic',
|
||||
'Sagemcom_Broadband_SAS' => 'Sagemcom',
|
||||
'SERAPHIC' => 'Seraphic',
|
||||
'selevision' => 'Selevision',
|
||||
'smart' => 'Smart',
|
||||
'Sky_worth' => 'Skyworth',
|
||||
'TechnoTrend Goerler' => 'TechnoTrend',
|
||||
'TechnoTrend Goerler/Kathrein' => 'TechnoTrend',
|
||||
'TELEFUNKEN' => 'Telefunken',
|
||||
'THOM' => 'Thomson',
|
||||
'THOMSON' => 'Thomson',
|
||||
'tv2n' => 'TV2N',
|
||||
'VESTEL' => 'Vestel'
|
||||
];
|
||||
18691
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-android.php
vendored
Normal file
18691
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-android.php
vendored
Normal file
File diff suppressed because it is too large
Load Diff
18
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-asha.php
vendored
Normal file
18
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-asha.php
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$ASHA_MODELS = [
|
||||
'Asha230SingleSIM' => [ 'Nokia', 'Asha 230' ],
|
||||
'Asha230DualSIM' => [ 'Nokia', 'Asha 230' ],
|
||||
'500' => [ 'Nokia', 'Asha 500' ],
|
||||
'Asha500SingleSIM' => [ 'Nokia', 'Asha 500' ],
|
||||
'Asha500DualSIM' => [ 'Nokia', 'Asha 500' ],
|
||||
'501' => [ 'Nokia', 'Asha 501' ],
|
||||
'501s' => [ 'Nokia', 'Asha 501' ],
|
||||
'501.1' => [ 'Nokia', 'Asha 501' ],
|
||||
'501.2' => [ 'Nokia', 'Asha 501' ],
|
||||
'502' => [ 'Nokia', 'Asha 502' ],
|
||||
'503' => [ 'Nokia', 'Asha 503' ],
|
||||
'503s' => [ 'Nokia', 'Asha 503' ],
|
||||
];
|
||||
18
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-bada.php
vendored
Normal file
18
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-bada.php
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$BADA_MODELS = [
|
||||
'GT- ?S52(50|53)!' => [ 'Samsung', 'Wave 525' ],
|
||||
'GT-S53(30|33)!' => [ 'Samsung', 'Wave 533' ],
|
||||
'GT-S5380!' => [ 'Samsung', 'Wave Y' ],
|
||||
'GT-S57(50|53)!' => [ 'Samsung', 'Wave 575' ],
|
||||
'GT-S57(80)!' => [ 'Samsung', 'Wave 578' ],
|
||||
'GT-S72(30|33)!' => [ 'Samsung', 'Wave 723' ],
|
||||
'GT-S7250!' => [ 'Samsung', 'Wave M' ],
|
||||
'GT-S8500!' => [ 'Samsung', 'Wave' ],
|
||||
'SCH-F859!' => [ 'Samsung', 'Wave' ],
|
||||
'GT- ?S8530!' => [ 'Samsung', 'Wave II' ],
|
||||
'GT- ?S8600!' => [ 'Samsung', 'Wave 3' ],
|
||||
'SHW-M410' => [ 'Samsung', 'Wave 3' ]
|
||||
];
|
||||
52
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-blackberry.php
vendored
Normal file
52
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-blackberry.php
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$BLACKBERRY_MODELS = [
|
||||
'9000' => 'Bold',
|
||||
'9600' => 'Bold',
|
||||
'9650' => 'Bold',
|
||||
'9700' => 'Bold',
|
||||
'9780' => 'Bold',
|
||||
'9788' => 'Bold',
|
||||
'9790' => 'Bold',
|
||||
'9900' => 'Bold',
|
||||
'9930' => 'Bold',
|
||||
'8300' => 'Curve',
|
||||
'8310' => 'Curve',
|
||||
'8320' => 'Curve',
|
||||
'8330' => 'Curve',
|
||||
'8350i' => 'Curve',
|
||||
'8520' => 'Curve',
|
||||
'8530' => 'Curve',
|
||||
'8900' => 'Curve',
|
||||
'9220' => 'Curve',
|
||||
'9300' => 'Curve',
|
||||
'9310' => 'Curve',
|
||||
'9315' => 'Curve',
|
||||
'9320' => 'Curve',
|
||||
'9330' => 'Curve',
|
||||
'9350' => 'Curve',
|
||||
'9360' => 'Curve',
|
||||
'9370' => 'Curve',
|
||||
'9380' => 'Curve',
|
||||
'8100' => 'Pearl',
|
||||
'8110' => 'Pearl',
|
||||
'8120' => 'Pearl',
|
||||
'8130' => 'Pearl',
|
||||
'8220' => 'Pearl',
|
||||
'8230' => 'Pearl',
|
||||
'9100' => 'Pearl',
|
||||
'9105' => 'Pearl',
|
||||
'9500' => 'Storm',
|
||||
'9520' => 'Storm2',
|
||||
'9530' => 'Storm',
|
||||
'9550' => 'Storm',
|
||||
'9670' => 'Style',
|
||||
'9800' => 'Torch',
|
||||
'9810' => 'Torch',
|
||||
'9850' => 'Torch',
|
||||
'9860' => 'Torch',
|
||||
'9630' => 'Tour',
|
||||
'9981' => 'Porsche P'
|
||||
];
|
||||
96
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-brew.php
vendored
Normal file
96
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-brew.php
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$BREW_MODELS = [
|
||||
'Coolpad D508' => [ 'Coolpad', 'D508' ],
|
||||
'Coolpad D510' => [ 'Coolpad', 'D510' ],
|
||||
'Coolpad E600' => [ 'Coolpad', 'E600' ],
|
||||
'HUAWEI U526' => [ 'Huawei', 'U526' ],
|
||||
'HUAWEI U528' => [ 'Huawei', 'U528' ],
|
||||
'HUAWEI U2801!' => [ 'Huawei', 'U2801' ],
|
||||
'HUAWEI U5200!' => [ 'Huawei', 'U5200' ],
|
||||
'HUAWEI U5300!' => [ 'Huawei', 'U5300' ],
|
||||
'HUAWEI U5310!' => [ 'Huawei', 'U5310' ],
|
||||
'HUAWEI U6150!' => [ 'Huawei', 'U6150' ],
|
||||
'E4255' => [ 'Kyocera', 'DuraMax E4255' ],
|
||||
'S2151!' => [ 'Kyocera', 'Coast S2151' ],
|
||||
'EX200!' => [ 'Motorola', 'EX200' ],
|
||||
'NOKIA 7705' => [ 'Nokia', '7705 Twist' ],
|
||||
'M260!' => [ 'Samsung', 'Factor' ],
|
||||
'M350!' => [ 'Samsung', 'Seek' ],
|
||||
'M370!' => [ 'Samsung', 'M370' ],
|
||||
'M380!' => [ 'Samsung', 'Trender' ],
|
||||
'M390!' => [ 'Samsung', 'Array' ],
|
||||
'M550!' => [ 'Samsung', 'Exclaim' ],
|
||||
'M560!' => [ 'Samsung', 'Reclaim' ],
|
||||
'SGH-A937!' => [ 'Samsung', 'SCH-A937' ],
|
||||
'SGH-A947!' => [ 'Samsung', 'SCH-A947' ],
|
||||
'SCH-B309!' => [ 'Samsung', 'SCH-B309' ],
|
||||
'SCH-F839' => [ 'Samsung', 'SCH-F839' ],
|
||||
'SCH-M519!' => [ 'Samsung', 'Metro TV' ],
|
||||
'SCH-S559!' => [ 'Samsung', 'SCH-S559' ],
|
||||
'SCH-S579!' => [ 'Samsung', 'SCH-S579' ],
|
||||
'SCH-U380!' => [ 'Samsung', 'Brightside' ],
|
||||
'SCH-U485' => [ 'Samsung', 'Intensity III' ],
|
||||
'SCH-U640!' => [ 'Samsung', 'Convoy' ],
|
||||
'SCH-U660!' => [ 'Samsung', 'Convoy II' ],
|
||||
'SCH-U680!' => [ 'Samsung', 'Convoy 3' ],
|
||||
'SCH-U750!' => [ 'Samsung', 'Alias 2' ],
|
||||
'SCH-U820!' => [ 'Samsung', 'Reality' ],
|
||||
'SCH-U960!' => [ 'Samsung', 'Rogue' ],
|
||||
'SCH-W709!' => [ 'Samsung', 'SCH-W709' ],
|
||||
'SCH-W799!' => [ 'Samsung', 'SCH-W799' ],
|
||||
'sam-r631' => [ 'Samsung', 'Messenger Touch R631' ],
|
||||
'sam-r640' => [ 'Samsung', 'Character R640' ],
|
||||
'sam-r900' => [ 'Samsung', 'Craft R900' ],
|
||||
'SM-B690V' => [ 'Samsung', 'Convoy 4' ],
|
||||
'SPH M330' => [ 'Samsung', 'SPH-M330' ],
|
||||
'SPH-M570' => [ 'Samsung', 'Restore' ],
|
||||
'PLS M330' => [ 'Samsung', 'PLS-M330' ],
|
||||
'Sprint M850' => [ 'Samsung', 'Instinct HD' ],
|
||||
'SCP-3810' => [ 'Sanyo', 'SCP-3810' ],
|
||||
'SCP3810' => [ 'Sanyo', 'SCP-3810' ],
|
||||
'SCP-6750' => [ 'Sanyo', 'Katana Eclipse X' ],
|
||||
'SCP6760' => [ 'Sanyo', 'Incognito' ],
|
||||
'SCP-6760' => [ 'Sanyo', 'Incognito' ],
|
||||
'SCP6780' => [ 'Sanyo', 'Innuendo' ],
|
||||
'HS-E316!' => [ 'Hisense', 'E316' ],
|
||||
'VX5600!' => [ 'LG', 'Accolade' ],
|
||||
'VX9200!' => [ 'LG', 'Env3' ],
|
||||
'VX9600!' => [ 'LG', 'Versa' ],
|
||||
'VX11000!' => [ 'LG', 'Env Touch' ],
|
||||
'VN170!' => [ 'LG', 'Revere 3' ],
|
||||
'VN250!' => [ 'LG', 'Cosmos' ],
|
||||
'VN271!' => [ 'LG', 'Extravert' ],
|
||||
'VN280!' => [ 'LG', 'Extravert 2' ],
|
||||
'VN360!' => [ 'LG', 'Exalt' ],
|
||||
'VN370!' => [ 'LG', 'Exalt II' ],
|
||||
'VN530' => [ 'LG', 'Octane' ],
|
||||
'LG272' => [ 'LG', 'Rumor Reflex' ],
|
||||
'LG510' => [ 'LG', 'Rumor Touch' ],
|
||||
'LN240' => [ 'LG', 'Remarq' ],
|
||||
'LN510' => [ 'LG', 'Rumor Touch' ],
|
||||
'LX610' => [ 'LG', 'Lotus Elite' ],
|
||||
'AX8575' => [ 'LG', 'Chocolate Touch' ],
|
||||
'LGE AX840' => [ 'LG', 'Tritan' ],
|
||||
'LGE LG700' => [ 'LG', 'Bliss' ],
|
||||
'LGE LG840' => [ 'LG', 'Spyder II' ],
|
||||
'LGE UX700' => [ 'LG', 'Bliss' ],
|
||||
'LGE UX840' => [ 'LG', 'Tritan' ],
|
||||
'LGE VX11K' => [ 'LG', 'Env Touch' ],
|
||||
'LGE VX8575' => [ 'LG', 'Chocolate Touch' ],
|
||||
'LGE VX9700' => [ 'LG', 'Dare' ],
|
||||
'P5000' => [ 'Pantech', 'Link II' ],
|
||||
'P6020' => [ 'Pantech', 'Persuit II' ],
|
||||
'P6030' => [ 'Pantech', 'Reneu' ],
|
||||
'CDM8992' => [ 'Pantech', 'Hotshot' ],
|
||||
'CDM8999' => [ 'Pantech', 'Crux' ],
|
||||
'TXT8045' => [ 'Pantech', 'Jest 2' ],
|
||||
'Pantech CDM8992!' => [ 'Pantech', 'Hotshot' ],
|
||||
'Pantech CDM8999!' => [ 'Pantech', 'Crux' ],
|
||||
'Pantech TXT8045!' => [ 'Pantech', 'Jest 2' ],
|
||||
'ZTE F-450!' => [ 'ZTE', 'Adamant' ],
|
||||
'ZTE R516!' => [ 'ZTE', 'R516' ],
|
||||
'ZTE R518!' => [ 'ZTE', 'R518' ],
|
||||
];
|
||||
116
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-feature.php
vendored
Normal file
116
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-feature.php
vendored
Normal file
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
use WhichBrowser\Constants\DeviceType;
|
||||
|
||||
DeviceModels::$FEATURE_MODELS = [
|
||||
'Amstrad Gamma' => [ 'Amstrad', 'E-m@iler Plus', DeviceType::DESKTOP ],
|
||||
'Benefon Q' => [ 'Benefon', 'Q' ],
|
||||
'EF71' => [ 'BenQ-Siemens', 'EF71' ],
|
||||
'Lightpipe' => [ 'Kyocera', 'E1100 Neo' ],
|
||||
'K612' => [ 'Kyocera', 'K612 Strobe' ],
|
||||
'EX115' => [ 'Motorola', 'Starling EX115' ],
|
||||
'EX118' => [ 'Motorola', 'MOTOKEY XT EX118' ],
|
||||
'EX119' => [ 'Motorola', 'Brea EX119' ],
|
||||
'EX128' => [ 'Motorola', 'Kingfisher EX128' ],
|
||||
'EX225' => [ 'Motorola', 'MOTOKEY Social EX225' ],
|
||||
'EX226' => [ 'Motorola', 'MOTOKEY Social EX226' ],
|
||||
'EX430' => [ 'Motorola', 'MotoGo EX430' ],
|
||||
'MOTOQA1' => [ 'Motorola', 'Karma QA1' ],
|
||||
'KC910i' => [ 'LG', 'KC910i Renoir' ],
|
||||
'KP500!' => [ 'LG', 'KP500 Cookie' ],
|
||||
'KP570!' => [ 'LG', 'KP570 Cookie' ],
|
||||
'LG-KU380' => [ 'LG', 'KU380' ],
|
||||
'LG-KU580' => [ 'LG', 'KU580 Hero' ],
|
||||
'LG-KU990' => [ 'LG', 'KU990 Viewty' ],
|
||||
'KU990i' => [ 'LG', 'KU990 Viewty' ],
|
||||
'GM360' => [ 'LG', 'GM360 Viewty Snap' ],
|
||||
'GR700' => [ 'LG', 'GR700 Vu Plus' ],
|
||||
'GS290' => [ 'LG', 'GS290 Cookie Fresh' ],
|
||||
'GS500' => [ 'LG', 'GS500 Cookie Plus' ],
|
||||
'GT500!' => [ 'LG', 'GT500 Puccini' ],
|
||||
'GT550' => [ 'LG', 'GT550 Encore' ],
|
||||
'COCOON' => [ 'O2', 'Cocoon' ],
|
||||
'P7000' => [ 'Pantech', 'Impact' ],
|
||||
'P9020' => [ 'Pantech', 'Pursuit' ],
|
||||
'P9050' => [ 'Pantech', 'Laser' ],
|
||||
'PM-8200' => [ 'Sanyo', 'PM-8200' ],
|
||||
'SCP-5300' => [ 'Sanyo', 'SCP-5300' ],
|
||||
'SCP-5500' => [ 'Sanyo', 'VM4500' ],
|
||||
'SCP-6600' => [ 'Sanyo', 'Katana' ],
|
||||
'PLS6600KJ' => [ 'Sanyo', 'Katana' ],
|
||||
'GT-B2710' => [ 'Samsung', 'Xcover 271' ],
|
||||
'GT-B3210' => [ 'Samsung', 'Corby TXT' ],
|
||||
'GT-B3313' => [ 'Samsung', 'Corby Mate' ],
|
||||
'GT-C3200' => [ 'Samsung', 'Monte Bar' ],
|
||||
'GT-C3222' => [ 'Samsung', 'Ch@t 322' ],
|
||||
'GT-C3322' => [ 'Samsung', 'GT-C3322 Duos' ],
|
||||
'GT-C3500' => [ 'Samsung', 'Ch@t 350' ],
|
||||
'GT-C5010!' => [ 'Samsung', 'C5010 Squash' ],
|
||||
'GT-E1282!' => [ 'Samsung', 'Guru' ],
|
||||
'GT-E2152' => [ 'Samsung', 'GT-E2152 Duos' ],
|
||||
'GT-E2220' => [ 'Samsung', 'Ch@t 220' ],
|
||||
'GT-E2222' => [ 'Samsung', 'Ch@t 222' ],
|
||||
'GT-E2202' => [ 'Samsung', 'Metro' ],
|
||||
'GT-E2250' => [ 'Samsung', 'Utica' ],
|
||||
'GT-E2252' => [ 'Samsung', 'Metro 2252' ],
|
||||
'GT-E3213' => [ 'Samsung', 'E3213 Hero' ],
|
||||
'GT-E3309I' => [ 'Samsung', 'E3309 Manhattan' ],
|
||||
'm3510c' => [ 'Samsung', 'M3510' ],
|
||||
'GT-M8910' => [ 'Samsung', 'M8910 Pixon12' ],
|
||||
'GT-S3332' => [ 'Samsung', 'Ch@t 333' ],
|
||||
'GT-S33(50|53)!' => [ 'Samsung', 'Ch@t 335' ],
|
||||
'GT-S35(70|72)!' => [ 'Samsung', 'Ch@t 357' ],
|
||||
'GT-S5229' => [ 'Samsung', 'Tocco Lite 2' ],
|
||||
'GT-S5270!' => [ 'Samsung', 'Ch@t 527' ],
|
||||
'GT-S5610!' => [ 'Samsung', 'Primo' ],
|
||||
'SCH-W169' => [ 'Samsung', 'W169 Duos' ],
|
||||
'SCH-W279' => [ 'Samsung', 'Primo Duos' ],
|
||||
'SGH-A667' => [ 'Samsung', 'A667 Evergreen' ],
|
||||
'SGH-A697' => [ 'Samsung', 'A697 Sunburst' ],
|
||||
'SGH-A877' => [ 'Samsung', 'A877 Impression' ],
|
||||
'SGH-A927' => [ 'Samsung', 'A927 Flight II' ],
|
||||
'SGH-A997' => [ 'Samsung', 'Rugby III' ],
|
||||
'SGH-D880' => [ 'Samsung', 'D880 Duos' ],
|
||||
'SGH-E250i' => [ 'Samsung', 'E250' ],
|
||||
'SGH-E250V' => [ 'Samsung', 'E250' ],
|
||||
'SGH-G600' => [ 'Samsung', 'G600' ],
|
||||
'SGH-J700i' => [ 'Samsung', 'J700' ],
|
||||
'SGH-J700V' => [ 'Samsung', 'J700' ],
|
||||
'SGH-M200' => [ 'Samsung', 'M200' ],
|
||||
'SGH-S150G' => [ 'Samsung', 'S150 TracFone' ],
|
||||
'SGH-S390G' => [ 'Samsung', 'S390 TracFone' ],
|
||||
'SGH-T189N' => [ 'Samsung', 'Freeform M'],
|
||||
'SGHX660V' => [ 'Samsung', 'X660' ],
|
||||
'SGH-Z107!' => [ 'Samsung', 'Z107' ],
|
||||
'SGH-Z130!' => [ 'Samsung', 'Z130' ],
|
||||
'SGH-Z500!' => [ 'Samsung', 'Z500' ],
|
||||
'SM-B313E' => [ 'Samsung', 'Metro 313' ],
|
||||
'SM-B350E' => [ 'Samsung', 'Metro 350' ],
|
||||
'SM-B360E' => [ 'Samsung', 'Metro 360' ],
|
||||
'SM-B780(A|W)!' => [ 'Samsung', 'Rugby 4' ],
|
||||
'S7350' => [ 'Samsung', 'S7350 Ultra S' ],
|
||||
'sam-r560' => [ 'Samsung', 'Messenger II R560' ],
|
||||
'Sendo Wap' => [ 'Sendo', 'Z100' ],
|
||||
'CK13[ai]?$!' => [ 'Sony Ericsson', 'txt' ],
|
||||
'CK15[ai]?$!' => [ 'Sony Ericsson', 'txt Pro' ],
|
||||
'F100[ai]?$!' => [ 'Sony Ericsson', 'Jalou' ],
|
||||
'J105[ai]?$!' => [ 'Sony Ericsson', 'Naite' ],
|
||||
'J108[ai]?$!' => [ 'Sony Ericsson', 'Cedar' ],
|
||||
'J10(i2?)?$!' => [ 'Sony Ericsson', 'Elm' ],
|
||||
'J20[ai]?$!' => [ 'Sony Ericsson', 'Hazel' ],
|
||||
'U100[ai]?$!' => [ 'Sony Ericsson', 'Yari' ],
|
||||
'U10[ai]?$!' => [ 'Sony Ericsson', 'Aino' ],
|
||||
'W100i?$!' => [ 'Sony Ericsson', 'Spiro' ],
|
||||
'W150i?$!' => [ 'Sony Ericsson', 'Yendo' ],
|
||||
'W20i?$!' => [ 'Sony Ericsson', 'Zylo' ],
|
||||
'WT13i$!' => [ 'Sony Ericsson', 'Mix Walkman' ],
|
||||
'X5i$!' => [ 'Sony Ericsson', 'Xperia Pureness X5' ],
|
||||
'tecnot36' => [ 'Tecno', 'T36' ],
|
||||
'Vodafone 575' => [ 'Vodafone', '575' ],
|
||||
'GT-I6410!' => [ 'Vodafone', '360 M1' ],
|
||||
'GT-I8320!' => [ 'Vodafone', '360 H1' ],
|
||||
'GT-I8330!' => [ 'Vodafone', '360 H2' ],
|
||||
'WIDETEL WCX150' => [ 'Widetel', 'WCX150' ],
|
||||
];
|
||||
43
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-firefoxos.php
vendored
Normal file
43
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-firefoxos.php
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$FIREFOXOS_MODELS = [
|
||||
'ALCATEL ONE TOUCH FIRE' => [ 'Alcatel', 'One Touch Fire' ],
|
||||
'ALCATEL ONE TOUCH 4012A' => [ 'Alcatel', 'One Touch Fire' ],
|
||||
'ALCATEL ONE TOUCH 4012X' => [ 'Alcatel', 'One Touch Fire' ],
|
||||
'ALCATELOneTouch4012A!' => [ 'Alcatel', 'One Touch Fire' ],
|
||||
'ALCATELOneTouch4012X!' => [ 'Alcatel', 'One Touch Fire' ],
|
||||
'OneTouch4019A' => [ 'Alcatel', 'One Touch Fire C' ],
|
||||
'ALCATELOneTouch4019A!' => [ 'Alcatel', 'One Touch Fire C' ],
|
||||
'ALCATELOneTouch4019X!' => [ 'Alcatel', 'One Touch Fire C' ],
|
||||
'ALCATELOneTouch4020D!' => [ 'Alcatel', 'One Touch Fire C' ],
|
||||
'ALCATELOneTouch4022!' => [ 'Alcatel', 'One Touch Pixi 3 (3.5)' ],
|
||||
'ALCATELOneTouch4023!' => [ 'Alcatel', 'One Touch Pixi 3 (3.5)' ],
|
||||
'ALCATELOneTouch6015X!' => [ 'Alcatel', 'One Touch Fire E' ],
|
||||
'HUAWEI Ascend Y300-F1' => [ 'Huawei', 'Ascend Y300 F1' ],
|
||||
'HUAWEIY300-F1' => [ 'Huawei', 'Ascend Y300 F1' ],
|
||||
'LG-D3(00|01)!' => [ 'LG', 'Fireweb' ],
|
||||
'LGL25' => [ 'LG', 'Fx0' ],
|
||||
'madai' => [ 'LG', 'Fx0' ],
|
||||
'Orange KLIF' => [ 'Orange', 'Kilf' ],
|
||||
'Orange KLIFD' => [ 'Orange', 'Kilf' ],
|
||||
'OPEN' => [ 'ZTE', 'Open' ],
|
||||
'ZTEOPEN' => [ 'ZTE', 'Open' ],
|
||||
'OpenC' => [ 'ZTE', 'Open C' ],
|
||||
'Open C' => [ 'ZTE', 'Open C' ],
|
||||
'OPENC2' => [ 'ZTE', 'Open C2' ],
|
||||
'OPEN2' => [ 'ZTE', 'Open II' ],
|
||||
|
||||
'ALCATEL4044[MNOTVW]!' => [ 'Alcatel', 'Go Flip' ],
|
||||
'ALCATEL4044C!' => [ 'Alcatel', 'QUICKFLIP' ],
|
||||
'.LYF\/.F30C!' => [ 'Jio', 'JioPhone F30C' ],
|
||||
'.LYF\/.F101K!' => [ 'Jio', 'JioPhone F101K' ],
|
||||
'LYF\/F30C!' => [ 'Jio', 'JioPhone F30C' ],
|
||||
'LYF\/F41T!' => [ 'Jio', 'JioPhone F41T' ],
|
||||
'LYF\/F50Y!' => [ 'Jio', 'JioPhone F50Y' ],
|
||||
'LYF\/F61F!' => [ 'Jio', 'JioPhone F61F' ],
|
||||
'LYF\/F81E!' => [ 'Jio', 'JioPhone F81E' ],
|
||||
'LYF\/F90M!' => [ 'Jio', 'JioPhone F90M' ],
|
||||
'LYF\/F101K!' => [ 'Jio', 'JioPhone F101K' ],
|
||||
];
|
||||
103
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-ios.php
vendored
Normal file
103
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-ios.php
vendored
Normal file
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
use WhichBrowser\Constants\DeviceType;
|
||||
|
||||
DeviceModels::$IOS_MODELS = [
|
||||
|
||||
/* Generic names */
|
||||
'iPhone' => [ 'Apple', 'iPhone', DeviceType::MOBILE ],
|
||||
'iPhone 3G' => [ 'Apple', 'iPhone 3G', DeviceType::MOBILE ],
|
||||
'iPhone 3GS' => [ 'Apple', 'iPhone 3GS', DeviceType::MOBILE ],
|
||||
'iPhone 4' => [ 'Apple', 'iPhone 4', DeviceType::MOBILE ],
|
||||
'iPhone 4S' => [ 'Apple', 'iPhone 4S', DeviceType::MOBILE ],
|
||||
'iPhone 5' => [ 'Apple', 'iPhone 5', DeviceType::MOBILE ],
|
||||
'iPhone 5c' => [ 'Apple', 'iPhone 5c', DeviceType::MOBILE ],
|
||||
'iPhone 5s' => [ 'Apple', 'iPhone 5s', DeviceType::MOBILE ],
|
||||
'iPhone 6' => [ 'Apple', 'iPhone 6', DeviceType::MOBILE ],
|
||||
'iPhone 6 Plus' => [ 'Apple', 'iPhone 6 Plus', DeviceType::MOBILE ],
|
||||
'iPod' => [ 'Apple', 'iPod touch', DeviceType::MEDIA ],
|
||||
'iPod touch' => [ 'Apple', 'iPod touch', DeviceType::MEDIA ],
|
||||
'iPad' => [ 'Apple', 'iPad', DeviceType::TABLET ],
|
||||
|
||||
/* Offical gestalt names */
|
||||
'iPhone1,1' => [ 'Apple', 'iPhone', DeviceType::MOBILE ],
|
||||
'iPhone1,2' => [ 'Apple', 'iPhone 3G', DeviceType::MOBILE ],
|
||||
'iPhone2,1' => [ 'Apple', 'iPhone 3GS', DeviceType::MOBILE ],
|
||||
'iPhone3,1' => [ 'Apple', 'iPhone 4', DeviceType::MOBILE ],
|
||||
'iPhone3,2' => [ 'Apple', 'iPhone 4', DeviceType::MOBILE ],
|
||||
'iPhone3,3' => [ 'Apple', 'iPhone 4', DeviceType::MOBILE ],
|
||||
'iPhone4,1' => [ 'Apple', 'iPhone 4S', DeviceType::MOBILE ],
|
||||
'iPhone5,1' => [ 'Apple', 'iPhone 5', DeviceType::MOBILE ],
|
||||
'iPhone5,2' => [ 'Apple', 'iPhone 5', DeviceType::MOBILE ],
|
||||
'iPhone5,3' => [ 'Apple', 'iPhone 5c', DeviceType::MOBILE ],
|
||||
'iPhone5,4' => [ 'Apple', 'iPhone 5c', DeviceType::MOBILE ],
|
||||
'iPhone6,1' => [ 'Apple', 'iPhone 5s', DeviceType::MOBILE ],
|
||||
'iPhone6,2' => [ 'Apple', 'iPhone 5s', DeviceType::MOBILE ],
|
||||
'iPhone7,1' => [ 'Apple', 'iPhone 6 Plus', DeviceType::MOBILE ],
|
||||
'iPhone7,2' => [ 'Apple', 'iPhone 6', DeviceType::MOBILE ],
|
||||
'iPhone8,1' => [ 'Apple', 'iPhone 6s', DeviceType::MOBILE ],
|
||||
'iPhone8,2' => [ 'Apple', 'iPhone 6s Plus', DeviceType::MOBILE ],
|
||||
'iPhone8,4' => [ 'Apple', 'iPhone SE', DeviceType::MOBILE ],
|
||||
'iPhone9,1' => [ 'Apple', 'iPhone 7', DeviceType::MOBILE ],
|
||||
'iPhone9,2' => [ 'Apple', 'iPhone 7 Plus', DeviceType::MOBILE ],
|
||||
'iPhone9,3' => [ 'Apple', 'iPhone 7', DeviceType::MOBILE ],
|
||||
'iPhone9,4' => [ 'Apple', 'iPhone 7 Plus', DeviceType::MOBILE ],
|
||||
'iPhone10,1' => [ 'Apple', 'iPhone 8', DeviceType::MOBILE ],
|
||||
'iPhone10,2' => [ 'Apple', 'iPhone 8 Plus', DeviceType::MOBILE ],
|
||||
'iPhone10,3' => [ 'Apple', 'iPhone X', DeviceType::MOBILE ],
|
||||
'iPhone10,4' => [ 'Apple', 'iPhone 8', DeviceType::MOBILE ],
|
||||
'iPhone10,5' => [ 'Apple', 'iPhone 8 Plus', DeviceType::MOBILE ],
|
||||
'iPhone10,6' => [ 'Apple', 'iPhone X', DeviceType::MOBILE ],
|
||||
'iPhone11,2' => [ 'Apple', 'iPhone XS', DeviceType::MOBILE ],
|
||||
'iPhone11,4' => [ 'Apple', 'iPhone XS Max', DeviceType::MOBILE ],
|
||||
'iPhone11,6' => [ 'Apple', 'iPhone XS Max', DeviceType::MOBILE ],
|
||||
'iPhone11,8' => [ 'Apple', 'iPhone XR', DeviceType::MOBILE ],
|
||||
'iPod1,1' => [ 'Apple', 'iPod touch', DeviceType::MEDIA ],
|
||||
'iPod2,1' => [ 'Apple', 'iPod touch (2nd gen)', DeviceType::MEDIA ],
|
||||
'iPod3,1' => [ 'Apple', 'iPod touch (3rd gen)', DeviceType::MEDIA ],
|
||||
'iPod4,1' => [ 'Apple', 'iPod touch (4th gen)', DeviceType::MEDIA ],
|
||||
'iPod5,1' => [ 'Apple', 'iPod touch (5th gen)', DeviceType::MEDIA ],
|
||||
'iPod7,1' => [ 'Apple', 'iPod touch (6th gen)', DeviceType::MEDIA ],
|
||||
'iPad1,1' => [ 'Apple', 'iPad', DeviceType::TABLET ],
|
||||
'iPad1,2' => [ 'Apple', 'iPad 2', DeviceType::TABLET ],
|
||||
'iPad2,1' => [ 'Apple', 'iPad 2', DeviceType::TABLET ],
|
||||
'iPad2,2' => [ 'Apple', 'iPad 2', DeviceType::TABLET ],
|
||||
'iPad2,3' => [ 'Apple', 'iPad 2', DeviceType::TABLET ],
|
||||
'iPad2,4' => [ 'Apple', 'iPad 2', DeviceType::TABLET ],
|
||||
'iPad2,5' => [ 'Apple', 'iPad mini', DeviceType::TABLET ],
|
||||
'iPad2,6' => [ 'Apple', 'iPad mini', DeviceType::TABLET ],
|
||||
'iPad2,7' => [ 'Apple', 'iPad mini', DeviceType::TABLET ],
|
||||
'iPad3,1' => [ 'Apple', 'iPad (3rd gen)', DeviceType::TABLET ],
|
||||
'iPad3,2' => [ 'Apple', 'iPad (3rd gen)', DeviceType::TABLET ],
|
||||
'iPad3,3' => [ 'Apple', 'iPad (3rd gen)', DeviceType::TABLET ],
|
||||
'iPad3,4' => [ 'Apple', 'iPad (4th gen)', DeviceType::TABLET ],
|
||||
'iPad3,5' => [ 'Apple', 'iPad (4th gen)', DeviceType::TABLET ],
|
||||
'iPad3,6' => [ 'Apple', 'iPad (4th gen)', DeviceType::TABLET ],
|
||||
'iPad4,1' => [ 'Apple', 'iPad Air', DeviceType::TABLET ],
|
||||
'iPad4,2' => [ 'Apple', 'iPad Air', DeviceType::TABLET ],
|
||||
'iPad4,3' => [ 'Apple', 'iPad Air', DeviceType::TABLET ],
|
||||
'iPad4,4' => [ 'Apple', 'iPad mini 2', DeviceType::TABLET ],
|
||||
'iPad4,5' => [ 'Apple', 'iPad mini 2', DeviceType::TABLET ],
|
||||
'iPad4,6' => [ 'Apple', 'iPad mini 2', DeviceType::TABLET ],
|
||||
'iPad4,7' => [ 'Apple', 'iPad mini 3', DeviceType::TABLET ],
|
||||
'iPad4,8' => [ 'Apple', 'iPad mini 3', DeviceType::TABLET ],
|
||||
'iPad4,9' => [ 'Apple', 'iPad mini 3', DeviceType::TABLET ],
|
||||
'iPad5,1' => [ 'Apple', 'iPad mini 4', DeviceType::TABLET ],
|
||||
'iPad5,2' => [ 'Apple', 'iPad mini 4', DeviceType::TABLET ],
|
||||
'iPad5,3' => [ 'Apple', 'iPad Air 2', DeviceType::TABLET ],
|
||||
'iPad5,4' => [ 'Apple', 'iPad Air 2', DeviceType::TABLET ],
|
||||
'iPad6,3' => [ 'Apple', 'iPad Pro (9.7″)', DeviceType::TABLET ],
|
||||
'iPad6,4' => [ 'Apple', 'iPad Pro (9.7″)', DeviceType::TABLET ],
|
||||
'iPad6,7' => [ 'Apple', 'iPad Pro (12.9″)', DeviceType::TABLET ],
|
||||
'iPad6,8' => [ 'Apple', 'iPad Pro (12.9″)', DeviceType::TABLET ],
|
||||
'iPad6,11' => [ 'Apple', 'iPad (5th gen)', DeviceType::TABLET ],
|
||||
'iPad6,12' => [ 'Apple', 'iPad (5th gen)', DeviceType::TABLET ],
|
||||
'iPad7,1' => [ 'Apple', 'iPad Pro (12.9″, 2nd gen)', DeviceType::TABLET ],
|
||||
'iPad7,2' => [ 'Apple', 'iPad Pro (12.9″, 2nd gen)', DeviceType::TABLET ],
|
||||
'iPad7,3' => [ 'Apple', 'iPad Pro (10.5″)', DeviceType::TABLET ],
|
||||
'iPad7,4' => [ 'Apple', 'iPad Pro (10.5″)', DeviceType::TABLET ],
|
||||
'iPad7,5' => [ 'Apple', 'iPad (9.7″, 6th gen)', DeviceType::TABLET ],
|
||||
'iPad7,6' => [ 'Apple', 'iPad (9.7″, 6th gen)', DeviceType::TABLET ],
|
||||
];
|
||||
353
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-kddi.php
vendored
Normal file
353
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-kddi.php
vendored
Normal file
@@ -0,0 +1,353 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$KDDI_MODELS = [
|
||||
'KC3Q' => [ 'iida', 'misora' ], // KYX02 by Kyocera
|
||||
'KC3S' => [ 'iida', 'PRISMOID' ], // KYX03 by Kyocera
|
||||
'KC3V' => [ 'iida', 'lotta' ], // KYX04 by Kyocera
|
||||
'ST22' => [ 'iida', 'INFOBAR' ], // A5307ST by Sanyo
|
||||
'ST33' => [ 'iida', 'INFOBAR 2' ], // W55SA by Sanyo
|
||||
'SN3K' => [ 'iida', 'G9' ], // SOX01 by Sony Ericsson
|
||||
'SN3T' => [ 'iida', 'G11' ], // SOX02 by Sony Ericsson
|
||||
'TS3Q' => [ 'iida', 'PLY' ], // TSX04 by Toshiba
|
||||
'TS3U' => [ 'iida', 'LIGHT POOL' ], // by Toshiba
|
||||
'TS3W' => [ 'iida', 'X-RAY' ], // by Toshiba
|
||||
|
||||
'CA11' => [ 'Casio', 'C303CA' ],
|
||||
'CA12' => [ 'Casio', 'C311CA' ],
|
||||
'CA13' => [ 'Casio', 'C409CA' ],
|
||||
'CA14' => [ 'Casio', 'C452CA' ],
|
||||
'CA21' => [ 'Casio', 'A3012CA' ],
|
||||
'CA22' => [ 'Casio', 'A5302CA' ],
|
||||
'CA23' => [ 'Casio', 'A5401CA' ],
|
||||
'CA24' => [ 'Casio', 'A5403CA' ],
|
||||
'CA25' => [ 'Casio', 'A5406CA' ],
|
||||
'CA26' => [ 'Casio', 'A5407CA' ],
|
||||
'CA27' => [ 'Casio', 'A5512CA' ],
|
||||
'CA28' => [ 'Casio', 'GzOne Type-R A5513CA' ],
|
||||
'CA31' => [ 'Casio', 'W21CA' ],
|
||||
'CA32' => [ 'Casio', 'W31CA' ],
|
||||
'CA33' => [ 'Casio', 'W41CA' ],
|
||||
'CA34' => [ 'Casio', 'W42CA' ],
|
||||
'CA35' => [ 'Casio', 'W43CA' ],
|
||||
'CA36' => [ 'Casio', 'E03CA' ],
|
||||
'CA37' => [ 'Casio', 'W51CA' ],
|
||||
'CA38' => [ 'Casio', 'W52CA' ],
|
||||
'CA39' => [ 'Casio', 'W53CA' ],
|
||||
'CA3A' => [ 'Casio', 'W61CA' ],
|
||||
'CA3B' => [ 'Casio', 'W62CA' ],
|
||||
'CA3C' => [ 'Casio', 'W63CA' ],
|
||||
'CA3D' => [ 'Casio', 'CA001' ],
|
||||
'CA3E' => [ 'Casio', 'CA002' ],
|
||||
'CA3F' => [ 'Casio', 'CA003' ],
|
||||
'CA3G' => [ 'Casio', 'CA004' ],
|
||||
'CA3H' => [ 'Casio', 'CA005' ],
|
||||
'CA3I' => [ 'Casio', 'GzOne Type-X CAY01' ],
|
||||
'CA3J' => [ 'Casio', 'CA006' ],
|
||||
'CA3K' => [ 'Casio', 'CA007' ],
|
||||
'DN01' => [ 'Denso', 'C202DE' ],
|
||||
'DN11' => [ 'Denso', 'C402DE' ],
|
||||
'ERK0' => [ 'Ericsson', 'R280' ],
|
||||
'FJ31' => [ 'Fujitsu', 'F001' ],
|
||||
'HI01' => [ 'Hitachi', 'C201H' ],
|
||||
'HI02' => [ 'Hitachi', 'C201H' ],
|
||||
'HI11' => [ 'Hitachi', 'C302H' ],
|
||||
'HI12' => [ 'Hitachi', 'C309H' ],
|
||||
'HI13' => [ 'Hitachi', 'C407H' ],
|
||||
'HI14' => [ 'Hitachi', 'C451H' ],
|
||||
'HI21' => [ 'Hitachi', 'C3001H' ],
|
||||
'HI23' => [ 'Hitachi', 'A5303H' ],
|
||||
'HI24' => [ 'Hitachi', 'A5303H II' ],
|
||||
'HI31' => [ 'Hitachi', 'W11H' ],
|
||||
'HI32' => [ 'Hitachi', 'W21H' ],
|
||||
'HI33' => [ 'Hitachi', 'W22H' ],
|
||||
'HI34' => [ 'Hitachi', 'PENCK W31H' ],
|
||||
'HI35' => [ 'Hitachi', 'W32H' ],
|
||||
'HI36' => [ 'Hitachi', 'W41H' ],
|
||||
'HI37' => [ 'Hitachi', 'W42H' ],
|
||||
'HI38' => [ 'Hitachi', 'W43H' ],
|
||||
'HI39' => [ 'Hitachi', 'W51H' ],
|
||||
'HI3A' => [ 'Hitachi', 'W52H' ],
|
||||
'HI3B' => [ 'Hitachi', 'W53H' ],
|
||||
'HI3C' => [ 'Hitachi', 'W61H' ],
|
||||
'HI3D' => [ 'Hitachi', 'W62H' ],
|
||||
'HI3E' => [ 'Hitachi', 'W63H' ],
|
||||
'HI3F' => [ 'Hitachi', 'H001' ], // HI001
|
||||
'HI3G' => [ 'Hitachi', 'Mobile Hi-Vision CAM Wooo HIY01' ],
|
||||
'HI3H' => [ 'Hitachi', 'beskey HIY02' ],
|
||||
'KC11' => [ 'Kyocera', 'C307K' ],
|
||||
'KC12' => [ 'Kyocera', 'C313K' ],
|
||||
'KC13' => [ 'Kyocera', 'C414K' ],
|
||||
'KC14' => [ 'Kyocera', 'A1012K' ],
|
||||
'KC15' => [ 'Kyocera', 'A1013K' ],
|
||||
'KC21' => [ 'Kyocera', 'C3002K' ],
|
||||
'KC22' => [ 'Kyocera', 'A5305K' ],
|
||||
'KC23' => [ 'Kyocera', 'A1401K' ],
|
||||
'KC24' => [ 'Kyocera', 'A5502K' ],
|
||||
'KC25' => [ 'Kyocera', 'A5502K' ],
|
||||
'KC26' => [ 'Kyocera', 'A1403K' ],
|
||||
'KC27' => [ 'Kyocera', 'A5515K' ],
|
||||
'KC28' => [ 'Kyocera', 'A5521K' ],
|
||||
'KC29' => [ 'Kyocera', 'A5526K' ],
|
||||
'KC2A' => [ 'Kyocera', 'A5528K' ],
|
||||
'KC31' => [ 'Kyocera', 'W11K' ],
|
||||
'KC32' => [ 'Kyocera', 'W21K' ],
|
||||
'KC33' => [ 'Kyocera', 'W31K' ],
|
||||
'KC34' => [ 'Kyocera', 'W32K' ],
|
||||
'KC35' => [ 'Kyocera', 'W41K' ],
|
||||
'KC36' => [ 'Kyocera', 'W42K' ],
|
||||
'KC37' => [ 'Kyocera', 'W43K' ],
|
||||
'KC38' => [ 'Kyocera', 'W44K' ],
|
||||
'KC39' => [ 'Kyocera', 'W51K' ],
|
||||
'KC3A' => [ 'Kyocera', 'MEDIA SKIN W52K' ],
|
||||
'KC3B' => [ 'Kyocera', 'W53K/W64K' ],
|
||||
'KC3D' => [ 'Kyocera', 'W61K' ],
|
||||
'KC3E' => [ 'Kyocera', 'W44K II' ],
|
||||
'KC3G' => [ 'Kyocera', 'W62K' ],
|
||||
'KC3H' => [ 'Kyocera', 'W63K' ],
|
||||
'KC3I' => [ 'Kyocera', 'W65K' ],
|
||||
'KC3K' => [ 'Kyocera', 'W63K' ],
|
||||
'KC3M' => [ 'Kyocera', 'K001' ], // KY001
|
||||
'KC3N' => [ 'Kyocera', 'NS01' ], // KYX01
|
||||
'KC3O' => [ 'Kyocera', 'K002' ], // KY002
|
||||
'KC3P' => [ 'Kyocera', 'K003' ], // KY003
|
||||
'KC3R' => [ 'Kyocera', 'SA001' ],
|
||||
'KC3T' => [ 'Kyocera', 'E07K' ],
|
||||
'KC3U' => [ 'Kyocera', 'K004' ], // KY004
|
||||
'KC3W' => [ 'Kyocera', 'mamorino' ], // KYY01
|
||||
'KC3X' => [ 'Kyocera', 'SA002' ],
|
||||
'KC3Y' => [ 'Kyocera', 'K005' ], // KY005
|
||||
'KC3Z' => [ 'Kyocera', 'K006' ], // KY006
|
||||
'KC41' => [ 'Kyocera', 'K006' ],
|
||||
'KC42' => [ 'Kyocera', 'K007' ], // KY007
|
||||
'KC43' => [ 'Kyocera', 'K008' ], // KY008
|
||||
'KC44' => [ 'Kyocera', 'mamorino 2' ], // KYY02
|
||||
'KC45' => [ 'Kyocera', 'K010' ], // KY010
|
||||
'KC46' => [ 'Kyocera', 'K009' ], // KY009
|
||||
'KC47' => [ 'Kyocera', 'Mi-Look' ],
|
||||
'KC48' => [ 'Kyocera', 'E10K' ],
|
||||
'KC4A' => [ 'Kyocera', 'K011' ],
|
||||
'KCC1' => [ 'Kyocera', 'D303K' ],
|
||||
'KCC2' => [ 'Kyocera', 'D304K' ],
|
||||
'KCI1' => [ 'Kyocera', '703G' ],
|
||||
'KCI2' => [ 'Kyocera', '702G' ],
|
||||
'KCT1' => [ 'Kyocera', 'TK01' ],
|
||||
'KCT2' => [ 'Kyocera', 'TK02' ],
|
||||
'KCT3' => [ 'Kyocera', 'TK02' ],
|
||||
'KCT4' => [ 'Kyocera', 'TK03' ],
|
||||
'KCT5' => [ 'Kyocera', 'TK04' ],
|
||||
'KCT6' => [ 'Kyocera', 'TK05' ],
|
||||
'KCT7' => [ 'Kyocera', 'TK11' ],
|
||||
'KCT8' => [ 'Kyocera', 'TK12' ],
|
||||
'KCT9' => [ 'Kyocera', 'TK21' ],
|
||||
'KCTA' => [ 'Kyocera', 'TK22' ],
|
||||
'KCTB' => [ 'Kyocera', 'TK23' ],
|
||||
'KCTC' => [ 'Kyocera', 'TK31' ],
|
||||
'MA11' => [ 'Panasonic', 'C308P' ],
|
||||
'MA12' => [ 'Panasonic', 'C308P' ],
|
||||
'MA13' => [ 'Panasonic', 'C408P' ],
|
||||
'MA21' => [ 'Panasonic', 'C3003P' ],
|
||||
'MA31' => [ 'Panasonic', 'W51P' ],
|
||||
'MA32' => [ 'Panasonic', 'W52P' ],
|
||||
'MA33' => [ 'Panasonic', 'W61P' ],
|
||||
'MA34' => [ 'Panasonic', 'W62P' ],
|
||||
'MA35' => [ 'Panasonic', 'P001' ],
|
||||
'MAC1' => [ 'Panasonic', 'D305P' ],
|
||||
'MAC2' => [ 'Panasonic', 'D305P' ],
|
||||
'MAI1' => [ 'Panasonic', '704G' ],
|
||||
'MAI2' => [ 'Panasonic', '704G' ],
|
||||
'MAT1' => [ 'Panasonic', 'TP01' ],
|
||||
'MAT2' => [ 'Panasonic', 'TP01' ],
|
||||
'MAT3' => [ 'Panasonic', 'TP11' ],
|
||||
'MIT1' => [ 'Mitsubishi', 'TD11' ],
|
||||
'PT21' => [ 'Pantech', 'A1405PT' ],
|
||||
'PT23' => [ 'Pantech', 'A1407PT' ],
|
||||
'PT33' => [ 'Pantech', 'W61PT' ],
|
||||
'PT34' => [ 'Pantech', 'W62PT' ],
|
||||
'PT35' => [ 'Pantech', 'NS02' ],
|
||||
'PT36' => [ 'Pantech', 'PT002' ],
|
||||
'SA21' => [ 'Sanyo', 'A3011SA' ],
|
||||
'SA22' => [ 'Sanyo', 'A3015SA' ],
|
||||
'SA24' => [ 'Sanyo', 'A1302SA' ],
|
||||
'SA25' => [ 'Sanyo', 'A1303SA' ],
|
||||
'SA26' => [ 'Sanyo', 'A5503SA' ],
|
||||
'SA27' => [ 'Sanyo', 'A5505SA' ],
|
||||
'SA28' => [ 'Sanyo', 'A1305SA' ],
|
||||
'SA29' => [ 'Sanyo', 'A5522SA' ],
|
||||
'SA2A' => [ 'Sanyo', 'A5527SA' ],
|
||||
'SA31' => [ 'Sanyo', 'W21SA' ],
|
||||
'SA32' => [ 'Sanyo', 'W22SA' ],
|
||||
'SA33' => [ 'Sanyo', 'W31SA' ],
|
||||
'SA34' => [ 'Sanyo', 'W32SA' ],
|
||||
'SA35' => [ 'Sanyo', 'W33SA' ],
|
||||
'SA36' => [ 'Sanyo', 'W41SA' ],
|
||||
'SA37' => [ 'Sanyo', 'E02SA' ],
|
||||
'SA38' => [ 'Sanyo', 'W43SA' ],
|
||||
'SA39' => [ 'Sanyo', 'W51SA' ],
|
||||
'SA3A' => [ 'Sanyo', 'W52SA' ],
|
||||
'SA3B' => [ 'Sanyo', 'W54SA' ],
|
||||
'SA3C' => [ 'Sanyo', 'W61SA' ],
|
||||
'SA3D' => [ 'Sanyo', 'W63SA' ],
|
||||
'SA3E' => [ 'Sanyo', 'W64SA' ],
|
||||
'SY12' => [ 'Sanyo', 'C401SA' ],
|
||||
'SY13' => [ 'Sanyo', 'C405SA' ],
|
||||
'SY14' => [ 'Sanyo', 'C412SA' ],
|
||||
'SY15' => [ 'Sanyo', 'C1001SA' ],
|
||||
'SYC1' => [ 'Sanyo', 'D301SA' ],
|
||||
'SYT1' => [ 'Sanyo', 'TS01' ],
|
||||
'SYT2' => [ 'Sanyo', 'TS02' ],
|
||||
'SYT3' => [ 'Sanyo', 'TS11' ],
|
||||
'SYT4' => [ 'Sanyo', 'TS31' ],
|
||||
'SH31' => [ 'Sharp', 'W41SH' ],
|
||||
'SH32' => [ 'Sharp', 'W51SH' ],
|
||||
'SH33' => [ 'Sharp', 'W52SH' ],
|
||||
'SH34' => [ 'Sharp', 'W61SH' ],
|
||||
'SH35' => [ 'Sharp', 'W62SH' ],
|
||||
'SH36' => [ 'Sharp', 'URBANO W63SH' ],
|
||||
'SH37' => [ 'Sharp', 'W64SH' ],
|
||||
'SH38' => [ 'Sharp', 'SH001' ],
|
||||
'SH39' => [ 'Sharp', 'E05SH' ],
|
||||
'SH3A' => [ 'Sharp', 'E06SH' ],
|
||||
'SH3B' => [ 'Sharp', 'SH002' ],
|
||||
'SH3C' => [ 'Sharp', 'Sportio water beat SHY01' ],
|
||||
'SH3D' => [ 'Sharp', 'SH003' ],
|
||||
'SH3E' => [ 'Sharp', 'SH004' ],
|
||||
'SH3F' => [ 'Sharp', 'SH005' ],
|
||||
'SH3G' => [ 'Sharp', 'SH006' ],
|
||||
'SH3H' => [ 'Sharp', 'SH007' ],
|
||||
'SH3I' => [ 'Sharp', 'SH008' ],
|
||||
'SH3J' => [ 'Sharp', 'SH009' ],
|
||||
'SH3K' => [ 'Sharp', 'SH010' ],
|
||||
'SH3L' => [ 'Sharp', 'SH011' ],
|
||||
'SN11' => [ 'Sony', 'C305S' ],
|
||||
'SN13' => [ 'Sony', 'C406S' ],
|
||||
'SN14' => [ 'Sony', 'C404S' ],
|
||||
'SN15' => [ 'Sony', 'C413S' ],
|
||||
'SN16' => [ 'Sony', 'C413S' ],
|
||||
'SN17' => [ 'Sony Ericsson', 'C1002S' ],
|
||||
'SN21' => [ 'Sony Ericsson', 'A3014S' ],
|
||||
'SN22' => [ 'Sony Ericsson', 'A1101S' ],
|
||||
'SN23' => [ 'Sony Ericsson', 'A1301S' ],
|
||||
'SN24' => [ 'Sony Ericsson', 'A5402S' ],
|
||||
'SN25' => [ 'Sony Ericsson', 'A5404S' ],
|
||||
'SN26' => [ 'Sony Ericsson', 'A1402S' ],
|
||||
'SN27' => [ 'Sony Ericsson', 'A1402S II' ],
|
||||
'SN28' => [ 'Sony Ericsson', 'A1402S II' ],
|
||||
'SN29' => [ 'Sony Ericsson', 'A1404S' ],
|
||||
'SN31' => [ 'Sony Ericsson', 'W21S' ],
|
||||
'SN32' => [ 'Sony Ericsson', 'W31S' ],
|
||||
'SN33' => [ 'Sony Ericsson', 'W32S' ],
|
||||
'SN34' => [ 'Sony Ericsson', 'W41S' ],
|
||||
'SN35' => [ 'Sony Ericsson', 'EZ FeliCa W32S' ],
|
||||
'SN36' => [ 'Sony Ericsson', 'W42S' ],
|
||||
'SN37' => [ 'Sony Ericsson', 'W43S' ],
|
||||
'SN38' => [ 'Sony Ericsson', 'W44S' ],
|
||||
'SN39' => [ 'Sony Ericsson', 'W51S' ],
|
||||
'SN3A' => [ 'Sony Ericsson', 'W52S' ],
|
||||
'SN3B' => [ 'Sony Ericsson', 'W53S' ],
|
||||
'SN3C' => [ 'Sony Ericsson', 'W54S' ],
|
||||
'SN3D' => [ 'Sony Ericsson', 'W61S' ],
|
||||
'SN3E' => [ 'Sony Ericsson', 'W62S' ],
|
||||
'SN3F' => [ 'Sony Ericsson', 're W63S' ],
|
||||
'SN3G' => [ 'Sony Ericsson', 'W64S' ],
|
||||
'SN3H' => [ 'Sony Ericsson', 'Xmini W65S' ],
|
||||
'SN3I' => [ 'Sony Ericsson', 'Premier3 SOY01' ],
|
||||
'SN3J' => [ 'Sony Ericsson', 'S001' ],
|
||||
'SN3L' => [ 'Sony Ericsson', 'BRAVIA Phone U1 SOY02' ],
|
||||
'SN3M' => [ 'Sony Ericsson', 'S002' ],
|
||||
'SN3N' => [ 'Sony Ericsson', 'URBANO BARONE SOY03' ],
|
||||
'SN3O' => [ 'Sony Ericsson', 'S003' ],
|
||||
'SN3P' => [ 'Sony Ericsson', 'S004' ],
|
||||
'SN3Q' => [ 'Sony Ericsson', 'S005' ],
|
||||
'SN3R' => [ 'Sony Ericsson', 'URBANO MOND SOY04' ],
|
||||
'SN3S' => [ 'Sony Ericsson', 'S006' ],
|
||||
'SN3U' => [ 'Sony Ericsson', 'S007' ],
|
||||
'SN3V' => [ 'Sony Ericsson', 'URBANO AFFARE SOY05' ],
|
||||
'ST11' => [ 'Sanyo', 'C403ST' ],
|
||||
'ST12' => [ 'Sanyo', 'C411ST' ],
|
||||
'ST13' => [ 'Sanyo', 'A1011ST' ],
|
||||
'ST14' => [ 'Sanyo', 'A1014ST' ],
|
||||
'ST21' => [ 'Sanyo', 'A5306ST' ],
|
||||
'ST23' => [ 'Sanyo', 'A5405SA' ],
|
||||
'ST24' => [ 'Sanyo', 'A5507SA' ],
|
||||
'ST25' => [ 'Sanyo', 'talby A5508SA' ],
|
||||
'ST26' => [ 'Sanyo', 'Sweets A5510SA' ],
|
||||
'ST27' => [ 'Sanyo', 'A5514SA' ],
|
||||
'ST28' => [ 'Sanyo', 'A5518SA' ],
|
||||
'ST29' => [ 'Sanyo', 'Sweets pure A5519SA' ],
|
||||
'ST2A' => [ 'Sanyo', 'A5520SA' ],
|
||||
'ST2C' => [ 'Sanyo', 'Sweets cute A5524SA' ],
|
||||
'ST2D' => [ 'Sanyo', 'A5525SA' ],
|
||||
'ST31' => [ 'Sanyo', 'W42SA' ],
|
||||
'ST32' => [ 'Sanyo', 'W53SA' ],
|
||||
'ST34' => [ 'Sanyo', 'W62SA' ],
|
||||
'SY01' => [ 'Sanyo', 'SCP-4000' ],
|
||||
'SY02' => [ 'Sanyo', 'SCP-4500' ],
|
||||
'SY03' => [ 'Sanyo', 'SCP-5000' ],
|
||||
'SY11' => [ 'Sanyo', 'C304SA' ],
|
||||
'SY12' => [ 'Sanyo', 'C401SA' ],
|
||||
'SY13' => [ 'Sanyo', 'C405SA' ],
|
||||
'SY14' => [ 'Sanyo', 'C412SA' ],
|
||||
'SY15' => [ 'Sanyo', 'C1001SA' ],
|
||||
'TS01' => [ 'Toshiba', 'IS02' ],
|
||||
'TS11' => [ 'Toshiba', 'C301T' ],
|
||||
'TS12' => [ 'Toshiba', 'C310T' ],
|
||||
'TS13' => [ 'Toshiba', 'C410T' ],
|
||||
'TS14' => [ 'Toshiba', 'C415T' ],
|
||||
'TS21' => [ 'Toshiba', 'C5001T' ],
|
||||
'TS22' => [ 'Toshiba', 'A3013T' ],
|
||||
'TS23' => [ 'Toshiba', 'A5301T' ],
|
||||
'TS24' => [ 'Toshiba', 'A5304T' ],
|
||||
'TS25' => [ 'Toshiba', 'A1304T' ],
|
||||
'TS26' => [ 'Toshiba', 'A5501T' ],
|
||||
'TS27' => [ 'Toshiba', 'A5504T' ],
|
||||
'TS28' => [ 'Toshiba', 'A5506T' ],
|
||||
'TS29' => [ 'Toshiba', 'A5509T' ],
|
||||
'TS2A' => [ 'Toshiba', 'A5511T' ],
|
||||
'TS2B' => [ 'Toshiba', 'A5516T' ],
|
||||
'TS2C' => [ 'Toshiba', 'A5517T' ],
|
||||
'TS2D' => [ 'Toshiba', 'A5523T' ],
|
||||
'TS2E' => [ 'Toshiba', 'A5529T' ],
|
||||
'TS31' => [ 'Toshiba', 'W21T' ],
|
||||
'TS32' => [ 'Toshiba', 'W31T' ],
|
||||
'TS33' => [ 'Toshiba', 'W32T' ],
|
||||
'TS34' => [ 'Toshiba', 'W41T' ],
|
||||
'TS35' => [ 'Toshiba', 'neon W42T' ],
|
||||
'TS36' => [ 'Toshiba', 'W43T' ],
|
||||
'TS37' => [ 'Toshiba', 'W44T' ],
|
||||
'TS38' => [ 'Toshiba', 'W45T' ],
|
||||
'TS39' => [ 'Toshiba', 'DRAPE W46T' ],
|
||||
'TS3A' => [ 'Toshiba', 'W47T' ],
|
||||
'TS3B' => [ 'Toshiba', 'W51T' ],
|
||||
'TS3C' => [ 'Toshiba', 'W52T' ],
|
||||
'TS3D' => [ 'Toshiba', 'W53T' ],
|
||||
'TS3E' => [ 'Toshiba', 'W54T' ],
|
||||
'TS3G' => [ 'Toshiba', 'W55T' ],
|
||||
'TS3H' => [ 'Toshiba', 'W56T' ],
|
||||
'TS3I' => [ 'Toshiba', 'W61T' ],
|
||||
'TS3J' => [ 'Toshiba', 'W62T' ],
|
||||
'TS3K' => [ 'Toshiba', 'Sportio W63T' ],
|
||||
'TS3L' => [ 'Toshiba', 'W64T' ],
|
||||
'TS3M' => [ 'Toshiba', 'W65T' ],
|
||||
'TS3N' => [ 'Toshiba', 'T001' ],
|
||||
'TS3O' => [ 'Toshiba', 'biblio TSY01' ],
|
||||
'TS3P' => [ 'Toshiba', 'T002' ],
|
||||
'TS3R' => [ 'Toshiba', 'T003' ],
|
||||
'TS3S' => [ 'Toshiba', 'T004' ],
|
||||
'TS3T' => [ 'Toshiba', 'E08T' ],
|
||||
'TS3V' => [ 'Toshiba', 'T005' ],
|
||||
'TS3X' => [ 'Toshiba', 'T006' ],
|
||||
'TS3Y' => [ 'Toshiba', 'T008' ],
|
||||
'TS3Z' => [ 'Toshiba', 'T007' ],
|
||||
'TS41' => [ 'Toshiba', 'E09F' ],
|
||||
'TSC1' => [ 'Toshiba', 'D302T' ],
|
||||
'TSI1' => [ 'Toshiba', '701G' ],
|
||||
'TST1' => [ 'Toshiba', 'TT01' ],
|
||||
'TST2' => [ 'Toshiba', 'TT02' ],
|
||||
'TST3' => [ 'Toshiba', 'TT03' ],
|
||||
'TST4' => [ 'Toshiba', 'TT11' ],
|
||||
'TST5' => [ 'Toshiba', 'TT21' ],
|
||||
'TST6' => [ 'Toshiba', 'TT22' ],
|
||||
'TST7' => [ 'Toshiba', 'TT31' ],
|
||||
];
|
||||
94
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-palmos.php
vendored
Normal file
94
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-palmos.php
vendored
Normal file
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
use WhichBrowser\Constants\DeviceType;
|
||||
use WhichBrowser\Constants\DeviceSubType;
|
||||
|
||||
DeviceModels::$PALMOS_MODELS = [
|
||||
'Palm-D061' => [ 'Palm', 'Centro 685', DeviceType::MOBILE ],
|
||||
'Palm-D062' => [ 'Palm', 'Centro 690', DeviceType::MOBILE ],
|
||||
'Palm-TunX' => [ 'Palm', 'LifeDrive', DeviceType::PDA ],
|
||||
'Palm-stuj' => [ 'Palm', 'm125', DeviceType::PDA ],
|
||||
'Palm-hbbs' => [ 'Palm', 'm130', DeviceType::PDA ],
|
||||
'Palm-trnd' => [ 'Palm', 'm500', DeviceType::PDA ],
|
||||
'Palm-ecty' => [ 'Palm', 'm505', DeviceType::PDA ],
|
||||
'Palm-lith' => [ 'Palm', 'm515', DeviceType::PDA ],
|
||||
'Palm-sky1' => [ 'Palm', 'i705', DeviceType::PDA ],
|
||||
'hspr-H101' => [ 'Palm', 'Treo 600', DeviceType::MOBILE ],
|
||||
'hspr-H102' => [ 'Palm', 'Treo 650', DeviceType::MOBILE ],
|
||||
'Palm-D053' => [ 'Palm', 'Treo 680', DeviceType::MOBILE ],
|
||||
'Palm-D052' => [ 'Palm', 'Treo 700', DeviceType::MOBILE ],
|
||||
'Palm-D060' => [ 'Palm', 'Treo 755', DeviceType::MOBILE ],
|
||||
'Palm-MT64' => [ 'Palm', 'Tungsten C', DeviceType::PDA ],
|
||||
'Palm-Cct1' => [ 'Palm', 'Tungsten E', DeviceType::PDA ],
|
||||
'Palm-Zir4' => [ 'Palm', 'Tungsten E2', DeviceType::PDA ],
|
||||
'Palm-Frg1' => [ 'Palm', 'Tungsten T', DeviceType::PDA ],
|
||||
'Palm-Frg2' => [ 'Palm', 'Tungsten T2', DeviceType::PDA ],
|
||||
'Palm-Arz1' => [ 'Palm', 'Tungsten T3', DeviceType::PDA ],
|
||||
'Palm-TnT5' => [ 'Palm', 'Tungsten T5', DeviceType::PDA ],
|
||||
'Palm-atc1' => [ 'Palm', 'Tungsten W', DeviceType::PDA ],
|
||||
'Palm-D050' => [ 'Palm', 'TX', DeviceType::PDA ],
|
||||
'Palm-Cubs' => [ 'Palm', 'Zire', DeviceType::PDA ],
|
||||
'Palm-Zi21' => [ 'Palm', 'Zire 21', DeviceType::PDA ],
|
||||
'Palm-D051' => [ 'Palm', 'Zire 22', DeviceType::PDA ],
|
||||
'Palm-Zi22' => [ 'Palm', 'Zire 31', DeviceType::PDA ],
|
||||
'Palm-Zpth' => [ 'Palm', 'Zire 71', DeviceType::PDA ],
|
||||
'Palm-Zi72' => [ 'Palm', 'Zire 72', DeviceType::PDA ],
|
||||
|
||||
'sony-ystn' => [ 'Sony', 'CLIÉ PEG-N600C', DeviceType::PDA ],
|
||||
'sony-ysmt' => [ 'Sony', 'CLIÉ PEG-N700C', DeviceType::PDA ],
|
||||
'sony-ysm2' => [ 'Sony', 'CLIÉ PEG-N750C', DeviceType::PDA ],
|
||||
'sony-nsca' => [ 'Sony', 'CLIÉ PEG-S320', DeviceType::PDA ],
|
||||
'sony-nsc2' => [ 'Sony', 'CLIÉ PEG-S360', DeviceType::PDA ],
|
||||
'sony-vnce' => [ 'Sony', 'CLIÉ PEG-T400', DeviceType::PDA ],
|
||||
'sony-mdna' => [ 'Sony', 'CLIÉ PEG-T600C', DeviceType::PDA ],
|
||||
'sony-npls' => [ 'Sony', 'CLIÉ PEG-T650C', DeviceType::PDA ],
|
||||
'sony-rdwd' => [ 'Sony', 'CLIÉ PEG-NR70', DeviceType::PDA ],
|
||||
'sony-crdb' => [ 'Sony', 'CLIÉ PEG-NX60', DeviceType::PDA ],
|
||||
'sony-tldo' => [ 'Sony', 'CLIÉ PEG-NX73V', DeviceType::PDA ],
|
||||
'sony-mdrd' => [ 'Sony', 'CLIÉ PEG-NX80V', DeviceType::PDA ],
|
||||
'sony-grnd' => [ 'Sony', 'CLIÉ PEG-NZ90', DeviceType::PDA ],
|
||||
'sony-frta' => [ 'Sony', 'CLIÉ PEG-SL10', DeviceType::PDA ],
|
||||
'sony-cocs' => [ 'Sony', 'CLIÉ PEG-SL20', DeviceType::PDA ],
|
||||
'sony-glps' => [ 'Sony', 'CLIÉ PEG-SJ22', DeviceType::PDA ],
|
||||
'sony-mcnd' => [ 'Sony', 'CLIÉ PEG-SJ33', DeviceType::PDA ],
|
||||
'sony-vrna' => [ 'Sony', 'CLIÉ PEG-TG50', DeviceType::PDA ],
|
||||
'sony-atom' => [ 'Sony', 'CLIÉ PEG-TH55', DeviceType::PDA ],
|
||||
'sony-goha' => [ 'Sony', 'CLIÉ PEG-TJ25', DeviceType::PDA ],
|
||||
'sony-leia' => [ 'Sony', 'CLIÉ PEG-TJ27', DeviceType::PDA ],
|
||||
'sony-hwai' => [ 'Sony', 'CLIÉ PEG-TJ30', DeviceType::PDA ],
|
||||
'sony-goku' => [ 'Sony', 'CLIÉ PEG-TJ35', DeviceType::PDA ],
|
||||
'sony-luke' => [ 'Sony', 'CLIÉ PEG-TJ37', DeviceType::PDA ],
|
||||
'sony-amno' => [ 'Sony', 'CLIÉ PEG-UX40', DeviceType::PDA ],
|
||||
'sony-prmr' => [ 'Sony', 'CLIÉ PEG-UX50', DeviceType::PDA ],
|
||||
'sony-ancy' => [ 'Sony', 'CLIÉ PEG-VZ90', DeviceType::PDA ],
|
||||
|
||||
'smsn-phix' => [ 'Samsung', 'SPH-i300', DeviceType::MOBILE ],
|
||||
'smsn-Phx2' => [ 'Samsung', 'SPH-i330', DeviceType::MOBILE ],
|
||||
'smsn-blch' => [ 'Samsung', 'SPH-i500', DeviceType::MOBILE ],
|
||||
'smsn-BLFM' => [ 'Samsung', 'SPH-i530', DeviceType::MOBILE ],
|
||||
'smsn-glxy' => [ 'Samsung', 'SPH-i550', DeviceType::MOBILE ],
|
||||
|
||||
'grmn-3200' => [ 'Garmin', 'iQue 3200', DeviceType::GPS ],
|
||||
'grmn-3600' => [ 'Garmin', 'iQue 3600', DeviceType::GPS ],
|
||||
'grmn-3700' => [ 'Garmin', 'iQue 3600a', DeviceType::GPS ],
|
||||
|
||||
'trgp-trg1' => [ 'HandEra', 'TRG Pro', DeviceType::PDA ],
|
||||
'trgp-trg2' => [ 'HandEra', '330', DeviceType::PDA ],
|
||||
|
||||
'qcom-qc20' => [ 'Kyocera', 'QCP-6035', DeviceType::MOBILE ],
|
||||
'kwc.-7135' => [ 'Kyocera', 'QCP-7135', DeviceType::MOBILE ],
|
||||
|
||||
'Tpwv-Rdog' => [ 'Tapwave', 'Zodiac', [ DeviceType::GAMING, DeviceSubType::PORTABLE ] ],
|
||||
|
||||
'gsRl-zicn' => [ 'Group Sense', 'Xplore G18', DeviceType::MOBILE ],
|
||||
'gsRl-zcn2' => [ 'Group Sense', 'Xplore M28', DeviceType::MOBILE ],
|
||||
'gsRl-zcn5' => [ 'Group Sense', 'Xplore M68', DeviceType::MOBILE ],
|
||||
|
||||
'acer-momo' => [ 'Acer', 's10', DeviceType::PDA ],
|
||||
'acer-coco' => [ 'Acer', 's50', DeviceType::PDA ],
|
||||
|
||||
'Acea-MZ01' => [ 'Aceeca', 'Meazura MEZ1000', DeviceType::PDA ],
|
||||
'Acea-PD01' => [ 'Aceeca', 'PDA32', DeviceType::PDA ],
|
||||
];
|
||||
13
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-s30plus.php
vendored
Normal file
13
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-s30plus.php
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
use WhichBrowser\Constants\Flag;
|
||||
|
||||
DeviceModels::$S30PLUS_MODELS = [
|
||||
'215' => [ 'Nokia', '215' ],
|
||||
'220' => [ 'Nokia', '220' ],
|
||||
'222' => [ 'Nokia', '222' ],
|
||||
'225' => [ 'Nokia', '225' ],
|
||||
'230' => [ 'Nokia', '230' ]
|
||||
];
|
||||
135
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-s40.php
vendored
Normal file
135
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-s40.php
vendored
Normal file
@@ -0,0 +1,135 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$S40_MODELS = [
|
||||
'C1-01!' => [ 'Nokia', 'C1-01' ],
|
||||
'C1-02!' => [ 'Nokia', 'C1-02' ],
|
||||
'C1-03!' => [ 'Nokia', 'C1-03' ],
|
||||
'C2-00!' => [ 'Nokia', 'C2-00' ],
|
||||
'C2-01!' => [ 'Nokia', 'C2-01' ],
|
||||
'C2-02!' => [ 'Nokia', 'C2-02' ],
|
||||
'C2-03!' => [ 'Nokia', 'C2-03' ],
|
||||
'C2-05!' => [ 'Nokia', 'C2-05' ],
|
||||
'C2-06!' => [ 'Nokia', 'C2-06' ],
|
||||
'C3-00!' => [ 'Nokia', 'C3-00' ],
|
||||
'C3-01!' => [ 'Nokia', 'C3-01' ],
|
||||
'X2-00!' => [ 'Nokia', 'X2-00' ],
|
||||
'X2-01!' => [ 'Nokia', 'X2-01' ],
|
||||
'X2-02!' => [ 'Nokia', 'X2-02' ],
|
||||
'X2-03!' => [ 'Nokia', 'X2-03' ],
|
||||
'X2-05!' => [ 'Nokia', 'X2-05' ],
|
||||
'X3-00!' => [ 'Nokia', 'X3-00' ],
|
||||
'X3-02!' => [ 'Nokia', 'X3-02' ],
|
||||
'109' => [ 'Nokia', '109' ],
|
||||
'110' => [ 'Nokia', '110' ],
|
||||
'111' => [ 'Nokia', '111' ],
|
||||
'111.1' => [ 'Nokia', '111' ],
|
||||
'112' => [ 'Nokia', '112' ],
|
||||
'114' => [ 'Nokia', '114' ],
|
||||
'200' => [ 'Nokia', 'Asha 200' ],
|
||||
'201' => [ 'Nokia', 'Asha 201' ],
|
||||
'202' => [ 'Nokia', 'Asha 202' ],
|
||||
'203' => [ 'Nokia', 'Asha 203' ],
|
||||
'205' => [ 'Nokia', 'Asha 205' ],
|
||||
'205.1' => [ 'Nokia', 'Asha 205' ],
|
||||
'205.3' => [ 'Nokia', 'Asha 205' ],
|
||||
'206' => [ 'Nokia', 'Asha 206' ],
|
||||
'206.1' => [ 'Nokia', 'Asha 206' ],
|
||||
'208' => [ 'Nokia', '208' ],
|
||||
'208.1' => [ 'Nokia', '208' ],
|
||||
'208.2' => [ 'Nokia', '208' ],
|
||||
'208.3' => [ 'Nokia', '208' ],
|
||||
'208.4' => [ 'Nokia', '208' ],
|
||||
'210' => [ 'Nokia', 'Asha 210' ],
|
||||
'210.2' => [ 'Nokia', 'Asha 210' ],
|
||||
'210.3' => [ 'Nokia', 'Asha 210' ],
|
||||
'210.4' => [ 'Nokia', 'Asha 210' ],
|
||||
'210.5' => [ 'Nokia', 'Asha 210' ],
|
||||
'300' => [ 'Nokia', 'Asha 300' ],
|
||||
'301' => [ 'Nokia', '301' ],
|
||||
'301.1' => [ 'Nokia', '301' ],
|
||||
'302' => [ 'Nokia', 'Asha 302' ],
|
||||
'303' => [ 'Nokia', 'Asha 303' ],
|
||||
'305' => [ 'Nokia', 'Asha 305' ],
|
||||
'306' => [ 'Nokia', 'Asha 306' ],
|
||||
'308' => [ 'Nokia', 'Asha 308' ],
|
||||
'309' => [ 'Nokia', 'Asha 309' ],
|
||||
'310' => [ 'Nokia', 'Asha 310' ],
|
||||
'311' => [ 'Nokia', 'Asha 311' ],
|
||||
'515' => [ 'Nokia', '515' ],
|
||||
'515.2' => [ 'Nokia', '515' ],
|
||||
'1682c' => [ 'Nokia', '1682 classic' ],
|
||||
'2055' => [ 'Nokia', 'Asha 2055' ],
|
||||
'2060' => [ 'Nokia', '2060' ], // Same as Asha 206
|
||||
'2220s!' => [ 'Nokia', '2220 slide' ],
|
||||
'2320c!' => [ 'Nokia', '2320 classic' ],
|
||||
'2322c!' => [ 'Nokia', '2322 classic' ],
|
||||
'2323c!' => [ 'Nokia', '2323 classic' ],
|
||||
'2330c!' => [ 'Nokia', '2330 classic' ],
|
||||
'2600c!' => [ 'Nokia', '2600 classic' ],
|
||||
'2680s!' => [ 'Nokia', '2680 slide' ],
|
||||
'2690' => [ 'Nokia', '2690' ],
|
||||
'2692' => [ 'Nokia', '2692' ],
|
||||
'2700c!' => [ 'Nokia', '2700 classic' ],
|
||||
'2710c' => [ 'Nokia', '2710' ],
|
||||
'2710c-2' => [ 'Nokia', '2710' ],
|
||||
'2720a!' => [ 'Nokia', '2720 fold' ],
|
||||
'2730c!' => [ 'Nokia', '2730 classic' ],
|
||||
'3020' => [ 'Nokia', '3020' ],
|
||||
'3109c' => [ 'Nokia', '3109 classic' ],
|
||||
'3110c' => [ 'Nokia', '3110 Evolve' ],
|
||||
'3120c' => [ 'Nokia', '3120 classic' ],
|
||||
'3120classic' => [ 'Nokia', '3120 classic' ],
|
||||
'3208c' => [ 'Nokia', '3208 classic' ],
|
||||
'3500c' => [ 'Nokia', '3500 classic' ],
|
||||
'3555b' => [ 'Nokia', '3555' ],
|
||||
'3600s' => [ 'Nokia', '3600 slide' ],
|
||||
'3610a' => [ 'Nokia', '3610 fold' ],
|
||||
'3710fold' => [ 'Nokia', '3710 fold' ],
|
||||
'3720c' => [ 'Nokia', '3720 classic' ],
|
||||
'5000!' => [ 'Nokia', '5000' ],
|
||||
'5130!' => [ 'Nokia', '5130 XpressMusic' ],
|
||||
'5130c!' => [ 'Nokia', '5130 classic' ],
|
||||
'5132' => [ 'Nokia', '5132 XpressMusic' ],
|
||||
'5200!' => [ 'Nokia', '5200' ],
|
||||
'5220!' => [ 'Nokia', '5220 XpressMusic' ],
|
||||
'5300!' => [ 'Nokia', '5300 XpressMusic' ],
|
||||
'5310!' => [ 'Nokia', '5310 XpressMusic' ],
|
||||
'5330' => [ 'Nokia', '5330 Mobile TV Edition' ],
|
||||
'5330-1d' => [ 'Nokia', '5330 Mobile TV Edition' ],
|
||||
'5610d!' => [ 'Nokia', '5610 XpressMusic' ],
|
||||
'6070!' => [ 'Nokia', '6070' ],
|
||||
'6208c' => [ 'Nokia', '6208 classic' ],
|
||||
'6212c' => [ 'Nokia', '6212 classic' ],
|
||||
'6260s!' => [ 'Nokia', '6260 slide' ],
|
||||
'6230i!' => [ 'Nokia', '6230i' ],
|
||||
'6233' => [ 'Nokia', '6233' ],
|
||||
'6234' => [ 'Nokia', '6234' ],
|
||||
'6263!' => [ 'Nokia', '6263' ],
|
||||
'6280' => [ 'Nokia', '6280' ],
|
||||
'6300' => [ 'Nokia', '6300' ],
|
||||
'6300i' => [ 'Nokia', '6300i' ],
|
||||
'6301' => [ 'Nokia', '6301' ],
|
||||
'6303c' => [ 'Nokia', '6303 classic' ],
|
||||
'6303classic' => [ 'Nokia', '6303 classic' ],
|
||||
'6303iclassic' => [ 'Nokia', '6303i classic' ],
|
||||
'6303ci' => [ 'Nokia', '6303i classic' ],
|
||||
'6350' => [ 'Nokia', '6350' ],
|
||||
'6500s!' => [ 'Nokia', '6500 slide' ],
|
||||
'6600f!' => [ 'Nokia', '6600 fold' ],
|
||||
'6600s!' => [ 'Nokia', '6600 slide' ],
|
||||
'6600i!' => [ 'Nokia', '6600i slide' ],
|
||||
'6700c!' => [ 'Nokia', '6700 classic' ],
|
||||
'6750c' => [ 'Nokia', '6750 Mural' ],
|
||||
'7070!' => [ 'Nokia', '7070 Prism' ],
|
||||
'7100s!' => [ 'Nokia', '7100 Supernova' ],
|
||||
'7210s!' => [ 'Nokia', '7210 Supernova' ],
|
||||
'7210Supernova!' => [ 'Nokia', '7210 Supernova' ],
|
||||
'7230!' => [ 'Nokia', '7230' ],
|
||||
'7310c!' => [ 'Nokia', '7310 Supernova' ],
|
||||
'7500' => [ 'Nokia', '7500 Prism' ],
|
||||
'7510Supernova!' => [ 'Nokia', '7510 Supernova' ],
|
||||
'7610Supernova!' => [ 'Nokia', '7610 Supernova' ],
|
||||
'8800!' => [ 'Nokia', '8800 Arte' ]
|
||||
];
|
||||
182
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-symbian.php
vendored
Normal file
182
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-symbian.php
vendored
Normal file
@@ -0,0 +1,182 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
use WhichBrowser\Constants\Flag;
|
||||
|
||||
DeviceModels::$SYMBIAN_MODELS = [
|
||||
'BenQ P30' => [ 'BenQ', 'P30', 'flag' => Flag::UIQ ],
|
||||
'BenQ P31' => [ 'BenQ', 'P31', 'flag' => Flag::UIQ ],
|
||||
'RIZR-Z8' => [ 'Motorola', 'RIZR Z8', 'flag' => Flag::UIQ ],
|
||||
'RIZR-Z10' => [ 'Motorola', 'RIZR Z10', 'flag' => Flag::UIQ ],
|
||||
'A920' => [ 'Motorola', 'A920', 'flag' => Flag::UIQ ],
|
||||
'A925' => [ 'Motorola', 'A925', 'flag' => Flag::UIQ ],
|
||||
'A1000' => [ 'Motorola', 'A1000', 'flag' => Flag::UIQ ],
|
||||
'M1000' => [ 'Motorola', 'M1000', 'flag' => Flag::UIQ, 'carrier' => 'DoCoMo' ],
|
||||
'G700' => [ 'Sony Ericsson', 'G700', 'flag' => Flag::UIQ ],
|
||||
'G900' => [ 'Sony Ericsson', 'G900', 'flag' => Flag::UIQ ],
|
||||
'M600i' => [ 'Sony Ericsson', 'M600', 'flag' => Flag::UIQ ],
|
||||
'P910i' => [ 'Sony Ericsson', 'P910', 'flag' => Flag::UIQ ],
|
||||
'P990i' => [ 'Sony Ericsson', 'P990', 'flag' => Flag::UIQ ],
|
||||
'P1i' => [ 'Sony Ericsson', 'P1', 'flag' => Flag::UIQ ],
|
||||
'W950i' => [ 'Sony Ericsson', 'W950', 'flag' => Flag::UIQ ],
|
||||
'W960i' => [ 'Sony Ericsson', 'W960', 'flag' => Flag::UIQ ],
|
||||
|
||||
'LG KS10' => [ 'LG', 'KS10 Joy', 'flag' => Flag::S60 ],
|
||||
'LGKT610' => [ 'LG', 'KT610', 'flag' => Flag::S60 ],
|
||||
'LGKT615' => [ 'LG', 'KT615', 'flag' => Flag::S60 ],
|
||||
'C5-00!' => [ 'Nokia', 'C5-00', 'flag' => Flag::S60 ],
|
||||
'C5-01' => [ 'Nokia', 'C5-01', 'flag' => Flag::S60 ],
|
||||
'C5-03!' => [ 'Nokia', 'C5-03', 'flag' => Flag::S60 ],
|
||||
'C5-04' => [ 'Nokia', 'C5-04', 'flag' => Flag::S60 ],
|
||||
'C5-05' => [ 'Nokia', 'C5-05', 'flag' => Flag::S60 ],
|
||||
'C5-06' => [ 'Nokia', 'C5-06', 'flag' => Flag::S60 ],
|
||||
'C6-00!' => [ 'Nokia', 'C6-00', 'flag' => Flag::S60 ],
|
||||
'C6-01!' => [ 'Nokia', 'C6-01', 'flag' => Flag::S60 ],
|
||||
'C7-00!' => [ 'Nokia', 'C7-00', 'flag' => Flag::S60 ],
|
||||
'E5-00!' => [ 'Nokia', 'E5-00', 'flag' => Flag::S60 ],
|
||||
'E6' => [ 'Nokia', 'E6-00', 'flag' => Flag::S60 ],
|
||||
'E6-00' => [ 'Nokia', 'E6-00', 'flag' => Flag::S60 ],
|
||||
'E7-00' => [ 'Nokia', 'E7-00', 'flag' => Flag::S60 ],
|
||||
'N8-00' => [ 'Nokia', 'N8-00', 'flag' => Flag::S60 ],
|
||||
'T7-00' => [ 'Nokia', 'T7-00', 'flag' => Flag::S60 ],
|
||||
'X5-00' => [ 'Nokia', 'X5-00', 'flag' => Flag::S60 ],
|
||||
'X5-01' => [ 'Nokia', 'X5-01', 'flag' => Flag::S60 ],
|
||||
'X6-00!' => [ 'Nokia', 'X6-00', 'flag' => Flag::S60 ],
|
||||
'X7-00!' => [ 'Nokia', 'X7-00', 'flag' => Flag::S60 ],
|
||||
'N-Gage' => [ 'Nokia', 'N-Gage', 'flag' => Flag::S60 ],
|
||||
'N-GageQD' => [ 'Nokia', 'N-Gage QD', 'flag' => Flag::S60 ],
|
||||
'E50(-[1-9])?$!' => [ 'Nokia', 'E50', 'flag' => Flag::S60 ],
|
||||
'E51(-[1-9])?$!' => [ 'Nokia', 'E51', 'flag' => Flag::S60 ],
|
||||
'E52(-[1-9])?$!' => [ 'Nokia', 'E52', 'flag' => Flag::S60 ],
|
||||
'E55(-[1-9])?$!' => [ 'Nokia', 'E55', 'flag' => Flag::S60 ],
|
||||
'E60(-[1-9])?$!' => [ 'Nokia', 'E60', 'flag' => Flag::S60 ],
|
||||
'E61i!' => [ 'Nokia', 'E61i', 'flag' => Flag::S60 ],
|
||||
'E61(-[1-9])?$!' => [ 'Nokia', 'E61', 'flag' => Flag::S60 ],
|
||||
'E62(-[1-9])?$!' => [ 'Nokia', 'E62', 'flag' => Flag::S60 ],
|
||||
'E63(-[1-9])?$!' => [ 'Nokia', 'E63', 'flag' => Flag::S60 ],
|
||||
'E65(-[1-9])?$!' => [ 'Nokia', 'E65', 'flag' => Flag::S60 ],
|
||||
'E66(-[1-9])?$!' => [ 'Nokia', 'E66', 'flag' => Flag::S60 ],
|
||||
'E70(-[1-9])?$!' => [ 'Nokia', 'E70', 'flag' => Flag::S60 ],
|
||||
'E71x' => [ 'Nokia', 'E71x', 'flag' => Flag::S60 ],
|
||||
'E71(-[1-9])?$!' => [ 'Nokia', 'E71', 'flag' => Flag::S60 ],
|
||||
'E72(-[1-9])?$!' => [ 'Nokia', 'E72', 'flag' => Flag::S60 ],
|
||||
'E73(-[1-9])?$!' => [ 'Nokia', 'E73 Mode', 'flag' => Flag::S60 ],
|
||||
'E75(-[1-9])?$!' => [ 'Nokia', 'E75', 'flag' => Flag::S60 ],
|
||||
'E90(-[1-9])?$!' => [ 'Nokia', 'E90 Communicator', 'flag' => Flag::S60 ],
|
||||
'E-90-1' => [ 'Nokia', 'E90 Communicator', 'flag' => Flag::S60 ],
|
||||
'N70(-[1-9])?$!' => [ 'Nokia', 'N70', 'flag' => Flag::S60 ],
|
||||
'N71(-[1-9])?$!' => [ 'Nokia', 'N71', 'flag' => Flag::S60 ],
|
||||
'N72(-[1-9])?$!' => [ 'Nokia', 'N72', 'flag' => Flag::S60 ],
|
||||
'N73(-[1-9])?$!' => [ 'Nokia', 'N73', 'flag' => Flag::S60 ],
|
||||
'N75(-[1-9])?$!' => [ 'Nokia', 'N75', 'flag' => Flag::S60 ],
|
||||
'N76(-[1-9])?$!' => [ 'Nokia', 'N76', 'flag' => Flag::S60 ],
|
||||
'N77(-[1-9])?$!' => [ 'Nokia', 'N77', 'flag' => Flag::S60 ],
|
||||
'N78(-[1-9])?$!' => [ 'Nokia', 'N78', 'flag' => Flag::S60 ],
|
||||
'N79(-[1-9])?$!' => [ 'Nokia', 'N79', 'flag' => Flag::S60 ],
|
||||
'N80(-[1-9])?$!' => [ 'Nokia', 'N80', 'flag' => Flag::S60 ],
|
||||
'N81(-[1-9])?$!' => [ 'Nokia', 'N81', 'flag' => Flag::S60 ],
|
||||
'Nokia N81' => [ 'Nokia', 'N81', 'flag' => Flag::S60 ],
|
||||
'Nokia N81 8GB' => [ 'Nokia', 'N81 8GB', 'flag' => Flag::S60 ],
|
||||
'N82(-[1-9])?$!' => [ 'Nokia', 'N82', 'flag' => Flag::S60 ],
|
||||
'N85(-[1-9])?$!' => [ 'Nokia', 'N85', 'flag' => Flag::S60 ],
|
||||
'N86(-[1-9])?$!' => [ 'Nokia', 'N86 8MP', 'flag' => Flag::S60 ],
|
||||
'N86 ?8MP$!' => [ 'Nokia', 'N86 8MP', 'flag' => Flag::S60 ],
|
||||
'N90(-[1-9])?$!' => [ 'Nokia', 'N90', 'flag' => Flag::S60 ],
|
||||
'N91(-[1-9])?$!' => [ 'Nokia', 'N91', 'flag' => Flag::S60 ],
|
||||
'N92(-[1-9])?$!' => [ 'Nokia', 'N92', 'flag' => Flag::S60 ],
|
||||
'N93(-[1-9])?$!' => [ 'Nokia', 'N93', 'flag' => Flag::S60 ],
|
||||
'N93i' => [ 'Nokia', 'N93i', 'flag' => Flag::S60 ],
|
||||
'N95(-[1-9])?$!' => [ 'Nokia', 'N95', 'flag' => Flag::S60 ],
|
||||
'N95[ -]8GB(-[1-9])?!' => [ 'Nokia', 'N95 8GB', 'flag' => Flag::S60 ],
|
||||
'N96(-[1-9])?$!' => [ 'Nokia', 'N96', 'flag' => Flag::S60 ],
|
||||
'N97(-[1-3])?$!' => [ 'Nokia', 'N97', 'flag' => Flag::S60 ],
|
||||
'N97i' => [ 'Nokia', 'N97', 'flag' => Flag::S60 ],
|
||||
'N97(-[4-5])?$!' => [ 'Nokia', 'N97 Mini', 'flag' => Flag::S60 ],
|
||||
'N97 ?mini!' => [ 'Nokia', 'N97 Mini', 'flag' => Flag::S60 ],
|
||||
'500' => [ 'Nokia', '500', 'flag' => Flag::S60 ],
|
||||
'600' => [ 'Nokia', '600', 'flag' => Flag::S60 ],
|
||||
'603' => [ 'Nokia', '603', 'flag' => Flag::S60 ],
|
||||
'700' => [ 'Nokia', '700', 'flag' => Flag::S60 ],
|
||||
'701' => [ 'Nokia', '701', 'flag' => Flag::S60 ],
|
||||
'702T' => [ 'Nokia', '702T', 'flag' => Flag::S60 ],
|
||||
'801T' => [ 'Nokia', '801T', 'flag' => Flag::S60 ],
|
||||
'808' => [ 'Nokia', '808 PureView', 'flag' => Flag::S60 ],
|
||||
'808PureView' => [ 'Nokia', '808 PureView', 'flag' => Flag::S60 ],
|
||||
'808 PureView' => [ 'Nokia', '808 PureView', 'flag' => Flag::S60 ],
|
||||
'3230' => [ 'Nokia', '3230', 'flag' => Flag::S60 ],
|
||||
'3250' => [ 'Nokia', '3250', 'flag' => Flag::S60 ],
|
||||
'3650' => [ 'Nokia', '3650', 'flag' => Flag::S60 ],
|
||||
'3660' => [ 'Nokia', '3660', 'flag' => Flag::S60 ],
|
||||
'5228' => [ 'Nokia', '5228', 'flag' => Flag::S60 ],
|
||||
'5233!' => [ 'Nokia', '5228', 'flag' => Flag::S60 ], // The 5233 is known as 5228
|
||||
'N5233!' => [ 'Nokia', '5228', 'flag' => Flag::S60 ], // The 5233 is known as 5228
|
||||
'5230!' => [ 'Nokia', '5230', 'flag' => Flag::S60 ],
|
||||
'5232' => [ 'Nokia', '5232', 'flag' => Flag::S60 ],
|
||||
'5235!' => [ 'Nokia', '5235 Ovi Music Unlimited', 'flag' => Flag::S60 ],
|
||||
'5236' => [ 'Nokia', '5236', 'flag' => Flag::S60 ],
|
||||
'5238' => [ 'Nokia', '5238', 'flag' => Flag::S60 ],
|
||||
'5250' => [ 'Nokia', '5250', 'flag' => Flag::S60 ],
|
||||
'5320!' => [ 'Nokia', '5320 XpressMusic', 'flag' => Flag::S60 ],
|
||||
'5500d!' => [ 'Nokia', '5500 Sport', 'flag' => Flag::S60 ],
|
||||
'5530!' => [ 'Nokia', '5530 XpressMusic', 'flag' => Flag::S60 ],
|
||||
'5630!' => [ 'Nokia', '5630 XpressMusic', 'flag' => Flag::S60 ],
|
||||
'5700!' => [ 'Nokia', '5700 XpressMusic', 'flag' => Flag::S60 ],
|
||||
'5730!' => [ 'Nokia', '5730 XpressMusic', 'flag' => Flag::S60 ],
|
||||
'5800!' => [ 'Nokia', '5800 XpressMusic', 'flag' => Flag::S60 ],
|
||||
'6110Navigator' => [ 'Nokia', '6110 Navigator', 'flag' => Flag::S60 ],
|
||||
'6120c!' => [ 'Nokia', '6120 classic', 'flag' => Flag::S60 ],
|
||||
'6121c!' => [ 'Nokia', '6121 classic', 'flag' => Flag::S60 ],
|
||||
'6122c!' => [ 'Nokia', '6124 classic', 'flag' => Flag::S60 ], // The 6122 is known as 6124
|
||||
'6124c' => [ 'Nokia', '6124 classic', 'flag' => Flag::S60 ],
|
||||
'6210 ?Navigator!' => [ 'Nokia', '6210 Navigator', 'flag' => Flag::S60 ],
|
||||
'6220c!' => [ 'Nokia', '6220 classic', 'flag' => Flag::S60 ],
|
||||
'6260' => [ 'Nokia', '6260', 'flag' => Flag::S60 ],
|
||||
'6290!' => [ 'Nokia', '6290', 'flag' => Flag::S60 ],
|
||||
'6600' => [ 'Nokia', '6600', 'flag' => Flag::S60 ],
|
||||
'6630' => [ 'Nokia', '6630', 'flag' => Flag::S60 ],
|
||||
'6650d!' => [ 'Nokia', '6650 fold', 'flag' => Flag::S60 ],
|
||||
'6670' => [ 'Nokia', '6670', 'flag' => Flag::S60 ],
|
||||
'6680' => [ 'Nokia', '6680', 'flag' => Flag::S60 ],
|
||||
'6681' => [ 'Nokia', '6681', 'flag' => Flag::S60 ],
|
||||
'6700s' => [ 'Nokia', '6700 slide', 'flag' => Flag::S60 ],
|
||||
'6700s-1c' => [ 'Nokia', '6700 slide', 'flag' => Flag::S60 ],
|
||||
'6708' => [ 'Nokia', '6708', 'flag' => Flag::UIQ ],
|
||||
'6710s' => [ 'Nokia', '6710 Navigator', 'flag' => Flag::S60 ],
|
||||
'6720c!' => [ 'Nokia', '6720 classic', 'flag' => Flag::S60 ],
|
||||
'6730c!' => [ 'Nokia', '6730 classic', 'flag' => Flag::S60 ],
|
||||
'6760s!' => [ 'Nokia', '6760 slide', 'flag' => Flag::S60 ],
|
||||
'6788' => [ 'Nokia', '6788', 'flag' => Flag::S60 ],
|
||||
'6788i' => [ 'Nokia', '6788i', 'flag' => Flag::S60 ],
|
||||
'6790s-1b!' => [ 'Nokia', '6790 Surge', 'flag' => Flag::S60 ],
|
||||
'6790s-1c!' => [ 'Nokia', '6790 slide', 'flag' => Flag::S60 ],
|
||||
'7610' => [ 'Nokia', '7610', 'flag' => Flag::S60 ],
|
||||
'7650' => [ 'Nokia', '7650', 'flag' => Flag::S60 ],
|
||||
'7660' => [ 'Nokia', '7660', 'flag' => Flag::S60 ],
|
||||
'Oro' => [ 'Nokia', 'Oro', 'flag' => Flag::S60 ],
|
||||
'Panasonic-X700' => [ 'Panasonic', 'X700', 'flag' => Flag::S60 ],
|
||||
'Panasonic-X800' => [ 'Panasonic', 'X800', 'flag' => Flag::S60 ],
|
||||
'I7710' => [ 'Samsung', 'GT-I7710', 'flag' => Flag::S60 ],
|
||||
'I8510' => [ 'Samsung', 'INNOV8', 'flag' => Flag::S60 ],
|
||||
'I8910' => [ 'Samsung', 'Omnia HD', 'flag' => Flag::S60 ],
|
||||
'SGH-D720' => [ 'Samsung', 'D720', 'flag' => Flag::S60 ],
|
||||
'SGH-D728' => [ 'Samsung', 'D728', 'flag' => Flag::S60 ],
|
||||
'SGH-D730' => [ 'Samsung', 'D730', 'flag' => Flag::S60 ],
|
||||
'SGH-i400!' => [ 'Samsung', 'i400', 'flag' => Flag::S60 ],
|
||||
'SGH-i408!' => [ 'Samsung', 'i408', 'flag' => Flag::S60 ],
|
||||
'SGH-i450!' => [ 'Samsung', 'i450', 'flag' => Flag::S60 ],
|
||||
'SGH-i455!' => [ 'Samsung', 'i455', 'flag' => Flag::S60 ],
|
||||
'SGH-i458!' => [ 'Samsung', 'i458', 'flag' => Flag::S60 ],
|
||||
'SGH-i520!' => [ 'Samsung', 'i520', 'flag' => Flag::S60 ],
|
||||
'SGH-i550!' => [ 'Samsung', 'i550', 'flag' => Flag::S60 ],
|
||||
'SGH-i560!' => [ 'Samsung', 'i560', 'flag' => Flag::S60 ],
|
||||
'SGH-i568!' => [ 'Samsung', 'i568', 'flag' => Flag::S60 ],
|
||||
'SGH-i570!' => [ 'Samsung', 'i570', 'flag' => Flag::S60 ],
|
||||
'SGH-G810' => [ 'Samsung', 'G810', 'flag' => Flag::S60 ],
|
||||
'U' => [ 'Sony Ericsson', 'Satio', 'flag' => Flag::S60 ],
|
||||
'(?i)U1(a|i|iv)?$!' => [ 'Sony Ericsson', 'Satio', 'flag' => Flag::S60 ],
|
||||
'(?i)U5(a|i|iv)?$!' => [ 'Sony Ericsson', 'Vivaz', 'flag' => Flag::S60 ],
|
||||
'(?i)U8(a|i)?$!' => [ 'Sony Ericsson', 'Vivaz Pro', 'flag' => Flag::S60 ],
|
||||
'ConstellationT' => [ 'Vertu', 'Constellation T', 'flag' => Flag::S60 ],
|
||||
'ConstellationQuest' => [ 'Vertu', 'Constellation Quest', 'flag' => Flag::S60 ],
|
||||
];
|
||||
69
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-tizen.php
vendored
Normal file
69
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-tizen.php
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
use WhichBrowser\Constants\DeviceType;
|
||||
|
||||
DeviceModels::$TIZEN_MODELS = [
|
||||
'Baltic' => [ 'Samsung', '"Baltic"' ],
|
||||
'SM-HIGGS' => [ 'Samsung', '"Higgs"' ],
|
||||
'KIRAN' => [ 'Samsung', 'Z1' ],
|
||||
'GT-I8800!' => [ 'Samsung', '"Melius"' ],
|
||||
'GT-I8805!' => [ 'Samsung', '"Redwood"' ],
|
||||
'GT-I9500!' => [ 'Samsung', 'GT-I9500 prototype' ],
|
||||
'SGH-N099' => [ 'Samsung', 'SGH-N099 prototype' ],
|
||||
'(ARMV7 )?SM-Z9005!' => [ 'Samsung', 'SM-Z9005 prototype' ],
|
||||
'Mobile-RD-PQ' => [ 'Samsung', 'RD-PQ prototype' ],
|
||||
'TM1' => [ 'Samsung', 'TM1 prototype' ],
|
||||
'SM-Z130!' => [ 'Samsung', 'Z1' ],
|
||||
'TIZEN SM-Z130!' => [ 'Samsung', 'Z1' ],
|
||||
'SM-Z200!' => [ 'Samsung', 'Z2' ],
|
||||
'SM-Z250!' => [ 'Samsung', '"Pride"' ],
|
||||
'SM-Z300!' => [ 'Samsung', 'Z3' ],
|
||||
'TIZEN SM-Z300!' => [ 'Samsung', 'Z3' ],
|
||||
'SM-Z400!' => [ 'Samsung', 'Z4' ],
|
||||
'SM-Z500!' => [ 'Samsung', 'SM-Z500' ],
|
||||
'SM-Z700!' => [ 'Samsung', 'SM-Z700' ],
|
||||
'SM-Z900!' => [ 'Samsung', 'Z' ],
|
||||
'SM-Z910!' => [ 'Samsung', 'Z' ],
|
||||
'Z3 Z910F' => [ 'Samsung', 'Z' ],
|
||||
'SEC SC-001' => [ 'Samsung', 'SC-001 prototype' ],
|
||||
'SEC SC-03F' => [ 'Samsung', 'ZeQ' ], // Unreleased version for DoCoMo
|
||||
'SC-03F' => [ 'Samsung', 'ZeQ' ], // Unreleased version for DoCoMo
|
||||
|
||||
'SM-G870F0' => [ 'Samsung', 'Galaxy S5 Active' ],
|
||||
|
||||
'SM-R360!' => [ 'Samsung', 'Gear Fit2', DeviceType::WATCH ],
|
||||
'SM-R600!' => [ 'Samsung', 'Gear Sport', DeviceType::WATCH ],
|
||||
'SM-R720!' => [ 'Samsung', 'Gear S2', DeviceType::WATCH ],
|
||||
'SM-R730!' => [ 'Samsung', 'Gear S2', DeviceType::WATCH ],
|
||||
'SM-R732!' => [ 'Samsung', 'Gear S2 Classic', DeviceType::WATCH ],
|
||||
'SM-R735!' => [ 'Samsung', 'Gear S2 Classic', DeviceType::WATCH ],
|
||||
'SM-R750!' => [ 'Samsung', 'Gear S', DeviceType::WATCH ],
|
||||
'SM-R760!' => [ 'Samsung', 'Gear S3', DeviceType::WATCH ],
|
||||
'SM-R765!' => [ 'Samsung', 'Gear S3', DeviceType::WATCH ],
|
||||
'SM-R770!' => [ 'Samsung', 'Gear S3 Classic', DeviceType::WATCH ],
|
||||
'SM-R805!' => [ 'Samsung', 'Gear S4', DeviceType::WATCH ],
|
||||
|
||||
'NX300' => [ 'Samsung', 'NX300', DeviceType::CAMERA ],
|
||||
|
||||
'FamilyHub' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ],
|
||||
'RF10M9995!' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ],
|
||||
'RF23M8590!' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ],
|
||||
'RF265BEAE!' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ],
|
||||
'RF28M9580!' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ],
|
||||
'RF56M9540!' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ],
|
||||
'RF85K9993!' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ],
|
||||
'RF85M95A2!' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ],
|
||||
'RH81M8090!' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ],
|
||||
|
||||
|
||||
'hawkp' => [ 'Samsung', '"Hawkp"', DeviceType::TELEVISION ],
|
||||
|
||||
'xu3' => [ 'Hardkernel', 'ODROID-XU3 developer board' ],
|
||||
|
||||
'sdk' => [ null, null, DeviceType::EMULATOR ],
|
||||
'Emulator' => [ null, null, DeviceType::EMULATOR ],
|
||||
'Mobile-Emulator' => [ null, null, DeviceType::EMULATOR ],
|
||||
'TIZEN Emulator' => [ null, null, DeviceType::EMULATOR ],
|
||||
];
|
||||
46
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-touchwiz.php
vendored
Normal file
46
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-touchwiz.php
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
DeviceModels::$TOUCHWIZ_MODELS = [
|
||||
'GT-B5310!' => [ 'Samsung', 'Corby Pro' ],
|
||||
'GT-B3410' => [ 'Samsung', 'Star Qwerty' ],
|
||||
'GT-B7722' => [ 'Samsung', 'Star Duos' ],
|
||||
'GT-C3262' => [ 'Samsung', 'Champ Neo Duos' ],
|
||||
'GT-C33(00|03)!' => [ 'Samsung', 'Champ' ],
|
||||
'GT-C3312R' => [ 'Samsung', 'Rex 60' ],
|
||||
'GT-C3312!' => [ 'Samsung', 'Champ Deluxe Duos' ],
|
||||
'GT-C3330' => [ 'Samsung', 'Champ 2' ],
|
||||
'GT-C6712' => [ 'Samsung', 'Star II Duos' ],
|
||||
'GT-E2652!' => [ 'Samsung', 'Champ Duos' ],
|
||||
'GT-I6230!' => [ 'Samsung', 'Star TV' ],
|
||||
'GT-I6712!' => [ 'Samsung', 'Duos TV' ],
|
||||
'GT-M3710' => [ 'Samsung', 'Corby Beat' ],
|
||||
'GT-M5650' => [ 'Samsung', 'Lindy' ],
|
||||
'GT-S3370!' => [ 'Samsung', 'Corby 3G' ],
|
||||
'GT-S36(50|53)!' => [ 'Samsung', 'Corby' ],
|
||||
'GT-S3770!' => [ 'Samsung', 'Champ 3G' ],
|
||||
'GT-S38(00|02)!' => [ 'Samsung', 'Rex 70' ],
|
||||
'GT-S3850' => [ 'Samsung', 'Corby II' ],
|
||||
'GT-S5220' => [ 'Samsung', 'Star 3' ],
|
||||
'GT-S5222R' => [ 'Samsung', 'Rex 80' ],
|
||||
'GT-S5222' => [ 'Samsung', 'Star 3 Duos' ],
|
||||
'GT-S52(30|33)!' => [ 'Samsung', 'Star' ],
|
||||
'GT-S5260P' => [ 'Samsung', 'Player City' ],
|
||||
'GT-S52(60|63)!' => [ 'Samsung', 'Star II' ],
|
||||
'GT-S5292R' => [ 'Samsung', 'Rex 90' ],
|
||||
'GT-S5292' => [ 'Samsung', 'Star Deluxe Duos' ],
|
||||
'GT-S5560!' => [ 'Samsung', 'Marvel' ],
|
||||
'GT-S5600' => [ 'Samsung', 'Preston' ],
|
||||
'GT-S5603' => [ 'Samsung', 'Star 3G' ],
|
||||
'GT-S5620!' => [ 'Samsung', 'Monte' ],
|
||||
'GT-S5680' => [ 'Samsung', 'GT-S5680' ],
|
||||
'GT-S7550' => [ 'Samsung', 'Blue Earth' ],
|
||||
'S80(00|03)!' => [ 'Samsung', 'Jet' ],
|
||||
'GT-S8000c' => [ 'Samsung', 'Jet' ],
|
||||
'GT-S8003' => [ 'Samsung', 'Jet' ],
|
||||
'SGH-A597' => [ 'Samsung', 'Eternity II' ],
|
||||
'SGH-F480' => [ 'Samsung', 'Tocco' ],
|
||||
'SGH-F480I' => [ 'Samsung', 'Tocco' ],
|
||||
'SGH-T528g' => [ 'Samsung', 'Straight Talk' ]
|
||||
];
|
||||
323
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-wm.php
vendored
Normal file
323
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-wm.php
vendored
Normal file
@@ -0,0 +1,323 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
use WhichBrowser\Constants\DeviceType;
|
||||
|
||||
DeviceModels::$WM_MODELS = [
|
||||
'DX900' => [ 'Acer', 'Tempo DX900' ],
|
||||
'E100' => [ 'Acer', 'beTouch E100' ],
|
||||
'F900' => [ 'Acer', 'Tempo F900' ],
|
||||
'S200' => [ 'Acer', 'neoTouch S200' ],
|
||||
'P400' => [ 'Acer', 'neoTouch P400' ],
|
||||
'-GalaxyII' => [ 'Asus', 'Galaxy II' ],
|
||||
'-GalaxyMini' => [ 'Asus', 'Galaxy Mini' ],
|
||||
'M530w!' => [ 'Asus', 'M530w' ],
|
||||
'M930!' => [ 'Asus', 'M930' ],
|
||||
'-P525!' => [ 'Asus', 'P525' ],
|
||||
'-P526!' => [ 'Asus', 'P526' ],
|
||||
'-P527!' => [ 'Asus', 'P527' ],
|
||||
'P550' => [ 'Asus', 'P550' ],
|
||||
'-P552w!' => [ 'Asus', 'P552w' ],
|
||||
'-P552!' => [ 'Asus', 'P552' ],
|
||||
'-P565!' => [ 'Asus', 'P565' ],
|
||||
'-P735!' => [ 'Asus', 'P735' ],
|
||||
'P750' => [ 'Asus', 'P750' ],
|
||||
'Bird T900' => [ 'Bird', 'T900' ],
|
||||
'Coolpad F800' => [ 'Coolpad', 'F800' ],
|
||||
'Datalogic Memor' => [ 'Datalogic', 'Memor' ],
|
||||
'Dopod838Pro' => [ 'Dopod', '838 Pro' ],
|
||||
'CHT 9100!' => [ 'Dopod', 'CHT 9100' ],
|
||||
'DopodD810' => [ 'Dopod', 'D810' ],
|
||||
'dopod-S900c' => [ 'Dopod', 'S900' ],
|
||||
'T5388' => [ 'Dopod', 'T5388' ],
|
||||
'dopodT5588' => [ 'Dopod', 'T5588' ],
|
||||
'dopodT8388' => [ 'Dopod', 'T8388' ],
|
||||
'dopodT8588' => [ 'Dopod', 'T8588' ],
|
||||
'garmin-asus-Nuvifone-M10' => [ 'Garmin-Asus', 'Nuvifone M10' ],
|
||||
'Nuvifone-M10' => [ 'Garmin-Asus', 'Nuvifone M10' ],
|
||||
'Nuvifone-M20' => [ 'Garmin-Asus', 'Nuvifone M20' ],
|
||||
'GIGABYTE-MS800' => [ 'Gigabyte', 'GSmart MS800' ],
|
||||
'HP iPAQ 510' => [ 'HP', 'iPAQ 510' ],
|
||||
'HPiPAQ510!' => [ 'HP', 'iPAQ 510' ],
|
||||
'HPiPAQ610' => [ 'HP', 'iPAQ 610' ],
|
||||
'HPiPAQ910!' => [ 'HP', 'iPAQ 910' ],
|
||||
'HP iPAQ h6300' => [ 'HP', 'iPAQ h6300' ],
|
||||
'HP iPAQ hw6500!' => [ 'HP', 'iPAQ hw6500' ],
|
||||
'HPiPAQhw6900!' => [ 'HP', 'iPAQ hw6900' ],
|
||||
'HPiPAQrw6800!' => [ 'HP', 'iPAQ rw6800' ],
|
||||
'HPiPAQrw6815!' => [ 'HP', 'iPAQ rw6815' ],
|
||||
'HPiPAQDataMessenger!' => [ 'HP', 'iPAQ Data Messenger' ],
|
||||
'HPiPAQVoiceMessenger!' => [ 'HP', 'iPAQ Voice Messenger' ],
|
||||
'HPiPAQGlisten' => [ 'HP', 'iPAQ Glisten' ],
|
||||
'HP KB1' => [ 'HP', 'iPAQ Glisten' ],
|
||||
'HTC8500' => [ 'HTC', '8500' ],
|
||||
'HTC P3300' => [ 'HTC', 'P3300' ],
|
||||
'HTC love' => [ 'HTC', 'P3350' ],
|
||||
'HTC P3350' => [ 'HTC', 'P3350' ],
|
||||
'HTC P3400!' => [ 'HTC', 'P3400' ],
|
||||
'HTC P3450!' => [ 'HTC', 'P3450' ],
|
||||
'P4350!' => [ 'HTC', 'P3450' ],
|
||||
'HTC HERALD' => [ 'HTC', 'P3450' ],
|
||||
'HTC P6300' => [ 'HTC', 'P6300' ],
|
||||
'HTC P6500' => [ 'HTC', 'P6500' ],
|
||||
'HTC X7500' => [ 'HTC', 'Advantage' ],
|
||||
'HTC X7510' => [ 'HTC', 'Advantage' ],
|
||||
'(HTC )?HD mini!' => [ 'HTC', 'HD mini' ],
|
||||
'.*T5555!' => [ 'HTC', 'HD mini' ],
|
||||
'(HTC )?HD2!' => [ 'HTC', 'HD2' ],
|
||||
'.*T8585!' => [ 'HTC', 'HD2' ],
|
||||
'HTC T8290' => [ 'HTC', 'MAX 4G' ],
|
||||
'HTC MAX 4G' => [ 'HTC', 'MAX 4G' ],
|
||||
'HTC MTeoR' => [ 'HTC', 'MTeoR' ],
|
||||
'P3470!' => [ 'HTC', 'Pharos' ],
|
||||
'HTC Prophet' => [ 'HTC', 'Prophet' ],
|
||||
'HTC Snap!' => [ 'HTC', 'S511 Snap' ],
|
||||
'.*S521!' => [ 'HTC', 'S511 Snap' ],
|
||||
'HTC Maple S520' => [ 'HTC', 'S520 Maple' ],
|
||||
'HTC S620!' => [ 'HTC', 'S620 Excalibur' ],
|
||||
'HTC Excalibur' => [ 'HTC', 'S620 Excalibur' ],
|
||||
'HTC S630' => [ 'HTC', 'S630 Cavelier' ],
|
||||
'HTC S710' => [ 'HTC', 'S710 Vox' ],
|
||||
'HTC S730' => [ 'HTC', 'S730 Wings' ],
|
||||
'HTC S740' => [ 'HTC', 'S740 Rose' ],
|
||||
'HTC Touch' => [ 'HTC', 'Touch' ],
|
||||
'HTC Elf' => [ 'HTC', 'Touch' ],
|
||||
'HTC 6900' => [ 'HTC', 'Touch' ],
|
||||
'HTC6900' => [ 'HTC', 'Touch' ],
|
||||
'HTC6900-MR1' => [ 'HTC', 'Touch' ],
|
||||
'P3450' => [ 'HTC', 'Touch' ],
|
||||
'HTC TouchDual' => [ 'HTC', 'Touch' ],
|
||||
'HTC Touch 3G!' => [ 'HTC', 'Touch 3G' ],
|
||||
'HTC Jade' => [ 'HTC', 'Touch 3G' ],
|
||||
'HTC Mega!' => [ 'HTC', 'Touch 2' ],
|
||||
'HTC Touch2!' => [ 'HTC', 'Touch 2' ],
|
||||
'.*T33(20|33|35)!' => [ 'HTC', 'Touch 2' ],
|
||||
'P3650' => [ 'HTC', 'Touch Cruise' ],
|
||||
'P3650t' => [ 'HTC', 'Touch Cruise' ],
|
||||
'HTC Touch Cruise!' => [ 'HTC', 'Touch Cruise' ],
|
||||
'HTC P3650' => [ 'HTC', 'Touch Cruise' ],
|
||||
'HTC P3651' => [ 'HTC', 'Touch Cruise' ],
|
||||
'HTC Polaris' => [ 'HTC', 'Touch Cruise' ],
|
||||
'HTC Touch Diamond2!' => [ 'HTC', 'Touch Diamond 2' ],
|
||||
'.*T5353!' => [ 'HTC', 'Touch Diamond 2' ],
|
||||
'HTC Touch Diamond!' => [ 'HTC', 'Touch Diamond' ],
|
||||
'.*P3700!' => [ 'HTC', 'Touch Diamond' ],
|
||||
'HTC Diamond' => [ 'HTC', 'Touch Diamond' ],
|
||||
'HTC P3701' => [ 'HTC', 'Touch Diamond' ],
|
||||
'HTC P5500' => [ 'HTC', 'Touch Dual' ],
|
||||
'HTC P5310!' => [ 'HTC', 'Touch Dual' ],
|
||||
'HTC Touch HD2!' => [ 'HTC', 'Touch HD2' ],
|
||||
'.*T8585!' => [ 'HTC', 'Touch HD2' ],
|
||||
'HTC Touch HD!' => [ 'HTC', 'Touch HD' ],
|
||||
'.*T82(82|83)!' => [ 'HTC', 'Touch HD' ],
|
||||
'HTC Touch Pro2!' => [ 'HTC', 'Touch Pro 2' ],
|
||||
'.*T73(73|80)!' => [ 'HTC', 'Touch Pro 2' ],
|
||||
'HTC Touch Pro!' => [ 'HTC', 'Touch Pro' ],
|
||||
'.*T7272!' => [ 'HTC', 'Touch Pro' ],
|
||||
'HTC P4600' => [ 'HTC', 'Touch Pro' ],
|
||||
'HTC Raphael' => [ 'HTC', 'Touch Pro' ],
|
||||
'HTC Touch Viva!' => [ 'HTC', 'Touch Viva' ],
|
||||
'.*T2223!' => [ 'HTC', 'Touch Viva' ],
|
||||
'P3600!' => [ 'HTC', 'Trinity' ],
|
||||
'HTC Trinity' => [ 'HTC', 'Trinity' ],
|
||||
'HTC P3600' => [ 'HTC', 'Trinity' ],
|
||||
'HTC P3600i' => [ 'HTC', 'Trinity' ],
|
||||
'HTC v3600' => [ 'HTC', 'Trinity' ],
|
||||
'HTC TyTN II' => [ 'HTC', 'TyTN II' ],
|
||||
'P4550' => [ 'HTC', 'TyTN II' ],
|
||||
'HTC Kaiser' => [ 'HTC', 'TyTN II' ],
|
||||
'HTC TyTN!' => [ 'HTC', 'TyTN' ],
|
||||
'HTC Mercury' => [ 'HTC', 'TyTN' ],
|
||||
'T9188' => [ 'HTC', 'T9188' ],
|
||||
'T9199' => [ 'HTC', 'T9199' ],
|
||||
'HTC wizard' => [ 'HTC', 'Wizard' ],
|
||||
'i-mate JAMA' => [ 'i-mate', 'JAMA' ],
|
||||
'i-mate JAMAQ' => [ 'i-mate', 'JAMAQ' ],
|
||||
'i-mate JAMin' => [ 'i-mate', 'JAMin' ],
|
||||
'i-mate JASJAM' => [ 'i-mate', 'JASJAM' ],
|
||||
'i-mate JAQ' => [ 'i-mate', 'JAQ' ],
|
||||
'i-mate JAQ3' => [ 'i-mate', 'JAQ3' ],
|
||||
'i-mate K-JAM' => [ 'i-mate', 'K-JAM' ],
|
||||
'i-mate PDAL' => [ 'i-mate', 'PDAL' ],
|
||||
'i-mate 6150' => [ 'i-mate', 'Ultimate 6150' ],
|
||||
'i-mate 8150!' => [ 'i-mate', 'Ultimate 8150' ],
|
||||
'i-mate 8502' => [ 'i-mate', 'Ultimate 8502' ],
|
||||
'i-mate 9502!' => [ 'i-mate', 'Ultimate 9502' ],
|
||||
'W366' => [ 'K-Touch', 'W366' ],
|
||||
'K-Touch W366!' => [ 'K-Touch', 'W366' ],
|
||||
'Kyocera-E4000' => [ 'Kyocera', 'Solo E4000' ],
|
||||
'Lenovo ET860' => [ 'Lenovo', 'ET860' ],
|
||||
'LENOVO-ET980' => [ 'Lenovo', 'ET980' ],
|
||||
'LG-GM730!' => [ 'LG', 'Eigen GM730' ],
|
||||
'GM730' => [ 'LG', 'Eigen GM730' ],
|
||||
'LG-GM750!' => [ 'LG', 'Layla GM750' ],
|
||||
'GM750Q' => [ 'LG', 'Layla GM750' ],
|
||||
'LG-GW550!' => [ 'LG', 'GW550' ],
|
||||
'GW550' => [ 'LG', 'GW550' ],
|
||||
'GW825' => [ 'LG', 'IQ GW825' ],
|
||||
'LG-KS20' => [ 'LG', 'KS20' ],
|
||||
'LG-MS25' => [ 'LG', 'MS25' ],
|
||||
'LGE VS750' => [ 'LG', 'Fathom VS750' ],
|
||||
'A3100' => [ 'Motorola', 'A3100' ],
|
||||
'A3300c' => [ 'Motorola', 'A3300c' ],
|
||||
'A4500!' => [ 'Motorola', 'A4500' ],
|
||||
'ES405B!' => [ 'Motorola', 'ES405 Enterprise Smartphone' ],
|
||||
'MC45!' => [ 'Motorola', 'MC45 Mobile Computer' ],
|
||||
'MC659B!' => [ 'Motorola', 'MC65 Wireless Rugged Mobile Computer' ],
|
||||
'Q-UMTS' => [ 'Motorola', 'Q' ],
|
||||
'Q8' => [ 'Motorola', 'MOTO Q8' ],
|
||||
'Q9' => [ 'Motorola', 'MOTO Q9' ],
|
||||
'Sprint:MotoQ9c' => [ 'Motorola', 'MOTO Q9c' ],
|
||||
'Q9c!' => [ 'Motorola', 'MOTO Q9c' ],
|
||||
'Q9m!' => [ 'Motorola', 'MOTO Q9m' ],
|
||||
'VIP12!' => [ 'Motorola', 'VIP 1200', DeviceType::TELEVISION ],
|
||||
'H-21' => [ 'Opticom', 'H-21' ],
|
||||
'Palm500!' => [ 'Palm', 'Treo 500v' ],
|
||||
'Palm750' => [ 'Palm', 'Treo 750' ],
|
||||
'Treo800w' => [ 'Palm', 'Treo 800w' ],
|
||||
'Palm850!' => [ 'Palm', 'Treo Pro' ],
|
||||
'Palm Treo850e' => [ 'Palm', 'Treo Pro' ],
|
||||
'Sprint Treo850e' => [ 'Palm', 'Treo Pro' ],
|
||||
'PANTECH-C810' => [ 'Pantech', 'Duo C810' ],
|
||||
'GT-B5722' => [ 'Samsung', 'B5722' ],
|
||||
'GT-B6520' => [ 'Samsung', 'B6520 OmniaPRO 5' ],
|
||||
'GT-B7300' => [ 'Samsung', 'B7300 OmniaLITE' ],
|
||||
'GT-B7320!' => [ 'Samsung', 'B7320 OmniaPRO' ],
|
||||
'GT-B7330!' => [ 'Samsung', 'B7330 OmniaPRO' ],
|
||||
'GT-B7350' => [ 'Samsung', 'B7350 OmniaPRO 4' ],
|
||||
'GT-B7610' => [ 'Samsung', 'B7610 OmniaPRO' ],
|
||||
'GT-C6625' => [ 'Samsung', 'C6625 Valencia' ],
|
||||
'C6625' => [ 'Samsung', 'C6625 Valencia' ],
|
||||
'GT-I8000!' => [ 'Samsung', 'I8000 Omnia II' ],
|
||||
'SCH-M490' => [ 'Samsung', 'M490 T*OMNIA' ],
|
||||
'SCH-M710' => [ 'Samsung', 'M710 T*OMNIA II' ],
|
||||
'SCH-M715' => [ 'Samsung', 'M715 T*OMNIA II' ],
|
||||
'SPH-M7200' => [ 'Samsung', 'M7200 OMNIA POP' ],
|
||||
'SPH-M7350' => [ 'Samsung', 'M7350 OZ OMNIA' ],
|
||||
'SPH-M8400' => [ 'Samsung', 'M8400 Show OMNIA' ],
|
||||
'SCH-i220!' => [ 'Samsung', 'i220 Code' ],
|
||||
'SCH-i225!' => [ 'Samsung', 'i225 Exec' ],
|
||||
'SPHI325!' => [ 'Samsung', 'i325 Ace' ],
|
||||
'SGH-i600!' => [ 'Samsung', 'i600' ],
|
||||
'SGH-i601!' => [ 'Samsung', 'i601' ],
|
||||
'SGH-I607' => [ 'Samsung', 'i607 BlackJack' ],
|
||||
'SGH-i608!' => [ 'Samsung', 'i608' ],
|
||||
'SGH-I617' => [ 'Samsung', 'i617 BlackJack II' ],
|
||||
'SGH-I637' => [ 'Samsung', 'i637 Jack' ],
|
||||
'SGH-i640!' => [ 'Samsung', 'i640' ],
|
||||
'SGH-i718' => [ 'Samsung', 'i718' ],
|
||||
'SGH-i718plus' => [ 'Samsung', 'i718 Plus' ],
|
||||
'SGH-i728' => [ 'Samsung', 'i728' ],
|
||||
'SCH-i760!' => [ 'Samsung', 'i760' ],
|
||||
'SCH-i770!' => [ 'Samsung', 'i770 Saga' ],
|
||||
'SGH-i780!' => [ 'Samsung', 'i780 Mirage' ],
|
||||
'SGH-i900!' => [ 'Samsung', 'i900 Omnia' ],
|
||||
'SGH-i908E' => [ 'Samsung', 'i908' ],
|
||||
'SCHI910!' => [ 'Samsung', 'i910 Omnia' ],
|
||||
'SCH-i920' => [ 'Samsung', 'i920 Omnia II' ],
|
||||
'SIE-SX66' => [ 'Siemens', 'SX66' ],
|
||||
'M1i' => [ 'Sony Ericsson', 'Aspen' ],
|
||||
'X1' => [ 'Sony Ericsson', 'Xperia X1' ],
|
||||
'X1[ia]!' => [ 'Sony Ericsson', 'Xperia X1' ],
|
||||
'X2' => [ 'Sony Ericsson', 'Xperia X2' ],
|
||||
'X2[ia]!' => [ 'Sony Ericsson', 'Xperia X2' ],
|
||||
'Spice D1100' => [ 'Spice', 'D1100' ],
|
||||
'(Toshiba[- ])?TG01!' => [ 'Toshiba', 'TG01' ],
|
||||
'Velocity' => [ 'Velocity', '111' ],
|
||||
'ZTE E N72' => [ 'ZTE', 'E N72' ],
|
||||
'ZTE E X70' => [ 'ZTE', 'E X70' ],
|
||||
|
||||
|
||||
|
||||
'sigmarion3' => [ 'NTT', 'sigmarionIII' ],
|
||||
|
||||
'o2 Xda comet' => [ 'O2', 'XDA Comet' ],
|
||||
'Xda diamond' => [ 'O2', 'XDA Diamond' ],
|
||||
'Xda neo' => [ 'O2', 'XDA Neo' ],
|
||||
'Xda nova' => [ 'O2', 'XDA Nova' ],
|
||||
'Xda orbit' => [ 'O2', 'XDA Orbit' ],
|
||||
'Xda terra' => [ 'O2', 'XDA Terra' ],
|
||||
'Xda trion' => [ 'O2', 'XDA Trion' ],
|
||||
'O2 Xda 2mini' => [ 'O2', 'XDA II mini' ],
|
||||
'O2 Xda 2s' => [ 'O2', 'XDA IIs' ],
|
||||
|
||||
'SPV E600' => [ 'Orange', 'SPV E600' ],
|
||||
'SPV E650' => [ 'Orange', 'SPV E650' ],
|
||||
'SPV M700' => [ 'Orange', 'SPV M700' ],
|
||||
'SPV M2000' => [ 'Orange', 'SPV M2000' ],
|
||||
'SPV M3100' => [ 'Orange', 'SPV M3100' ],
|
||||
|
||||
'Alltel HTC PPC6800' => [ 'Alltel', 'PPC6800' ],
|
||||
'Alltel HTC Touch' => [ 'HTC', 'Touch', 'carrier' => 'Alltel' ],
|
||||
'Alltel HTC Touch Diamond' => [ 'HTC', 'Touch Diamond', 'carrier' => 'Alltel' ],
|
||||
|
||||
'Sprint S511' => [ 'Sprint', 'Snap' ],
|
||||
'Sprint:SPH-ip830w' => [ 'Sprint', 'SPH-ip830w' ],
|
||||
'Sprint:PPC6600-1' => [ 'Sprint', 'PPC6600' ],
|
||||
'Sprint:PPC-6700' => [ 'Sprint', 'PPC6700' ],
|
||||
'Sprint:PPC6800' => [ 'Sprint', 'PPC6800' ],
|
||||
'Sprint PPC6850SP' => [ 'Sprint', 'PPC6850' ],
|
||||
'HTCPPC6850!' => [ 'Sprint', 'PPC6850' ],
|
||||
'PPC6850!' => [ 'Sprint', 'PPC6850' ],
|
||||
'Sprint MP6850SP' => [ 'Sprint', 'MP6850' ],
|
||||
'Sprint MP6900SP' => [ 'Sprint', 'MP6900' ],
|
||||
'Sprint MP6950SP' => [ 'Sprint', 'MP6950' ],
|
||||
|
||||
'Ameo!' => [ 'T-Mobile', 'Ameo' ],
|
||||
'T-Mobile Atlas' => [ 'T-Mobile', 'Atlas' ],
|
||||
'T-Mobile Dash' => [ 'T-Mobile', 'Dash' ],
|
||||
'T-Mobile LEO' => [ 'T-Mobile', 'Leo' ],
|
||||
'T-Mobile Cleopatra' => [ 'T-Mobile', 'Shadow II' ],
|
||||
'MDA III!' => [ 'T-Mobile', 'MDA III' ],
|
||||
'MDA compact II!' => [ 'T-Mobile', 'MDA Compact II' ],
|
||||
'MDA compact!' => [ 'T-Mobile', 'MDA Compact' ],
|
||||
'MDA Pro!' => [ 'T-Mobile', 'MDA Pro' ],
|
||||
'MDA Touch!' => [ 'T-Mobile', 'MDA Touch' ],
|
||||
'MDA Vario!' => [ 'T-Mobile', 'MDA Vario' ],
|
||||
|
||||
'XV6175!' => [ 'Verizon', 'Ozone XV6175' ],
|
||||
'XV6850!' => [ 'Verizon', 'Touch Pro XV6850' ],
|
||||
'XV6875!' => [ 'Verizon', 'Touch Pro2 XV6875' ],
|
||||
'XV6900' => [ 'Verizon', 'Touch XV6900' ],
|
||||
'XV6975' => [ 'Verizon', 'Imagio XV6975' ],
|
||||
|
||||
'SFR v3650!' => [ 'Vodafone', 'Polaris' ],
|
||||
'v1415' => [ 'Vodafone', 'Vox' ],
|
||||
'v1240' => [ 'Vodafone', 'VDA II' ],
|
||||
'1210' => [ 'Vodafone', 'VDA IV' ],
|
||||
'v1210' => [ 'Vodafone', 'VDA IV' ],
|
||||
'HTC VDA V' => [ 'Vodafone', 'VDA V' ],
|
||||
'v1640' => [ 'Vodafone', 'VPA IV' ],
|
||||
'VPA Touch' => [ 'Vodafone', 'VPA Touch' ],
|
||||
'HTC v1510' => [ 'Vodafone', 'VPA Compact GPS' ],
|
||||
'HTC VPACompactIV' => [ 'Vodafone', 'VPA Compact IV' ],
|
||||
|
||||
|
||||
|
||||
'WS003SH' => [ 'Sharp', 'W-ZERO3 WS003SH', 'carrier' => 'Willcom' ],
|
||||
'WS004SH' => [ 'Sharp', 'W-ZERO3 WS004SH', 'carrier' => 'Willcom' ],
|
||||
'WS007SH' => [ 'Sharp', 'W-ZERO3 [es] WS007SH', 'carrier' => 'Willcom' ],
|
||||
'WS011SH' => [ 'Sharp', 'Advanced / W-ZERO3 [es] WS011SH', 'carrier' => 'Willcom' ],
|
||||
'WS020SH' => [ 'Sharp', 'WILLCOM 03 WS020SH', 'carrier' => 'Willcom' ],
|
||||
'WS027SH' => [ 'Sharp', 'HYBRID W-ZERO3 WS027SH', 'carrier' => 'Willcom' ],
|
||||
'S01SH' => [ 'Sharp', 'EM·ONE S01SH', 'carrier' => 'EMOBILE' ],
|
||||
'S01SH2' => [ 'Sharp', 'EM·ONE alpha S01SH2', 'carrier' => 'EMOBILE' ],
|
||||
'T-01A!' => [ 'Toshiba', 'T-01A', 'carrier' => 'DoCoMo' ],
|
||||
'T-01B!' => [ 'Toshiba', 'dynapocket T-01B', 'carrier' => 'DoCoMo' ],
|
||||
'X01T' => [ 'Toshiba', 'G900 X01T', 'carrier' => 'Softbank' ],
|
||||
'X02T!' => [ 'Toshiba', 'dynapocket X02T', 'carrier' => 'Softbank' ],
|
||||
'KDDI-HT01' => [ 'HTC', 'TOUCH PRO HT-01A', 'carrier' => 'au' ],
|
||||
'HT01A' => [ 'HTC', 'TOUCH PRO HT-01A', 'carrier' => 'au' ],
|
||||
'S11HT' => [ 'HTC', 'EMONSTER S11HT', 'carrier' => 'EMOBILE' ],
|
||||
'S12HT' => [ 'HTC', 'EMONSTER lite S12HT', 'carrier' => 'EMOBILE' ],
|
||||
'S21HT' => [ 'HTC', 'Touch Diamond S21HT', 'carrier' => 'EMOBILE' ],
|
||||
'S22HT' => [ 'HTC', 'Dual Diamond S22HT', 'carrier' => 'EMOBILE' ],
|
||||
'X01HT' => [ 'HTC', 'TyTN X01HT', 'carrier' => 'Softbank' ],
|
||||
'X02HT' => [ 'HTC', 'S630 X02HT', 'carrier' => 'Softbank' ],
|
||||
'X03HT' => [ 'HTC', 'S730 X03HT', 'carrier' => 'Softbank' ],
|
||||
'X04HT' => [ 'HTC', 'TOUCH DIAMOND X04HT', 'carrier' => 'Softbank' ],
|
||||
'X05HT' => [ 'HTC', 'TOUCH PRO X05HT', 'carrier' => 'Softbank' ],
|
||||
'SC-01B' => [ 'Samsung', 'SC-01B', 'carrier' => 'DoCoMo' ],
|
||||
'X01SC' => [ 'Samsung', 'OMNIA Pro X01SC', 'carrier' => 'Softbank' ],
|
||||
];
|
||||
333
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-wp.php
vendored
Normal file
333
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-wp.php
vendored
Normal file
@@ -0,0 +1,333 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
use WhichBrowser\Constants\DeviceType;
|
||||
|
||||
DeviceModels::$WP_MODELS = [
|
||||
'Allegro' => [ 'Acer', 'Allegro' ],
|
||||
'M310' => [ 'Acer', 'Allegro' ],
|
||||
'S58' => [ 'Acer', 'Jade Primo' ],
|
||||
'M220!' => [ 'Acer', 'Liquid' ],
|
||||
'FierceXL' => [ 'Alcatel', 'One Touch Fierce XL' ],
|
||||
'ONE TOUCH 5040X' => [ 'Alcatel', 'One Touch View' ],
|
||||
'IDOL 4 PRO' => [ 'Alcatel', 'Idol 4 Pro' ],
|
||||
'IDOL 4S with Windows 10' => [ 'Alcatel', 'Idol 4S' ],
|
||||
'Impera I' => [ 'Allview', 'Impera i' ],
|
||||
'Impera M' => [ 'Allview', 'Impera M' ],
|
||||
'Impera S' => [ 'Allview', 'Impera S' ],
|
||||
'W1i' => [ 'Allview', 'W1i' ],
|
||||
'40 Cesium' => [ 'Archos', '40 Cesium' ],
|
||||
'AC50CE' => [ 'Archos', '50 Cesium' ],
|
||||
'- BUSH Windows Phone' => [ 'Argos', 'BUSH Windows Phone' ],
|
||||
'Galaxy6' => [ 'Asus', 'Galaxy 6' ],
|
||||
'E600' => [ 'Asus', 'E600' ],
|
||||
'WIN HD LTE' => [ 'BLU', 'Win HD' ],
|
||||
'WIN HD W510l' => [ 'BLU', 'Win HD' ],
|
||||
'WIN HD W510u' => [ 'BLU', 'Win HD' ],
|
||||
'WIN JR LTE' => [ 'BLU', 'Win JR' ],
|
||||
'WIN JR W410a' => [ 'BLU', 'Win JR' ],
|
||||
'WIN JR W410i' => [ 'BLU', 'Win JR' ],
|
||||
'WIN JR W410l' => [ 'BLU', 'Win JR' ],
|
||||
'WIN JR W410u' => [ 'BLU', 'Win JR' ],
|
||||
'BP30.BM180' => [ 'Bluebird', 'Pidion' ],
|
||||
'WIN 400' => [ 'Celkon', 'Win 400' ],
|
||||
'Alpha Neon' => [ 'Cherry Mobile', 'Alpha Neon' ],
|
||||
'ALPHA PRIME 5' => [ 'Cherry Mobile', 'Alpha Prime 5' ],
|
||||
'MOBILE Alpha Luxe' => [ 'Cherry Mobile', 'Alpha Luxe' ],
|
||||
'CHERRY-MOBILE Alpha Luxe' => [ 'Cherry Mobile', 'Alpha Luxe' ],
|
||||
'MOBILE Alpha Style' => [ 'Cherry Mobile', 'Alpha Style' ],
|
||||
'MOBILE Alpha View' => [ 'Cherry Mobile', 'Alpha View' ],
|
||||
'PKT-407' => [ 'Condor', 'Griffe W1' ],
|
||||
'T698' => [ 'Cube', 'WP10', DeviceType::TABLET ],
|
||||
'Venue Pro' => [ 'Dell', 'Venue Pro' ],
|
||||
'Ixion W 5' => [ 'DEXP', 'Ixion W 5' ],
|
||||
'IQ400W' => [ 'Fly', 'IQ400W Era Windows' ],
|
||||
'IQ500W' => [ 'Fly', 'IQ500W Evo Windows' ],
|
||||
'FTJ152E' => [ 'Freetel', 'KATANA 01' ],
|
||||
'FTJ152F' => [ 'Freetel', 'KATANA 02' ],
|
||||
'IS12T' => [ 'Fujitsu Toshiba', 'IS12T' ],
|
||||
'W10' => [ 'GoMobile', 'W10' ],
|
||||
'WINJOY' => [ 'Highscreen', 'WinJoy' ],
|
||||
'WinWin' => [ 'Highscreen', 'WinWin' ],
|
||||
'E260T+' => [ 'Hisense', 'NANA' ],
|
||||
'SG 7' => [ 'HIWIKI', 'SG 7' ],
|
||||
'DolphinCT50' => [ 'Honeywell', 'Dolphin CT50' ],
|
||||
'75eL0N' => [ 'Honeywell', 'Dolphin 75e' ],
|
||||
'HELSINKI' => [ 'Honeywell', '"Helsinki"' ],
|
||||
'HD2' => [ 'HTC', 'HD2' ],
|
||||
';HD2' => [ 'HTC', 'HD2' ],
|
||||
'LEO' => [ 'HTC', 'HD2' ],
|
||||
'HD2(Leo' => [ 'HTC', 'HD2' ],
|
||||
'HD2 LEO' => [ 'HTC', 'HD2' ],
|
||||
'HTC HD2' => [ 'HTC', 'HD2' ],
|
||||
'(HD7|.*T92(92|95|96))!' => [ 'HTC', 'HD7' ],
|
||||
'Schubert!' => [ 'HTC', 'HD7' ],
|
||||
'Mondrian' => [ 'HTC', 'HD7' ],
|
||||
'Gold' => [ 'HTC', 'HD7' ],
|
||||
'Touch-IT HD7' => [ 'HTC', 'HD7' ],
|
||||
'((7 )?Mozart|.*T86(97|98))!' => [ 'HTC', '7 Mozart' ],
|
||||
'PD67100' => [ 'HTC', '7 Mozart' ],
|
||||
';PD67100' => [ 'HTC', '7 Mozart' ],
|
||||
'HTC Mozart' => [ 'HTC', '7 Mozart' ],
|
||||
'7 HTC MOZART' => [ 'HTC', '7 Mozart' ],
|
||||
'PC93100' => [ 'HTC', '7 Pro' ],
|
||||
'MWP6885' => [ 'HTC', '7 Pro' ],
|
||||
'(7 Pro|.*T75(75|76))!' => [ 'HTC', '7 Pro' ],
|
||||
'USCCHTC-PC93100' => [ 'HTC', '7 Pro' ],
|
||||
'Surround' => [ 'HTC', '7 Surround' ],
|
||||
'7 Surround' => [ 'HTC', '7 Surround' ],
|
||||
'.*T8788!' => [ 'HTC', '7 Surround' ],
|
||||
'((7 )?Trophy|.*T8686)!' => [ 'HTC', '7 Trophy' ],
|
||||
'mwp6985' => [ 'HTC', '7 Trophy' ],
|
||||
'htc mpw6958' => [ 'HTC', '7 Trophy' ],
|
||||
'htcmpw6958' => [ 'HTC', '7 Trophy' ],
|
||||
'PC40100' => [ 'HTC', '7 Trophy' ],
|
||||
'PC40200' => [ 'HTC', '7 Trophy' ],
|
||||
'Touch-IT Trophy' => [ 'HTC', '7 Trophy' ],
|
||||
'Spark' => [ 'HTC', '7 Trophy' ],
|
||||
'HTC 7 Trophy' => [ 'HTC', '7 Trophy' ],
|
||||
'HTC Trophy' => [ 'HTC', '7 Trophy' ],
|
||||
'(Radar|.*C110e)!' => [ 'HTC', 'Radar' ],
|
||||
'Omega' => [ 'HTC', 'Radar' ],
|
||||
'Mazaa' => [ 'HTC', 'Mazaa' ], // Never released
|
||||
'Titan' => [ 'HTC', 'Titan' ],
|
||||
'.*X310e!' => [ 'HTC', 'Titan' ],
|
||||
'PI39100' => [ 'HTC', 'Titan' ],
|
||||
'Eternity' => [ 'HTC', 'Titan' ],
|
||||
'Ultimate' => [ 'HTC', 'Titan' ],
|
||||
'PI86100' => [ 'HTC', 'Titan II' ],
|
||||
'8X' => [ 'HTC', '8X' ],
|
||||
'HTC6690LVW' => [ 'HTC', '8X' ],
|
||||
'HTC6990LVW' => [ 'HTC', '8X' ],
|
||||
'HTC6990LVW 4G' => [ 'HTC', '8X' ],
|
||||
'6990LVW' => [ 'HTC', '8X' ],
|
||||
'RIO U' => [ 'HTC', '8X' ],
|
||||
'ACD U' => [ 'HTC', '8X' ],
|
||||
'Accord' => [ 'HTC', '8X' ],
|
||||
'C620(d|e|t)!' => [ 'HTC', '8X' ],
|
||||
'C625(a|b)!' => [ 'HTC', '8X' ],
|
||||
'8X by HTC' => [ 'HTC', '8X' ],
|
||||
'Windows Phone 8X by HTC!' => [ 'HTC', '8X' ],
|
||||
'WindowsPhone8Xby' => [ 'HTC', '8X' ],
|
||||
'PM23300' => [ 'HTC', '8X' ],
|
||||
'htc 8x' => [ 'HTC', '8X' ],
|
||||
'A620(b|d|e|m|t)!' => [ 'HTC', '8S' ],
|
||||
'8S' => [ 'HTC', '8S' ],
|
||||
'8S by HTC' => [ 'HTC', '8S' ],
|
||||
'Windows Phone 8S by HTC!' => [ 'HTC', '8S' ],
|
||||
'WindowsPhone8Sby' => [ 'HTC', '8S' ],
|
||||
'HTCPO881' => [ 'HTC', '8XT' ],
|
||||
'HTC6995LVW' => [ 'HTC', 'One (M8) for Windows' ],
|
||||
'0P6B140' => [ 'HTC', 'One (M8) for Windows' ],
|
||||
'0P6B180' => [ 'HTC', 'One (M8) for Windows' ],
|
||||
'HUAWEI Ascend W1!' => [ 'Huawei', 'Ascend W1' ],
|
||||
'HUAWEI ?W1-(C00|U00|U34)!' => [ 'Huawei', 'Ascend W1' ],
|
||||
'W1-(C00|U00|U34)!' => [ 'Huawei', 'Ascend W1' ],
|
||||
'H883G' => [ 'Huawei', 'Ascend W1' ],
|
||||
'HUAWEI ?W2-(T00|T01|U00|U051)!' => [ 'Huawei', 'Ascend W2' ],
|
||||
'W2-(T00|T01|U00|U051)!' => [ 'Huawei', 'Ascend W2' ],
|
||||
'4Afrika' => [ 'Huawei', '4Afrika' ],
|
||||
'Andi4L' => [ 'iBall', 'Andi 4L Pulse' ],
|
||||
'M1010' => [ 'Ingram Micro', 'M1010' ],
|
||||
'Titanium Wind W4' => [ 'Karbonn', 'Titanium Wind W4' ],
|
||||
'W4' => [ 'Karbonn', 'Titanium Wind W4' ],
|
||||
'Thunder 340W' => [ 'KAZAM', 'Thunder 340W' ],
|
||||
'Thunder 450W' => [ 'KAZAM', 'Thunder 450W' ],
|
||||
'SOUL2' => [ 'Kruger&Matz', 'Soul 2' ],
|
||||
'iris Win 1' => [ 'Lava', 'Iris Win 1' ],
|
||||
'Win1' => [ 'Lava', 'Iris Win 1' ],
|
||||
'- Lazer SMART WIND' => [ 'Lazer', 'Smart Wind' ], // By Archos
|
||||
'GW910' => [ 'LG', 'Optimus 7' ],
|
||||
'LG-E740!' => [ 'LG', 'Miracle' ],
|
||||
'LG-E-?900!' => [ 'LG', 'Optimus 7' ],
|
||||
'LG-E906' => [ 'LG', 'Jil Sander' ],
|
||||
'LG-C900!' => [ 'LG', 'Optimus 7Q' ],
|
||||
'VW820' => [ 'LG', 'Lancet' ],
|
||||
'Quantum' => [ 'LG', 'Quantum' ],
|
||||
'Harley Davidson' => [ 'NGM', 'Harley Davidson' ],
|
||||
'Harley-Davidson' => [ 'NGM', 'Harley Davidson' ],
|
||||
'NEO' => [ 'NuAns', 'Neo' ],
|
||||
'MegaFon SP-W1' => [ 'Мегафон', 'SP-W1' ],
|
||||
'MWP-47!' => [ 'Miia', 'Windows Phone 4.7" iimotion' ],
|
||||
'W121' => [ 'Micromax', 'Canvas Win W121' ],
|
||||
'MICROMAX-W121' => [ 'Micromax', 'Canvas Win W121' ],
|
||||
'M5w' => [ 'Mint', 'M5 Windows' ],
|
||||
'TC70' => [ 'Motorola', 'TC70' ], // Motorola Solutions
|
||||
'MouseComputer MADOSMA Q501' => [ 'MouseComputer', 'MADOSMA Q501' ],
|
||||
|
||||
'(Lumia ?|Nokia ?)?[0-9]{3,4}!!' => [
|
||||
'Lumia 430!' => [ 'Microsoft', 'Lumia 430' ],
|
||||
'Lumia 435!' => [ 'Microsoft', 'Lumia 435' ],
|
||||
'(Lumia ?|Nokia ?)?505!' => [ 'Nokia', 'Lumia 505' ],
|
||||
'(Lumia ?|Nokia ?)?510!' => [ 'Nokia', 'Lumia 510' ],
|
||||
'(Lumia ?|Nokia ?)?520!' => [ 'Nokia', 'Lumia 520' ],
|
||||
'(Lumia ?|Nokia ?)?521!' => [ 'Nokia', 'Lumia 521' ],
|
||||
'(Lumia ?|Nokia ?)?525!' => [ 'Nokia', 'Lumia 525' ],
|
||||
'(Lumia ?|Nokia ?)?526!' => [ 'Nokia', 'Lumia 526' ],
|
||||
'(Lumia ?|Nokia ?)?530!' => [ 'Nokia', 'Lumia 530' ],
|
||||
'Lumia 532!' => [ 'Microsoft', 'Lumia 532' ],
|
||||
'Lumia 535!' => [ 'Microsoft', 'Lumia 535' ],
|
||||
'Lumia 540!' => [ 'Microsoft', 'Lumia 540' ],
|
||||
'Lumia 550!' => [ 'Microsoft', 'Lumia 550' ],
|
||||
'(Lumia ?|Nokia ?)?610!' => [ 'Nokia', 'Lumia 610' ],
|
||||
'(Lumia ?|Nokia ?)?620!' => [ 'Nokia', 'Lumia 620' ],
|
||||
'(Lumia ?|Nokia ?)?625!' => [ 'Nokia', 'Lumia 625' ],
|
||||
'(Lumia ?|Nokia ?)?630!' => [ 'Nokia', 'Lumia 630' ],
|
||||
'(Lumia ?|Nokia ?)?635!' => [ 'Nokia', 'Lumia 635' ],
|
||||
'(Lumia ?|Nokia ?)?636!' => [ 'Nokia', 'Lumia 636' ],
|
||||
'Lumia 638' => [ 'Nokia', 'Lumia 638' ],
|
||||
'(Lumia ?|Nokia ?)?640 XL!' => [ 'Microsoft', 'Lumia 640 XL' ],
|
||||
'(Lumia ?|Nokia ?)?640!' => [ 'Microsoft', 'Lumia 640' ],
|
||||
'Lumia 650!' => [ 'Microsoft', 'Lumia 650' ],
|
||||
'(Lumia ?|Nokia ?)?710!' => [ 'Nokia', 'Lumia 710' ],
|
||||
'(Lumia ?|Nokia ?)?719!' => [ 'Nokia', 'Lumia 719' ],
|
||||
'(Lumia ?|Nokia ?)?720!' => [ 'Nokia', 'Lumia 720' ],
|
||||
'Lumia 730!' => [ 'Nokia', 'Lumia 730' ],
|
||||
'Lumia 735!' => [ 'Nokia', 'Lumia 735' ],
|
||||
'(Lumia ?|Nokia ?)?800!' => [ 'Nokia', 'Lumia 800' ],
|
||||
'(Lumia ?|Nokia ?)?810!' => [ 'Nokia', 'Lumia 810' ],
|
||||
'(Lumia ?|Nokia ?)?820!' => [ 'Nokia', 'Lumia 820' ],
|
||||
'(Lumia ?|Nokia ?)?822!' => [ 'Nokia', 'Lumia 822' ],
|
||||
'(Lumia ?|Nokia ?)?830!' => [ 'Nokia', 'Lumia 830' ],
|
||||
'Lumia 850!' => [ 'Microsoft', 'Lumia 850' ],
|
||||
'(Lumia ?|Nokia ?)?900!' => [ 'Nokia', 'Lumia 900' ],
|
||||
'(Lumia ?|Nokia ?)?920!' => [ 'Nokia', 'Lumia 920' ],
|
||||
'(Lumia ?|Nokia ?)?925!' => [ 'Nokia', 'Lumia 925' ],
|
||||
'(Lumia ?|Nokia ?)?928!' => [ 'Nokia', 'Lumia 928' ],
|
||||
'(Lumia ?|Nokia ?)?929!' => [ 'Nokia', 'Lumia 929 Icon' ],
|
||||
'(Lumia ?|Nokia ?)?930!' => [ 'Nokia', 'Lumia 930' ],
|
||||
'Lumia 950 XL!' => [ 'Microsoft', 'Lumia 950 XL' ],
|
||||
'Lumia 950!' => [ 'Microsoft', 'Lumia 950' ],
|
||||
'(Lumia ?|Nokia ?)?909!' => [ 'Nokia', 'Lumia 1020' ], // 909 was the original name of the 1020
|
||||
'(Lumia ?|Nokia ?)?1020!' => [ 'Nokia', 'Lumia 1020' ],
|
||||
'(Lumia ?|Nokia ?)?1320!' => [ 'Nokia', 'Lumia 1320' ],
|
||||
'(Lumia ?|Nokia ?)?1520!' => [ 'Nokia', 'Lumia 1520' ],
|
||||
'Lumia 1530' => [ 'Microsoft', 'Lumia 1530' ],
|
||||
],
|
||||
|
||||
'RM-[0-9]{3,4}!!' => [
|
||||
'RM-1099!' => [ 'Microsoft', 'Lumia 430' ],
|
||||
'RM-10(68|69|70|71)!' => [ 'Microsoft', 'Lumia 435' ],
|
||||
'RM-1114!' => [ 'Microsoft', 'Lumia 435' ],
|
||||
'RM-9(13|14|15)!' => [ 'Nokia', 'Lumia 520' ],
|
||||
'RM-917!' => [ 'Nokia', 'Lumia 521' ],
|
||||
'RM-998!' => [ 'Nokia', 'Lumia 525' ],
|
||||
'RM-997!' => [ 'Nokia', 'Lumia 526' ],
|
||||
'RM-10(17|18|19|20)!' => [ 'Nokia', 'Lumia 530' ],
|
||||
'RM-10(31|32|34)!' => [ 'Microsoft', 'Lumia 532' ],
|
||||
'RM-1115!' => [ 'Microsoft', 'Lumia 532' ],
|
||||
'RM-10(89|90|91|92)!' => [ 'Microsoft', 'Lumia 535' ],
|
||||
'RM-1141!' => [ 'Microsoft', 'Lumia 540' ],
|
||||
'RM-1127!' => [ 'Microsoft', 'Lumia 550' ],
|
||||
'RM-846!' => [ 'Nokia', 'Lumia 620' ],
|
||||
'RM-9(41|42|43)!' => [ 'Nokia', 'Lumia 625' ],
|
||||
'RM-9(76|77|78|79)!' => [ 'Nokia', 'Lumia 630' ],
|
||||
'RM-9(74|75)!' => [ 'Nokia', 'Lumia 635' ],
|
||||
'RM-1078!' => [ 'Nokia', 'Lumia 635' ],
|
||||
'RM-1027!' => [ 'Nokia', 'Lumia 636' ],
|
||||
'RM-1010!' => [ 'Nokia', 'Lumia 638' ],
|
||||
'RM-10(72|74|75|77)!' => [ 'Microsoft', 'Lumia 640' ],
|
||||
'RM-11(09|13)!' => [ 'Microsoft', 'Lumia 640' ],
|
||||
'RM-10(63|64|65|66|67|73|96)!' => [ 'Microsoft', 'Lumia 640 XL' ],
|
||||
'RM-11(52|54)!' => [ 'Microsoft', 'Lumia 650' ],
|
||||
'RM-8(85|87)!' => [ 'Nokia', 'Lumia 720' ],
|
||||
'RM-1040!' => [ 'Nokia', 'Lumia 730' ],
|
||||
'RM-1038!' => [ 'Nokia', 'Lumia 735' ],
|
||||
'RM-878!' => [ 'Nokia', 'Lumia 810' ],
|
||||
'RM-8(24|25|26)!' => [ 'Nokia', 'Lumia 820' ],
|
||||
'RM-845!' => [ 'Nokia', 'Lumia 822' ],
|
||||
'RM-9(83|84|85)!' => [ 'Nokia', 'Lumia 830' ],
|
||||
'RM-8(20|21|22)!' => [ 'Nokia', 'Lumia 920' ],
|
||||
'RM-867!' => [ 'Nokia', 'Lumia 920' ],
|
||||
'RM-8(92|93)!' => [ 'Nokia', 'Lumia 925' ],
|
||||
'RM-910!' => [ 'Nokia', 'Lumia 925' ],
|
||||
'RM-955!' => [ 'Nokia', 'Lumia 925T' ],
|
||||
'RM-860!' => [ 'Nokia', 'Lumia 928' ],
|
||||
'RM-927!' => [ 'Nokia', 'Lumia 929 Icon' ],
|
||||
'RM-10(45|87)!' => [ 'Nokia', 'Lumia 930' ],
|
||||
'RM-11(04|18)!' => [ 'Microsoft', 'Lumia 950' ],
|
||||
'RM-1085!' => [ 'Microsoft', 'Lumia 950 XL' ],
|
||||
'RM-1116!' => [ 'Microsoft', 'Lumia 950 XL' ],
|
||||
'RM-8(75|76|77)!' => [ 'Nokia', 'Lumia 1020' ],
|
||||
'RM-9(94|95|96)!' => [ 'Nokia', 'Lumia 1320' ],
|
||||
'RM-9(37|38|39|40)!' => [ 'Nokia', 'Lumia 1520' ],
|
||||
],
|
||||
|
||||
'id[0-9]{3,3}!!' => [
|
||||
'id102!' => [ 'Nokia', 'Lumia 822' ],
|
||||
'id308!' => [ 'Nokia', 'Lumia 1520' ],
|
||||
'id313!' => [ 'Nokia', 'Lumia 635' ],
|
||||
'id316!' => [ 'Nokia', 'Lumia 530' ],
|
||||
],
|
||||
|
||||
'SeaRay' => [ 'Nokia', 'Lumia 800' ],
|
||||
'Semaphore' => [ 'Nokia', '"Juggernaut Semaphore"' ],
|
||||
'Surface Phone' => [ 'Microsoft', 'Surface Phone' ],
|
||||
'ONIX AWP4-215' => [ 'ONYX', 'AWP4-215' ],
|
||||
'QSMART STORM W408' => [ 'Q-Mobile', 'Q-Smart Storm W408' ],
|
||||
'QSMART DREAM W473' => [ 'Q-Mobile', 'Q-Smart Dream W473' ],
|
||||
'QSMART STORM W510' => [ 'Q-Mobile', 'Q-Smart Storm W510' ],
|
||||
'FZ-E1' => [ 'Panasonic', 'Toughpad FZ-E1' ],
|
||||
'PSP8400DUO' => [ 'Prestigio', 'MultiPhone 8400 Duo' ],
|
||||
'PSP8500DUO' => [ 'Prestigio', 'MultiPhone 8500 Duo' ],
|
||||
'PRESTIGIO-PSP8500DUO' => [ 'Prestigio', 'MultiPhone 8500 Duo' ],
|
||||
|
||||
'GT-[IS][0-9]{4,4}!!' => [
|
||||
'GT-I8350!' => [ 'Samsung', 'Omnia W' ],
|
||||
'GT-i8700' => [ 'Samsung', 'Omnia 7' ],
|
||||
'GT-I8710' => [ 'Samsung', 'Ativ S' ],
|
||||
'GT-I8750' => [ 'Samsung', 'Ativ S' ],
|
||||
'GT-S7530!' => [ 'Samsung', 'Omnia M' ],
|
||||
],
|
||||
|
||||
'SGH-[IT][0-9]{3,3}!!' => [
|
||||
'SGH-I187' => [ 'Samsung', 'Ativ S Neo' ],
|
||||
'SGH-i667' => [ 'Samsung', 'Focus 2' ],
|
||||
'SGH-i677' => [ 'Samsung', 'Focus Flash' ],
|
||||
'SGH-i707' => [ 'Samsung', 'Taylor' ], // Developer phone - never released
|
||||
'SGH-i917!' => [ 'Samsung', 'Focus' ],
|
||||
'SGH-i937!' => [ 'Samsung', 'Focus S' ],
|
||||
'SGH-T899M' => [ 'Samsung', 'Ativ S' ],
|
||||
],
|
||||
|
||||
'SM-W750V' => [ 'Samsung', 'Ativ SE' ],
|
||||
'SPH-I800' => [ 'Samsung', 'Ativ S Neo' ],
|
||||
'SCH-R860U' => [ 'Samsung', 'Ativ Odyssey' ],
|
||||
'SCH-I930' => [ 'Samsung', 'Ativ Odyssey' ],
|
||||
'Ativ S' => [ 'Samsung', 'Ativ S' ],
|
||||
'ATIV S Neo' => [ 'Samsung', 'Ativ S Neo' ],
|
||||
'CETUS' => [ 'Samsung', 'Focus' ],
|
||||
'I917' => [ 'Samsung', 'Focus' ],
|
||||
'Focus i917!' => [ 'Samsung', 'Focus' ],
|
||||
'FOCUS S' => [ 'Samsung', 'Focus S' ],
|
||||
'OM(NI|IN)A ?7!' => [ 'Samsung', 'Omnia 7' ],
|
||||
'Omnia W' => [ 'Samsung', 'Omnia W' ],
|
||||
'Haden' => [ 'Samsung', 'Omnia W' ],
|
||||
'Taylor' => [ 'Samsung', 'Taylor' ],
|
||||
'S606' => [ 'TCL', 'Horizon S606' ],
|
||||
'TSUNAGI' => [ 'Toshiba', 'Tsunagi' ],
|
||||
'TG01' => [ 'Toshiba', 'TG01' ],
|
||||
'WP 4.7' => [ 'Trekstor', 'WP 4.7' ],
|
||||
'MI4' => [ 'Xiaomi', 'Mi 4' ],
|
||||
'Win-Q900S' => [ 'XOLO', 'Win Q900s' ],
|
||||
'Win Q1000' => [ 'XOLO', 'Win Q1000' ],
|
||||
'WinQ1000' => [ 'XOLO', 'Win Q1000' ],
|
||||
'Billy 4' => [ 'Yezz', 'Billy 4' ],
|
||||
'Billy 4.7' => [ 'Yezz', 'Billy 4.7' ],
|
||||
'47' => [ 'Yezz', 'Monaco 47' ],
|
||||
'USCCN859' => [ 'ZTE', 'N859 Render' ],
|
||||
'N880e!' => [ 'ZTE', 'N880e' ],
|
||||
'V965W' => [ 'ZTE', 'V965W Tania' ],
|
||||
'Tania' => [ 'ZTE', 'V965W Tania' ],
|
||||
|
||||
|
||||
'Microsoft!' => [ null, null ],
|
||||
'Windows!' => [ null, null ],
|
||||
'Virtual!' => [ null, null ],
|
||||
'Android!' => [ null, null ],
|
||||
'Linux!' => [ null, null ],
|
||||
'<model>!' => [ null, null ],
|
||||
'XXX!' => [ null, null ],
|
||||
'InfoPath!' => [ null, null ],
|
||||
];
|
||||
97
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/os-cfnetwork.php
vendored
Normal file
97
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/os-cfnetwork.php
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
CFNetwork::$OSX = [
|
||||
'1.1' => [ 'value' => '10.2' ],
|
||||
'1.2.1' => [ 'value' => '10.3.2' ],
|
||||
'1.2.2' => [ 'value' => '10.3.9' ],
|
||||
'1.2.6' => [ 'value' => '10.3.9' ],
|
||||
'128' => [ 'value' => '10.4' ],
|
||||
'128.2' => [ 'value' => '10.4.2' ],
|
||||
'129.5' => [ 'value' => '10.4.3' ],
|
||||
'129.9' => [ 'value' => '10.4.4' ],
|
||||
'129.10' => [ 'value' => '10.4.4' ],
|
||||
'129.13' => [ 'value' => '10.4.6' ],
|
||||
'129.16' => [ 'value' => '10.4.7' ],
|
||||
'129.18' => [ 'value' => '10.4.8' ],
|
||||
'129.20' => [ 'value' => '10.4.9' ],
|
||||
'129.21' => [ 'value' => '10.4.10' ],
|
||||
'129.22' => [ 'value' => '10.4.11' ],
|
||||
'217' => [ 'value' => '10.5' ],
|
||||
'220' => [ 'value' => '10.5.1' ],
|
||||
'221.5' => [ 'value' => '10.5.2' ],
|
||||
'330' => [ 'value' => '10.5.3' ],
|
||||
'330.4' => [ 'value' => '10.5.4' ],
|
||||
'339.5' => [ 'value' => '10.5.5' ],
|
||||
'422.11' => [ 'value' => '10.5.6' ],
|
||||
'438.12' => [ 'value' => '10.5.7' ],
|
||||
'438.14' => [ 'value' => '10.5.8' ],
|
||||
'454.4' => [ 'value' => '10.6.0' ],
|
||||
'454.5' => [ 'value' => '10.6.2' ],
|
||||
'454.9.4' => [ 'value' => '10.6.3' ],
|
||||
'454.9.7' => [ 'value' => '10.6.4' ],
|
||||
'454.11.5' => [ 'value' => '10.6.5' ],
|
||||
'454.11.12' => [ 'value' => '10.6.7' ],
|
||||
'454.12.4' => [ 'value' => '10.6.8' ],
|
||||
'520.0.13' => [ 'value' => '10.7.1' ],
|
||||
'520.2.5' => [ 'value' => '10.7.2' ],
|
||||
'520.3.2' => [ 'value' => '10.7.3' ],
|
||||
'520.4.3' => [ 'value' => '10.7.4' ],
|
||||
'520.5.1' => [ 'value' => '10.7.5' ],
|
||||
'596.1' => [ 'value' => '10.8.1' ],
|
||||
'596.2.3' => [ 'value' => '10.8.2' ],
|
||||
'596.3.3' => [ 'value' => '10.8.3' ],
|
||||
'596.4.3' => [ 'value' => '10.8.4' ],
|
||||
'596.5' => [ 'value' => '10.8.5' ],
|
||||
'673.0.3' => [ 'value' => '10.9' ],
|
||||
'673.2.1' => [ 'value' => '10.9.2' ],
|
||||
'673.4' => [ 'value' => '10.9.3' ],
|
||||
'720.0.9' => [ 'value' => '10.10' ],
|
||||
'720.1.1' => [ 'value' => '10.10.1' ],
|
||||
'720.2.4' => [ 'value' => '10.10.2' ],
|
||||
'720.3.13' => [ 'value' => '10.10.3' ],
|
||||
'720.4.4' => [ 'value' => '10.10.4' ],
|
||||
'720.5.7' => [ 'value' => '10.10.5' ],
|
||||
'760.0.5' => [ 'value' => '10.11' ],
|
||||
'760.1.2' => [ 'value' => '10.11.1' ],
|
||||
'760.2.6' => [ 'value' => '10.11.2' ],
|
||||
'760.4.2' => [ 'value' => '10.11.4' ],
|
||||
'760.5' => [ 'value' => '10.11.4' ],
|
||||
'760.5.1' => [ 'value' => '10.11.5' ],
|
||||
];
|
||||
|
||||
CFNetwork::$IOS = [
|
||||
'459' => [ 'value' => '3.1.3' ],
|
||||
'467.12' => [ 'value' => '3.2' ],
|
||||
'485.2' => [ 'value' => '4.0' ],
|
||||
'485.10.2' => [ 'value' => '4.1' ],
|
||||
'485.12.7' => [ 'value' => '4.2.1' ],
|
||||
'485.12.30' => [ 'value' => '4.2.8' ],
|
||||
'485.13.9' => [ 'value' => '4.3' ],
|
||||
'548.0.3' => [ 'value' => '5.0' ],
|
||||
'548.0.4' => [ 'value' => '5.0.1' ],
|
||||
'548.1.4' => [ 'value' => '5.1' ],
|
||||
'602' => [ 'value' => '6.0' ],
|
||||
'609' => [ 'value' => '6.0' ],
|
||||
'609.1.4' => [ 'value' => '6.1.2' ],
|
||||
'671' => [ 'value' => '7.0' ],
|
||||
'672.0.2' => [ 'value' => '7.0' ],
|
||||
'672.0.8' => [ 'value' => '7.0.3' ],
|
||||
'672.1.13' => [ 'value' => '7.1' ],
|
||||
'672.1.14' => [ 'value' => '7.1.1' ],
|
||||
'672.1.15' => [ 'value' => '7.1.2' ],
|
||||
'711.0.6' => [ 'value' => '8.0' ],
|
||||
'711.1.12' => [ 'value' => '8.1' ],
|
||||
'711.1.16' => [ 'value' => '8.1.1' ],
|
||||
'711.2.23' => [ 'value' => '8.2' ],
|
||||
'711.3.18' => [ 'value' => '8.3' ],
|
||||
'711.4.6' => [ 'value' => '8.4' ],
|
||||
'711.5.6' => [ 'value' => '8.4.1' ],
|
||||
'758.0.2' => [ 'value' => '9.0' ],
|
||||
'758.1.6' => [ 'value' => '9.1' ],
|
||||
'758.2.7' => [ 'value' => '9.2' ],
|
||||
'758.2.8' => [ 'value' => '9.2' ],
|
||||
'758.3.15' => [ 'value' => '9.3' ],
|
||||
'758.4.3' => [ 'value' => '9.3.2' ],
|
||||
];
|
||||
27
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/os-darwin.php
vendored
Normal file
27
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/os-darwin.php
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
Darwin::$OSX = [
|
||||
'1' => [ 'value' =>'10.0' ],
|
||||
'5' => [ 'value' =>'10.1' ],
|
||||
'6' => [ 'value' =>'10.2' ],
|
||||
'7' => [ 'value' =>'10.3' ],
|
||||
'8' => [ 'value' =>'10.4' ],
|
||||
'9' => [ 'value' =>'10.5' ],
|
||||
'10' => [ 'value' =>'10.6' ],
|
||||
'11' => [ 'value' =>'10.7' ],
|
||||
'12' => [ 'value' =>'10.8' ],
|
||||
'13' => [ 'value' =>'10.9' ],
|
||||
'14' => [ 'value' =>'10.10' ],
|
||||
'15' => [ 'value' =>'10.11' ],
|
||||
];
|
||||
|
||||
Darwin::$IOS = [
|
||||
'9' => [ 'value' =>'1' ],
|
||||
'10' => [ 'value' =>'4' ],
|
||||
'11' => [ 'value' =>'5' ],
|
||||
'13' => [ 'value' =>'6' ],
|
||||
'14' => [ 'value' =>'7' ],
|
||||
'15' => [ 'value' =>'9' ],
|
||||
];
|
||||
10044
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/profiles.php
vendored
Normal file
10044
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/profiles.php
vendored
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
Applications::$BOTS_REGEX = '/(008|360|a6|abound|muncher|adaxas|addthis|admantx|ahrefsbot|archiver|altavista|curious|cloudfront|amorank|archive|jeeves|astra|backlink|baidu|bazqux|bingbot|msnbot|msmobot|bing|blogbridge|bloglines|bloglovin|blogpulse|blogram|blogtrot|blogshares|boardreader|browsershots|bubing|butterfly|heritrix|cliqz|cloudflare|comodo|commafeed|cbot|watchdog|datasearch|daumoa|digg|domain|exabot|exactseek|ezooms|facebook|fast|flamingo|fastladder|feed|wrangler|validator|fever|friendica|robot|genieo|fetchor|google|gomez|ichiro|gooblog|goorss|grammarly|grub|hatena|capture|heureka|htdig|httpmon|hubpages|spider|crawler|kouio|larbin|linkedin|linkdex|livedoor|ltx71|magpie|mapion|socialstreams|mixi|mnogo|monitor|yeti|netcraft|netvibes|newsblur|newsgator|orange|pages|psbot|pingdom|pinterest|postrank|comment|rssbar|hunter|quora|safesearch|scrapy|seznam|shopwiki|reader|simplepie|site24|sogou|sophora|soso|spdycheck|spinn|detector|summify|telegram|twisted|twitter|tiny|tlsprober|typhoeus|vagabondo|voila|vocus|mcrawler|w3bot|jigsaw|w3c|wayback|webindexer|wordpress|mechanize|xerka|sitemap|yacy|yandex|yahoo|y\!j|slurp|httpclient|nutch|synapse|indy|wget|curl|package|java|simple|libwww|lwp|urllib|php|pear|zend|ruby)/i';
|
||||
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
Applications::$BROWSERS_REGEX = '/(115|126|2345|qihu|7star|abrowse|acorn|acoo|aol|america|arachne|arora|aweb|avant|asw|aviator|flyflow|bdbrowser|bdspark|beamrise|blackwren|brave|byffox|camino|canure|charon|chromeplus|cometbird|comodo|dragon|conkeror|coolnovo|cunaguaro|cyberfox|daedalus|dillo|rhodonit|eudoraweb|flock|galeon|epiphany|ibrowse|icab|iceape|icecat|iceweasel|iridium|iron|kazehakase|kchrome|meleon|lbbrowser|lobo|lunascape|naenara|mxbrowser|mixshark|mlbrowser|netpositive|origyn|owb|orca|oregano|otter|palemoon|qtweb|qupzilla|rekonq|ryouko|saayaa|sleipnir|metasr|stainless|sunchrome|superbird|swing|tencent|tenfourfox|theworld|tungsten|vivaldi|voyager|waterfox|yabrowser|1password|3g explorer|4g explorer|atomiclite|au|awakening|baidu|bdmobile|bidu|baiduboxapp|browser|blazer|acheetahi|cornowser|coolmarket|cute|digia|doris|doroty|www browser|eui|go\.web|helium|huohoubrowser|surfboard|isurf|jig browser|jumanji|kiosk|lebrowser|liebao|macross|mammoth|mcent|mib|cmcs|motorola|netfrontlife|onebrowser|plink|polaris|openwave|up|km|quark|semc|stnc|sogou|symphony|ucpro|weblite|alti|aplix|awox|browserserver|isis|spyglass|oregan|viera|zetakey|bunjalloo|nwf|nuanti|wib|prince|demobrowser|dooble|dwb|evm|fireweb|hive|intermec|phantom|qt|roccat|raven|rockmelt|scope|slim|smbrowser|snowshoe|sputnik|surf|tao|taz|uzbl|villanova|vimb|wada|wavelink|webrender|webster|wyzo|yelang|yrcweb|linemode|lynx|links|w3m|nimbus|Webwasher|sankore|adapi|brightsign|coship)/i';
|
||||
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Data;
|
||||
|
||||
Applications::$OTHERS_REGEX = '/(itunes|qt|bluefish|nightingale|songbird|stagefright|substream|vlc|windows-media|coreplayer|flycast|boxee|kodi|xbmc|lightning|thunderbird|outlook|lotus|postbox|bat|yahoo|daum|flipboard|akregator|blogos|cococ|feed|liferea|news|jetbrains|rss|reeder|reedkit|rome|ziepod|messenger|kik|wire|yammer|fbios|fb4a|googleplus|instagram|pinterest|weibo|tumblr|twitter|wp-android|office|bingweb|hao123|gsa|naver|sogousearch|yandex|atom|golive|brackets|iweb|frontpage|amaya|websphere|download|tansodl|origin|secondlife|valve|raptr|alipay|cooliris|google|leechcraft|expeditor)/i';
|
||||
32
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/phpunit.xml
vendored
Normal file
32
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/phpunit.xml
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
<phpunit
|
||||
bootstrap="./vendor/autoload.php"
|
||||
colors="false"
|
||||
convertErrorsToExceptions="true"
|
||||
convertNoticesToExceptions="true"
|
||||
convertWarningsToExceptions="true"
|
||||
verbose="true"
|
||||
stopOnFailure="false"
|
||||
processIsolation="false"
|
||||
backupGlobals="false"
|
||||
syntaxCheck="true"
|
||||
>
|
||||
<testsuites>
|
||||
<testsuite name="WhichBrowser tests">
|
||||
<directory suffix="Test.php">tests/unit</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
|
||||
<filter>
|
||||
<whitelist addUncoveredFilesFromWhitelist="true">
|
||||
<directory suffix=".php">src/Model</directory>
|
||||
<file>src/Parser.php</file>
|
||||
<file>src/Analyser.php</file>
|
||||
<file>src/Cache.php</file>
|
||||
</whitelist>
|
||||
</filter>
|
||||
|
||||
<logging>
|
||||
<log type="coverage-html" target="./build" charset="UTF-8" highlight="false" lowUpperBound="35" highLowerBound="70"/>
|
||||
</logging>
|
||||
|
||||
</phpunit>
|
||||
48
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser.php
vendored
Normal file
48
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser.php
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
use WhichBrowser\Model\Main;
|
||||
|
||||
class Analyser
|
||||
{
|
||||
use Analyser\Header, Analyser\Derive, Analyser\Corrections, Analyser\Camouflage;
|
||||
|
||||
private $data;
|
||||
|
||||
private $options;
|
||||
|
||||
private $headers = [];
|
||||
|
||||
public function __construct($headers, $options = [])
|
||||
{
|
||||
$this->headers = $headers;
|
||||
$this->options = (object) $options;
|
||||
}
|
||||
|
||||
public function setData(&$data)
|
||||
{
|
||||
$this->data =& $data;
|
||||
}
|
||||
|
||||
public function &getData()
|
||||
{
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
public function analyse()
|
||||
{
|
||||
if (!isset($this->data)) {
|
||||
$this->data = new Main();
|
||||
}
|
||||
|
||||
/* Start the actual analysing steps */
|
||||
|
||||
$this->analyseHeaders()
|
||||
->deriveInformation()
|
||||
->applyCorrections()
|
||||
->detectCamouflage()
|
||||
->deriveDeviceSubType();
|
||||
}
|
||||
}
|
||||
314
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Camouflage.php
vendored
Normal file
314
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Camouflage.php
vendored
Normal file
@@ -0,0 +1,314 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
use WhichBrowser\Data;
|
||||
use WhichBrowser\Model\Version;
|
||||
|
||||
trait Camouflage
|
||||
{
|
||||
private function &detectCamouflage()
|
||||
{
|
||||
if ($ua = $this->getHeader('User-Agent')) {
|
||||
|
||||
$this
|
||||
->detectCamouflagedAndroidBrowser($ua)
|
||||
->detectCamouflagedAndroidAsusBrowser($ua)
|
||||
->detectCamouflagedAsSafari($ua)
|
||||
->detectCamouflagedAsChrome($ua);
|
||||
}
|
||||
|
||||
if (!empty($this->options->useragent)) {
|
||||
$this->detectCamouflagedUCBrowser($this->options->useragent);
|
||||
}
|
||||
|
||||
if (isset($this->options->engine)) {
|
||||
$this->detectCamouflagedBasedOnEngines();
|
||||
}
|
||||
|
||||
if (isset($this->options->features)) {
|
||||
$this->detectCamouflagedBasedOnFeatures();
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
private function &detectCamouflagedAndroidBrowser($ua)
|
||||
{
|
||||
if (preg_match('/Mac OS X 10_6_3; ([^;]+); [a-z]{2}(?:-[a-z]{2})?\)/u', $ua, $match)) {
|
||||
$this->data->browser->name = 'Android Browser';
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->mode = 'desktop';
|
||||
|
||||
$this->data->os->name = 'Android';
|
||||
$this->data->os->alias = null;
|
||||
$this->data->os->version = null;
|
||||
|
||||
$this->data->engine->name = 'Webkit';
|
||||
$this->data->engine->version = null;
|
||||
|
||||
$this->data->device->type = 'mobile';
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[1]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
|
||||
$this->data->features[] = 'foundDevice';
|
||||
}
|
||||
|
||||
if (preg_match('/Mac OS X 10_5_7; [^\/\);]+\/([^\/\);]+)\//u', $ua, $match)) {
|
||||
$this->data->browser->name = 'Android Browser';
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->mode = 'desktop';
|
||||
|
||||
$this->data->os->name = 'Android';
|
||||
$this->data->os->alias = null;
|
||||
$this->data->os->version = null;
|
||||
|
||||
$this->data->engine->name = 'Webkit';
|
||||
$this->data->engine->version = null;
|
||||
|
||||
$this->data->device->type = 'mobile';
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[1]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
|
||||
$this->data->features[] = 'foundDevice';
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
private function &detectCamouflagedAndroidAsusBrowser($ua)
|
||||
{
|
||||
if (preg_match('/Linux Ventana; [a-z]{2}(?:-[a-z]{2})?; (.+) Build/u', $ua, $match)) {
|
||||
$this->data->browser->name = 'Android Browser';
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->channel = null;
|
||||
$this->data->browser->mode = 'desktop';
|
||||
|
||||
$this->data->engine->name = 'Webkit';
|
||||
$this->data->engine->version = null;
|
||||
|
||||
$this->data->features[] = 'foundDevice';
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
private function &detectCamouflagedAsSafari($ua)
|
||||
{
|
||||
if ($this->data->isBrowser('Safari') && !preg_match('/Darwin/u', $ua)) {
|
||||
if ($this->data->isOs('iOS') && !preg_match('/^Mozilla/u', $ua)) {
|
||||
$this->data->features[] = 'noMozillaPrefix';
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
|
||||
if (!preg_match('/Version\/[0-9\.]+/u', $ua)) {
|
||||
$this->data->features[] = 'noVersion';
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
private function &detectCamouflagedAsChrome($ua)
|
||||
{
|
||||
if ($this->data->isBrowser('Chrome')) {
|
||||
if (preg_match('/(?:Chrome|CrMo|CriOS)\//u', $ua)
|
||||
&& !preg_match('/(?:Chrome|CrMo|CriOS)\/([0-9]{1,2}\.[0-9]\.[0-9]{3,4}\.[0-9]+)/u', $ua)
|
||||
) {
|
||||
|
||||
$this->data->features[] = 'wrongVersion';
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
private function &detectCamouflagedUCBrowser($ua)
|
||||
{
|
||||
if ($ua == 'Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.2.3.4) Gecko/') {
|
||||
|
||||
if (!$this->data->isBrowser('UC Browser')) {
|
||||
$this->data->browser->name = 'UC Browser';
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->stock = false;
|
||||
}
|
||||
|
||||
if ($this->data->isOs('Windows')) {
|
||||
$this->data->os->reset();
|
||||
}
|
||||
|
||||
$this->data->engine->reset([ 'name' => 'Gecko' ]);
|
||||
$this->data->device->type = 'mobile';
|
||||
}
|
||||
|
||||
if ($this->data->isBrowser('Chrome')) {
|
||||
if (preg_match('/UBrowser\/?([0-9.]*)/u', $ua, $match)) {
|
||||
$this->data->browser->stock = false;
|
||||
$this->data->browser->name = 'UC Browser';
|
||||
$this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]);
|
||||
$this->data->browser->type = Constants\BrowserType::BROWSER;
|
||||
unset($this->data->browser->channel);
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
private function &detectCamouflagedBasedOnEngines()
|
||||
{
|
||||
if (isset($this->data->engine->name) && $this->data->browser->mode != 'proxy') {
|
||||
|
||||
/* If it claims not to be Trident, but it is probably Trident running camouflage mode */
|
||||
if ($this->options->engine & Constants\EngineType::TRIDENT) {
|
||||
$this->data->features[] = 'trident';
|
||||
|
||||
if ($this->data->engine->name && $this->data->engine->name != 'Trident') {
|
||||
$this->data->camouflage = !isset($this->data->browser->name) || ($this->data->browser->name != 'Maxthon' && $this->data->browser->name != 'Motorola WebKit');
|
||||
}
|
||||
}
|
||||
|
||||
/* If it claims not to be Opera, but it is probably Opera running camouflage mode */
|
||||
if ($this->options->engine & Constants\EngineType::PRESTO) {
|
||||
$this->data->features[] = 'presto';
|
||||
|
||||
if ($this->data->engine->name && $this->data->engine->name != 'Presto') {
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
|
||||
if (isset($this->data->browser->name) && $this->data->browser->name == 'Internet Explorer') {
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
}
|
||||
|
||||
/* If it claims not to be Gecko, but it is probably Gecko running camouflage mode */
|
||||
if ($this->options->engine & Constants\EngineType::GECKO) {
|
||||
$this->data->features[] = 'gecko';
|
||||
|
||||
if ($this->data->engine->name && $this->data->engine->name != 'Gecko') {
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
|
||||
if (isset($this->data->browser->name) && $this->data->browser->name == 'Internet Explorer') {
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
}
|
||||
|
||||
/* If it claims not to be Webkit, but it is probably Webkit running camouflage mode */
|
||||
if ($this->options->engine & Constants\EngineType::WEBKIT) {
|
||||
$this->data->features[] = 'webkit';
|
||||
|
||||
if ($this->data->engine->name && ($this->data->engine->name != 'Blink' && $this->data->engine->name != 'Webkit')) {
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
|
||||
if (isset($this->data->browser->name) && $this->data->browser->name == 'Internet Explorer') {
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
|
||||
/* IE 11 on mobile now supports Webkit APIs */
|
||||
if (isset($this->data->browser->name) && $this->data->browser->name == 'Mobile Internet Explorer'
|
||||
&& isset($this->data->browser->version) && $this->data->browser->version->toFloat() >= 11
|
||||
&& isset($this->data->os->name) && $this->data->os->name == 'Windows Phone'
|
||||
) {
|
||||
$this->data->camouflage = false;
|
||||
}
|
||||
|
||||
/* IE 11 Developer Preview now supports Webkit APIs */
|
||||
if (isset($this->data->browser->name) && $this->data->browser->name == 'Internet Explorer'
|
||||
&& isset($this->data->browser->version) && $this->data->browser->version->toFloat() >= 11
|
||||
&& isset($this->data->os->name) && $this->data->os->name == 'Windows'
|
||||
) {
|
||||
$this->data->camouflage = false;
|
||||
}
|
||||
|
||||
/* EdgeHTML rendering engine also appears to be WebKit */
|
||||
if (isset($this->data->engine->name) && $this->data->engine->name == 'EdgeHTML') {
|
||||
$this->data->camouflage = false;
|
||||
}
|
||||
|
||||
/* Firefox 48+ support certain Webkit features */
|
||||
if ($this->options->engine & Constants\EngineType::GECKO) {
|
||||
$this->data->camouflage = false;
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->options->engine & Constants\EngineType::CHROMIUM) {
|
||||
$this->data->features[] = 'chrome';
|
||||
|
||||
if ($this->data->engine->name && ($this->data->engine->name != 'EdgeHTML' && $this->data->engine->name != 'Blink' && $this->data->engine->name != 'Webkit')) {
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
}
|
||||
|
||||
/* If it claims to be Safari and uses V8, it is probably an Android device running camouflage mode */
|
||||
if ($this->data->engine->name == 'Webkit' && $this->options->engine & Constants\EngineType::V8) {
|
||||
$this->data->features[] = 'v8';
|
||||
|
||||
if (isset($this->data->browser->name) && $this->data->browser->name == 'Safari') {
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
private function &detectCamouflagedBasedOnFeatures()
|
||||
{
|
||||
if (isset($this->data->browser->name) && isset($this->data->os->name)) {
|
||||
if ($this->data->os->name == 'iOS' && $this->data->browser->name != 'Opera Mini' && $this->data->browser->name != 'UC Browser' && isset($this->data->os->version)) {
|
||||
|
||||
if ($this->data->os->version->toFloat() < 4.0 && $this->options->features & Constants\Feature::SANDBOX) {
|
||||
$this->data->features[] = 'foundSandbox';
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
|
||||
if ($this->data->os->version->toFloat() < 4.2 && $this->options->features & Constants\Feature::WEBSOCKET) {
|
||||
$this->data->features[] = 'foundSockets';
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
|
||||
if ($this->data->os->version->toFloat() < 5.0 && $this->options->features & Constants\Feature::WORKER) {
|
||||
$this->data->features[] = 'foundWorker';
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->data->os->name != 'iOS' && $this->data->browser->name == 'Safari' && isset($this->data->browser->version)) {
|
||||
|
||||
if ($this->data->browser->version->toFloat() < 4.0 && $this->options->features & Constants\Feature::APPCACHE) {
|
||||
$this->data->features[] = 'foundAppCache';
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
|
||||
if ($this->data->browser->version->toFloat() < 4.1 && $this->options->features & Constants\Feature::HISTORY) {
|
||||
$this->data->features[] = 'foundHistory';
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
|
||||
if ($this->data->browser->version->toFloat() < 5.1 && $this->options->features & Constants\Feature::FULLSCREEN) {
|
||||
$this->data->features[] = 'foundFullscreen';
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
|
||||
if ($this->data->browser->version->toFloat() < 5.2 && $this->options->features & Constants\Feature::FILEREADER) {
|
||||
$this->data->features[] = 'foundFileReader';
|
||||
$this->data->camouflage = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
174
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Corrections.php
vendored
Normal file
174
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Corrections.php
vendored
Normal file
@@ -0,0 +1,174 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
use WhichBrowser\Model\Version;
|
||||
|
||||
trait Corrections
|
||||
{
|
||||
private function &applyCorrections()
|
||||
{
|
||||
if (isset($this->data->browser->name) && isset($this->data->browser->using)) {
|
||||
$this->hideBrowserBasedOnUsing();
|
||||
}
|
||||
|
||||
if (isset($this->data->browser->name) && isset($this->data->os->name)) {
|
||||
$this->hideBrowserBasedOnOperatingSystem();
|
||||
}
|
||||
|
||||
if (isset($this->data->browser->name) && $this->data->device->type == Constants\DeviceType::TELEVISION) {
|
||||
$this->hideBrowserOnDeviceTypeTelevision();
|
||||
}
|
||||
|
||||
if (isset($this->data->browser->name) && $this->data->device->type == Constants\DeviceType::GAMING) {
|
||||
$this->hideBrowserOnDeviceTypeGaming();
|
||||
}
|
||||
|
||||
if ($this->data->device->type == Constants\DeviceType::TELEVISION) {
|
||||
$this->hideOsOnDeviceTypeTelevision();
|
||||
}
|
||||
|
||||
if (isset($this->data->browser->name) && isset($this->data->engine->name)) {
|
||||
$this->fixMidoriEngineName();
|
||||
}
|
||||
|
||||
if (isset($this->data->browser->name) && isset($this->data->engine->name)) {
|
||||
$this->fixNineSkyEngineName();
|
||||
}
|
||||
|
||||
if (isset($this->data->browser->name) && isset($this->data->browser->family)) {
|
||||
$this->hideFamilyIfEqualToBrowser();
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
private function hideFamilyIfEqualToBrowser()
|
||||
{
|
||||
if ($this->data->browser->name == $this->data->browser->family->name) {
|
||||
unset($this->data->browser->family);
|
||||
}
|
||||
}
|
||||
|
||||
private function fixMidoriEngineName()
|
||||
{
|
||||
if ($this->data->browser->name == 'Midori' && $this->data->engine->name != 'Webkit') {
|
||||
$this->data->engine->name = 'Webkit';
|
||||
$this->data->engine->version = null;
|
||||
}
|
||||
}
|
||||
|
||||
private function fixNineSkyEngineName()
|
||||
{
|
||||
if ($this->data->browser->name == 'NineSky' && $this->data->engine->name != 'Webkit') {
|
||||
$this->data->engine->name = 'Webkit';
|
||||
$this->data->engine->version = null;
|
||||
}
|
||||
}
|
||||
|
||||
private function hideBrowserBasedOnUsing()
|
||||
{
|
||||
if ($this->data->browser->name == 'Chrome') {
|
||||
if ($this->data->browser->isUsing('Electron') || $this->data->browser->isUsing('Qt')) {
|
||||
unset($this->data->browser->name);
|
||||
unset($this->data->browser->version);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function hideBrowserBasedOnOperatingSystem()
|
||||
{
|
||||
if ($this->data->os->name == 'Series60' && $this->data->browser->name == 'Internet Explorer') {
|
||||
$this->data->browser->reset();
|
||||
$this->data->engine->reset();
|
||||
}
|
||||
|
||||
if ($this->data->os->name == 'Series80' && $this->data->browser->name == 'Internet Explorer') {
|
||||
$this->data->browser->reset();
|
||||
$this->data->engine->reset();
|
||||
}
|
||||
|
||||
if ($this->data->os->name == 'Lindows' && $this->data->browser->name == 'Internet Explorer') {
|
||||
$this->data->browser->reset();
|
||||
$this->data->engine->reset();
|
||||
}
|
||||
|
||||
if ($this->data->os->name == 'Tizen' && $this->data->browser->name == 'Chrome') {
|
||||
$this->data->browser->reset([
|
||||
'family' => isset($this->data->browser->family) ? $this->data->browser->family : null
|
||||
]);
|
||||
}
|
||||
|
||||
if ($this->data->os->name == 'Ubuntu Touch' && $this->data->browser->name == 'Chromium') {
|
||||
$this->data->browser->reset([
|
||||
'family' => isset($this->data->browser->family) ? $this->data->browser->family : null
|
||||
]);
|
||||
}
|
||||
|
||||
if ($this->data->os->name == 'KaiOS' && $this->data->browser->name == 'Firefox Mobile') {
|
||||
$this->data->browser->reset([
|
||||
'family' => isset($this->data->browser->family) ? $this->data->browser->family : null
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
private function hideBrowserOnDeviceTypeGaming()
|
||||
{
|
||||
if (isset($this->data->device->model) && $this->data->device->model == 'Playstation 2' && $this->data->browser->name == 'Internet Explorer') {
|
||||
$this->data->browser->reset();
|
||||
}
|
||||
}
|
||||
|
||||
private function hideBrowserOnDeviceTypeTelevision()
|
||||
{
|
||||
switch ($this->data->browser->name) {
|
||||
case 'Firefox':
|
||||
if (!$this->data->isOs('Firefox OS')) {
|
||||
unset($this->data->browser->name);
|
||||
unset($this->data->browser->version);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'Internet Explorer':
|
||||
$valid = false;
|
||||
|
||||
if (isset($this->data->device->model) && in_array($this->data->device->model, [ 'WebTV' ])) {
|
||||
$valid = true;
|
||||
}
|
||||
|
||||
if (!$valid) {
|
||||
unset($this->data->browser->name);
|
||||
unset($this->data->browser->version);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'Chrome':
|
||||
case 'Chromium':
|
||||
$valid = false;
|
||||
|
||||
if (isset($this->data->os->name) && in_array($this->data->os->name, [ 'Google TV', 'Android' ])) {
|
||||
$valid = true;
|
||||
}
|
||||
if (isset($this->data->device->model) && in_array($this->data->device->model, [ 'Chromecast' ])) {
|
||||
$valid = true;
|
||||
}
|
||||
|
||||
if (!$valid) {
|
||||
unset($this->data->browser->name);
|
||||
unset($this->data->browser->version);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private function hideOsOnDeviceTypeTelevision()
|
||||
{
|
||||
if (isset($this->data->os->name) && !in_array($this->data->os->name, [ 'Aliyun OS', 'Tizen', 'Android', 'Android TV', 'FireOS', 'Google TV', 'Firefox OS', 'OpenTV', 'webOS' ])) {
|
||||
$this->data->os->reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
486
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Derive.php
vendored
Normal file
486
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Derive.php
vendored
Normal file
@@ -0,0 +1,486 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
use WhichBrowser\Model\Family;
|
||||
use WhichBrowser\Model\Using;
|
||||
use WhichBrowser\Model\Version;
|
||||
|
||||
trait Derive
|
||||
{
|
||||
private function &deriveInformation()
|
||||
{
|
||||
if (isset($this->data->device->flag)) {
|
||||
$this->deriveBasedOnDeviceFlag();
|
||||
}
|
||||
|
||||
if (isset($this->data->os->name)) {
|
||||
$this->deriveBasedOnOperatingSystem();
|
||||
}
|
||||
|
||||
if (isset($this->data->browser->name)) {
|
||||
$this->deriveOperaDevices();
|
||||
}
|
||||
|
||||
if (isset($this->data->browser->name)) {
|
||||
$this->deriveFirefoxOS();
|
||||
}
|
||||
|
||||
if (isset($this->data->browser->name)) {
|
||||
$this->deriveTrident();
|
||||
$this->deriveOperaRenderingEngine();
|
||||
$this->deriveOmniWebRenderingEngine();
|
||||
$this->deriveNetFrontRenderingEngine();
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private function &deriveDeviceSubType()
|
||||
{
|
||||
if ($this->data->device->type == 'mobile' && empty($this->data->device->subtype)) {
|
||||
$this->data->device->subtype = 'feature';
|
||||
|
||||
if (in_array($this->data->os->getName(), [ 'Android', 'Bada', 'BlackBerry', 'BlackBerry OS', 'Firefox OS', 'iOS', 'iPhone OS', 'Kin OS', 'Maemo', 'MeeGo', 'Palm OS', 'Sailfish', 'Series60', 'Series80', 'Tizen', 'Ubuntu Touch', 'Windows Mobile', 'Windows Phone', 'webOS' ])) {
|
||||
$this->data->device->subtype = 'smart';
|
||||
}
|
||||
|
||||
if (isset($this->data->os->name) && in_array($this->data->os->name, [ 'Windows Phone' ])) {
|
||||
$this->data->device->subtype = 'smart';
|
||||
}
|
||||
|
||||
if (isset($this->data->os->family) && in_array($this->data->os->family->getName(), [ 'Android' ])) {
|
||||
$this->data->device->subtype = 'smart';
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
private function deriveOmniWebRenderingEngine()
|
||||
{
|
||||
if ($this->data->isBrowser('OmniWeb')) {
|
||||
$version = $this->data->browser->getVersion();
|
||||
|
||||
if ($version < 5) {
|
||||
$this->data->engine->reset();
|
||||
}
|
||||
|
||||
if ($version >= 5 && $version < 5.5 && !$this->data->isEngine('WebCore')) {
|
||||
$this->data->engine->reset([ 'name' => 'WebCore' ]);
|
||||
}
|
||||
|
||||
if ($version >= 5.5 && !$this->data->isEngine('WebKit')) {
|
||||
$this->data->engine->reset([ 'name' => 'WebKit' ]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private function deriveOperaRenderingEngine()
|
||||
{
|
||||
if ($this->data->isBrowser('Opera') || $this->data->isBrowser('Opera Mobile')) {
|
||||
$version = $this->data->browser->getVersion();
|
||||
|
||||
if ($version >= 3.5 && $version < 7 && !$this->data->isEngine('Electra')) {
|
||||
$this->data->engine->reset([ 'name' => 'Electra' ]);
|
||||
}
|
||||
|
||||
if ($version >= 7 && $version < 13 && !$this->data->isEngine('Presto')) {
|
||||
$this->data->engine->reset([ 'name' => 'Presto' ]);
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->data->isBrowser('Opera Mini') && !$this->data->isOs('iOS') && !$this->data->isEngine('Presto')) {
|
||||
$this->data->engine->reset([ 'name' => 'Presto' ]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private function deriveNetFrontRenderingEngine()
|
||||
{
|
||||
if ($this->data->isBrowser('NetFront') && !$this->data->isEngine('NetFront')) {
|
||||
$this->data->engine->reset([ 'name' => 'NetFront' ]);
|
||||
}
|
||||
}
|
||||
|
||||
private function deriveTrident()
|
||||
{
|
||||
if ($this->data->isType('desktop') && $this->data->isBrowser('Internet Explorer') && !$this->data->engine->getName()) {
|
||||
if ($this->data->isBrowser('Internet Explorer', '>=', 4)) {
|
||||
$this->data->engine->set([ 'name' => 'Trident' ]);
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->data->isMobile() && $this->data->isBrowser('Mobile Internet Explorer') && !$this->data->engine->getName()) {
|
||||
if ($this->data->isBrowser('Mobile Internet Explorer', '=', 6)) {
|
||||
$this->data->engine->set([ 'name' => 'Trident' ]);
|
||||
}
|
||||
|
||||
if ($this->data->isBrowser('Mobile Internet Explorer', '=', 7)) {
|
||||
$this->data->engine->set([ 'name' => 'Trident', 'version' => new Version([ 'value' => '3.1' ]) ]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private function deriveFirefoxOS()
|
||||
{
|
||||
if (in_array($this->data->browser->name, [ 'Firefox Mobile', 'Servo Nightly Build' ]) && !isset($this->data->os->name)) {
|
||||
$this->data->os->name = 'Firefox OS';
|
||||
}
|
||||
|
||||
if (isset($this->data->os->name) && $this->data->os->name == 'Firefox OS' && $this->data->engine->name == 'Gecko') {
|
||||
switch ($this->data->engine->getVersion()) {
|
||||
case '18.0':
|
||||
$this->data->os->version = new Version([ 'value' => '1.0.1' ]);
|
||||
break;
|
||||
case '18.1':
|
||||
$this->data->os->version = new Version([ 'value' => '1.1' ]);
|
||||
break;
|
||||
case '26.0':
|
||||
$this->data->os->version = new Version([ 'value' => '1.2' ]);
|
||||
break;
|
||||
case '28.0':
|
||||
$this->data->os->version = new Version([ 'value' => '1.3' ]);
|
||||
break;
|
||||
case '30.0':
|
||||
$this->data->os->version = new Version([ 'value' => '1.4' ]);
|
||||
break;
|
||||
case '32.0':
|
||||
$this->data->os->version = new Version([ 'value' => '2.0' ]);
|
||||
break;
|
||||
case '34.0':
|
||||
$this->data->os->version = new Version([ 'value' => '2.1' ]);
|
||||
break;
|
||||
case '37.0':
|
||||
$this->data->os->version = new Version([ 'value' => '2.2' ]);
|
||||
break;
|
||||
case '44.0':
|
||||
$this->data->os->version = new Version([ 'value' => '2.5' ]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private function deriveOperaDevices()
|
||||
{
|
||||
if ($this->data->browser->name == 'Opera' && $this->data->device->type == Constants\DeviceType::TELEVISION) {
|
||||
$this->data->browser->name = 'Opera Devices';
|
||||
$this->data->browser->version = null;
|
||||
|
||||
if ($this->data->engine->getName() == 'Presto') {
|
||||
$data = [
|
||||
'2.12' => '3.4',
|
||||
'2.11' => '3.3',
|
||||
'2.10' => '3.2',
|
||||
'2.9' => '3.1',
|
||||
'2.8' => '3.0',
|
||||
'2.7' => '2.9',
|
||||
'2.6' => '2.8',
|
||||
'2.4' => '10.3',
|
||||
'2.3' => '10',
|
||||
'2.2' => '9.7',
|
||||
'2.1' => '9.6'
|
||||
];
|
||||
|
||||
$key = implode('.', array_slice(explode('.', $this->data->engine->getVersion()), 0, 2));
|
||||
|
||||
if (isset($data[$key])) {
|
||||
$this->data->browser->version = new Version([ 'value' => $data[$key] ]);
|
||||
} else {
|
||||
unset($this->data->browser->version);
|
||||
}
|
||||
}
|
||||
|
||||
$this->data->os->reset();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private function deriveBasedOnDeviceFlag()
|
||||
{
|
||||
$flag = $this->data->device->flag;
|
||||
|
||||
if ($flag == Constants\Flag::NOKIAX) {
|
||||
$this->data->os->name = 'Nokia X Platform';
|
||||
$this->data->os->family = new Family([ 'name' => 'Android' ]);
|
||||
|
||||
unset($this->data->os->version);
|
||||
unset($this->data->device->flag);
|
||||
}
|
||||
|
||||
if ($flag == Constants\Flag::FIREOS) {
|
||||
$this->data->os->name = 'FireOS';
|
||||
$this->data->os->family = new Family([ 'name' => 'Android' ]);
|
||||
|
||||
if (isset($this->data->os->version) && isset($this->data->os->version->value)) {
|
||||
switch ($this->data->os->version->value) {
|
||||
case '2.3.3':
|
||||
case '2.3.4':
|
||||
$this->data->os->version = new Version([ 'value' => '1' ]);
|
||||
break;
|
||||
case '4.0.3':
|
||||
$this->data->os->version = new Version([ 'value' => '2' ]);
|
||||
break;
|
||||
case '4.2.2':
|
||||
$this->data->os->version = new Version([ 'value' => '3' ]);
|
||||
break;
|
||||
case '4.4.2':
|
||||
$this->data->os->version = new Version([ 'value' => '4' ]);
|
||||
break;
|
||||
case '4.4.3':
|
||||
$this->data->os->version = new Version([ 'value' => '4.5' ]);
|
||||
break;
|
||||
case '5.1.1':
|
||||
$this->data->os->version = new Version([ 'value' => '5' ]);
|
||||
break;
|
||||
default:
|
||||
unset($this->data->os->version);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->data->isBrowser('Chrome')) {
|
||||
$this->data->browser->reset();
|
||||
$this->data->browser->using = new Using([ 'name' => 'Amazon WebView' ]);
|
||||
}
|
||||
|
||||
if ($this->data->browser->isUsing('Chromium WebView')) {
|
||||
$this->data->browser->using = new Using([ 'name' => 'Amazon WebView' ]);
|
||||
}
|
||||
|
||||
unset($this->data->device->flag);
|
||||
}
|
||||
|
||||
if ($flag == Constants\Flag::GOOGLETV) {
|
||||
$this->data->os->name = 'Google TV';
|
||||
$this->data->os->family = new Family([ 'name' => 'Android' ]);
|
||||
|
||||
unset($this->data->os->version);
|
||||
unset($this->data->device->flag);
|
||||
}
|
||||
|
||||
if ($flag == Constants\Flag::ANDROIDTV) {
|
||||
$this->data->os->name = 'Android TV';
|
||||
$this->data->os->family = new Family([ 'name' => 'Android' ]);
|
||||
unset($this->data->device->flag);
|
||||
unset($this->data->device->series);
|
||||
}
|
||||
|
||||
if ($flag == Constants\Flag::ANDROIDWEAR) {
|
||||
$this->data->os->name = 'Android Wear';
|
||||
$this->data->os->family = new Family([ 'name' => 'Android' ]);
|
||||
unset($this->data->os->version);
|
||||
unset($this->data->device->flag);
|
||||
|
||||
if ($this->data->browser->isUsing('Chrome Content Shell')) {
|
||||
$this->data->browser->name = 'Wear Internet Browser';
|
||||
$this->data->browser->using = null;
|
||||
}
|
||||
}
|
||||
|
||||
if ($flag == Constants\Flag::GOOGLEGLASS) {
|
||||
$this->data->os->family = new Family([ 'name' => 'Android' ]);
|
||||
unset($this->data->os->name);
|
||||
unset($this->data->os->version);
|
||||
unset($this->data->device->flag);
|
||||
}
|
||||
|
||||
if ($flag == Constants\Flag::UIQ) {
|
||||
unset($this->data->device->flag);
|
||||
|
||||
if (!$this->data->isOs('UIQ')) {
|
||||
$this->data->os->name = 'UIQ';
|
||||
unset($this->data->os->version);
|
||||
}
|
||||
}
|
||||
|
||||
if ($flag == Constants\Flag::S60) {
|
||||
unset($this->data->device->flag);
|
||||
|
||||
if (!$this->data->isOs('Series60')) {
|
||||
$this->data->os->name = 'Series60';
|
||||
unset($this->data->os->version);
|
||||
}
|
||||
}
|
||||
|
||||
if ($flag == Constants\Flag::MOAPS) {
|
||||
unset($this->data->device->flag);
|
||||
$this->data->os->name = 'MOAP(S)';
|
||||
unset($this->data->os->version);
|
||||
}
|
||||
}
|
||||
|
||||
private function deriveBasedOnOperatingSystem()
|
||||
{
|
||||
/* Derive the default browser on Windows Mobile */
|
||||
|
||||
if ($this->data->os->name == 'Windows Mobile' && $this->data->isBrowser('Internet Explorer')) {
|
||||
$this->data->browser->name = 'Mobile Internet Explorer';
|
||||
}
|
||||
|
||||
/* Derive the default browser on Android */
|
||||
|
||||
if ($this->data->os->name == 'Android' && !isset($this->data->browser->using) && !isset($this->data->browser->name) && $this->data->browser->stock) {
|
||||
$this->data->browser->name = 'Android Browser';
|
||||
}
|
||||
|
||||
/* Derive the default browser on Google TV */
|
||||
|
||||
if ($this->data->os->name == 'Google TV' && !isset($this->data->browser->name) && $this->data->browser->stock) {
|
||||
$this->data->browser->name = 'Chrome';
|
||||
}
|
||||
|
||||
/* Derive the default browser on BlackBerry */
|
||||
|
||||
if ($this->data->os->name == 'BlackBerry' && !isset($this->data->browser->name) && $this->data->browser->stock) {
|
||||
$this->data->browser->name = 'BlackBerry Browser';
|
||||
$this->data->browser->hidden = true;
|
||||
}
|
||||
|
||||
if ($this->data->os->name == 'BlackBerry OS' && !isset($this->data->browser->name) && $this->data->browser->stock) {
|
||||
$this->data->browser->name = 'BlackBerry Browser';
|
||||
$this->data->browser->hidden = true;
|
||||
}
|
||||
|
||||
if ($this->data->os->name == 'BlackBerry Tablet OS' && !isset($this->data->browser->name) && $this->data->browser->stock) {
|
||||
$this->data->browser->name = 'BlackBerry Browser';
|
||||
$this->data->browser->hidden = true;
|
||||
}
|
||||
|
||||
/* Derive the default browser on Tizen */
|
||||
|
||||
if ($this->data->os->name == 'Tizen' && !isset($this->data->browser->name) && $this->data->browser->stock && in_array($this->data->device->type, [ Constants\DeviceType::MOBILE, Constants\DeviceType::APPLIANCE ])) {
|
||||
$this->data->browser->name = 'Samsung Browser';
|
||||
}
|
||||
|
||||
/* Derive the default browser on Aliyun OS */
|
||||
|
||||
if ($this->data->os->name == 'Aliyun OS' && !isset($this->data->browser->using) && !isset($this->data->browser->name) && $this->data->browser->stock) {
|
||||
$this->data->browser->name = 'Aliyun Browser';
|
||||
}
|
||||
|
||||
if ($this->data->os->name == 'Aliyun OS' && $this->data->browser->isUsing('Chrome Content Shell')) {
|
||||
$this->data->browser->name = 'Aliyun Browser';
|
||||
$this->data->browser->using = null;
|
||||
$this->data->browser->stock = true;
|
||||
}
|
||||
|
||||
if ($this->data->os->name == 'Aliyun OS' && $this->data->browser->stock) {
|
||||
$this->data->browser->hidden = true;
|
||||
}
|
||||
|
||||
/* Derive OS/2 nickname */
|
||||
|
||||
if ($this->data->os->name == 'OS/2') {
|
||||
if (!empty($this->data->os->version)) {
|
||||
if ($this->data->os->version->is('>', '2')) {
|
||||
$this->data->os->version->nickname = 'Warp';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Derive HP TouchPad based on webOS and tablet */
|
||||
|
||||
if ($this->data->os->name == 'webOS' && $this->data->device->type == Constants\DeviceType::TABLET) {
|
||||
$this->data->device->manufacturer = 'HP';
|
||||
$this->data->device->model = 'TouchPad';
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
}
|
||||
|
||||
/* Derive Windows 10 Mobile edition */
|
||||
|
||||
if ($this->data->os->name == 'Windows Phone') {
|
||||
if (!empty($this->data->os->version)) {
|
||||
if ($this->data->os->version->is('=', '10')) {
|
||||
$this->data->os->alias = 'Windows';
|
||||
$this->data->os->edition = 'Mobile';
|
||||
$this->data->os->version->alias = '10';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Derive manufacturer and model based on MacOS or OS X */
|
||||
|
||||
if ($this->data->os->name == 'OS X' || $this->data->os->name == 'Mac OS') {
|
||||
if (empty($this->data->device->model)) {
|
||||
$this->data->device->manufacturer = 'Apple';
|
||||
$this->data->device->model = 'Macintosh';
|
||||
$this->data->device->identified |= Constants\Id::INFER;
|
||||
$this->data->device->hidden = true;
|
||||
}
|
||||
}
|
||||
|
||||
/* Derive manufacturer and model based on MacOS or OS X */
|
||||
|
||||
if ($this->data->os->name == 'iOS') {
|
||||
if (empty($this->data->device->model)) {
|
||||
$this->data->device->manufacturer = 'Apple';
|
||||
$this->data->device->identified |= Constants\Id::INFER;
|
||||
$this->data->device->hidden = true;
|
||||
}
|
||||
}
|
||||
|
||||
/* Derive iOS and OS X aliases */
|
||||
|
||||
if ($this->data->os->name == 'iOS') {
|
||||
if (!empty($this->data->os->version)) {
|
||||
if ($this->data->os->version->is('<', '4')) {
|
||||
$this->data->os->alias = 'iPhone OS';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->data->os->name == 'OS X') {
|
||||
if (!empty($this->data->os->version)) {
|
||||
if ($this->data->os->version->is('<', '10.7')) {
|
||||
$this->data->os->alias = 'Mac OS X';
|
||||
}
|
||||
|
||||
if ($this->data->os->version->is('>=', '10.12')) {
|
||||
$this->data->os->alias = 'macOS';
|
||||
}
|
||||
|
||||
if ($this->data->os->version->is('10.7')) {
|
||||
$this->data->os->version->nickname = 'Lion';
|
||||
}
|
||||
|
||||
if ($this->data->os->version->is('10.8')) {
|
||||
$this->data->os->version->nickname = 'Mountain Lion';
|
||||
}
|
||||
|
||||
if ($this->data->os->version->is('10.9')) {
|
||||
$this->data->os->version->nickname = 'Mavericks';
|
||||
}
|
||||
|
||||
if ($this->data->os->version->is('10.10')) {
|
||||
$this->data->os->version->nickname = 'Yosemite';
|
||||
}
|
||||
|
||||
if ($this->data->os->version->is('10.11')) {
|
||||
$this->data->os->version->nickname = 'El Capitan';
|
||||
}
|
||||
|
||||
if ($this->data->os->version->is('10.12')) {
|
||||
$this->data->os->version->nickname = 'Sierra';
|
||||
}
|
||||
|
||||
if ($this->data->os->version->is('10.13')) {
|
||||
$this->data->os->version->nickname = 'High Sierra';
|
||||
}
|
||||
|
||||
if ($this->data->os->version->is('10.14')) {
|
||||
$this->data->os->version->nickname = 'Mojave';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
148
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header.php
vendored
Normal file
148
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header.php
vendored
Normal file
@@ -0,0 +1,148 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
use WhichBrowser\Parser;
|
||||
|
||||
trait Header
|
||||
{
|
||||
private function &analyseHeaders()
|
||||
{
|
||||
/* Analyse the main useragent header */
|
||||
|
||||
if ($header = $this->getHeader('User-Agent')) {
|
||||
$this->analyseUserAgent($header);
|
||||
}
|
||||
|
||||
|
||||
/* Analyse secondary useragent headers */
|
||||
|
||||
if ($header = $this->getHeader('X-Original-User-Agent')) {
|
||||
$this->additionalUserAgent($header);
|
||||
}
|
||||
|
||||
if ($header = $this->getHeader('X-Device-User-Agent')) {
|
||||
$this->additionalUserAgent($header);
|
||||
}
|
||||
|
||||
if ($header = $this->getHeader('Device-Stock-UA')) {
|
||||
$this->additionalUserAgent($header);
|
||||
}
|
||||
|
||||
if ($header = $this->getHeader('X-OperaMini-Phone-UA')) {
|
||||
$this->additionalUserAgent($header);
|
||||
}
|
||||
|
||||
if ($header = $this->getHeader('X-UCBrowser-Device-UA')) {
|
||||
$this->additionalUserAgent($header);
|
||||
}
|
||||
|
||||
|
||||
/* Analyse browser specific headers */
|
||||
|
||||
if ($header = $this->getHeader('X-OperaMini-Phone')) {
|
||||
$this->analyseOperaMiniPhone($header);
|
||||
}
|
||||
|
||||
if ($header = $this->getHeader('X-UCBrowser-Phone-UA')) {
|
||||
$this->analyseOldUCUserAgent($header);
|
||||
}
|
||||
|
||||
if ($header = $this->getHeader('X-UCBrowser-UA')) {
|
||||
$this->analyseNewUCUserAgent($header);
|
||||
}
|
||||
|
||||
if ($header = $this->getHeader('X-Puffin-UA')) {
|
||||
$this->analysePuffinUserAgent($header);
|
||||
}
|
||||
|
||||
if ($header = $this->getHeader('Baidu-FlyFlow')) {
|
||||
$this->analyseBaiduHeader($header);
|
||||
}
|
||||
|
||||
|
||||
/* Analyse Android WebView browser ids */
|
||||
|
||||
if ($header = $this->getHeader('X-Requested-With')) {
|
||||
$this->analyseBrowserId($header);
|
||||
}
|
||||
|
||||
|
||||
/* Analyse WAP profile header */
|
||||
|
||||
if ($header = $this->getHeader('X-Wap-Profile')) {
|
||||
$this->analyseWapProfile($header);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private function analyseUserAgent($header)
|
||||
{
|
||||
new Header\Useragent($header, $this->data, $this->options);
|
||||
}
|
||||
|
||||
private function analyseBaiduHeader($header)
|
||||
{
|
||||
new Header\Baidu($header, $this->data);
|
||||
}
|
||||
|
||||
private function analyseOperaMiniPhone($header)
|
||||
{
|
||||
new Header\OperaMini($header, $this->data);
|
||||
}
|
||||
|
||||
private function analyseBrowserId($header)
|
||||
{
|
||||
new Header\BrowserId($header, $this->data);
|
||||
}
|
||||
|
||||
private function analysePuffinUserAgent($header)
|
||||
{
|
||||
new Header\Puffin($header, $this->data);
|
||||
}
|
||||
|
||||
private function analyseNewUCUserAgent($header)
|
||||
{
|
||||
new Header\UCBrowserNew($header, $this->data);
|
||||
}
|
||||
|
||||
private function analyseOldUCUserAgent($header)
|
||||
{
|
||||
new Header\UCBrowserOld($header, $this->data);
|
||||
}
|
||||
|
||||
private function analyseWapProfile($header)
|
||||
{
|
||||
new Header\Wap($header, $this->data);
|
||||
}
|
||||
|
||||
|
||||
private function additionalUserAgent($ua)
|
||||
{
|
||||
$extra = new Parser($ua);
|
||||
|
||||
if ($extra->device->type != Constants\DeviceType::DESKTOP) {
|
||||
if (isset($extra->os->name)) {
|
||||
$this->data->os = $extra->os;
|
||||
}
|
||||
|
||||
if ($extra->device->identified) {
|
||||
$this->data->device = $extra->device;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private function getHeader($h)
|
||||
{
|
||||
foreach ($this->headers as $k => $v) {
|
||||
if (strtolower($h) == strtolower($k)) {
|
||||
return $v;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header;
|
||||
|
||||
class Baidu
|
||||
{
|
||||
public function __construct($header, &$data)
|
||||
{
|
||||
$this->data =& $data;
|
||||
|
||||
if (!isset($this->data->browser->name) || $this->data->browser->name != 'Baidu Browser') {
|
||||
$this->data->browser->name = 'Baidu Browser';
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->stock = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
use WhichBrowser\Data;
|
||||
use WhichBrowser\Model\Using;
|
||||
use WhichBrowser\Model\Version;
|
||||
|
||||
class BrowserId
|
||||
{
|
||||
public function __construct($header, &$data)
|
||||
{
|
||||
if ($header == 'XMLHttpRequest') {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->data =& $data;
|
||||
|
||||
/* The X-Requested-With header is send by the WebView, so our browser name is Chrome it is probably the Chromium WebView which is sometimes misidentified. */
|
||||
|
||||
if (isset($this->data->browser->name) && $this->data->browser->name == 'Chrome') {
|
||||
$version = $this->data->browser->getVersion();
|
||||
|
||||
$this->data->browser->reset();
|
||||
$this->data->browser->using = new Using([ 'name' => 'Chromium WebView', 'version' => new Version([ 'value' => explode('.', $version)[0] ]) ]);
|
||||
}
|
||||
|
||||
/* Detect the correct browser based on the header */
|
||||
|
||||
$browser = Data\BrowserIds::identify($header);
|
||||
if ($browser) {
|
||||
if (!isset($this->data->browser->name)) {
|
||||
$this->data->browser->name = $browser;
|
||||
} else {
|
||||
if (substr($this->data->browser->name, 0, strlen($browser)) != $browser) {
|
||||
$this->data->browser->name = $browser;
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->stock = false;
|
||||
} else {
|
||||
$this->data->browser->name = $browser;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* The X-Requested-With header is only send from Android devices */
|
||||
|
||||
if (!isset($this->data->os->name) || ($this->data->os->name != 'Android' && (!isset($this->data->os->family) || $this->data->os->family->getName() != 'Android'))) {
|
||||
$this->data->os->name = 'Android';
|
||||
$this->data->os->alias = null;
|
||||
$this->data->os->version = null;
|
||||
|
||||
$this->data->device->manufacturer = null;
|
||||
$this->data->device->model = null;
|
||||
$this->data->device->identified = Constants\Id::NONE;
|
||||
|
||||
if ($this->data->device->type != Constants\DeviceType::MOBILE && $this->data->device->type != Constants\DeviceType::TABLET) {
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
}
|
||||
}
|
||||
|
||||
/* The X-Requested-With header is send by the WebKit or Chromium Webview */
|
||||
|
||||
if (!isset($this->data->engine->name) || ($this->data->engine->name != 'Webkit' && $this->data->engine->name != 'Blink')) {
|
||||
$this->data->engine->name = 'Webkit';
|
||||
$this->data->engine->version = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header;
|
||||
|
||||
use WhichBrowser\Data;
|
||||
use WhichBrowser\Constants;
|
||||
|
||||
class OperaMini
|
||||
{
|
||||
public function __construct($header, &$data)
|
||||
{
|
||||
$this->data =& $data;
|
||||
|
||||
$parts = explode(' # ', $header);
|
||||
$manufacturer = isset($parts[0]) ? $parts[0] : '';
|
||||
$model = isset($parts[1]) ? $parts[1] : '';
|
||||
|
||||
if ($manufacturer != '?' && $model != '?') {
|
||||
if ($this->data->device->identified < Constants\Id::PATTERN) {
|
||||
if ($this->identifyBasedOnModel($model)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->data->device->manufacturer = $manufacturer;
|
||||
$this->data->device->model = $model;
|
||||
$this->data->device->identified = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function identifyBasedOnModel($model)
|
||||
{
|
||||
$device = Data\DeviceModels::identify('bada', $model);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
|
||||
if (!isset($this->data->os->name) || $this->data->os->name != 'Bada') {
|
||||
$this->data->os->name = 'Bada';
|
||||
$this->data->os->version = null;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
$device = Data\DeviceModels::identify('blackberry', $model);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
|
||||
if (!isset($this->data->os->name) || $this->data->os->name != 'BlackBerry OS') {
|
||||
$this->data->os->name = 'BlackBerry OS';
|
||||
$this->data->os->version = null;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
$device = Data\DeviceModels::identify('wm', $model);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
|
||||
if (!isset($this->data->os->name) || $this->data->os->name != 'Windows Mobile') {
|
||||
$this->data->os->name = 'Windows Mobile';
|
||||
$this->data->os->version = null;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header;
|
||||
|
||||
use WhichBrowser\Data;
|
||||
|
||||
class Puffin
|
||||
{
|
||||
public function __construct($header, &$data)
|
||||
{
|
||||
$this->data =& $data;
|
||||
|
||||
$parts = explode('/', $header);
|
||||
|
||||
if ($this->data->browser->name != 'Puffin') {
|
||||
$this->data->browser->name = 'Puffin';
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->stock = false;
|
||||
}
|
||||
|
||||
$this->data->device->type = 'mobile';
|
||||
|
||||
if (count($parts) > 1 && $parts[0] == 'Android') {
|
||||
if (!isset($this->data->os->name) || $this->data->os->name != 'Android') {
|
||||
$this->data->os->name = 'Android';
|
||||
$this->data->os->version = null;
|
||||
}
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $parts[1]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
if (count($parts) > 1 && $parts[0] == 'iPhone OS') {
|
||||
if (!isset($this->data->os->name) || $this->data->os->name != 'iOS') {
|
||||
$this->data->os->name = 'iOS';
|
||||
$this->data->os->version = null;
|
||||
}
|
||||
|
||||
$device = Data\DeviceModels::identify('ios', $parts[1]);
|
||||
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,182 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header;
|
||||
|
||||
use WhichBrowser\Data;
|
||||
use WhichBrowser\Model\Family;
|
||||
use WhichBrowser\Model\Version;
|
||||
|
||||
class UCBrowserNew
|
||||
{
|
||||
public function __construct($header, &$data)
|
||||
{
|
||||
$this->data =& $data;
|
||||
|
||||
if (preg_match('/pr\(UCBrowser/u', $header)) {
|
||||
if (!$this->data->isBrowser('UC Browser')) {
|
||||
$this->data->browser->name = 'UC Browser';
|
||||
$this->data->browser->stock = false;
|
||||
$this->data->browser->version = null;
|
||||
|
||||
if (preg_match('/pr\(UCBrowser(?:\/([0-9\.]+))/u', $header, $match)) {
|
||||
$this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Find os */
|
||||
if (preg_match('/pf\(Java\)/u', $header)) {
|
||||
if (preg_match('/dv\(([^\)]*)\)/u', $header, $match)) {
|
||||
if ($this->identifyBasedOnModel($match[1])) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match('/pf\(Linux\)/u', $header) && preg_match('/ov\((?:Android )?([0-9\.]+)/u', $header, $match)) {
|
||||
$this->data->os->name = 'Android';
|
||||
$this->data->os->version = new Version([ 'value' => $match[1] ]);
|
||||
}
|
||||
|
||||
if (preg_match('/pf\(Symbian\)/u', $header) && preg_match('/ov\(S60V([0-9])/u', $header, $match)) {
|
||||
if (!$this->data->isOs('Series60')) {
|
||||
$this->data->os->name = 'Series60';
|
||||
$this->data->os->version = new Version([ 'value' => $match[1] ]);
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match('/pf\(Windows\)/u', $header) && preg_match('/ov\(wds ([0-9]+\.[0-9]+)/u', $header, $match)) {
|
||||
if (!$this->data->isOs('Windows Phone')) {
|
||||
$this->data->os->name = 'Windows Phone';
|
||||
|
||||
switch ($match[1]) {
|
||||
case '7.1':
|
||||
$this->data->os->version = new Version([ 'value' => '7.5' ]);
|
||||
break;
|
||||
case '8.0':
|
||||
$this->data->os->version = new Version([ 'value' => '8.0' ]);
|
||||
break;
|
||||
case '8.1':
|
||||
$this->data->os->version = new Version([ 'value' => '8.1' ]);
|
||||
break;
|
||||
case '10.0':
|
||||
$this->data->os->version = new Version([ 'value' => '10.0' ]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match('/pf\((?:42|44)\)/u', $header) && preg_match('/ov\((?:iPh OS )?(?:iOS )?([0-9\_]+)/u', $header, $match)) {
|
||||
if (!$this->data->isOs('iOS')) {
|
||||
$this->data->os->name = 'iOS';
|
||||
$this->data->os->version = new Version([ 'value' => str_replace('_', '.', $match[1]) ]);
|
||||
}
|
||||
}
|
||||
|
||||
/* Find engine */
|
||||
if (preg_match('/re\(AppleWebKit\/([0-9\.]+)/u', $header, $match)) {
|
||||
$this->data->engine->name = 'Webkit';
|
||||
$this->data->engine->version = new Version([ 'value' => $match[1] ]);
|
||||
}
|
||||
|
||||
/* Find device */
|
||||
if ($this->data->isOs('Android')) {
|
||||
if (preg_match('/dv\((.*)\)/uU', $header, $match)) {
|
||||
$match[1] = preg_replace("/\s+Build/u", '', $match[1]);
|
||||
$device = Data\DeviceModels::identify('android', $match[1]);
|
||||
|
||||
if ($device) {
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->data->isOs('Series60')) {
|
||||
if (preg_match('/dv\((?:Nokia)?([^\)]*)\)/iu', $header, $match)) {
|
||||
$device = Data\DeviceModels::identify('symbian', $match[1]);
|
||||
|
||||
if ($device) {
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->data->isOs('Windows Phone')) {
|
||||
if (preg_match('/dv\(([^\)]*)\)/u', $header, $match)) {
|
||||
$device = Data\DeviceModels::identify('wp', substr(strstr($match[1], ' '), 1));
|
||||
|
||||
if ($device) {
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->data->isOs('iOS')) {
|
||||
if (preg_match('/dv\(([^\)]*)\)/u', $header, $match)) {
|
||||
$device = Data\DeviceModels::identify('ios', $match[1]);
|
||||
|
||||
if ($device) {
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function identifyBasedOnModel($model)
|
||||
{
|
||||
$model = preg_replace('/^Nokia/iu', '', $model);
|
||||
|
||||
$device = Data\DeviceModels::identify('symbian', $model);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
|
||||
if (!isset($this->data->os->name) || $this->data->os->name != 'Series60') {
|
||||
$this->data->os->name = 'Series60';
|
||||
$this->data->os->version = null;
|
||||
$this->data->os->family = new Family([ 'name' => 'Symbian' ]);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
$device = Data\DeviceModels::identify('s40', $model);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
|
||||
if (!isset($this->data->os->name) || $this->data->os->name != 'Series40') {
|
||||
$this->data->os->name = 'Series40';
|
||||
$this->data->os->version = null;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
$device = Data\DeviceModels::identify('bada', $model);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
|
||||
if (!isset($this->data->os->name) || $this->data->os->name != 'Bada') {
|
||||
$this->data->os->name = 'Bada';
|
||||
$this->data->os->version = null;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
$device = Data\DeviceModels::identify('touchwiz', $model);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
|
||||
if (!isset($this->data->os->name) || $this->data->os->name != 'Touchwiz') {
|
||||
$this->data->os->name = 'Touchwiz';
|
||||
$this->data->os->version = null;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header;
|
||||
|
||||
use WhichBrowser\Parser;
|
||||
use WhichBrowser\Constants;
|
||||
|
||||
class UCBrowserOld
|
||||
{
|
||||
public function __construct($header, &$data)
|
||||
{
|
||||
$this->data =& $data;
|
||||
|
||||
if ($this->data->device->type == Constants\DeviceType::DESKTOP) {
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
|
||||
$this->data->os->reset();
|
||||
}
|
||||
|
||||
if (!isset($this->data->browser->name) || $this->data->browser->name != 'UC Browser') {
|
||||
$this->data->browser->name = 'UC Browser';
|
||||
$this->data->browser->version = null;
|
||||
}
|
||||
|
||||
$this->data->browser->mode = 'proxy';
|
||||
$this->data->engine->reset([ 'name' => 'Gecko' ]);
|
||||
|
||||
$extra = new Parser([ 'headers' => [ 'User-Agent' => $header ]]);
|
||||
|
||||
if ($extra->device->type != Constants\DeviceType::DESKTOP) {
|
||||
if ($extra->os->getName() !== '' && ($this->data->os->getName() === '' || $extra->os->getVersion() !== '')) {
|
||||
$this->data->os = $extra->os;
|
||||
}
|
||||
if ($extra->device->identified) {
|
||||
$this->data->device = $extra->device;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header;
|
||||
|
||||
class Useragent
|
||||
{
|
||||
use Useragent\Os, Useragent\Device, Useragent\Browser, Useragent\Application, Useragent\Using, Useragent\Engine, Useragent\Bot;
|
||||
|
||||
public function __construct($header, &$data, &$options)
|
||||
{
|
||||
$this->data =& $data;
|
||||
$this->options =& $options;
|
||||
|
||||
/* Make sure we do not have a duplicate concatenated useragent string */
|
||||
|
||||
$header = preg_replace("/^(Mozilla\/[0-9]\.[0-9].{20,})\s+Mozilla\/[0-9]\.[0-9].*$/iu", '$1', $header);
|
||||
|
||||
/* Detect the basic information */
|
||||
|
||||
$this->detectOperatingSystem($header)
|
||||
->detectDevice($header)
|
||||
->detectBrowser($header)
|
||||
->detectApplication($header)
|
||||
->detectUsing($header)
|
||||
->detectEngine($header);
|
||||
|
||||
/* Detect bots */
|
||||
|
||||
if (!isset($this->options->detectBots) || $this->options->detectBots === true) {
|
||||
$this->detectBot($header);
|
||||
}
|
||||
|
||||
/* Refine some of the information */
|
||||
|
||||
$this->refineBrowser($header)
|
||||
->refineOperatingSystem($header);
|
||||
}
|
||||
|
||||
private function removeKnownPrefixes($ua)
|
||||
{
|
||||
$ua = preg_replace('/^OneBrowser\/[0-9.]+\//', '', $ua);
|
||||
$ua = preg_replace('/^MQQBrowser\/[0-9.]+\//', '', $ua);
|
||||
return $ua;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,497 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header\Useragent;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
use WhichBrowser\Data;
|
||||
use WhichBrowser\Model\Family;
|
||||
use WhichBrowser\Model\Using;
|
||||
use WhichBrowser\Model\Version;
|
||||
|
||||
trait Application
|
||||
{
|
||||
private function &detectApplication($ua)
|
||||
{
|
||||
/* Detect applications */
|
||||
$this->detectSpecificApplications($ua);
|
||||
$this->detectRemainingApplications($ua);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private function detectSpecificApplications($ua)
|
||||
{
|
||||
/* Sony Updatecenter */
|
||||
|
||||
if (preg_match('/^(.*) Build\/.* (?:com.sonyericsson.updatecenter|UpdateCenter)\/[A-Z0-9\.]+$/iu', $ua, $match)) {
|
||||
$this->data->browser->name = 'Sony Update Center';
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->type = Constants\BrowserType::APP;
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android'
|
||||
]);
|
||||
|
||||
$this->data->device->model = $match[1];
|
||||
$this->data->device->identified |= Constants\Id::PATTERN;
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[1]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
/* Sony Select SDK */
|
||||
|
||||
if (preg_match('/Android [0-9\.]+; (.*) Sony\/.*SonySelectSDK\/([0-9\.]+)/iu', $ua, $match)) {
|
||||
$this->data->browser->reset();
|
||||
$this->data->browser->type = Constants\BrowserType::APP;
|
||||
$this->data->browser->using = new \WhichBrowser\Model\Using([
|
||||
'name' => 'Sony Select SDK',
|
||||
'version' => new Version([ 'value' => $match[2], 'details' => 2 ])
|
||||
]);
|
||||
|
||||
$this->data->device->model = $match[1];
|
||||
$this->data->device->identified |= Constants\Id::PATTERN;
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[1]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
/* Samsung Mediahub */
|
||||
|
||||
if (preg_match('/^Stamhub [^\/]+\/([^;]+);.*:([0-9\.]+)\/[^\/]+\/[^:]+:user\/release-keys$/iu', $ua, $match)) {
|
||||
$this->data->browser->name = 'Mediahub';
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->type = Constants\BrowserType::APP_MEDIAPLAYER;
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android',
|
||||
'version' => new Version([ 'value' => $match[2] ])
|
||||
]);
|
||||
|
||||
$this->data->device->model = $match[1];
|
||||
$this->data->device->identified |= Constants\Id::PATTERN;
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[1]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
/* "Android Application" */
|
||||
|
||||
if (preg_match('/Android Application/iu', $ua)) {
|
||||
if (preg_match('/^(.+) Android Application \([0-9]+, .+ v[0-9\.]+\) - [a-z-]+ (.*) [a-z_-]+ - [0-9A-F]{8,8}-[0-9A-F]{4,4}-[0-9A-F]{4,4}-[0-9A-F]{4,4}-[0-9A-F]{12,12}$/iu', $ua, $match)) {
|
||||
$this->data->browser->name = $match[1];
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->type = Constants\BrowserType::APP;
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android'
|
||||
]);
|
||||
|
||||
$this->data->device->model = $match[2];
|
||||
$this->data->device->identified |= Constants\Id::PATTERN;
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[2]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match('/^(.+) Android Application - (.*) Build\/(.+) - [0-9A-F]{8,8}-[0-9A-F]{4,4}-[0-9A-F]{4,4}-[0-9A-F]{4,4}-[0-9A-F]{12,12}$/iu', $ua, $match)) {
|
||||
$this->data->browser->name = $match[1];
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->type = Constants\BrowserType::APP;
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android'
|
||||
]);
|
||||
|
||||
$version = Data\BuildIds::identify($match[3]);
|
||||
if ($version) {
|
||||
$this->data->os->version = $version;
|
||||
}
|
||||
|
||||
$this->data->device->model = $match[2];
|
||||
$this->data->device->identified |= Constants\Id::PATTERN;
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[2]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match('/^(.+) Android Application - [a-z-]+ (.*) [a-z_-]+$/iu', $ua, $match)) {
|
||||
$this->data->browser->name = $match[1];
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->type = Constants\BrowserType::APP;
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android'
|
||||
]);
|
||||
|
||||
$this->data->device->model = $match[2];
|
||||
$this->data->device->identified |= Constants\Id::PATTERN;
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[2]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* AiMeiTuan */
|
||||
|
||||
if (preg_match('/^AiMeiTuan \/[^\-]+\-([0-9\.]+)\-(.*)\-[0-9]+x[0-9]+\-/iu', $ua, $match)) {
|
||||
$this->data->browser->name = 'AiMeiTuan';
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->type = Constants\BrowserType::APP;
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android',
|
||||
'version' => new Version([ 'value' => $match[1] ])
|
||||
]);
|
||||
|
||||
$this->data->device->model = $match[2];
|
||||
$this->data->device->identified |= Constants\Id::PATTERN;
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[2]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
/* Instagram */
|
||||
|
||||
if (preg_match('/^Instagram ([0-9\.]+) Android (?:IC )?\([0-9]+\/([0-9\.]+); [0-9]+dpi; [0-9]+x[0-9]+; [^;]+; ([^;]*);/iu', $ua, $match)) {
|
||||
$this->data->browser->name = 'Instagram';
|
||||
$this->data->browser->version = new Version([ 'value' => $match[1] ]);
|
||||
$this->data->browser->type = Constants\BrowserType::APP_SOCIAL;
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android',
|
||||
'version' => new Version([ 'value' => $match[2] ])
|
||||
]);
|
||||
|
||||
$this->data->device->model = $match[3];
|
||||
$this->data->device->identified |= Constants\Id::PATTERN;
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[3]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
/* Pinterest */
|
||||
|
||||
if (preg_match('/^Pinterest for Android( Tablet)?\/([0-9\.]+) \(([^;]+); ([0-9\.]+)\)/iu', $ua, $match)) {
|
||||
$this->data->browser->name = 'Pinterest';
|
||||
$this->data->browser->version = new Version([ 'value' => $match[2] ]);
|
||||
$this->data->browser->type = Constants\BrowserType::APP_SOCIAL;
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android',
|
||||
'version' => new Version([ 'value' => $match[4] ])
|
||||
]);
|
||||
|
||||
$this->data->device->model = $match[3];
|
||||
$this->data->device->identified |= Constants\Id::PATTERN;
|
||||
$this->data->device->type = $match[1] == ' Tablet' ? Constants\DeviceType::TABLET : Constants\DeviceType::MOBILE;
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[3]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
/* Dr. Web Anti-Virus */
|
||||
|
||||
if (preg_match('/Dr\.Web anti\-virus Light Version: ([0-9\.]+) Device model: (.*) Firmware version: ([0-9\.]+)/u', $ua, $match)) {
|
||||
$this->data->browser->name = 'Dr. Web Light';
|
||||
$this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]);
|
||||
$this->data->browser->type = Constants\BrowserType::APP_ANTIVIRUS;
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android',
|
||||
'version' => new Version([ 'value' => $match[3] ])
|
||||
]);
|
||||
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[2]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
/* Google Earth */
|
||||
|
||||
if (preg_match('/GoogleEarth\/([0-9\.]+)\(Android;Android \((.+)\-[^\-]+\-user-([0-9\.]+)\);/u', $ua, $match)) {
|
||||
$this->data->browser->name = 'Google Earth';
|
||||
$this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]);
|
||||
$this->data->browser->type = Constants\BrowserType::APP;
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android',
|
||||
'version' => new Version([ 'value' => $match[3] ])
|
||||
]);
|
||||
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[2]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
/* Groupon */
|
||||
|
||||
if (preg_match('/Groupon\/([0-9\.]+) \(Android ([0-9\.]+); [^\/]+ \/ [A-Z][a-z]+ ([^;]*);/u', $ua, $match)) {
|
||||
$this->data->browser->name = 'Groupon';
|
||||
$this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]);
|
||||
$this->data->browser->type = Constants\BrowserType::APP_SHOPPING;
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android',
|
||||
'version' => new Version([ 'value' => $match[2] ])
|
||||
]);
|
||||
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
$this->data->device->model = $match[3];
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[3]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
/* Whatsapp */
|
||||
|
||||
if (preg_match('/WhatsApp\+?\/([0-9\.]+) (Android|S60Version|WP7)\/([0-9\.\_]+) Device\/([^\-]+)\-(.*)(?:-\([0-9]+\.[0-9]+\))?(?:\-H[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)?$/uU', $ua, $match)) {
|
||||
$this->data->browser->name = 'WhatsApp';
|
||||
$this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]);
|
||||
$this->data->browser->type = Constants\BrowserType::APP_CHAT;
|
||||
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
$this->data->device->manufacturer = $match[4];
|
||||
$this->data->device->model = $match[5];
|
||||
$this->data->device->identified |= Constants\Id::PATTERN;
|
||||
|
||||
if ($match[2] == 'Android') {
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android',
|
||||
'version' => new Version([ 'value' => str_replace('_', '.', $match[3]) ])
|
||||
]);
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[5]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
if ($match[2] == 'WP7') {
|
||||
$this->data->os->reset([
|
||||
'name' => 'Windows Phone',
|
||||
'version' => new Version([ 'value' => $match[3], 'details' => 2 ])
|
||||
]);
|
||||
|
||||
$device = Data\DeviceModels::identify('wp', $match[5]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
if ($match[2] == 'S60Version') {
|
||||
$this->data->os->reset([
|
||||
'name' => 'Series60',
|
||||
'version' => new Version([ 'value' => $match[3] ]),
|
||||
'family' => new Family([ 'name' => 'Symbian' ])
|
||||
]);
|
||||
|
||||
$device = Data\DeviceModels::identify('symbian', $match[5]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
if ($match[2] == 'WP7') {
|
||||
$this->data->os->reset([
|
||||
'name' => 'Windows Phone',
|
||||
'version' => new Version([ 'value' => $match[3], 'details' => 2 ])
|
||||
]);
|
||||
|
||||
$device = Data\DeviceModels::identify('wp', $match[5]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Yahoo */
|
||||
|
||||
if (preg_match('/YahooMobile(?:Messenger|Mail|Weather)\/1.0 \(Android (Messenger|Mail|Weather); ([0-9\.]+)\) \([^;]+; ?[^;]+; ?([^;]+); ?([0-9\.]+)\/[^\;\)\/]+\)/u', $ua, $match)) {
|
||||
$this->data->browser->name = 'Yahoo ' . $match[1];
|
||||
$this->data->browser->version = new Version([ 'value' => $match[2], 'details' => 3 ]);
|
||||
|
||||
switch ($match[1]) {
|
||||
case 'Messenger':
|
||||
$this->data->browser->type = Constants\BrowserType::APP_CHAT;
|
||||
break;
|
||||
case 'Mail':
|
||||
$this->data->browser->type = Constants\BrowserType::APP_EMAIL;
|
||||
break;
|
||||
case 'Weather':
|
||||
$this->data->browser->type = Constants\BrowserType::APP_NEWS;
|
||||
break;
|
||||
}
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android',
|
||||
'version' => new Version([ 'value' => $match[4] ])
|
||||
]);
|
||||
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[3]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
/* Yahoo Mobile App */
|
||||
|
||||
if (preg_match('/YahooJMobileApp\/[0-9\.]+ \(Android [a-z]+; ([0-9\.]+)\) \([^;]+; ?[^;]+; ?[^;]+; ?([^;]+); ?([0-9\.]+)\/[^\;\)\/]+\)/u', $ua, $match)) {
|
||||
$this->data->browser->name = 'Yahoo Mobile';
|
||||
$this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]);
|
||||
$this->data->browser->type = Constants\BrowserType::APP_SEARCH;
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android',
|
||||
'version' => new Version([ 'value' => $match[3] ])
|
||||
]);
|
||||
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[2]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
/* ICQ */
|
||||
|
||||
if (preg_match('/ICQ_Android\/([0-9\.]+) \(Android; [0-9]+; ([0-9\.]+); [^;]+; ([^;]+);/u', $ua, $match)) {
|
||||
$this->data->browser->name = 'ICQ';
|
||||
$this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]);
|
||||
$this->data->browser->type = Constants\BrowserType::APP_CHAT;
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android',
|
||||
'version' => new Version([ 'value' => $match[2] ])
|
||||
]);
|
||||
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[3]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
/* Facebook for Android */
|
||||
|
||||
if (preg_match('/^\[FBAN\/(FB4A|PAAA);.*FBDV\/([^;]+);.*FBSV\/([0-9\.]+);/u', $ua, $match)) {
|
||||
if ($match[1] == 'FB4A') {
|
||||
$this->data->browser->name = 'Facebook';
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->type = Constants\BrowserType::APP_SOCIAL;
|
||||
}
|
||||
|
||||
if ($match[1] == 'PAAA') {
|
||||
$this->data->browser->name = 'Facebook Pages';
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->type = Constants\BrowserType::APP_SOCIAL;
|
||||
}
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android',
|
||||
'version' => new Version([ 'value' => $match[3] ])
|
||||
]);
|
||||
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[2]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
/* VK */
|
||||
|
||||
if (preg_match('/^VKAndroidApp\/([0-9\.]+)-[0-9]+ \(Android ([^;]+); SDK [^;]+; [^;]+; [a-z]+ ([^;]+);/iu', $ua, $match)) {
|
||||
$this->data->browser->name = 'VK';
|
||||
$this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]);
|
||||
$this->data->browser->type = Constants\BrowserType::APP_SOCIAL;
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android',
|
||||
'version' => new Version([ 'value' => $match[2] ])
|
||||
]);
|
||||
|
||||
$this->data->device->model = $match[3];
|
||||
$this->data->device->identified |= Constants\Id::PATTERN;
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
|
||||
$device = Data\DeviceModels::identify('android', $match[3]);
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function detectRemainingApplications($ua)
|
||||
{
|
||||
if ($data = Data\Applications::identifyOther($ua)) {
|
||||
$this->data->browser->set($data['browser']);
|
||||
|
||||
if (!empty($data['device'])) {
|
||||
$this->data->device->set($data['device']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header\Useragent;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
use WhichBrowser\Data;
|
||||
|
||||
trait Bot
|
||||
{
|
||||
private function &detectBot($ua)
|
||||
{
|
||||
/* Detect bots based on url in the UA string */
|
||||
|
||||
if (preg_match('/\+https?:\/\//iu', $ua)) {
|
||||
$this->data->browser->reset();
|
||||
$this->data->os->reset();
|
||||
$this->data->engine->reset();
|
||||
$this->data->device->reset();
|
||||
|
||||
$this->data->device->type = Constants\DeviceType::BOT;
|
||||
}
|
||||
|
||||
/* Detect bots based on common markers */
|
||||
|
||||
if (preg_match('/(?:Bot|Robot|Spider|Crawler)([\/\);]|$)/iu', $ua) && !preg_match('/CUBOT/iu', $ua)) {
|
||||
$this->data->browser->reset();
|
||||
$this->data->os->reset();
|
||||
$this->data->engine->reset();
|
||||
$this->data->device->reset();
|
||||
|
||||
$this->data->device->type = Constants\DeviceType::BOT;
|
||||
}
|
||||
|
||||
/* Detect based on a predefined list or markers */
|
||||
|
||||
if ($bot = Data\Applications::identifyBot($ua)) {
|
||||
$this->data->browser = $bot;
|
||||
$this->data->os->reset();
|
||||
$this->data->engine->reset();
|
||||
$this->data->device->reset();
|
||||
|
||||
$this->data->device->type = Constants\DeviceType::BOT;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header\Useragent;
|
||||
|
||||
trait Device
|
||||
{
|
||||
use Device\Appliance, Device\Cars, Device\Gps, Device\Gaming, Device\Ereader,
|
||||
Device\Mobile, Device\Media, Device\Television, Device\Signage,
|
||||
Device\Printer, Device\Tablet, Device\Phone, Device\Pda;
|
||||
|
||||
private function &detectDevice($ua)
|
||||
{
|
||||
$this->detectAppliance($ua);
|
||||
$this->detectCars($ua);
|
||||
$this->detectGps($ua);
|
||||
$this->detectEreader($ua);
|
||||
$this->detectGaming($ua);
|
||||
$this->detectTelevision($ua);
|
||||
$this->detectSignage($ua);
|
||||
$this->detectMedia($ua);
|
||||
$this->detectPda($ua);
|
||||
$this->detectPrinter($ua);
|
||||
$this->detectTablet($ua);
|
||||
$this->detectPhone($ua);
|
||||
$this->detectMobile($ua);
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header\Useragent\Device;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
|
||||
trait Appliance
|
||||
{
|
||||
private function detectAppliance($ua)
|
||||
{
|
||||
$this->detectIOpener($ua);
|
||||
$this->detectWebLight($ua);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Netpliance i-Opener */
|
||||
|
||||
private function detectIOpener($ua)
|
||||
{
|
||||
if (preg_match('/I-Opener [0-9.]+; Netpliance/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Netpliance',
|
||||
'model' => 'i-Opener',
|
||||
'type' => Constants\DeviceType::DESKTOP
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/* KOMATSU WebLight */
|
||||
|
||||
private function detectWebLight($ua)
|
||||
{
|
||||
if (preg_match('/KOMATSU.*WL\//u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'KOMATSU',
|
||||
'model' => 'WebLight',
|
||||
'type' => Constants\DeviceType::DESKTOP
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header\Useragent\Device;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
|
||||
trait Cars
|
||||
{
|
||||
private function detectCars($ua)
|
||||
{
|
||||
if (!preg_match('/Car/ui', $ua)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->detectTesla($ua);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Tesla S */
|
||||
|
||||
private function detectTesla($ua)
|
||||
{
|
||||
if (preg_match('/QtCarBrowser/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Tesla',
|
||||
'model' => 'Model S',
|
||||
'type' => Constants\DeviceType::CAR
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header\Useragent\Device;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
|
||||
trait Ereader
|
||||
{
|
||||
private function detectEreader($ua)
|
||||
{
|
||||
if (!preg_match('/(Kindle|Nook|Bookeen|Kobo|EBRD|PocketBook|Iriver)/ui', $ua)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->detectKindle($ua);
|
||||
$this->detectNook($ua);
|
||||
$this->detectBookeen($ua);
|
||||
$this->detectKobo($ua);
|
||||
$this->detectSonyreader($ua);
|
||||
$this->detectPocketbook($ua);
|
||||
$this->detectIriver($ua);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* Amazon Kindle */
|
||||
|
||||
private function detectKindle($ua)
|
||||
{
|
||||
if (preg_match('/Kindle/u', $ua) && !preg_match('/Fire/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Amazon',
|
||||
'series' => 'Kindle',
|
||||
'type' => Constants\DeviceType::EREADER
|
||||
]);
|
||||
|
||||
if (preg_match('/Kindle SkipStone/u', $ua)) {
|
||||
$this->data->device->model = 'Kindle Touch or later';
|
||||
} elseif (preg_match('/Kindle\/3.0\+/u', $ua)) {
|
||||
$this->data->device->model = 'Kindle 3 or later';
|
||||
} elseif (preg_match('/Kindle\/3.0/u', $ua)) {
|
||||
$this->data->device->model = 'Kindle 3';
|
||||
} elseif (preg_match('/Kindle\/2.5/u', $ua)) {
|
||||
$this->data->device->model = 'Kindle 2';
|
||||
} elseif (preg_match('/Kindle\/2.0/u', $ua)) {
|
||||
$this->data->device->model = 'Kindle 2';
|
||||
} elseif (preg_match('/Kindle\/1.0/u', $ua)) {
|
||||
$this->data->device->model = 'Kindle 1';
|
||||
}
|
||||
|
||||
if (!empty($this->data->device->model)) {
|
||||
$this->data->device->generic = false;
|
||||
$this->data->device->series = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Barnes & Noble Nook */
|
||||
|
||||
private function detectNook($ua)
|
||||
{
|
||||
if (preg_match('/nook browser/u', $ua)) {
|
||||
$this->data->os->reset([ 'name' => 'Android' ]);
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Barnes & Noble',
|
||||
'series' => 'NOOK',
|
||||
'type' => Constants\DeviceType::EREADER
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Bookeen */
|
||||
|
||||
private function detectBookeen($ua)
|
||||
{
|
||||
if (preg_match('/bookeen\/cybook/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Bookeen',
|
||||
'series' => 'Cybook',
|
||||
'type' => Constants\DeviceType::EREADER
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Kobo */
|
||||
|
||||
private function detectKobo($ua)
|
||||
{
|
||||
if (preg_match('/Kobo (eReader|Touch)/u', $ua, $match)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Kobo',
|
||||
'series' => 'eReader',
|
||||
'type' => Constants\DeviceType::EREADER
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Sony Reader */
|
||||
|
||||
private function detectSonyreader($ua)
|
||||
{
|
||||
if (preg_match('/EBRD([0-9]+)/u', $ua, $match)) {
|
||||
$model = null;
|
||||
|
||||
switch ($match[1]) {
|
||||
case '1101':
|
||||
$model = 'PRS-T1';
|
||||
break;
|
||||
case '1102':
|
||||
$model = 'PRS-G1';
|
||||
break;
|
||||
case '1201':
|
||||
$model = 'PRS-T2';
|
||||
break;
|
||||
case '1301':
|
||||
$model = 'PRS-T3';
|
||||
break;
|
||||
}
|
||||
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Sony',
|
||||
'model' => $model,
|
||||
'series' => 'Reader',
|
||||
'type' => Constants\DeviceType::EREADER
|
||||
]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* PocketBook */
|
||||
|
||||
private function detectPocketbook($ua)
|
||||
{
|
||||
if (preg_match('/PocketBook\/([0-9]+)/u', $ua, $match)) {
|
||||
$model = null;
|
||||
|
||||
switch ($match[1]) {
|
||||
case '515':
|
||||
$model = 'Mini';
|
||||
break;
|
||||
case '614':
|
||||
$model = 'Basic 2';
|
||||
break;
|
||||
case '622':
|
||||
$model = 'Touch';
|
||||
break;
|
||||
case '623':
|
||||
$model = 'Touch Lux';
|
||||
break;
|
||||
case '624':
|
||||
$model = 'Basic Touch';
|
||||
break;
|
||||
case '626':
|
||||
$model = 'Touch Lux 2';
|
||||
break;
|
||||
case '630':
|
||||
$model = 'Sense';
|
||||
break;
|
||||
case '631':
|
||||
$model = 'Touch HD';
|
||||
break;
|
||||
case '640':
|
||||
$model = 'Aqua';
|
||||
break;
|
||||
case '641':
|
||||
$model = 'Aqua 2';
|
||||
break;
|
||||
case '650':
|
||||
$model = 'Ultra';
|
||||
break;
|
||||
case '801':
|
||||
$model = 'Color Lux';
|
||||
break;
|
||||
case '840':
|
||||
$model = 'InkPad';
|
||||
break;
|
||||
}
|
||||
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'PocketBook',
|
||||
'model' => $model,
|
||||
'type' => Constants\DeviceType::EREADER
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* iRiver */
|
||||
|
||||
private function detectIriver($ua)
|
||||
{
|
||||
if (preg_match('/Iriver ;/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'iRiver',
|
||||
'series' => 'Story',
|
||||
'type' => Constants\DeviceType::EREADER
|
||||
]);
|
||||
|
||||
if (preg_match('/EB07/u', $ua)) {
|
||||
$this->data->device->model = 'Story HD EB07';
|
||||
$this->data->device->series = null;
|
||||
$this->data->device->generic = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,279 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header\Useragent\Device;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
use WhichBrowser\Model\Version;
|
||||
|
||||
trait Gaming
|
||||
{
|
||||
private function detectGaming($ua)
|
||||
{
|
||||
if (!preg_match('/(Nintendo|Nitro|PlayStation|PS[0-9]|Sega|Dreamcast|Xbox)/ui', $ua)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->detectNintendo($ua);
|
||||
$this->detectPlaystation($ua);
|
||||
$this->detectXbox($ua);
|
||||
$this->detectSega($ua);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Nintendo Wii and DS */
|
||||
|
||||
private function detectNintendo($ua)
|
||||
{
|
||||
/* Switch */
|
||||
|
||||
if (preg_match('/Nintendo Switch/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Nintendo',
|
||||
'model' => 'Switch',
|
||||
'type' => Constants\DeviceType::GAMING,
|
||||
'subtype' => Constants\DeviceSubType::CONSOLE
|
||||
]);
|
||||
}
|
||||
|
||||
/* Wii */
|
||||
|
||||
if (preg_match('/Nintendo Wii/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Nintendo',
|
||||
'model' => 'Wii',
|
||||
'type' => Constants\DeviceType::GAMING,
|
||||
'subtype' => Constants\DeviceSubType::CONSOLE
|
||||
]);
|
||||
}
|
||||
|
||||
/* Wii U */
|
||||
|
||||
if (preg_match('/Nintendo Wii ?U/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Nintendo',
|
||||
'model' => 'Wii U',
|
||||
'type' => Constants\DeviceType::GAMING,
|
||||
'subtype' => Constants\DeviceSubType::CONSOLE
|
||||
]);
|
||||
}
|
||||
|
||||
/* DS */
|
||||
|
||||
if (preg_match('/Nintendo DS/u', $ua) || preg_match('/Nitro.*Opera/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Nintendo',
|
||||
'model' => 'DS',
|
||||
'type' => Constants\DeviceType::GAMING,
|
||||
'subtype' => Constants\DeviceSubType::PORTABLE
|
||||
]);
|
||||
}
|
||||
|
||||
/* DSi */
|
||||
|
||||
if (preg_match('/Nintendo DSi/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Nintendo',
|
||||
'model' => 'DSi',
|
||||
'type' => Constants\DeviceType::GAMING,
|
||||
'subtype' => Constants\DeviceSubType::PORTABLE
|
||||
]);
|
||||
}
|
||||
|
||||
/* 3DS */
|
||||
|
||||
if (preg_match('/Nintendo 3DS/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->os->identifyVersion('/Version\/([0-9.]*[0-9])/u', $ua);
|
||||
|
||||
$this->data->engine->set([
|
||||
'name' => 'WebKit'
|
||||
]);
|
||||
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Nintendo',
|
||||
'model' => '3DS',
|
||||
'type' => Constants\DeviceType::GAMING,
|
||||
'subtype' => Constants\DeviceSubType::PORTABLE
|
||||
]);
|
||||
}
|
||||
|
||||
/* New 3DS */
|
||||
|
||||
if (preg_match('/New Nintendo 3DS/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->os->identifyVersion('/Version\/([0-9.]*[0-9])/u', $ua);
|
||||
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Nintendo',
|
||||
'model' => 'New 3DS',
|
||||
'type' => Constants\DeviceType::GAMING,
|
||||
'subtype' => Constants\DeviceSubType::PORTABLE
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Sony PlayStation */
|
||||
|
||||
private function detectPlaystation($ua)
|
||||
{
|
||||
/* PlayStation Portable */
|
||||
|
||||
if (preg_match('/PlayStation Portable/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
|
||||
$this->data->engine->set([
|
||||
'name' => 'NetFront'
|
||||
]);
|
||||
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Sony',
|
||||
'model' => 'Playstation Portable',
|
||||
'type' => Constants\DeviceType::GAMING,
|
||||
'subtype' => Constants\DeviceSubType::PORTABLE
|
||||
]);
|
||||
}
|
||||
|
||||
/* PlayStation Vita */
|
||||
|
||||
if (preg_match('/PlayStation Vita/iu', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->os->identifyVersion('/PlayStation Vita ([0-9.]*)/u', $ua);
|
||||
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Sony',
|
||||
'model' => 'Playstation Vita',
|
||||
'type' => Constants\DeviceType::GAMING,
|
||||
'subtype' => Constants\DeviceSubType::PORTABLE
|
||||
]);
|
||||
|
||||
if (preg_match('/VTE\//u', $ua)) {
|
||||
$this->data->device->model = 'Playstation TV';
|
||||
$this->data->device->subtype = Constants\DeviceSubType::CONSOLE;
|
||||
}
|
||||
}
|
||||
|
||||
/* PlayStation 2 */
|
||||
|
||||
if (preg_match('/Playstation2/u', $ua) || preg_match('/\(PS2/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Sony',
|
||||
'model' => 'Playstation 2',
|
||||
'type' => Constants\DeviceType::GAMING,
|
||||
'subtype' => Constants\DeviceSubType::CONSOLE
|
||||
]);
|
||||
}
|
||||
|
||||
/* PlayStation 3 */
|
||||
|
||||
if (preg_match('/PlayStation 3/ui', $ua) || preg_match('/\(PS3/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->os->identifyVersion('/PLAYSTATION 3;? ([0-9.]*)/u', $ua);
|
||||
|
||||
if (preg_match('/PLAYSTATION 3; [123]/', $ua)) {
|
||||
$this->data->engine->set([
|
||||
'name' => 'NetFront'
|
||||
]);
|
||||
}
|
||||
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Sony',
|
||||
'model' => 'Playstation 3',
|
||||
'type' => Constants\DeviceType::GAMING,
|
||||
'subtype' => Constants\DeviceSubType::CONSOLE
|
||||
]);
|
||||
}
|
||||
|
||||
/* PlayStation 4 */
|
||||
|
||||
if (preg_match('/PlayStation 4/ui', $ua) || preg_match('/\(PS4/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->os->identifyVersion('/PlayStation 4 ([0-9.]*)/u', $ua);
|
||||
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Sony',
|
||||
'model' => 'Playstation 4',
|
||||
'type' => Constants\DeviceType::GAMING,
|
||||
'subtype' => Constants\DeviceSubType::CONSOLE
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Microsoft Xbox */
|
||||
|
||||
private function detectXbox($ua)
|
||||
{
|
||||
/* Xbox 360 */
|
||||
|
||||
if (preg_match('/Xbox\)$/u', $ua, $match)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Microsoft',
|
||||
'model' => 'Xbox 360',
|
||||
'type' => Constants\DeviceType::GAMING,
|
||||
'subtype' => Constants\DeviceSubType::CONSOLE
|
||||
]);
|
||||
}
|
||||
|
||||
/* Xbox One */
|
||||
|
||||
if (preg_match('/Xbox One\)/u', $ua, $match)) {
|
||||
if ($this->data->isOs('Windows Phone', '=', '10')) {
|
||||
$this->data->os->name = 'Windows';
|
||||
$this->data->os->version->alias = '10';
|
||||
}
|
||||
|
||||
if (!$this->data->isOs('Windows', '=', '10')) {
|
||||
$this->data->os->reset();
|
||||
}
|
||||
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Microsoft',
|
||||
'model' => 'Xbox One',
|
||||
'type' => Constants\DeviceType::GAMING,
|
||||
'subtype' => Constants\DeviceSubType::CONSOLE
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Sega */
|
||||
|
||||
private function detectSega($ua)
|
||||
{
|
||||
/* Sega Saturn */
|
||||
|
||||
if (preg_match('/SEGASATURN/u', $ua, $match)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Sega',
|
||||
'model' => 'Saturn',
|
||||
'type' => Constants\DeviceType::GAMING,
|
||||
'subtype' => Constants\DeviceSubType::CONSOLE
|
||||
]);
|
||||
}
|
||||
|
||||
/* Sega Dreamcast */
|
||||
|
||||
if (preg_match('/Dreamcast/u', $ua, $match)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Sega',
|
||||
'model' => 'Dreamcast',
|
||||
'type' => Constants\DeviceType::GAMING,
|
||||
'subtype' => Constants\DeviceSubType::CONSOLE
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header\Useragent\Device;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
|
||||
trait Gps
|
||||
{
|
||||
private function detectGps($ua)
|
||||
{
|
||||
if (!preg_match('/Nuvi/ui', $ua)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->detectGarmin($ua);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Garmin Nuvi */
|
||||
|
||||
private function detectGarmin($ua)
|
||||
{
|
||||
if (preg_match('/Nuvi/u', $ua) && preg_match('/Qtopia/u', $ua)) {
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Garmin',
|
||||
'model' => 'Nuvi',
|
||||
'type' => Constants\DeviceType::GPS
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header\Useragent\Device;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
use WhichBrowser\Model\Version;
|
||||
|
||||
trait Media
|
||||
{
|
||||
private function detectMedia($ua)
|
||||
{
|
||||
if (!preg_match('/(Archos|Zune|Walkman)/ui', $ua)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->detectArchos($ua);
|
||||
$this->detectZune($ua);
|
||||
$this->detectWalkman($ua);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* Archos Generation 4, 5 and 6 */
|
||||
|
||||
private function detectArchos($ua)
|
||||
{
|
||||
/* Generation 4 */
|
||||
|
||||
if (preg_match('/Archos A([67]04)WIFI\//u', $ua, $match)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Archos',
|
||||
'model' => $match[1] . ' WiFi',
|
||||
'type' => Constants\DeviceType::MEDIA
|
||||
]);
|
||||
}
|
||||
|
||||
/* Generation 5 */
|
||||
|
||||
if (preg_match('/ARCHOS; GOGI; a([67]05f?);/u', $ua, $match)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Archos',
|
||||
'model' => $match[1] . ' WiFi',
|
||||
'type' => Constants\DeviceType::MEDIA
|
||||
]);
|
||||
}
|
||||
|
||||
/* Generation 6 without Android */
|
||||
|
||||
if (preg_match('/ARCHOS; GOGI; G6-?(S|H|L|3GP);/u', $ua, $match)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Archos',
|
||||
'type' => Constants\DeviceType::MEDIA
|
||||
]);
|
||||
|
||||
switch ($match[1]) {
|
||||
case '3GP':
|
||||
$this->data->device->model = '5 3G+';
|
||||
break;
|
||||
case 'S':
|
||||
case 'H':
|
||||
$this->data->device->model = '5';
|
||||
break;
|
||||
case 'L':
|
||||
$this->data->device->model = '7';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Generation 6 with Android */
|
||||
|
||||
if (preg_match('/ARCHOS; GOGI; A5[SH]; Version ([0-9]\.[0-9])/u', $ua, $match)) {
|
||||
$version = new Version([ 'value' => $match[1] ]);
|
||||
|
||||
$this->data->os->reset([
|
||||
'name' => 'Android',
|
||||
'version' => new Version([ 'value' => $version->is('<', '1.7') ? '1.5' : '1.6' ])
|
||||
]);
|
||||
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Archos',
|
||||
'model' => '5',
|
||||
'type' => Constants\DeviceType::MEDIA
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Microsoft Zune */
|
||||
|
||||
private function detectZune($ua)
|
||||
{
|
||||
if (preg_match('/Microsoft ZuneHD/u', $ua)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Microsoft',
|
||||
'model' => 'Zune HD',
|
||||
'type' => Constants\DeviceType::MEDIA
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Sony Walkman */
|
||||
|
||||
private function detectWalkman($ua)
|
||||
{
|
||||
if (preg_match('/Walkman\/(NW-[A-Z0-9]+)/u', $ua, $match)) {
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Sony',
|
||||
'model' => $match[1] . ' Walkman',
|
||||
'type' => Constants\DeviceType::MEDIA
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,290 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header\Useragent\Device;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
use WhichBrowser\Data;
|
||||
use WhichBrowser\Model\Family;
|
||||
use WhichBrowser\Model\Version;
|
||||
|
||||
trait Pda
|
||||
{
|
||||
private function detectPda($ua)
|
||||
{
|
||||
if (!preg_match('/(CASIO|Palm|Psion|pdQ|COM|airboard|sharp|pda|POCKET-E|OASYS|NTT\/PI)/ui', $ua)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->detectCasio($ua);
|
||||
$this->detectPalm($ua);
|
||||
$this->detectPsion($ua);
|
||||
$this->detectSonyMylo($ua);
|
||||
$this->detectSonyAirboard($ua);
|
||||
$this->detectSharpZaurus($ua);
|
||||
$this->detectSharpShoin($ua);
|
||||
$this->detectPanasonicPocketE($ua);
|
||||
$this->detectFujitsuOasys($ua);
|
||||
$this->detectNttPetitWeb($ua);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Casio */
|
||||
|
||||
private function detectCasio($ua)
|
||||
{
|
||||
if (preg_match('/Product\=CASIO\/([^\);]+)[\);]/ui', $ua, $match)) {
|
||||
$this->data->device->manufacturer = 'Casio';
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
$this->data->device->type = Constants\DeviceType::PDA;
|
||||
|
||||
if ($match[1] == 'CASSIOPEIA BE') {
|
||||
$this->data->device->model = 'Cassiopeia';
|
||||
}
|
||||
|
||||
if ($match[1] == 'PPP101') {
|
||||
$this->data->device->model = 'Pocket PostPet';
|
||||
$this->data->device->carrier = 'DoCoMo';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Palm */
|
||||
|
||||
private function detectPalm($ua)
|
||||
{
|
||||
if (preg_match('/PalmOS/iu', $ua, $match)) {
|
||||
$this->data->os->name = 'Palm OS';
|
||||
$this->data->device->type = Constants\DeviceType::PDA;
|
||||
|
||||
if (preg_match('/PalmOS ([0-9.]*)/iu', $ua, $match)) {
|
||||
$this->data->os->version = new Version([ 'value' => $match[1] ]);
|
||||
}
|
||||
|
||||
if (preg_match('/; ([^;)]+)\)/u', $ua, $match)) {
|
||||
$device = Data\DeviceModels::identify('palmos', $match[1]);
|
||||
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match('/PalmOS\/([a-z]+)\/model ([^\/]+)\//iu', $ua, $match)) {
|
||||
$device = Data\DeviceModels::identify('palmos', $match[1] . '-' . $match[2]);
|
||||
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match('/Palm OS ([0-9.]*)/iu', $ua, $match)) {
|
||||
$this->data->os->name = 'Palm OS';
|
||||
$this->data->os->version = new Version([ 'value' => $match[1] ]);
|
||||
$this->data->device->type = Constants\DeviceType::PDA;
|
||||
}
|
||||
|
||||
if (preg_match('/PalmSource/u', $ua, $match)) {
|
||||
$this->data->os->name = 'Palm OS';
|
||||
$this->data->os->version = null;
|
||||
$this->data->device->type = Constants\DeviceType::PDA;
|
||||
|
||||
if (preg_match('/PalmSource\/([^;]+)/u', $ua, $match)) {
|
||||
$this->data->device->model = $match[1];
|
||||
$this->data->device->identified = Constants\Id::PATTERN;
|
||||
}
|
||||
|
||||
if (isset($this->data->device->model) && $this->data->device->model) {
|
||||
$device = Data\DeviceModels::identify('palmos', $this->data->device->model);
|
||||
|
||||
if ($device->identified) {
|
||||
$device->identified |= $this->data->device->identified;
|
||||
$this->data->device = $device;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Some model markers */
|
||||
|
||||
if (preg_match('/PalmPilot Pro/ui', $ua, $match)) {
|
||||
$this->data->device->manufacturer = 'Palm';
|
||||
$this->data->device->model = 'Pilot Professional';
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
}
|
||||
|
||||
if (preg_match('/pdQbrowser/ui', $ua, $match)) {
|
||||
$this->data->device->manufacturer = 'Kyocera';
|
||||
$this->data->device->model = 'QCP-6035';
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* PSION */
|
||||
|
||||
private function detectPsion($ua)
|
||||
{
|
||||
if (preg_match('/Psion Cpw\//iu', $ua, $match)) {
|
||||
$this->data->browser->name = 'WAP Browser';
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->type = Constants\BrowserType::BROWSER;
|
||||
|
||||
$this->data->os->name = 'EPOC';
|
||||
$this->data->os->family = new Family([ 'name' => 'Symbian' ]);
|
||||
|
||||
$this->data->device->manufacturer = 'Psion';
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
$this->data->device->type = Constants\DeviceType::PDA;
|
||||
|
||||
if (preg_match('/\(([A-Z0-9]+)\)/u', $ua, $match)) {
|
||||
switch ($match[1]) {
|
||||
case 'S5':
|
||||
$this->data->device->model = 'Series 5mx';
|
||||
break;
|
||||
case 'S7':
|
||||
$this->data->device->model = 'Series 7';
|
||||
break;
|
||||
case 'RV':
|
||||
$this->data->device->model = 'Revo';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Sony Mylo */
|
||||
|
||||
private function detectSonyMylo($ua)
|
||||
{
|
||||
if (preg_match('/SONY\/COM([0-9])/ui', $ua, $match)) {
|
||||
$this->data->device->manufacturer = 'Sony';
|
||||
$this->data->device->model = 'Mylo ' . $match[1];
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
$this->data->device->type = Constants\DeviceType::PDA;
|
||||
|
||||
$this->data->os->reset();
|
||||
|
||||
if (preg_match('/Qt embedded/ui', $ua, $match)) {
|
||||
$this->data->os->name = 'Qtopia';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Sony Airboard */
|
||||
|
||||
private function detectSonyAirboard($ua)
|
||||
{
|
||||
if (preg_match('/SONY\/airboard\/IDT-([A-Z0-9]+)/ui', $ua, $match)) {
|
||||
$this->data->device->manufacturer = 'Sony';
|
||||
$this->data->device->model = 'Airboard ' . $match[1];
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
$this->data->device->type = Constants\DeviceType::PDA;
|
||||
}
|
||||
|
||||
if (preg_match('/LocationFreeTV; Airboard\/(LF-[A-Z0-9]+)/ui', $ua, $match)) {
|
||||
$this->data->device->manufacturer = 'Sony';
|
||||
$this->data->device->model = 'Airboard ' . $match[1];
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
$this->data->device->type = Constants\DeviceType::PDA;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Sharp Zaurus */
|
||||
|
||||
private function detectSharpZaurus($ua)
|
||||
{
|
||||
if (preg_match('/sharp pda browser\/([0-9\.]+)/ui', $ua, $match)) {
|
||||
$this->data->device->manufacturer = 'Sharp';
|
||||
$this->data->device->model = 'Zaurus';
|
||||
$this->data->device->type = Constants\DeviceType::PDA;
|
||||
|
||||
if (preg_match('/\(([A-Z0-9\-]+)\/[0-9\.]+\)/ui', $ua, $match)) {
|
||||
$this->data->device->model = 'Zaurus ' . $match[1];
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
$this->data->device->generic = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match('/\(PDA; (SL-[A-Z][0-9]+)\/[0-9\.]/ui', $ua, $match)) {
|
||||
$this->data->device->manufacturer = 'Sharp';
|
||||
$this->data->device->model = 'Zaurus ' . $match[1];
|
||||
$this->data->device->type = Constants\DeviceType::PDA;
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
$this->data->device->generic = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Sharp Shoin (Word Processor) */
|
||||
|
||||
private function detectSharpShoin($ua)
|
||||
{
|
||||
if (preg_match('/sharp wd browser\/([0-9\.]+)/ui', $ua, $match)) {
|
||||
$this->data->device->manufacturer = 'Sharp';
|
||||
$this->data->device->model = 'Mobile Shoin';
|
||||
$this->data->device->type = Constants\DeviceType::PDA;
|
||||
|
||||
if (preg_match('/\(([A-Z0-9\-]+)\/[0-9\.]+\)/ui', $ua, $match)) {
|
||||
$this->data->device->model = 'Mobile Shoin ' . $match[1];
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
$this->data->device->generic = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Panasonic POCKET・E */
|
||||
|
||||
private function detectPanasonicPocketE($ua)
|
||||
{
|
||||
if (preg_match('/Product\=Panasonic\/POCKET-E/ui', $ua, $match)) {
|
||||
$this->data->device->manufacturer = 'Panasonic';
|
||||
$this->data->device->model = 'POCKET・E';
|
||||
$this->data->device->type = Constants\DeviceType::PDA;
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
$this->data->device->generic = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Fujitsu OASYS */
|
||||
|
||||
private function detectFujitsuOasys($ua)
|
||||
{
|
||||
if (preg_match('/Fujitsu; OASYS/ui', $ua, $match)) {
|
||||
$this->data->device->manufacturer = 'Fujitsu';
|
||||
$this->data->device->model = 'OASYS';
|
||||
$this->data->device->type = Constants\DeviceType::PDA;
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
$this->data->device->generic = false;
|
||||
|
||||
if (preg_match('/eNavigator/ui', $ua, $match)) {
|
||||
$this->data->browser->name = 'eNavigator';
|
||||
$this->data->browser->version = null;
|
||||
$this->data->browser->type = Constants\BrowserType::BROWSER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* PetitWeb */
|
||||
|
||||
private function detectNttPetitWeb($ua)
|
||||
{
|
||||
if (preg_match('/Product\=NTT\/(PI-[0-9]+)/ui', $ua, $match)) {
|
||||
$this->data->device->manufacturer = 'NTT';
|
||||
$this->data->device->model = 'PetitWeb ' . $match[1];
|
||||
$this->data->device->type = Constants\DeviceType::PDA;
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
$this->data->device->generic = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header\Useragent\Device;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
use WhichBrowser\Data;
|
||||
use WhichBrowser\Model\Version;
|
||||
|
||||
trait Phone
|
||||
{
|
||||
private function detectPhone($ua)
|
||||
{
|
||||
$this->detectNttTeless($ua);
|
||||
$this->detectSnom($ua);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* NTT Teless */
|
||||
|
||||
private function detectNttTeless($ua)
|
||||
{
|
||||
if (preg_match('/Product\=NTT\/Teless/ui', $ua, $match)) {
|
||||
$this->data->device->manufacturer = 'NTT';
|
||||
$this->data->device->model = 'Teless';
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
$this->data->device->subtype = Constants\DeviceSubType::DESKTOP;
|
||||
}
|
||||
}
|
||||
|
||||
/* SNOM */
|
||||
|
||||
private function detectSnom($ua)
|
||||
{
|
||||
if (preg_match('/snom(.+)-SIP/ui', $ua, $match)) {
|
||||
$this->data->device->manufacturer = 'SNOM';
|
||||
$this->data->device->model = $match[1] . ' IP Telephone';
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
$this->data->device->type = Constants\DeviceType::MOBILE;
|
||||
$this->data->device->subtype = Constants\DeviceSubType::DESKTOP;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header\Useragent\Device;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
|
||||
trait Printer
|
||||
{
|
||||
private function detectPrinter($ua)
|
||||
{
|
||||
if (!preg_match('/(TASKalfa|CanonIJCL|IR-S|PrintSmart|EpsonHello)/ui', $ua)) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* TASKalfa */
|
||||
|
||||
if (preg_match('/TASKalfa ([0-9A-Z]+)/iu', $ua, $match)) {
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Kyocera',
|
||||
'model' => 'TASKalfa ' . $match[1],
|
||||
'type' => Constants\DeviceType::PRINTER
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
/* Canon IJ */
|
||||
|
||||
if (preg_match('/CanonIJCL/iu', $ua, $match)) {
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Canon',
|
||||
'model' => 'IJ Printer',
|
||||
'type' => Constants\DeviceType::PRINTER
|
||||
]);
|
||||
}
|
||||
|
||||
/* Canon iR S */
|
||||
|
||||
if (preg_match('/IR-S/iu', $ua, $match)) {
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Canon',
|
||||
'model' => 'imageRUNNER',
|
||||
'type' => Constants\DeviceType::PRINTER
|
||||
]);
|
||||
}
|
||||
|
||||
/* HP Web PrintSmart */
|
||||
|
||||
if (preg_match('/HP Web PrintSmart/iu', $ua, $match)) {
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'HP',
|
||||
'model' => 'Web PrintSmart',
|
||||
'type' => Constants\DeviceType::PRINTER
|
||||
]);
|
||||
}
|
||||
|
||||
/* Epson Hello */
|
||||
|
||||
if (preg_match('/EpsonHello\//iu', $ua, $match)) {
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'Epson',
|
||||
'model' => 'Hello',
|
||||
'type' => Constants\DeviceType::PRINTER
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header\Useragent\Device;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
|
||||
trait Signage
|
||||
{
|
||||
private function detectSignage($ua)
|
||||
{
|
||||
if (!preg_match('/(BrightSign|ADAPI)/ui', $ua)) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* BrightSign */
|
||||
|
||||
if (preg_match('/BrightSign\/[0-9\.]+(?:-[a-z0-9\-]+)? \(([^\)]+)/u', $ua, $match)) {
|
||||
$this->data->os->reset();
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'BrightSign',
|
||||
'model' => $match[1],
|
||||
'type' => Constants\DeviceType::SIGNAGE
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
/* Iadea */
|
||||
|
||||
if (preg_match('/ADAPI/u', $ua) && preg_match('/\(MODEL:([^\)]+)\)/u', $ua, $match)) {
|
||||
if (!$this->data->isOs('Android')) {
|
||||
$this->data->os->reset();
|
||||
}
|
||||
|
||||
$this->data->device->setIdentification([
|
||||
'manufacturer' => 'IAdea',
|
||||
'model' => $match[1],
|
||||
'type' => Constants\DeviceType::SIGNAGE
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header\Useragent\Device;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
use WhichBrowser\Data;
|
||||
use WhichBrowser\Model\Version;
|
||||
|
||||
trait Tablet
|
||||
{
|
||||
private function detectTablet($ua)
|
||||
{
|
||||
$this->detectWebTab($ua);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* WeTab */
|
||||
|
||||
private function detectWebTab($ua)
|
||||
{
|
||||
if (preg_match('/WeTab-Browser /ui', $ua, $match)) {
|
||||
$this->data->device->manufacturer = 'WeTab';
|
||||
$this->data->device->model = 'WeTab';
|
||||
$this->data->device->identified |= Constants\Id::MATCH_UA;
|
||||
$this->data->device->type = Constants\DeviceType::TABLET;
|
||||
|
||||
$this->data->browser->name = 'WebTab Browser';
|
||||
$this->data->browser->version = null;
|
||||
|
||||
$this->data->os->name = 'MeeGo';
|
||||
$this->data->os->version = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,174 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header\Useragent;
|
||||
|
||||
use WhichBrowser\Model\Version;
|
||||
|
||||
trait Engine
|
||||
{
|
||||
private function &detectEngine($ua)
|
||||
{
|
||||
$this->detectWebkit($ua);
|
||||
$this->detectKHTML($ua);
|
||||
$this->detectGecko($ua);
|
||||
$this->detectServo($ua);
|
||||
$this->detectGoanna($ua);
|
||||
$this->detectPresto($ua);
|
||||
$this->detectTrident($ua);
|
||||
$this->detectEdgeHTMLUseragent($ua);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* WebKit */
|
||||
|
||||
private function detectWebkit($ua)
|
||||
{
|
||||
if (preg_match('/WebKit\/([0-9.]*)/iu', $ua, $match)) {
|
||||
$this->data->engine->name = 'Webkit';
|
||||
$this->data->engine->version = new Version([ 'value' => $match[1] ]);
|
||||
|
||||
if (preg_match('/(?:Chrome|Chromium)\/([0-9]*)/u', $ua, $match)) {
|
||||
if (intval($match[1]) >= 27) {
|
||||
$this->data->engine->reset([ 'name' => 'Blink' ]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match('/Browser\/AppleWebKit\/?([0-9.]*)/iu', $ua, $match)) {
|
||||
$this->data->engine->name = 'Webkit';
|
||||
$this->data->engine->version = new Version([ 'value' => $match[1] ]);
|
||||
}
|
||||
|
||||
if (preg_match('/AppleWebkit\(like Gecko\)/iu', $ua, $match)) {
|
||||
$this->data->engine->name = 'Webkit';
|
||||
}
|
||||
|
||||
if (preg_match('/CoralWebkit/iu', $ua, $match)) {
|
||||
$this->data->engine->version = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* KHTML */
|
||||
|
||||
private function detectKHTML($ua)
|
||||
{
|
||||
if (preg_match('/KHTML\/([0-9.]*)/u', $ua, $match)) {
|
||||
$this->data->engine->name = 'KHTML';
|
||||
$this->data->engine->version = new Version([ 'value' => $match[1] ]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Gecko */
|
||||
|
||||
private function detectGecko($ua)
|
||||
{
|
||||
if (preg_match('/Gecko/u', $ua) && !preg_match('/like Gecko/iu', $ua)) {
|
||||
$this->data->engine->name = 'Gecko';
|
||||
|
||||
if (preg_match('/; rv:([^\);]+)[\);]/u', $ua, $match)) {
|
||||
$this->data->engine->version = new Version([ 'value' => $match[1], 'details' => 3 ]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Servo */
|
||||
|
||||
private function detectServo($ua)
|
||||
{
|
||||
if (preg_match('/Servo\/([0-9.]*)/u', $ua, $match)) {
|
||||
$this->data->engine->name = 'Servo';
|
||||
$this->data->engine->version = new Version([ 'value' => $match[1] ]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Goanna */
|
||||
|
||||
private function detectGoanna($ua)
|
||||
{
|
||||
if (preg_match('/Goanna/u', $ua)) {
|
||||
$this->data->engine->name = 'Goanna';
|
||||
|
||||
if (preg_match('/Goanna\/([0-9]\.[0-9.]+)/u', $ua, $match)) {
|
||||
$this->data->engine->version = new Version([ 'value' => $match[1] ]);
|
||||
}
|
||||
|
||||
if (preg_match('/Goanna\/20[0-9]{6,6}/u', $ua) && preg_match('/; rv:([^\);]+)[\);]/u', $ua, $match)) {
|
||||
$this->data->engine->version = new Version([ 'value' => $match[1] ]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Presto */
|
||||
|
||||
private function detectPresto($ua)
|
||||
{
|
||||
if (preg_match('/Presto\/([0-9.]*)/u', $ua, $match)) {
|
||||
$this->data->engine->name = 'Presto';
|
||||
$this->data->engine->version = new Version([ 'value' => $match[1] ]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Trident */
|
||||
|
||||
private function detectTrident($ua)
|
||||
{
|
||||
if (preg_match('/Trident\/([0-9.]*)/u', $ua, $match)) {
|
||||
$this->data->engine->name = 'Trident';
|
||||
$this->data->engine->version = new Version([ 'value' => $match[1] ]);
|
||||
|
||||
|
||||
if (isset($this->data->browser->version) && isset($this->data->browser->name) && $this->data->browser->name == 'Internet Explorer') {
|
||||
if ($this->data->engine->version->toNumber() >= 7 && $this->data->browser->version->toFloat() < 11) {
|
||||
$this->data->browser->version = new Version([ 'value' => '11.0' ]);
|
||||
$this->data->browser->mode = 'compat';
|
||||
}
|
||||
|
||||
if ($this->data->engine->version->toNumber() == 6 && $this->data->browser->version->toFloat() < 10) {
|
||||
$this->data->browser->version = new Version([ 'value' => '10.0' ]);
|
||||
$this->data->browser->mode = 'compat';
|
||||
}
|
||||
|
||||
if ($this->data->engine->version->toNumber() == 5 && $this->data->browser->version->toFloat() < 9) {
|
||||
$this->data->browser->version = new Version([ 'value' => '9.0' ]);
|
||||
$this->data->browser->mode = 'compat';
|
||||
}
|
||||
|
||||
if ($this->data->engine->version->toNumber() == 4 && $this->data->browser->version->toFloat() < 8) {
|
||||
$this->data->browser->version = new Version([ 'value' => '8.0' ]);
|
||||
$this->data->browser->mode = 'compat';
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($this->data->os->version) && isset($this->data->os->name) && $this->data->os->name == 'Windows Phone' && isset($this->data->browser->name) && $this->data->browser->name == 'Mobile Internet Explorer') {
|
||||
if ($this->data->engine->version->toNumber() == 7 && $this->data->os->version->toFloat() < 8.1) {
|
||||
$this->data->os->version = new Version([ 'value' => '8.1', 'details' => 2 ]);
|
||||
}
|
||||
|
||||
if ($this->data->engine->version->toNumber() == 5 && $this->data->os->version->toFloat() < 7.5) {
|
||||
$this->data->os->version = new Version([ 'value' => '7.5', 'details' => 2 ]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* EdgeHTML */
|
||||
|
||||
private function detectEdgeHTMLUseragent($ua)
|
||||
{
|
||||
if (preg_match('/Edge\/([0-9.]*)/u', $ua, $match)) {
|
||||
$this->data->engine->name = 'EdgeHTML';
|
||||
$this->data->engine->version = new Version([ 'value' => $match[1], 'hidden' => true ]);
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header\Useragent;
|
||||
|
||||
use WhichBrowser\Model\Version;
|
||||
|
||||
trait Using
|
||||
{
|
||||
private function &detectUsing($ua)
|
||||
{
|
||||
if (!preg_match('/(AdobeAIR|Awesomium|Embedded|bsalsa|Canvace|Ekioh|AtomShell|Electron|JavaFX|GFXe|luakit|Titanium|OpenWebKitSharp|Prism|Qt|Reqwireless|RhoSimulator|UWebKit|nw-tests|WebKit2)/ui', $ua)) {
|
||||
return $this;
|
||||
}
|
||||
|
||||
$items = [
|
||||
[ 'name' => 'AdobeAIR', 'regexp' => '/AdobeAIR\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Awesomium', 'regexp' => '/Awesomium\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Delphi Embedded Web Browser', 'regexp' => '/EmbeddedWB ([0-9.]*)/u' ],
|
||||
[ 'name' => 'Delphi Embedded Web Browser', 'regexp' => '/bsalsa\.com/u' ],
|
||||
[ 'name' => 'Delphi Embedded Web Browser', 'regexp' => '/Embedded Web Browser/u' ],
|
||||
[ 'name' => 'Canvace', 'regexp' => '/Canvace Standalone\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Ekioh', 'regexp' => '/Ekioh\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Electron', 'regexp' => '/AtomShell\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Electron', 'regexp' => '/Electron\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'JavaFX', 'regexp' => '/JavaFX\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'GFXe', 'regexp' => '/GFXe\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'LuaKit', 'regexp' => '/luakit/u' ],
|
||||
[ 'name' => 'Titanium', 'regexp' => '/Titanium\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'OpenWebKitSharp', 'regexp' => '/OpenWebKitSharp/u' ],
|
||||
[ 'name' => 'Prism', 'regexp' => '/Prism\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Qt', 'regexp' => '/Qt\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Qt', 'regexp' => '/QtWebEngine\/([4-9][0-9.]*)?/u' ],
|
||||
[ 'name' => 'Qt', 'regexp' => '/QtEmbedded/u' ],
|
||||
[ 'name' => 'Qt', 'regexp' => '/QtEmbedded.*Qt\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'ReqwirelessWeb', 'regexp' => '/ReqwirelessWeb\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'RhoSimulator', 'regexp' => '/RhoSimulator/u' ],
|
||||
[ 'name' => 'UWebKit', 'regexp' => '/UWebKit\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'Node-WebKit', 'regexp' => '/nw-tests\/([0-9.]*)/u' ],
|
||||
[ 'name' => 'WebKit2.NET', 'regexp' => '/WebKit2.NET/u' ],
|
||||
];
|
||||
|
||||
$count = count($items);
|
||||
for ($i = 0; $i < $count; $i++) {
|
||||
if (preg_match($items[$i]['regexp'], $ua, $match)) {
|
||||
$this->data->browser->using = new \WhichBrowser\Model\Using([
|
||||
'name' => $items[$i]['name']
|
||||
]);
|
||||
|
||||
if (isset($match[1]) && $match[1]) {
|
||||
$this->data->browser->using->version = new Version([ 'value' => $match[1], 'details' => isset($items[$i]['details']) ? $items[$i]['details'] : null ]);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
41
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Wap.php
vendored
Normal file
41
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Wap.php
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser\Analyser\Header;
|
||||
|
||||
use WhichBrowser\Constants;
|
||||
use WhichBrowser\Data;
|
||||
|
||||
class Wap
|
||||
{
|
||||
public function __construct($header, &$data)
|
||||
{
|
||||
$this->data =& $data;
|
||||
|
||||
$header = trim($header);
|
||||
|
||||
if ($header[0] == '"') {
|
||||
$header = explode(",", $header);
|
||||
$header = trim($header[0], '"');
|
||||
}
|
||||
|
||||
$result = Data\DeviceProfiles::identify($header);
|
||||
|
||||
if ($result) {
|
||||
$this->data->device->manufacturer = $result[0];
|
||||
$this->data->device->model = $result[1];
|
||||
$this->data->device->identified |= Constants\Id::MATCH_PROF;
|
||||
|
||||
if (!empty($result[2]) && (!isset($this->data->os->name) || $this->data->os->name != $result[2])) {
|
||||
$this->data->os->name = $result[2];
|
||||
$this->data->os->version = null;
|
||||
|
||||
$this->data->engine->name = null;
|
||||
$this->data->engine->version = null;
|
||||
}
|
||||
|
||||
if (isset($result[3])) {
|
||||
$this->data->device->type = $result[3];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
110
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Cache.php
vendored
Normal file
110
wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Cache.php
vendored
Normal file
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
namespace WhichBrowser;
|
||||
|
||||
use Psr\Cache\CacheItemPoolInterface;
|
||||
|
||||
trait Cache
|
||||
{
|
||||
private $cache;
|
||||
private $expires;
|
||||
|
||||
/**
|
||||
* @var boolean $cached Was this result retrieve from the cache?
|
||||
*/
|
||||
|
||||
public $cached = false;
|
||||
|
||||
|
||||
/**
|
||||
* Enable caching of results
|
||||
*
|
||||
* @param object $cache An PSR-6 cache pool (an object that implements Psr\Cache\CacheItemPoolInterface)
|
||||
* @param int $expires Optional the number of seconds after which a cached item expires, default is 15 minutes
|
||||
*/
|
||||
|
||||
public function setCache($cache, $expires = 900)
|
||||
{
|
||||
$this->cache = $cache;
|
||||
$this->expires = $expires;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Apply cached data to the main Parser object
|
||||
*
|
||||
* @internal
|
||||
*
|
||||
* @param array $data An array with a key for every property it needs to apply
|
||||
*/
|
||||
|
||||
private function applyCachedData($data)
|
||||
{
|
||||
foreach ($data as $key => $value) {
|
||||
$this->$key = $value;
|
||||
}
|
||||
|
||||
$this->cached = true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve the data that can be cached from the main Parser object
|
||||
*
|
||||
* @internal
|
||||
*
|
||||
* @return array An array with a key for every property that will be cached
|
||||
*/
|
||||
|
||||
private function retrieveCachedData()
|
||||
{
|
||||
return [
|
||||
'browser' => $this->browser,
|
||||
'engine' => $this->engine,
|
||||
'os' => $this->os,
|
||||
'device' => $this->device,
|
||||
'camouflage' => $this->camouflage,
|
||||
'features' => $this->features
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve the result from the cache, or analyse and store in the cache
|
||||
*
|
||||
* @internal
|
||||
*
|
||||
* @param array|string $headers An array with all of the headers or a string with just the User-Agent header
|
||||
*
|
||||
* @return boolean did we actually retrieve or analyse results
|
||||
*/
|
||||
|
||||
private function analyseWithCache($headers, $options = [])
|
||||
{
|
||||
if (isset($options['cache'])) {
|
||||
if (isset($options['cacheExpires'])) {
|
||||
$this->setCache($options['cache'], $options['cacheExpires']);
|
||||
} else {
|
||||
$this->setCache($options['cache']);
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->cache instanceof CacheItemPoolInterface) {
|
||||
$item = $this->cache->getItem('whichbrowser_' . md5(serialize($headers)));
|
||||
|
||||
if ($item->isHit()) {
|
||||
$this->applyCachedData($item->get());
|
||||
} else {
|
||||
$analyser = new Analyser($headers, $options);
|
||||
$analyser->setdata($this);
|
||||
$analyser->analyse();
|
||||
|
||||
$item->set($this->retrieveCachedData());
|
||||
$item->expiresAfter($this->expires);
|
||||
$this->cache->save($item);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace WhichBrowser\Constants;
|
||||
|
||||
class BrowserType
|
||||
{
|
||||
const UNKNOWN = '';
|
||||
|
||||
const BROWSER = 'browser';
|
||||
const BROWSER_TEXT = 'browser:text';
|
||||
|
||||
const APP = 'app';
|
||||
const APP_EMAIL = 'app:email';
|
||||
const APP_GAME = 'app:game';
|
||||
const APP_MEDIAPLAYER = 'app:mediaplayer';
|
||||
const APP_FEEDREADER = 'app:feedreader';
|
||||
const APP_PODCAST = 'app:podcast';
|
||||
const APP_SOCIAL = 'app:social';
|
||||
const APP_OFFICE = 'app:office';
|
||||
const APP_EDITOR = 'app:editor';
|
||||
const APP_DOWNLOAD = 'app:download';
|
||||
const APP_SEARCH = 'app:search';
|
||||
const APP_NEWS = 'app:news';
|
||||
const APP_ANTIVIRUS = 'app:antivirus';
|
||||
const APP_SHOPPING = 'app:shopping';
|
||||
const APP_CHAT = 'app:chat';
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace WhichBrowser\Constants;
|
||||
|
||||
class DeviceSubType
|
||||
{
|
||||
const FEATURE = 'feature';
|
||||
const SMART = 'smart';
|
||||
const DESKTOP = 'desktop';
|
||||
const CONSOLE = 'console';
|
||||
const PORTABLE = 'portable';
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace WhichBrowser\Constants;
|
||||
|
||||
class DeviceType
|
||||
{
|
||||
const DESKTOP = 'desktop';
|
||||
const MOBILE = 'mobile';
|
||||
const PDA = 'pda';
|
||||
const DECT = 'dect';
|
||||
const TABLET = 'tablet';
|
||||
const GAMING = 'gaming';
|
||||
const EREADER = 'ereader';
|
||||
const MEDIA = 'media';
|
||||
const HEADSET = 'headset';
|
||||
const WATCH = 'watch';
|
||||
const EMULATOR = 'emulator';
|
||||
const TELEVISION = 'television';
|
||||
const MONITOR = 'monitor';
|
||||
const CAMERA = 'camera';
|
||||
const PRINTER = 'printer';
|
||||
const SIGNAGE = 'signage';
|
||||
const WHITEBOARD = 'whiteboard';
|
||||
const DEVBOARD = 'devboard';
|
||||
const INFLIGHT = 'inflight';
|
||||
const APPLIANCE = 'appliance';
|
||||
const GPS = 'gps';
|
||||
const CAR = 'car';
|
||||
const POS = 'pos';
|
||||
const BOT = 'bot';
|
||||
const PROJECTOR = 'projector';
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace WhichBrowser\Constants;
|
||||
|
||||
class EngineType
|
||||
{
|
||||
const TRIDENT = 1;
|
||||
const PRESTO = 2;
|
||||
const CHROMIUM = 4;
|
||||
const GECKO = 8;
|
||||
const WEBKIT = 16;
|
||||
const V8 = 32;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user