diff options
Diffstat (limited to 'database/sqlite')
| -rw-r--r-- | database/sqlite/administration.c | 44 |
1 files changed, 18 insertions, 26 deletions
diff --git a/database/sqlite/administration.c b/database/sqlite/administration.c index 2462fc8..a538adf 100644 --- a/database/sqlite/administration.c +++ b/database/sqlite/administration.c @@ -358,11 +358,11 @@ int eDBadminConfigDelete(eurephiaCTX *ctx, const char *key) { return 1; } -eurephiaUSERLIST *eDBadminGetUserList(eurephiaCTX *ctx, const char *sortkeys) { - eurephiaUSERINFO *rec = NULL, *last = NULL; - eurephiaUSERLIST *ret = NULL; +xmlDoc *eDBadminGetUserList(eurephiaCTX *ctx, const char *sortkeys) { + xmlDoc *userlist = NULL; + xmlNode *root_n = NULL, *user_n = NULL; dbresult *res = NULL; - char *dbsort = NULL; + char *dbsort = NULL, tmp[34]; int i = 0; assert((ctx != NULL) && (ctx->dbc != 0)); @@ -381,34 +381,26 @@ eurephiaUSERLIST *eDBadminGetUserList(eurephiaCTX *ctx, const char *sortkeys) { } // Prepare a list with all users - ret = (eurephiaUSERLIST *) malloc(sizeof(eurephiaUSERLIST)+2); - assert(ret != NULL); - memset(ret, 0, sizeof(eurephiaUSERLIST)+2); - - ret->num_users = sqlite_get_numtuples(res); + memset(&tmp, 0, 34); + userlist = xmlNewDoc((xmlChar *)"1.0"); + root_n = xmlNewNode(NULL, (xmlChar *)"userlist"); + snprintf(tmp, 32, "%i", sqlite_get_numtuples(res)); + xmlNewProp(root_n, (xmlChar *)"usercount", (xmlChar *)tmp); + xmlDocSetRootElement(userlist, root_n); // Register all records - for( i = 0; i < ret->num_users; i++ ) { - rec = eAdminPopulateUSERINFO( - atoi_nullsafe(sqlite_get_value(res, i, 4)), // uid - sqlite_get_value(res, i, 0), // username - NULL, // passwd - sqlite_get_value(res, i, 1), // activated - sqlite_get_value(res, i, 2), // deactivated - sqlite_get_value(res, i, 3) // last accessed - ); - if( ret->users == NULL ) { - ret->users = rec; - last = ret->users; - } else { - last->next = rec; - last = rec; - } + for( i = 0; i < sqlite_get_numtuples(res); i++ ) { + user_n = xmlNewChild(root_n, NULL, (xmlChar *)"user", NULL); + sqlite_xml_value(user_n, XML_ATTR, "uid", res, i, 4); + sqlite_xml_value(user_n, XML_NODE, "username", res, i, 0); + sqlite_xml_value(user_n, XML_NODE, "activated", res, i, 1); + sqlite_xml_value(user_n, XML_NODE, "deactivated", res, i, 2); + sqlite_xml_value(user_n, XML_NODE, "last_accessed", res, i, 3); } sqlite_free_results(res); // Return a user list - return ret; + return userlist; } inline int xml_set_flag(xmlNode *node, char *flagname, int flagged) { |
