DeletedFieldsRepository.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace Drupal\Core\Field;
  3. use Drupal\Core\State\StateInterface;
  4. /**
  5. * Provides a repository for deleted field and field storage objects.
  6. *
  7. * @internal
  8. */
  9. class DeletedFieldsRepository implements DeletedFieldsRepositoryInterface {
  10. /**
  11. * The state key/value store.
  12. *
  13. * @var \Drupal\Core\State\StateInterface
  14. */
  15. protected $state;
  16. /**
  17. * Constructs a new deleted fields repository.
  18. *
  19. * @param \Drupal\Core\State\StateInterface $state
  20. * The state key/value store.
  21. */
  22. public function __construct(StateInterface $state) {
  23. $this->state = $state;
  24. }
  25. /**
  26. * {@inheritdoc}
  27. */
  28. public function getFieldDefinitions($field_storage_unique_id = NULL) {
  29. $deleted_field_definitions = $this->state->get('field.field.deleted', []);
  30. if ($field_storage_unique_id) {
  31. $deleted_field_definitions = array_filter($deleted_field_definitions, function (FieldDefinitionInterface $field_definition) use ($field_storage_unique_id) {
  32. return $field_definition->getFieldStorageDefinition()->getUniqueStorageIdentifier() === $field_storage_unique_id;
  33. });
  34. }
  35. return $deleted_field_definitions;
  36. }
  37. /**
  38. * {@inheritdoc}
  39. */
  40. public function getFieldStorageDefinitions() {
  41. return $this->state->get('field.storage.deleted', []);
  42. }
  43. /**
  44. * {@inheritdoc}
  45. */
  46. public function addFieldDefinition(FieldDefinitionInterface $field_definition) {
  47. $deleted_field_definitions = $this->state->get('field.field.deleted', []);
  48. $deleted_field_definitions[$field_definition->getUniqueIdentifier()] = $field_definition;
  49. $this->state->set('field.field.deleted', $deleted_field_definitions);
  50. return $this;
  51. }
  52. /**
  53. * {@inheritdoc}
  54. */
  55. public function addFieldStorageDefinition(FieldStorageDefinitionInterface $field_storage_definition) {
  56. $deleted_storage_definitions = $this->state->get('field.storage.deleted', []);
  57. $deleted_storage_definitions[$field_storage_definition->getUniqueStorageIdentifier()] = $field_storage_definition;
  58. $this->state->set('field.storage.deleted', $deleted_storage_definitions);
  59. return $this;
  60. }
  61. /**
  62. * {@inheritdoc}
  63. */
  64. public function removeFieldDefinition(FieldDefinitionInterface $field_definition) {
  65. $deleted_field_definitions = $this->state->get('field.field.deleted', []);;
  66. unset($deleted_field_definitions[$field_definition->getUniqueIdentifier()]);
  67. $this->state->set('field.field.deleted', $deleted_field_definitions);
  68. return $this;
  69. }
  70. /**
  71. * {@inheritdoc}
  72. */
  73. public function removeFieldStorageDefinition(FieldStorageDefinitionInterface $field_storage_definition) {
  74. $deleted_storage_definitions = $this->state->get('field.storage.deleted', []);
  75. unset($deleted_storage_definitions[$field_storage_definition->getUniqueStorageIdentifier()]);
  76. $this->state->set('field.storage.deleted', $deleted_storage_definitions);
  77. return $this;
  78. }
  79. }