PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / trunk
Advanced Access Manager – Access Governance for WordPress vtrunk
6.8.4 6.8.5 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13 6.9.14 6.9.15 6.9.16 6.9.17 6.9.18 6.9.19 6.9.2 6.9.20 6.9.21 6.9.22 6.9.23 6.9.24 6.9.25 6.9.26 6.9.27 6.9.28 6.9.29 6.9.3 6.9.30 6.9.31 6.9.32 6.9.33 6.9.34 6.9.35 6.9.36 6.9.37 6.9.38 6.9.39 6.9.4 6.9.41 6.9.42 6.9.43 6.9.44 6.9.45 6.9.46 6.9.47 6.9.48 6.9.49 6.9.5 6.9.51 6.9.6 6.9.7 6.9.8 6.9.9 7.0.0 7.0.0-alpha.6 7.0.0-alpha.7 7.0.0-beta.1 7.0.0-rc1 7.0.0-rc2 7.0.0-rc3 7.0.1 7.0.10 7.0.11 7.0.2 7.0.3 7.0.4 7.0.5 7.0.6 7.0.7 7.0.8 7.0.9 7.1.0 7.1.1 trunk 3.0 4.0 4.0.1 4.1 4.2 4.3 4.4 4.4.1 4.5 4.6 4.6.1 4.6.2 4.7 4.7.1 4.7.2 4.7.5 4.7.6 4.8 4.8.1 4.9 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.9.5.1 4.9.5.2 5.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1 5.1.1 5.10 5.11 5.2 5.2.1 5.2.5 5.2.6 5.2.7 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.4 5.4.1 5.4.2 5.4.3 5.4.3.1 5.4.3.2 5.5 5.5.1 5.5.2 5.6 5.6.1 5.6.1.1 5.7 5.7.1 5.7.2 5.7.3 5.8 5.8.1 5.8.2 5.8.3 5.9 5.9.1 5.9.1.1 5.9.2 5.9.2.1 5.9.3 5.9.4 5.9.5 5.9.6 5.9.6.1 5.9.6.2 5.9.6.3 5.9.7 5.9.7.1 5.9.7.2 5.9.7.3 5.9.8 5.9.8.1 5.9.9 5.9.9.1 6.0.0 6.0.1 6.0.2 6.0.3 6.0.4 6.0.5 6.1.0 6.1.1 6.2.0 6.2.1 6.2.2 6.3.0 6.3.1 6.3.2 6.3.3 6.4.0 6.4.1 6.4.2 6.4.3 6.5.0 6.5.1 6.5.2 6.5.3 6.5.4 6.6.0 6.6.1 6.6.2 6.6.3 6.6.4 6.7.0 6.7.1 6.7.2 6.7.3 6.7.4 6.7.5 6.7.6 6.7.7 6.7.8 6.7.9 6.8.0 6.8.1 6.8.2 6.8.3
advanced-access-manager / vendor / matomo / device-detector / Parser / Bot.php
advanced-access-manager / vendor / matomo / device-detector / Parser Last commit date
Client 1 year ago Device 1 year ago AbstractBotParser.php 1 year ago AbstractParser.php 1 year ago Bot.php 1 year ago OperatingSystem.php 1 year ago VendorFragment.php 1 year ago
Bot.php
89 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
11 declare(strict_types=1);
12
13 namespace DeviceDetector\Parser;
14
15 /**
16 * Class Bot
17 *
18 * Parses a user agent for bot information
19 *
20 * Detected bots are defined in regexes/bots.yml
21 */
22 class Bot extends AbstractBotParser
23 {
24 /**
25 * @var string
26 */
27 protected $fixtureFile = 'regexes/bots.yml';
28
29 /**
30 * @var string
31 */
32 protected $parserName = 'bot';
33
34 /**
35 * @var bool
36 */
37 protected $discardDetails = false;
38
39 /**
40 * Enables information discarding
41 */
42 public function discardDetails(): void
43 {
44 $this->discardDetails = true;
45 }
46
47 /**
48 * Parses the current UA and checks whether it contains bot information
49 *
50 * @see bots.yml for list of detected bots
51 *
52 * Step 1: Build a big regex containing all regexes and match UA against it
53 * -> If no matches found: return
54 * -> Otherwise:
55 * Step 2: Walk through the list of regexes in bots.yml and try to match every one
56 * -> Return the matched data
57 *
58 * If $discardDetails is set to TRUE, the Step 2 will be skipped
59 * $bot will be set to TRUE instead
60 *
61 * NOTE: Doing the big match before matching every single regex speeds up the detection
62 *
63 * @return array|null
64 */
65 public function parse(): ?array
66 {
67 $result = null;
68
69 if ($this->preMatchOverall()) {
70 if ($this->discardDetails) {
71 return [true];
72 }
73
74 foreach ($this->getRegexes() as $regex) {
75 $matches = $this->matchUserAgent($regex['regex']);
76
77 if ($matches) {
78 unset($regex['regex']);
79 $result = $regex;
80
81 break;
82 }
83 }
84 }
85
86 return $result;
87 }
88 }
89