EntityLastInstalledSchemaRepository.php in Drupal 8
File
core/lib/Drupal/Core/Entity/EntityLastInstalledSchemaRepository.php
View source
<?php
namespace Drupal\Core\Entity;
use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\Core\KeyValueStore\KeyValueFactoryInterface;
class EntityLastInstalledSchemaRepository implements EntityLastInstalledSchemaRepositoryInterface {
protected $keyValueFactory;
public function __construct(KeyValueFactoryInterface $key_value_factory) {
$this->keyValueFactory = $key_value_factory;
}
public function getLastInstalledDefinition($entity_type_id) {
return $this->keyValueFactory
->get('entity.definitions.installed')
->get($entity_type_id . '.entity_type');
}
public function getLastInstalledDefinitions() {
$all_definitions = $this->keyValueFactory
->get('entity.definitions.installed')
->getAll();
$filtered_keys = array_filter(array_keys($all_definitions), function ($key) {
return substr($key, -12) === '.entity_type';
});
$entity_type_definitions = array_intersect_key($all_definitions, array_flip($filtered_keys));
$keys = array_keys($entity_type_definitions);
$keys = array_map(function ($key) {
$parts = explode('.', $key);
return $parts[0];
}, $keys);
return array_combine($keys, $entity_type_definitions);
}
public function setLastInstalledDefinition(EntityTypeInterface $entity_type) {
$entity_type_id = $entity_type
->id();
$this->keyValueFactory
->get('entity.definitions.installed')
->set($entity_type_id . '.entity_type', $entity_type);
return $this;
}
public function deleteLastInstalledDefinition($entity_type_id) {
$this->keyValueFactory
->get('entity.definitions.installed')
->delete($entity_type_id . '.entity_type');
$this->keyValueFactory
->get('entity.definitions.installed')
->delete($entity_type_id . '.field_storage_definitions');
return $this;
}
public function getLastInstalledFieldStorageDefinitions($entity_type_id) {
return $this->keyValueFactory
->get('entity.definitions.installed')
->get($entity_type_id . '.field_storage_definitions', []);
}
public function setLastInstalledFieldStorageDefinitions($entity_type_id, array $storage_definitions) {
$this->keyValueFactory
->get('entity.definitions.installed')
->set($entity_type_id . '.field_storage_definitions', $storage_definitions);
}
public function setLastInstalledFieldStorageDefinition(FieldStorageDefinitionInterface $storage_definition) {
$entity_type_id = $storage_definition
->getTargetEntityTypeId();
$definitions = $this
->getLastInstalledFieldStorageDefinitions($entity_type_id);
$definitions[$storage_definition
->getName()] = $storage_definition;
$this
->setLastInstalledFieldStorageDefinitions($entity_type_id, $definitions);
}
public function deleteLastInstalledFieldStorageDefinition(FieldStorageDefinitionInterface $storage_definition) {
$entity_type_id = $storage_definition
->getTargetEntityTypeId();
$definitions = $this
->getLastInstalledFieldStorageDefinitions($entity_type_id);
unset($definitions[$storage_definition
->getName()]);
$this
->setLastInstalledFieldStorageDefinitions($entity_type_id, $definitions);
}
}