summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/gallery/helpers/legal_file.php36
-rw-r--r--modules/gallery/models/item.php15
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;