Update Composer, update everything

This commit is contained in:
Oliver Davies 2018-11-23 12:29:20 +00:00
parent ea3e94409f
commit dda5c284b6
19527 changed files with 1135420 additions and 351004 deletions

View file

@ -5,10 +5,9 @@
* Provides support for field data purge after mass deletion.
*/
use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Field\FieldException;
use Drupal\field\Entity\FieldStorageConfig;
use Drupal\field\FieldStorageConfigInterface;
use Drupal\field\FieldConfigInterface;
use Drupal\Core\Field\FieldStorageDefinitionInterface;
/**
* @defgroup field_purge Field API bulk data deletion
@ -67,20 +66,16 @@ use Drupal\field\FieldConfigInterface;
* be purged. If a deleted field storage with no remaining fields is found, the
* field storage itself will be purged.
*
* @param $batch_size
* @param int $batch_size
* The maximum number of field data records to purge before returning.
* @param string $field_storage_uuid
* (optional) Limit the purge to a specific field storage.
* @param string $field_storage_unique_id
* (optional) Limit the purge to a specific field storage. Defaults to NULL.
*/
function field_purge_batch($batch_size, $field_storage_uuid = NULL) {
$properties = [
'deleted' => TRUE,
'include_deleted' => TRUE,
];
if ($field_storage_uuid) {
$properties['field_storage_uuid'] = $field_storage_uuid;
}
$fields = entity_load_multiple_by_properties('field_config', $properties);
function field_purge_batch($batch_size, $field_storage_unique_id = NULL) {
/** @var \Drupal\Core\Field\DeletedFieldsRepositoryInterface $deleted_fields_repository */
$deleted_fields_repository = \Drupal::service('entity_field.deleted_fields_repository');
$fields = $deleted_fields_repository->getFieldDefinitions($field_storage_unique_id);
$info = \Drupal::entityManager()->getDefinitions();
foreach ($fields as $field) {
@ -90,6 +85,7 @@ function field_purge_batch($batch_size, $field_storage_uuid = NULL) {
// providing module was uninstalled).
// @todo Revisit after https://www.drupal.org/node/2080823.
if (!isset($info[$entity_type])) {
\Drupal::logger('field')->warning("Cannot remove field @field_name because the entity type is unknown: %entity_type", ['@field_name' => $field->getName(), '%entity_type' => $entity_type]);
continue;
}
@ -106,10 +102,8 @@ function field_purge_batch($batch_size, $field_storage_uuid = NULL) {
}
// Retrieve all deleted field storages. Any that have no fields can be purged.
$deleted_storages = \Drupal::state()->get('field.storage.deleted') ?: [];
foreach ($deleted_storages as $field_storage) {
$field_storage = new FieldStorageConfig($field_storage);
if ($field_storage_uuid && $field_storage->uuid() != $field_storage_uuid) {
foreach ($deleted_fields_repository->getFieldStorageDefinitions() as $field_storage) {
if ($field_storage_unique_id && $field_storage->getUniqueStorageIdentifier() != $field_storage_unique_id) {
// If a specific UUID is provided, only purge the corresponding field.
continue;
}
@ -121,7 +115,7 @@ function field_purge_batch($batch_size, $field_storage_uuid = NULL) {
continue;
}
$fields = entity_load_multiple_by_properties('field_config', ['field_storage_uuid' => $field_storage->uuid(), 'include_deleted' => TRUE]);
$fields = $deleted_fields_repository->getFieldDefinitions($field_storage->getUniqueStorageIdentifier());
if (empty($fields)) {
field_purge_field_storage($field_storage);
}
@ -134,14 +128,13 @@ function field_purge_batch($batch_size, $field_storage_uuid = NULL) {
* This function assumes all data for the field has already been purged and
* should only be called by field_purge_batch().
*
* @param $field
* The field record to purge.
* @param \Drupal\Core\Field\FieldDefinitionInterface $field
* The field to purge.
*/
function field_purge_field(FieldConfigInterface $field) {
$state = \Drupal::state();
$deleted_fields = $state->get('field.field.deleted');
unset($deleted_fields[$field->uuid()]);
$state->set('field.field.deleted', $deleted_fields);
function field_purge_field(FieldDefinitionInterface $field) {
/** @var \Drupal\Core\Field\DeletedFieldsRepositoryInterface $deleted_fields_repository */
$deleted_fields_repository = \Drupal::service('entity_field.deleted_fields_repository');
$deleted_fields_repository->removeFieldDefinition($field);
// Invoke external hooks after the cache is cleared for API consistency.
\Drupal::moduleHandler()->invokeAll('field_purge_field', [$field]);
@ -153,21 +146,21 @@ function field_purge_field(FieldConfigInterface $field) {
* This function assumes all fields for the field storage has already been
* purged, and should only be called by field_purge_batch().
*
* @param \Drupal\field\FieldStorageConfigInterface $field_storage
* @param \Drupal\Core\Field\FieldStorageDefinitionInterface $field_storage
* The field storage to purge.
*
* @throws Drupal\field\FieldException
* @throws \Drupal\Core\Field\FieldException
*/
function field_purge_field_storage(FieldStorageConfigInterface $field_storage) {
$fields = entity_load_multiple_by_properties('field_config', ['field_storage_uuid' => $field_storage->uuid(), 'include_deleted' => TRUE]);
function field_purge_field_storage(FieldStorageDefinitionInterface $field_storage) {
/** @var \Drupal\Core\Field\DeletedFieldsRepositoryInterface $deleted_fields_repository */
$deleted_fields_repository = \Drupal::service('entity_field.deleted_fields_repository');
$fields = $deleted_fields_repository->getFieldDefinitions($field_storage->getUniqueStorageIdentifier());
if (count($fields) > 0) {
throw new FieldException(t('Attempt to purge a field storage @field_name that still has fields.', ['@field_name' => $field_storage->getName()]));
}
$state = \Drupal::state();
$deleted_storages = $state->get('field.storage.deleted');
unset($deleted_storages[$field_storage->uuid()]);
$state->set('field.storage.deleted', $deleted_storages);
$deleted_fields_repository->removeFieldStorageDefinition($field_storage);
// Notify the storage layer.
\Drupal::entityManager()->getStorage($field_storage->getTargetEntityTypeId())->finalizePurge($field_storage);