protected static function FilebrowserManagedFile::custom_file_managed_file_save_upload in Filebrowser 8.2
Same name and namespace in other branches
- 3.x src/Element/FilebrowserManagedFile.php \Drupal\filebrowser\Element\FilebrowserManagedFile::custom_file_managed_file_save_upload()
1 call to FilebrowserManagedFile::custom_file_managed_file_save_upload()
- FilebrowserManagedFile::valueCallback in src/
Element/ FilebrowserManagedFile.php - Determines how user input is mapped to an element's #value property.
File
- src/
Element/ FilebrowserManagedFile.php, line 31
Class
- FilebrowserManagedFile
- Provides an AJAX/progress aware widget for uploading and saving a file.
Namespace
Drupal\filebrowser\ElementCode
protected static function custom_file_managed_file_save_upload($element, FormStateInterface $form_state) {
$upload_name = implode('_', $element['#parents']);
$all_files = \Drupal::request()->files
->get('files', array());
if (empty($all_files[$upload_name])) {
return FALSE;
}
$file_upload = $all_files[$upload_name];
$destination = isset($element['#upload_location']) ? $element['#upload_location'] : NULL;
if (isset($destination) && !\Drupal::service('file_system')
->prepareDirectory($destination, FileSystemInterface::CREATE_DIRECTORY)) {
\Drupal::logger('file')
->notice('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_state
->setError($element, t('The file could not be uploaded.'));
return FALSE;
}
// Save attached files to the database.
$files_uploaded = $element['#multiple'] && count(array_filter($file_upload)) > 0;
$files_uploaded |= !$element['#multiple'] && !empty($file_upload);
if ($files_uploaded) {
$nid = \Drupal::routeMatch()
->getParameter('nid');
if (ctype_digit($nid)) {
$node = Node::load($nid);
}
else {
$node = null;
}
if ($node instanceof NodeInterface) {
$config = \Drupal::config('filebrowser.settings');
$config = $config
->get('filebrowser');
$nodeValues = isset($node->filebrowser) ? $node->filebrowser : null;
$allowOverwrite = isset($nodeValues->allowOverwrite) ? $nodeValues->allowOverwrite : $config['uploads']['allow_overwrite'];
if ($allowOverwrite) {
$files = file_save_upload($upload_name, $element['#upload_validators'], $destination, null, FileSystem::EXISTS_REPLACE);
}
else {
$files = file_save_upload($upload_name, $element['#upload_validators'], $destination);
}
}
else {
$files = file_save_upload($upload_name, $element['#upload_validators'], $destination);
}
if (!$files) {
\Drupal::logger('file')
->notice('The file upload failed. %upload', array(
'%upload' => $upload_name,
));
$form_state
->setError($element, 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
->id();
}, $files);
return empty($files) ? array() : array_combine($fids, $files);
}
return array();
}