Saves any files that have been uploaded into a managed_file element.
$element: The FAPI element whose values are being saved.
An array of file entities for each file that was saved, keyed by its file ID, or FALSE if no files were saved.
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();
}