FILEUP



LOG | FILES | OVERVIEW


F diff --git a/loggedin.js b/loggedin.js --- a/loggedin.js +++ b/loggedin.js
}
function rename_file(filename) {
- var file_full_path = path_combine(get_path(), filename);
-
var new_name = prompt(`Rename ${filename} to`, filename);
if (!new_name)
return;
var data = new FormData();
- data.append('path', file_full_path);
- data.append('new_name', new_name);
+ data.append('folder', get_path());
+ data.append('old_filename', filename);
+ data.append('new_filename', new_name);
var xhr = new XMLHttpRequest();
xhr.open('POST', '/php/rename.php', true);
F diff --git a/php/rename.php b/php/rename.php new file mode 100644 --- /dev/null +++ b/php/rename.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['folder']) || !isset($_POST['old_filename']) || !isset($_POST['new_filename'])) {
+ error_log("bad /php/move.php call");
+ http_response_code(400);
+ exit(1);
+ }
+
+ $folder = $_POST["folder"];
+ $old_filename = $_POST["old_filename"];
+ $new_filename = $_POST["new_filename"];
+ $user = $_SESSION['user_object'];
+ $homedir = $user->home_directory;
+
+ $dir = get_directory($folder, $user);
+ if (!$dir) {
+ error_log("/php/rename.php invalid directory");
+ http_response_code(409);
+ exit(0);
+ }
+
+ // Check if the new filename is taken in the new dir
+ $contents_of_dir = $database->get_links_of($dir);
+ foreach ($contents_of_dir as $c) {
+ if ($c['name'] == $new_filename) {
+ error_log("/php/rename.php failed - 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($dir);
+ foreach ($contents_of_old_dir as $c) {
+ if ($c['name'] == $old_filename) {
+ $file_node = $c['id'];
+ break;
+ }
+ }
+
+ if ($file_node == null) {
+ error_log("/php/rename.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 name = :new_filename
+ WHERE directory_id = :dir
+ AND node_id = :file_node
+ AND name = :old_filename
+ ");
+
+ $move->bindParam(':dir', $dir);
+ $move->bindParam(':file_node', $file_node);
+ $move->bindParam(':old_filename', $old_filename);
+ $move->bindParam(':new_filename', $new_filename);
+
+ if(!$move->execute()) {
+ error_log("extremely sad shit");
+ http_response_code(409);
+ exit(0);
+ }
+
+ ?>