aboutsummaryrefslogtreecommitdiffstats
path: root/php
diff options
context:
space:
mode:
authorAlex Vitkov <alexvitkov98@gmail.com>2021-02-13 09:12:28 +0200
committerAlex Vitkov <alexvitkov98@gmail.com>2021-02-13 09:12:28 +0200
commitb17c9ee6046735433e4ba037c9b60c5f592bd15e (patch)
tree55726d2a51f187060e14d31bee2388f9aabe2b5b /php
parent34df293dec1ee19cde50e33f757c8eefdbfc33d9 (diff)
downloadfileup-b17c9ee6046735433e4ba037c9b60c5f592bd15e.tar.gz
/php/move.php
Diffstat (limited to 'php')
-rw-r--r--php/database.php2
-rw-r--r--php/misc.php8
-rw-r--r--php/move.php77
3 files changed, 86 insertions, 1 deletions
diff --git a/php/database.php b/php/database.php
index 1e76d77..cb2697f 100644
--- a/php/database.php
+++ b/php/database.php
@@ -7,7 +7,7 @@ require_once "node.php";
/*handles database stuff*/
class Database
{
- private $pdo;
+ public $pdo;
public function __construct()
diff --git a/php/misc.php b/php/misc.php
index 69cd654..556d411 100644
--- a/php/misc.php
+++ b/php/misc.php
@@ -9,5 +9,13 @@ function generate_email_verification_link()
}
+function var_error_log( $object=null ){
+ ob_start(); // start buffer capture
+ var_dump( $object ); // dump the values
+ $contents = ob_get_contents(); // put the buffer into a variable
+ ob_end_clean(); // end capture
+ error_log( $contents ); // log contents of the result of var_dump( $object )
+}
+
?>
diff --git a/php/move.php b/php/move.php
new file mode 100644
index 0000000..a79ce83
--- /dev/null
+++ b/php/move.php
@@ -0,0 +1,77 @@
+<?php
+require_once "database.php";
+require_once "configuration.php";
+require_once "file_type_recogniser.php";
+require_once "node.php";
+require_once "misc.php";
+
+session_start();
+
+if (!isset($_POST['old_folder']) || !isset($_POST['new_folder']) || !isset($_POST['filename'])) {
+ error_log("bad /php/move.php call $_POST of:$_POST[old_folder] nf:$_POST[new_folder] fn:$_POST[filename]");
+ http_response_code(400);
+ exit(1);
+}
+
+$filename = $_POST["filename"];
+$old_folder = $_POST["old_folder"];
+$new_folder = $_POST["new_folder"];
+$user = $_SESSION['user_object'];
+$homedir = $user->home_directory;
+
+$old_dir = get_directory($old_folder, $user);
+$new_dir = get_directory($new_folder, $user);
+if (!$old_dir || !$new_dir) {
+ error_log("invalid src/dst dir");
+ http_response_code(409);
+ exit(0);
+}
+
+// Check if the filename is taken in the new dir
+$contents_of_new_dir = $database->get_links_of($new_dir);
+foreach ($contents_of_new_dir as $c) {
+ if ($c['name'] == $filename) {
+ error_log("filename $filename taken in $new_folder");
+ http_response_code(409);
+ exit(0);
+ }
+}
+
+// Get the file node
+$file_node = null;
+$contents_of_old_dir = $database->get_links_of($old_dir);
+foreach ($contents_of_old_dir as $c) {
+ if ($c['name'] == $filename) {
+ $file_node = $c['id'];
+ break;
+ }
+}
+
+if ($file_node == null) {
+ error_log("/php/move.php failed - file $old_folder/$filename doesn't exist");
+ http_response_code(409);
+ exit(0);
+}
+
+
+// Update the node_link
+$move = $database->pdo->prepare("
+ UPDATE node_links
+ SET directory_id = :new_dir
+ WHERE directory_id = :old_dir
+ AND node_id = :file_node
+ AND name = :filename
+");
+
+$move->bindParam(':new_dir', $new_dir);
+$move->bindParam(':old_dir', $old_dir);
+$move->bindParam(':file_node', $file_node);
+$move->bindParam(':filename', $filename);
+
+if(!$move->execute()) {
+ error_log("extremely sad shit");
+ http_response_code(409);
+ exit(0);
+}
+
+?>