int ccnet_group_manager_check_group_staff (CcnetGroupManager *mgr, int group_id, const char *user_name) { return check_group_staff (mgr->priv->db, group_id, user_name); }
int ccnet_group_manager_quit_group (CcnetGroupManager *mgr, int group_id, const char *user_name, GError **error) { CcnetDB *db = mgr->priv->db; char sql[512]; /* check where user is the staff of the group */ if (check_group_staff (db, group_id, user_name)) { g_set_error (error, CCNET_DOMAIN, 0, "Group staff can not quit group"); return -1; } /* check whether group exists */ if (!check_group_exists (db, group_id)) { g_set_error (error, CCNET_DOMAIN, 0, "Group not exists"); return -1; } snprintf (sql, sizeof(sql), "DELETE FROM GroupUser WHERE group_id=%d " "AND user_name='%s'", group_id, user_name); ccnet_db_query (db, sql); return 0; }
int ccnet_group_manager_remove_member (CcnetGroupManager *mgr, int group_id, const char *user_name, const char *member_name, GError **error) { CcnetDB *db = mgr->priv->db; char sql[512]; /* check whether user is the staff of the group */ if (!check_group_staff (db, group_id, user_name)) { g_set_error (error, CCNET_DOMAIN, 0, "Only group staff can remove member"); return -1; } /* check whether group exists */ if (!check_group_exists (db, group_id)) { g_set_error (error, CCNET_DOMAIN, 0, "Group not exists"); return -1; } /* can not remove myself */ if (g_strcmp0 (user_name, member_name) == 0) { g_set_error (error, CCNET_DOMAIN, 0, "Can not remove myself"); return -1; } snprintf (sql, sizeof(sql), "DELETE FROM GroupUser WHERE group_id=%d AND " "user_name='%s'", group_id, member_name); ccnet_db_query (db, sql); return 0; }
int ccnet_group_manager_quit_group (CcnetGroupManager *mgr, int group_id, const char *user_name, GError **error) { CcnetDB *db = mgr->priv->db; /* check where user is the staff of the group */ if (check_group_staff (db, group_id, user_name)) { g_set_error (error, CCNET_DOMAIN, 0, "Group staff can not quit group"); return -1; } /* check whether group exists */ if (!check_group_exists (db, group_id)) { g_set_error (error, CCNET_DOMAIN, 0, "Group not exists"); return -1; } ccnet_db_statement_query (db, "DELETE FROM GroupUser WHERE group_id=? " "AND user_name=?", 2, "int", group_id, "string", user_name); return 0; }
int ccnet_group_manager_remove_member (CcnetGroupManager *mgr, int group_id, const char *user_name, const char *member_name, GError **error) { CcnetDB *db = mgr->priv->db; char *sql; /* check whether user is the staff of the group */ if (!check_group_staff (db, group_id, user_name)) { g_set_error (error, CCNET_DOMAIN, 0, "Only group staff can remove member"); return -1; } /* check whether group exists */ if (!check_group_exists (db, group_id)) { g_set_error (error, CCNET_DOMAIN, 0, "Group not exists"); return -1; } /* can not remove myself */ if (g_strcmp0 (user_name, member_name) == 0) { g_set_error (error, CCNET_DOMAIN, 0, "Can not remove myself"); return -1; } sql = "DELETE FROM GroupUser WHERE group_id=? AND user_name=?"; ccnet_db_statement_query (db, sql, 2, "int", group_id, "string", member_name); return 0; }
int ccnet_group_manager_add_member (CcnetGroupManager *mgr, int group_id, const char *user_name, const char *member_name, GError **error) { CcnetDB *db = mgr->priv->db; char sql[512]; /* check whether user is the staff of the group */ if (!check_group_staff (db, group_id, user_name)) { g_set_error (error, CCNET_DOMAIN, 0, "Permission error: only group staff can add member"); return -1; } /* check whether group exists */ if (!check_group_exists (db, group_id)) { g_set_error (error, CCNET_DOMAIN, 0, "Group not exists"); return -1; } /* check whether group is full */ /* snprintf (sql, sizeof(sql), "SELECT count(group_id) FROM `GroupUser` " */ /* "WHERE `group_id` = %d", group_id); */ /* int count = ccnet_db_get_int (db, sql); */ /* if (count >= MAX_GROUP_MEMBERS) { */ /* g_set_error (error, CCNET_DOMAIN, 0, "Group is full"); */ /* return -1; */ /* } */ char *member_name_l = g_ascii_strdown (member_name, -1); snprintf (sql, sizeof(sql), "INSERT INTO GroupUser VALUES (%d, '%s', %d)", group_id, member_name, 0); g_free (member_name_l); if (ccnet_db_query (db, sql) < 0) { g_set_error (error, CCNET_DOMAIN, 0, "Failed to add member to group"); return -1; } return 0; }