| 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 | $visitorsGraph = [];  | 
            ||
| 32 |         foreach ($visitorsData->rows as $row) { | 
            ||
| 33 |             $row[0] = Carbon::createFromFormat('Ymd', $row[0]); | 
            ||
| 34 | |||
| 35 | array_push($visitorsGraph, $row);  | 
            ||
| 36 | }  | 
            ||
| 37 | $visitorsData->rows = array_reverse($visitorsGraph);  | 
            ||
| 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 | $browsersGraph = [];  | 
            ||
| 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($browsersGraph, $browser);  | 
            ||
| 83 | }  | 
            ||
| 84 | $browsersData->rows = array_reverse($browsersGraph);  | 
            ||
| 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.