_webform_validate_file

Versions
5
_webform_validate_file($formelement, $form_key, $fieldname, $filters)
6
_webform_validate_file($form_element, &$form_state)
7
_webform_validate_file($element, &$form_state)

Code

contributions/webform/components/file.inc, line 206

<?php
function _webform_validate_file($formelement, $form_key, $fieldname, $filters) {
  if (empty($_FILES['files']['name'][$form_key])) {
    return;
  }

  // Build a list of extensions.
  $extensions = array();
  if (is_array($filters['types'])) {
    foreach ($filters['types'] as $filtertype) {
      foreach ($filtertype as $extension) {
        $extensions[] = $extension;
      }
    }
  }
  $extras = str_replace(" ", "", $filters['addextensions']);
  if (!empty($extras)) {
    $extensions = array_merge($extensions, explode(",", $extras));
  }

  // Build a human readable list of extensions:
  if (count($extensions) > 1) {
    for ($n = 0; $n < count($extensions) - 1; $n++) {
      $extension_list .= $extensions[$n] .", ";
    }
    $extension_list .= "or ". $extensions[count($extensions)-1];
  }
  else {
    $extension_list = $extensions[0];
  }

  $dot = strrpos($_FILES['files']['name'][$form_key], '.');
  $extension = strtolower(substr($_FILES['files']['name'][$form_key], $dot+1));
  if (!in_array($extension, $extensions)) {
    form_set_error($form_key, t("Files with the '%ext' extension are not allowed, please upload a file with a %exts extension.", array('%ext' => $extension, '%exts' => $extension_list)));
  }

  // Now let's check the file size (limit is set in KB).
  if ($_FILES['files']['size'][$form_key] > $filters['size']*1024) {
    form_set_error($form_key, t("The file '%filename' is too large (%filesize KB). Please upload a file %maxsize KB or smaller.", array('%filename' => $_FILES['files']['name'][$form_key], '%filesize' => (int)($_FILES['files']['size'][$form_key]/1024), '%maxsize' => $filters['size'])));
  }
}
?>

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • Web page addresses and e-mail addresses turn into links automatically.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.