PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.5
Independent Analytics – WordPress Analytics Plugin v2.15.5
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / matomo / device-detector / Parser / Client / Browser / Engine.php
independent-analytics / vendor / matomo / device-detector / Parser / Client / Browser Last commit date
Engine 3 months ago Engine.php 7 months ago
Engine.php
70 lines
1 <?php
2
3 /**
4 * Device Detector - The Universal Device Detection library for parsing User Agents
5 *
6 * @link https://matomo.org
7 *
8 * @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
9 */
10 declare (strict_types=1);
11 namespace IAWPSCOPED\DeviceDetector\Parser\Client\Browser;
12
13 use IAWPSCOPED\DeviceDetector\Parser\Client\AbstractClientParser;
14 /**
15 * Class Engine
16 *
17 * Client parser for browser engine detection
18 * @internal
19 */
20 class Engine extends AbstractClientParser
21 {
22 /**
23 * @var string
24 */
25 protected $fixtureFile = 'regexes/client/browser_engine.yml';
26 /**
27 * @var string
28 */
29 protected $parserName = 'browserengine';
30 /**
31 * Known browser engines mapped to their internal short codes
32 *
33 * @var array
34 */
35 protected static $availableEngines = ['WebKit', 'Blink', 'Trident', 'Text-based', 'Dillo', 'iCab', 'Elektra', 'Presto', 'Clecko', 'Gecko', 'KHTML', 'NetFront', 'Edge', 'NetSurf', 'Servo', 'Goanna', 'EkiohFlow', 'Arachne', 'LibWeb', 'Maple', 'ArkWeb'];
36 /**
37 * Returns list of all available browser engines
38 * @return array
39 */
40 public static function getAvailableEngines() : array
41 {
42 return self::$availableEngines;
43 }
44 /**
45 * @inheritdoc
46 */
47 public function parse() : ?array
48 {
49 $matches = \false;
50 foreach ($this->getRegexes() as $regex) {
51 $matches = $this->matchUserAgent($regex['regex']);
52 if ($matches) {
53 break;
54 }
55 }
56 if (empty($matches) || empty($regex)) {
57 return null;
58 }
59 $name = $this->buildByMatch($regex['name'], $matches);
60 foreach (self::getAvailableEngines() as $engineName) {
61 if (\strtolower($name) === \strtolower($engineName)) {
62 return ['engine' => $engineName];
63 }
64 }
65 // This Exception should never be thrown. If so a defined browser name is missing in $availableEngines
66 throw new \Exception(\sprintf('Detected browser engine was not found in $availableEngines. Tried to parse user agent: %s', $this->userAgent));
67 // @codeCoverageIgnore
68 }
69 }
70