Completed
Push — master ( f76772...1672bb )
by ARCANEDEV
07:47
created

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