Skip to content

Commit

Permalink
Rollback the refactoring of the update into a helper method. Also rem…
Browse files Browse the repository at this point in the history
…ove the refactoring for check for commits
  • Loading branch information
Tim Almdal committed Dec 31, 2009
1 parent d50b753 commit d6ddbd1
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 93 deletions.
42 changes: 25 additions & 17 deletions modules/gallery/controllers/albums.php
Expand Up @@ -134,32 +134,40 @@ public function update($album_id) {
$form->edit_item->dirname->value != $album->name ||
$form->edit_item->slug->value != $album->slug) {
// Make sure that there's not a conflict
$errors = item::check_for_conflicts(
$album, $form->edit_item->dirname->value, $form->edit_item->slug->value);

if (!empty($errors["name_conflict"])) {
$form->edit_item->dirname->add_error("name_conflict", 1);
}
if (!empty($errors["slug_conflict"])) {
$form->edit_item->slug->add_error("slug_conflict", 1);
if ($row = db::build()
->select(array("name", "slug"))
->from("items")
->where("parent_id", "=", $album->parent_id)
->where("id", "<>", $album->id)
->and_open()
->where("name", "=", $form->edit_item->dirname->value)
->or_where("slug", "=", $form->edit_item->slug->value)
->close()
->execute()
->current()) {
if ($row->name == $form->edit_item->dirname->value) {
$form->edit_item->dirname->add_error("name_conflict", 1);
}
if ($row->slug == $form->edit_item->slug->value) {
$form->edit_item->slug->add_error("slug_conflict", 1);
}
$valid = false;
}
$valid = empty($errors);
}
}

