| 63 | | |
|---|
| 64 | | MidgardUser *user = MIDGARD_USER(mgd->priv->user); |
|---|
| 65 | | |
|---|
| 66 | | if(!user || !midgard_user_is_root(user)) { |
|---|
| 67 | | MIDGARD_ERRNO_SET(mgd->mgd, MGD_ERR_ACCESS_DENIED); |
|---|
| 68 | | return FALSE; |
|---|
| 69 | | } |
|---|
| 70 | | |
|---|
| 71 | | MidgardQueryBuilder *builder = |
|---|
| 72 | | midgard_query_builder_new(mgd->mgd, "midgard_sitegroup"); |
|---|
| 73 | | |
|---|
| 74 | | if(!builder) |
|---|
| 75 | | return NULL; |
|---|
| 76 | | |
|---|
| 77 | | GValue val = {0, }; |
|---|
| 78 | | /* sitegroup's name constraint */ |
|---|
| 79 | | g_value_init(&val, G_TYPE_STRING); |
|---|
| 80 | | g_value_set_string(&val, name); |
|---|
| 81 | | midgard_query_builder_add_constraint(builder, |
|---|
| 82 | | "name", "=", &val); |
|---|
| 83 | | g_value_unset(&val); |
|---|
| 84 | | |
|---|
| 85 | | MidgardTypeHolder *holder = g_new(MidgardTypeHolder, 1); |
|---|
| 86 | | GObject **objects = midgard_query_builder_execute(builder, holder); |
|---|
| 87 | | g_object_unref(builder); |
|---|
| 88 | | |
|---|
| 89 | | if(!objects) { |
|---|
| | 63 | |
|---|
| | 64 | midgard_res *res = |
|---|
| | 65 | mgd_ungrouped_select(mgd->mgd, "id, admingroup, guid, realm, name", "sitegroup", |
|---|
| | 66 | "name=$q", NULL, name); |
|---|
| | 67 | |
|---|
| | 68 | if (!res) { |
|---|
| | 69 | |
|---|
| 108 | | self = MIDGARD_SITEGROUP(objects[0]); |
|---|
| 109 | | g_free(objects); |
|---|
| 110 | | g_free(holder); |
|---|
| | 86 | if(j == 0) { |
|---|
| | 87 | |
|---|
| | 88 | mgd_release(res); |
|---|
| | 89 | return NULL; |
|---|
| | 90 | } |
|---|
| | 91 | |
|---|
| | 92 | mgd_fetch(res); |
|---|
| | 93 | |
|---|
| | 94 | self = (MidgardSitegroup *)g_object_new(MIDGARD_TYPE_SITEGROUP, NULL); |
|---|
| | 95 | self->dbpriv->mgd = mgd; |
|---|
| | 96 | |
|---|
| | 97 | self->id = mgd_sql2id(res, 0); |
|---|
| | 98 | self->adminid = mgd_sql2id(res, 1); |
|---|
| | 99 | self->dbpriv->guid = g_strdup((char *)mgd_colvalue(res, 2)); |
|---|
| | 100 | self->realm = g_strdup((char *)mgd_colvalue(res, 3)); |
|---|
| | 101 | self->name = g_strdup((char *)mgd_colvalue(res, 4)); |
|---|
| | 102 | |
|---|
| | 103 | mgd_release(res); |
|---|