You are here

public function FeaturesManager::setPackageBundleNames in Features 8.3

Same name and namespace in other branches
  1. 8.4 src/FeaturesManager.php \Drupal\features\FeaturesManager::setPackageBundleNames()

Adds the optional bundle prefix to package machine names.

Parameters

\Drupal\features\FeaturesBundleInterface $bundle: The bundle used for the generation.

string[] &$package_names: (optional) Array of package names, passed by reference.

Overrides FeaturesManagerInterface::setPackageBundleNames

File

src/FeaturesManager.php, line 723

Class

FeaturesManager
The FeaturesManager provides helper functions for building packages.

Namespace

Drupal\features

Code

public function setPackageBundleNames(FeaturesBundleInterface $bundle, array &$package_names = []) {
  $this->packagesPrefixed = TRUE;
  if (!$bundle
    ->isDefault()) {
    $new_package_names = [];

    // Assign the selected bundle to the exports.
    $packages = $this
      ->getPackages();
    if (empty($package_names)) {
      $package_names = array_keys($packages);
    }
    foreach ($package_names as $package_name) {

      // Rename package to use bundle prefix.
      $package = $packages[$package_name];

      // The install profile doesn't need renaming.
      if ($package
        ->getType() != 'profile') {
        unset($packages[$package_name]);
        $package
          ->setMachineName($bundle
          ->getFullName($package
          ->getMachineName()));
        $packages[$package
          ->getMachineName()] = $package;
      }

      // Set the bundle machine name.
      $packages[$package
        ->getMachineName()]
        ->setBundle($bundle
        ->getMachineName());
      $new_package_names[] = $package
        ->getMachineName();
    }
    $this
      ->setPackages($packages);
    $package_names = $new_package_names;
  }
}