function file_managed_file_save_upload

Saves any files that have been uploaded into a managed_file element.

Parameters

$element: The FAPI element whose values are being saved.

Return value

An array of file entities for each file that was saved, keyed by its file ID, or FALSE if no files were saved.

1 call to file_managed_file_save_upload()
file_managed_file_value in drupal/core/modules/file/file.module
Render API callback: Determines the value for a managed_file type element.

File

drupal/core/modules/file/file.module, line 1182
Defines a "managed_file" Form API field and a "file" field for Field module.

Code

function file_managed_file_save_upload($element) {
  $upload_name = implode('_', $element['#parents']);
  if (empty($_FILES['files']['name'][$upload_name])) {
    return FALSE;
  }
  $destination = isset($element['#upload_location']) ? $element['#upload_location'] : NULL;
  if (isset($destination) && !file_prepare_directory($destination, FILE_CREATE_DIRECTORY)) {
    watchdog('file', 'The upload directory %directory for the file field !name could not be created or is not accessible. A newly uploaded file could not be saved in this directory as a consequence, and the upload was canceled.', array(
      '%directory' => $destination,
      '!name' => $element['#field_name'],
    ));
    form_set_error($upload_name, t('The file could not be uploaded.'));
    return FALSE;
  }

  // Save attached files to the database.
  $files_uploaded = $element['#multiple'] && count(array_filter($_FILES['files']['name'][$upload_name])) > 0;
  $files_uploaded |= !$element['#multiple'] && !empty($_FILES['files']['name'][$upload_name]);
  if ($files_uploaded) {
    if (!($files = file_save_upload($upload_name, $element['#upload_validators'], $destination))) {
      watchdog('file', 'The file upload failed. %upload', array(
        '%upload' => $upload_name,
      ));
      form_set_error($upload_name, t('Files in the !name field were unable to be uploaded.', array(
        '!name' => $element['#title'],
      )));
      return array();
    }

    // Value callback expects FIDs to be keys.
    $files = array_filter($files);
    $fids = array_map(function ($file) {
      return $file->fid;
    }, $files);
    return empty($files) ? array() : array_combine($fids, $files);
  }
  return array();
}