You are here

function filedepotAjaxServer_updateFolder in filedepot 6

Same name and namespace in other branches
  1. 7 lib-ajaxserver.php \filedepotAjaxServer_updateFolder()
1 call to filedepotAjaxServer_updateFolder()
filedepot_dispatcher in ./ajaxserver.php
@file ajaxserver.php Implementation of filedepot_ajax() - main ajax handler for the module

File

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

Code

function filedepotAjaxServer_updateFolder() {
  global $user;
  $filedepot = filedepot_filedepot();
  $cid = intval($_POST['cid']);
  $catpid = intval($_POST['catpid']);
  $folderorder = intval($_POST['folderorder']);
  $fileadded = intval($_POST['fileadded_notify']);
  $filechanged = intval($_POST['filechanged_notify']);
  $catname = check_plain($_POST['categoryname']);
  $catdesc = check_plain($_POST['catdesc']);
  $retval = array();
  if ($cid > 0 and $filedepot
    ->checkPermission($cid, 'admin')) {
    $retval['retcode'] = 200;
    $retval['cid'] = $cid;
    db_query("UPDATE {filedepot_categories} SET name='%s', description='%s' WHERE cid=%d", $catname, $catdesc, $cid);
    $nid = db_result(db_query("SELECT nid FROM {filedepot_categories} WHERE cid=%d", $cid));
    db_query("UPDATE {node} SET title='%s' WHERE nid=%d", $catname, $nid);
    db_query("UPDATE {node_revisions} SET title='%s' WHERE nid=%d", $catname, $nid);
    if (db_result(db_query("SELECT folderorder FROM {filedepot_categories} WHERE cid=%d", $cid)) != $folderorder) {
      db_query("UPDATE {filedepot_categories} SET folderorder=%d WHERE cid=%d", $folderorder, $cid);

      /* Re-order any folders that may have just been moved */
      $query = db_query("SELECT cid,folderorder from {filedepot_categories} WHERE pid=%d ORDER BY folderorder", $catpid);
      $folderorder = 10;
      $stepnumber = 10;
      while ($A = db_fetch_array($query)) {
        if ($A['folderorder'] != $folderorder) {
          DB_query("UPDATE {filedepot_categories} SET folderorder=%d WHERE cid=%d", $folderorder, $A['cid']);
        }
        $folderorder += $stepnumber;
      }
    }

    // Update the personal folder notifications for user
    if ($filechanged == 1 or $fileadded == 1) {
      if (db_result(db_query("SELECT count(*) FROM {filedepot_notifications} WHERE cid=%d AND uid=%d", $cid, $user->uid)) == 0) {
        $sql = "INSERT INTO {filedepot_notifications} (cid,cid_newfiles,cid_changes,uid,date) ";
        $sql .= "VALUES (%d,%d,%d,%d,%d)";
        db_query($sql, $cid, $fileadded, $filechanged, $user->uid, time());
      }
      else {
        $sql = "UPDATE {filedepot_notifications} set cid_newfiles=%d, ";
        $sql .= "cid_changes=%d, date=%d ";
        $sql .= "WHERE uid=%d and cid=%d";
        db_query($sql, $fileadded, $filechanged, time(), $user->uid, $cid);
      }
    }
    else {
      db_query("DELETE FROM {filedepot_notifications} WHERE uid=%d AND cid=%d", $user->uid, $cid);
    }

    // Now test if user has requested to change the folder's parent and if they have permission to this folder
    $pid = db_result(db_query("SELECT pid FROM {filedepot_categories} WHERE cid=%d", $cid));
    if ($pid != $catpid) {
      if ($filedepot
        ->checkPermission($catpid, 'admin') or user_access('administer filedepot')) {
        db_query("UPDATE {filedepot_categories} SET pid=%d WHERE cid=%d", $catpid, $cid);
      }
    }
  }
  else {
    $retval['retcode'] = 500;
  }
  return $retval;
}