exec(" BEGIN TRANSACTION; INSERT INTO files (id, parent, owner, name, folder, size, share, hash) VALUES (Null, " . $file_id . ", " . $_SESSION['userid'] . ", '" . SQLite3::escapeString($new_folder_name) . "', 'DIRECTORY', 0, '" . SQLite3::escapeString($share) . "', ''); COMMIT; ")){ return true; } else { return false; } } function create_folder($path, $new_folder_name, $share){ $db = $GLOBALS["db"]; if(!$_SESSION["login"]){ return MKDIR_LOGIN; } $file_id = select_file_id($db, $_SESSION["userid"], $path); $owner_db = $db->query("SELECT owner FROM files WHERE id=" . SQLite3::escapeString($file_id) . ";"); $owner_ar = $owner_db->fetchArray(SQLITE3_NUM); if($owner_ar[0] != $_SESSION["userid"]){ return MKDIR_OWNER; } //TODO: Cut trailing or leading slash //TODO: Maye create two folders instead of returning an error? if(preg_match("/\//", $new_folder_name)){ return MKDIR_SLASH_IN_FOLDER_NAME; } $dupl_db = $db->query("SELECT parent FROM files WHERE name='" . SQLite3::escapeString($new_folder_name) . "';"); while($dupl_ar = $dupl_db->fetchArray(SQLITE3_NUM)){ if($dupl_ar[0] == $file_id){ return MKDIR_DUPLICATE; } } if(database_mkdir($file_id, $new_folder_name, $share)){ return MKDIR_SUCCESS; } else { return MKDIR_DATABASE; } } function move_folder($old_path, $new_path){ $db = $GLOBALS["db"]; $old_file_id = select_file_id($db, $_SESSION["userid"], $old_path); $new_file_id = select_file_id($db, $_SESSION["userid"], $new_path); $old_folder_owner_db = $db->query("SELECT owner FROM files WHERE id=".$old_file_id.";"); $old_folder_owner_ar = $old_folder_owner_db->fetchArray(SQLITE3_NUM); if($_SESSION["userid"] != $old_folder_owner_ar[0]){ return MV_OLD_FOLDER_NOT_OWNER; } if(!$new_file_id){ return MV_FOLDER_TARGET_NOT_EXIST; } $new_folder_owner_db = $db->query("SELECT owner FROM files WHERE id=".$new_file_id.";"); $new_folder_owner_ar = $new_folder_owner_db->fetchArray(SQLITE3_NUM); if($_SESSION["userid"] != $new_folder_owner_ar[0]){ return MV_NEW_FOLDER_NOT_OWNER; } if($db->exec(" BEGIN TRANSACTION; UPDATE files SET parent=".$new_file_id." WHERE id=".$old_file_id."; COMMIT; ")){ return MV_FOLDER_SUCCESS; } else { return MV_FOLDER_DATABASE; } }