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