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 / AbstractClientParser.php
independent-analytics / vendor / matomo / device-detector / Parser / Client Last commit date
Browser 3 months ago Hints 2 years ago AbstractClientParser.php 3 months ago Browser.php 1 month ago FeedReader.php 2 years ago Library.php 2 years ago MediaPlayer.php 2 years ago MobileApp.php 2 years ago PIM.php 2 years ago
AbstractClientParser.php
109 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;
12
13 use IAWPSCOPED\DeviceDetector\Parser\AbstractParser;
14 /** @internal */
15 abstract class AbstractClientParser extends AbstractParser
16 {
17 /**
18 * @var string
19 */
20 protected $fixtureFile = '';
21 /**
22 * @var string
23 */
24 protected $parserName = '';
25 /**
26 * Parses the current UA and checks whether it contains any client information
27 *
28 * @return array|null
29 *
30 * @throws \Exception
31 *
32 * @see $fixtureFile for file with list of detected clients
33 *
34 * Step 1: Build a big regex containing all regexes and match UA against it
35 * -> If no matches found: return
36 * -> Otherwise:
37 * Step 2: Walk through the list of regexes in feed_readers.yml and try to match every one
38 * -> Return the matched feed reader
39 *
40 * NOTE: Doing the big match before matching every single regex speeds up the detection
41 *
42 */
43 public function parse() : ?array
44 {
45 $result = null;
46 if ($this->preMatchOverall()) {
47 foreach ($this->getRegexes() as $regex) {
48 $matches = $this->matchUserAgent($regex['regex']);
49 if ($matches) {
50 $result = ['type' => $this->parserName, 'name' => $this->buildByMatch($regex['name'], $matches), 'version' => $this->buildVersion((string) $regex['version'], $matches)];
51 break;
52 }
53 }
54 }
55 return $result;
56 }
57 /**
58 * Returns all names defined in the regexes
59 *
60 * Attention: This method might not return all names of detected clients
61 *
62 * @return array
63 */
64 public static function getAvailableClients() : array
65 {
66 $regexes = (new static())->getRegexes();
67 // @phpstan-ignore-line
68 $names = [];
69 foreach ($regexes as $regex) {
70 if (\false !== \strpos($regex['name'], '$1') || \false !== \strpos($regex['name'], '$2')) {
71 continue;
72 }
73 $names[] = $regex['name'];
74 }
75 if (static::class === MobileApp::class) {
76 \array_push(
77 $names,
78 // Microsoft Office $1
79 'Microsoft Office Access',
80 'Microsoft Office Excel',
81 'Microsoft Office OneDrive for Business',
82 'Microsoft Office OneNote',
83 'Microsoft Office PowerPoint',
84 'Microsoft Office Project',
85 'Microsoft Office Publisher',
86 'Microsoft Office Visio',
87 'Microsoft Office Word',
88 // Podkicker$1
89 'Podkicker',
90 'Podkicker Pro',
91 'Podkicker Classic',
92 // radio.$1
93 'radio.at',
94 'radio.de',
95 'radio.dk',
96 'radio.es',
97 'radio.fr',
98 'radio.it',
99 'radio.pl',
100 'radio.pt',
101 'radio.se',
102 'radio.net'
103 );
104 }
105 \natcasesort($names);
106 return \array_unique($names);
107 }
108 }
109