diff options
-rw-r--r-- | application/controllers/file.php | 65 | ||||
-rw-r--r-- | application/views/file/deleted.php | 13 | ||||
-rw-r--r-- | application/views/file/file_info.php | 65 | ||||
-rw-r--r-- | application/views/file/upload_history.php | 47 | ||||
-rw-r--r-- | application/views/file_plaintext/delete_form.php | 2 | ||||
-rw-r--r-- | application/views/file_plaintext/deleted.php | 9 |
6 files changed, 119 insertions, 82 deletions
diff --git a/application/controllers/file.php b/application/controllers/file.php index 079802dbc..2a56df96c 100644 --- a/application/controllers/file.php +++ b/application/controllers/file.php @@ -180,37 +180,64 @@ class File extends CI_Controller { echo $cached; } - // Allow users to delete their own IDs - function delete() + function do_delete() { $this->muser->require_access(); - $id = $this->uri->segment(3); - $this->data["id"] = $id; + $ids = $this->input->post("ids"); + $errors = array(); + $msgs = array(); + $deleted_count = 0; + $total_count = 0; - $process = $this->input->post("process"); - if ($this->var->cli_client) { - $process = true; + if (!$ids) { + show_error("No IDs specified"); } - if ($id && !$this->file_mod->id_exists($id)) { - $this->output->set_status_header(404); - $this->data["msg"] = "Unknown ID."; - } elseif ($process) { + foreach ($ids as $id) { + $total_count++; + + if (!$this->file_mod->id_exists($id)) { + $errors[] = "'$id' didn't exist anymore."; + continue; + } + if ($this->file_mod->delete_id($id)) { - $this->load->view($this->var->view_dir.'/header', $this->data); - $this->load->view($this->var->view_dir.'/deleted', $this->data); - $this->load->view($this->var->view_dir.'/footer', $this->data); - return; + $msgs[] = "'$id' has been removed."; + $deleted_count++; } else { - $this->data["msg"] = "Deletion failed. Do you really own that file?"; + $errors[] = "'$id' couldn't be deleted."; } } - $this->data["filedata"] = $this->file_mod->get_filedata($id); - $this->data["can_delete"] = $this->data["filedata"]["user"] == $this->muser->get_userid(); + $this->data["errors"] = $errors; + $this->data["msgs"] = $msgs; + $this->data["deleted_count"] = $deleted_count; + $this->data["total_count"] = $total_count; + + $this->load->view($this->var->view_dir.'/header', $this->data); + $this->load->view($this->var->view_dir.'/deleted', $this->data); + $this->load->view($this->var->view_dir.'/footer', $this->data); + } + + function delete() + { + $this->muser->require_access(); + + $id = $this->uri->segment(3); + $this->data["id"] = $id; + + if ($id && !$this->file_mod->id_exists($id)) { + $this->output->set_status_header(404); + echo "Unknown ID '$id'.\n"; + return; + } - $this->file_mod->display_info($id); + if ($this->file_mod->delete_id($id)) { + echo "$id has been deleted.\n"; + } else { + echo "Deletion failed. Do you really own that file?\n"; + } } // Handle pastes diff --git a/application/views/file/deleted.php b/application/views/file/deleted.php index f12433808..ef02398d9 100644 --- a/application/views/file/deleted.php +++ b/application/views/file/deleted.php @@ -1,3 +1,14 @@ <div class="center"> - <p><?php echo $id; ?> has been deleted.</p> + <?php if (!empty($errors)) { + echo "<p>"; + echo implode("<br />\n", $errors); + echo "</p>"; + } ?> + <?php if (!empty($msgs)) { + echo "<p>"; + echo implode("<br />\n", $msgs); + echo "</p>"; + } ?> + + <p><?php echo $deleted_count; ?> of <?php echo $total_count; ?> deleted.</p> </div> diff --git a/application/views/file/file_info.php b/application/views/file/file_info.php index 1e9d9fdfd..779ece854 100644 --- a/application/views/file/file_info.php +++ b/application/views/file/file_info.php @@ -1,39 +1,30 @@ <div class="center"> - <?php echo form_open('file/delete/'.$id); ?> - <?php if(isset($msg)) echo "<p>".$msg."</p>"; ?> - <?php if($filedata): ?> - <?php if($can_delete) { ?> - <p>You are about to delete the following upload:</p> - <?php } ?> - <table style="margin: auto"> - <tr> - <td class="title">ID</td> - <td class="text"><a href="<?php echo site_url($id); ?>/"><?php echo $id; ?></a></td> - </tr> - <tr> - <td class="title">Filename</td> - <td class="text"><?php echo $filedata["filename"]; ?></td> - </tr> - <tr> - <td class="title">Date of upload</td> - <td class="text"><?php echo date("r", $filedata["date"]); ?></td> - </tr> - <tr> - <td class="title">Date of removal</td> - <td class="text"><?php echo $timeout; ?></td> - </tr> - <tr> - <td class="title">Size</td> - <td class="text"><?php echo format_bytes($filedata["filesize"]); ?></td> - </tr> - <tr> - <td class="title">Mimetype</td> - <td class="text"><?php echo $filedata["mimetype"]; ?></td> - </tr> - </table> - <?php if($can_delete) { ?> - <input type="submit" value="Delete" name="process" /> - <?php } ?> - <?php endif; ?> - </form> + <?php if($filedata): ?> + <table style="margin: auto"> + <tr> + <td class="title">ID</td> + <td class="text"><a href="<?php echo site_url($id); ?>/"><?php echo $id; ?></a></td> + </tr> + <tr> + <td class="title">Filename</td> + <td class="text"><?php echo $filedata["filename"]; ?></td> + </tr> + <tr> + <td class="title">Date of upload</td> + <td class="text"><?php echo date("r", $filedata["date"]); ?></td> + </tr> + <tr> + <td class="title">Date of removal</td> + <td class="text"><?php echo $timeout; ?></td> + </tr> + <tr> + <td class="title">Size</td> + <td class="text"><?php echo format_bytes($filedata["filesize"]); ?></td> + </tr> + <tr> + <td class="title">Mimetype</td> + <td class="text"><?php echo $filedata["mimetype"]; ?></td> + </tr> + </table> + <?php endif; ?> </div> diff --git a/application/views/file/upload_history.php b/application/views/file/upload_history.php index 8f0f8e3d7..2f0d0f41f 100644 --- a/application/views/file/upload_history.php +++ b/application/views/file/upload_history.php @@ -1,23 +1,26 @@ -<table class="results"> -<tr> - <th></th> - <th>ID</th> - <th>Filename</th> - <th>Mimetype - <th>Date</th> - <th>Hash</th> - <th>Size</th> -</tr> +<?php echo form_open("file/do_delete"); ?> + <table class="results"> + <tr> + <th></th> + <th>ID</th> + <th>Filename</th> + <th>Mimetype + <th>Date</th> + <th>Hash</th> + <th>Size</th> + </tr> -<?php foreach($query as $key => $item): ?> -<tr class="<?php echo even_odd(); ?>"> - <td><a href="<?php echo site_url("file/delete/".$item["id"]); ?>"><img src="<?php echo base_url(); ?>data/img/fuge-icons/cross.png" /></a></td> - <td><a href="<?php echo site_url("/".$item["id"]); ?>/"><?php echo $item["id"]; ?></a></td> - <td><?php echo htmlspecialchars($item["filename"]); ?></td> - <td><?php echo $item["mimetype"]; ?></td> - <td><?php echo $item["date"]; ?></td> - <td><?php echo $item["hash"]; ?></td> - <td><?php echo $item["filesize"]; ?></td> -</tr> -<?php endforeach; ?> -</table> + <?php foreach($query as $key => $item): ?> + <tr class="<?php echo even_odd(); ?>"> + <td><input type="checkbox" name="ids[<?php echo $item["id"]; ?>]" value="<?php echo $item["id"]; ?>" /></td> + <td><a href="<?php echo site_url("/".$item["id"]); ?>/"><?php echo $item["id"]; ?></a></td> + <td><?php echo htmlspecialchars($item["filename"]); ?></td> + <td><?php echo $item["mimetype"]; ?></td> + <td><?php echo $item["date"]; ?></td> + <td><?php echo $item["hash"]; ?></td> + <td><?php echo $item["filesize"]; ?></td> + </tr> + <?php endforeach; ?> + </table> + <input type="submit" value="Delete checked" name="process" /> +</form> diff --git a/application/views/file_plaintext/delete_form.php b/application/views/file_plaintext/delete_form.php deleted file mode 100644 index ba736078c..000000000 --- a/application/views/file_plaintext/delete_form.php +++ /dev/null @@ -1,2 +0,0 @@ -<?php if(isset($msg)) echo $msg; ?> - diff --git a/application/views/file_plaintext/deleted.php b/application/views/file_plaintext/deleted.php index e5683b9d4..347766092 100644 --- a/application/views/file_plaintext/deleted.php +++ b/application/views/file_plaintext/deleted.php @@ -1 +1,8 @@ -<?php echo $id; ?> has been deleted. +<?php if (!empty($errors)) { + echo implode("\n", $errors); +} ?> +<?php if (!empty($msgs)) { + echo implode("\n", $msgs); +} ?> + +<?php echo $deleted_count; ?> of <?php echo $total_count; ?> deleted. |