diff --git a/contrib/res_limit/main.php b/contrib/res_limit/main.php
index 75c0d53c..98e90ee4 100644
--- a/contrib/res_limit/main.php
+++ b/contrib/res_limit/main.php
@@ -14,6 +14,7 @@ class ResolutionLimit extends Extension {
$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);
}
}