xref: /plugin/statistics/vendor/matomo/device-detector/Parser/Client/Hints/BrowserHints.php (revision d5ef99ddb7dfb0cfae33e9257bd1d788f682c50f) !
1*d5ef99ddSAndreas Gohr<?php
2*d5ef99ddSAndreas Gohr
3*d5ef99ddSAndreas Gohr/**
4*d5ef99ddSAndreas Gohr * Device Detector - The Universal Device Detection library for parsing User Agents
5*d5ef99ddSAndreas Gohr *
6*d5ef99ddSAndreas Gohr * @link https://matomo.org
7*d5ef99ddSAndreas Gohr *
8*d5ef99ddSAndreas Gohr * @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
9*d5ef99ddSAndreas Gohr */
10*d5ef99ddSAndreas Gohr
11*d5ef99ddSAndreas Gohrdeclare(strict_types=1);
12*d5ef99ddSAndreas Gohr
13*d5ef99ddSAndreas Gohrnamespace DeviceDetector\Parser\Client\Hints;
14*d5ef99ddSAndreas Gohr
15*d5ef99ddSAndreas Gohruse DeviceDetector\Parser\AbstractParser;
16*d5ef99ddSAndreas Gohr
17*d5ef99ddSAndreas Gohrclass BrowserHints extends AbstractParser
18*d5ef99ddSAndreas Gohr{
19*d5ef99ddSAndreas Gohr    /**
20*d5ef99ddSAndreas Gohr     * @var string
21*d5ef99ddSAndreas Gohr     */
22*d5ef99ddSAndreas Gohr    protected $fixtureFile = 'regexes/client/hints/browsers.yml';
23*d5ef99ddSAndreas Gohr
24*d5ef99ddSAndreas Gohr    /**
25*d5ef99ddSAndreas Gohr     * @var string
26*d5ef99ddSAndreas Gohr     */
27*d5ef99ddSAndreas Gohr    protected $parserName = 'BrowserHints';
28*d5ef99ddSAndreas Gohr
29*d5ef99ddSAndreas Gohr    /**
30*d5ef99ddSAndreas Gohr     * Get browser name if is in collection
31*d5ef99ddSAndreas Gohr     *
32*d5ef99ddSAndreas Gohr     * @return array|null
33*d5ef99ddSAndreas Gohr     */
34*d5ef99ddSAndreas Gohr    public function parse(): ?array
35*d5ef99ddSAndreas Gohr    {
36*d5ef99ddSAndreas Gohr        if (null === $this->clientHints) {
37*d5ef99ddSAndreas Gohr            return null;
38*d5ef99ddSAndreas Gohr        }
39*d5ef99ddSAndreas Gohr
40*d5ef99ddSAndreas Gohr        $appId = $this->clientHints->getApp();
41*d5ef99ddSAndreas Gohr        $name  = $this->getRegexes()[$appId] ?? null;
42*d5ef99ddSAndreas Gohr
43*d5ef99ddSAndreas Gohr        if ('' === (string) $name) {
44*d5ef99ddSAndreas Gohr            return null;
45*d5ef99ddSAndreas Gohr        }
46*d5ef99ddSAndreas Gohr
47*d5ef99ddSAndreas Gohr        return [
48*d5ef99ddSAndreas Gohr            'name' => $name,
49*d5ef99ddSAndreas Gohr        ];
50*d5ef99ddSAndreas Gohr    }
51*d5ef99ddSAndreas Gohr}
52