| Conditions | 14 |
| Paths | 672 |
| Total Lines | 183 |
| Code Lines | 125 |
| Lines | 23 |
| Ratio | 12.57 % |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 17 | public function index() |
||
| 18 | { |
||
| 19 | // Visitors |
||
| 20 | $startDate = Carbon::now()->subDays(7); |
||
| 21 | $endDate = Carbon::now()->subDay(); |
||
| 22 | $visitorsData = AnalyticsFacade::performQuery( |
||
| 23 | Period::create($startDate, $endDate), |
||
| 24 | 'ga:sessions,ga:pageviews', |
||
| 25 | [ |
||
| 26 | 'dimensions' => 'ga:date', |
||
| 27 | 'sort' => 'ga:date' |
||
| 28 | ] |
||
| 29 | ); |
||
| 30 | |||
| 31 | $data = []; |
||
| 32 | foreach ($visitorsData->rows as $row) { |
||
| 33 | $row[0] = Carbon::createFromFormat('Ymd', $row[0]); |
||
| 34 | |||
| 35 | array_push($data, $row); |
||
| 36 | } |
||
| 37 | $visitorsData->rows = array_reverse($data); |
||
| 38 | |||
| 39 | // Browsers |
||
| 40 | $startDate = Carbon::create(2014, 07, 01); |
||
| 41 | $browsersData = AnalyticsFacade::performQuery( |
||
| 42 | Period::create($startDate, $endDate), |
||
| 43 | 'ga:pageviews', |
||
| 44 | [ |
||
| 45 | 'dimensions' => 'ga:browser', |
||
| 46 | 'sort' => 'ga:pageviews', |
||
| 47 | 'filters' => 'ga:browser==Chrome,' |
||
| 48 | .'ga:browser==Firefox,' |
||
| 49 | .'ga:browser==Internet Explorer,' |
||
| 50 | .'ga:browser==Safari,' |
||
| 51 | .'ga:browser==Opera' |
||
| 52 | ] |
||
| 53 | ); |
||
| 54 | |||
| 55 | $data = []; |
||
| 56 | foreach ($browsersData->rows as $browser) { |
||
| 57 | $percent = round(($browser[1] * 100) / $browsersData->totalsForAllResults['ga:pageviews'], 1); |
||
| 58 | |||
| 59 | switch ($browser[0]) { |
||
| 60 | case 'Chrome': |
||
| 61 | $color = '#00acac'; |
||
| 62 | break; |
||
| 63 | case 'Firefox': |
||
| 64 | $color = '#f4645f'; |
||
| 65 | break; |
||
| 66 | case 'Safari': |
||
| 67 | $color = '#727cb6'; |
||
| 68 | break; |
||
| 69 | case 'Opera': |
||
| 70 | $color = '#348fe2'; |
||
| 71 | break; |
||
| 72 | case 'Internet Explorer': |
||
| 73 | $color = '#75e376'; |
||
| 74 | break; |
||
| 75 | default: |
||
| 76 | $color = '#ddd'; |
||
| 77 | } |
||
| 78 | |||
| 79 | $browser[] = $percent; |
||
| 80 | $browser[] = $color; |
||
| 81 | |||
| 82 | array_push($data, $browser); |
||
| 83 | } |
||
| 84 | $browsersData->rows = array_reverse($data); |
||
| 85 | |||
| 86 | // Countries |
||
| 87 | $countriesData = AnalyticsFacade::performQuery( |
||
| 88 | Period::create($startDate, $endDate), |
||
| 89 | 'ga:pageviews,ga:sessions', |
||
| 90 | [ |
||
| 91 | 'dimensions' => 'ga:countryIsoCode', |
||
| 92 | 'sort' => '-ga:pageviews' |
||
| 93 | ] |
||
| 94 | ); |
||
| 95 | |||
| 96 | foreach ($countriesData->rows as $country) { |
||
| 97 | $countries[$country[0]] = [ |
||
| 98 | 'ga:pageviews' => $country[1], |
||
| 99 | 'ga:sessions' => $country[2], |
||
| 100 | 'percent' => round(($country[1] * 100) / $countriesData->totalsForAllResults['ga:pageviews'], 1) |
||
| 101 | ]; |
||
| 102 | |||
| 103 | if (!in_array($country[0], ['ZZ'])) { |
||
| 104 | $countryInstance = country((string)strtolower($country[0])); |
||
| 105 | $countries[$country[0]] += [ |
||
| 106 | 'countryName' => $countryInstance->getName() |
||
| 107 | ]; |
||
| 108 | } else { |
||
| 109 | $countries[$country[0]] += [ |
||
| 110 | 'countryName' => 'Unknown' |
||
| 111 | ]; |
||
| 112 | } |
||
| 113 | } |
||
| 114 | $countriesData->rows = $countries; |
||
| 115 | $topCountries = array_slice($countries, 0, 3); |
||
| 116 | |||
| 117 | // Devices |
||
| 118 | $startDate = Carbon::now()->subMonths(7); |
||
| 119 | $devicesData = AnalyticsFacade::performQuery( |
||
| 120 | Period::create($startDate, $endDate), |
||
| 121 | 'ga:pageviews', |
||
| 122 | [ |
||
| 123 | 'dimensions' => 'ga:mobileDeviceBranding,ga:yearMonth', |
||
| 124 | 'sort' => '-ga:mobileDeviceBranding', |
||
| 125 | 'filters' => 'ga:mobileDeviceBranding==Apple,' |
||
| 126 | .'ga:mobileDeviceBranding==Samsung,' |
||
| 127 | .'ga:mobileDeviceBranding==Google,' |
||
| 128 | .'ga:mobileDeviceBranding==HTC,' |
||
| 129 | .'ga:mobileDeviceBranding==Microsoft' |
||
| 130 | ] |
||
| 131 | ); |
||
| 132 | |||
| 133 | $devicesGraph = []; |
||
| 134 | View Code Duplication | for ($i = 0; $i < 8; $i++) { |
|
| 135 | $date = Carbon::now()->subMonths($i); |
||
| 136 | |||
| 137 | $devicesGraph[$date->format('Ym')] = [ |
||
| 138 | 'period' => $date->format('Y-m-d'), |
||
| 139 | 'Apple' => 0, |
||
| 140 | 'Samsung' => 0, |
||
| 141 | 'Google' => 0, |
||
| 142 | 'HTC' => 0, |
||
| 143 | 'Microsoft' => 0 |
||
| 144 | ]; |
||
| 145 | } |
||
| 146 | |||
| 147 | foreach ($devicesData->rows as $device) { |
||
| 148 | $devicesGraph[$device[1]][$device[0]] = $device[2]; |
||
| 149 | } |
||
| 150 | $devicesGraph = array_reverse($devicesGraph); |
||
| 151 | $devicesGraph = collect($devicesGraph)->toJson(); |
||
| 152 | |||
| 153 | // Operating System |
||
| 154 | $startDate = Carbon::now()->subMonths(7); |
||
| 155 | $operatingSystemData = AnalyticsFacade::performQuery( |
||
| 156 | Period::create($startDate, $endDate), |
||
| 157 | 'ga:pageviews', |
||
| 158 | [ |
||
| 159 | 'dimensions' => 'ga:operatingSystem,ga:yearMonth', |
||
| 160 | 'sort' => '-ga:operatingSystem', |
||
| 161 | 'filters' => 'ga:operatingSystem==Windows,' |
||
| 162 | .'ga:operatingSystem==Macintosh,' |
||
| 163 | .'ga:operatingSystem==Linux,' |
||
| 164 | .'ga:operatingSystem==(not set)' |
||
| 165 | ] |
||
| 166 | ); |
||
| 167 | |||
| 168 | $operatingSystemGraph = []; |
||
| 169 | View Code Duplication | for ($i = 0; $i < 8; $i++) { |
|
| 170 | $date = Carbon::now()->subMonths($i); |
||
| 171 | |||
| 172 | $operatingSystemGraph[$date->format('Ym')] = [ |
||
| 173 | 'period' => $date->format('Y-m-d'), |
||
| 174 | 'Windows' => 0, |
||
| 175 | 'Macintosh' => 0, |
||
| 176 | 'Linux' => 0, |
||
| 177 | '(not set)' => 0 |
||
| 178 | ]; |
||
| 179 | } |
||
| 180 | |||
| 181 | foreach ($operatingSystemData->rows as $os) { |
||
| 182 | $operatingSystemGraph[$os[1]][$os[0]] = $os[2]; |
||
| 183 | } |
||
| 184 | $operatingSystemGraph = array_reverse($operatingSystemGraph); |
||
| 185 | $operatingSystemGraph = collect($operatingSystemGraph)->toJson(); |
||
| 186 | |||
| 187 | return view( |
||
| 188 | 'Admin::page.index', |
||
| 189 | [ |
||
| 190 | 'breadcrumbs' => $this->breadcrumbs, |
||
| 191 | 'visitorsData' => $visitorsData, |
||
| 192 | 'browsersData' => $browsersData, |
||
| 193 | 'countriesData' => $countriesData, |
||
| 194 | 'topCountries' => $topCountries, |
||
| 195 | 'devicesGraph' => $devicesGraph, |
||
| 196 | 'operatingSystemGraph' => $operatingSystemGraph |
||
| 197 | ] |
||
| 198 | ); |
||
| 199 | } |
||
| 200 | } |
||
| 201 |
This check compares the return type specified in the
@returnannotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.