FILEUP



LOG | FILES | OVERVIEW


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);
+ }
+
+ ?>