You are here

FeaturesAssignmentNamespace.php in Features 8.4

Same filename and directory in other branches
  1. 8.3 src/Plugin/FeaturesAssignment/FeaturesAssignmentNamespace.php

File

src/Plugin/FeaturesAssignment/FeaturesAssignmentNamespace.php
View source
<?php

namespace Drupal\features\Plugin\FeaturesAssignment;

use Drupal\features\FeaturesAssignmentMethodBase;

/**
 * Class for assigning configuration to packages based on namespaces.
 *
 * @Plugin(
 *   id = "namespace",
 *   weight = 0,
 *   name = @Translation("Namespace"),
 *   description = @Translation("Add config to packages that contain that package's machine name."),
 * )
 */
class FeaturesAssignmentNamespace extends FeaturesAssignmentMethodBase {

  /**
   * {@inheritdoc}
   */
  public function assignPackages($force = FALSE) {
    $packages = $this->featuresManager
      ->getPackages();
    $current_bundle = $this->assigner
      ->getBundle();

    // Build an array of patterns.
    // Keys are short names while values are full machine names.
    // We need full names because existing packages may receive machine names
    // prefixed with a bundle name.
    $patterns = [];
    foreach ($packages as $package) {
      $machine_name = $package
        ->getMachineName();
      $pattern = $current_bundle
        ->getShortName($machine_name);
      $patterns[$pattern] = $machine_name;
    }
    $this->featuresManager
      ->assignConfigByPattern($patterns);
  }

}

Classes

Namesort descending Description
FeaturesAssignmentNamespace Class for assigning configuration to packages based on namespaces.