diff options
-rw-r--r-- | php/database.php | 31 | ||||
-rw-r--r-- | php/delete.php | 15 | ||||
-rw-r--r-- | php/node.php | 6 | ||||
-rw-r--r-- | sql/fileshare.sql | 49 |
4 files changed, 72 insertions, 29 deletions
diff --git a/php/database.php b/php/database.php index ba02fc7..4b701a2 100644 --- a/php/database.php +++ b/php/database.php @@ -378,6 +378,8 @@ require_once "node.php"; function unlink_nodes(int $dir_id, string $filename) { + /*TODO delet this*/ + error_log("in unlink nodes"); $prep=$this->pdo->prepare("delete from node_links where directory_id=:dir_id and name=:name "); @@ -388,21 +390,29 @@ require_once "node.php"; error_log("there was an error with the first statement in unlink_nodes"); return; } + error_log("in pre stuff in unlink nodes"); + $prep=$this->pdo->prepare("select count(1) as count from trash"); + $prep->execute() or die(1); do{ - $prep=$this->pdo->prepare("select count(1) as count from trash"); + + + $prep=$this->pdo->prepare("select count(1) as count from super_trash"); $prep->execute() or die(1); - $res=$prep->fetch(PDO::FETCH_ASSOC); - $prep=$this->pdo->prepare("insert into super_trash select node_id from trash"); + $super_trash_count=$prep->fetch(PDO::FETCH_ASSOC); + $prep=$this->pdo->prepare("delete from super_trash"); $prep->execute() or die(1); - $prep=$this->pdo->prepare("delete from trash"); + + + + $prep=$this->pdo->prepare("select count(1) as count from trash"); $prep->execute() or die(1); - $prep=$this->pdo->prepare("delete from links - where directory_id in - (select node_id from super_trash) - "); + $trash_count=$prep->fetch(PDO::FETCH_ASSOC); + $prep=$this->pdo->prepare("delete from trash"); $prep->execute() or die(1); - }while($res["count"]!=0); + error_log("asdf: ".$trash_count["count"]." ".$super_trash_count["count"]); + }while($trash_count["count"]!=$super_trash_count["count"]); + $prep=$this->pdo->prepare("select code from nodes where node_id in (select node_id from super_trash)"); $prep->execute() or die(1); @@ -412,9 +422,10 @@ require_once "node.php"; unlink($storage_root,"/".$node["code"]); } $prep=$this->pdo->prepare("delete from nodes where node_id in - (select node_id from super_trash"); + (select node_id from super_trash)"); $prep->execute() or die(1); $prep=$this->pdo->prepare("delete from super_trash"); + $prep->execute() or die(1); } diff --git a/php/delete.php b/php/delete.php index b50dbad..af13a00 100644 --- a/php/delete.php +++ b/php/delete.php @@ -1,6 +1,15 @@ <?php - - - +require_once "database.php"; +require_once "user.php"; +require_once "node.php"; + +session_start(); +$folder=$_POST["folder"]; +$filename=$_POST["filename"]; +$user=$_SESSION["user_object"]; + +error_log("someone is trying to delete".$filename); +unlink_from_folder($folder,$filename,$user); +error_log("someone is trying to delete".$filename); ?> diff --git a/php/node.php b/php/node.php index 5074082..1336a5f 100644 --- a/php/node.php +++ b/php/node.php @@ -55,5 +55,11 @@ require_once "user.php"; return $dir_id; } } + function unlink_from_folder(string $abstract_path,string $filename,User $user) + { + global $database; + $parent_dir_id=get_directory($abstract_path,$user); + $database->unlink_nodes($parent_dir_id,$filename); + } ?> diff --git a/sql/fileshare.sql b/sql/fileshare.sql index 7dae888..238d7b4 100644 --- a/sql/fileshare.sql +++ b/sql/fileshare.sql @@ -4,10 +4,15 @@ drop table if exists users; drop table if exists node_links; drop table if exists trash; drop table if exists super_trash; +drop table if exists nodes; + + + drop trigger if exists delete_on_zero_links; drop trigger if exists delete_links; drop trigger if exists del_node; -drop table if exists nodes; +drop trigger if exists supper_del_node; + @@ -52,13 +57,11 @@ create table node_links ( ); create table trash ( - node_id int not null, - foreign key (node_id) references nodes(node_id) + node_id int not null ); create table super_trash ( - node_id int not null, - foreign key (node_id) references nodes(node_id) - ); + node_id int not null +); create trigger delete_on_zero_links @@ -68,17 +71,31 @@ create trigger delete_on_zero_links 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 ; + 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 node_links where directory_id=old.node_id; -/* create trigger del_node - after insert + after delete on trash for each row - delete from nodes where node_id=new.node_id; - */ + insert into super_trash(node_id) + select node_id + from nodes + where nodes.node_id=old.node_id; + + +create trigger supper_del_node + after delete + on super_trash + for each row + insert into trash + select node_id + from nodes + where nodes.node_id=old.node_id; + +create trigger delete_links + before delete + on super_trash + for each row + delete from node_links + where directory_id=old.node_id; |