Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / lib / Drupal / Core / Field / DeletedFieldsRepository.php
1 <?php
2
3 namespace Drupal\Core\Field;
4
5 use Drupal\Core\State\StateInterface;
6
7 /**
8  * Provides a repository for deleted field and field storage objects.
9  *
10  * @internal
11  */
12 class DeletedFieldsRepository implements DeletedFieldsRepositoryInterface {
13
14   /**
15    * The state key/value store.
16    *
17    * @var \Drupal\Core\State\StateInterface
18    */
19   protected $state;
20
21   /**
22    * Constructs a new deleted fields repository.
23    *
24    * @param \Drupal\Core\State\StateInterface $state
25    *   The state key/value store.
26    */
27   public function __construct(StateInterface $state) {
28     $this->state = $state;
29   }
30
31   /**
32    * {@inheritdoc}
33    */
34   public function getFieldDefinitions($field_storage_unique_id = NULL) {
35     $deleted_field_definitions = $this->state->get('field.field.deleted', []);
36
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;
40       });
41     }
42
43     return $deleted_field_definitions;
44   }
45
46   /**
47    * {@inheritdoc}
48    */
49   public function getFieldStorageDefinitions() {
50     return $this->state->get('field.storage.deleted', []);
51   }
52
53   /**
54    * {@inheritdoc}
55    */
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);
60
61     return $this;
62   }
63
64   /**
65    * {@inheritdoc}
66    */
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);
71
72     return $this;
73   }
74
75   /**
76    * {@inheritdoc}
77    */
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);
82
83     return $this;
84   }
85
86   /**
87    * {@inheritdoc}
88    */
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);
93
94     return $this;
95   }
96
97 }