config_packager-8.x-1.x-dev/src/Plugin/ConfigPackagerAssignment/ConfigPackagerAssignmentBaseType.php
src/Plugin/ConfigPackagerAssignment/ConfigPackagerAssignmentBaseType.php
<?php
/**
* @file
* Contains \Drupal\config_packager\Plugin\ConfigPackagerAssignment\ConfigPackagerAssignmentBaseType.
*/
namespace Drupal\config_packager\Plugin\ConfigPackagerAssignment;
use Drupal\component\Utility\Unicode;
use Drupal\config_packager\ConfigPackagerAssignmentMethodBase;
/**
* Class for assigning configuration to packages based on entity types.
*
* @Plugin(
* id = \Drupal\config_packager\Plugin\ConfigPackagerAssignment\ConfigPackagerAssignmentBaseType::METHOD_ID,
* weight = -2,
* name = @Translation("Base type"),
* description = @Translation("Use designated types of configuration as the base for configuration package modules. For example, if content types are selected as a base type, a package will be generated for each content type and will include all configuration dependent on that content type."),
* config_route_name = "config_packager.assignment_base"
* )
*/
class ConfigPackagerAssignmentBaseType extends ConfigPackagerAssignmentMethodBase {
/**
* The package assignment method id.
*/
const METHOD_ID = 'base-type';
/**
* {@inheritdoc}
*/
public function assignPackages() {
$config_types = $this->configPackagerManager->listConfigTypes();
$base_types = $this->configFactory->get('config_packager.assignment')->get('base.types');
$config_collection = $this->configPackagerManager->getConfigCollection();
foreach ($config_collection as $item_name => $item) {
if (in_array($item['type'], $base_types)) {
if (!isset($packages[$item['name_short']])) {
$description = $this->t('Provide @label @type and related configuration.', array('@label' => $item['label'], '@type' => Unicode::strtolower($config_types[$item['type']])));
if (isset($item['data']['description'])) {
$description .= ' ' . $item['data']['description'];
}
$this->configPackagerManager->initPackage($item['name_short'], $item['label'], $description);
try {
$this->configPackagerManager->assignConfigPackage($item['name_short'], [$item_name]);
}
catch(\Exception $exception) {
\Drupal::logger('config_packager')->error($exception->getMessage());
}
$this->configPackagerManager->assignConfigDependents([$item_name]);
}
}
}
}
}
