users_cache = null; } public function users() { if (!$this->users_cache) { $this->users_cache = $this->users->find_all()->as_array(); } return $this->users_cache; } /** * Specify our rules here so that we have access to the instance of this model. */ public function validate(Validation $array=null) { // validate() is recursive, only modify the rules on the outermost call. if (!$array) { $this->rules = array( "name" => array("rules" => array("required", "length[1,255]"), "callbacks" => array(array($this, "valid_name")))); } parent::validate($array); } public function save() { if (!$this->loaded()) { // New group parent::save(); module::event("group_created", $this); } else { // Updated group $original = ORM::factory("group", $this->id); parent::save(); module::event("group_updated", $original, $this); } $this->users_cache = null; 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", "conflict"); } } }