| Conditions | 27 | 
| Paths | > 20000 | 
| Total Lines | 119 | 
| Code Lines | 73 | 
| Lines | 0 | 
| Ratio | 0 % | 
| 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  | 
            ||
| 91 | protected function &getListingResults(\Base $f3, \FFCMS\Mappers\Mapper $m, string $users_uuid = null): array  | 
            ||
| 92 |     { | 
            ||
| 93 | // set up paging limits  | 
            ||
| 94 | $minPerPage = 5;  | 
            ||
| 95 | $maxPerPage = 1024;  | 
            ||
| 96 |         $perPage = (int) $f3->get('REQUEST.per_page'); | 
            ||
| 97 |         if ($perPage < $minPerPage) { | 
            ||
| 98 | $perPage = $minPerPage;  | 
            ||
| 99 | }  | 
            ||
| 100 |         if ($perPage > $maxPerPage) { | 
            ||
| 101 | $perPage = $maxPerPage;  | 
            ||
| 102 | }  | 
            ||
| 103 | |||
| 104 |         $page = $f3->get('REQUEST.page'); | 
            ||
| 105 |         if ($page < 1) { | 
            ||
| 106 | $page = 1;  | 
            ||
| 107 | }  | 
            ||
| 108 | |||
| 109 | // fetch data (paging is 0 based)  | 
            ||
| 110 | $allFields = $m->fields();  | 
            ||
| 111 | |||
| 112 | // validate order field  | 
            ||
| 113 |         $order = self::checkOrderField($f3->get('REQUEST.order'), $allFields); | 
            ||
| 114 | |||
| 115 | // validated fields to return  | 
            ||
| 116 |         $validFields = self::checkFieldsExist([$f3->get('REQUEST.fields')], $allFields); | 
            ||
| 117 |         $fields = empty($validFields['fields']) ? join(',', $allFields) : $validFields['fields']; | 
            ||
| 118 | |||
| 119 | // count rows  | 
            ||
| 120 | $data = [];  | 
            ||
| 121 | |||
| 122 | // count rows  | 
            ||
| 123 |         $isAdmin = $f3->get('isAdmin'); | 
            ||
| 124 | $rows = 0;  | 
            ||
| 125 |         if  (in_array('users_uuid', $allFields) && !empty($users_uuid)) { | 
            ||
| 126 | $rows = $m->count(['users_uuid = ?', $users_uuid]);  | 
            ||
| 127 |         } elseif ($isAdmin && empty($users_uuid)) { | 
            ||
| 128 | $rows = $m->count();  | 
            ||
| 129 | }  | 
            ||
| 130 |         if ($rows < 1) { | 
            ||
| 131 | return $data;  | 
            ||
| 132 | }  | 
            ||
| 133 | |||
| 134 | // if fewer results than per page, set per_page  | 
            ||
| 135 |         if ($page == 1 && $perPage > $rows) { | 
            ||
| 136 | $perPage = $rows;  | 
            ||
| 137 | }  | 
            ||
| 138 | |||
| 139 | $pagination = [];  | 
            ||
| 140 | $pagination['count'] = ceil($rows / $perPage);  | 
            ||
| 141 | |||
| 142 | // too high page number?  | 
            ||
| 143 |         if ($page > $pagination['count']) { | 
            ||
| 144 | $page = $pagination['count'];  | 
            ||
| 145 | }  | 
            ||
| 146 | |||
| 147 | // set up page URLs  | 
            ||
| 148 |         $url = $f3->get('PATH'); | 
            ||
| 149 | $urlParams = [  | 
            ||
| 150 | 'per_page' => $perPage,  | 
            ||
| 151 | ];  | 
            ||
| 152 |         if (!empty($order)) { | 
            ||
| 153 | $urlParams['order'] = $order;  | 
            ||
| 154 | }  | 
            ||
| 155 |         if (!empty($fields)) { | 
            ||
| 156 | $urlParams['fields'] = $fields;  | 
            ||
| 157 | }  | 
            ||
| 158 | ksort($urlParams);  | 
            ||
| 159 | |||
| 160 | // next/previous page url  | 
            ||
| 161 | $prevPage = (1 > $page - 1 ) ? null : $page - 1;  | 
            ||
| 162 | $nextPage = (1 + $page > $pagination['count']) ? null : $page + 1;  | 
            ||
| 163 | |||
| 164 | $resultsFrom = round($page * ($rows / $pagination['count'])) - $perPage + 1;  | 
            ||
| 165 | $resultsTo = $resultsFrom + $perPage - 1;  | 
            ||
| 166 | |||
| 167 | // return data  | 
            ||
| 168 | $data['pagination'] = [  | 
            ||
| 169 | 'url_base' => $this->url($url, $urlParams),  | 
            ||
| 170 | 'url_current' => $this->url($url, $urlParams + ['page' => $page]),  | 
            ||
| 171 | 'url_first' => $this->url($url, $urlParams + ['page' => 1]),  | 
            ||
| 172 | 'url_last' => $this->url($url, $urlParams + ['page' => $pagination['count']]),  | 
            ||
| 173 | 'url_next' => (null == $nextPage) ? null : $this->url($url, $urlParams + ['page' => $nextPage]),  | 
            ||
| 174 | 'url_previous' => (null == $prevPage) ? null : $this->url($url, $urlParams + ['page' => $prevPage]),  | 
            ||
| 175 | 'results' => $rows,  | 
            ||
| 176 | 'results_from' => $resultsFrom,  | 
            ||
| 177 | 'results_to' => $resultsTo,  | 
            ||
| 178 | 'per_page' => $perPage,  | 
            ||
| 179 | 'pages' => $pagination['count'],  | 
            ||
| 180 | 'page' => $page,  | 
            ||
| 181 | 'object' => $m->table(),  | 
            ||
| 182 |             'fields' => preg_split("/[,]/", $fields), | 
            ||
| 183 |             'view' => $f3->get('REQUEST.view') | 
            ||
| 184 | ];  | 
            ||
| 185 | |||
| 186 | |||
| 187 | // fetch results  | 
            ||
| 188 |         if ($isAdmin && empty($users_uuid)) { | 
            ||
| 189 | $m->load(null, [  | 
            ||
| 190 | 'order' => $order,  | 
            ||
| 191 | 'offset' => (1 == $page) ? 0 : ($page - 1) * $perPage,  | 
            ||
| 192 | 'limit' => $perPage  | 
            ||
| 193 | ]);  | 
            ||
| 194 |         } else { | 
            ||
| 195 | $m->load(['users_uuid = ?', $users_uuid], [  | 
            ||
| 196 | 'order' => $order,  | 
            ||
| 197 | 'offset' => (1 == $page) ? 0 : ($page - 1) * $perPage,  | 
            ||
| 198 | 'limit' => $perPage  | 
            ||
| 199 | ]);  | 
            ||
| 200 | }  | 
            ||
| 201 | |||
| 202 |         $adminView = $isAdmin || ($isAdmin && 'admin' == $f3->get('REQUEST.view')); | 
            ||
| 203 |         do { | 
            ||
| 204 | $data['objects'][] = $adminView ? $m->castFields($fields) : $m->exportArray($fields);  | 
            ||
| 205 | }  | 
            ||
| 206 | while ($m->skip());  | 
            ||
| 207 | |||
| 208 | return $data;  | 
            ||
| 209 | }  | 
            ||
| 210 | |||
| 367 |