diff --git a/include/functions.php b/include/functions.php
index 2984c1da..5208bed4 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -4681,6 +4681,222 @@ function displayHotAndClassic()
}
}
+ function saveAttachment($file)
+ {
+ $filesize = $file["size"];
+ $filetype = $file["type"];
+ $origfilename = $file['name'];
+ $ext_l = strrpos($origfilename, ".");
+ $ext = strtolower(substr($origfilename, $ext_l+1, strlen($origfilename)-($ext_l+1)));
+ $banned_ext = array('exe', 'com', 'bat', 'msi');
+ $img_ext = array('jpeg', 'jpg', 'png', 'gif');
+
+ if (!$file || $filesize == 0 || $file["name"] == "") // nothing received
+ {
+ $warning = $lang_attachment['text_nothing_received'];
+ }
+ elseif (!$count_left) //user cannot upload more files
+ {
+ $warning = $lang_attachment['text_file_number_limit_reached'];
+ }
+ elseif ($filesize > $size_limit || $filesize >= 5242880) //do not allow file bigger than 5 MB
+ {
+ $warning = $lang_attachment['text_file_size_too_big'];
+ }
+ elseif (!in_array($ext, $allowed_exts) || in_array($ext, $banned_ext)) //the file extension is banned
+ {
+ $warning = $lang_attachment['text_file_extension_not_allowed'];
+ }
+ else //everythins is okay
+ {
+ if (in_array($ext, $img_ext))
+ $isimage = true;
+ else $isimage = false;
+ if ($savedirectorytype_attachment == 'onedir')
+ $savepath = "";
+ elseif ($savedirectorytype_attachment == 'monthdir')
+ $savepath = date("Ym")."/";
+ elseif ($savedirectorytype_attachment == 'daydir')
+ $savepath = date("Ymd")."/";
+ $filemd5 = md5_file($file['tmp_name']);
+ $filename = date("YmdHis").$filemd5;
+ $file_location = make_folder($savedirectory_attachment."/", $savepath) . $filename;
+ do_log("file_location: $file_location");
+ $db_file_location = $savepath.$filename;
+ $abandonorig = false;
+ $hasthumb = false;
+ $width = 0;
+ if ($isimage) //the uploaded file is a image
+ {
+ $maycreatethumb = false;
+ $stop = false;
+ $imagesize = getimagesize($file['tmp_name']);
+ if ($imagesize){
+ $height = $imagesize[1];
+ $width = $imagesize[0];
+ $it = $imagesize[2];
+ if ($it != 1 || !$Attach->is_gif_ani($file['tmp_name'])){ //if it is an animation GIF, stop creating thumbnail and adding watermark
+ if ($thumbnailtype_attachment != 'no') //create thumbnail for big image
+ {
+ //determine the size of thumbnail
+ if ($altsize == 'yes'){
+ $targetwidth = $altthumbwidth_attachment;
+ $targetheight = $altthumbheight_attachment;
+ }
+ else
+ {
+ $targetwidth = $thumbwidth_attachment;
+ $targetheight = $thumbheight_attachment;
+ }
+ $hscale=$height/$targetheight;
+ $wscale=$width/$targetwidth;
+ $scale=($hscale < 1 && $wscale < 1) ? 1 : (( $hscale > $wscale) ? $hscale : $wscale);
+ $newwidth=floor($width/$scale);
+ $newheight=floor($height/$scale);
+ if ($scale != 1){ //thumbnail is needed
+ if ($it==1)
+ $orig=@imagecreatefromgif($file["tmp_name"]);
+ elseif ($it == 2)
+ $orig=@imagecreatefromjpeg($file["tmp_name"]);
+ else
+ $orig=@imagecreatefrompng($file["tmp_name"]);
+ if ($orig && !$stop)
+ {
+ $thumb = imagecreatetruecolor($newwidth, $newheight);
+ imagecopyresized($thumb, $orig, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
+ if ($thumbnailtype_attachment == 'createthumb'){
+ $hasthumb = true;
+ imagejpeg($thumb, $file_location.".".$ext.".thumb.jpg", $thumbquality_attachment);
+ }
+ elseif ($thumbnailtype_attachment == 'resizebigimg'){
+ $ext = "jpg";
+ $filetype = "image/jpeg";
+ $it = 2;
+ $height = $newheight;
+ $width = $newwidth;
+ $maycreatethumb = true;
+ $abandonorig = true;
+ }
+ }
+ }
+ }
+ $watermarkpos = $watermarkpos_attachment;
+ if ($watermarkpos != 'no' && !$stop) //add watermark to image
+ {
+ if ($width > $watermarkwidth_attachment && $height > $watermarkheight_attachment)
+ {
+ if ($abandonorig)
+ {
+ $resource = $thumb;
+ }
+ else
+ {
+ $resource=imagecreatetruecolor($width,$height);
+ if ($it==1)
+ $resource_p=@imagecreatefromgif($file["tmp_name"]);
+ elseif ($it==2)
+ $resource_p=@imagecreatefromjpeg($file["tmp_name"]);
+ else
+ $resource_p=@imagecreatefrompng($file["tmp_name"]);
+ imagecopy($resource, $resource_p, 0, 0, 0, 0, $width, $height);
+ }
+ $watermark = imagecreatefrompng('pic/watermark.png');
+ $watermark_width = imagesx($watermark);
+ $watermark_height = imagesy($watermark);
+ //the position of the watermark
+ if ($watermarkpos == 'random')
+ $watermarkpos = mt_rand(1, 9);
+ switch ($watermarkpos)
+ {
+ case 1: {
+ $wmx = 5;
+ $wmy = 5;
+ break;
+ }
+ case 2: {
+ $wmx = ($width-$watermark_width)/2;
+ $wmy = 5;
+ break;
+ }
+ case 3: {
+ $wmx = $width-$watermark_width-5;
+ $wmy = 5;
+ break;
+ }
+ case 4: {
+ $wmx = 5;
+ $wmy = ($height-$watermark_height)/2;
+ break;
+ }
+ case 5: {
+ $wmx = ($width-$watermark_width)/2;
+ $wmy = ($height-$watermark_height)/2;
+ break;
+ }
+ case 6: {
+ $wmx = $width-$watermark_width-5;
+ $wmy = ($height-$watermark_height)/2;
+ break;
+ }
+ case 7: {
+ $wmx = 5;
+ $wmy = $height-$watermark_height-5;
+ break;
+ }
+ case 8: {
+ $wmx = ($width-$watermark_width)/2;
+ $wmy = $height-$watermark_height-5;
+ break;
+ }
+ case 9: {
+ $wmx = $width-$watermark_width-5;
+ $wmy = $height-$watermark_height-5;
+ break;
+ }
+ }
+
+ imagecopy($resource, $watermark, $wmx, $wmy, 0, 0, $watermark_width, $watermark_height);
+ if ($it==1)
+ imagegif($resource, $file_location.".".$ext);
+ elseif ($it==2)
+ imagejpeg($resource, $file_location.".".$ext, $watermarkquality_attachment);
+ else
+ imagepng($resource, $file_location.".".$ext);
+ $filesize = filesize($file_location.".".$ext);
+ $maycreatethumb = false;
+ $abandonorig = true;
+ }
+ }
+ if ($maycreatethumb){ // if no watermark is added, create the thumbnail now for the above resized image.
+ imagejpeg($thumb, $file_location.".".$ext, $thumbquality_attachment);
+ $filesize = filesize($file_location.".".$ext);
+ }
+ }
+ }
+ else $warning = $lang_attachment['text_invalid_image_file'];
+ }
+ if (!$abandonorig){
+ if(!move_uploaded_file($file["tmp_name"], $file_location.".".$ext))
+ $warning = $lang_attachment['text_cannot_move_file'];
+ }
+ if (!$warning) //insert into database and add code to editor
+ {
+ $dlkey = md5($db_file_location.".".$ext);
+ sql_query("INSERT INTO attachments (userid, width, added, filename, filetype, filesize, location, dlkey, isimage, thumb) VALUES (".$CURUSER['id'].", ".$width.", ".sqlesc(date("Y-m-d H:i:s")).", ".sqlesc($origfilename).", ".sqlesc($filetype).", ".$filesize.", ".sqlesc($db_file_location.".".$ext).", ".sqlesc($dlkey).", ".($isimage ? 1 : 0).", ".($hasthumb ? 1 : 0).")") or sqlerr(__FILE__, __LINE__);
+ $count_left--;
+ if (!empty($_REQUEST['callback_func'])) {
+ $url = $httpdirectory_attachment."/".$db_file_location . ".$ext";
+ if ($hasthumb) {
+ $url .= ".thumb.jpg";
+ }
+ echo sprintf('', $_REQUEST['callback_func'], $dlkey, $url);
+ } else {
+ echo("");
+ }
+ }
+ }
+ }
+
}
?>
diff --git a/public/takeupload.php b/public/takeupload.php
index 78cfef6d..ce1c72a9 100644
--- a/public/takeupload.php
+++ b/public/takeupload.php
@@ -356,8 +356,9 @@ $id = mysql_insert_id();
* add custom fields
* @since v1.6
*/
+$now = date('Y-m-d H:i:s');
if (!empty($_POST['custom_fields'])) {
- $now = date('Y-m-d H:i:s');
+
foreach ($_POST['custom_fields'] as $customField => $customValue) {
foreach ((array)$customValue as $value) {
$customData = [
@@ -371,6 +372,18 @@ if (!empty($_POST['custom_fields'])) {
}
}
}
+if (!empty($_FILES['custom_fields'])) {
+ foreach ($_FILES['custom_fields'] as $customField => $customValue) {
+ $customData = [
+ 'torrent_id' => $id,
+ 'custom_field_id' => $customField,
+ 'custom_field_value' => $value,
+ 'created_at' => $now,
+ 'updated_at' => $now,
+ ];
+ \Nexus\Database\DB::insert('torrents_custom_field_values', $customData);
+ }
+}
@sql_query("DELETE FROM files WHERE torrent = $id");
foreach ($filelist as $file) {