This repository has been archived on 2024-09-05. You can view files and clone it, but cannot push or open issues or pull requests.
shimmie2/contrib/res_limit/main.php
shish 5ebc559595 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
2008-02-06 15:54:50 +00:00

68 lines
2.1 KiB
PHP

<?php
/**
* Name: Resolution Limiter
* Author: Shish <webmaster@shishnet.org>
* Link: http://trac.shishnet.org/shimmie2/
* License: GPLv2
* Description: Allows the admin to set min / max image dimentions
*/
class ResolutionLimit extends Extension {
public function receive_event($event) {
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;
if($min_w > 0 && $image->width < $min_w) $event->veto("Image too small");
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");
$sb->add_label("Min ");
$sb->add_int_option("upload_min_width");
$sb->add_label(" x ");
$sb->add_int_option("upload_min_height");
$sb->add_label(" px");
$sb->add_label("<br>Max ");
$sb->add_int_option("upload_max_width");
$sb->add_label(" x ");
$sb->add_int_option("upload_max_height");
$sb->add_label(" px");
$sb->add_label("<br>(-1 for no limit)");
$sb->add_label("<br>Ratios ");
$sb->add_text_option("upload_ratios");
$sb->add_label("<br>(eg. '4:3 16:9', blank for no limit)");
$event->panel->add_block($sb);
}
}
}
add_event_listener(new ResolutionLimit(), 40); // early, to veto UIE
?>