public function filedepot::createFolder in filedepot 6
Same name and namespace in other branches
- 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;
}
}