where("name", "=", $name)->find(); if ($group->loaded()) { throw new Exception("@todo GROUP_ALREADY_EXISTS $name"); } $group->name = $name; $group->save(); return $group; } /** * The group of all possible visitors. This includes the guest user. * * @return Group_Definition the group object */ static function everybody() { return model_cache::get("group", 1); } /** * The group of all logged-in visitors. This does not include guest users. * * @return Group_Definition the group object */ static function registered_users() { return model_cache::get("group", 2); } /** * Look up a group by id. * @param integer $id the user id * @return Group_Definition the group object, or null if the id was invalid. */ static function lookup($id) { return self::_lookup_by_field("id", $id); } /** * Look up a group by name. * @param integer $id the group name * @return Group_Definition the group object, or null if the name was invalid. */ static function lookup_by_name($name) { return self::_lookup_by_field("name", $name); } /** * Search the groups by the field and value. * @param string $field_name column to look up the user by * @param string $value value to match * @return Group_Definition the group object, or null if the name was invalid. */ private static function _lookup_by_field($field_name, $value) { try { $user = model_cache::get("group", $value, $field_name); if ($user->loaded()) { return $user; } } catch (Exception $e) { if (strpos($e->getMessage(), "MISSING_MODEL") === false) { throw $e; } } return null; } }