| Conditions | 15 | 
| Paths | 10 | 
| Total Lines | 104 | 
| 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  | 
            ||
| 156 | private function generateSubsections(): array  | 
            ||
| 157 |     { | 
            ||
| 158 | // Init reg forms count.  | 
            ||
| 159 | $this->reg_form_count = 0;  | 
            ||
| 160 | |||
| 161 | $primary_registrant = null;  | 
            ||
| 162 | // autoload Line_Item_Display classes  | 
            ||
| 163 | EEH_Autoloader::register_line_item_display_autoloaders();  | 
            ||
| 164 | $Line_Item_Display = new EE_Line_Item_Display();  | 
            ||
| 165 | // calculate taxes  | 
            ||
| 166 | $Line_Item_Display->display_line_item(  | 
            ||
| 167 | $this->reg_step->checkout->cart->get_grand_total(),  | 
            ||
| 168 | ['set_tax_rate' => true]  | 
            ||
| 169 | );  | 
            ||
| 170 | $extra_inputs_section = $this->reg_step->reg_step_hidden_inputs();  | 
            ||
| 171 | $this->addPrivacyConsentCheckbox($extra_inputs_section);  | 
            ||
| 172 | $subsections = [  | 
            ||
| 173 | 'default_hidden_inputs' => $extra_inputs_section,  | 
            ||
| 174 | ];  | 
            ||
| 175 | |||
| 176 | $this->template_args = [  | 
            ||
| 177 | 'revisit' => $this->reg_step->checkout->revisit,  | 
            ||
| 178 | 'registrations' => [],  | 
            ||
| 179 | 'ticket_count' => [],  | 
            ||
| 180 | ];  | 
            ||
| 181 | // grab the saved registrations from the transaction  | 
            ||
| 182 | $registrations = $this->reg_step->checkout->transaction->registrations(  | 
            ||
| 183 | $this->reg_step->checkout->reg_cache_where_params  | 
            ||
| 184 | );  | 
            ||
| 185 |         if ($registrations) { | 
            ||
| 
                                                                                                    
                        
                         | 
                |||
| 186 |             foreach ($registrations as $registration) { | 
            ||
| 187 | // can this registration be processed during this visit ?  | 
            ||
| 188 | if (  | 
            ||
| 189 | $registration instanceof EE_Registration  | 
            ||
| 190 | && $this->reg_step->checkout->visit_allows_processing_of_this_registration($registration)  | 
            ||
| 191 |                 ) { | 
            ||
| 192 | $reg_url_link = $registration->reg_url_link();  | 
            ||
| 193 | /** @var RegistrantForm $registrant_form */  | 
            ||
| 194 | $registrant_form = LoaderFactory::getNew(  | 
            ||
| 195 | RegistrantForm::class,  | 
            ||
| 196 | [  | 
            ||
| 197 | $registration,  | 
            ||
| 198 | $this->reg_step->checkout->admin_request,  | 
            ||
| 199 | $this->reg_config->copyAttendeeInfo(),  | 
            ||
| 200 | [$this, 'enablePrintCopyInfo'],  | 
            ||
| 201 | ]  | 
            ||
| 202 | );  | 
            ||
| 203 | // Increment the reg forms number if form is valid.  | 
            ||
| 204 |                     if ($registrant_form->hasQuestions()) { | 
            ||
| 205 | $this->reg_form_count++;  | 
            ||
| 206 | $subsections[ $reg_url_link ] = $registrant_form;  | 
            ||
| 207 |                     } else { | 
            ||
| 208 | // or just add a blank section if there are no questions  | 
            ||
| 209 | $subsections[ $reg_url_link ] = new EE_Form_Section_HTML();  | 
            ||
| 210 | }  | 
            ||
| 211 | |||
| 212 | $this->template_args['registrations'][ $reg_url_link ] = $registration;  | 
            ||
| 213 | $this->template_args['ticket_count'][ $registration->ticket()->ID() ] = isset(  | 
            ||
| 214 | $this->template_args['ticket_count'][ $registration->ticket()->ID() ]  | 
            ||
| 215 | )  | 
            ||
| 216 | ? $this->template_args['ticket_count'][ $registration->ticket()->ID() ] + 1  | 
            ||
| 217 | : 1;  | 
            ||
| 218 | $ticket_line_item = EEH_Line_Item::get_line_items_by_object_type_and_IDs(  | 
            ||
| 219 | $this->reg_step->checkout->cart->get_grand_total(),  | 
            ||
| 220 | 'Ticket',  | 
            ||
| 221 | [$registration->ticket()->ID()]  | 
            ||
| 222 | );  | 
            ||
| 223 | $ticket_line_item = is_array($ticket_line_item)  | 
            ||
| 224 | ? reset($ticket_line_item)  | 
            ||
| 225 | : $ticket_line_item;  | 
            ||
| 226 | $this->template_args['ticket_line_item'][ $registration->ticket()->ID() ] =  | 
            ||
| 227 | $Line_Item_Display->display_line_item($ticket_line_item);  | 
            ||
| 228 |                     if ($registration->is_primary_registrant()) { | 
            ||
| 229 | $primary_registrant = $reg_url_link;  | 
            ||
| 230 | }  | 
            ||
| 231 | }  | 
            ||
| 232 | }  | 
            ||
| 233 | |||
| 234 |             if ($primary_registrant && count($registrations) > 1) { | 
            ||
| 235 | if (  | 
            ||
| 236 | isset($subsections[ $primary_registrant ])  | 
            ||
| 237 | && $subsections[ $primary_registrant ] instanceof EE_Form_Section_Proper  | 
            ||
| 238 |                 ) { | 
            ||
| 239 | $copy_options['spco_copy_attendee_chk'] = $this->print_copy_info  | 
            ||
| 240 | ? new CopyAttendeeInfoForm($registrations, $this->reg_step->slug())  | 
            ||
| 241 | : new AutoCopyAttendeeInfoForm($this->reg_step->slug());  | 
            ||
| 242 | $subsections[ $primary_registrant ]->add_subsections(  | 
            ||
| 243 | $copy_options,  | 
            ||
| 244 | 'primary_registrant',  | 
            ||
| 245 | false  | 
            ||
| 246 | );  | 
            ||
| 247 | }  | 
            ||
| 248 | }  | 
            ||
| 249 | }  | 
            ||
| 250 | |||
| 251 | // Set the registration form template (default: one form per ticket details table).  | 
            ||
| 252 | // We decide the template to used based on the number of forms.  | 
            ||
| 253 | $template = $this->reg_form_count > 1  | 
            ||
| 254 | ? SPCO_REG_STEPS_PATH . $this->reg_step->slug() . '/attendee_info_main.template.php'  | 
            ||
| 255 | : SPCO_REG_STEPS_PATH . $this->reg_step->slug() . '/attendee_info_single.template.php';  | 
            ||
| 256 | $this->reg_step->setTemplate($template);  | 
            ||
| 257 | |||
| 258 | return $subsections;  | 
            ||
| 259 | }  | 
            ||
| 260 | |||
| 283 | 
This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.
Consider making the comparison explicit by using
empty(..)or! empty(...)instead.