public function FeaturesAssignmentBaseType::assignPackages in Features 8.4
Same name and namespace in other branches
- 8.3 src/Plugin/FeaturesAssignment/FeaturesAssignmentBaseType.php \Drupal\features\Plugin\FeaturesAssignment\FeaturesAssignmentBaseType::assignPackages()
Performs package assignment.
Parameters
bool $force: (optional) If TRUE, assign config regardless of restrictions such as it being already assigned to a package.
Overrides FeaturesAssignmentMethodInterface::assignPackages
File
- src/
Plugin/ FeaturesAssignment/ FeaturesAssignmentBaseType.php, line 30
Class
- FeaturesAssignmentBaseType
- Class for assigning configuration to packages based on entity types.
Namespace
Drupal\features\Plugin\FeaturesAssignmentCode
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);
}
}
}