brrocks28
5/3/2017 - 5:37 AM

File upload handling save update remove

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;
}