F diff --git a/php/database.php b/php/database.php --- a/php/database.php +++ b/php/database.phpwe remove the node and1. move the file represented by the node to the trash folder2. remove the file+ 3. if node is a directory - delete all children nodesdepends on the conf file*/function delete_node_by_id(int $node_id)}}++ function unlink_nodes(int $dir_id, int $node_id)+ {+ $prep=$this->pdo->prepare("delete from node_links+ where directory_id=:dir_id and node_id=:node_id+ ");+ $prep->bindParam(':dir_id',$dir_id);+ $prep->bindParam(':node_id',$node_id);+ if($prep->execute()==false)+ {+ error_log("there was an error with the first statement in unlink_nodes");+ return;+ }+ $prep=$this->pdo->prepare("select node_id+ from node_links+ where node_id=:id+ ");+ $prep->bindParam(':id',$node_id);+ if($prep->execute()==false)+ {+ error_log("there was an error with the second statement in unlink_nodes");+ return;+ }+ if(count($prep->fetchALL(PDO::FETCH_ASSOC))==0)+ {+ delete_node_by_id($node_id);+ }+++ }+function create_home_directory():int{$ret=$this->create_dangling_directory();F diff --git a/sql/fileshare.sql b/sql/fileshare.sql --- a/sql/fileshare.sql +++ b/sql/fileshare.sqldrop table if exists node_access;drop table if exists users;drop table if exists node_links;+ drop table if exists trash;+ drop trigger if exists delete_on_zero_links;drop table if exists nodes;node_id int not null,name varchar(100) not null default 'no name',note varchar(200) not null default "",- check (directory_id != node_id),foreign key (directory_id) references nodes(node_id) on delete cascade,foreign key (node_id) references nodes(node_id) on delete cascade);+ create table trash (+ node_id int not null,+ foreign key (node_id) references nodes(node_id) on delete cascade+ );++ create trigger delete_on_zero_links+ after delete+ on node_links+ for each row+ insert into trash+ select nodes.node_id+ from nodes+ where nodes.node_id not in (select node_id from node_links) and nodes.node_id=old.node_id;++ /*+ create trigger delete_links+ after delete+ on nodes+ for each row+ delete from+ */