You are here

function filedepotAjaxServer_deleteCheckedFiles in filedepot 7

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

File

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

Code

function filedepotAjaxServer_deleteCheckedFiles() {
  global $user;
  $filedepot = filedepot_filedepot();
  $retval = array();
  $cid = intval($_POST['cid']);
  $reportmode = check_plain($_POST['reportmode']);
  $fileitems = check_plain($_POST['checkeditems']);
  $files = explode(',', $fileitems);
  $delerror = FALSE;
  if (!empty($_POST['checkedfolders'])) {
    $folderitems = check_plain($_POST['checkedfolders']);
    $folders = explode(',', $folderitems);
    foreach ($folders as $id) {
      if ($reportmode == 'notifications') {
        if ($id > 0 and db_query("SELECT uid FROM {filedepot_notifications} WHERE id=:id", array(
          ':id' => $id,
        ))
          ->fetchField() > 0) {
          db_query("DELETE FROM {filedepot_notifications} WHERE id=:id", array(
            ':id' => $id,
          ));
        }
      }
      elseif ($id > 0 and $_POST['multiaction'] == 'delete' and $filedepot
        ->checkPermission($id, 'admin')) {
        $nid = db_query("SELECT nid FROM {filedepot_categories} WHERE cid=:cid", array(
          ':cid' => $id,
        ))
          ->fetchField();
        if ($filedepot
          ->deleteFolder($nid)) {

          // Remove any recent folder records for this category
          db_query("DELETE FROM {filedepot_recentfolders} WHERE cid=:cid", array(
            ':cid' => $id,
          ));
        }
        else {
          $delerror = TRUE;
        }
      }
    }
  }
  if ($reportmode == 'incoming') {
    foreach ($files as $id) {
      if (db_query("SELECT COUNT(*) FROM {filedepot_import_queue} WHERE id=:id", array(
        ':id' => $id,
      ))
        ->fetchField() == 1) {
        $query = db_query("SELECT drupal_fid,filepath,uid FROM {filedepot_import_queue} WHERE id=:id", array(
          ':id' => $id,
        ));
        $file = $query
          ->fetchObject();
        if ($file->uid == $user->uid or user_access('administer filedepot', $user)) {
          if (!empty($file->filepath) and file_exists($file->filepath)) {
            @unlink($file->filepath);
          }
          db_query("DELETE FROM {files} WHERE fid=:fid", array(
            'fid' => $file->drupal_fid,
          ));
          db_query("DELETE FROM {filedepot_import_queue} WHERE id=:id", array(
            ':id' => $id,
          ));
        }
      }
    }
  }
  elseif ($reportmode == 'notifications') {
    foreach ($files as $id) {
      $uid = db_query("SELECT uid FROM {filedepot_notifications} WHERE id=:id", array(
        ':id' => $id,
      ))
        ->fetchField();
      if ($id > 0 and $uid == $user->uid) {
        db_query("DELETE FROM {filedepot_notifications} WHERE id=:id", array(
          ':id' => $id,
        ));
      }
    }
  }
  else {
    foreach ($files as $id) {
      if ($id > 0) {
        if ($filedepot
          ->deleteFile($id) === FALSE) {
          $delerror = TRUE;
        }
      }
    }
  }
  if (!in_array($reportmode, $filedepot->validReportingModes)) {
    $filedepot->ajaxBackgroundMode = TRUE;
  }
  $filedepot->cid = $cid;
  $filedepot->activeview = $reportmode;
  $retval['retcode'] = 200;
  $retval['errmsg'] = '';
  if ($reportmode == 'notifications') {
    $retval['displayhtml'] = theme('filedepot_notifications');
  }
  else {
    $retval['displayhtml'] = filedepot_displayFolderListing($filedepot->cid);
  }
  $retval['activefolder'] = theme('filedepot_activefolder');
  if ($delerror == TRUE) {
    $retval['errmsg'] = t('Error deleting one or more items - invalid permissions');
  }
  if (is_array($filedepot->lastRenderedFiles) and count($filedepot->lastRenderedFiles) > 0) {
    $retval['lastrenderedfiles'] = json_encode($filedepot->lastRenderedFiles);
  }
  return $retval;
}