file_bulkupload_translations-1.0.x-dev/src/ContentMultiUploadTranslationHandler.php

src/ContentMultiUploadTranslationHandler.php
<?php

declare(strict_types=1);

namespace Drupal\file_bulkupload_translations;

use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Language\LanguageManagerInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\file\FileInterface;

/**
 * Handles the translation of Media Documents in bulk.
 */
class ContentMultiUploadTranslationHandler {
  use StringTranslationTrait;

  /**
   * The language manager.
   *
   * @var \Drupal\Core\Language\LanguageManagerInterface
   */
  protected $languageManager;

  /**
   * The configuration factory service.
   *
   * @var \Drupal\Core\Config\ConfigFactoryInterface
   */
  protected $configFactory;

  /**
   * Constructs a new Multiupload Translation Handler.
   *
   * @param \Drupal\Core\Language\LanguageManagerInterface $languageManager
   *   The language manager.
   * @param \Drupal\Core\Config\ConfigFactoryInterface $configFactory
   *   The config factory service.
   */
  public function __construct(LanguageManagerInterface $languageManager, ConfigFactoryInterface $configFactory) {
    $this->languageManager = $languageManager;
    $this->configFactory = $configFactory;
  }

  /**
   * Get all 'file_bulkupload_translations' fields from an entity.
   *
   * @param \Drupal\Core\Entity\EntityInterface $entity
   *   The entity object.
   */
  public function getFileAndTranslationFields(EntityInterface $entity) {
    $file_bulkupload_translations_fields = [];
    foreach ($entity as $field_name => $field) {
      // Upload files.
      if($field instanceof Drupal\Core\Field\FieldItemList &&
        $field->getFieldDefinition()->getType() === 'file_bulkupload_translations') {
          $file_bulkupload_translations_fields[$field_name] = $field;
      }
    }
    return $file_bulkupload_translations_fields;
  }

  /**
   * Checks for valid language suffix in file name.
   *
   * @param \Drupal\file\FileInterface $file
   *   A file entity.
   */
  public function fileValidateLanguageSuffix(FileInterface $file) {
//    $errors = [];
//    $filename = $file->getFilename();
//
//    $current_language = $this->languageManager->getCurrentLanguage()->getId();
//    $default_language = $this->languageManager->getDefaultLanguage()->getId();
//    $file_language_suffix = $this->getLanguageSuffix($filename);
//
//    $enabled_langcodes = $this->getLanguageCodes();
//
//    if (!in_array($file_language_suffix, $enabled_langcodes)) {
//      $errors[] = $this->t('The file name should specify a valid language code as the suffix of the file name separated by a hyphen or underscore. Example: myfile-en.pdf.', [
//        '%filename' => $filename,
//      ]);
//      $errors[] = $this->t('Only the following languages are allowed: %languages-allowed.', [
//        '%languages-allowed' => implode(', ', $enabled_langcodes),
//      ]);
//    }
//
//    if ($current_language !== $default_language) {
//
//      if ($file_language_suffix !== $current_language) {
//        $errors[] = $this->t('The file name suffix must match the current page language (%current_language). The provided suffix is %provided_suffix.', [
//          '%current_language' => $current_language,
//          '%provided_suffix' => $file_language_suffix,
//        ]);
//      }
//    }
//
//    return $errors;
  }

  /**
   * Get prefixes from enabled languages.
   */
  public function getLanguageCodes(): array {
    if (!isset($this->languagePrefixes)) {
      $this->languagePrefixes = [];
      $language_prefixes = $this->configFactory->get('language.negotiation')->get('url.prefixes');
      if (!empty($language_prefixes)) {
        foreach ($this->languageManager->getLanguages() as $langCode => $language) {
          $prefix = mb_substr($langCode, 0, 2);
          $this->languagePrefixes[$langCode] = $prefix;
        }
      }
    }
    return $this->languagePrefixes;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc