protected ModulesListForm::buildModuleList(FormStateInterface $form_state)
Helper function for building a list of modules to install.
Parameters
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array An array of modules to install and their dependencies.
File
- core/modules/system/src/Form/ModulesListForm.php, line 359
Class
- ModulesListForm
- Provides module installation interface.
Namespace
Drupal\system\Form
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | protected function buildModuleList(FormStateInterface $form_state ) { $packages = $form_state ->getValue( 'modules' ); // Build a list of modules to install. $modules = array ( 'install' => array (), 'dependencies' => array (), 'experimental' => [], ); // Required modules have to be installed. // @todo This should really not be handled here. $data = system_rebuild_module_data(); foreach ( $data as $name => $module ) { if (! empty ( $module ->required) && ! $this ->moduleHandler->moduleExists( $name )) { $modules [ 'install' ][ $name ] = $module ->info[ 'name' ]; } } // First, build a list of all modules that were selected. foreach ( $packages as $package => $items ) { foreach ( $items as $name => $checkbox ) { if ( $checkbox [ 'enable' ] && ! $this ->moduleHandler->moduleExists( $name )) { $modules [ 'install' ][ $name ] = $data [ $name ]->info[ 'name' ]; // Identify experimental modules. if ( $package == 'Core (Experimental)' ) { $modules [ 'experimental' ][ $name ] = $data [ $name ]->info[ 'name' ]; } } } } // Add all dependencies to a list. while (list( $module ) = each( $modules [ 'install' ])) { foreach ( array_keys ( $data [ $module ]->requires) as $dependency ) { if (!isset( $modules [ 'install' ][ $dependency ]) && ! $this ->moduleHandler->moduleExists( $dependency )) { $modules [ 'dependencies' ][ $module ][ $dependency ] = $data [ $dependency ]->info[ 'name' ]; $modules [ 'install' ][ $dependency ] = $data [ $dependency ]->info[ 'name' ]; // Identify experimental modules. if ( $data [ $dependency ]->info[ 'package' ] == 'Core (Experimental)' ) { $modules [ 'experimental' ][ $dependency ] = $data [ $dependency ]->info[ 'name' ]; } } } } // Make sure the install API is available. include_once DRUPAL_ROOT . '/core/includes/install.inc' ; // Invoke hook_requirements('install'). If failures are detected, make // sure the dependent modules aren't installed either. foreach ( array_keys ( $modules [ 'install' ]) as $module ) { if (!drupal_check_module( $module )) { unset( $modules [ 'install' ][ $module ]); foreach ( array_keys ( $data [ $module ]->required_by) as $dependent ) { unset( $modules [ 'install' ][ $dependent ]); unset( $modules [ 'dependencies' ][ $dependent ]); } } } return $modules ; } |
Please login to continue.