public function LingotekActionsManagementSubscriber::onConfigSave in Lingotek Translation 8.2
Same name and namespace in other branches
- 4.0.x src/Plugin/Action/Subscriber/LingotekActionsManagementSubscriber.php \Drupal\lingotek\Plugin\Action\Subscriber\LingotekActionsManagementSubscriber::onConfigSave()
- 3.0.x src/Plugin/Action/Subscriber/LingotekActionsManagementSubscriber.php \Drupal\lingotek\Plugin\Action\Subscriber\LingotekActionsManagementSubscriber::onConfigSave()
- 3.1.x src/Plugin/Action/Subscriber/LingotekActionsManagementSubscriber.php \Drupal\lingotek\Plugin\Action\Subscriber\LingotekActionsManagementSubscriber::onConfigSave()
- 3.2.x src/Plugin/Action/Subscriber/LingotekActionsManagementSubscriber.php \Drupal\lingotek\Plugin\Action\Subscriber\LingotekActionsManagementSubscriber::onConfigSave()
- 3.3.x src/Plugin/Action/Subscriber/LingotekActionsManagementSubscriber.php \Drupal\lingotek\Plugin\Action\Subscriber\LingotekActionsManagementSubscriber::onConfigSave()
- 3.4.x src/Plugin/Action/Subscriber/LingotekActionsManagementSubscriber.php \Drupal\lingotek\Plugin\Action\Subscriber\LingotekActionsManagementSubscriber::onConfigSave()
- 3.5.x src/Plugin/Action/Subscriber/LingotekActionsManagementSubscriber.php \Drupal\lingotek\Plugin\Action\Subscriber\LingotekActionsManagementSubscriber::onConfigSave()
- 3.6.x src/Plugin/Action/Subscriber/LingotekActionsManagementSubscriber.php \Drupal\lingotek\Plugin\Action\Subscriber\LingotekActionsManagementSubscriber::onConfigSave()
- 3.7.x src/Plugin/Action/Subscriber/LingotekActionsManagementSubscriber.php \Drupal\lingotek\Plugin\Action\Subscriber\LingotekActionsManagementSubscriber::onConfigSave()
- 3.8.x src/Plugin/Action/Subscriber/LingotekActionsManagementSubscriber.php \Drupal\lingotek\Plugin\Action\Subscriber\LingotekActionsManagementSubscriber::onConfigSave()
Creates and deletes the actions associated with the enabled entities.
Parameters
\Drupal\Core\Config\ConfigCrudEvent $event: The configuration event.
File
- src/
Plugin/ Action/ Subscriber/ LingotekActionsManagementSubscriber.php, line 68
Class
Namespace
Drupal\lingotek\Plugin\Action\SubscriberCode
public function onConfigSave(ConfigCrudEvent $event) {
if (\Drupal::isConfigSyncing()) {
return;
}
$actions = [
'entity:lingotek_upload_action',
'entity:lingotek_check_upload_action',
'entity:lingotek_request_translations_action',
'entity:lingotek_check_translations_action',
'entity:lingotek_download_translations_action',
'entity:lingotek_cancel_action',
'entity:lingotek_delete_translations_action',
];
$lang_actions = [
'entity:lingotek_check_translation_action',
'entity:lingotek_download_translation_action',
'entity:lingotek_request_translation_action',
'entity:lingotek_delete_translation_action',
'entity:lingotek_cancel_translation_action',
];
$config = $event
->getConfig();
$configName = $config
->getName();
if ($configName === 'lingotek.settings' && $event
->isChanged('translate.entity')) {
$entity_types = $this->entityTypeManager
->getDefinitions();
$enabled_entity_types = $this->lingotekConfiguration
->getEnabledEntityTypes();
foreach ($entity_types as $entity_type_id => $entity_type) {
foreach ($actions as $action) {
$pluginId = $action . ':' . $entity_type_id;
/** @var \Drupal\Component\Plugin\Definition\PluginDefinitionInterface $plugin */
$plugin = $this->actionManager
->getDefinition($pluginId);
$action_id = $entity_type_id . '_' . str_replace('entity:', '', $action);
$existingAction = $this->entityTypeManager
->getStorage('action')
->load($action_id);
if (isset($enabled_entity_types[$entity_type_id]) && !$existingAction) {
Action::create([
'id' => $action_id,
'label' => $plugin['label'],
'type' => $entity_type_id,
'plugin' => $pluginId,
'configuration' => [],
])
->save();
}
elseif (!isset($enabled_entity_types[$entity_type_id]) && $existingAction) {
$existingAction
->delete();
}
}
$languages = \Drupal::languageManager()
->getLanguages();
foreach ($lang_actions as $action) {
foreach ($languages as $langcode => $language) {
$pluginId = $action . ':' . $entity_type_id;
/** @var \Drupal\Component\Plugin\Definition\PluginDefinitionInterface $plugin */
$plugin = $this->actionManager
->getDefinition($pluginId, FALSE);
$action_id = $entity_type_id . '_' . $langcode . '_' . str_replace('entity:', '', $action);
$existingAction = $this->entityTypeManager
->getStorage('action')
->load($action_id);
if ($plugin && isset($enabled_entity_types[$entity_type_id]) && !$existingAction) {
Action::create([
'id' => $action_id,
'label' => new FormattableMarkup($plugin['action_label'], [
'@entity_label' => $entity_type
->getSingularLabel(),
'@language' => $language
->getName(),
]),
'type' => $entity_type_id,
'plugin' => $pluginId,
'configuration' => [
'language' => $langcode,
],
])
->save();
}
elseif (!isset($enabled_entity_types[$entity_type_id]) && $existingAction) {
$existingAction
->delete();
}
}
}
}
}
if (0 === strpos($configName, 'language.entity.')) {
$langcode = $config
->get('id');
$langname = $config
->get('label');
$entity_types = $this->entityTypeManager
->getDefinitions();
$enabled_entity_types = $this->lingotekConfiguration
->getEnabledEntityTypes();
foreach ($entity_types as $entity_type_id => $entity_type) {
foreach ($lang_actions as $action) {
$pluginId = $action . ':' . $entity_type_id;
/** @var \Drupal\Component\Plugin\Definition\PluginDefinitionInterface $plugin */
$plugin = $this->actionManager
->getDefinition($pluginId, FALSE);
$action_id = $entity_type_id . '_' . $langcode . '_' . str_replace('entity:', '', $action);
$existingAction = $this->entityTypeManager
->getStorage('action')
->load($action_id);
if ($plugin && isset($enabled_entity_types[$entity_type_id]) && !$existingAction) {
Action::create([
'id' => $action_id,
'label' => new FormattableMarkup($plugin['action_label'], [
'@entity_label' => $entity_type
->getSingularLabel(),
'@language' => $langname,
]),
'type' => $entity_type_id,
'plugin' => $pluginId,
'configuration' => [
'language' => $langcode,
],
])
->save();
}
elseif (!isset($enabled_entity_types[$entity_type_id]) && $existingAction) {
$existingAction
->delete();
}
}
}
}
}