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 / Bot.php
independent-analytics / vendor / matomo / device-detector / Parser Last commit date
Client 2 years ago Device 2 years ago AbstractBotParser.php 2 years ago AbstractParser.php 2 years ago Bot.php 2 years ago OperatingSystem.php 2 years ago VendorFragment.php 2 years ago
Bot.php
79 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;
12
13 /**
14 * Class Bot
15 *
16 * Parses a user agent for bot information
17 *
18 * Detected bots are defined in regexes/bots.yml
19 * @internal
20 */
21 class Bot extends AbstractBotParser
22 {
23 /**
24 * @var string
25 */
26 protected $fixtureFile = 'regexes/bots.yml';
27 /**
28 * @var string
29 */
30 protected $parserName = 'bot';
31 /**
32 * @var bool
33 */
34 protected $discardDetails = \false;
35 /**
36 * Enables information discarding
37 */
38 public function discardDetails() : void
39 {
40 $this->discardDetails = \true;
41 }
42 /**
43 * Parses the current UA and checks whether it contains bot information
44 *
45 * @see bots.yml for list of detected bots
46 *
47 * Step 1: Build a big regex containing all regexes and match UA against it
48 * -> If no matches found: return
49 * -> Otherwise:
50 * Step 2: Walk through the list of regexes in bots.yml and try to match every one
51 * -> Return the matched data
52 *
53 * If $discardDetails is set to TRUE, the Step 2 will be skipped
54 * $bot will be set to TRUE instead
55 *
56 * NOTE: Doing the big match before matching every single regex speeds up the detection
57 *
58 * @return array|null
59 */
60 public function parse() : ?array
61 {
62 $result = null;
63 if ($this->preMatchOverall()) {
64 if ($this->discardDetails) {
65 return [\true];
66 }
67 foreach ($this->getRegexes() as $regex) {
68 $matches = $this->matchUserAgent($regex['regex']);
69 if ($matches) {
70 unset($regex['regex']);
71 $result = $regex;
72 break;
73 }
74 }
75 }
76 return $result;
77 }
78 }
79