Completed
Push — master ( 8fcee4...77fa1d )
by ARCANEDEV
08:36
created

TrackingManager   B

Complexity

Total Complexity 12

Size/Duplication

Total Lines 204
Duplicated Lines 0 %

Coupling/Cohesion

Components 9
Dependencies 9

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 12
lcom 9
cbo 9
dl 0
loc 204
rs 7.1428
c 0
b 0
f 0
ccs 33
cts 33
cp 1

12 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 21 1
A getUserAgentTracker() 0 4 1
A trackPath() 0 4 1
A trackUser() 0 4 1
A trackDevice() 0 4 1
A trackGeoIp() 0 4 1
A trackUserAgent() 0 4 1
A trackReferer() 0 4 1
A trackCookie() 0 4 1
A trackLanguage() 0 4 1
A trackSession() 0 4 1
A checkSessionData() 0 4 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\RefererTracker */
33
    private $refererTracker;
34
35
    /** @var Contracts\Trackers\SessionTracker */
36
    private $sessionTracker;
37
38
    /** @var Contracts\Trackers\UserAgentTracker */
39
    private $userAgentTracker;
40
41
    /** @var Contracts\Trackers\UserTracker */
42
    private $userTracker;
43
44
    /* ------------------------------------------------------------------------------------------------
45
     |  Constructor
46
     | ------------------------------------------------------------------------------------------------
47
     */
48
    /**
49
     * TrackingManager constructor.
50
     *
51
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\CookieTracker     $cookieTracker
52
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\DeviceTracker     $deviceTracker
53
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\GeoIpTracker      $geoIpTracker
54
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\LanguageTracker   $languageTracker
55
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\PathTracker       $pathTracker
56
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\RefererTracker    $refererTracker
57
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\SessionTracker    $sessionTracker
58
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\UserAgentTracker  $userAgentTracker
59
     * @param  \Arcanedev\LaravelTracker\Contracts\Trackers\UserTracker       $userTracker
60
     */
61 24
    public function __construct(
62
        Contracts\Trackers\CookieTracker $cookieTracker,
63
        Contracts\Trackers\DeviceTracker $deviceTracker,
64
        Contracts\Trackers\GeoIpTracker $geoIpTracker,
65
        Contracts\Trackers\LanguageTracker $languageTracker,
66
        Contracts\Trackers\PathTracker $pathTracker,
67
        Contracts\Trackers\RefererTracker $refererTracker,
68
        Contracts\Trackers\SessionTracker $sessionTracker,
69
        Contracts\Trackers\UserAgentTracker $userAgentTracker,
70
        Contracts\Trackers\UserTracker $userTracker
71
    ) {
72 24
        $this->cookieTracker    = $cookieTracker;
73 24
        $this->deviceTracker    = $deviceTracker;
74 24
        $this->geoIpTracker     = $geoIpTracker;
75 24
        $this->languageTracker  = $languageTracker;
76 24
        $this->pathTracker      = $pathTracker;
77 24
        $this->refererTracker   = $refererTracker;
78 24
        $this->sessionTracker   = $sessionTracker;
79 24
        $this->userAgentTracker = $userAgentTracker;
80 24
        $this->userTracker      = $userTracker;
81 24
    }
82
83
    /* ------------------------------------------------------------------------------------------------
84
     |  Getters & Setters
85
     | ------------------------------------------------------------------------------------------------
86
     */
87
    /**
88
     * Get the user agent tracker.
89
     *
90
     * @return Contracts\Trackers\UserAgentTracker
91
     */
92 6
    public function getUserAgentTracker()
93
    {
94 6
        return $this->userAgentTracker;
95
    }
96
97
    /* ------------------------------------------------------------------------------------------------
98
     |  Main Functions
99
     | ------------------------------------------------------------------------------------------------
100
     */
101
    /**
102
     * Track the path.
103
     *
104
     * @param  string  $path
105
     *
106
     * @return int
107
     */
108 6
    public function trackPath($path)
109
    {
110 6
        return $this->pathTracker->track($path);
111
    }
112
113
    /**
114
     * Track the user.
115
     *
116
     * @return int|null
117
     */
118 6
    public function trackUser()
119
    {
120 6
        return $this->userTracker->track();
121
    }
122
123
    /**
124
     * Track the device.
125
     *
126
     * @return int
127
     */
128 6
    public function trackDevice()
129
    {
130 6
        return $this->deviceTracker->track();
131
    }
132
133
    /**
134
     * Track the ip address.
135
     *
136
     * @param  string  $ipAddress
137
     *
138
     * @return int|null
139
     */
140 6
    public function trackGeoIp($ipAddress)
141
    {
142 6
        return $this->geoIpTracker->track($ipAddress);
143
    }
144
145
    /**
146
     * Track the user agent.
147
     *
148
     * @return int
149
     */
150 6
    public function trackUserAgent()
151
    {
152 6
        return $this->getUserAgentTracker()->track();
153
    }
154
155
    /**
156
     * Track the referer.
157
     *
158
     * @param  string  $refererUrl
159
     * @param  string  $pageUrl
160
     *
161
     * @return int|null
162
     */
163 6
    public function trackReferer($refererUrl, $pageUrl)
164
    {
165 6
        return $this->refererTracker->track($refererUrl, $pageUrl);
166
    }
167
168
    /**
169
     * Track the cookie.
170
     *
171
     * @param  mixed  $cookie
172
     *
173
     * @return int|null
174
     */
175 6
    public function trackCookie($cookie)
176
    {
177 6
        return $this->cookieTracker->track($cookie);
178
    }
179
180
    /**
181
     * Track the language.
182
     *
183
     * @return int
184
     */
185 6
    public function trackLanguage()
186
    {
187 6
        return $this->languageTracker->track();
188
    }
189
190
    /**
191
     * Track the session.
192
     *
193
     * @param  array  $data
194
     *
195
     * @return int
196
     */
197 6
    public function trackSession(array $data)
198
    {
199 6
        return $this->sessionTracker->track($data);
200
    }
201
202
    /**
203
     * Check the session data.
204
     *
205
     * @param  array  $data
206
     * @param  array  $currentData
207
     *
208
     * @return array
209
     */
210 6
    public function checkSessionData(array $data, array $currentData)
211
    {
212 6
        return $this->sessionTracker->checkData($data, $currentData);
213
    }
214
}
215