FeaturesAssignmentBaseType.php in Features 8.4
File
src/Plugin/FeaturesAssignment/FeaturesAssignmentBaseType.php
View source
<?php
namespace Drupal\features\Plugin\FeaturesAssignment;
use Drupal\Component\Utility\Unicode;
use Drupal\features\FeaturesAssignmentMethodBase;
class FeaturesAssignmentBaseType extends FeaturesAssignmentMethodBase {
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);
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);
}
}
}
}