3 namespace Drupal\Core\Field;
5 use Drupal\Core\State\StateInterface;
8 * Provides a repository for deleted field and field storage objects.
12 class DeletedFieldsRepository implements DeletedFieldsRepositoryInterface {
15 * The state key/value store.
17 * @var \Drupal\Core\State\StateInterface
22 * Constructs a new deleted fields repository.
24 * @param \Drupal\Core\State\StateInterface $state
25 * The state key/value store.
27 public function __construct(StateInterface $state) {
28 $this->state = $state;
34 public function getFieldDefinitions($field_storage_unique_id = NULL) {
35 $deleted_field_definitions = $this->state->get('field.field.deleted', []);
37 if ($field_storage_unique_id) {
38 $deleted_field_definitions = array_filter($deleted_field_definitions, function (FieldDefinitionInterface $field_definition) use ($field_storage_unique_id) {
39 return $field_definition->getFieldStorageDefinition()->getUniqueStorageIdentifier() === $field_storage_unique_id;
43 return $deleted_field_definitions;
49 public function getFieldStorageDefinitions() {
50 return $this->state->get('field.storage.deleted', []);
56 public function addFieldDefinition(FieldDefinitionInterface $field_definition) {
57 $deleted_field_definitions = $this->state->get('field.field.deleted', []);
58 $deleted_field_definitions[$field_definition->getUniqueIdentifier()] = $field_definition;
59 $this->state->set('field.field.deleted', $deleted_field_definitions);
67 public function addFieldStorageDefinition(FieldStorageDefinitionInterface $field_storage_definition) {
68 $deleted_storage_definitions = $this->state->get('field.storage.deleted', []);
69 $deleted_storage_definitions[$field_storage_definition->getUniqueStorageIdentifier()] = $field_storage_definition;
70 $this->state->set('field.storage.deleted', $deleted_storage_definitions);
78 public function removeFieldDefinition(FieldDefinitionInterface $field_definition) {
79 $deleted_field_definitions = $this->state->get('field.field.deleted', []);;
80 unset($deleted_field_definitions[$field_definition->getUniqueIdentifier()]);
81 $this->state->set('field.field.deleted', $deleted_field_definitions);
89 public function removeFieldStorageDefinition(FieldStorageDefinitionInterface $field_storage_definition) {
90 $deleted_storage_definitions = $this->state->get('field.storage.deleted', []);
91 unset($deleted_storage_definitions[$field_storage_definition->getUniqueStorageIdentifier()]);
92 $this->state->set('field.storage.deleted', $deleted_storage_definitions);