diff options
author | Florian Pritz <bluewind@xinu.at> | 2012-04-13 19:25:45 +0200 |
---|---|---|
committer | Florian Pritz <bluewind@xinu.at> | 2012-04-13 19:25:45 +0200 |
commit | 4397fbcba26037acc2c1323e73e5a54200da7c17 (patch) | |
tree | 9ff3b21a08607bb580bbaa7c7e778a548f92ee66 /application | |
parent | eb820e55b3e4a7af62038f8f236c37fb6e6c66d9 (diff) |
Add do_paste() and remove ajax from upload_form
If the session has timed out, javascript will get the login page and try
to redirect to "base_url/$htmlcode" which will obviously fail. Instead
of fixing the js code, reintroduce do_paste and use it.
Signed-off-by: Florian Pritz <bluewind@xinu.at>
Diffstat (limited to 'application')
-rw-r--r-- | application/controllers/file.php | 44 | ||||
-rw-r--r-- | application/views/file/upload_form.php | 17 |
2 files changed, 46 insertions, 15 deletions
diff --git a/application/controllers/file.php b/application/controllers/file.php index b8b22f12b..49434699c 100644 --- a/application/controllers/file.php +++ b/application/controllers/file.php @@ -205,16 +205,50 @@ class File extends CI_Controller { $this->load->view($this->var->view_dir.'/footer', $this->data); } - // Handles uploaded files - function do_upload() + // Handle pastes + function do_paste() { $this->muser->require_access(); - if ($this->uri->segment(3)) { - $this->var->cli_client = true; - $this->var->view_dir = "file_plaintext"; + $content = $this->input->post("content"); + $filesize = strlen($content); + $filename = "stdin"; + + if(!$content) { + $this->output->set_status_header(400); + $this->data["msg"] = "Nothing was pasted, content is empty."; + $this->load->view($this->var->view_dir.'/header', $this->data); + $this->load->view($this->var->view_dir.'/upload_error', $this->data); + $this->load->view($this->var->view_dir.'/footer'); + return; + } + + if ($filesize > $this->config->item('upload_max_size')) { + $this->output->set_status_header(413); + $this->load->view($this->var->view_dir.'/header', $this->data); + $this->load->view($this->var->view_dir.'/too_big'); + $this->load->view($this->var->view_dir.'/footer'); + return; } + $id = $this->file_mod->new_id(); + $hash = md5($content); + + $folder = $this->file_mod->folder($hash); + file_exists($folder) || mkdir ($folder); + $file = $this->file_mod->file($hash); + + file_put_contents($file, $content); + chmod($file, 0600); + $this->file_mod->add_file($hash, $id, $filename); + $this->file_mod->show_url($id, $extension); + } + + // Handles uploaded files + function do_upload() + { + $this->muser->require_access(); + $extension = $this->input->post('extension'); if(!isset($_FILES['file']) || $_FILES['file']['error'] !== 0) { $this->output->set_status_header(400); diff --git a/application/views/file/upload_form.php b/application/views/file/upload_form.php index ce1d00498..3ab70eb62 100644 --- a/application/views/file/upload_form.php +++ b/application/views/file/upload_form.php @@ -6,18 +6,15 @@ <input type="submit" value="Upload" id="upload_button" name="process" /> </p> </form> + <p><b>OR</b></p> + <?php echo form_open_multipart('file/do_paste'); ?> + <p> + <textarea id="textarea" name="content" cols="80" rows="20"></textarea><br /> + <input type="submit" value="Paste" name="process" /> + </p> + </form> <script type="text/javascript"> /* <![CDATA[ */ -document.write('\ - <p><b>OR</b></p>\ - <form action="javascript: do_paste()">\ - <p>\ - <textarea id="textarea" name="content" cols="80" rows="20"></textarea><br />\ - <input type="submit" value="Paste" name="process" />\ - </p>\ - </form>\ -'); - var upload_url = "<?php echo site_url("file/do_upload/dumb"); ?>"; var max_upload_size = "<?php echo $max_upload_size; ?>"; /* ]]> */ </script> |