summaryrefslogtreecommitdiff
path: root/modules/gallery/helpers/legal_file.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gallery/helpers/legal_file.php')
-rw-r--r--modules/gallery/helpers/legal_file.php32
1 files changed, 30 insertions, 2 deletions
diff --git a/modules/gallery/helpers/legal_file.php b/modules/gallery/helpers/legal_file.php
index eb9c25de..9f02fe70 100644
--- a/modules/gallery/helpers/legal_file.php
+++ b/modules/gallery/helpers/legal_file.php
@@ -70,7 +70,8 @@ class legal_file_Core {
if (empty(self::$movie_types_by_extension)) {
$types_by_extension_wrapper = new stdClass();
$types_by_extension_wrapper->types_by_extension = array(
- "flv" => "video/x-flv", "mp4" => "video/mp4", "m4v" => "video/x-m4v");
+ "flv" => "video/x-flv", "mp4" => "video/mp4", "m4v" => "video/x-m4v",
+ "webm" => "video/webm", "ogv" => "video/ogg");
module::event("movie_types_by_extension", $types_by_extension_wrapper);
foreach (self::$blacklist as $key) {
unset($types_by_extension_wrapper->types_by_extension[$key]);
@@ -297,7 +298,7 @@ class legal_file_Core {
$filename = str_replace("/", "_", $filename);
$filename = str_replace("\\", "_", $filename);
- // Remove extra dots from the filename. This will also remove extraneous underscores.
+ // Remove extra dots from the filename. Also removes extraneous and leading/trailing underscores.
$filename = legal_file::smash_extensions($filename);
// It's possible that the filename has no base (e.g. ".jpg") - if so, give it a generic one.
@@ -307,4 +308,31 @@ class legal_file_Core {
return $filename;
}
+
+ /**
+ * Sanitize a directory name for an album. This returns a completely legal and valid
+ * directory name.
+ *
+ * @param string $dirname (with no parent directory)
+ * @return string sanitized dirname
+ */
+ static function sanitize_dirname($dirname) {
+ // It should be a dirname without a parent directory - remove all slashes (and backslashes).
+ $dirname = str_replace("/", "_", $dirname);
+ $dirname = str_replace("\\", "_", $dirname);
+
+ // Remove extraneous and leading/trailing underscores.
+ $dirname = preg_replace("/[_]+/", "_", $dirname);
+ $dirname = trim($dirname, "_");
+
+ // Remove any trailing dots.
+ $dirname = rtrim($dirname, ".");
+
+ // It's possible that the dirname is now empty - if so, give it a generic one.
+ if (empty($dirname)) {
+ $dirname = "album";
+ }
+
+ return $dirname;
+ }
}