wpcf7_unship_uploaded_file()
Validates uploaded files and moves them to the temporary directory.
Хуки из функции
Возвращает
bool|WP_Error. True if all files are successfully unshipped, or WP_Error if any exception occurs.
Использование
wpcf7_unship_uploaded_file( $file, $options, $uploaded_files );
- $file(массив) (обязательный)
- An item of
$_FILES. - $options(строка|массив) (обязательный)
- Options to control behavior. Not optional.
- $uploaded_files(массив) (обязательный) (передается по ссылке — &)
- A temporary container of uploaded files.
Код wpcf7_unship_uploaded_file() wpcf7 unship uploaded file CF7 6.2.4.1
function wpcf7_unship_uploaded_file( $file, $options, &$uploaded_files ) {
$filesystem = WPCF7_Filesystem::get_instance();
$options = wp_parse_args( $options, array(
'required' => false,
'filetypes' => '',
'limit' => MB_IN_BYTES,
) );
foreach ( array( 'name', 'size', 'tmp_name', 'error' ) as $key ) {
if ( ! isset( $file[$key] ) ) {
$file[$key] = array();
}
}
$names = wpcf7_array_flatten( $file['name'] );
$sizes = wpcf7_array_flatten( $file['size'] );
$tmp_names = wpcf7_array_flatten( $file['tmp_name'] );
$errors = wpcf7_array_flatten( $file['error'] );
foreach ( $errors as $error ) {
if ( ! empty( $error ) and UPLOAD_ERR_NO_FILE !== $error ) {
return new WP_Error( 'wpcf7_upload_failed_php_error',
wpcf7_get_message( 'upload_failed_php_error' )
);
}
}
// Move uploaded file to tmp dir
$uploads_dir = wpcf7_upload_tmp_dir();
$uploads_dir = wpcf7_maybe_add_random_dir( $uploads_dir );
foreach ( $names as $key => $name ) {
$tmp_name = $tmp_names[$key];
if ( empty( $tmp_name ) or ! is_uploaded_file( $tmp_name ) ) {
continue;
}
$filename = $name;
$filename = wpcf7_canonicalize( $filename, array( 'strto' => 'as-is' ) );
$filename = wpcf7_antiscript_file_name( $filename );
$filename = apply_filters( 'wpcf7_upload_file_name',
$filename, $name, $options
);
$filename = wp_unique_filename( $uploads_dir, $filename );
$new_file = path_join( $uploads_dir, $filename );
// phpcs:ignore Generic.PHP.ForbiddenFunctions.Found
if ( false === @move_uploaded_file( $tmp_name, $new_file ) ) {
return new WP_Error( 'wpcf7_upload_failed',
wpcf7_get_message( 'upload_failed' )
);
}
// Make sure the uploaded file is only readable for the owner process.
$filesystem->chmod( $new_file, 0400 );
$uploaded_files[] = $new_file;
}
return true;
}