From 14dc15c7bdc6d016148bc28ec2ddc4b082346654 Mon Sep 17 00:00:00 2001 From: shish Date: Thu, 24 Jul 2008 07:50:31 +0000 Subject: [PATCH] disk full warnings git-svn-id: file:///home/shish/svn/shimmie2/trunk@921 7f39781d-f577-437e-ae19-be835c7a54ca --- ext/upload/main.php | 16 ++++++++++++++-- ext/upload/theme.php | 4 ++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/ext/upload/main.php b/ext/upload/main.php index 78af50bb..08a0f03a 100644 --- a/ext/upload/main.php +++ b/ext/upload/main.php @@ -5,6 +5,8 @@ class Upload extends Extension { // event handling {{{ public function receive_event($event) { if(is_null($this->theme)) $this->theme = get_theme_object("upload", "UploadTheme"); + + $is_full = (disk_free_space("./images/") < 100*1024*1024); if(is_a($event, 'InitExtEvent')) { global $config; @@ -16,7 +18,12 @@ class Upload extends Extension { if(is_a($event, 'PostListBuildingEvent')) { global $user; if($this->can_upload($user)) { - $this->theme->display_block($event->page); + if($is_full) { + $this->theme->display_full($event->page); + } + else { + $this->theme->display_block($event->page); + } } } @@ -58,7 +65,9 @@ class Upload extends Extension { } } else { - $this->theme->display_page($event->page); + if(!$is_full) { + $this->theme->display_page($event->page); + } } } @@ -79,6 +88,9 @@ class Upload extends Extension { if(is_a($event, "DataUploadEvent")) { global $config; + if($is_full) { + $event->veto("Upload failed; disk nearly full"); + } if(filesize($event->tmpname) > $config->get_int('upload_size')) { $event->veto("File too large (".filesize($event->tmpname)." > ".($config->get_int('upload_size')).")"); } diff --git a/ext/upload/theme.php b/ext/upload/theme.php index 3deab52b..00a2d2c5 100644 --- a/ext/upload/theme.php +++ b/ext/upload/theme.php @@ -5,6 +5,10 @@ class UploadTheme extends Themelet { $page->add_block(new Block("Upload", $this->build_upload_block(), "left", 20)); } + public function display_full($page) { + $page->add_block(new Block("Upload", "Disk nearly full, uploads disabled", "left", 20)); + } + public function display_page($page) { global $config; $tl_enabled = ($config->get_string("transload_engine", "none") != "none");