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 / Version.php
independent-analytics / vendor / matomo / device-detector / Parser / Client / Browser / Engine Last commit date
Version.php 4 months ago
Version.php
68 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\Engine;
12
13 use IAWPSCOPED\DeviceDetector\Parser\Client\AbstractClientParser;
14 /**
15 * Class Version
16 *
17 * Client parser for browser engine version detection
18 * @internal
19 */
20 class Version extends AbstractClientParser
21 {
22 /**
23 * @var string
24 */
25 private $engine;
26 /**
27 * Version constructor.
28 *
29 * @param string $ua
30 * @param string $engine
31 */
32 public function __construct(string $ua, string $engine)
33 {
34 parent::__construct($ua);
35 $this->engine = $engine;
36 }
37 /**
38 * @inheritdoc
39 */
40 public function parse() : ?array
41 {
42 if (empty($this->engine)) {
43 return null;
44 }
45 if ('Gecko' === $this->engine || 'Clecko' === $this->engine) {
46 $pattern = '~[ ](?:rv[: ]([0-9.]+)).*(?:g|cl)ecko/\\d{8,10}~i';
47 if (\preg_match($pattern, $this->userAgent, $matches)) {
48 return ['version' => \array_pop($matches)];
49 }
50 }
51 $engineToken = $this->engine;
52 if ('Blink' === $this->engine) {
53 $engineToken = 'Chr[o0]me|Chromium|Cronet';
54 }
55 if ('Arachne' === $this->engine) {
56 $engineToken = 'Arachne\\/5\\.';
57 }
58 if ('LibWeb' === $this->engine) {
59 $engineToken = 'LibWeb\\+LibJs';
60 }
61 \preg_match("~(?:{$engineToken})\\s*[/_]?\\s*((?(?=\\d+\\.\\d)\\d+[.\\d]*|\\d{1,7}(?=(?:\\D|\$))))~i", $this->userAgent, $matches);
62 if (!$matches) {
63 return null;
64 }
65 return ['version' => \array_pop($matches)];
66 }
67 }
68