F diff --git a/loggedin.js b/loggedin.js --- a/loggedin.js +++ b/loggedin.js}function delete_file(filename) {- var file_full_path = get_path() + "/" + filename;+ var file_full_path = path_combine(get_path(), filename);var data = new FormData();data.append('path', file_full_path);}function rename_file(filename) {- var file_full_path = get_path() + filename;+ var file_full_path = path_combine(get_path(), filename);var new_name = prompt(`Rename ${filename} to`, filename);if (!new_name)xhr.send(data);}+ function move_file(new_folder, filename) {+ var data = new FormData();+ data.append('old_folder', get_path());+ data.append('new_folder', new_folder);+ data.append('filename', filename);++ var xhr = new XMLHttpRequest();+ xhr.open('POST', '/php/move.php', true);+ xhr.onload = function () {+ load_dir();+ };+ xhr.send(data);+ }+function new_folder() {var dirname = prompt(`Directory name`, "New Folder");if (!dirname)}function drop_handler(dst, src) {- alert(`Dropped ${dst.filename} on ${src.filename}`);+ if (dst.is_directory) {+ move_file(path_combine(get_path(), dst.filename), src.filename);+ } else {+ alert(`Dropped ${dst.filename} on ${src.filename}`);+ }}function add_file_visuals(fileview) {visuals.onmouseup = (e) => {if (dragging) {- drop_handler(dragging_fileview, fileview);+ drop_handler(fileview, dragging_fileview);end_drag();}e.preventDefault();return path;}+ function path_combine(a, b) {+ const last_char = a.slice(-1);+ if (last_char == "/")+ return a + b;+ else+ return a + "/" + b;+ }+document.body.onclick = () => {if (context_menu)context_menu.remove();F diff --git a/php/database.php b/php/database.php --- a/php/database.php +++ b/php/database.php/*handles database stuff*/class Database{- private $pdo;+ public $pdo;public function __construct()F diff --git a/php/misc.php b/php/misc.php --- a/php/misc.php +++ b/php/misc.php}+ 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 )+ }+?>F diff --git a/php/move.php b/php/move.php new file mode 100644 --- /dev/null +++ b/php/move.php+ <?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);+ }++ ?>