diff options
| author | Bharat Mediratta <bharat@menalto.com> | 2010-01-16 21:15:12 -0800 |
|---|---|---|
| committer | Bharat Mediratta <bharat@menalto.com> | 2010-01-16 21:15:12 -0800 |
| commit | 6a4dda9bdef81bcf79abe5601fd7309e593078f3 (patch) | |
| tree | 6b6dbe69481ec3f1bbb783b7ce5c843c03090180 /modules/user/models/group.php | |
| parent | a691dcc63cb6403784e061997cc85606a8f953b3 (diff) | |
Convert Admin_Users_Controller, User_Model and Group_Model to use
model based validation.
Diffstat (limited to 'modules/user/models/group.php')
| -rw-r--r-- | modules/user/models/group.php | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/modules/user/models/group.php b/modules/user/models/group.php index 10f6f4b3..16d6adb7 100644 --- a/modules/user/models/group.php +++ b/modules/user/models/group.php @@ -20,8 +20,7 @@ class Group_Model extends ORM implements Group_Definition { protected $has_and_belongs_to_many = array("users"); - var $form_rules = array( - "name" => "required|length[4,255]"); + var $rules = array("name" => array("rules" => array("required", "length[4,255]"))); /** * @see ORM::delete() @@ -37,18 +36,42 @@ class Group_Model extends ORM implements Group_Definition { return $this->users->find_all(); } - public function save() { - if (!$this->loaded()) { - $created = 1; + /** + * Add some custom per-instance rules. + */ + public function validate($array=null) { + // validate() is recursive, only modify the rules on the outermost call. + if (!$array) { + $this->rules["name"]["callbacks"] = array(array($this, "valid_name")); } - $original = clone $this->original(); - parent::save(); - if (isset($created)) { + parent::validate($array); + } + + public function save() { + if (!$this->loaded()) { + // New group + parent::save(); module::event("group_created", $this); } else { + // Updated group + $original = clone $this->original(); + parent::save(); module::event("group_updated", $original, $this); } + return $this; } + + /** + * Validate the user name. Make sure there are no conflicts. + */ + public function valid_name(Validation $v, $field) { + if (db::build()->from("groups") + ->where("name", "=", $this->name) + ->where("id", "<>", $this->id) + ->count_records() == 1) { + $v->add_error("name", "in_use"); + } + } }
\ No newline at end of file |
