file_entity-8.x-2.x-dev/src/UploadValidatorsTrait.php

src/UploadValidatorsTrait.php
<?php

namespace Drupal\file_entity;

use Drupal\Component\Utility\Bytes;
use Drupal\Component\Utility\Environment;

/**
 * Trait for validating form uploads.
 */
trait UploadValidatorsTrait {

  /**
   * Retrieves the upload validators for a file or archive.
   *
   * @param array $options
   *   (optional) An array of options for file validation.
   *
   * @return array
   *   An array suitable for passing to file_save_upload() or for a managed_file
   *   or upload element's '#upload_validators' property.
   */
  public function getUploadValidators(array $options = array()) {
    // Set up file upload validators.
    $validators = array();

    // Validate file extensions. If there are no file extensions in $params and
    // there are no Media defaults, there is no file extension validation.
    if (!empty($options['file_extensions'])) {
      $validators['FileExtension'] = ['extensions' => $options['file_extensions']];
    }

    // Cap the upload size according to the system or user defined limit.
    $max_filesize = Environment::getUploadMaxSize();
    $user_max_filesize = Bytes::toNumber(\Drupal::config('file_entity.settings')
      ->get('max_filesize'));

    // If the user defined a size limit, use the smaller of the two.
    if (!empty($user_max_filesize)) {
      $max_filesize = min($max_filesize, $user_max_filesize);
    }

    if (!empty($options['max_filesize']) && $options['max_filesize'] < $max_filesize) {
      $max_filesize = Bytes::toNumber($options['max_filesize']);
    }

    // There is always a file size limit due to the PHP server limit.
    $validators['FileSizeLimit'] = ['fileLimit' => $max_filesize];

    // Add image validators.
    $options += array('min_resolution' => 0, 'max_resolution' => 0);
    if ($options['min_resolution'] || $options['max_resolution']) {
      $validators['FileImageDimensions'] = [
        'maxDimensions' => $options['max_resolution'] . 'x' . $options['min_resolution'],
      ];
    }

    // Add other custom upload validators from options.
    if (!empty($options['upload_validators'])) {
      $validators += $options['upload_validators'];
    }

    return $validators;
  }

}

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

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