From 4b44600bf9c3933d62c68fde35449b8681df4c82 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Thu, 31 Dec 2009 09:01:49 -0800 Subject: [PATCH] Change the gallery_rest::_validate() method to use the form rules in Item_Model. Change the Duplicate errors to sentence case. And generally clean up the flow in _validate(). --- modules/gallery/helpers/gallery_rest.php | 38 +++++++++++------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/modules/gallery/helpers/gallery_rest.php b/modules/gallery/helpers/gallery_rest.php index 94c7dc6ffd..21e2b9390a 100644 --- a/modules/gallery/helpers/gallery_rest.php +++ b/modules/gallery/helpers/gallery_rest.php @@ -87,6 +87,7 @@ static function post($request) { $parent = gallery_rest::_get_item(implode("/", $components), "edit"); // Validate the request data + $request->name = $name; $new_values = gallery_rest::_validate($request, $parent->id); $errors = $new_values->errors(); if (!empty($errors)) { @@ -181,32 +182,28 @@ private static function _get_children($item, $request) { } private static function _validate($request, $parent_id, $item_id=0) { - $new_values = array(); - $fields = array("name" => "length[0,255]", - "title" => "required|length[0,255]", - "description" => "length[0,65535]", - "slug" => "required|length[0,255]"); - if ($item_id == 1) { - unset($request["name"]); - unset($request["slug"]); - } - foreach (array_keys($fields) as $field) { + $item = ORM::factory("item", $item_id); + + // Normalize the inputs so all fields have a value + $new_values = Validation::factory(array()); + foreach ($item->form_rules as $field => $rule_set) { if (isset($request->$field)) { $new_values[$field] = $request->$field; } else if (isset($item->$field)) { $new_values[$field] = $item->$field; } + foreach (explode("|", $rule_set) as $rule) { + $new_values->add_rules($field, $rule); + } } + $name = $new_values["name"]; + $new_values["title"] = empty($new_values["title"]) ? $name : $new_values["title"]; + $new_values["description"] = + empty($new_values["description"]) ? null : $new_values["description"]; + $new_values["slug"] = empty($new_values["slug"]) ? $name : $new_values["slug"]; + if (!empty($request->image)) { $new_values["image"] = $request->image; - } - - $new_values = Validation::factory($new_values) - ->add_rules("name", "length[0,255]") - ->add_rules("title", "length[0,255]") - ->add_rules("description", "length[0,65535]") - ->add_rules("slug", "length[0,255]"); - if (isset($new_values["image"])) { $new_values->add_rules( "image", "upload::valid", "upload::required", "upload::type[gif,jpg,jpeg,png,flv,mp4]"); } @@ -215,9 +212,9 @@ private static function _validate($request, $parent_id, $item_id=0) { $errors = gallery_rest::_check_for_conflicts($parent_id, $item_id, $new_values["name"], $new_values["slug"]); if (!empty($errors)) { - !empty($errors["name_conflict"]) OR $new_values->add_error("name", "Duplicate Name"); + !empty($errors["name_conflict"]) OR $new_values->add_error("name", "Duplicate name"); !empty($errors["slug_conflict"]) OR - $new_values->add_error("slug", "Duplicate Internet Address"); + $new_values->add_error("slug", "Duplicate Internet address"); } } @@ -248,5 +245,4 @@ private static function _check_for_conflicts($parent_id, $item_id, $new_name, $n return $errors; } - }