public function FeaturesAssignmentAlter::assignPackages in Features 8.4
Same name and namespace in other branches
- 8.3 src/Plugin/FeaturesAssignment/FeaturesAssignmentAlter.php \Drupal\features\Plugin\FeaturesAssignment\FeaturesAssignmentAlter::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/ FeaturesAssignmentAlter.php, line 29
Class
- FeaturesAssignmentAlter
- Class for excluding configuration from packages.
Namespace
Drupal\features\Plugin\FeaturesAssignmentCode
public function assignPackages($force = FALSE) {
$current_bundle = $this->assigner
->getBundle();
$settings = $current_bundle
->getAssignmentSettings($this
->getPluginId());
// Alter configuration items.
if ($settings['core'] || $settings['uuid'] || $settings['user_permissions']) {
$config_collection = $this->featuresManager
->getConfigCollection();
foreach ($config_collection as &$config) {
$data = $config
->getData();
if ($settings['core']) {
unset($data['_core']);
}
// Unset UUID for configuration entities.
if ($settings['uuid'] && $config
->getType() !== FeaturesManagerInterface::SYSTEM_SIMPLE_CONFIG) {
unset($data['uuid']);
}
// Unset permissions for user roles. Doing so facilitates packaging
// roles that may have permissions that relate to multiple packages.
if ($settings['user_permissions'] && $config
->getType() == 'user_role') {
// Unset and not empty permissions data to prevent loss of configured
// role permissions in the event of a feature revert.
unset($data['permissions']);
}
$config
->setData($data);
}
// Clean up the $config pass by reference.
unset($config);
// Register the updated data.
$this->featuresManager
->setConfigCollection($config_collection);
}
}