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 / Bot.php
independent-analytics / vendor / matomo / device-detector / Parser Last commit date
Client 1 month ago Device 1 month ago AbstractBotParser.php 2 years ago AbstractParser.php 1 month ago Bot.php 3 months ago OperatingSystem.php 1 month ago VendorFragment.php 2 years ago
Bot.php
86 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;
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 * @return array|null
46 *
47 * @throws \Exception
48 *
49 * @see bots.yml for list of detected bots
50 *
51 * Step 1: Build a big regex containing all regexes and match UA against it
52 * -> If no matches found: return
53 * -> Otherwise:
54 * Step 2: Walk through the list of regexes in bots.yml and try to match every one
55 * -> Return the matched data
56 *
57 * If $discardDetails is set to TRUE, the Step 2 will be skipped
58 * $bot will be set to TRUE instead
59 *
60 * NOTE: Doing the big match before matching every single regex speeds up the detection
61 *
62 */
63 public function parse() : ?array
64 {
65 $result = null;
66 if ($this->preMatchOverall()) {
67 if ($this->discardDetails) {
68 return [\true];
69 }
70 foreach ($this->getRegexes() as $regex) {
71 $matches = $this->matchUserAgent($regex['regex']);
72 if (!$matches) {
73 continue;
74 }
75 unset($regex['regex']);
76 $result = $regex;
77 if (\array_key_exists('name', $result)) {
78 $result['name'] = $this->buildByMatch($result['name'], $matches);
79 }
80 break;
81 }
82 }
83 return $result;
84 }
85 }
86