function ConfigImporterFieldPurger::process
Same name in other branches
- 9 core/modules/field/src/ConfigImporterFieldPurger.php \Drupal\field\ConfigImporterFieldPurger::process()
- 8.9.x core/modules/field/src/ConfigImporterFieldPurger.php \Drupal\field\ConfigImporterFieldPurger::process()
- 11.x core/modules/field/src/ConfigImporterFieldPurger.php \Drupal\field\ConfigImporterFieldPurger::process()
Processes fields targeted for purge as part of a configuration sync.
This takes care of deleting the field if necessary, and purging the data on the fly.
Parameters
array $context: The batch context.
\Drupal\Core\Config\ConfigImporter $config_importer: The config importer.
File
-
core/
modules/ field/ src/ ConfigImporterFieldPurger.php, line 25
Class
- ConfigImporterFieldPurger
- Processes field purges before a configuration synchronization.
Namespace
Drupal\fieldCode
public static function process(array &$context, ConfigImporter $config_importer) {
if (!isset($context['sandbox']['field'])) {
static::initializeSandbox($context, $config_importer);
}
// Get the list of field storages to purge.
$field_storages = static::getFieldStoragesToPurge($context['sandbox']['field']['extensions'], $config_importer->getUnprocessedConfiguration('delete'));
// Get the first field storage to process.
$field_storage = reset($field_storages);
if (!isset($context['sandbox']['field']['current_storage_id']) || $context['sandbox']['field']['current_storage_id'] != $field_storage->id()) {
$context['sandbox']['field']['current_storage_id'] = $field_storage->id();
// If the storage has not been deleted yet we need to do that. This is the
// case when the storage deletion is staged.
if (!$field_storage->isDeleted()) {
$field_storage->delete();
}
}
field_purge_batch($context['sandbox']['field']['purge_batch_size'], $field_storage->getUniqueStorageIdentifier());
$context['sandbox']['field']['current_progress']++;
$fields_to_delete_count = count(static::getFieldStoragesToPurge($context['sandbox']['field']['extensions'], $config_importer->getUnprocessedConfiguration('delete')));
if ($fields_to_delete_count == 0) {
$context['finished'] = 1;
}
else {
$context['finished'] = $context['sandbox']['field']['current_progress'] / $context['sandbox']['field']['steps_to_delete'];
$context['message'] = \Drupal::translation()->translate('Purging field @field_label', [
'@field_label' => $field_storage->label(),
]);
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.