/**
  * Assigns configuration of the types specified in a setting to a package.
  *
  * @param string $method_id
  *   The ID of an assignment method.
  * @param string $machine_name
  *   Machine name of the package.
  * @param bool $force
  *   (optional) If TRUE, assign config regardless of restrictions such as it
  *   being already assigned to a package.
  */
 protected function assignPackageByConfigTypes($method_id, $machine_name, $force = FALSE)
 {
     $current_bundle = $this->assigner->getBundle();
     $settings = $current_bundle->getAssignmentSettings($method_id);
     $types = $settings['types']['config'];
     $config_collection = $this->featuresManager->getConfigCollection();
     foreach ($config_collection as $item_name => $item) {
         if (in_array($item['type'], $types) && !isset($item['package'])) {
             try {
                 $this->featuresManager->assignConfigPackage($machine_name, [$item_name]);
             } catch (\Exception $exception) {
                 \Drupal::logger('features')->error($exception->getMessage());
             }
         }
     }
 }
 /**
  * Assigns configuration of the types specified in a setting to a package.
  *
  * @param string $machine_name
  *   Machine name of the package.
  * @param bool $force
  *   (optional) If TRUE, assign config regardless of restrictions such as it
  *   being already assigned to a package.
  */
 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) {
         // Don't assign configuration that's provided by an extension.
         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());
             }
         }
     }
 }
Esempio n. 3
0
 /**
  * @covers ::assignConfigPackage
  */
 public function testAssignConfigPackageWithExtensionProvidedConfig()
 {
     $config_collection = ['test_config' => new ConfigurationItem('test_config', []), 'test_config2' => new ConfigurationItem('test_config2', [], ['extensionProvided' => TRUE])];
     $this->featuresManager->setConfigCollection($config_collection);
     $feature_assigner = $this->prophesize(FeaturesAssignerInterface::class);
     $feature_assigner->getBundle(NULL)->willReturn(new FeaturesBundle(['machine_name' => 'default'], 'features_bundle'));
     $this->featuresManager->setAssigner($feature_assigner->reveal());
     $package = new Package('test_package');
     $original_package = clone $package;
     $this->featuresManager->setPackage($package);
     $this->featuresManager->assignConfigPackage('test_package', ['test_config', 'test_config2']);
     $this->assertEquals(['test_config'], $this->featuresManager->getPackage('test_package')->getConfig(), 'just assign new packages');
     $this->featuresManager->setPackage($original_package);
     $this->featuresManager->assignConfigPackage('test_package', ['test_config', 'test_config2'], TRUE);
     $this->assertEquals(['test_config', 'test_config2'], $this->featuresManager->getPackage('test_package')->getConfig(), 'just assign new packages');
 }