public static function MultiversionManager::convertToMultiversionable in Multiversion 8.2
File
- src/
MultiversionManager.php, line 305
Class
Namespace
Drupal\multiversionCode
public static function convertToMultiversionable($entity_type_id, EntityTypeManagerInterface $entity_type_manager, StateInterface $state, $multiversion_settings, &$sandbox) {
self::enableIsActive([
$entity_type_id,
]);
$entity_type_manager
->useCaches(FALSE);
$enabled_entity_types = $multiversion_settings
->get('enabled_entity_types') ?: [];
/** @var \Drupal\multiversion\Entity\Storage\Sql\MultiversionStorageSchemaConverter $schema_converter */
$schema_converter = \Drupal::service('multiversion.schema_converter_factory')
->getStorageSchemaConverter($entity_type_id);
try {
$schema_converter
->convertToMultiversionable($sandbox);
if (isset($sandbox[$entity_type_id]['finished']) && $sandbox[$entity_type_id]['finished'] == 1 && !in_array($entity_type_id, $enabled_entity_types)) {
$enabled_entity_types[] = $entity_type_id;
$multiversion_settings
->set('enabled_entity_types', $enabled_entity_types)
->save();
// Remove the entity from failed to convert entity types, if it's there.
$failed_entity_types = $state
->get('multiversion.failed_entity_types', []);
if (($key = array_search($entity_type_id, $failed_entity_types)) !== FALSE) {
unset($failed_entity_types[$key]);
$state
->set('multiversion.failed_entity_types', $failed_entity_types);
}
}
} catch (\Exception $e) {
$sandbox[$entity_type_id]['failed'] = TRUE;
$failed_entity_types = $state
->get('multiversion.failed_entity_types', []);
$arguments = Error::decodeException($e) + [
'%entity_type' => $entity_type_id,
];
\Drupal::logger('multiversion')
->warning('Entity type \'%entity_type\' failed to be converted to multiversionable. More info: %type: @message in %function (line %line of %file).', $arguments);
$failed_entity_types[] = $entity_type_id;
$state
->set('multiversion.failed_entity_types', $failed_entity_types);
}
}