You are here

public function UploadValidatorsTrait::getUploadValidators in File Entity (fieldable files) 8.2

Retrieves the upload validators for a file or archive.

Parameters

array $options: (optional) An array of options for file validation.

Return value

array An array suitable for passing to file_save_upload() or for a managed_file or upload element's '#upload_validators' property.

3 calls to UploadValidatorsTrait::getUploadValidators()
FileAddArchiveForm::buildForm in src/Form/FileAddArchiveForm.php
Form constructor.
FileAddForm::stepUpload in src/Form/FileAddForm.php
Step 1 Generate form fields for the first step in the add file wizard.
FileEditForm::form in src/Form/FileEditForm.php
Gets the actual form array to be built.

File

src/UploadValidatorsTrait.php, line 23

Class

UploadValidatorsTrait
Trait for validating form uploads.

Namespace

Drupal\file_entity

Code

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['file_validate_extensions'] = array(
      $options['file_extensions'],
    );
  }

  // Cap the upload size according to the system or user defined limit.
  $max_filesize = Environment::getUploadMaxSize();
  $user_max_filesize = Bytes::toInt(\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::toInt($options['max_filesize']);
  }

  // There is always a file size limit due to the PHP server limit.
  $validators['file_validate_size'] = array(
    $max_filesize,
  );

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

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