Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 8 |
CRAP | |
0.00% |
0 / 47 |
| ContentTranslationManager | |
0.00% |
0 / 1 |
|
0.00% |
0 / 8 |
380 | |
0.00% |
0 / 47 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| getTranslationHandler | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| getTranslationMetadata | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| isSupported | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 3 |
|||
| getSupportedEntityTypes | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 8 |
|||
| setEnabled | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
|||
| isEnabled | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 13 |
|||
| loadContentLanguageSettings | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 9 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\content_translation\ContentTranslationManager. | |
| */ | |
| namespace Drupal\content_translation; | |
| use Drupal\Core\Entity\EntityInterface; | |
| use Drupal\Core\Entity\EntityManagerInterface; | |
| /** | |
| * Provides common functionality for content translation. | |
| */ | |
| class ContentTranslationManager implements ContentTranslationManagerInterface { | |
| /** | |
| * The entity type manager. | |
| * | |
| * @var \Drupal\Core\Entity\EntityManagerInterface | |
| */ | |
| protected $entityManager; | |
| /** | |
| * The updates manager. | |
| * | |
| * @var \Drupal\content_translation\ContentTranslationUpdatesManager | |
| */ | |
| protected $updatesManager; | |
| /** | |
| * Constructs a ContentTranslationManageAccessCheck object. | |
| * | |
| * @param \Drupal\Core\Entity\EntityManagerInterface $manager | |
| * The entity type manager. | |
| * @param \Drupal\content_translation\ContentTranslationUpdatesManager $updates_manager | |
| * The updates manager. | |
| */ | |
| public function __construct(EntityManagerInterface $manager, ContentTranslationUpdatesManager $updates_manager) { | |
| $this->entityManager = $manager; | |
| $this->updatesManager = $updates_manager; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| function getTranslationHandler($entity_type_id) { | |
| return $this->entityManager->getHandler($entity_type_id, 'translation'); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getTranslationMetadata(EntityInterface $translation) { | |
| // We need a new instance of the metadata handler wrapping each translation. | |
| $entity_type = $translation->getEntityType(); | |
| $class = $entity_type->get('content_translation_metadata'); | |
| return new $class($translation, $this->getTranslationHandler($entity_type->id())); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function isSupported($entity_type_id) { | |
| $entity_type = $this->entityManager->getDefinition($entity_type_id); | |
| return $entity_type->isTranslatable() && ($entity_type->hasLinkTemplate('drupal:content-translation-overview') || $entity_type->get('content_translation_ui_skip')); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getSupportedEntityTypes() { | |
| $supported_types = array(); | |
| foreach ($this->entityManager->getDefinitions() as $entity_type_id => $entity_type) { | |
| if ($this->isSupported($entity_type_id)) { | |
| $supported_types[$entity_type_id] = $entity_type; | |
| } | |
| } | |
| return $supported_types; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setEnabled($entity_type_id, $bundle, $value) { | |
| $config = $this->loadContentLanguageSettings($entity_type_id, $bundle); | |
| $config->setThirdPartySetting('content_translation', 'enabled', $value)->save(); | |
| $entity_type = $this->entityManager->getDefinition($entity_type_id); | |
| $this->updatesManager->updateDefinitions(array($entity_type_id => $entity_type)); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function isEnabled($entity_type_id, $bundle = NULL) { | |
| $enabled = FALSE; | |
| if ($this->isSupported($entity_type_id)) { | |
| $bundles = !empty($bundle) ? array($bundle) : array_keys($this->entityManager->getBundleInfo($entity_type_id)); | |
| foreach ($bundles as $bundle) { | |
| $config = $this->loadContentLanguageSettings($entity_type_id, $bundle); | |
| if ($config->getThirdPartySetting('content_translation', 'enabled', FALSE)) { | |
| $enabled = TRUE; | |
| break; | |
| } | |
| } | |
| } | |
| return $enabled; | |
| } | |
| /** | |
| * Loads a content language config entity based on the entity type and bundle. | |
| * | |
| * @param string $entity_type_id | |
| * ID of the entity type. | |
| * @param string $bundle | |
| * Bundle name. | |
| * | |
| * @return \Drupal\language\Entity\ContentLanguageSettings | |
| * The content language config entity if one exists. Otherwise, returns | |
| * default values. | |
| */ | |
| protected function loadContentLanguageSettings($entity_type_id, $bundle) { | |
| if ($entity_type_id == NULL || $bundle == NULL) { | |
| return NULL; | |
| } | |
| $config = $this->entityManager->getStorage('language_content_settings')->load($entity_type_id . '.' . $bundle); | |
| if ($config == NULL) { | |
| $config = $this->entityManager->getStorage('language_content_settings')->create(['target_entity_type_id' => $entity_type_id, 'target_bundle' => $bundle]); | |
| } | |
| return $config; | |
| } | |
| } |