Completed
Push — master ( 77fa1d...4c135b )
by ARCANEDEV
08:34
created

TrackingManager::trackDevice()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php namespace Arcanedev\LaravelTracker;
2
3
use Arcanedev\LaravelTracker\Contracts\TrackingManager as TrackingManagerContract;
4
5
/**
6
 * Class     TrackingManager
7
 *
8
 * @package  Arcanedev\LaravelTracker
9
 * @author   ARCANEDEV <[email protected]>
10
 */
11
class TrackingManager implements TrackingManagerContract
12
{
13
    /* ------------------------------------------------------------------------------------------------
14
     |  Properties
15
     | ------------------------------------------------------------------------------------------------
16
     */
17
    /** @var Contracts\Trackers\CookieTracker */
18
    private $cookieTracker;
19
20
    /** @var Contracts\Trackers\DeviceTracker */
21
    private $deviceTracker;
22
23
    /** @var Contracts\Trackers\GeoIpTracker */
24
    private $geoIpTracker;
25
26
    /** @var Contracts\Trackers\LanguageTracker */
27
    private $languageTracker;
28
29
    /** @var Contracts\Trackers\PathTracker */
30
    private $pathTracker;
31
32
    /** @var Contracts\Trackers\QueryTracker */
33
    private $queryTracker;
34
35
    /** @var Contracts\Trackers\RefererTracker */
36
    private $refererTracker;
37
38
    /** @var Contracts\Trackers\SessionTracker */
39
    private $sessionTracker;
40
41
    /** @var Contracts\Trackers\UserAgentTracker */
42
    private $userAgentTracker;
43
44
    /** @var Contracts\Trackers\UserTracker */
45
    private $userTracker;
46
47
    /* ------------------------------------------------------------------------------------------------
48
     |  Constructor
49
     | ------------------------------------------------------------------------------------------------
50
     */
51
    /**
52
     * TrackingManager constructor.
53
     *
54
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\CookieTracker     $cookieTracker
55
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\DeviceTracker     $deviceTracker
56
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\GeoIpTracker      $geoIpTracker
57
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\LanguageTracker   $languageTracker
58
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\PathTracker       $pathTracker
59
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\QueryTracker      $queryTracker
60
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\RefererTracker    $refererTracker
61
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\SessionTracker    $sessionTracker
62
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\UserAgentTracker  $userAgentTracker
63
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\UserTracker       $userTracker
64
     */
65 24
    public function __construct(
66
        Contracts\Trackers\CookieTracker $cookieTracker,
67
        Contracts\Trackers\DeviceTracker $deviceTracker,
68
        Contracts\Trackers\GeoIpTracker $geoIpTracker,
69
        Contracts\Trackers\LanguageTracker $languageTracker,
70
        Contracts\Trackers\PathTracker $pathTracker,
71
        Contracts\Trackers\QueryTracker $queryTracker,
72
        Contracts\Trackers\RefererTracker $refererTracker,
73
        Contracts\Trackers\SessionTracker $sessionTracker,
74
        Contracts\Trackers\UserAgentTracker $userAgentTracker,
75
        Contracts\Trackers\UserTracker $userTracker
76
    ) {
77 24
        $this->cookieTracker    = $cookieTracker;
78 24
        $this->deviceTracker    = $deviceTracker;
79 24
        $this->geoIpTracker     = $geoIpTracker;
80 24
        $this->languageTracker  = $languageTracker;
81 24
        $this->pathTracker      = $pathTracker;
82 24
        $this->queryTracker     = $queryTracker;
83 24
        $this->refererTracker   = $refererTracker;
84 24
        $this->sessionTracker   = $sessionTracker;
85 24
        $this->userAgentTracker = $userAgentTracker;
86 24
        $this->userTracker      = $userTracker;
87 24
    }
88
89
    /* ------------------------------------------------------------------------------------------------
90
     |  Getters & Setters
91
     | ------------------------------------------------------------------------------------------------
92
     */
93
    /**
94
     * Get the user agent tracker.
95
     *
96
     * @return Contracts\Trackers\UserAgentTracker
97
     */
98 6
    public function getUserAgentTracker()
99
    {
100 6
        return $this->userAgentTracker;
101
    }
102
103
    /* ------------------------------------------------------------------------------------------------
104
     |  Main Functions
105
     | ------------------------------------------------------------------------------------------------
106
     */
107
    /**
108
     * Track the path.
109
     *
110
     * @param  string  $path
111
     *
112
     * @return int
113
     */
114 6
    public function trackPath($path)
115
    {
116 6
        return $this->pathTracker->track($path);
117
    }
118
119
    /**
120
     * Track the query.
121
     *
122
     * @param  array  $queries
123
     *
124
     * @return int|null
125
     */
126 6
    public function trackQuery(array $queries)
127
    {
128 6
        return $this->queryTracker->track($queries);
129
    }
130
131
    /**
132
     * Track the user.
133
     *
134
     * @return int|null
135
     */
136 6
    public function trackUser()
137
    {
138 6
        return $this->userTracker->track();
139
    }
140
141
    /**
142
     * Track the device.
143
     *
144
     * @return int
145
     */
146 6
    public function trackDevice()
147
    {
148 6
        return $this->deviceTracker->track();
149
    }
150
151
    /**
152
     * Track the ip address.
153
     *
154
     * @param  string  $ipAddress
155
     *
156
     * @return int|null
157
     */
158 6
    public function trackGeoIp($ipAddress)
159
    {
160 6
        return $this->geoIpTracker->track($ipAddress);
161
    }
162
163
    /**
164
     * Track the user agent.
165
     *
166
     * @return int
167
     */
168 6
    public function trackUserAgent()
169
    {
170 6
        return $this->getUserAgentTracker()->track();
171
    }
172
173
    /**
174
     * Track the referer.
175
     *
176
     * @param  string  $refererUrl
177
     * @param  string  $pageUrl
178
     *
179
     * @return int|null
180
     */
181 6
    public function trackReferer($refererUrl, $pageUrl)
182
    {
183 6
        return $this->refererTracker->track($refererUrl, $pageUrl);
184
    }
185
186
    /**
187
     * Track the cookie.
188
     *
189
     * @param  mixed  $cookie
190
     *
191
     * @return int|null
192
     */
193 6
    public function trackCookie($cookie)
194
    {
195 6
        return $this->cookieTracker->track($cookie);
196
    }
197
198
    /**
199
     * Track the language.
200
     *
201
     * @return int
202
     */
203 6
    public function trackLanguage()
204
    {
205 6
        return $this->languageTracker->track();
206
    }
207
208
    /**
209
     * Track the session.
210
     *
211
     * @param  array  $data
212
     *
213
     * @return int
214
     */
215 6
    public function trackSession(array $data)
216
    {
217 6
        return $this->sessionTracker->track($data);
218
    }
219
220
    /**
221
     * Check the session data.
222
     *
223
     * @param  array  $data
224
     * @param  array  $currentData
225
     *
226
     * @return array
227
     */
228 6
    public function checkSessionData(array $data, array $currentData)
229
    {
230 6
        return $this->sessionTracker->checkData($data, $currentData);
231
    }
232
}
233