116 lines
3.6 KiB
C++
116 lines
3.6 KiB
C++
// 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 <string>
|
|
#include "pgsql.h"
|
|
#include "pgsql_wrapper.h"
|
|
#include "cfg.h"
|
|
#include <curl/curl.h>
|
|
|
|
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;
|
|
}
|
|
//******************************************************************************
|