File upload handling save update remove
//in form
$reference_file = isset($stored_data[0]->reference_fid) ? file_load($stored_data[0]->reference_fid) : NULL;
$form['reference_fid'] = array(
'#type' => 'managed_file',
'#title' => t('Reference'),
'#default_value' => $reference_file ? $reference_file->fid : 0,
'#upload_location' => 'public://',
'#prefix' => '',
'#suffix' => '',
'#upload_validators' => array(
'file_validate_extensions' => array('doc docx pdf xls xlsx png jpg jpeg ppt'),
),
);
if (isset($reference_file) && !empty($reference_file)) {
$form['current_file'] = array(
'#type' => 'hidden',
'#value' => $reference_file->fid,
);
}
/**
* File upload SAVE, UPDATE and Remove Handeling.
* @param type $new_fid L : new
* @param type $current_fid : old
* @return string : computed fid
*/
function file_save_update_remove_handling($new_fid = 0, $current_fid = NULL) {
$current_file_set = isset($current_fid);
if ($new_fid != 0 && !$current_file_set) {
//case new add
$file = file_load($new_fid);
$file->status = FILE_STATUS_PERMANENT;
$file_saved = file_save($file);
// Record that the module is using the file.
$reference_fid = $file_saved->fid;
file_usage_add($file_saved, 'leadscrm', 'expense_uploads', $file_saved->fid);
}
else if ($new_fid != 0 && $current_file_set) {
//case update
// If we are uploading a different picture, delete the old one and save the
// new one. If not, then set previous value.
if ($current_fid != $new_fid) {
file_delete(file_load($current_fid));
// Load the file uploaded in the form.
$file = file_load($new_fid);
$file->status = FILE_STATUS_PERMANENT;
$file_saved = file_save($file);
// Record that the module is using the file.
$reference_fid = $file_saved->fid;
file_usage_add($file_saved, 'leadscrm', 'expense_uploads', $file_saved->fid);
}
else {
$reference_fid = $current_fid;
}
}
else {
//case remove or not set
if($current_file_set){
$cf = file_load($current_fid);
file_usage_delete($cf,'leadscrm', 'expense_uploads', $cf->fid);
file_delete($cf);
}
$reference_fid = NULL;
}
return $reference_fid;
}