Upgraded drupal core with security updates
[yaffs-website] / web / core / lib / Drupal / Core / Entity / EntityLastInstalledSchemaRepository.php
1 <?php
2
3 namespace Drupal\Core\Entity;
4
5 use Drupal\Core\Field\FieldStorageDefinitionInterface;
6 use Drupal\Core\KeyValueStore\KeyValueFactoryInterface;
7
8 /**
9  * Provides a repository for installed entity definitions.
10  */
11 class EntityLastInstalledSchemaRepository implements EntityLastInstalledSchemaRepositoryInterface {
12
13   /**
14    * The key-value factory.
15    *
16    * @var \Drupal\Core\KeyValueStore\KeyValueFactoryInterface
17    */
18   protected $keyValueFactory;
19
20   /**
21    * Constructs a new EntityLastInstalledSchemaRepository.
22    *
23    * @param \Drupal\Core\KeyValueStore\KeyValueFactoryInterface $key_value_factory
24    *   The key-value factory.
25    */
26   public function __construct(KeyValueFactoryInterface $key_value_factory) {
27     $this->keyValueFactory = $key_value_factory;
28   }
29
30   /**
31    * {@inheritdoc}
32    */
33   public function getLastInstalledDefinition($entity_type_id) {
34     return $this->keyValueFactory->get('entity.definitions.installed')->get($entity_type_id . '.entity_type');
35   }
36
37   /**
38    * {@inheritdoc}
39    */
40   public function setLastInstalledDefinition(EntityTypeInterface $entity_type) {
41     $entity_type_id = $entity_type->id();
42     $this->keyValueFactory->get('entity.definitions.installed')->set($entity_type_id . '.entity_type', $entity_type);
43     return $this;
44   }
45
46   /**
47    * {@inheritdoc}
48    */
49   public function deleteLastInstalledDefinition($entity_type_id) {
50     $this->keyValueFactory->get('entity.definitions.installed')->delete($entity_type_id . '.entity_type');
51     // Clean up field storage definitions as well. Even if the entity type
52     // isn't currently fieldable, there might be legacy definitions or an
53     // empty array stored from when it was.
54     $this->keyValueFactory->get('entity.definitions.installed')->delete($entity_type_id . '.field_storage_definitions');
55     return $this;
56   }
57
58   /**
59    * {@inheritdoc}
60    */
61   public function getLastInstalledFieldStorageDefinitions($entity_type_id) {
62     return $this->keyValueFactory->get('entity.definitions.installed')->get($entity_type_id . '.field_storage_definitions', []);
63   }
64
65   /**
66    * {@inheritdoc}
67    */
68   public function setLastInstalledFieldStorageDefinitions($entity_type_id, array $storage_definitions) {
69     $this->keyValueFactory->get('entity.definitions.installed')->set($entity_type_id . '.field_storage_definitions', $storage_definitions);
70   }
71
72   /**
73    * {@inheritdoc}
74    */
75   public function setLastInstalledFieldStorageDefinition(FieldStorageDefinitionInterface $storage_definition) {
76     $entity_type_id = $storage_definition->getTargetEntityTypeId();
77     $definitions = $this->getLastInstalledFieldStorageDefinitions($entity_type_id);
78     $definitions[$storage_definition->getName()] = $storage_definition;
79     $this->setLastInstalledFieldStorageDefinitions($entity_type_id, $definitions);
80   }
81
82   /**
83    * {@inheritdoc}
84    */
85   public function deleteLastInstalledFieldStorageDefinition(FieldStorageDefinitionInterface $storage_definition) {
86     $entity_type_id = $storage_definition->getTargetEntityTypeId();
87     $definitions = $this->getLastInstalledFieldStorageDefinitions($entity_type_id);
88     unset($definitions[$storage_definition->getName()]);
89     $this->setLastInstalledFieldStorageDefinitions($entity_type_id, $definitions);
90   }
91
92 }