LingotekConfigMetadata.php in Lingotek Translation 3.5.x        
                          
                  
                        
  
  
  
  
File
  src/Entity/LingotekConfigMetadata.php
  
    View source  
  <?php
namespace Drupal\lingotek\Entity;
use Drupal\Core\Config\Entity\ConfigEntityBase;
use Drupal\field\Entity\FieldConfig;
use Drupal\lingotek\LingotekConfigMetadataInterface;
class LingotekConfigMetadata extends ConfigEntityBase implements LingotekConfigMetadataInterface {
  
  protected $config_name;
  
  protected $document_id;
  
  protected $source_status = [];
  
  protected $target_status = [];
  
  protected $profile = NULL;
  
  protected $hash = NULL;
  
  protected $job_id = '';
  
  protected $uploaded_timestamp = NULL;
  
  protected $updated_timestamp = NULL;
  
  public function getDocumentId() {
    return $this->document_id;
  }
  
  public function setDocumentId($document_id) {
    $this->document_id = $document_id;
    return $this;
  }
  
  public function getSourceStatus() {
    return $this->source_status;
  }
  
  public function setSourceStatus(array $source_status) {
    $this->source_status = $source_status;
    return $this;
  }
  
  public function getTargetStatus() {
    return $this->target_status;
  }
  
  public function setTargetStatus(array $target_status) {
    $this->target_status = $target_status;
    return $this;
  }
  
  public function getProfile() {
    return $this->profile;
  }
  
  public function setProfile($profile) {
    $this->profile = $profile;
    return $this;
  }
  
  public function getHash() {
    return $this->hash;
  }
  
  public function setHash($hash) {
    $this->hash = $hash;
    return $this;
  }
  
  public function getJobId() {
    return $this->job_id;
  }
  
  public function setJobId($job_id) {
    $this->job_id = $job_id;
    return $this;
  }
  
  public function setLastUpdated($timestamp) {
    $this->updated_timestamp = $timestamp;
    return $this;
  }
  
  public function getLastUpdated() {
    return $this->updated_timestamp;
  }
  
  public function setLastUploaded($timestamp) {
    $this->uploaded_timestamp = $timestamp;
    return $this;
  }
  
  public function getLastUploaded() {
    return $this->uploaded_timestamp;
  }
  
  public static function loadByConfigName($config_name) {
    if ($config_name == NULL) {
      return NULL;
    }
    
    $storage = \Drupal::entityTypeManager()
      ->getStorage('lingotek_config_metadata');
    $config = $storage
      ->load($config_name);
    if ($config == NULL) {
      $config = $storage
        ->create([
        'config_name' => $config_name,
      ]);
    }
    return $config;
  }
  
  public function id() {
    return $this->config_name;
  }
  
  public function calculateDependencies() {
    parent::calculateDependencies();
    
    $dependency_name = $this
      ->getDependencyName();
    $this
      ->addDependency('config', $dependency_name);
    return $this;
  }
  public function getDependencyName() {
    list($entity_type, $entity_id) = explode('.', $this->config_name, 2);
    if ($entity_type === 'field_config') {
      $field_config = FieldConfig::load($entity_id);
      $value = $field_config
        ->getConfigDependencyName();
    }
    elseif ($this
      ->entityTypeManager()
      ->hasDefinition($entity_type)) {
      $storage = $this
        ->entityTypeManager()
        ->getStorage($entity_type);
      $entity = $storage
        ->load($entity_id);
      $value = $entity ? $entity
        ->getConfigDependencyName() : $this->config_name;
    }
    else {
      $value = $this->config_name;
    }
    return $value;
  }
  
  public function getConfigMapper() {
    $mapper = NULL;
    
    $mappers = \Drupal::service('plugin.manager.config_translation.mapper')
      ->getMappers();
    $name = $this
      ->getDependencyName();
    $config_mapper_id = $this
      ->getMapperIdForName($name);
    if (isset($mappers[$config_mapper_id])) {
      $mapper = $mappers[$config_mapper_id];
    }
    else {
      list($entity_type, $entity_id) = explode('.', $this->config_name, 2);
      if (isset($mappers[$entity_type])) {
        $storage = $this
          ->entityTypeManager()
          ->getStorage($entity_type);
        $entity = $storage
          ->load($entity_id);
        $mapper = clone $mappers[$entity_type];
        $mapper
          ->setEntity($entity);
      }
    }
    return $mapper;
  }
  
  protected function getMapperIdForName($name) {
    $mapper_id = NULL;
    
    $config_mappers = \Drupal::service('plugin.manager.config_translation.mapper')
      ->getMappers();
    foreach ($config_mappers as $config_mapper_id => $config_mapper) {
      $names = $config_mapper
        ->getConfigNames();
      if (in_array($name, $names)) {
        $mapper_id = $config_mapper_id;
        break;
      }
    }
    return $mapper_id;
  }
}