PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.2.0
Independent Analytics – WordPress Analytics Plugin v2.2.0
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 2 years ago Hints 2 years ago AbstractClientParser.php 2 years ago Browser.php 2 years 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
77 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 IAWP_SCOPED\DeviceDetector\Parser\Client;
12
13 use IAWP_SCOPED\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 * @see $fixtureFile for file with list of detected clients
29 *
30 * Step 1: Build a big regex containing all regexes and match UA against it
31 * -> If no matches found: return
32 * -> Otherwise:
33 * Step 2: Walk through the list of regexes in feed_readers.yml and try to match every one
34 * -> Return the matched feed reader
35 *
36 * NOTE: Doing the big match before matching every single regex speeds up the detection
37 *
38 * @return array|null
39 */
40 public function parse() : ?array
41 {
42 $result = null;
43 if ($this->preMatchOverall()) {
44 foreach ($this->getRegexes() as $regex) {
45 $matches = $this->matchUserAgent($regex['regex']);
46 if ($matches) {
47 $result = ['type' => $this->parserName, 'name' => $this->buildByMatch($regex['name'], $matches), 'version' => $this->buildVersion((string) $regex['version'], $matches)];
48 break;
49 }
50 }
51 }
52 return $result;
53 }
54 /**
55 * Returns all names defined in the regexes
56 *
57 * Attention: This method might not return all names of detected clients
58 *
59 * @return array
60 */
61 public static function getAvailableClients() : array
62 {
63 $instance = new static();
64 // @phpstan-ignore-line
65 $regexes = $instance->getRegexes();
66 $names = [];
67 foreach ($regexes as $regex) {
68 if ('$1' === $regex['name']) {
69 continue;
70 }
71 $names[] = $regex['name'];
72 }
73 \natcasesort($names);
74 return \array_unique($names);
75 }
76 }
77