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; | |
| } | |
| } |