public function LingotekConfigSubscriber::onConfigSave in Lingotek Translation 8
Same name and namespace in other branches
- 8.2 src/EventSubscriber/LingotekConfigSubscriber.php \Drupal\lingotek\EventSubscriber\LingotekConfigSubscriber::onConfigSave()
- 4.0.x src/EventSubscriber/LingotekConfigSubscriber.php \Drupal\lingotek\EventSubscriber\LingotekConfigSubscriber::onConfigSave()
- 3.0.x src/EventSubscriber/LingotekConfigSubscriber.php \Drupal\lingotek\EventSubscriber\LingotekConfigSubscriber::onConfigSave()
- 3.1.x src/EventSubscriber/LingotekConfigSubscriber.php \Drupal\lingotek\EventSubscriber\LingotekConfigSubscriber::onConfigSave()
- 3.2.x src/EventSubscriber/LingotekConfigSubscriber.php \Drupal\lingotek\EventSubscriber\LingotekConfigSubscriber::onConfigSave()
- 3.3.x src/EventSubscriber/LingotekConfigSubscriber.php \Drupal\lingotek\EventSubscriber\LingotekConfigSubscriber::onConfigSave()
- 3.4.x src/EventSubscriber/LingotekConfigSubscriber.php \Drupal\lingotek\EventSubscriber\LingotekConfigSubscriber::onConfigSave()
- 3.5.x src/EventSubscriber/LingotekConfigSubscriber.php \Drupal\lingotek\EventSubscriber\LingotekConfigSubscriber::onConfigSave()
- 3.6.x src/EventSubscriber/LingotekConfigSubscriber.php \Drupal\lingotek\EventSubscriber\LingotekConfigSubscriber::onConfigSave()
- 3.7.x src/EventSubscriber/LingotekConfigSubscriber.php \Drupal\lingotek\EventSubscriber\LingotekConfigSubscriber::onConfigSave()
- 3.8.x src/EventSubscriber/LingotekConfigSubscriber.php \Drupal\lingotek\EventSubscriber\LingotekConfigSubscriber::onConfigSave()
Updates the configuration translation status when a configuration is saved.
Parameters
\Drupal\Core\Config\ConfigCrudEvent $event: The configuration event.
File
- src/
EventSubscriber/ LingotekConfigSubscriber.php, line 73 - Contains \Drupal\lingotek\EventSubscriber\LingotekConfigSubscriber.
Class
- LingotekConfigSubscriber
- Updates config Lingotek translation status when saved.
Namespace
Drupal\lingotek\EventSubscriberCode
public function onConfigSave(ConfigCrudEvent $event) {
if (!drupal_installation_attempted()) {
$config = $event
->getConfig();
if (!$config instanceof ConfigEntityInterface) {
$name = $config
->getName();
$mapper = $this
->getMapperFromConfigName($name);
if ($mapper !== NULL) {
if ($this->translationService
->getConfigDocumentId($mapper)) {
$this->translationService
->setConfigSourceStatus($mapper, Lingotek::STATUS_EDITED);
$this->translationService
->markConfigTranslationsAsDirty($mapper);
}
}
}
// If there are changes on content translation settings, we need to react to
// them in case the entity was enabled for Lingotek translation.
if (0 === strpos($config
->getName(), 'language.content_settings.') && $event
->isChanged('third_party_settings.content_translation.enabled')) {
$id = $config
->get('id');
list($entity_type_id, $bundle) = explode('.', $id);
if (!$config
->get('third_party_settings.content_translation.enabled')) {
/** @var LingotekConfigurationServiceInterface $lingotek_config */
$lingotek_config = \Drupal::service('lingotek.configuration');
if ($lingotek_config
->isEnabled($entity_type_id, $bundle)) {
$lingotek_config
->setEnabled($entity_type_id, $bundle, FALSE);
$fields = $lingotek_config
->getFieldsLingotekEnabled($entity_type_id, $bundle);
foreach ($fields as $field_name) {
$lingotek_config
->setFieldLingotekEnabled($entity_type_id, $bundle, $field_name, FALSE);
}
}
}
}
if (0 === strpos($config
->getName(), 'field.field.') && $event
->isChanged('translatable')) {
$id = $config
->get('id');
list($entity_type_id, $bundle, $field_name) = explode('.', $id);
if (!$config
->get('translatable')) {
/** @var LingotekConfigurationServiceInterface $lingotek_config */
$lingotek_config = \Drupal::service('lingotek.configuration');
$field_definition = \Drupal::entityManager()
->getFieldDefinitions($entity_type_id, $bundle);
// We need to make an exception for hosted entities. The field
// reference may not be translatable, but we want to translate the
// hosted entity. See https://www.drupal.org/node/2735121.
if ($field_definition[$field_name]
->getType() !== 'entity_reference_revisions' && $lingotek_config
->isFieldLingotekEnabled($entity_type_id, $bundle, $field_name)) {
$lingotek_config
->setFieldLingotekEnabled($entity_type_id, $bundle, $field_name, FALSE);
}
}
}
}
if ($event
->getConfig()
->getName() === 'lingotek.settings' && $event
->isChanged('translate.entity')) {
drupal_static_reset();
\Drupal::entityManager()
->clearCachedDefinitions();
\Drupal::service('router.builder')
->rebuild();
if (\Drupal::service('entity.definition_update_manager')
->needsUpdates()) {
$entity_types = \Drupal::service('lingotek.configuration')
->getEnabledEntityTypes();
foreach ($entity_types as $entity_type_id => $entity_type) {
$storage_definitions = \Drupal::entityManager()
->getFieldStorageDefinitions($entity_type_id);
$installed_storage_definitions = \Drupal::entityManager()
->getLastInstalledFieldStorageDefinitions($entity_type_id);
foreach (array_diff_key($storage_definitions, $installed_storage_definitions) as $storage_definition) {
/** @var $storage_definition \Drupal\Core\Field\FieldStorageDefinitionInterface */
if ($storage_definition
->getProvider() == 'lingotek') {
\Drupal::entityManager()
->onFieldStorageDefinitionCreate($storage_definition);
}
}
}
}
}
}