basket_imex-10.x-dev/src/Plugin/IMEX/field/FileFieldInFolder.php

src/Plugin/IMEX/field/FileFieldInFolder.php
<?php

namespace Drupal\basket_imex\Plugin\IMEX\field;

/**
 * FileFieldInFolder IMEX type.
 *
 * @BasketIMEXfield(
 *   id = "file_in_folder",
 *   type = {"image","file"},
 *   name = "File in folder /IMEX_FILES/",
 *   type_info = "(string)<br/>File in a folder /IMEX_FILES/",
 * )
 */
class FileFieldInFolder extends FileField {

  const FOLDER = '/IMEX_FILES/';

  /**
   * Data array formation.
   *
   * @param object $entity
   *   Entity that has been updated.
   * @param string $importValue
   *   Import value.
   */
  public function setValues($entity, $importValue = '') {
    $dir = DRUPAL_ROOT . $this::FOLDER;
    $newImportValue = [];
    $images = explode(PHP_EOL, $importValue);
    if (!empty($images)) {
      foreach ($images as $image) {
        $fileRun = NULL;
        $files = NULL;
        if (is_dir($dir)) {
          $files = \Drupal::service('file_system')->scanDirectory($dir, '/^' . preg_quote(trim($image)) . '$/');
        }
        if (!empty($files)) {
          foreach ($files as $file) {
            if ($file->filename == trim($image)) {
              $fileRun = str_replace(DRUPAL_ROOT, $GLOBALS['base_url'], $file->uri);
              break;
            }
          }
        }
        $newImportValue[trim($image)] = $fileRun ?? trim($image);
      }
    }
    $importValue = !empty($newImportValue) ? implode(PHP_EOL, $newImportValue) : $importValue;
    return parent::setValues($entity, $importValue);
  }

}

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

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