You are here

public function filedepot::createFolder in filedepot 6

Same name and namespace in other branches
  1. 7 filedepot.class.php \filedepot::createFolder()

File

./filedepot.class.php, line 442
filedepot.class.php Main class for the Filedepot module

Class

filedepot
@file filedepot.class.php Main class for the Filedepot module

Code

public function createFolder($node) {
  global $user;
  if ($node->parentfolder == 0 and !user_access('administer filedepot')) {
    return FALSE;
  }
  if ($node->parentfolder > 0 and $this
    ->checkPermission($node->parentfolder, 'admin') === FALSE) {
    return FALSE;
  }
  if (variable_get('filedepot_content_type_initialized', FALSE) === FALSE) {
    require_once './' . drupal_get_path('module', 'filedepot') . '/ccknodedef.inc';
    filedepot_install_cck_filefield();
    variable_set('filedepot_content_type_initialized', TRUE);
  }
  if (@is_dir($this->tmp_storage_path) === FALSE) {
    @mkdir($this->tmp_storage_path, FILEDEPOT_CHMOD_DIRS);
  }
  if (@is_dir($this->tmp_incoming_path) === FALSE) {
    @mkdir($this->tmp_incoming_path, FILEDEPOT_CHMOD_DIRS);
  }
  db_query("UPDATE {node} set promote = 0 WHERE nid = %d", $node->nid);
  $query = db_query("SELECT max(folderorder) FROM {filedepot_categories} WHERE pid=%d", $node->parentfolder);
  $maxorder = db_result($query) + 10;
  db_query("INSERT INTO {filedepot_categories} (pid,name,description,folderorder,nid,vid) VALUES (%d,'%s','%s',%d,%d,%d)", $node->parentfolder, $node->title, $node->folderdesc, $maxorder, $node->nid, $node->vid);

  // Need to clear the cached user folder permissions
  db_query("UPDATE {filedepot_usersettings} set allowable_view_folders = ''");

  // Retrieve the folder id (category id) for the new folder
  $cid = db_result(db_query("SELECT cid FROM {filedepot_categories} WHERE nid=%d", $node->nid));
  if ($cid > 0 and $this
    ->createStorageFolder($cid)) {
    $this->cid = $cid;
    $catpid = db_result(db_query("SELECT pid FROM {filedepot_categories} WHERE cid=%d", $cid));
    if ($node->inherit == 1 and $catpid > 0) {

      // Retrieve parent User access records - for each record create a new one for this category
      $sql = "SELECT permid,view,upload,upload_direct,upload_ver,approval,admin FROM {filedepot_access} " . "WHERE permtype='user' AND permid > 0 AND catid=%d";
      $q1 = db_query($sql, $catpid);
      while ($rec = db_fetch_object($q1)) {
        $sql = "INSERT INTO {filedepot_access} " . "(catid,permtype,permid,view,upload,upload_direct,upload_ver,approval,admin) VALUES " . "(%d,'user',%d,%d,%d,%d,%d,%d,%d)";
        db_query($sql, $cid, $rec->permid, $rec->view, $rec->upload, $rec->upload_direct, $rec->upload_ver, $rec->approval, $rec->admin);
      }

      // Retrieve parent Role Access records - for each record create a new one for this category
      $sql = "SELECT permid,view,upload,upload_direct,upload_ver,approval,admin " . "FROM {filedepot_access} WHERE permtype='role' AND permid > 0 AND catid=%d";
      $q2 = db_query($sql, $catpid);
      while ($rec = db_fetch_object($q2)) {
        $sql = "INSERT INTO {filedepot_access} " . "(catid,permtype,permid,view,upload,upload_direct,upload_ver,approval,admin) VALUES " . "(%d,'role',%d,%d,%d,%d,%d,%d,%d)";
        db_query($sql, $cid, $rec->permid, $rec->view, $rec->upload, $rec->upload_direct, $rec->upload_ver, $rec->approval, $rec->admin);
      }

      // Retrieve parent Group Access records - for each record create a new one for this category
      $sql = "SELECT permid,view,upload,upload_direct,upload_ver,approval,admin " . "FROM {filedepot_access} WHERE permtype='group' AND permid > 0 AND catid=%d";
      $q3 = db_query($sql, $catpid);
      while ($rec = db_fetch_object($q3)) {
        $sql = "INSERT INTO {filedepot_access} " . "(catid,permtype,permid,view,upload,upload_direct,upload_ver,approval,admin) VALUES " . "(%d,'group',%d,%d,%d,%d,%d,%d,%d)";
        db_query($sql, $cid, $rec->permid, $rec->view, $rec->upload, $rec->upload_direct, $rec->upload_ver, $rec->approval, $rec->admin);
      }
    }
    else {

      // Create default permissions record for the user that created the category
      $this
        ->updatePerms($cid, $this->defOwnerRights, $user->uid);
      if (is_array($this->defRoleRights) and count($this->defRoleRights) > 0) {
        foreach ($this->defRoleRights as $role => $perms) {
          $rid = db_result(db_query("SELECT rid FROM {role} WHERE name='%s'", $role));
          if ($rid and $rid > 0) {
            $this
              ->updatePerms($cid, $perms, '', '', array(
              $rid,
            ));
          }
        }
      }
    }
    return TRUE;
  }
  else {
    return FALSE;
  }
}