Files
gallery3/modules/gallery/helpers/graphics.php

547 lines
21 KiB
PHP
Raw Normal View History

<?php defined("SYSPATH") or die("No direct script access.");
/**
* Gallery - a web based photo album viewer and editor
2013-01-21 01:22:01 -05:00
* Copyright (C) 2000-2013 Bharat Mediratta
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class graphics_Core {
private static $init;
private static $_rules_cache = array();
/**
* Add a new graphics rule.
*
* Rules are applied to targets (thumbnails and resizes) in priority order. Rules are functions
* in the graphics class. So for example, the following rule:
*
* graphics::add_rule("gallery", "thumb", "gallery_graphics::resize",
2008-12-30 01:43:16 +00:00
* array("width" => 200, "height" => 200, "master" => Image::AUTO), 100);
*
* Specifies that "gallery" is adding a rule to resize thumbnails down to a max of 200px on
* the longest side. The gallery module adds default rules at a priority of 100. You can set
* higher and lower priorities to perform operations before or after this fires.
*
* @param string $module_name the module that added the rule
* @param string $target the target for this operation ("thumb" or "resize")
* @param string $operation the name of the operation (<defining class>::method)
* @param array $args arguments to the operation
* @param integer $priority the priority for this rule (lower priorities are run first)
*/
static function add_rule($module_name, $target, $operation, $args, $priority) {
$rule = ORM::factory("graphics_rule");
$rule->module_name = $module_name;
$rule->target = $target;
$rule->operation = $operation;
$rule->priority = $priority;
$rule->args = serialize($args);
$rule->active = true;
$rule->save();
graphics::mark_dirty($target == "thumb", $target == "resize");
}
/**
* Remove any matching graphics rules
* @param string $module_name the module that added the rule
* @param string $target the target for this operation ("thumb" or "resize")
* @param string $operation the name of the operation(<defining class>::method)
*/
static function remove_rule($module_name, $target, $operation) {
db::build()
->delete("graphics_rules")
->where("module_name", "=", $module_name)
->where("target", "=", $target)
->where("operation", "=", $operation)
->execute();
graphics::mark_dirty($target == "thumb", $target == "resize");
}
/**
* Remove all rules for this module
* @param string $module_name
*/
static function remove_rules($module_name) {
2009-12-06 19:51:25 -08:00
$status = db::build()
->delete("graphics_rules")
->where("module_name", "=", $module_name)
->execute();
if (count($status)) {
graphics::mark_dirty(true, true);
}
}
/**
* Activate the rules for this module, typically done when the module itself is deactivated.
* Note that this does not mark images as dirty so that if you deactivate and reactivate a
* module it won't cause all of your images to suddenly require a rebuild.
*/
static function activate_rules($module_name) {
2009-12-06 19:51:25 -08:00
db::build()
->update("graphics_rules")
->set("active", true)
->where("module_name", "=", $module_name)
->execute();
}
/**
* Deactivate the rules for this module, typically done when the module itself is deactivated.
* Note that this does not mark images as dirty so that if you deactivate and reactivate a
* module it won't cause all of your images to suddenly require a rebuild.
*/
static function deactivate_rules($module_name) {
2009-12-06 19:51:25 -08:00
db::build()
->update("graphics_rules")
->set("active", false)
->where("module_name", "=", $module_name)
->execute();
}
/**
* Rebuild the thumb and resize for the given item.
* @param Item_Model $item
*/
static function generate($item) {
if ($item->thumb_dirty) {
$ops["thumb"] = $item->thumb_path();
}
if ($item->resize_dirty && $item->is_photo()) {
$ops["resize"] = $item->resize_path();
}
try {
foreach ($ops as $target => $output_file) {
$working_file = $item->file_path();
// Delete anything that might already be there
@unlink($output_file);
switch ($item->type) {
case "movie":
// Run movie_extract_frame events, which can either:
// - generate an output file, bypassing the ffmpeg-based movie::extract_frame
// - add to the options sent to movie::extract_frame (e.g. change frame extract time,
// add de-interlacing arguments to ffmpeg... see movie helper for more info)
// Note that the args are similar to those of the events in gallery_graphics
$movie_options_wrapper = new stdClass();
$movie_options_wrapper->movie_options = array();
module::event("movie_extract_frame", $working_file, $output_file,
$movie_options_wrapper, $item);
// If no output_file generated by events, run movie::extract_frame with movie_options
clearstatcache();
if (@filesize($output_file) == 0) {
try {
movie::extract_frame($working_file, $output_file, $movie_options_wrapper->movie_options);
// If we're here, we know ffmpeg is installed and the movie is valid. Because the
// user may not always have had ffmpeg installed, the movie's width, height, and
// mime type may need updating. Let's use this opportunity to make sure they're
// correct. It's not optimal to do it at this low level, but it's not trivial to find
// these cases quickly in an upgrade script.
list ($width, $height, $mime_type) = movie::get_file_metadata($working_file);
// Only set them if they need updating to avoid marking them as "changed"
if (($item->width != $width) || ($item->height != $height) ||
($item->mime_type != $mime_type)) {
$item->width = $width;
$item->height = $height;
$item->mime_type = $mime_type;
}
} catch (Exception $e) {
// Didn't work, likely because of MISSING_FFMPEG - use placeholder
graphics::_replace_image_with_placeholder($item, $target);
break;
}
}
$working_file = $output_file;
case "photo":
// Run the graphics rules (for both movies and photos)
foreach (self::_get_rules($target) as $rule) {
$args = array($working_file, $output_file, unserialize($rule->args), $item);
call_user_func_array($rule->operation, $args);
$working_file = $output_file;
}
break;
case "album":
if (!$cover = $item->album_cover()) {
// This album has no cover; copy its placeholder image. Because of an old bug, it's
// possible that there's an album cover item id that points to an invalid item. In that
// case, just null out the album cover item id. It's not optimal to do that at this low
// level, but it's not trivial to find these cases quickly in an upgrade script and if we
// don't do this, the album may be permanently marked as "needs rebuilding"
//
// ref: http://sourceforge.net/apps/trac/gallery/ticket/1172
// http://galleryproject.org/node/96926
if ($item->album_cover_item_id) {
$item->album_cover_item_id = null;
$item->save();
}
graphics::_replace_image_with_placeholder($item, $target);
break;
}
if ($cover->thumb_dirty) {
graphics::generate($cover);
}
if (!$cover->thumb_dirty) {
// Make the album cover from the cover item's thumb. Run gallery_graphics::resize with
// null options and it will figure out if this is a direct copy or conversion to jpg.
$working_file = $cover->thumb_path();
gallery_graphics::resize($working_file, $output_file, null, $item);
}
break;
}
}
if (!empty($ops["thumb"])) {
Better validation for uploaded files, especially where third-party modules might make a mistake. Squashed commit of the following: commit f2336a5aaa0eb797f252388ecd7b93a82f9646fd Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 21:56:10 2011 -0600 Behave reasonably if the image cannot be resized. commit e06b20738d0e0bdb80bae68b7fec2b3746192f6e Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 21:10:08 2011 -0600 Adding an image representing a broken thumbnail. This image was derived from the equivalent Gallery2 icon. It uses the same washed-out gray color scheme as the Gallery3 missing_movie icon. commit 4e3964527b66d8ccd76fb261d549cd9861a7a780 Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 20:30:28 2011 -0600 Initialize legal file arrays correctly. commit e9862d8fbc4d6fd06abf157f48dce671a7283993 Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 20:20:19 2011 -0600 Correction for the merge conflict markers I accidentally committed. commit 5e62d327a8dc477d3edea99826183548aca3e7f3 Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 20:17:36 2011 -0600 Expand the legal_file events to include separate photo and movie events, and to support MIME types. commit f0bfd1fef0b6d17da9a491f7c724ae53491926a2 Merge: 72f3fc4 db73413 Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 19:49:25 2011 -0600 Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto Conflicts: modules/gallery/helpers/system.php modules/gallery/tests/System_Helper_Test.php commit db734130c5fe10408040b2326b28b102f3131271 Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Mon May 16 21:38:07 2011 -0700 Automated update of .build_number to 153 for branch master Last update: 9aeb824aa1d15bd94bd7cef0a322c4e8a667e67b (1 commits ago) commit 8549ba30ca5045211d2efcf8e1c4f98f8a1e9f25 Author: Chad Kieffer <ckieffer@gmail.com> Date: Mon May 16 22:37:09 2011 -0600 Stop IE 9 album grid craziness. Thanks floridave. Fixes #1430. commit 9aeb824aa1d15bd94bd7cef0a322c4e8a667e67b Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Sun May 8 11:43:38 2011 -0700 Automated update of .build_number to 152 for branch master Last update: 7c80e6ef84b460dcade80c4dd5a65b41b0523505 (1 commits ago) commit 57f7e42a128848d73ad2a7ac0bf9df2fee6ba8b8 Author: Bharat Mediratta <bharat@menalto.com> Date: Sun May 8 11:42:40 2011 -0700 Add the item id to the print_proxy line so that we have a little more info about what the original was, and extend the timeout to 90 days from 10. Fixes #1733. commit 7c80e6ef84b460dcade80c4dd5a65b41b0523505 Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Fri May 6 11:48:43 2011 -0700 Automated update of .build_number to 151 for branch master Last update: 5d09cbff048fc2f457c8b19adb2177a12445890a (1 commits ago) commit 80dda6f64fd26f373cc138a199652099accceb26 Merge: 5d09cbf 46da011 Author: Bharat Mediratta <bharat@menalto.com> Date: Fri May 6 11:48:13 2011 -0700 Merge pull request #52 from chadparry/tempnam Fixes #1732 commit 5d09cbff048fc2f457c8b19adb2177a12445890a Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Thu May 5 21:53:39 2011 -0700 Automated update of .build_number to 150 for branch master Last update: 011eaa6480cbee8d328a31c9ac5c8e0ddc1f8a84 (1 commits ago) commit d5a31ceedee5841531f57342266746bb62d7d923 Author: Tim Almdal <tnalmdal@shaw.ca> Date: Thu May 5 21:53:10 2011 -0700 Fix for ticket 1275. Do the same checking as Kohana uses and don't worry about calling the utf8_encode routine. Corrected the error messages and also added a check to insure the XML Parser extension is loaded as we still need the utf8_encode function from it. commit 011eaa6480cbee8d328a31c9ac5c8e0ddc1f8a84 Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Thu May 5 14:53:06 2011 -0700 Automated update of .build_number to 149 for branch master Last update: 05ecfda36b7acee7f8d36df8391ba960097178a8 (1 commits ago) commit 5bae21864f54a03b557ab349cf97ba5f1d4276dc Author: Bharat Mediratta <bharat@menalto.com> Date: Thu May 5 14:52:47 2011 -0700 Follow-on to 6f916e49d5b431c2c1961a13d1a61fef8c02d628 -- don't make database calls if Gallery isn't installed, else we fail to bounce the user to the installer on fresh packages. #1637. commit 46da011bf69bbc4e45757feda8f0d28e91e7fb6a Author: Chad Parry <github@chad.parry.org> Date: Wed May 4 17:51:00 2011 -0600 Remove a newline I accidentally introduced. commit 5c6c71ffcdea354b5b9b30aaea2c1f92c8860d42 Merge: d2331bf 05ecfda Author: Chad Parry <github@chad.parry.org> Date: Wed May 4 17:49:42 2011 -0600 Merge branch 'master' into tempnam commit d2331bf43457a8d33491921f106879f087438171 Author: Chad Parry <github@chad.parry.org> Date: Wed May 4 17:48:25 2011 -0600 Simplified the temp_filename implementation and removed the mocks. commit 72f3fc46f6c7c9043e730063051ecfd88bf314c8 Author: Chad Parry <github@chad.parry.org> Date: Wed May 4 17:22:15 2011 -0600 Avoid "self::" because Kohana can't override it. commit 05ecfda36b7acee7f8d36df8391ba960097178a8 Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Mon May 2 21:38:50 2011 -0700 Automated update of .build_number to 148 for branch master Last update: 97400b78153620262120868b37545170416413c9 (2 commits ago) commit 229bfc5c7c760c53d1357503fd61bf9a165acf6e Author: Bharat Mediratta <bharat@menalto.com> Date: Mon May 2 21:37:04 2011 -0700 Track and redirect core.DownloadItem requests properly. This can happen if the G2 was imported with rewrite on, so the g2_url in the g2_map table has a shortened url, but then rewrite is disabled and the .htaccess mod_rewrite rules are sending over a &g2_view=core.DownloadItem request. Fixes #1728. commit 68370b92f5f6fa68744655f8c68b4b0ca59bf4fd Author: Bharat Mediratta <bharat@menalto.com> Date: Mon May 2 21:36:17 2011 -0700 Map the G2 album highlight thumbnail derivative id to the G3 album's thumbnail. Fixes #1729. commit 13dbd3515bfb5324cfbcb3bbeafc179771b54f75 Merge: f0f094c 97400b7 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 20:33:02 2011 -0600 Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto commit f0f094c3f79b09536f58083681c28f73271c506d Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 20:22:49 2011 -0600 Explain the conditional rename in item::save() with a comment. commit 1b3a6b85c156e4777d2aa8205b130984f55dc66d Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 18:29:34 2011 -0600 Improve the comment explaining why the data_file extension is important. commit c3e8c1e3b5e3cb1046acd4c923bb0ae9dbcd603a Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 18:12:56 2011 -0600 The data_file field is public, so we don't need to supply an accessor method. commit 0e844766baf3b3875cbb2d84579626e05e879420 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 16:40:55 2011 -0600 Change the signature of system::tempnam to something more appropriate for Gallery. commit 5c9a3b3f39f6ff0d5c84c2cf283d27eaebe2e66e Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 21:19:47 2011 -0600 Create a tempnam substitute that safely creates files with a given extension. commit 2375a02e2cdbd1ccaf7dc4d3db9d85119972e3a9 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 16:40:55 2011 -0600 Change the signature of system::tempnam to something more appropriate for Gallery. commit a8ca9dcf9edd54633c0c78b3af76aa974d38fc64 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 16:10:06 2011 -0600 Change the name of the extensions helper to legal_file. commit 7e61a01a96f5eab7212dba754ac64fdfb4d9e8ab Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 16:08:49 2011 -0600 Change the name of the extensions helper to legal_file. commit 4c2b2ebd3f2052898fbfb175650ed4cf49c8006e Author: Chad Parry <github@chad.parry.org> Date: Wed Apr 27 20:52:35 2011 -0600 Remove a newline at the end of the file that I accidentally introduced. commit 6d564f185e5279d6cca9a7385066514ff18a2455 Merge: 7ff485f 4060640 Author: Chad Parry <github@chad.parry.org> Date: Wed Apr 27 20:35:58 2011 -0600 Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto commit 7ff485fa48c392bbbb0370f67cb1bd6fcc00c2a4 Author: Chad Parry <github@chad.parry.org> Date: Wed Apr 27 20:29:06 2011 -0600 Move the extensions helpers out of the Kohana system directory and into their own Gallery Extensions class. commit 26585fed03236f0f70a75959e1d3002025f4e15e Merge: 809567f c8f90e8 Author: Chad Parry <github@chad.parry.org> Date: Sun Apr 24 08:28:39 2011 -0600 Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto commit 809567f12850f59bdeb47a2963f6968b99b5a201 Author: Chad Parry <github@chad.parry.org> Date: Sun Apr 24 08:10:04 2011 -0600 Expose the data file field. commit fcb06bf175bb9eeff36d9c294e97ace9374ef0f3 Author: Chad Parry <github@chad.parry.org> Date: Sun Apr 24 00:45:12 2011 -0600 Don't assign to the item->name field if the name is unchanged, because the save method will crash. commit c6ef706d70c7e48bea1145eec1b13fb5683e023f Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 22:55:59 2011 -0600 Preserve old data files long enough for them to be available to event handlers. commit 0d6a3a3cfc4f38f450db9e18da47a5e2ad826af8 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 21:19:47 2011 -0600 Create a tempnam substitute that safely creates files with a given extension. commit e149cf7238a1f8eaddfc68580f2d636dd8255795 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 16:39:25 2011 -0600 Support data files that change their extension and MIME type. commit 6702104f571413e4d57db3515b2070c48d3e9b55 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 16:35:00 2011 -0600 Resolve an infinite recursion that happens when the path caches are updated during saving. commit 944cb72eea946f4c45a04b7e4c7c33929fa8b9f3 Merge: 567522b 5af74d4 Author: Chad Parry <github@chad.parry.org> Date: Fri Apr 22 14:10:42 2011 -0600 Merge remote branch 'origin/master' into rawphoto commit 567522bfa08c370bb5baf8454afc5b04bc9e49b4 Author: Chad Parry <github@chad.parry.org> Date: Thu Apr 21 20:12:32 2011 -0600 Add an event for when a new graphics toolkit is chosen. commit 31ba081b793141ca36866a6dd349cd2eac5af68e Author: Chad Parry <github@chad.parry.org> Date: Thu Apr 21 02:06:53 2011 -0600 Add an event that will collect all valid filename extensions.
2011-05-18 22:01:51 -06:00
if (file_exists($item->thumb_path())) {
$item->thumb_dirty = 0;
} else {
Kohana_Log::add("error", "Failed to rebuild thumb image: $item->title");
graphics::_replace_image_with_placeholder($item, "thumb");
Better validation for uploaded files, especially where third-party modules might make a mistake. Squashed commit of the following: commit f2336a5aaa0eb797f252388ecd7b93a82f9646fd Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 21:56:10 2011 -0600 Behave reasonably if the image cannot be resized. commit e06b20738d0e0bdb80bae68b7fec2b3746192f6e Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 21:10:08 2011 -0600 Adding an image representing a broken thumbnail. This image was derived from the equivalent Gallery2 icon. It uses the same washed-out gray color scheme as the Gallery3 missing_movie icon. commit 4e3964527b66d8ccd76fb261d549cd9861a7a780 Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 20:30:28 2011 -0600 Initialize legal file arrays correctly. commit e9862d8fbc4d6fd06abf157f48dce671a7283993 Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 20:20:19 2011 -0600 Correction for the merge conflict markers I accidentally committed. commit 5e62d327a8dc477d3edea99826183548aca3e7f3 Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 20:17:36 2011 -0600 Expand the legal_file events to include separate photo and movie events, and to support MIME types. commit f0bfd1fef0b6d17da9a491f7c724ae53491926a2 Merge: 72f3fc4 db73413 Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 19:49:25 2011 -0600 Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto Conflicts: modules/gallery/helpers/system.php modules/gallery/tests/System_Helper_Test.php commit db734130c5fe10408040b2326b28b102f3131271 Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Mon May 16 21:38:07 2011 -0700 Automated update of .build_number to 153 for branch master Last update: 9aeb824aa1d15bd94bd7cef0a322c4e8a667e67b (1 commits ago) commit 8549ba30ca5045211d2efcf8e1c4f98f8a1e9f25 Author: Chad Kieffer <ckieffer@gmail.com> Date: Mon May 16 22:37:09 2011 -0600 Stop IE 9 album grid craziness. Thanks floridave. Fixes #1430. commit 9aeb824aa1d15bd94bd7cef0a322c4e8a667e67b Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Sun May 8 11:43:38 2011 -0700 Automated update of .build_number to 152 for branch master Last update: 7c80e6ef84b460dcade80c4dd5a65b41b0523505 (1 commits ago) commit 57f7e42a128848d73ad2a7ac0bf9df2fee6ba8b8 Author: Bharat Mediratta <bharat@menalto.com> Date: Sun May 8 11:42:40 2011 -0700 Add the item id to the print_proxy line so that we have a little more info about what the original was, and extend the timeout to 90 days from 10. Fixes #1733. commit 7c80e6ef84b460dcade80c4dd5a65b41b0523505 Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Fri May 6 11:48:43 2011 -0700 Automated update of .build_number to 151 for branch master Last update: 5d09cbff048fc2f457c8b19adb2177a12445890a (1 commits ago) commit 80dda6f64fd26f373cc138a199652099accceb26 Merge: 5d09cbf 46da011 Author: Bharat Mediratta <bharat@menalto.com> Date: Fri May 6 11:48:13 2011 -0700 Merge pull request #52 from chadparry/tempnam Fixes #1732 commit 5d09cbff048fc2f457c8b19adb2177a12445890a Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Thu May 5 21:53:39 2011 -0700 Automated update of .build_number to 150 for branch master Last update: 011eaa6480cbee8d328a31c9ac5c8e0ddc1f8a84 (1 commits ago) commit d5a31ceedee5841531f57342266746bb62d7d923 Author: Tim Almdal <tnalmdal@shaw.ca> Date: Thu May 5 21:53:10 2011 -0700 Fix for ticket 1275. Do the same checking as Kohana uses and don't worry about calling the utf8_encode routine. Corrected the error messages and also added a check to insure the XML Parser extension is loaded as we still need the utf8_encode function from it. commit 011eaa6480cbee8d328a31c9ac5c8e0ddc1f8a84 Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Thu May 5 14:53:06 2011 -0700 Automated update of .build_number to 149 for branch master Last update: 05ecfda36b7acee7f8d36df8391ba960097178a8 (1 commits ago) commit 5bae21864f54a03b557ab349cf97ba5f1d4276dc Author: Bharat Mediratta <bharat@menalto.com> Date: Thu May 5 14:52:47 2011 -0700 Follow-on to 6f916e49d5b431c2c1961a13d1a61fef8c02d628 -- don't make database calls if Gallery isn't installed, else we fail to bounce the user to the installer on fresh packages. #1637. commit 46da011bf69bbc4e45757feda8f0d28e91e7fb6a Author: Chad Parry <github@chad.parry.org> Date: Wed May 4 17:51:00 2011 -0600 Remove a newline I accidentally introduced. commit 5c6c71ffcdea354b5b9b30aaea2c1f92c8860d42 Merge: d2331bf 05ecfda Author: Chad Parry <github@chad.parry.org> Date: Wed May 4 17:49:42 2011 -0600 Merge branch 'master' into tempnam commit d2331bf43457a8d33491921f106879f087438171 Author: Chad Parry <github@chad.parry.org> Date: Wed May 4 17:48:25 2011 -0600 Simplified the temp_filename implementation and removed the mocks. commit 72f3fc46f6c7c9043e730063051ecfd88bf314c8 Author: Chad Parry <github@chad.parry.org> Date: Wed May 4 17:22:15 2011 -0600 Avoid "self::" because Kohana can't override it. commit 05ecfda36b7acee7f8d36df8391ba960097178a8 Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Mon May 2 21:38:50 2011 -0700 Automated update of .build_number to 148 for branch master Last update: 97400b78153620262120868b37545170416413c9 (2 commits ago) commit 229bfc5c7c760c53d1357503fd61bf9a165acf6e Author: Bharat Mediratta <bharat@menalto.com> Date: Mon May 2 21:37:04 2011 -0700 Track and redirect core.DownloadItem requests properly. This can happen if the G2 was imported with rewrite on, so the g2_url in the g2_map table has a shortened url, but then rewrite is disabled and the .htaccess mod_rewrite rules are sending over a &g2_view=core.DownloadItem request. Fixes #1728. commit 68370b92f5f6fa68744655f8c68b4b0ca59bf4fd Author: Bharat Mediratta <bharat@menalto.com> Date: Mon May 2 21:36:17 2011 -0700 Map the G2 album highlight thumbnail derivative id to the G3 album's thumbnail. Fixes #1729. commit 13dbd3515bfb5324cfbcb3bbeafc179771b54f75 Merge: f0f094c 97400b7 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 20:33:02 2011 -0600 Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto commit f0f094c3f79b09536f58083681c28f73271c506d Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 20:22:49 2011 -0600 Explain the conditional rename in item::save() with a comment. commit 1b3a6b85c156e4777d2aa8205b130984f55dc66d Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 18:29:34 2011 -0600 Improve the comment explaining why the data_file extension is important. commit c3e8c1e3b5e3cb1046acd4c923bb0ae9dbcd603a Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 18:12:56 2011 -0600 The data_file field is public, so we don't need to supply an accessor method. commit 0e844766baf3b3875cbb2d84579626e05e879420 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 16:40:55 2011 -0600 Change the signature of system::tempnam to something more appropriate for Gallery. commit 5c9a3b3f39f6ff0d5c84c2cf283d27eaebe2e66e Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 21:19:47 2011 -0600 Create a tempnam substitute that safely creates files with a given extension. commit 2375a02e2cdbd1ccaf7dc4d3db9d85119972e3a9 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 16:40:55 2011 -0600 Change the signature of system::tempnam to something more appropriate for Gallery. commit a8ca9dcf9edd54633c0c78b3af76aa974d38fc64 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 16:10:06 2011 -0600 Change the name of the extensions helper to legal_file. commit 7e61a01a96f5eab7212dba754ac64fdfb4d9e8ab Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 16:08:49 2011 -0600 Change the name of the extensions helper to legal_file. commit 4c2b2ebd3f2052898fbfb175650ed4cf49c8006e Author: Chad Parry <github@chad.parry.org> Date: Wed Apr 27 20:52:35 2011 -0600 Remove a newline at the end of the file that I accidentally introduced. commit 6d564f185e5279d6cca9a7385066514ff18a2455 Merge: 7ff485f 4060640 Author: Chad Parry <github@chad.parry.org> Date: Wed Apr 27 20:35:58 2011 -0600 Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto commit 7ff485fa48c392bbbb0370f67cb1bd6fcc00c2a4 Author: Chad Parry <github@chad.parry.org> Date: Wed Apr 27 20:29:06 2011 -0600 Move the extensions helpers out of the Kohana system directory and into their own Gallery Extensions class. commit 26585fed03236f0f70a75959e1d3002025f4e15e Merge: 809567f c8f90e8 Author: Chad Parry <github@chad.parry.org> Date: Sun Apr 24 08:28:39 2011 -0600 Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto commit 809567f12850f59bdeb47a2963f6968b99b5a201 Author: Chad Parry <github@chad.parry.org> Date: Sun Apr 24 08:10:04 2011 -0600 Expose the data file field. commit fcb06bf175bb9eeff36d9c294e97ace9374ef0f3 Author: Chad Parry <github@chad.parry.org> Date: Sun Apr 24 00:45:12 2011 -0600 Don't assign to the item->name field if the name is unchanged, because the save method will crash. commit c6ef706d70c7e48bea1145eec1b13fb5683e023f Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 22:55:59 2011 -0600 Preserve old data files long enough for them to be available to event handlers. commit 0d6a3a3cfc4f38f450db9e18da47a5e2ad826af8 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 21:19:47 2011 -0600 Create a tempnam substitute that safely creates files with a given extension. commit e149cf7238a1f8eaddfc68580f2d636dd8255795 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 16:39:25 2011 -0600 Support data files that change their extension and MIME type. commit 6702104f571413e4d57db3515b2070c48d3e9b55 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 16:35:00 2011 -0600 Resolve an infinite recursion that happens when the path caches are updated during saving. commit 944cb72eea946f4c45a04b7e4c7c33929fa8b9f3 Merge: 567522b 5af74d4 Author: Chad Parry <github@chad.parry.org> Date: Fri Apr 22 14:10:42 2011 -0600 Merge remote branch 'origin/master' into rawphoto commit 567522bfa08c370bb5baf8454afc5b04bc9e49b4 Author: Chad Parry <github@chad.parry.org> Date: Thu Apr 21 20:12:32 2011 -0600 Add an event for when a new graphics toolkit is chosen. commit 31ba081b793141ca36866a6dd349cd2eac5af68e Author: Chad Parry <github@chad.parry.org> Date: Thu Apr 21 02:06:53 2011 -0600 Add an event that will collect all valid filename extensions.
2011-05-18 22:01:51 -06:00
}
}
if (!empty($ops["resize"])) {
Better validation for uploaded files, especially where third-party modules might make a mistake. Squashed commit of the following: commit f2336a5aaa0eb797f252388ecd7b93a82f9646fd Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 21:56:10 2011 -0600 Behave reasonably if the image cannot be resized. commit e06b20738d0e0bdb80bae68b7fec2b3746192f6e Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 21:10:08 2011 -0600 Adding an image representing a broken thumbnail. This image was derived from the equivalent Gallery2 icon. It uses the same washed-out gray color scheme as the Gallery3 missing_movie icon. commit 4e3964527b66d8ccd76fb261d549cd9861a7a780 Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 20:30:28 2011 -0600 Initialize legal file arrays correctly. commit e9862d8fbc4d6fd06abf157f48dce671a7283993 Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 20:20:19 2011 -0600 Correction for the merge conflict markers I accidentally committed. commit 5e62d327a8dc477d3edea99826183548aca3e7f3 Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 20:17:36 2011 -0600 Expand the legal_file events to include separate photo and movie events, and to support MIME types. commit f0bfd1fef0b6d17da9a491f7c724ae53491926a2 Merge: 72f3fc4 db73413 Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 19:49:25 2011 -0600 Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto Conflicts: modules/gallery/helpers/system.php modules/gallery/tests/System_Helper_Test.php commit db734130c5fe10408040b2326b28b102f3131271 Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Mon May 16 21:38:07 2011 -0700 Automated update of .build_number to 153 for branch master Last update: 9aeb824aa1d15bd94bd7cef0a322c4e8a667e67b (1 commits ago) commit 8549ba30ca5045211d2efcf8e1c4f98f8a1e9f25 Author: Chad Kieffer <ckieffer@gmail.com> Date: Mon May 16 22:37:09 2011 -0600 Stop IE 9 album grid craziness. Thanks floridave. Fixes #1430. commit 9aeb824aa1d15bd94bd7cef0a322c4e8a667e67b Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Sun May 8 11:43:38 2011 -0700 Automated update of .build_number to 152 for branch master Last update: 7c80e6ef84b460dcade80c4dd5a65b41b0523505 (1 commits ago) commit 57f7e42a128848d73ad2a7ac0bf9df2fee6ba8b8 Author: Bharat Mediratta <bharat@menalto.com> Date: Sun May 8 11:42:40 2011 -0700 Add the item id to the print_proxy line so that we have a little more info about what the original was, and extend the timeout to 90 days from 10. Fixes #1733. commit 7c80e6ef84b460dcade80c4dd5a65b41b0523505 Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Fri May 6 11:48:43 2011 -0700 Automated update of .build_number to 151 for branch master Last update: 5d09cbff048fc2f457c8b19adb2177a12445890a (1 commits ago) commit 80dda6f64fd26f373cc138a199652099accceb26 Merge: 5d09cbf 46da011 Author: Bharat Mediratta <bharat@menalto.com> Date: Fri May 6 11:48:13 2011 -0700 Merge pull request #52 from chadparry/tempnam Fixes #1732 commit 5d09cbff048fc2f457c8b19adb2177a12445890a Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Thu May 5 21:53:39 2011 -0700 Automated update of .build_number to 150 for branch master Last update: 011eaa6480cbee8d328a31c9ac5c8e0ddc1f8a84 (1 commits ago) commit d5a31ceedee5841531f57342266746bb62d7d923 Author: Tim Almdal <tnalmdal@shaw.ca> Date: Thu May 5 21:53:10 2011 -0700 Fix for ticket 1275. Do the same checking as Kohana uses and don't worry about calling the utf8_encode routine. Corrected the error messages and also added a check to insure the XML Parser extension is loaded as we still need the utf8_encode function from it. commit 011eaa6480cbee8d328a31c9ac5c8e0ddc1f8a84 Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Thu May 5 14:53:06 2011 -0700 Automated update of .build_number to 149 for branch master Last update: 05ecfda36b7acee7f8d36df8391ba960097178a8 (1 commits ago) commit 5bae21864f54a03b557ab349cf97ba5f1d4276dc Author: Bharat Mediratta <bharat@menalto.com> Date: Thu May 5 14:52:47 2011 -0700 Follow-on to 6f916e49d5b431c2c1961a13d1a61fef8c02d628 -- don't make database calls if Gallery isn't installed, else we fail to bounce the user to the installer on fresh packages. #1637. commit 46da011bf69bbc4e45757feda8f0d28e91e7fb6a Author: Chad Parry <github@chad.parry.org> Date: Wed May 4 17:51:00 2011 -0600 Remove a newline I accidentally introduced. commit 5c6c71ffcdea354b5b9b30aaea2c1f92c8860d42 Merge: d2331bf 05ecfda Author: Chad Parry <github@chad.parry.org> Date: Wed May 4 17:49:42 2011 -0600 Merge branch 'master' into tempnam commit d2331bf43457a8d33491921f106879f087438171 Author: Chad Parry <github@chad.parry.org> Date: Wed May 4 17:48:25 2011 -0600 Simplified the temp_filename implementation and removed the mocks. commit 72f3fc46f6c7c9043e730063051ecfd88bf314c8 Author: Chad Parry <github@chad.parry.org> Date: Wed May 4 17:22:15 2011 -0600 Avoid "self::" because Kohana can't override it. commit 05ecfda36b7acee7f8d36df8391ba960097178a8 Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Mon May 2 21:38:50 2011 -0700 Automated update of .build_number to 148 for branch master Last update: 97400b78153620262120868b37545170416413c9 (2 commits ago) commit 229bfc5c7c760c53d1357503fd61bf9a165acf6e Author: Bharat Mediratta <bharat@menalto.com> Date: Mon May 2 21:37:04 2011 -0700 Track and redirect core.DownloadItem requests properly. This can happen if the G2 was imported with rewrite on, so the g2_url in the g2_map table has a shortened url, but then rewrite is disabled and the .htaccess mod_rewrite rules are sending over a &g2_view=core.DownloadItem request. Fixes #1728. commit 68370b92f5f6fa68744655f8c68b4b0ca59bf4fd Author: Bharat Mediratta <bharat@menalto.com> Date: Mon May 2 21:36:17 2011 -0700 Map the G2 album highlight thumbnail derivative id to the G3 album's thumbnail. Fixes #1729. commit 13dbd3515bfb5324cfbcb3bbeafc179771b54f75 Merge: f0f094c 97400b7 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 20:33:02 2011 -0600 Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto commit f0f094c3f79b09536f58083681c28f73271c506d Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 20:22:49 2011 -0600 Explain the conditional rename in item::save() with a comment. commit 1b3a6b85c156e4777d2aa8205b130984f55dc66d Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 18:29:34 2011 -0600 Improve the comment explaining why the data_file extension is important. commit c3e8c1e3b5e3cb1046acd4c923bb0ae9dbcd603a Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 18:12:56 2011 -0600 The data_file field is public, so we don't need to supply an accessor method. commit 0e844766baf3b3875cbb2d84579626e05e879420 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 16:40:55 2011 -0600 Change the signature of system::tempnam to something more appropriate for Gallery. commit 5c9a3b3f39f6ff0d5c84c2cf283d27eaebe2e66e Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 21:19:47 2011 -0600 Create a tempnam substitute that safely creates files with a given extension. commit 2375a02e2cdbd1ccaf7dc4d3db9d85119972e3a9 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 16:40:55 2011 -0600 Change the signature of system::tempnam to something more appropriate for Gallery. commit a8ca9dcf9edd54633c0c78b3af76aa974d38fc64 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 16:10:06 2011 -0600 Change the name of the extensions helper to legal_file. commit 7e61a01a96f5eab7212dba754ac64fdfb4d9e8ab Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 16:08:49 2011 -0600 Change the name of the extensions helper to legal_file. commit 4c2b2ebd3f2052898fbfb175650ed4cf49c8006e Author: Chad Parry <github@chad.parry.org> Date: Wed Apr 27 20:52:35 2011 -0600 Remove a newline at the end of the file that I accidentally introduced. commit 6d564f185e5279d6cca9a7385066514ff18a2455 Merge: 7ff485f 4060640 Author: Chad Parry <github@chad.parry.org> Date: Wed Apr 27 20:35:58 2011 -0600 Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto commit 7ff485fa48c392bbbb0370f67cb1bd6fcc00c2a4 Author: Chad Parry <github@chad.parry.org> Date: Wed Apr 27 20:29:06 2011 -0600 Move the extensions helpers out of the Kohana system directory and into their own Gallery Extensions class. commit 26585fed03236f0f70a75959e1d3002025f4e15e Merge: 809567f c8f90e8 Author: Chad Parry <github@chad.parry.org> Date: Sun Apr 24 08:28:39 2011 -0600 Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto commit 809567f12850f59bdeb47a2963f6968b99b5a201 Author: Chad Parry <github@chad.parry.org> Date: Sun Apr 24 08:10:04 2011 -0600 Expose the data file field. commit fcb06bf175bb9eeff36d9c294e97ace9374ef0f3 Author: Chad Parry <github@chad.parry.org> Date: Sun Apr 24 00:45:12 2011 -0600 Don't assign to the item->name field if the name is unchanged, because the save method will crash. commit c6ef706d70c7e48bea1145eec1b13fb5683e023f Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 22:55:59 2011 -0600 Preserve old data files long enough for them to be available to event handlers. commit 0d6a3a3cfc4f38f450db9e18da47a5e2ad826af8 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 21:19:47 2011 -0600 Create a tempnam substitute that safely creates files with a given extension. commit e149cf7238a1f8eaddfc68580f2d636dd8255795 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 16:39:25 2011 -0600 Support data files that change their extension and MIME type. commit 6702104f571413e4d57db3515b2070c48d3e9b55 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 16:35:00 2011 -0600 Resolve an infinite recursion that happens when the path caches are updated during saving. commit 944cb72eea946f4c45a04b7e4c7c33929fa8b9f3 Merge: 567522b 5af74d4 Author: Chad Parry <github@chad.parry.org> Date: Fri Apr 22 14:10:42 2011 -0600 Merge remote branch 'origin/master' into rawphoto commit 567522bfa08c370bb5baf8454afc5b04bc9e49b4 Author: Chad Parry <github@chad.parry.org> Date: Thu Apr 21 20:12:32 2011 -0600 Add an event for when a new graphics toolkit is chosen. commit 31ba081b793141ca36866a6dd349cd2eac5af68e Author: Chad Parry <github@chad.parry.org> Date: Thu Apr 21 02:06:53 2011 -0600 Add an event that will collect all valid filename extensions.
2011-05-18 22:01:51 -06:00
if (file_exists($item->resize_path())) {
$item->resize_dirty = 0;
} else {
Kohana_Log::add("error", "Failed to rebuild resize image: $item->title");
graphics::_replace_image_with_placeholder($item, "resize");
Better validation for uploaded files, especially where third-party modules might make a mistake. Squashed commit of the following: commit f2336a5aaa0eb797f252388ecd7b93a82f9646fd Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 21:56:10 2011 -0600 Behave reasonably if the image cannot be resized. commit e06b20738d0e0bdb80bae68b7fec2b3746192f6e Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 21:10:08 2011 -0600 Adding an image representing a broken thumbnail. This image was derived from the equivalent Gallery2 icon. It uses the same washed-out gray color scheme as the Gallery3 missing_movie icon. commit 4e3964527b66d8ccd76fb261d549cd9861a7a780 Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 20:30:28 2011 -0600 Initialize legal file arrays correctly. commit e9862d8fbc4d6fd06abf157f48dce671a7283993 Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 20:20:19 2011 -0600 Correction for the merge conflict markers I accidentally committed. commit 5e62d327a8dc477d3edea99826183548aca3e7f3 Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 20:17:36 2011 -0600 Expand the legal_file events to include separate photo and movie events, and to support MIME types. commit f0bfd1fef0b6d17da9a491f7c724ae53491926a2 Merge: 72f3fc4 db73413 Author: Chad Parry <github@chad.parry.org> Date: Wed May 18 19:49:25 2011 -0600 Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto Conflicts: modules/gallery/helpers/system.php modules/gallery/tests/System_Helper_Test.php commit db734130c5fe10408040b2326b28b102f3131271 Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Mon May 16 21:38:07 2011 -0700 Automated update of .build_number to 153 for branch master Last update: 9aeb824aa1d15bd94bd7cef0a322c4e8a667e67b (1 commits ago) commit 8549ba30ca5045211d2efcf8e1c4f98f8a1e9f25 Author: Chad Kieffer <ckieffer@gmail.com> Date: Mon May 16 22:37:09 2011 -0600 Stop IE 9 album grid craziness. Thanks floridave. Fixes #1430. commit 9aeb824aa1d15bd94bd7cef0a322c4e8a667e67b Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Sun May 8 11:43:38 2011 -0700 Automated update of .build_number to 152 for branch master Last update: 7c80e6ef84b460dcade80c4dd5a65b41b0523505 (1 commits ago) commit 57f7e42a128848d73ad2a7ac0bf9df2fee6ba8b8 Author: Bharat Mediratta <bharat@menalto.com> Date: Sun May 8 11:42:40 2011 -0700 Add the item id to the print_proxy line so that we have a little more info about what the original was, and extend the timeout to 90 days from 10. Fixes #1733. commit 7c80e6ef84b460dcade80c4dd5a65b41b0523505 Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Fri May 6 11:48:43 2011 -0700 Automated update of .build_number to 151 for branch master Last update: 5d09cbff048fc2f457c8b19adb2177a12445890a (1 commits ago) commit 80dda6f64fd26f373cc138a199652099accceb26 Merge: 5d09cbf 46da011 Author: Bharat Mediratta <bharat@menalto.com> Date: Fri May 6 11:48:13 2011 -0700 Merge pull request #52 from chadparry/tempnam Fixes #1732 commit 5d09cbff048fc2f457c8b19adb2177a12445890a Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Thu May 5 21:53:39 2011 -0700 Automated update of .build_number to 150 for branch master Last update: 011eaa6480cbee8d328a31c9ac5c8e0ddc1f8a84 (1 commits ago) commit d5a31ceedee5841531f57342266746bb62d7d923 Author: Tim Almdal <tnalmdal@shaw.ca> Date: Thu May 5 21:53:10 2011 -0700 Fix for ticket 1275. Do the same checking as Kohana uses and don't worry about calling the utf8_encode routine. Corrected the error messages and also added a check to insure the XML Parser extension is loaded as we still need the utf8_encode function from it. commit 011eaa6480cbee8d328a31c9ac5c8e0ddc1f8a84 Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Thu May 5 14:53:06 2011 -0700 Automated update of .build_number to 149 for branch master Last update: 05ecfda36b7acee7f8d36df8391ba960097178a8 (1 commits ago) commit 5bae21864f54a03b557ab349cf97ba5f1d4276dc Author: Bharat Mediratta <bharat@menalto.com> Date: Thu May 5 14:52:47 2011 -0700 Follow-on to 6f916e49d5b431c2c1961a13d1a61fef8c02d628 -- don't make database calls if Gallery isn't installed, else we fail to bounce the user to the installer on fresh packages. #1637. commit 46da011bf69bbc4e45757feda8f0d28e91e7fb6a Author: Chad Parry <github@chad.parry.org> Date: Wed May 4 17:51:00 2011 -0600 Remove a newline I accidentally introduced. commit 5c6c71ffcdea354b5b9b30aaea2c1f92c8860d42 Merge: d2331bf 05ecfda Author: Chad Parry <github@chad.parry.org> Date: Wed May 4 17:49:42 2011 -0600 Merge branch 'master' into tempnam commit d2331bf43457a8d33491921f106879f087438171 Author: Chad Parry <github@chad.parry.org> Date: Wed May 4 17:48:25 2011 -0600 Simplified the temp_filename implementation and removed the mocks. commit 72f3fc46f6c7c9043e730063051ecfd88bf314c8 Author: Chad Parry <github@chad.parry.org> Date: Wed May 4 17:22:15 2011 -0600 Avoid "self::" because Kohana can't override it. commit 05ecfda36b7acee7f8d36df8391ba960097178a8 Author: Automatic Build Number Updater <bharat+gallery3_build_number_updater@menalto.com> Date: Mon May 2 21:38:50 2011 -0700 Automated update of .build_number to 148 for branch master Last update: 97400b78153620262120868b37545170416413c9 (2 commits ago) commit 229bfc5c7c760c53d1357503fd61bf9a165acf6e Author: Bharat Mediratta <bharat@menalto.com> Date: Mon May 2 21:37:04 2011 -0700 Track and redirect core.DownloadItem requests properly. This can happen if the G2 was imported with rewrite on, so the g2_url in the g2_map table has a shortened url, but then rewrite is disabled and the .htaccess mod_rewrite rules are sending over a &g2_view=core.DownloadItem request. Fixes #1728. commit 68370b92f5f6fa68744655f8c68b4b0ca59bf4fd Author: Bharat Mediratta <bharat@menalto.com> Date: Mon May 2 21:36:17 2011 -0700 Map the G2 album highlight thumbnail derivative id to the G3 album's thumbnail. Fixes #1729. commit 13dbd3515bfb5324cfbcb3bbeafc179771b54f75 Merge: f0f094c 97400b7 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 20:33:02 2011 -0600 Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto commit f0f094c3f79b09536f58083681c28f73271c506d Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 20:22:49 2011 -0600 Explain the conditional rename in item::save() with a comment. commit 1b3a6b85c156e4777d2aa8205b130984f55dc66d Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 18:29:34 2011 -0600 Improve the comment explaining why the data_file extension is important. commit c3e8c1e3b5e3cb1046acd4c923bb0ae9dbcd603a Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 18:12:56 2011 -0600 The data_file field is public, so we don't need to supply an accessor method. commit 0e844766baf3b3875cbb2d84579626e05e879420 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 16:40:55 2011 -0600 Change the signature of system::tempnam to something more appropriate for Gallery. commit 5c9a3b3f39f6ff0d5c84c2cf283d27eaebe2e66e Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 21:19:47 2011 -0600 Create a tempnam substitute that safely creates files with a given extension. commit 2375a02e2cdbd1ccaf7dc4d3db9d85119972e3a9 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 16:40:55 2011 -0600 Change the signature of system::tempnam to something more appropriate for Gallery. commit a8ca9dcf9edd54633c0c78b3af76aa974d38fc64 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 16:10:06 2011 -0600 Change the name of the extensions helper to legal_file. commit 7e61a01a96f5eab7212dba754ac64fdfb4d9e8ab Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 30 16:08:49 2011 -0600 Change the name of the extensions helper to legal_file. commit 4c2b2ebd3f2052898fbfb175650ed4cf49c8006e Author: Chad Parry <github@chad.parry.org> Date: Wed Apr 27 20:52:35 2011 -0600 Remove a newline at the end of the file that I accidentally introduced. commit 6d564f185e5279d6cca9a7385066514ff18a2455 Merge: 7ff485f 4060640 Author: Chad Parry <github@chad.parry.org> Date: Wed Apr 27 20:35:58 2011 -0600 Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto commit 7ff485fa48c392bbbb0370f67cb1bd6fcc00c2a4 Author: Chad Parry <github@chad.parry.org> Date: Wed Apr 27 20:29:06 2011 -0600 Move the extensions helpers out of the Kohana system directory and into their own Gallery Extensions class. commit 26585fed03236f0f70a75959e1d3002025f4e15e Merge: 809567f c8f90e8 Author: Chad Parry <github@chad.parry.org> Date: Sun Apr 24 08:28:39 2011 -0600 Merge branch 'master' of https://github.com/gallery/gallery3 into rawphoto commit 809567f12850f59bdeb47a2963f6968b99b5a201 Author: Chad Parry <github@chad.parry.org> Date: Sun Apr 24 08:10:04 2011 -0600 Expose the data file field. commit fcb06bf175bb9eeff36d9c294e97ace9374ef0f3 Author: Chad Parry <github@chad.parry.org> Date: Sun Apr 24 00:45:12 2011 -0600 Don't assign to the item->name field if the name is unchanged, because the save method will crash. commit c6ef706d70c7e48bea1145eec1b13fb5683e023f Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 22:55:59 2011 -0600 Preserve old data files long enough for them to be available to event handlers. commit 0d6a3a3cfc4f38f450db9e18da47a5e2ad826af8 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 21:19:47 2011 -0600 Create a tempnam substitute that safely creates files with a given extension. commit e149cf7238a1f8eaddfc68580f2d636dd8255795 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 16:39:25 2011 -0600 Support data files that change their extension and MIME type. commit 6702104f571413e4d57db3515b2070c48d3e9b55 Author: Chad Parry <github@chad.parry.org> Date: Sat Apr 23 16:35:00 2011 -0600 Resolve an infinite recursion that happens when the path caches are updated during saving. commit 944cb72eea946f4c45a04b7e4c7c33929fa8b9f3 Merge: 567522b 5af74d4 Author: Chad Parry <github@chad.parry.org> Date: Fri Apr 22 14:10:42 2011 -0600 Merge remote branch 'origin/master' into rawphoto commit 567522bfa08c370bb5baf8454afc5b04bc9e49b4 Author: Chad Parry <github@chad.parry.org> Date: Thu Apr 21 20:12:32 2011 -0600 Add an event for when a new graphics toolkit is chosen. commit 31ba081b793141ca36866a6dd349cd2eac5af68e Author: Chad Parry <github@chad.parry.org> Date: Thu Apr 21 02:06:53 2011 -0600 Add an event that will collect all valid filename extensions.
2011-05-18 22:01:51 -06:00
}
}
graphics::_update_item_dimensions($item);
$item->save();
} catch (Exception $e) {
// Something went wrong rebuilding the image. Replace with the placeholder images,
// leave it dirty and move on.
Kohana_Log::add("error", "Caught exception rebuilding images: {$item->title}\n" .
2013-01-14 12:52:47 -05:00
$e->getMessage() . "\n" . $e->getTraceAsString());
if ($item->is_photo()) {
graphics::_replace_image_with_placeholder($item, "resize");
}
graphics::_replace_image_with_placeholder($item, "thumb");
try {
graphics::_update_item_dimensions($item);
} catch (Exception $e) {
// Looks like get_file_metadata couldn't identify our placeholders. We should never get
// here, but in the odd case we do, we need to do something. Let's put in hardcoded values.
if ($item->is_photo()) {
list ($item->resize_width, $item->resize_height) = array(200, 200);
}
list ($item->thumb_width, $item->thumb_height) = array(200, 200);
}
$item->save();
throw $e;
}
}
private static function _update_item_dimensions($item) {
if ($item->is_photo()) {
list ($item->resize_width, $item->resize_height) =
photo::get_file_metadata($item->resize_path());
}
list ($item->thumb_width, $item->thumb_height) =
photo::get_file_metadata($item->thumb_path());
}
private static function _replace_image_with_placeholder($item, $target) {
if ($item->is_album() && !$item->album_cover_item_id) {
$input_path = MODPATH . "gallery/images/missing_album_cover.jpg";
} else if ($item->is_movie() || ($item->is_album() && $item->album_cover()->is_movie())) {
$input_path = MODPATH . "gallery/images/missing_movie.jpg";
} else {
$input_path = MODPATH . "gallery/images/missing_photo.jpg";
}
if ($target == "thumb") {
$output_path = $item->thumb_path();
$size = module::get_var("gallery", "thumb_size", 200);
} else {
$output_path = $item->resize_path();
$size = module::get_var("gallery", "resize_size", 640);
}
$options = array("width" => $size, "height" => $size, "master" => Image::AUTO);
try {
// Copy/convert/resize placeholder as needed.
gallery_graphics::resize($input_path, $output_path, $options, null);
} catch (Exception $e) {
// Copy/convert/resize didn't work. Add to the log and copy the jpg version (which could have
// a non-jpg extension). This is less than ideal, but it's better than putting nothing
// there and causing theme views to act strangely because a file is missing.
// @todo we should handle this better.
Kohana_Log::add("error", "Caught exception converting placeholder for missing image: " .
$item->title . "\n" . $e->getMessage() . "\n" . $e->getTraceAsString());
copy($input_path, $output_path);
}
if (!file_exists($output_path)) {
// Copy/convert/resize didn't throw an exception, but still didn't work - do the same as above.
// @todo we should handle this better.
Kohana_Log::add("error", "Failed to convert placeholder for missing image: $item->title");
copy($input_path, $output_path);
}
}
private static function _get_rules($target) {
if (empty(self::$_rules_cache[$target])) {
$rules = array();
foreach (ORM::factory("graphics_rule")
->where("target", "=", $target)
->where("active", "=", true)
2009-11-25 19:26:52 -08:00
->order_by("priority", "asc")
->find_all() as $rule) {
$rules[] = (object)$rule->as_array();
}
self::$_rules_cache[$target] = $rules;
}
return self::$_rules_cache[$target];
}
/**
* Return a query result that locates all items with dirty images.
* @return Database_Result Query result
*/
static function find_dirty_images_query() {
return db::build()
->from("items")
->and_open()
->where("thumb_dirty", "=", 1)
->and_open()
->where("type", "<>", "album")
->or_where("album_cover_item_id", "IS NOT", null)
->close()
->or_open()
->where("resize_dirty", "=", 1)
->where("type", "=", "photo")
->close()
->close();
}
/**
* Mark thumbnails and resizes as dirty. They will have to be rebuilt. Optionally, only those of
* a specified type and/or mime type can be marked (e.g. $type="movie" to rebuild movies only).
*/
static function mark_dirty($thumbs, $resizes, $type=null, $mime_type=null) {
if ($thumbs || $resizes) {
$db = db::build()
->update("items");
if ($type) {
$db->where("type", "=", $type);
}
if ($mime_type) {
$db->where("mime_type", "=", $mime_type);
}
if ($thumbs) {
$db->set("thumb_dirty", 1);
}
if ($resizes) {
$db->set("resize_dirty", 1);
}
$db->execute();
}
$count = graphics::find_dirty_images_query()->count_records();
if ($count) {
site_status::warning(
2013-01-14 12:52:47 -05:00
t2("One of your photos is out of date. <a %attrs>Click here to fix it</a>",
"%count of your photos are out of date. <a %attrs>Click here to fix them</a>",
$count,
array("attrs" => html::mark_clean(sprintf(
'href="%s" class="g-dialog-link"',
url::site("admin/maintenance/start/gallery_task::rebuild_dirty_images?csrf=__CSRF__"))))),
"graphics_dirty");
}
}
/**
* Detect which graphics toolkits are available on this system. Return an array of key value
* pairs where the key is one of gd, imagemagick, graphicsmagick and the value is information
* about that toolkit. For GD we return the version string, and for ImageMagick and
* GraphicsMagick we return the path to the directory containing the appropriate binaries.
*/
static function detect_toolkits() {
$toolkits = new stdClass();
$toolkits->gd = new stdClass();
$toolkits->imagemagick = new stdClass();
$toolkits->graphicsmagick = new stdClass();
// GD is special, it doesn't use exec()
$gd = function_exists("gd_info") ? gd_info() : array();
$toolkits->gd->name = "GD";
2009-05-09 16:37:03 +00:00
if (!isset($gd["GD Version"])) {
$toolkits->gd->installed = false;
$toolkits->gd->error = t("GD is not installed");
} else {
$toolkits->gd->installed = true;
$toolkits->gd->version = $gd["GD Version"];
$toolkits->gd->rotate = function_exists("imagerotate");
$toolkits->gd->sharpen = function_exists("imageconvolution");
$toolkits->gd->binary = "";
$toolkits->gd->dir = "";
if (!$toolkits->gd->rotate && !$toolkits->gd->sharpen) {
$toolkits->gd->error =
t("You have GD version %version, but it lacks image rotation and sharpening.",
array("version" => $gd["GD Version"]));
} else if (!$toolkits->gd->rotate) {
$toolkits->gd->error =
t("You have GD version %version, but it lacks image rotation.",
array("version" => $gd["GD Version"]));
} else if (!$toolkits->gd->sharpen) {
$toolkits->gd->error =
t("You have GD version %version, but it lacks image sharpening.",
array("version" => $gd["GD Version"]));
}
}
if (!function_exists("exec")) {
$toolkits->imagemagick->installed = false;
$toolkits->imagemagick->error = t("ImageMagick requires the <b>exec</b> function");
$toolkits->graphicsmagick->installed = false;
$toolkits->graphicsmagick->error = t("GraphicsMagick requires the <b>exec</b> function");
} else {
// ImageMagick & GraphicsMagick
$magick_kits = array(
2013-01-14 12:52:47 -05:00
"imagemagick" => array(
"name" => "ImageMagick", "binary" => "convert", "version_arg" => "-version",
"version_regex" => "/Version: \S+ (\S+)/"),
"graphicsmagick" => array(
"name" => "GraphicsMagick", "binary" => "gm", "version_arg" => "version",
"version_regex" => "/\S+ (\S+)/"));
// Loop through the kits
2011-01-08 19:44:46 +01:00
foreach ($magick_kits as $index => $settings) {
$path = system::find_binary(
$settings["binary"], module::get_var("gallery", "graphics_toolkit_path"));
$toolkits->$index->name = $settings["name"];
if ($path) {
if (@is_file($path) &&
preg_match(
$settings["version_regex"], shell_exec($path . " " . $settings["version_arg"]), $matches)) {
$version = $matches[1];
$toolkits->$index->installed = true;
$toolkits->$index->version = $version;
$toolkits->$index->binary = $path;
$toolkits->$index->dir = dirname($path);
$toolkits->$index->rotate = true;
$toolkits->$index->sharpen = true;
} else {
$toolkits->$index->installed = false;
$toolkits->$index->error =
t("%toolkit_name is installed, but PHP's open_basedir restriction prevents Gallery from using it.",
array("toolkit_name" => $settings["name"]));
}
} else {
$toolkits->$index->installed = false;
$toolkits->$index->error =
t("We could not locate %toolkit_name on your system.",
array("toolkit_name" => $settings["name"]));
}
}
2009-05-09 16:37:03 +00:00
}
return $toolkits;
}
/**
* This needs to be run once, after the initial install, to choose a graphics toolkit.
*/
static function choose_default_toolkit() {
// Detect a graphics toolkit
$toolkits = graphics::detect_toolkits();
foreach (array("imagemagick", "graphicsmagick", "gd") as $tk) {
if ($toolkits->$tk->installed) {
module::set_var("gallery", "graphics_toolkit", $tk);
module::set_var("gallery", "graphics_toolkit_path", $toolkits->$tk->dir);
break;
}
}
if (!module::get_var("gallery", "graphics_toolkit")) {
site_status::warning(
t("Graphics toolkit missing! Please <a href=\"%url\">choose a toolkit</a>",
2009-08-31 00:42:18 -07:00
array("url" => html::mark_clean(url::site("admin/graphics")))),
"missing_graphics_toolkit");
}
}
/**
* Choose which driver the Kohana Image library uses.
*/
static function init_toolkit() {
if (self::$init) {
return;
}
switch(module::get_var("gallery", "graphics_toolkit")) {
case "gd":
Kohana_Config::instance()->set("image.driver", "GD");
break;
case "imagemagick":
Kohana_Config::instance()->set("image.driver", "ImageMagick");
Kohana_Config::instance()->set(
"image.params.directory", module::get_var("gallery", "graphics_toolkit_path"));
break;
case "graphicsmagick":
Kohana_Config::instance()->set("image.driver", "GraphicsMagick");
Kohana_Config::instance()->set(
"image.params.directory", module::get_var("gallery", "graphics_toolkit_path"));
break;
}
self::$init = 1;
}
/**
* Verify that a specific graphics function is available with the active toolkit.
* @param string $func (eg rotate, sharpen)
* @return boolean
*/
static function can($func) {
if (module::get_var("gallery", "graphics_toolkit") == "gd") {
switch ($func) {
case "rotate":
return function_exists("imagerotate");
case "sharpen":
return function_exists("imageconvolution");
}
}
return true;
}
/**
* Return the max file size that this graphics toolkit can handle.
*/
static function max_filesize() {
if (module::get_var("gallery", "graphics_toolkit") == "gd") {
$memory_limit = trim(ini_get("memory_limit"));
$memory_limit_bytes = num::convert_to_bytes($memory_limit);
// GD expands images in memory and uses 4 bytes of RAM for every byte
// in the file.
$max_filesize = $memory_limit_bytes / 4;
$max_filesize_human_readable = num::convert_to_human_readable($max_filesize);
return array($max_filesize, $max_filesize_human_readable);
}
// Some arbitrarily large size
return array(1000000000, "1G");
}
}