// Account management toosl #include "clog.h" #include "cgi.h" #include "input.h" #include "coregrade_api.h" #include "groups.h" #include "email.h" #include "safestring.h" #include #include "pgsql.h" #include "pgsql_wrapper.h" #include "cfg.h" #include long groups_calls(CVars in, CVars &out) { logfmt(logINFO, "groups_calls()"); out["result"] = "YES I GET TO BACK END"; long action = REQ_LONG(in, "action", 0, -1); switch (action) { case COREGRADE_GROUP_ACCEPTGROUP: //return LoginCoreGradeAccount( in, out); break; case COREGRADE_GROUP_INVITEGROUP: //return CreateCoreGradeAccountPending(in, out); break; case COREGRADE_GROUP_CREATEGROUP: return CreateCoreGradeGroup(in, out); break; } logfmt(logINFO, "/groups_calls()"); return 0; } long CreateCoreGradeGroup(CVars in, CVars &out) { long ret = PHP_API_BAD_PARAM; out = in; REQ_STRING(in, "group_name", 5, 99, "(.*)"); OPTIONAL(in, "description") REQ_STRING(in, "description", 1, 249, "(.*)"); REQ_LONG(in, "contribute", 1, -1); REQ_LONG(in, "member_id", 1, -1); OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)"); CVars x; x["group_name"] = in["group_name"]; x["group_name"].set_valid(true); x["description"] = in["description"]; x["description"].set_valid(true); x["invite"] = "1"; x["invite"].set_valid(true); x["member_id"] = in["member_id"]; x["member_id"].set_valid(true); x["loc"] = in["loc"]; x["loc"].set_valid(true); ret = insert_db_record(DBS_VALID, "members_groups", "members_groups_id_seq", x); if (ret > 0) { if (in["contribute"].Long() > 0) { pgsql_exec("UPDATE members_groups SET contribute=NOW() WHERE id=%lu ", ret); } out["group_id"] = ret; out["group_id"].set_valid(true); x["group_id"] = ret; x["group_id"].set_valid(true); CVars y; y["member_id"] = in["member_id"]; y["member_id"].set_valid(true); y["admin_status"] = in["member_id"]; y["admin_status"].set_valid(true); y["group_id"] = out["group_id"]; y["group_id"].set_valid(true); y["loc"] = in["loc"]; y["loc"].set_valid(true); //ALTER TABLE group_members ADD admin_status INT REFERENCES members(id); CoreGradeGroupCreateMember(y, out); CreateCoreGradeGroupMail(y); } return ret; } long CoreGradeGroupCreateMember(CVars in, CVars &out) { long ret = PHP_API_BAD_PARAM; out = in; REQ_LONG(in, "member_id", 1, -1); REQ_LONG(in, "group_id", 1, -1); OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)"); CVars x; x["group_id"] = in["group_id"]; x["group_id"].set_valid(true); x["member_id"] = in["member_id"]; x["member_id"].set_valid(true); x["loc"] = in["loc"]; x["loc"].set_valid(true); if (in["admin_status"].Long() > 0) { x["admin_status"] = in["admin_status"]; x["admin_status"].set_valid(true); } ret = insert_db_record(DBS_VALID, "group_members", "group_members_id_seq", x); if (ret > 0) { out["group_member_id"] = ret; out["group_member_id"].set_valid(true); x["group_member_id"] = ret; x["group_member_id"].set_valid(true); GroupCreateMemberMail(x); pgsql_exec("UPDATE members_groups SET accepted = (SELECT count(*) FROM group_members WHERE group_id = %lu ) WHERE id=%lu", x["group_id"].Long(), x["group_id"].Long()); } return ret; } //******************************************************************************