Works, need to fix dirtying on custom size change
This commit is contained in:
parent
fca49d1cac
commit
f94e71b90b
@ -61,4 +61,9 @@ class custom_albums_event_Core {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static function theme_edit_form_completed($form) {
|
||||||
|
// Update our resize rules, in case the thumbnail or resize size has changed
|
||||||
|
custom_albums_installer::update_rules();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,44 +18,19 @@
|
|||||||
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*/
|
*/
|
||||||
class custom_albums_graphics_Core {
|
class custom_albums_graphics_Core {
|
||||||
/**
|
static function build_thumb($input_file, $output_file, $options) {
|
||||||
* Resize an image. Valid options are width, height and master. Master is one of the Image
|
|
||||||
* master dimension constants.
|
|
||||||
*
|
|
||||||
* @param string $input_file
|
|
||||||
* @param string $output_file
|
|
||||||
* @param array $options
|
|
||||||
*/
|
|
||||||
static function resize($input_file, $output_file, $options) {
|
|
||||||
graphics::init_toolkit();
|
|
||||||
|
|
||||||
module::event("graphics_resize", $input_file, $output_file, $options);
|
|
||||||
|
|
||||||
if (@filesize($input_file) == 0) {
|
|
||||||
throw new Exception("@todo EMPTY_INPUT_FILE");
|
|
||||||
}
|
|
||||||
|
|
||||||
$albumCustom = ORM::factory("custom_album")->where("album_id", "=", $options["parent_id"])->find();
|
$albumCustom = ORM::factory("custom_album")->where("album_id", "=", $options["parent_id"])->find();
|
||||||
|
|
||||||
// If this album has custom data, build the thumbnail at the specified size
|
// If this album has custom data, build the thumbnail at the specified size
|
||||||
if ($albumCustom->loaded()) {
|
if ($albumCustom->loaded()) {
|
||||||
$thumb_size = $albumCustom->thumb_size;
|
$options["width"] = $albumCustom->thumb_size;
|
||||||
|
$options["height"] = $albumCustom->thumb_size;
|
||||||
$dims = getimagesize($input_file);
|
|
||||||
if (max($dims[0], $dims[1]) < $thumb_size) {
|
|
||||||
// Image would get upscaled; do nothing
|
|
||||||
copy($input_file, $output_file);
|
|
||||||
} else {
|
|
||||||
$image = Image::factory($input_file)
|
|
||||||
->resize($thumb_size, $thumb_size, $options["master"])
|
|
||||||
->quality(module::get_var("gallery", "image_quality"));
|
|
||||||
if (graphics::can("sharpen")) {
|
|
||||||
$image->sharpen(module::get_var("gallery", "image_sharpen"));
|
|
||||||
}
|
|
||||||
$image->save($output_file);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module::event("graphics_resize_completed", $input_file, $output_file, $options);
|
gallery_graphics::resize($input_file, $output_file, $options);
|
||||||
|
}
|
||||||
|
|
||||||
|
static function build_resize($input_file, $output_file, $options) {
|
||||||
|
gallery_graphics::resize($input_file, $output_file, $options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,12 +19,6 @@
|
|||||||
*/
|
*/
|
||||||
class custom_albums_installer {
|
class custom_albums_installer {
|
||||||
static function install() {
|
static function install() {
|
||||||
// Add rules for generating our thumbnails and resizes
|
|
||||||
graphics::add_rule(
|
|
||||||
"gallery", "thumb", "custom_albums::resize",
|
|
||||||
array("width" => 0, "height" => 0, "master" => Image::AUTO),
|
|
||||||
200);
|
|
||||||
|
|
||||||
// Create a table to store custom album info in.
|
// Create a table to store custom album info in.
|
||||||
$db = Database::instance();
|
$db = Database::instance();
|
||||||
|
|
||||||
@ -38,6 +32,8 @@ class custom_albums_installer {
|
|||||||
) DEFAULT CHARSET=utf8;"
|
) DEFAULT CHARSET=utf8;"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
custom_albums_installer::update_rules();
|
||||||
|
|
||||||
module::set_version("custom_albums", 1);
|
module::set_version("custom_albums", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,4 +43,38 @@ class custom_albums_installer {
|
|||||||
$db->query("DROP TABLE IF EXISTS {custom_albums};");
|
$db->query("DROP TABLE IF EXISTS {custom_albums};");
|
||||||
module::delete("custom_albums");
|
module::delete("custom_albums");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static function update_rules() {
|
||||||
|
// Make sure our thumb size matches the gallery one
|
||||||
|
$thumb_size = module::get_var("gallery", "thumb_size");
|
||||||
|
if ($thumb_size != module::get_var("custom_albums", "thumb_size")) {
|
||||||
|
// Remove and readd our rule with the latest thumb size
|
||||||
|
graphics::remove_rule("custom_albums", "thumb", "custom_albums_graphics::build_thumb");
|
||||||
|
graphics::add_rule(
|
||||||
|
"custom_albums", "thumb", "custom_albums_graphics::build_thumb",
|
||||||
|
array("width" => $thumb_size, "height" => $thumb_size, "master" => Image::AUTO),
|
||||||
|
101);
|
||||||
|
|
||||||
|
// Deactivate the gallery thumbnail generation, we'll handle it now
|
||||||
|
graphics::deactivate_rules("gallery");
|
||||||
|
|
||||||
|
module::set_var("custom_albums", "thumb_size", $thumb_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make sure our resize size matches the gallery one
|
||||||
|
$resize_size = module::get_var("gallery", "resize_size");
|
||||||
|
if ($resize_size != module::get_var("custom_albums", "resize_size")) {
|
||||||
|
// Remove and readd our rule with the latest resize size
|
||||||
|
graphics::remove_rule("custom_albums", "resize", "custom_albums_graphics::build_resize");
|
||||||
|
graphics::add_rule(
|
||||||
|
"custom_albums", "resize", "custom_albums_graphics::build_resize",
|
||||||
|
array("width" => $resize_size, "height" => $resize_size, "master" => Image::AUTO),
|
||||||
|
101);
|
||||||
|
|
||||||
|
// Deactivate the gallery resize, we'll handle it now
|
||||||
|
graphics::deactivate_rules("gallery");
|
||||||
|
|
||||||
|
module::set_var("custom_albums", "resize_size", $resize_size);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user