config_process_file_input()

Parameters

ColumnTypeDefaultDescription
$page_def array
$file_location
$redirect_location

Location

include/config_functions.php lines 1271 to 1353

Definition

 
function config_process_file_input(array $page_def$file_location$redirect_location)
{
    global 
$baseurl$storagedir$storageurl$banned_extensions;

    
$file_server_location $storagedir '/' $file_location;

    
// Make sure there is a target location
    
if (!(file_exists($file_server_location) && is_dir($file_server_location))) {
        
mkdir($file_server_location0777true);
    }

    
$redirect false;

    foreach (
$page_def as $page_element) {
        if (
$page_element[0] !== 'file_input') {
            continue;
        }

        
$config_name $page_element[1];
        
$valid_extensions $page_element[5];

        
// DELETE
        
if (
            
getval('delete_' $config_name'') !== ''
            
&& enforcePostRequest(false)
            && 
get_config_option([], $config_name$delete_filename)
        ) {
            
$delete_filename str_replace('[storage_url]' '/' $file_location$file_server_location$delete_filename);

            if (
file_exists($delete_filename)) {
                
unlink($delete_filename);
                
hook("configdeletefilesuccess"'', array($delete_filename));
            }

            
delete_config_option([], $config_name);
            
$redirect true;
        }

        
// CLEAR
        
if (
            
getval('clear_' $config_name'') !== ''
            
&& enforcePostRequest(false)
            && 
get_config_option([], $config_name$missing_file)
        ) {
            
$missing_file str_replace('[storage_url]' '/' $file_location$file_server_location$missing_file);

            if (!
file_exists($missing_file)) {
                
delete_config_option([], $config_name);
                
$redirect true;
            }
        }

        
// UPLOAD
        
if (getval('upload_' $config_name'') !== '' && enforcePostRequest(false)) {
            if (isset(
$_FILES[$config_name]['tmp_name'])) {
                
$uploaded_file_extension parse_filename_extension($_FILES[$config_name]['name']);
                
$uploaded_filename sprintf('%s/%s.%s'$file_server_location$config_name$uploaded_file_extension);
                
// We add a placeholder for storage_url so we can reach the file easily
                // without storing the full path in the database
                
$saved_filename sprintf('[storage_url]/%s/%s.%s'$file_location$config_name$uploaded_file_extension);

                
$process_file_upload process_file_upload(
                    
$_FILES[$config_name],
                    new 
SplFileInfo($uploaded_filename),
                    [
'allow_extensions' => $valid_extensions]
                );

                if (!
$process_file_upload['success']) {
                    unset(
$uploaded_filename);
                }
            }

            if (isset(
$uploaded_filename) && set_config_option(null$config_name$saved_filename)) {
                
$redirect true;
                
hook("configuploadfilesuccess"'', array($uploaded_filename));
            }
        }
    }

    if (
$redirect) {
        
redirect($redirect_location);
    }
}

This article was last updated 26th April 2025 12:05 Europe/London time based on the source file dated 25th April 2025 15:15 Europe/London time.