From 80cd845b8177730a6dae27e847dc8951af3383de Mon Sep 17 00:00:00 2001 From: adam Date: Fri, 12 Feb 2021 22:56:26 +0200 Subject: directory duplication error dealt with --- php/database.php | 14 ++++++++++++-- php/node.php | 12 ++++++++++-- php/readdir.php | 3 ++- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/php/database.php b/php/database.php index 23ff602..bb8cfa4 100644 --- a/php/database.php +++ b/php/database.php @@ -112,7 +112,6 @@ require_once "node.php"; /* returns assoc array of nodes*/ function get_links_of(int $node_id) { - error_log("in get_links_of with argument {$node_id}"); $statement=$this->pdo->prepare(" select node_links.node_id as id, node_links.name as name, @@ -308,6 +307,17 @@ require_once "node.php"; error_log("there was an error with the statement ni link_nodes"); } } + function check_if_name_is_taken(string $filename,int $dir_id):bool + { + if($this->get_node_id($filename,$dir_id)!=NULL) + { + return true; + }else + { + return false; + } + + } /*returns the file name as it must be in the filesystem relative to the storage root*/ function create_file_node(string $filename,string $note,int $dir_id,string $mimetype,User $user): string { @@ -348,7 +358,7 @@ require_once "node.php"; } /*check if node with given name exists*/ - if($this->get_node_id($filename,$dir_id)!=NULL) + if($this->check_if_name_is_taken($filename,$dir_id)) { error_log("filename taken"); return "filename taken"; diff --git a/php/node.php b/php/node.php index b3b2c3f..c2ab5f1 100644 --- a/php/node.php +++ b/php/node.php @@ -43,9 +43,17 @@ require_once "user.php"; function create_directory(string $abstract_path,string $directory_name,string $note,User $user) { global $database; - $dir_id=$database->create_dangling_directory(); + $parent_dir_id=get_directory($abstract_path,$user); - $database->link_nodes($parent_dir_id,$dir_id,$directory_name,$note); + if($database->check_if_name_is_taken($directory_name,$parent_dir_id)) + { + return NULL; + }else + { + $dir_id=$database->create_dangling_directory(); + $database->link_nodes($parent_dir_id,$dir_id,$directory_name,$note); + return $dir_id; + } } ?> diff --git a/php/readdir.php b/php/readdir.php index 04587ee..8194580 100644 --- a/php/readdir.php +++ b/php/readdir.php @@ -2,9 +2,10 @@ require_once "node.php"; session_start(); $user=$_SESSION['user_object']; + $path=$_POST['path']; //echo '[ { "name": "file1.txt", "mimetype": "text/plain", "is_directory": false }, { "name": "file2.pdf", "mimetype": "application/pdf", "is_directory": false }, { "name": "dir", "mimetype": "", "is_directory": true } ] '; - $ret=get_directory_contents("/",$user); + $ret=get_directory_contents($path,$user); $json=json_encode($ret); echo $json; ?> -- cgit v1.2.3