function _install_select_profile

Same name in other branches
  1. 9 core/includes/install.core.inc \_install_select_profile()
  2. 8.9.x core/includes/install.core.inc \_install_select_profile()
  3. 10 core/includes/install.core.inc \_install_select_profile()
  4. 11.x core/includes/install.core.inc \_install_select_profile()

Selects an installation profile.

A profile will be selected if:

  • Only one profile is available,
  • A profile was submitted through $_POST,
  • Exactly one of the profiles is marked as "exclusive".

If multiple profiles are marked as "exclusive" then no profile will be selected.

Parameters

array $profiles: 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.

1 call to _install_select_profile()
install_select_profile in includes/install.core.inc
Selects which profile to install.

File

includes/install.core.inc, line 1096

Code

function _install_select_profile($profiles) {
    if (sizeof($profiles) == 0) {
        throw new Exception(install_no_profile_error());
    }
    // Don't need to choose profile if only one available.
    if (sizeof($profiles) == 1) {
        $profile = array_pop($profiles);
        // TODO: is this right?
        require_once DRUPAL_ROOT . '/' . $profile->uri;
        return $profile->name;
    }
    else {
        foreach ($profiles as $profile) {
            if (!empty($_POST['profile']) && $_POST['profile'] == $profile->name) {
                return $profile->name;
            }
        }
    }
    // Check for a profile marked as "exclusive" and ensure that only one
    // profile is marked as such.
    $exclusive_profile = NULL;
    foreach ($profiles as $profile) {
        $profile_info = install_profile_info($profile->name);
        if (!empty($profile_info['exclusive'])) {
            if (empty($exclusive_profile)) {
                $exclusive_profile = $profile->name;
            }
            else {
                // We found a second "exclusive" profile. There's no way to choose
                // between them, so we ignore the property.
                return;
            }
        }
    }
    return $exclusive_profile;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.