function _cms_content_sync_override_embedded_entity_save_status_entity in CMS Content Sync 2.1.x
Same name and namespace in other branches
- 8 cms_content_sync.module \_cms_content_sync_override_embedded_entity_save_status_entity()
- 2.0.x cms_content_sync.module \_cms_content_sync_override_embedded_entity_save_status_entity()
1 call to _cms_content_sync_override_embedded_entity_save_status_entity()
- _cms_content_sync_override_embedded_entity_submit in ./
cms_content_sync.module - Entity status update.
File
- ./
cms_content_sync.module, line 1726 - Module file for cms_content_sync.
Code
function _cms_content_sync_override_embedded_entity_save_status_entity(FieldableEntityInterface $entity, array $form, FormStateInterface $form_state, $tree_position = [], $force_disable = FALSE) {
$entityFieldManager = Drupal::service('entity_field.manager');
/** @var \Drupal\Core\Field\FieldDefinitionInterface[] $fields */
$fields = $entityFieldManager
->getFieldDefinitions($entity
->getEntityTypeId(), $entity
->bundle());
foreach ($fields as $name => $definition) {
if ($definition
->getType() == 'entity_reference_revisions') {
$subform =& $form[$name]['widget'];
$count = $subform['#max_delta'];
for ($i = 0; $i <= $count; $i++) {
$value = $force_disable ? FALSE : boolval($form_state
->getValue(array_merge($tree_position, [
$name,
$i,
'cms_content_sync_edit_override',
])));
$embedded_entity_type = $form_state
->getValue(array_merge($tree_position, [
$name,
$i,
'cms_content_sync_edit_override__entity_type',
]));
$embedded_entity_uuid = $form_state
->getValue(array_merge($tree_position, [
$name,
$i,
'cms_content_sync_edit_override__entity_uuid',
]));
// In case editing has been restricted by other code, we have to
// ignore this item.
if (!$embedded_entity_type || !$embedded_entity_uuid) {
continue;
}
$embedded_entity = Drupal::service('entity.repository')
->loadEntityByUuid($embedded_entity_type, $embedded_entity_uuid);
if (!$embedded_entity) {
continue;
}
if (!empty($subform[$i]['subform'])) {
_cms_content_sync_override_embedded_entity_save_status_entity($embedded_entity, $subform[$i]['subform'], $form_state, [
$name,
$i,
'subform',
], !$value);
}
$entity_status = EntityStatus::getInfosForEntity($embedded_entity
->getEntityTypeId(), $embedded_entity
->uuid());
foreach ($entity_status as $info) {
if (!$info || !$info
->getLastPull() || !$info
->getFlow()) {
continue;
}
$config = $info
->getFlow()
->getController()
->getEntityTypeConfig($embedded_entity
->getEntityTypeId(), $embedded_entity
->bundle());
if ($config['import_updates'] == PullIntent::PULL_UPDATE_FORCE_UNLESS_OVERRIDDEN) {
if ($value != $info
->isOverriddenLocally()) {
$info
->isOverriddenLocally($value);
$info
->save();
if (!$value && !$force_disable) {
_cms_content_sync_reset_entity($embedded_entity, $info);
}
}
break;
}
}
}
}
}
}