GList * ccnet_rpc_get_org_groups (int org_id, int start, int limit, GError **error) { CcnetOrgManager *org_mgr = ((CcnetServerSession *)session)->org_mgr; CcnetGroupManager *group_mgr = ((CcnetServerSession *)session)->group_mgr; GList *group_ids = NULL; GList *ret = NULL; if (org_id < 0) { g_set_error (error, CCNET_DOMAIN, CCNET_ERR_INTERNAL, "Bad arguments"); return NULL; } /* correct parameter */ if (start < 0 ) { start = 0; } group_ids = ccnet_org_manager_get_org_groups (org_mgr, org_id, start, limit); if (group_ids == NULL) return NULL; ret = convert_group_list (group_mgr, group_ids); g_list_free (group_ids); return ret; }
static gboolean duplicate_org_group_name (CcnetGroupManager *mgr, int org_id, const char *group_name) { GList *org_groups = NULL, *ptr; CcnetOrgManager *org_mgr = ((CcnetServerSession *)(mgr->session))->org_mgr; org_groups = ccnet_org_manager_get_org_groups (org_mgr, org_id, -1, -1); if (!org_groups) return FALSE; for (ptr = org_groups; ptr; ptr = ptr->next) { int group_id = (int)(long)ptr->data; CcnetGroup *group = ccnet_group_manager_get_group (mgr, group_id, NULL); if (!group) continue; if (g_strcmp0 (group_name, ccnet_group_get_group_name(group)) == 0) { g_list_free (org_groups); g_object_unref (group); return TRUE; } else { g_object_unref (group); } } g_list_free (org_groups); return FALSE; }
int ccnet_rpc_remove_org (int org_id, GError **error) { GList *group_ids = NULL, *email_list=NULL, *ptr; const char *url_prefix = NULL; CcnetOrgManager *org_mgr = ((CcnetServerSession *)session)->org_mgr; CcnetUserManager *user_mgr = ((CcnetServerSession *)session)->user_mgr; CcnetGroupManager *group_mgr = ((CcnetServerSession *)session)->group_mgr; if (org_id < 0) { g_set_error (error, CCNET_DOMAIN, CCNET_ERR_INTERNAL, "Bad arguments"); return -1; } url_prefix = ccnet_org_manager_get_url_prefix_by_org_id (org_mgr, org_id, error); email_list = ccnet_org_manager_get_org_emailusers (org_mgr, url_prefix, 0, INT_MAX); ptr = email_list; while (ptr) { ccnet_user_manager_remove_emailuser (user_mgr, (gchar *)ptr->data); ptr = ptr->next; } string_list_free (email_list); group_ids = ccnet_org_manager_get_org_groups (org_mgr, org_id, 0, INT_MAX); ptr = group_ids; while (ptr) { ccnet_group_manager_remove_group (group_mgr, (int)(long)ptr->data, NULL, error); ptr = ptr->next; } g_list_free (group_ids); return ccnet_org_manager_remove_org (org_mgr, org_id, error); }