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

TrackingManager::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 21
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 21
rs 9.3142
c 0
b 0
f 0
ccs 11
cts 11
cp 1
cc 1
eloc 19
nc 1
nop 9
crap 1

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

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