mirror of
https://forge.fsky.io/lda/Parsee.git
synced 2026-03-13 21:25:11 +00:00
[ADD/WIP] On-the-fly forms
Still WIP-tier, also I need to make a way to index a multi-option list like a regular array with the forms thing, the current one-at-a-time idea is not great...
This commit is contained in:
parent
91d373addb
commit
0cb19a15d8
4 changed files with 146 additions and 6 deletions
99
src/XMPPCommands/DelAdmin.c
Normal file
99
src/XMPPCommands/DelAdmin.c
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
#include <Cytoplasm/HashMap.h>
|
||||
#include <Cytoplasm/Memory.h>
|
||||
#include <Cytoplasm/Json.h>
|
||||
#include <Cytoplasm/Util.h>
|
||||
#include <Cytoplasm/Str.h>
|
||||
#include <Cytoplasm/Log.h>
|
||||
|
||||
#include <XMPPFormTool.h>
|
||||
#include <XMPPCommand.h>
|
||||
#include <Parsee.h>
|
||||
#include <XMPP.h>
|
||||
#include <XML.h>
|
||||
|
||||
void
|
||||
DelAdminCallback(XMPPCommandManager *m, char *from, XMLElement *form, XMLElement *out)
|
||||
{
|
||||
ParseeData *data = XMPPGetManagerCookie(m);
|
||||
char *trimmed = ParseeTrimJID(from);
|
||||
char *glob = NULL;
|
||||
|
||||
DbRef *admins;
|
||||
Array *admin_list;
|
||||
size_t i;
|
||||
bool removed = false;
|
||||
|
||||
GetFieldValue(glob, "glob", form);
|
||||
|
||||
if (!ParseeIsAdmin(data, trimmed))
|
||||
{
|
||||
SetNote("error", "User is not authorised to execute command.");
|
||||
|
||||
Free(trimmed);
|
||||
return;
|
||||
}
|
||||
if (!glob)
|
||||
{
|
||||
SetNote("error", "No glob found.");
|
||||
Free(trimmed);
|
||||
return;
|
||||
}
|
||||
|
||||
Log(LOG_INFO, "glob=%s", glob);
|
||||
admins = DbLock(data->db, 1, "admins");
|
||||
admin_list = GrabArray(DbJson(admins), 1, "admins");
|
||||
|
||||
for (i = 0; i < ArraySize(admin_list); i++)
|
||||
{
|
||||
char *admin = JsonValueAsString(ArrayGet(admin_list, i));
|
||||
if (StrEquals(admin, glob))
|
||||
{
|
||||
SetNote("info", "Admin sucessfully removed.");
|
||||
removed = true;
|
||||
JsonValueFree(ArrayDelete(admin_list, i));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DbUnlock(data->db, admins);
|
||||
Free(trimmed);
|
||||
|
||||
if (!removed)
|
||||
{
|
||||
SetNote("warn", "Glob wasn't in list.");
|
||||
}
|
||||
/* TODO */
|
||||
}
|
||||
void
|
||||
FormDelAdminCallback(XMPPCommandManager *m, XMPPCommand *cmd, char *from)
|
||||
{
|
||||
ParseeData *data = XMPPGetManagerCookie(m);
|
||||
DbRef *admins;
|
||||
Array *admin_list;
|
||||
size_t i;
|
||||
XMPPOption *admin_opt;
|
||||
char *trimmed = ParseeTrimJID(from);
|
||||
|
||||
if (!ParseeIsAdmin(data, trimmed))
|
||||
{
|
||||
Free(trimmed);
|
||||
admin_opt = XMPPCreateList(true, true, "glob", "[NOT AUTHORIZED!]");
|
||||
XMPPAddOption(cmd, admin_opt);
|
||||
return;
|
||||
}
|
||||
Free(trimmed);
|
||||
|
||||
admin_opt = XMPPCreateList(true, true, "glob", "[NVM!]");
|
||||
|
||||
admins = DbLock(data->db, 1, "admins");
|
||||
admin_list = GrabArray(DbJson(admins), 1, "admins");
|
||||
for (i = 0; i < ArraySize(admin_list); i++)
|
||||
{
|
||||
char *glob = JsonValueAsString(ArrayGet(admin_list, i));
|
||||
|
||||
XMPPAddListOption(admin_opt, glob);
|
||||
}
|
||||
|
||||
DbUnlock(data->db, admins);
|
||||
XMPPAddOption(cmd, admin_opt);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue