From 5ebc559595f6682a0dce30e67540be45f37fc12f Mon Sep 17 00:00:00 2001 From: shish Date: Wed, 6 Feb 2008 15:54:50 +0000 Subject: [PATCH] make res_limit work with the new upload system, and have a ratio limit git-svn-id: file:///home/shish/svn/shimmie2/trunk@710 7f39781d-f577-437e-ae19-be835c7a54ca --- contrib/res_limit/main.php | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/contrib/res_limit/main.php b/contrib/res_limit/main.php index 75c0d53c..f28b0edd 100644 --- a/contrib/res_limit/main.php +++ b/contrib/res_limit/main.php @@ -8,12 +8,13 @@ */ class ResolutionLimit extends Extension { public function receive_event($event) { - if(is_a($event, 'UploadingImageEvent')) { + if(is_a($event, 'ImageAdditionEvent')) { global $config; $min_w = $config->get_int("upload_min_width", -1); $min_h = $config->get_int("upload_min_height", -1); $max_w = $config->get_int("upload_max_width", -1); $max_h = $config->get_int("upload_max_height", -1); + $ratios = explode(" ", $config->get_string("upload_ratios", "")); $image = $event->image; @@ -21,6 +22,22 @@ class ResolutionLimit extends Extension { if($min_h > 0 && $image->height < $min_h) $event->veto("Image too small"); if($max_w > 0 && $image->width > $min_w) $event->veto("Image too large"); if($max_h > 0 && $image->height > $min_h) $event->veto("Image too large"); + + if(count($ratios) > 0) { + $ok = false; + foreach($ratios as $ratio) { + $parts = explode(":", $ratio); + $width = $parts[0]; + $height = $parts[1]; + if($image->width / $width == $image->height / $height) { + $ok = true; + break; + } + } + if(!$ok) { + $event->veto("Image needs to be in one of these ratios: ".html_escape($config->get_string("upload_ratios", ""))); + } + } } if(is_a($event, 'SetupBuildingEvent')) { $sb = new SetupBlock("Resolution Limits"); @@ -39,6 +56,10 @@ class ResolutionLimit extends Extension { $sb->add_label("
(-1 for no limit)"); + $sb->add_label("
Ratios "); + $sb->add_text_option("upload_ratios"); + $sb->add_label("
(eg. '4:3 16:9', blank for no limit)"); + $event->panel->add_block($sb); } }