diff options
| -rwxr-xr-x | www/functions/func_upload.php | 69 |
1 files changed, 52 insertions, 17 deletions
diff --git a/www/functions/func_upload.php b/www/functions/func_upload.php index 42a7304..1178d9c 100755 --- a/www/functions/func_upload.php +++ b/www/functions/func_upload.php @@ -12,6 +12,18 @@ function database_upload($db, $parentdir, $owner, $filename, $folder, $mime, $si } } +function database_upload_update($db, $id, $mime, $size, $share, $filehash){ + if($db->exec(" + BEGIN TRANSACTION; + UPDATE files SET mime='".$mime."', size='".$size."', share='".$share."', hash='".$filehash"' WHERE id=".$id."; + COMMIT; + ")){ + return true; + } else { + return false; + } +} + function upload($path){ $db = $GLOBALS["db"]; @@ -48,6 +60,7 @@ function upload($path){ } $filename = $_FILES['userfile']['name']; + $folder = "FILE"; $mime = $_FILES['userfile']['type']; $size = $_FILES['userfile']['size']; @@ -63,34 +76,50 @@ function upload($path){ //$filehash = hash_file("md5", $uploaddir . $filename); $filehash = hash_file("md5", $_FILES['userfile']['tmp_name']); + $exists = false; + $check_if_filename_already_exists_db = $db->query("SELECT id, name FROM files WHERE parent=".$parentdir." AND folder='FILE'"); + + while($row = $check_if_filename_already_exists_db->fetchArray(SQLITE3_NUM)){ + if($row[1] == $filename){ + $fileid = $row[0]; + $exists = true; + break; + } + } + $hashtest_db = $db->query("SELECT hash FROM files WHERE hash='" . $filehash ."';"); $hashtest_ar = $hashtest_db->fetchArray(SQLITE3_NUM); if(empty($hashtest_ar[0])){ if(move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])){ - if(database_upload($db, $parentdir, $owner, $filename, $folder, $mime, $size, $share, $filehash)){ - $gzfile = $uploaddir . $filehash . ".gz"; - $fp = gzopen($gzfile, 'w9'); - - if(!gzwrite($fp, file_get_contents($uploaddir . $filename))){ - return UPLOAD_FILE_HANDLING; + if($exists){ + if(!database_upload_update($db, $fileid, $mime, $size, $share, $filehash)){ + return UPLOAD_DATABASE; } + } else { + if(!database_upload($db, $parentdir, $owner, $filename, $folder, $mime, $size, $share, $filehash)){ + return UPLOAD_DATABASE; + } + } - if(!gzclose($fp)){ - return UPLOAD_FILE_HANDLING; - } + $gzfile = $uploaddir . $filehash . ".gz"; + $fp = gzopen($gzfile, 'w9'); - if(!unlink($uploaddir . $filename)){ - return UPLOAD_FILE_HANDLING; - } + if(!gzwrite($fp, file_get_contents($uploaddir . $filename))){ + return UPLOAD_FILE_HANDLING; + } - return UPLOAD_SUCCESS; + if(!gzclose($fp)){ + return UPLOAD_FILE_HANDLING; + } - } else { - return UPLOAD_DATABASE; + if(!unlink($uploaddir . $filename)){ + return UPLOAD_FILE_HANDLING; } + return UPLOAD_SUCCESS; + } else { return UPLOAD_MOVING; } @@ -104,8 +133,14 @@ function upload($path){ } } - if(!database_upload($db, $parentdir, $owner, $filename, $folder, $mime, $size, $share, $filehash)){ - return UPLOAD_DATABASE; + if($exists){ + if(!database_upload_update($db, $fileid, $mime, $size, $share, $filehash)){ + return UPLOAD_DATABASE; + } + } else { + if(!database_upload($db, $parentdir, $owner, $filename, $folder, $mime, $size, $share, $filehash)){ + return UPLOAD_DATABASE; + } } if(!unlink($_FILES['userfile']['tmp_name'])){ |
