1 file.pages.inc file_get_upload_validators(array $options = array())

Retrieves the upload validators for a file.

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.

File

core/modules/file/file.pages.inc, line 1109
Supports file operations including Manage and Delete.

Code

function file_get_upload_validators(array $options = array()) {
  $config = config('file.settings');
  // 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']);
  }
  else {
    $validators['file_validate_extensions'] = array($config->get('default_allowed_extensions'));
  }

  // Cap the upload size according to the system or user defined limit.
  $max_filesize = parse_size(file_upload_max_size());
  $file_max_filesize = parse_size($config->get('max_filesize'));

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

  if (!empty($options['max_filesize']) && $options['max_filesize'] < $max_filesize) {
    $max_filesize = parse_size($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;
}