diff options
-rw-r--r-- | core/controllers/quick.php | 3 | ||||
-rw-r--r-- | core/helpers/core.php | 36 | ||||
-rw-r--r-- | core/helpers/movie.php | 2 | ||||
-rw-r--r-- | core/helpers/photo.php | 2 | ||||
-rw-r--r-- | core/models/item.php | 36 | ||||
-rw-r--r-- | modules/organize/helpers/organize_task.php | 3 |
6 files changed, 45 insertions, 37 deletions
diff --git a/core/controllers/quick.php b/core/controllers/quick.php index 48245144..0f1a3244 100644 --- a/core/controllers/quick.php +++ b/core/controllers/quick.php @@ -82,8 +82,7 @@ class Quick_Controller extends Controller { public function make_album_cover($id) { access::verify_csrf(); - $item = ORM::factory("item", $id); - $item->make_album_cover(); + core::make_album_cover(ORM::factory("item", $id)); print json_encode(array("result" => "success")); } diff --git a/core/helpers/core.php b/core/helpers/core.php index 4c73f148..944db71f 100644 --- a/core/helpers/core.php +++ b/core/helpers/core.php @@ -34,14 +34,46 @@ class core_Core { $parent = $source->parent(); if ($parent->album_cover_item_id == $source->id) { - $parent->remove_album_cover(); + if ($parent->children_count() > 1) { + foreach ($parent->children(2) as $child) { + if ($child->id != $source->id) { + $new_cover_item = $child; + break; + } + } + core::make_album_cover($new_cover_item); + } else { + core::remove_album_cover($parent); + } } $source->move_to($target); // If the target has no cover item, make this it. if ($target->album_cover_item_id == null) { - $source->make_album_cover(); + core::make_album_cover($source); } } + + function make_album_cover($item) { + $parent = $item->parent(); + access::required("edit", $parent); + + $parent->album_cover_item_id = $item->is_album() ? $item->album_cover_item_id : $item->id; + $parent->thumb_dirty = 1; + $parent->save(); + graphics::generate($parent); + } + + function remove_album_cover($album) { + access::required("edit", $album); + @unlink($album->thumb_path()); + + $album->album_cover_item_id = null; + $album->thumb_width = 0; + $album->thumb_height = 0; + $album->thumb_dirty = 1; + $album->save(); + graphics::generate($album); + } }
\ No newline at end of file diff --git a/core/helpers/movie.php b/core/helpers/movie.php index 6d4279c8..328429fe 100644 --- a/core/helpers/movie.php +++ b/core/helpers/movie.php @@ -94,7 +94,7 @@ class movie_Core { // If the parent has no cover item, make this it. if ($parent->album_cover_item_id == null) { - $movie->make_album_cover(); + core::make_album_cover($movie); } return $movie; diff --git a/core/helpers/photo.php b/core/helpers/photo.php index 199633af..0677b7e1 100644 --- a/core/helpers/photo.php +++ b/core/helpers/photo.php @@ -98,7 +98,7 @@ class photo_Core { // If the parent has no cover item, make this it. if ($parent->album_cover_item_id == null) { - $photo->make_album_cover(); + core::make_album_cover($photo); } return $photo; diff --git a/core/models/item.php b/core/models/item.php index d7a233cc..40a209f6 100644 --- a/core/models/item.php +++ b/core/models/item.php @@ -98,7 +98,7 @@ class Item_Model extends ORM_MPTT { $parent = $this->parent(); if ($parent->album_cover_item_id == $this->id) { - $parent->remove_album_cover(); + item::remove_album_cover($parent); } $original_path = $this->file_path(); @@ -109,10 +109,8 @@ class Item_Model extends ORM_MPTT { if (is_dir($original_path)) { @dir::unlink($original_path); @dir::unlink(dirname($original_resize_path)); - /* - * The thumb path is a path to .album.jpg not the actual directory. - * So we need to first try to delete the path (may not exist) and then its directory. - */ + // The thumb path is a path to .album.jpg not the actual directory. + // So we need to first try to delete the path (may not exist) and then its directory. @unlink($original_thumb_path); @dir::unlink(dirname($original_thumb_path)); } else { @@ -146,36 +144,16 @@ class Item_Model extends ORM_MPTT { rename($original_path, $this->file_path()); if ($this->is_album()) { - rename(dirname($original_resize_path), dirname($this->resize_path())); - rename(dirname($original_thumb_path), dirname($this->thumb_path())); + @rename(dirname($original_resize_path), dirname($this->resize_path())); + @rename(dirname($original_thumb_path), dirname($this->thumb_path())); } else { - rename($original_resize_path, $this->resize_path()); - rename($original_thumb_path, $this->thumb_path()); + @rename($original_resize_path, $this->resize_path()); + @rename($original_thumb_path, $this->thumb_path()); } return $this; } - function make_album_cover() { - $parent = $this->parent(); - access::required("edit", $parent); - - $parent->album_cover_item_id = $this->is_photo() ? $this->id : $this->album_cover_item_id; - $parent->thumb_dirty = 1; - $parent->save(); - graphics::generate($parent); - } - - function remove_album_cover() { - @unlink($this->thumb_path()); - - // @todo change the album cover to some other random image inside the album - $this->album_cover_item_id = null; - $this->thumb_dirty = 1; - $this->save(); - graphics::generate($this); - } - /** * album: url::site("albums/2") * photo: url::site("photos/3") diff --git a/modules/organize/helpers/organize_task.php b/modules/organize/helpers/organize_task.php index a3f9b717..22a9b744 100644 --- a/modules/organize/helpers/organize_task.php +++ b/modules/organize/helpers/organize_task.php @@ -53,8 +53,7 @@ class organize_task_Core { } break; case "albumCover": - $item = ORM::factory("item", $id); - $item->make_album_cover(); + core::make_album_cover(ORM::factory("item", $id)); break; case "delete": $item = ORM::factory("item", $id); |