|
int wftk_user_list (void * session, XML * datasheet, XML * list)
{
int count = 0;
XML * mark;
XML * hit;
ATTR * attr;
if (!list) return 0;
mark = xml_firstelem (datasheet);
while (mark) {
if (!strcmp (mark->name, "user")) {
hit = xml_create ("user");
attr = mark->attrs;
while (attr) {
xml_set (hit, attr->name, attr->value);
attr = attr->next;
}
xml_append (list, hit);
}
mark = xml_nextelem (mark);
}
return count;
}
int wftk_user_add (void * session, XML * datasheet, XML * user)
{
XML * mark;
mark = xml_firstelem (datasheet);
while (mark) {
if (!strcmp (mark->name, "user") && !strcmp (xml_attrval (mark, "id"), xml_attrval (user, "id"))) {
return 0;
}
mark = xml_nextelem (mark);
}
xml_append (datasheet, user);
return 1;
}
XML * wftk_user_retrieve (void * session, XML * datasheet, const char * userid)
{
XML * mark;
if (!userid) return 0;
mark = xml_firstelem (datasheet);
while (mark) {
if (!strcmp (mark->name, "user") && !strcmp (xml_attrval (mark, "id"), userid)) {
return (mark);
}
mark = xml_nextelem (mark);
}
mark = xml_create ("user");
xml_set (mark, "id", userid);
xml_append (datasheet, mark);
wftk_user_synch (session, mark);
wftk_process_save (session, datasheet);
return (mark);
}
int wftk_user_update (void * session, XML * datasheet, XML * user)
{
XML * mark;
mark = xml_firstelem (datasheet);
while (mark) {
if (!strcmp (mark->name, "user") && !strcmp (xml_attrval (mark, "id"), xml_attrval (user, "id"))) {
xml_replace (mark, user);
return 1;
}
mark = xml_nextelem (mark);
}
return 0;
}
int wftk_user_remove (void * session, XML * datasheet, const char * userid)
{
XML * mark;
if (!userid) return 0;
mark = xml_firstelem (datasheet);
while (mark) {
if (!strcmp (mark->name, "user") && !strcmp (xml_attrval (mark, "id"), userid)) {
xml_delete (mark);
return 1;
}
mark = xml_nextelem (mark);
}
return 0;
}
|