function _install_select_profile in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/includes/install.core.inc \_install_select_profile()
Determines the installation profile to use in the installer.
A profile will be selected in the following order of conditions:
- Only one profile is available.
- A specific profile name is requested in installation parameters:
- For interactive installations via request query parameters.
- For non-interactive installations via install_drupal() settings.
- A discovered profile that is a distribution. If multiple profiles are distributions, then the first discovered profile will be selected.
- Only one visible profile is available.
Parameters
array $install_state: The current installer state, containing a 'profiles' key, which is an associative array of profiles with the machine-readable names as keys.
Return value
The machine-readable name of the selected profile or NULL if no profile was selected.
2 calls to _install_select_profile()
- install_begin_request in core/
includes/ install.core.inc - Begins an installation request, modifying the installation state as needed.
- install_select_profile in core/
includes/ install.core.inc - Selects which profile to install.
File
- core/
includes/ install.core.inc, line 1211 - API functions for installing Drupal.
Code
function _install_select_profile(&$install_state) {
// Don't need to choose profile if only one available.
if (count($install_state['profiles']) == 1) {
return key($install_state['profiles']);
}
if (!empty($install_state['parameters']['profile'])) {
$profile = $install_state['parameters']['profile'];
if (isset($install_state['profiles'][$profile])) {
return $profile;
}
}
// Check for a distribution profile.
foreach ($install_state['profiles'] as $profile) {
$profile_info = install_profile_info($profile
->getName());
if (!empty($profile_info['distribution'])) {
return $profile
->getName();
}
}
// Get all visible (not hidden) profiles.
$visible_profiles = array_filter($install_state['profiles'], function ($profile) {
$profile_info = install_profile_info($profile
->getName());
return !isset($profile_info['hidden']) || !$profile_info['hidden'];
});
if (count($visible_profiles) == 1) {
return key($visible_profiles);
}
}