diff options
Diffstat (limited to 'core/helpers/album.php')
-rw-r--r-- | core/helpers/album.php | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/core/helpers/album.php b/core/helpers/album.php index 21ad3810..b19a003d 100644 --- a/core/helpers/album.php +++ b/core/helpers/album.php @@ -39,22 +39,32 @@ class album_Core { throw new Exception("@todo INVALID_PARENT"); } + // Randomize the name if there's a conflict + $name_count = ORM::factory("item") + ->where("parent_id", $parent->id) + ->where("name", $name) + ->count_all(); + $name = $name_count == 0 ? $name : sprintf("%s_%03d", $name, $name_count); + + $path = !empty($path) ? $path : preg_replace("/[^A-Za-z0-9\.\-_]/", "_", $name); + + // Randomize the path if there's a conflict + $path_count = ORM::factory("item") + ->where("parent_id", $parent->id) + ->where("path", $path) + ->count_all(); + $path = $path_count == 0 ? $path : sprintf("%s_%03d", $path, $path_count); + $album = ORM::factory("item"); $album->type = "album"; $album->title = $title; $album->description = $description; $album->name = $name; - $album->path = !empty($path) ? $path : preg_replace("/[^A-Za-z0-9\.\-_]/", "_", $name); + $album->path = $path; $album->owner_id = $owner_id; $album->thumb_dirty = 1; $album->resize_dirty = 1; - while (ORM::factory("item") - ->where("parent_id", $parent->id) - ->where("name", $album->name) - ->find()->id) { - $album->name = "{$name}-" . rand(); - } $album = $album->add_to_parent($parent); mkdir($album->file_path()); |