Completed
Push — master ( 7a5f39...3a2708 )
by ARCANEDEV
09:08
created

TrackingManager::trackQuery()   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
rs 10
c 0
b 0
f 0
ccs 2
cts 2
cp 1
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php namespace Arcanedev\LaravelTracker;
2
3
use Arcanedev\LaravelTracker\Contracts\TrackingManager as TrackingManagerContract;
4
use Illuminate\Contracts\Foundation\Application;
5
6
/**
7
 * Class     TrackingManager
8
 *
9
 * @package  Arcanedev\LaravelTracker
10
 * @author   ARCANEDEV <[email protected]>
11
 */
12
class TrackingManager implements TrackingManagerContract
13
{
14
    /* ------------------------------------------------------------------------------------------------
15
     |  Properties
16
     | ------------------------------------------------------------------------------------------------
17
     */
18
    /** @var \Illuminate\Contracts\Foundation\Application  */
19
    private $app;
20
21
    /* ------------------------------------------------------------------------------------------------
22
     |  Constructor
23
     | ------------------------------------------------------------------------------------------------
24
     */
25
    /**
26
     * TrackingManager constructor.
27
     *
28
     * @param \Illuminate\Contracts\Foundation\Application $app
29
     */
30 216
    public function __construct(Application $app)
31
    {
32 216
        $this->app = $app;
33 216
    }
34
35
    /* ------------------------------------------------------------------------------------------------
36
     |  Getters & Setters
37
     | ------------------------------------------------------------------------------------------------
38
     */
39
    /**
40
     * Get the cookie tracker.
41
     *
42
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\CookieTracker
43
     */
44
    private function getCookieTracker()
45
    {
46
        return $this->getTracker(Contracts\Trackers\CookieTracker::class);
47
    }
48
49
    /**
50
     * Get the device tracker.
51
     *
52
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\DeviceTracker
53
     */
54 6
    private function getDeviceTracker()
55
    {
56 6
        return $this->getTracker(Contracts\Trackers\DeviceTracker::class);
57
    }
58
59
    /**
60
     * Get the error tracker.
61
     *
62
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\ErrorTracker
63
     */
64 4
    private function getErrorTracker()
65
    {
66 4
        return $this->getTracker(Contracts\Trackers\ErrorTracker::class);
67
    }
68
69
    /**
70
     * Get the geoip tracker.
71
     *
72
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\GeoIpTracker
73
     */
74 6
    private function getGeoIpTracker()
75
    {
76 6
        return $this->getTracker(Contracts\Trackers\GeoIpTracker::class);
77
    }
78
79
    /**
80
     * Get the language tracker.
81
     *
82
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\LanguageTracker
83
     */
84 6
    private function getLanguageTracker()
85
    {
86 6
        return $this->getTracker(Contracts\Trackers\LanguageTracker::class);
87
    }
88
89
    /**
90
     * Get the path tracker.
91
     *
92
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\PathTracker
93
     */
94 6
    private function getPathTracker()
95
    {
96 6
        return $this->getTracker(Contracts\Trackers\PathTracker::class);
97
    }
98
99
    /**
100
     * Get the query tracker.
101
     *
102
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\QueryTracker
103
     */
104 6
    private function getQueryTracker()
105
    {
106 6
        return $this->getTracker(Contracts\Trackers\QueryTracker::class);
107
    }
108
109
    /**
110
     * Get the referer tracker.
111
     *
112
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\RefererTracker
113
     */
114 6
    private function getRefererTracker()
115
    {
116 6
        return $this->getTracker(Contracts\Trackers\RefererTracker::class);
117
    }
118
119
    /**
120
     * Get the session tracker.
121
     *
122
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\SessionTracker
123
     */
124 6
    private function getSessionTracker()
125
    {
126 6
        return $this->getTracker(Contracts\Trackers\SessionTracker::class);
127
    }
128
129
    /**
130
     * Get the session activity tracker.
131
     *
132
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\SessionActivityTracker
133
     */
134 6
    private function getSessionActivityTracker()
135
    {
136 6
        return $this->getTracker(Contracts\Trackers\SessionActivityTracker::class);
137
    }
138
139
    /**
140
     * Get the route tracker.
141
     *
142
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\RouteTracker
143
     */
144 6
    public function getRouteTracker()
145
    {
146 6
        return $this->getTracker(Contracts\Trackers\RouteTracker::class);
147
    }
148
149
    /**
150
     * Get the user agent tracker.
151
     *
152
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\UserAgentTracker
153
     */
154 6
    public function getUserAgentTracker()
155
    {
156 6
        return $this->getTracker(Contracts\Trackers\UserAgentTracker::class);
157
    }
158
159
    /**
160
     * Get the user tracker.
161
     *
162
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\UserTracker
163
     */
164 6
    private function getUserTracker()
165
    {
166 6
        return $this->getTracker(Contracts\Trackers\UserTracker::class);
167
    }
168
169
    /* ------------------------------------------------------------------------------------------------
170
     |  Main Functions
171
     | ------------------------------------------------------------------------------------------------
172
     */
173
    /**
174
     * Track the exception error.
175
     *
176
     * @param  \Exception  $exception
177
     *
178
     * @return int
179
     */
180 4
    public function trackException(\Exception $exception)
181
    {
182 4
        return $this->getErrorTracker()->track($exception);
183
    }
184
185
    /**
186
     * Track the path.
187
     *
188
     * @param  string  $path
189
     *
190
     * @return int
191
     */
192 6
    public function trackPath($path)
193
    {
194 6
        return $this->getPathTracker()->track($path);
195
    }
196
197
    /**
198
     * Track the query.
199
     *
200
     * @param  array  $queries
201
     *
202
     * @return int|null
203
     */
204 6
    public function trackQuery(array $queries)
205
    {
206 6
        return $this->getQueryTracker()->track($queries);
207
    }
208
209
    /**
210
     * Track the user.
211
     *
212
     * @return int|null
213
     */
214 6
    public function trackUser()
215
    {
216 6
        return $this->getUserTracker()->track();
217
    }
218
219
    /**
220
     * Track the device.
221
     *
222
     * @return int
223
     */
224 6
    public function trackDevice()
225
    {
226 6
        return $this->getDeviceTracker()->track();
227
    }
228
229
    /**
230
     * Track the ip address.
231
     *
232
     * @param  string  $ipAddress
233
     *
234
     * @return int|null
235
     */
236 6
    public function trackGeoIp($ipAddress)
237
    {
238 6
        return $this->getGeoIpTracker()->track($ipAddress);
239
    }
240
241
    /**
242
     * Track the user agent.
243
     *
244
     * @return int
245
     */
246 6
    public function trackUserAgent()
247
    {
248 6
        return $this->getUserAgentTracker()->track();
249
    }
250
251
    /**
252
     * Track the referer.
253
     *
254
     * @param  string  $refererUrl
255
     * @param  string  $pageUrl
256
     *
257
     * @return int|null
258
     */
259 6
    public function trackReferer($refererUrl, $pageUrl)
260
    {
261 6
        return $this->getRefererTracker()->track($refererUrl, $pageUrl);
262
    }
263
264
    /**
265
     * Track the cookie.
266
     *
267
     * @param  mixed  $cookie
268
     *
269
     * @return int|null
270
     */
271
    public function trackCookie($cookie)
272
    {
273
        return $this->getCookieTracker()->track($cookie);
274
    }
275
276
    /**
277
     * Track the language.
278
     *
279
     * @return int
280
     */
281 6
    public function trackLanguage()
282
    {
283 6
        return $this->getLanguageTracker()->track();
284
    }
285
286
    /**
287
     * Track the session.
288
     *
289
     * @param  array  $data
290
     *
291
     * @return int
292
     */
293 6
    public function trackSession(array $data)
294
    {
295 6
        return $this->getSessionTracker()->track($data);
296
    }
297
298
    /**
299
     * Track the session activity.
300
     *
301
     * @param  array  $data
302
     *
303
     * @return int
304
     */
305 6
    public function trackActivity(array $data)
306
    {
307 6
        return $this->getSessionActivityTracker()->track($data);
308
    }
309
310
    /**
311
     * Check the session data.
312
     *
313
     * @param  array  $currentData
314
     * @param  array  $newData
315
     *
316
     * @return array
317
     */
318 6
    public function checkSessionData(array $currentData, array $newData)
319
    {
320 6
        return $this->getSessionTracker()->checkData($currentData, $newData);
321
    }
322
323
    /* ------------------------------------------------------------------------------------------------
324
     |  Other Functions
325
     | ------------------------------------------------------------------------------------------------
326
     */
327
    /**
328
     * Get the tracker instance.
329
     *
330
     * @param  string  $abstract
331
     *
332
     * @return mixed
333
     */
334 10
    private function getTracker($abstract)
335
    {
336 10
        return $this->app->make($abstract);
337
    }
338
}
339