forked from a64f7bb4-7358-4778-9fbe-3b882c34cc1d/v1
113 lines
3.2 KiB
PHP
113 lines
3.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file
|
|
*/
|
|
|
|
use Drupal\Core\Entity\EntityDefinitionUpdateManagerInterface;
|
|
use Drupal\eck\Entity\EckEntityBundle;
|
|
|
|
/**
|
|
* Enable all base fields for existing ECK entity types.
|
|
*/
|
|
function eck_update_8001() {
|
|
$entity_types = \Drupal::entityTypeManager()
|
|
->getStorage('eck_entity_type')
|
|
->loadMultiple();
|
|
$names = [];
|
|
foreach ($entity_types as $entity_type) {
|
|
$names[] = "eck.eck_entity_type.{$entity_type->id()}";
|
|
}
|
|
|
|
foreach ($names as $name) {
|
|
$config = \Drupal::configFactory()->getEditable($name);
|
|
$data = $config->getRawData();
|
|
foreach (['uid', 'title', 'created', 'changed'] as $field) {
|
|
$data[$field] = TRUE;
|
|
}
|
|
$config->setData($data);
|
|
$config->save();
|
|
}
|
|
|
|
drupal_flush_all_caches();
|
|
EntityDefinitionUpdateManagerInterface::getChangeList();
|
|
}
|
|
|
|
/**
|
|
* Re-save all bundles for all entities to set the correct dependencies.
|
|
*/
|
|
function eck_update_8002() {
|
|
$bundles = EckEntityBundle::loadMultiple();
|
|
foreach ($bundles as $bundle) {
|
|
$bundle->save();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Update entity definitions to fix any mismatched entities.
|
|
*
|
|
* @see https://www.drupal.org/node/2646412
|
|
*/
|
|
function eck_update_8003() {
|
|
EntityDefinitionUpdateManagerInterface::getChangeList();
|
|
}
|
|
|
|
/**
|
|
* Upgrades ECK tables.
|
|
*
|
|
* (ID columns should be of unsigned int type) and installs new definitions from
|
|
* code.
|
|
*/
|
|
function eck_update_8004() {
|
|
$schema = Drupal::database()->schema();
|
|
/** @var \Drupal\Core\Entity\EntityDefinitionUpdateManagerInterface $entityDefinitionUpdateManager */
|
|
$entityDefinitionUpdateManager = Drupal::service('entity.definition_update_manager');
|
|
$entityTypeManager = Drupal::entityTypeManager();
|
|
$eckEntityTypes = $entityTypeManager
|
|
->getStorage('eck_entity_type')
|
|
->loadMultiple();
|
|
$idColumnSpec = [
|
|
'primary key' => TRUE,
|
|
'type' => 'serial',
|
|
'unsigned' => TRUE,
|
|
'not null' => TRUE,
|
|
];
|
|
|
|
/** @var \Drupal\eck\Entity\EckEntityType $entity_type */
|
|
foreach ($eckEntityTypes as $machineName => $entity_type) {
|
|
$entityTypeDefinition = $entityTypeManager->getDefinition($machineName);
|
|
|
|
$schema->changeField($entityTypeDefinition->getBaseTable(), 'id', 'id', $idColumnSpec);
|
|
$schema->changeField($entityTypeDefinition->getDataTable(), 'id', 'id', $idColumnSpec);
|
|
|
|
$entityDefinitionUpdateManager->installEntityType($entityTypeDefinition);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Add 'status' key for entity type config.
|
|
*/
|
|
function eck_update_8005() {
|
|
$config_factory = \Drupal::configFactory();
|
|
foreach ($config_factory->listAll('eck.eck_entity_type.') as $name) {
|
|
$config = $config_factory->getEditable($name);
|
|
// By default 'status' field will be disabled for existing entities types.
|
|
$config->set('status', FALSE);
|
|
$config->save();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Set the 'published' entity key.
|
|
*/
|
|
function eck_update_8006() {
|
|
$definition_update_manager = \Drupal::entityDefinitionUpdateManager();
|
|
foreach (\Drupal::entityTypeManager()->getStorage('eck_entity_type')->loadMultiple() as $entity_type) {
|
|
$entity_type = $definition_update_manager->getEntityType($entity_type->id());
|
|
$keys = $entity_type->getKeys();
|
|
$keys['published'] = 'status';
|
|
$entity_type->set('entity_keys', $keys);
|
|
$definition_update_manager->updateEntityType($entity_type);
|
|
}
|
|
}
|