|
WFTK_EXPORT int wftk_user_list (void * session, XML * datasheet, XML * list)
{
int count = 0;
XML * mark;
XML * hit;
XML_ATTR * attr;
if (!list) return 0;
mark = xml_firstelem (datasheet);
while (mark) {
if (xml_is (mark, "user")) {
hit = xml_create ("user");
attr = xml_attrfirst (mark);
while (attr) {
xml_set (hit, xml_attrname (attr), xml_attrvalue (attr));
attr = xml_attrnext (attr);
}
xml_append (list, hit);
}
mark = xml_nextelem (mark);
}
return count;
}
WFTK_EXPORT int wftk_user_add (void * session, XML * datasheet, XML * user)
{
XML * mark;
mark = xml_firstelem (datasheet);
while (mark) {
if (xml_is (mark, "user") && !strcmp (xml_attrval (mark, "id"), xml_attrval (user, "id"))) {
return 0;
}
mark = xml_nextelem (mark);
}
xml_append (datasheet, user);
return 1;
}
WFTK_EXPORT XML * wftk_user_retrieve (void * session, XML * datasheet, const char * userid)
{
XML * mark;
if (!userid) return 0;
mark = xml_firstelem (datasheet);
while (mark) {
if (xml_is (mark, "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);
}
WFTK_EXPORT int wftk_user_update (void * session, XML * datasheet, XML * user)
{
XML * mark;
mark = xml_firstelem (datasheet);
while (mark) {
if (xml_is (mark, "user") && !strcmp (xml_attrval (mark, "id"), xml_attrval (user, "id"))) {
xml_replace (mark, user);
return 1;
}
mark = xml_nextelem (mark);
}
return 0;
}
WFTK_EXPORT int wftk_user_remove (void * session, XML * datasheet, const char * userid)
{
XML * mark;
if (!userid) return 0;
mark = xml_firstelem (datasheet);
while (mark) {
if (xml_is (mark, "user") && !strcmp (xml_attrval (mark, "id"), userid)) {
xml_delete (mark);
return 1;
}
mark = xml_nextelem (mark);
}
return 0;
}
|