Example #1
0
 /**
  * @param \Base $f3
  * @param array $params
  * @throws \Exception
  */
 public function file($f3, $params)
 {
     $file = new \Model\Issue\File();
     $file->load($params["id"]);
     if (!$file->id) {
         $f3->error(404);
         return;
     }
     $force = true;
     if (substr($file->content_type, 0, 5) == "image" || $file->content_type == "text/plain") {
         // Don't force download on image and plain text files
         // Eventually I'd like to have previews of files some way (more than the existing thumbnails), but for now this is how we do it - Alan
         $force = false;
     }
     if (!$this->_sendFile($file->disk_filename, $file->content_type, $file->filename, $force)) {
         $f3->error(404);
     }
 }
Example #2
0
          */
         // don't forget to set an Upload directory, and make it writable!
         $f3->set("UPLOADS", 'uploads/' . date("Y") . "/" . date("m") . "/");
         if (!is_dir(dirname(__DIR__) . '/' . $f3->get("UPLOADS"))) {
             mkdir(dirname(__DIR__) . '/' . $f3->get("UPLOADS"), 0777, true);
         }
         // 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);
     }
 }
Example #3
0
 /**
  * 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);
 }