You are here

class FeaturesAssignmentBaseType in Features 8.4

Same name and namespace in other branches
  1. 8.3 src/Plugin/FeaturesAssignment/FeaturesAssignmentBaseType.php \Drupal\features\Plugin\FeaturesAssignment\FeaturesAssignmentBaseType

Class for assigning configuration to packages based on entity types.

Plugin annotation


@Plugin(
  id = "base",
  weight = -2,
  name = @Translation("Base type"),
  description = @Translation("Use designated types of configuration as the base for configuration package modules. For example, if content types are selected as a base type, a package will be generated for each content type and will include all configuration dependent on that content type."),
  config_route_name = "features.assignment_base",
  default_settings = {
    "types" = {
      "config" = {},
      "content" = {}
    }
  }
)

Hierarchy

Expanded class hierarchy of FeaturesAssignmentBaseType

File

src/Plugin/FeaturesAssignment/FeaturesAssignmentBaseType.php, line 25

Namespace

Drupal\features\Plugin\FeaturesAssignment
View source
class FeaturesAssignmentBaseType extends FeaturesAssignmentMethodBase {

  /**
   * {@inheritdoc}
   */
  public function assignPackages($force = FALSE) {
    $current_bundle = $this->assigner
      ->getBundle();
    $settings = $current_bundle
      ->getAssignmentSettings($this
      ->getPluginId());
    $config_base_types = $settings['types']['config'];
    $config_types = $this->featuresManager
      ->listConfigTypes();
    $config_collection = $this->featuresManager
      ->getConfigCollection();
    foreach ($config_collection as $item_name => $item) {
      if (in_array($item
        ->getType(), $config_base_types)) {
        if (is_null($this->featuresManager
          ->findPackage($item
          ->getShortName())) && !$item
          ->getPackage()) {
          $description = $this
            ->t('Provides @label @type and related configuration.', [
            '@label' => $item
              ->getLabel(),
            '@type' => mb_strtolower($config_types[$item
              ->getType()]),
          ]);
          if (isset($item
            ->getData()['description'])) {
            $description .= ' ' . $item
              ->getData()['description'];
          }
          $this->featuresManager
            ->initPackage($item
            ->getShortName(), $item
            ->getLabel(), $description, 'module', $current_bundle);

          // Update list with the package we just added.
          try {
            $this->featuresManager
              ->assignConfigPackage($item
              ->getShortName(), [
              $item_name,
            ]);
          } catch (\Exception $exception) {
            \Drupal::logger('features')
              ->error($exception
              ->getMessage());
          }
        }
      }
    }
    $entity_types = $this->entityTypeManager
      ->getDefinitions();
    $content_base_types = $settings['types']['content'];
    foreach ($content_base_types as $entity_type_id) {
      if (!isset($packages[$entity_type_id]) && isset($entity_types[$entity_type_id])) {
        $label = $entity_types[$entity_type_id]
          ->getLabel();
        $description = $this
          ->t('Provide @label related configuration.', [
          '@label' => $label,
        ]);
        $this->featuresManager
          ->initPackage($entity_type_id, $label, $description, 'module', $current_bundle);
      }
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
FeaturesAssignmentBaseType::assignPackages public function Performs package assignment. Overrides FeaturesAssignmentMethodInterface::assignPackages
FeaturesAssignmentMethodBase::$assigner protected property The features assigner.
FeaturesAssignmentMethodBase::$configFactory protected property The configuration factory.
FeaturesAssignmentMethodBase::$entityTypeManager protected property The entity type manager.
FeaturesAssignmentMethodBase::$featuresManager protected property The features manager.
FeaturesAssignmentMethodBase::assignPackageByConfigTypes protected function Assigns configuration of the types specified in a setting to a package.
FeaturesAssignmentMethodBase::assignSubdirectoryByConfigTypes protected function Assigns a given subdirectory to configuration of specified types.
FeaturesAssignmentMethodBase::setAssigner public function Injects the features assigner. Overrides FeaturesAssignmentMethodInterface::setAssigner
FeaturesAssignmentMethodBase::setConfigFactory public function Injects the configuration factory. Overrides FeaturesAssignmentMethodInterface::setConfigFactory
FeaturesAssignmentMethodBase::setEntityTypeManager public function Injects the entity manager. Overrides FeaturesAssignmentMethodInterface::setEntityTypeManager
FeaturesAssignmentMethodBase::setfeaturesManager public function
FeaturesAssignmentMethodInterface::setFeaturesManager public function Injects the features manager.
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
PluginBase::__construct public function Constructs a \Drupal\Component\Plugin\PluginBase object. 92
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.