Completed
Push — master ( 77fa1d...4c135b )
by ARCANEDEV
08:34
created

TrackingManager::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 23
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 1

Importance

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