Completed
Push — master ( f328e9...1657f1 )
by ARCANEDEV
13s
created

TrackingManager::trackUser()   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
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 198
    public function __construct(Application $app)
31
    {
32 198
        $this->app = $app;
33 198
    }
34
35
    /* ------------------------------------------------------------------------------------------------
36
     |  Getters & Setters
37
     | ------------------------------------------------------------------------------------------------
38
     */
39
    /**
40
     * Get the cookie tracker.
41
     *
42
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\CookieTracker
43
     */
44 6
    private function getCookieTracker()
45
    {
46 6
        return $this->getTracker(Contracts\Trackers\CookieTracker::class);
47 3
    }
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 geoip tracker.
61
     *
62
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\GeoIpTracker
63
     */
64 6
    private function getGeoIpTracker()
65
    {
66 6
        return $this->getTracker(Contracts\Trackers\GeoIpTracker::class);
67
    }
68
69
    /**
70
     * Get the language tracker.
71
     *
72
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\LanguageTracker
73
     */
74 6
    private function getLanguageTracker()
75
    {
76 6
        return $this->getTracker(Contracts\Trackers\LanguageTracker::class);
77
    }
78
79
    /**
80
     * Get the path tracker.
81
     *
82
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\PathTracker
83
     */
84 6
    private function getPathTracker()
85
    {
86 6
        return $this->getTracker(Contracts\Trackers\PathTracker::class);
87
    }
88
89
    /**
90
     * Get the query tracker.
91
     *
92
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\QueryTracker
93
     */
94 6
    private function getQueryTracker()
95
    {
96 6
        return $this->getTracker(Contracts\Trackers\QueryTracker::class);
97
    }
98
99
    /**
100
     * Get the referer tracker.
101
     *
102
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\RefererTracker
103
     */
104 6
    private function getRefererTracker()
105
    {
106 6
        return $this->getTracker(Contracts\Trackers\RefererTracker::class);
107
    }
108
109
    /**
110
     * Get the session tracker.
111
     *
112
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\SessionTracker
113
     */
114 6
    private function getSessionTracker()
115
    {
116 6
        return $this->getTracker(Contracts\Trackers\SessionTracker::class);
117
    }
118
119
    /**
120
     * Get the session activity tracker.
121
     *
122
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\SessionActivityTracker
123
     */
124 6
    private function getSessionActivityTracker()
125
    {
126 6
        return $this->getTracker(Contracts\Trackers\SessionActivityTracker::class);
127
    }
128
129
    /**
130
     * Get the route tracker.
131
     *
132
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\RouteTracker
133
     */
134 6
    public function getRouteTracker()
135
    {
136 6
        return $this->getTracker(Contracts\Trackers\RouteTracker::class);
137
    }
138
139
    /**
140
     * Get the user agent tracker.
141
     *
142
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\UserAgentTracker
143
     */
144 6
    public function getUserAgentTracker()
145
    {
146 6
        return $this->getTracker(Contracts\Trackers\UserAgentTracker::class);
147
    }
148
149
    /**
150
     * Get the user tracker.
151
     *
152
     * @return \Arcanedev\LaravelTracker\Contracts\Trackers\UserTracker
153
     */
154 6
    private function getUserTracker()
155
    {
156 6
        return $this->getTracker(Contracts\Trackers\UserTracker::class);
157
    }
158
159
    /* ------------------------------------------------------------------------------------------------
160
     |  Main Functions
161
     | ------------------------------------------------------------------------------------------------
162
     */
163
    /**
164
     * Track the path.
165
     *
166
     * @param  string  $path
167
     *
168
     * @return int
169
     */
170 6
    public function trackPath($path)
171
    {
172 6
        return $this->getPathTracker()->track($path);
173
    }
174
175
    /**
176
     * Track the query.
177
     *
178
     * @param  array  $queries
179
     *
180
     * @return int|null
181
     */
182 6
    public function trackQuery(array $queries)
183
    {
184 6
        return $this->getQueryTracker()->track($queries);
185
    }
186
187
    /**
188
     * Track the user.
189
     *
190
     * @return int|null
191
     */
192 6
    public function trackUser()
193
    {
194 6
        return $this->getUserTracker()->track();
195
    }
196
197
    /**
198
     * Track the device.
199
     *
200
     * @return int
201
     */
202 6
    public function trackDevice()
203
    {
204 6
        return $this->getDeviceTracker()->track();
205
    }
206
207
    /**
208
     * Track the ip address.
209
     *
210
     * @param  string  $ipAddress
211
     *
212
     * @return int|null
213
     */
214 6
    public function trackGeoIp($ipAddress)
215
    {
216 6
        return $this->getGeoIpTracker()->track($ipAddress);
217
    }
218
219
    /**
220
     * Track the user agent.
221
     *
222
     * @return int
223
     */
224 6
    public function trackUserAgent()
225
    {
226 6
        return $this->getUserAgentTracker()->track();
227
    }
228
229
    /**
230
     * Track the referer.
231
     *
232
     * @param  string  $refererUrl
233
     * @param  string  $pageUrl
234
     *
235
     * @return int|null
236
     */
237 6
    public function trackReferer($refererUrl, $pageUrl)
238
    {
239 6
        return $this->getRefererTracker()->track($refererUrl, $pageUrl);
240
    }
241
242
    /**
243
     * Track the cookie.
244
     *
245
     * @param  mixed  $cookie
246
     *
247
     * @return int|null
248
     */
249 6
    public function trackCookie($cookie)
250
    {
251 6
        return $this->getCookieTracker()->track($cookie);
252
    }
253
254
    /**
255
     * Track the language.
256
     *
257
     * @return int
258
     */
259 6
    public function trackLanguage()
260
    {
261 6
        return $this->getLanguageTracker()->track();
262
    }
263
264
    /**
265
     * Track the session.
266
     *
267
     * @param  array  $data
268
     *
269
     * @return int
270
     */
271 6
    public function trackSession(array $data)
272
    {
273 6
        return $this->getSessionTracker()->track($data);
274
    }
275
276
    /**
277
     * Track the session activity.
278
     *
279
     * @param  array  $data
280
     *
281
     * @return int
282
     */
283 6
    public function trackActivity(array $data)
284
    {
285 6
        return $this->getSessionActivityTracker()->track($data);
286
    }
287
288
    /**
289
     * Check the session data.
290
     *
291
     * @param  array  $currentData
292
     * @param  array  $newData
293
     *
294
     * @return array
295
     */
296 6
    public function checkSessionData(array $currentData, array $newData)
297
    {
298 6
        return $this->getSessionTracker()->checkData($currentData, $newData);
299
    }
300
301
    /* ------------------------------------------------------------------------------------------------
302
     |  Other Functions
303
     | ------------------------------------------------------------------------------------------------
304
     */
305
    /**
306
     * Get the tracker instance.
307
     *
308
     * @param  string  $abstract
309
     *
310
     * @return mixed
311
     */
312 6
    private function getTracker($abstract)
313
    {
314 6
        return $this->app->make($abstract);
315
    }
316
}
317