// Make a good name $orig_name = preg_replace("/[^A-Z0-9._-]/i", "_", $filename); $filename = time() . "_" . $orig_name; $i = 0; $parts = pathinfo($filename); while (file_exists(dirname(__DIR__) . '/' . $f3->get("UPLOADS") . $filename)) { $i++; $filename = $parts["filename"] . "-" . $i . "." . $parts["extension"]; } $newfile = new \Model\Issue\File(); $newfile->issue_id = $issue->id; $newfile->user_id = $user->id; $newfile->filename = $orig_name; $newfile->disk_filename = $f3->get("UPLOADS") . $filename; $newfile->disk_directory = $f3->get("UPLOADS"); $newfile->filesize = $file['size']; $newfile->content_type = $file['type']; $newfile->digest = md5($attachment['attachment']); $newfile->created_date = date("Y-m-d H:i:s"); $newfile->save(); $fp = fopen(dirname(__DIR__) . '/' . $f3->get("UPLOADS") . $filename, "w+"); fwrite($fp, $attachment['attachment']); fclose($fp); } } } } } } // close the connection imap_close($inbox);
/** * POST /issues/upload * Upload a file * * @param \Base $f3 * @param array $params * @throws \Exception */ public function upload($f3, $params) { $user_id = $this->_userId; $issue = new \Model\Issue(); $issue->load(array("id=? AND deleted_date IS NULL", $f3->get("POST.issue_id"))); if (!$issue->id) { $f3->error(404); return; } $web = \Web::instance(); $f3->set("UPLOADS", "uploads/" . date("Y") . "/" . date("m") . "/"); if (!is_dir($f3->get("UPLOADS"))) { mkdir($f3->get("UPLOADS"), 0777, true); } $overwrite = false; // set to true to overwrite an existing file; Default: false $slug = true; // rename file to filesystem-friendly version // Make a good name $orig_name = preg_replace("/[^A-Z0-9._-]/i", "_", $_FILES['attachment']['name']); $_FILES['attachment']['name'] = time() . "_" . $orig_name; $i = 0; $parts = pathinfo($_FILES['attachment']['name']); while (file_exists($f3->get("UPLOADS") . $_FILES['attachment']['name'])) { $i++; $_FILES['attachment']['name'] = $parts["filename"] . "-" . $i . "." . $parts["extension"]; } $web->receive(function ($file) use($f3, $orig_name, $user_id, $issue) { if ($file['size'] > $f3->get("files.maxsize")) { return false; } $newfile = new \Model\Issue\File(); $newfile->issue_id = $issue->id; $newfile->user_id = $user_id; $newfile->filename = $orig_name; $newfile->disk_filename = $file['name']; $newfile->disk_directory = $f3->get("UPLOADS"); $newfile->filesize = $file['size']; $newfile->content_type = $file['type']; $newfile->digest = md5_file($file['tmp_name']); $newfile->created_date = date("Y-m-d H:i:s"); $newfile->save(); $f3->set('file_id', $newfile->id); return true; // moves file from php tmp dir to upload dir }, $overwrite, $slug); if ($f3->get("POST.text")) { $comment = new \Model\Issue\Comment(); $comment->user_id = $this->_userId; $comment->issue_id = $issue->id; $comment->text = $f3->get("POST.text"); $comment->created_date = $this->now(); $comment->file_id = $f3->get('file_id'); $comment->save(); if (!!$f3->get("POST.notify")) { $notification = \Helper\Notification::instance(); $notification->issue_comment($issue->id, $comment->id); } } elseif ($newfile->id && !!$f3->get("POST.notify")) { $notification = \Helper\Notification::instance(); $notification->issue_file($issue->id, $f3->get("file_id")); } $f3->reroute("/issues/" . $issue->id); }