summaryrefslogtreecommitdiff
path: root/core/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'core/controllers')
-rw-r--r--core/controllers/albums.php24
-rw-r--r--core/controllers/movies.php19
-rw-r--r--core/controllers/photos.php21
3 files changed, 51 insertions, 13 deletions
diff --git a/core/controllers/albums.php b/core/controllers/albums.php
index 41a7810d..5b4d5979 100644
--- a/core/controllers/albums.php
+++ b/core/controllers/albums.php
@@ -155,16 +155,30 @@ class Albums_Controller extends Items_Controller {
access::required("edit", $album);
$form = album::get_edit_form($album);
- if ($form->validate()) {
- // @todo implement changing the name. This is not trivial, we have
- // to check for conflicts and rename the album itself, etc. Needs an
- // api method.
+ if ($valid = $form->validate()) {
+ // Make sure that there's not a conflict
+ if (Database::instance()
+ ->from("items")
+ ->where("parent_id", $album->parent_id)
+ ->where("id <>", $album->id)
+ ->where("name", $form->edit_album->dirname->value)
+ ->count_records()) {
+ $form->edit_album->dirname->add_error("conflict", 1);
+ $valid = false;
+ }
+ }
+
+ // @todo
+ // @todo we need to make sure that filename / dirname components can't contain a /
+ // @todo
+
+ if ($valid) {
$orig = clone $album;
$album->title = $form->edit_album->title->value;
$album->description = $form->edit_album->description->value;
$album->sort_column = $form->edit_album->sort_order->column->value;
$album->sort_order = $form->edit_album->sort_order->direction->value;
-
+ $album->rename($form->edit_album->dirname->value);
$album->save();
module::event("item_updated", $orig, $album);
diff --git a/core/controllers/movies.php b/core/controllers/movies.php
index 3d820506..55bbb0e5 100644
--- a/core/controllers/movies.php
+++ b/core/controllers/movies.php
@@ -69,13 +69,24 @@ class Movies_Controller extends Items_Controller {
access::required("edit", $photo);
$form = photo::get_edit_form($photo);
- if ($form->validate()) {
- // @todo implement changing the name. This is not trivial, we have
- // to check for conflicts and rename the album itself, etc. Needs an
- // api method.
+ if ($valid = $form->validate()) {
+ // Make sure that there's not a conflict
+ if (Database::instance()
+ ->from("items")
+ ->where("parent_id", $photo->parent_id)
+ ->where("id <>", $photo->id)
+ ->where("name", $form->edit_photo->filename->value)
+ ->count_records()) {
+ $form->edit_photo->filename->add_error("conflict", 1);
+ $valid = false;
+ }
+ }
+
+ if ($valid) {
$orig = clone $photo;
$photo->title = $form->edit_photo->title->value;
$photo->description = $form->edit_photo->description->value;
+ $photo->rename($form->edit_photo->filename->value);
$photo->save();
module::event("item_updated", $orig, $photo);
diff --git a/core/controllers/photos.php b/core/controllers/photos.php
index eb6ff569..5d4040cf 100644
--- a/core/controllers/photos.php
+++ b/core/controllers/photos.php
@@ -69,13 +69,26 @@ class Photos_Controller extends Items_Controller {
access::required("edit", $photo);
$form = photo::get_edit_form($photo);
- if ($form->validate()) {
- // @todo implement changing the name. This is not trivial, we have
- // to check for conflicts and rename the album itself, etc. Needs an
- // api method.
+ if ($valid = $form->validate()) {
+ if ($form->edit_photo->filename->value != $photo->name) {
+ // Make sure that there's not a conflict
+ if (Database::instance()
+ ->from("items")
+ ->where("parent_id", $photo->parent_id)
+ ->where("id <>", $photo->id)
+ ->where("name", $form->edit_photo->filename->value)
+ ->count_records()) {
+ $form->edit_photo->filename->add_error("conflict", 1);
+ $valid = false;
+ }
+ }
+ }
+
+ if ($valid) {
$orig = clone $photo;
$photo->title = $form->edit_photo->title->value;
$photo->description = $form->edit_photo->description->value;
+ $photo->rename($form->edit_photo->filename->value);
$photo->save();
module::event("item_updated", $orig, $photo);