class WebformOptionsStorage in Webform 8.5
Same name and namespace in other branches
- 6.x src/WebformOptionsStorage.php \Drupal\webform\WebformOptionsStorage
Storage controller class for "webform_options" configuration entities.
Hierarchy
- class \Drupal\Core\Entity\EntityHandlerBase uses DependencySerializationTrait, StringTranslationTrait
- class \Drupal\Core\Entity\EntityStorageBase implements EntityHandlerInterface, EntityStorageInterface
- class \Drupal\Core\Config\Entity\ConfigEntityStorage implements ConfigEntityStorageInterface, ImportableEntityStorageInterface
- class \Drupal\webform\WebformOptionsStorage implements WebformOptionsStorageInterface
- class \Drupal\Core\Config\Entity\ConfigEntityStorage implements ConfigEntityStorageInterface, ImportableEntityStorageInterface
- class \Drupal\Core\Entity\EntityStorageBase implements EntityHandlerInterface, EntityStorageInterface
Expanded class hierarchy of WebformOptionsStorage
File
- src/
WebformOptionsStorage.php, line 21
Namespace
Drupal\webformView source
class WebformOptionsStorage extends ConfigEntityStorage implements WebformOptionsStorageInterface {
/**
* A element info manager.
*
* @var \Drupal\Core\Render\ElementInfoManagerInterface
*/
protected $elementInfo;
/**
* The webform element manager.
*
* @var \Drupal\webform\Plugin\WebformElementManagerInterface
*/
protected $elementManager;
/**
* Cached list of composite elements with sub-elements that uses webform options.
*
* @var array
*/
protected $usedByCompositeElements;
/**
* Cached list of webforms that uses webform options.
*
* @var array
*/
protected $usedByWebforms;
/**
* Constructs a WebformOptionsStorage object.
*
* @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
* The entity type definition.
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
* The config factory service.
* @param \Drupal\Component\Uuid\UuidInterface $uuid_service
* The UUID service.
* @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
* The language manager.
* @param \Drupal\Core\Render\ElementInfoManagerInterface $element_info
* The element info manager.
* @param \Drupal\webform\Plugin\WebformElementManagerInterface $element_manager
* The webform element manager.
* @param \Drupal\Core\Cache\MemoryCache\MemoryCacheInterface $memory_cache
* The memory cache.
*
* @todo Webform 8.x-6.x: Move $memory_cache right after $language_manager.
*/
public function __construct(EntityTypeInterface $entity_type, ConfigFactoryInterface $config_factory, UuidInterface $uuid_service, LanguageManagerInterface $language_manager, ElementInfoManagerInterface $element_info, WebformElementManagerInterface $element_manager, MemoryCacheInterface $memory_cache = NULL) {
parent::__construct($entity_type, $config_factory, $uuid_service, $language_manager, $memory_cache);
$this->elementInfo = $element_info;
$this->elementManager = $element_manager;
}
/**
* {@inheritdoc}
*/
public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
return new static($entity_type, $container
->get('config.factory'), $container
->get('uuid'), $container
->get('language_manager'), $container
->get('plugin.manager.element_info'), $container
->get('plugin.manager.webform.element'), $container
->get('entity.memory_cache'));
}
/**
* {@inheritdoc}
*/
public function getCategories() {
$webform_options = $this
->loadMultiple();
$categories = [];
foreach ($webform_options as $webform_option) {
if ($category = $webform_option
->get('category')) {
$categories[$category] = $category;
}
}
ksort($categories);
return $categories;
}
/**
* {@inheritdoc}
*/
public function getOptions() {
$webform_options = $this
->loadMultiple();
@uasort($webform_options, [
$this->entityType
->getClass(),
'sort',
]);
$uncategorized_options = [];
$categorized_options = [];
foreach ($webform_options as $id => $webform_option) {
if ($category = $webform_option
->get('category')) {
$categorized_options[$category][$id] = $webform_option
->label();
}
else {
$uncategorized_options[$id] = $webform_option
->label();
}
}
return $uncategorized_options + $categorized_options;
}
/**
* {@inheritdoc}
*/
public function getLikerts() {
$webform_options = $this
->loadByProperties([
'likert' => TRUE,
]);
@uasort($webform_options, [
$this->entityType
->getClass(),
'sort',
]);
$likert_options = [];
foreach ($webform_options as $id => $webform_option) {
$likert_options[$id] = str_replace(t('Likert') . ': ', '', $webform_option
->label());
}
return $likert_options;
}
/**
* {@inheritdoc}
*/
public function getUsedByCompositeElements(WebformOptionsInterface $webform_options) {
if (!isset($this->usedByCompositeElements)) {
$this->usedByCompositeElements = [];
$definitions = $this->elementInfo
->getDefinitions();
foreach (array_keys($definitions) as $plugin_id) {
/** @var \Drupal\Core\Render\Element\ElementInterface $element */
$element = $this->elementInfo
->createInstance($plugin_id);
// Make sure element is composite and not provided by the
// webform_composite.module.
if (!$element instanceof WebformCompositeBase || in_array($plugin_id, [
'webform_composite',
])) {
continue;
}
$composite_elements = $element
->getCompositeElements([]);
foreach ($composite_elements as $composite_element_key => $composite_element) {
if (isset($composite_element['#options'])) {
$webform_element_definition = $this->elementManager
->getDefinition($plugin_id);
$f_args = [
'@composite' => $webform_element_definition['label'],
'@element' => $composite_element['#title'],
];
$this->usedByCompositeElements[$composite_element_key]["{$plugin_id}:{$composite_element_key}"] = new FormattableMarkup('@composite (@element)', $f_args);
}
}
}
}
$options_id = $webform_options
->id();
$used_by = [];
foreach ($this->usedByCompositeElements as $key => $elements) {
if (strpos($options_id, $key) === 0) {
$used_by = array_merge($used_by, $elements);
}
}
if ($used_by) {
$used_by = array_unique($used_by);
asort($used_by);
}
return $used_by;
}
/**
* {@inheritdoc}
*/
public function getUsedByWebforms(WebformOptionsInterface $webform_options) {
if (!isset($this->usedByWebforms)) {
// Looping through webform configuration instead of webform entities to
// improve performance.
$this->usedByWebforms = [];
foreach ($this->configFactory
->listAll('webform.webform.') as $webform_config_name) {
$config = $this->configFactory
->get($webform_config_name);
$element_data = Yaml::encode($config
->get('elements'));
if (preg_match_all('/(?:options|answers)\'\\: ([a-z_]+)/', $element_data, $matches)) {
$webform_id = $config
->get('id');
$webform_title = $config
->get('title');
foreach ($matches[1] as $options_id) {
$this->usedByWebforms[$options_id][$webform_id] = $webform_title;
}
}
}
}
$options_id = $webform_options
->id();
return isset($this->usedByWebforms[$options_id]) ? $this->usedByWebforms[$options_id] : [];
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ConfigEntityStorage:: |
protected | property | The config factory service. | |
ConfigEntityStorage:: |
protected | property | The config storage service. | |
ConfigEntityStorage:: |
protected | property | Static cache of entities, keyed first by entity ID, then by an extra key. | |
ConfigEntityStorage:: |
protected | property | The language manager. | |
ConfigEntityStorage:: |
protected | property | Determines if the underlying configuration is retrieved override free. | |
ConfigEntityStorage:: |
protected | property |
Name of entity's UUID database table field, if it supports UUIDs. Overrides EntityStorageBase:: |
|
ConfigEntityStorage:: |
protected | function |
Builds the cache ID for the passed in entity ID. Overrides EntityStorageBase:: |
|
ConfigEntityStorage:: |
public | function |
Creates a configuration entity from storage values. Overrides ConfigEntityStorageInterface:: |
|
ConfigEntityStorage:: |
public | function |
Delete a specific entity revision. Overrides EntityStorageInterface:: |
|
ConfigEntityStorage:: |
protected | function |
Performs storage-specific creation of entities. Overrides EntityStorageBase:: |
|
ConfigEntityStorage:: |
protected | function |
Performs storage-specific entity deletion. Overrides EntityStorageBase:: |
|
ConfigEntityStorage:: |
protected | function |
Performs storage-specific loading of entities. Overrides EntityStorageBase:: |
|
ConfigEntityStorage:: |
protected | function |
Performs storage-specific saving of the entity. Overrides EntityStorageBase:: |
|
ConfigEntityStorage:: |
public static | function |
Extracts the configuration entity ID from the full configuration name. Overrides ConfigEntityStorageInterface:: |
|
ConfigEntityStorage:: |
protected | function | Returns the prefix used to create the configuration name. | |
ConfigEntityStorage:: |
protected | function |
Gets the name of the service for the query for this entity storage. Overrides EntityStorageBase:: |
|
ConfigEntityStorage:: |
protected | function |
Determines if this entity already exists in storage. Overrides EntityStorageBase:: |
|
ConfigEntityStorage:: |
public | function |
Determines if the storage contains any data. Overrides EntityStorageBase:: |
|
ConfigEntityStorage:: |
public | function |
Creates entities upon synchronizing configuration changes. Overrides ImportableEntityStorageInterface:: |
1 |
ConfigEntityStorage:: |
public | function |
Delete entities upon synchronizing configuration changes. Overrides ImportableEntityStorageInterface:: |
2 |
ConfigEntityStorage:: |
public | function |
Renames entities upon synchronizing configuration changes. Overrides ImportableEntityStorageInterface:: |
|
ConfigEntityStorage:: |
public | function |
Updates entities upon synchronizing configuration changes. Overrides ImportableEntityStorageInterface:: |
1 |
ConfigEntityStorage:: |
protected | function |
Invokes a hook on behalf of the entity. Overrides EntityStorageBase:: |
|
ConfigEntityStorage:: |
public | function |
Loads one or more entities in their original form without overrides. Overrides ConfigEntityStorageInterface:: |
|
ConfigEntityStorage:: |
public | function |
Loads one entity in their original form without overrides. Overrides ConfigEntityStorageInterface:: |
|
ConfigEntityStorage:: |
public | function |
Load a specific entity revision. Overrides EntityStorageInterface:: |
|
ConfigEntityStorage:: |
protected | function | Maps from an entity object to the storage record. | 3 |
ConfigEntityStorage:: |
constant | Length limit of the configuration entity ID. | 1 | |
ConfigEntityStorage:: |
public | function |
Implements Drupal\Core\Entity\EntityStorageInterface::save(). Overrides EntityStorageBase:: |
|
ConfigEntityStorage:: |
public | function |
Updates a configuration entity from storage values. Overrides ConfigEntityStorageInterface:: |
|
ConfigEntityStorage:: |
protected | function | Helps create a configuration entity from storage values. | |
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
EntityHandlerBase:: |
protected | property | The module handler to invoke hooks on. | 2 |
EntityHandlerBase:: |
protected | function | Gets the module handler. | 2 |
EntityHandlerBase:: |
public | function | Sets the module handler for this handler. | |
EntityStorageBase:: |
protected | property | Name of the entity class. | |
EntityStorageBase:: |
protected | property | Information about the entity type. | |
EntityStorageBase:: |
protected | property | Entity type ID for this storage. | |
EntityStorageBase:: |
protected | property | Name of the entity's ID field in the entity database table. | |
EntityStorageBase:: |
protected | property | The name of the entity langcode property. | 1 |
EntityStorageBase:: |
protected | property | The memory cache. | |
EntityStorageBase:: |
protected | property | The memory cache cache tag. | |
EntityStorageBase:: |
protected | property | The UUID service. | 1 |
EntityStorageBase:: |
protected | function | Builds an entity query. | 1 |
EntityStorageBase:: |
public | function |
Constructs a new entity object, without permanently saving it. Overrides EntityStorageInterface:: |
1 |
EntityStorageBase:: |
public | function |
Deletes permanently saved entities. Overrides EntityStorageInterface:: |
2 |
EntityStorageBase:: |
protected | function | Performs post save entity processing. | 1 |
EntityStorageBase:: |
protected | function | Performs presave entity processing. | 1 |
EntityStorageBase:: |
public | function |
Gets an aggregated query instance. Overrides EntityStorageInterface:: |
|
EntityStorageBase:: |
public | function |
Gets the entity type definition. Overrides EntityStorageInterface:: |
|
EntityStorageBase:: |
public | function |
Gets the entity type ID. Overrides EntityStorageInterface:: |
|
EntityStorageBase:: |
protected | function | Gets entities from the static cache. | |
EntityStorageBase:: |
public | function |
Gets an entity query instance. Overrides EntityStorageInterface:: |
|
EntityStorageBase:: |
public | function |
Loads one entity. Overrides EntityStorageInterface:: |
2 |
EntityStorageBase:: |
public | function |
Load entities by their property values. Overrides EntityStorageInterface:: |
3 |
EntityStorageBase:: |
public | function |
Loads one or more entities. Overrides EntityStorageInterface:: |
1 |
EntityStorageBase:: |
public | function |
Loads an unchanged entity from the database. Overrides EntityStorageInterface:: |
1 |
EntityStorageBase:: |
protected | function | Maps from storage records to entity objects. | 4 |
EntityStorageBase:: |
protected | function | Attaches data to entities upon loading. | |
EntityStorageBase:: |
protected | function | Gathers entities from a 'preload' step. | 1 |
EntityStorageBase:: |
public | function |
Resets the internal, static entity cache. Overrides EntityStorageInterface:: |
2 |
EntityStorageBase:: |
public | function |
Restores a previously saved entity. Overrides EntityStorageInterface:: |
1 |
EntityStorageBase:: |
protected | function | Stores entities in the static entity cache. | |
EntityStorageInterface:: |
constant | Load the most recent version of an entity's field data. | ||
EntityStorageInterface:: |
constant | Load the version of an entity's field data specified in the entity. | ||
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
WebformOptionsStorage:: |
protected | property | A element info manager. | |
WebformOptionsStorage:: |
protected | property | The webform element manager. | |
WebformOptionsStorage:: |
protected | property | Cached list of composite elements with sub-elements that uses webform options. | |
WebformOptionsStorage:: |
protected | property | Cached list of webforms that uses webform options. | |
WebformOptionsStorage:: |
public static | function |
Instantiates a new instance of this entity handler. Overrides ConfigEntityStorage:: |
|
WebformOptionsStorage:: |
public | function |
Gets the names of all categories. Overrides WebformOptionsStorageInterface:: |
|
WebformOptionsStorage:: |
public | function |
Get all likert options with 'Likert:' prefix removed. Overrides WebformOptionsStorageInterface:: |
|
WebformOptionsStorage:: |
public | function |
Get all options grouped by category. Overrides WebformOptionsStorageInterface:: |
|
WebformOptionsStorage:: |
public | function |
Get list of composite elements that use the specified webform options. Overrides WebformOptionsStorageInterface:: |
|
WebformOptionsStorage:: |
public | function |
Get list of webform that use the specified webform options. Overrides WebformOptionsStorageInterface:: |
|
WebformOptionsStorage:: |
public | function |
Constructs a WebformOptionsStorage object. Overrides ConfigEntityStorage:: |