FeaturesAssignmentMethodBase.php in Features 8.4
File
src/FeaturesAssignmentMethodBase.php
View source
<?php
namespace Drupal\features;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Plugin\PluginBase;
abstract class FeaturesAssignmentMethodBase extends PluginBase implements FeaturesAssignmentMethodInterface {
protected $featuresManager;
protected $assigner;
protected $entityTypeManager;
protected $configFactory;
public function setfeaturesManager(FeaturesManagerInterface $features_manager) {
$this->featuresManager = $features_manager;
}
public function setAssigner(FeaturesAssignerInterface $assigner) {
$this->assigner = $assigner;
}
public function setEntityTypeManager(EntityTypeManagerInterface $entity_type_manager) {
$this->entityTypeManager = $entity_type_manager;
}
public function setConfigFactory(ConfigFactoryInterface $config_factory) {
$this->configFactory = $config_factory;
}
protected function assignPackageByConfigTypes($machine_name, $force = FALSE) {
$current_bundle = $this->assigner
->getBundle();
$settings = $current_bundle
->getAssignmentSettings($this
->getPluginId());
$types = $settings['types']['config'];
$config_collection = $this->featuresManager
->getConfigCollection();
foreach ($config_collection as $item_name => $item) {
if (in_array($item
->getType(), $types) && !$item
->isProviderExcluded()) {
try {
$this->featuresManager
->assignConfigPackage($machine_name, [
$item_name,
]);
} catch (\Exception $exception) {
\Drupal::logger('features')
->error($exception
->getMessage());
}
}
}
}
protected function assignSubdirectoryByConfigTypes($subdirectory) {
$current_bundle = $this->assigner
->getBundle();
$settings = $current_bundle
->getAssignmentSettings($this
->getPluginId());
$types = $settings['types']['config'];
if (!empty($types)) {
$config_collection = $this->featuresManager
->getConfigCollection();
foreach ($config_collection as &$item) {
if (in_array($item
->getType(), $types)) {
$item
->setSubdirectory($subdirectory);
}
}
unset($item);
$this->featuresManager
->setConfigCollection($config_collection);
}
}
}