You are here

function filedepotAjaxServer_deleteFile in filedepot 7

Same name and namespace in other branches
  1. 6 lib-ajaxserver.php \filedepotAjaxServer_deleteFile()
1 call to filedepotAjaxServer_deleteFile()
filedepot_dispatcher in ./ajaxserver.php

File

./lib-ajaxserver.php, line 1111
lib-ajaxserver.php Library functions for the ajax_server

Code

function filedepotAjaxServer_deleteFile($fid) {
  $filedepot = filedepot_filedepot();
  $retval = array();
  $reportmode = check_plain($_POST['reportmode']);
  $listing_folder = intval($_POST['listingcid']);
  $filedepot->cid = $listing_folder;
  $filedepot->activeview = $reportmode;
  $retval['fid'] = $fid;
  if ($reportmode == 'approvals') {
    $retval['cid'] = db_query("SELECT cid FROM {filedepot_filesubmissions} WHERE id=:fid", array(
      ':fid' => $fid,
    ))
      ->fetchField();
  }
  elseif ($reportmode == 'incoming') {
    $drupal_fid = db_query("SELECT drupal_fid FROM {filedepot_import_queue} WHERE id=:fid", array(
      ':fid' => $fid,
    ))
      ->fetchField();
  }
  else {
    $retval['cid'] = db_query("SELECT cid FROM {filedepot_files} WHERE fid=:fid", array(
      ':fid' => $fid,
    ))
      ->fetchField();
  }
  $message = '';
  if ($reportmode == 'approvals' and $filedepot
    ->checkPermission($retval['cid'], 'approval')) {
    if ($filedepot
      ->deleteSubmission($fid)) {
      $retval['retcode'] = 200;
      $message = '<div class="pluginInfo aligncenter" style="width:100%;height:60px;padding-top:30px;">';
      $message .= t('File was sucessfully deleted. This message will clear in a couple seconds');
      $message .= '</div>';
      $retval['displayhtml'] = filedepot_displayFolderListing($listing_folder);
    }
    else {
      $retval['retcode'] = 500;
    }
  }
  elseif ($reportmode == 'incoming') {
    if ($drupal_fid > 0) {
      $filepath = db_query("SELECT filepath FROM {files} WHERE fid=:fid", array(
        ':fid' => $drupal_fid,
      ))
        ->fetchField();
      if (!empty($filepath) and file_exists($filepath)) {
        @unlink($filepath);
      }
      db_query("DELETE FROM {files} WHERE fid=:fid", array(
        ':fid' => $drupal_fid,
      ));
      db_query("DELETE FROM {filedepot_import_queue} WHERE id=:fid", array(
        ':fid' => $fid,
      ));
      $retval['retcode'] = 200;
      $filedepot->activeview = 'incoming';
      $retval['displayhtml'] = filedepot_displayFolderListing();
      $retval = filedepotAjaxServer_generateLeftSideNavigation($retval);
    }
    else {
      $retval['retcode'] = 500;
    }
  }
  elseif ($filedepot
    ->deleteFile($fid)) {

    /* Includes security tests that user can delete this file */
    if (!in_array($reportmode, $filedepot->validReportingModes)) {
      $filedepot->ajaxBackgroundMode = TRUE;
    }
    $retval['retcode'] = 200;
    $message = '<div class="pluginInfo aligncenter" style="width:100%;height:60px;padding-top:30px;">';
    $message .= t('File was sucessfully deleted. This message will clear in a couple seconds');
    $message .= '</div>';
    $retval['displayhtml'] = filedepot_displayFolderListing($listing_folder);
    if (is_array($filedepot->lastRenderedFiles) and count($filedepot->lastRenderedFiles) > 0) {
      $retval['lastrenderedfiles'] = json_encode($filedepot->lastRenderedFiles);
    }
  }
  else {
    $retval['retcode'] = 404;
  }
  $retval['message'] = $message;
  $retval['title'] = t('Delete Confirmation');
  return $retval;
}