// /daemon/project.c
// Nightmare Mudlib
// Nightmare Project Tracking System
// by Kalinash@Nightmare on June 30, 1994.
#include <save.h>
#include <security.h>
int add_group(string name, string leader);
int add_member(string group, string name);
int remove_group(string group);
int remove_member(string group, string name);
int add_project(string group, string name, string project, string file);
int remove_project(string group, string name, string project);
string *query_members(string group);
mapping query_all_members();
string *query_groups();
private mapping __Projects;
void create() {
__Projects = ([]);
restore_object(SAVE_PROJECTS);
}
int add_group(string name, string leader) {
if(!name || !leader) return 0;
if(!__Projects[name]) __Projects[name] = ([]);
if(__Projects[name]) return 0;
__Projects[name]["leader"] = leader;
save_object(SAVE_PROJECTS);
return 1;
}
int add_member(string group, string name) {
if(!group || !name) return 0;
if(!__Projects[group]) return 0;
if(!__Projects[group]["members"])
__Projects[group]["members"] = ({});
if(member_array(name, __Projects[group]["members"]) != -1)
return 0;
__Projects[group]["members"] += ({ name });
save_object(SAVE_PROJECTS);
return 1;
}
int remove_group(string group) {
if(!group) return 0;
if(!__Projects[group]) return 0;
map_delete(__Projects, group);
save_object(SAVE_PROJECTS);
return 1;
}
int remove_member(string group, string name) {
if(!group || !name) return 0;
if(!__Projects[group]) return 0;
if(!__Projects[group]["members"]) return 0;
if(member_array(name, __Projects[group]["members"]) == -1) return 0;
__Projects[group]["members"] -= ({ name });
save_object(SAVE_PROJECTS);
return 1;
}
string *query_groups() {
return keys(__Projects);
}