diff options
-rw-r--r-- | modules/gallery/helpers/legal_file.php | 36 | ||||
-rw-r--r-- | modules/gallery/models/item.php | 15 |
2 files changed, 41 insertions, 10 deletions
diff --git a/modules/gallery/helpers/legal_file.php b/modules/gallery/helpers/legal_file.php index 68403fa6..5d10dffd 100644 --- a/modules/gallery/helpers/legal_file.php +++ b/modules/gallery/helpers/legal_file.php @@ -18,15 +18,28 @@ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ class legal_file_Core { - static function get_extensions() { + static function get_photo_extensions() { // Create a default list of allowed extensions and then let modules modify it. $extensions_wrapper = new stdClass(); $extensions_wrapper->extensions = array("gif", "jpg", "jpeg", "png"); + module::event("legal_photo_extensions", $extensions_wrapper); + return $extensions_wrapper->extensions; + } + + static function get_movie_extensions() { + // Create a default list of allowed extensions and then let modules modify it. + $extensions_wrapper = new stdClass(); + $extensions_wrapper->extensions = array("flv", "mp4", "m4v"); + module::event("legal_movie_extensions", $extensions_wrapper); + return $extensions_wrapper->extensions; + } + + static function get_extensions() { + $extensions = legal_file::get_photo_extensions(); if (movie::find_ffmpeg()) { - array_push($extensions_wrapper->extensions, "flv", "mp4", "m4v"); + array_push($extensions, legal_file::get_movie_extensions()); } - module::event("legal_file_extensions", $extensions_wrapper); - return $extensions_wrapper->extensions; + return $extensions; } static function get_filters() { @@ -36,4 +49,19 @@ class legal_file_Core { } return $filters; } + + static function get_photo_types() { + // Create a default list of allowed types and then let modules modify it. + $types_wrapper = new stdClass(); + module::event("legal_photo_types", $types_wrapper); + $types_wrapper->types = array("image/jpeg", "image/gif", "image/png"); + } + + static function get_movie_types() { + // Create a default list of allowed types and then let modules modify it. + $types_wrapper = new stdClass(); + $types_wrapper->types = array("video/flv", "video/x-flv", "video/mp4"); + module::event("legal_movie_types", $types_wrapper); + return $types_wrapper->types; + } } diff --git a/modules/gallery/models/item.php b/modules/gallery/models/item.php index 1704ff6e..1dd9b00b 100644 --- a/modules/gallery/models/item.php +++ b/modules/gallery/models/item.php @@ -804,10 +804,13 @@ class Item_Model_Core extends ORM_MPTT { return; } - if (($this->is_movie() || $this->is_photo()) && + if ($this->is_photo() && !preg_match("/^(" . - implode("|", array_map("preg_quote", - legal_file::get_extensions())) . + implode("|", array_map("preg_quote", legal_file::get_photo_extensions())) . + ")\$/i", $ext) || + $this->is_movie() && + !preg_match("/^(" . + implode("|", array_map("preg_quote", legal_file::get_movie_extensions())) . ")\$/i", $ext)) { $v->add_error("name", "illegal_data_file_extension"); } @@ -887,9 +890,9 @@ class Item_Model_Core extends ORM_MPTT { switch($field) { case "mime_type": if ($this->is_movie()) { - $legal_values = array("video/flv", "video/x-flv", "video/mp4"); - } if ($this->is_photo()) { - $legal_values = array("image/jpeg", "image/gif", "image/png"); + $legal_values = legal_file::get_movie_types(); + } else if ($this->is_photo()) { + $legal_values = legal_file::get_photo_types(); } break; |