function filefield_sources_element_validate in FileField Sources 7
Same name and namespace in other branches
- 8 filefield_sources.module \filefield_sources_element_validate()
 - 6 filefield_sources.module \filefield_sources_element_validate()
 
Validate a file based on the $element['#upload_validators'] property.
2 calls to filefield_sources_element_validate()
- filefield_source_imce_value in sources/
imce.inc  - A #filefield_value_callback function.
 - filefield_source_reference_value in sources/
reference.inc  - A #filefield_value_callback function.
 
File
- ./
filefield_sources.module, line 663  - Extend FileField to allow files from multiple sources.
 
Code
function filefield_sources_element_validate($element, $file) {
  $validators = $element['#upload_validators'];
  $errors = array();
  // Since this frequently is used to reference existing files, check that
  // they exist first in addition to the normal validations.
  if (!file_exists($file->uri)) {
    $errors[] = t('The file does not exist.');
  }
  else {
    foreach ($validators as $function => $args) {
      // Add the $file variable to the list of arguments and pass it by
      // reference (required for PHP 5.3 and higher).
      array_unshift($args, NULL);
      $args[0] =& $file;
      $errors = array_merge($errors, call_user_func_array($function, $args));
    }
  }
  // Check for validation errors.
  if (!empty($errors)) {
    $message = t('The selected file %name could not be referenced.', array(
      '%name' => $file->filename,
    ));
    if (count($errors) > 1) {
      $message .= '<ul><li>' . implode('</li><li>', $errors) . '</li></ul>';
    }
    else {
      $message .= ' ' . array_pop($errors);
    }
    form_error($element, $message);
    return 0;
  }
  return 1;
}