summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xwww/functions/func_upload.php69
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'])){