if ($valid) {
$watching_album = $album->url() != ($location = parse_url(request::referrer(), PHP_URL_PATH));

$new_values = array("title" => $form->edit_item->title->value,
"description" => $form->edit_item->description->value,
"sort_column" => $form->edit_item->sort_order->column->value,
"sort_order" => $form->edit_item->sort_order->direction->value,
"slug" => $form->edit_item->slug->value);
$album->title = $form->edit_item->title->value;
$album->description = $form->edit_item->description->value;
$album->sort_column = $form->edit_item->sort_order->column->value;
$album->sort_order = $form->edit_item->sort_order->direction->value;
if ($album->id != 1) {
$new_values["name"] = $form->edit_item->dirname->value;
$album->rename($form->edit_item->dirname->value);
}
item::update($album, $new_values);

$album->slug = $form->edit_item->slug->value;
$album->save();
module::event("item_edit_form_completed", $album, $form);

log::success("content", "Updated album", "<a href=\"albums/$album->id\">view</a>");
Expand Down
38 changes: 23 additions & 15 deletions modules/gallery/controllers/movies.php
Expand Up @@ -76,26 +76,34 @@ public function update($movie_id) {
if ($form->edit_item->filename->value != $movie->name ||
$form->edit_item->slug->value != $movie->slug) {
// Make sure that there's not a name or slug conflict
$errors = item::check_for_conflicts(
$movie, $form->edit_item->filename->value, $form->edit_item->slug->value);

if (!empty($errors["name_conflict"])) {
$form->edit_item->filename->add_error("name_conflict", 1);
}
if (!empty($errors["slug_conflict"])) {
$form->edit_item->slug->add_error("slug_conflict", 1);
if ($row = db::build()
->select(array("name", "slug"))
->from("items")
->where("parent_id", "=", $movie->parent_id)
->where("id", "<>", $movie->id)
->and_open()
->where("name", "=", $form->edit_item->filename->value)
->or_where("slug", "=", $form->edit_item->slug->value)
->close()
->execute()
->current()) {
if ($row->name == $form->edit_item->filename->value) {
$form->edit_item->filename->add_error("name_conflict", 1);
}
if ($row->slug == $form->edit_item->slug->value) {
$form->edit_item->slug->add_error("slug_conflict", 1);
}
$valid = false;
}
$valid = empty($errors);
}
}

if ($valid) {
$new_values = array("title" => $form->edit_item->title->value,
"description" => $form->edit_item->description->value,
"name" => $form->edit_item->filename->value,
"slug" => $form->edit_item->slug->value);
item::update($movie, $new_values);

$movie->title = $form->edit_item->title->value;
$movie->description = $form->edit_item->description->value;
$movie->slug = $form->edit_item->slug->value;
$movie->rename($form->edit_item->filename->value);
$movie->save();
module::event("item_edit_form_completed", $movie, $form);

log::success("content", "Updated movie", "<a href=\"{$movie->url()}\">view</a>");
Expand Down
41 changes: 25 additions & 16 deletions modules/gallery/controllers/photos.php
Expand Up @@ -76,33 +76,42 @@ public function update($photo_id) {
if ($form->edit_item->filename->value != $photo->name ||
$form->edit_item->slug->value != $photo->slug) {
// Make sure that there's not a name or slug conflict
$errors = item::check_for_conflicts(
$photo, $form->edit_item->filename->value, $form->edit_item->slug->value);

if (!empty($errors["name_conflict"])) {
$form->edit_item->filename->add_error("name_conflict", 1);
}
if (!empty($errors["slug_conflict"])) {
$form->edit_item->slug->add_error("slug_conflict", 1);
if ($row = db::build()
->select(array("name", "slug"))
->from("items")
->where("parent_id", "=", $photo->parent_id)
->where("id", "<>", $photo->id)
->and_open()
->where("name", "=", $form->edit_item->filename->value)
->or_where("slug", "=", $form->edit_item->slug->value)
->close()
->execute()
->current()) {
if ($row->name == $form->edit_item->filename->value) {
$form->edit_item->filename->add_error("name_conflict", 1);
}
if ($row->slug == $form->edit_item->slug->value) {
$form->edit_item->slug->add_error("slug_conflict", 1);
}
$valid = false;
}
$valid = empty($errors);
}
}

if ($valid) {
$watching_album = $photo->url() != ($location = parse_url(request::referrer(), PHP_URL_PATH));

$new_values = array("title" => $form->edit_item->title->value,
"description" => $form->edit_item->description->value,
"name" => $form->edit_item->filename->value,
"slug" => $form->edit_item->slug->value);
item::update($photo, $new_values);

$photo->title = $form->edit_item->title->value;
$photo->description = $form->edit_item->description->value;
$photo->slug = $form->edit_item->slug->value;
$photo->rename($form->edit_item->filename->value);
$photo->save();
module::event("item_edit_form_completed", $photo, $form);

log::success("content", "Updated photo", "<a href=\"{$photo->url()}\">view</a>");
message::success(
t("Saved photo %photo_title", array("photo_title" => html::purify($photo->title))));
t("Saved photo %photo_title",
array("photo_title" => html::purify($photo->title))));

print json_encode(
array("result" => "success",
Expand Down
45 changes: 0 additions & 45 deletions modules/gallery/helpers/item.php
Expand Up @@ -96,51 +96,6 @@ static function validate_url_safe($input) {
}
}


static function update($item, $fields) {
$dirty = false;
if ($item->id != 1 && !empty($fields["name"]) && $fields["name"] != $item->name) {
$item->rename($fields["name"]);
unset($fields["name"]);
$dirty = true;
}
foreach ($fields as $field => $value) {
if ($value !== $item->$field) {
$item->$field = $value;
$dirty = true;
}
}

if ($dirty) {
$item->save();
}
}

static function check_for_conflicts($item, $new_name, $new_slug) {
$errors = array();

if ($row = db::build()
->select(array("name", "slug"))
->from("items")
->where("parent_id", "=", $item->parent_id)
->where("id", "<>", $item->id)
->and_open()
->where("name", "=", $new_name)
->or_where("slug", "=", $new_slug)
->close()
->execute()
->current()) {
if ($row->name == $new_name) {
$errors["name_conflict"] = 1;
}
if ($row->slug == $new_slug) {
$errors["slug_conflict"] = 1;
}
}

return $errors;
}

/**
* Sanitize a filename into something presentable as an item title
* @param string $filename
Expand Down

0 comments on commit d6ddbd1

Please sign in to comment.