/* * * Project command. * Author: Shaydz * Started: 11/07/2005 * */ int add_project(string project, string domain, string creator){ if(!adminp(TP)){ if(!DOMAIN_H->query_leader(domain,TP->query_name())){ tell_object(TP,"You are not a leader of "+domain+".\n"); return 1; } } if(!creatorp(creator)){ tell_object(TP,creator+" is not a creator.\n"); return 1; } if(!DOMAIN_H->query_domain(domain)){ tell_object(TP,domain+" is not a valid domain.\n"); return 1; } if(PROJECT_H->query_project(creator, domain, project)){ tell_object(TP,creator+" already has a project called \""+project+ "\" in "+domain+".\n"); return 1; } if(!PROJECT_H->add_project(creator,domain,project)){ tell_object(TP,"Unable to add project.\n"); return 1; } tell_object(TP,"Added \""+project+"\" for "+creator+" in "+domain+".\n"); return 1; } /* add_project() */ int remove_project(string project, string domain, string creator){ if(!adminp(TP)){ if(!DOMAIN_H->query_leader(domain,TP->query_name())){ tell_object(TP,"You are not a leader of "+domain+".\n"); return 1; } } if(!creatorp(creator)){ tell_object(TP,creator+" is not a creator.\n"); return 1; } if(!DOMAIN_H->query_domain(domain)){ tell_object(TP,domain+" is not a valid domain.\n"); return 1; } if(!PROJECT_H->query_project(creator, domain, project)){ tell_object(TP,creator+" doesn't have a project called \""+project+ "\" in "+domain+".\n"); return 1; } if(!PROJECT_H->remove_project(creator,domain,project)){ tell_object(TP,"Unable to remove project.\n"); return 1; } tell_object(TP,"Removed \""+project+"\" for "+creator+" in "+domain+".\n"); return 1; } /* remove_project() */ int clear_project(string str){ if(!adminp(TP)){ tell_object(TP,"Admin only option.\n"); return 1; } tell_object(TP,"Are you sure you want to delete all of "+CAP(str)+"'s " "projects? [y/n] "); input_to("clear_project_2",str); return 1; } /* clear_project() */ int clear_project_2(string yesno, string str){ if(yesno != "y"){ tell_object(TP,CAP(str)+"'s projects NOT cleared.\n"); return 1; } if(!PROJECT_H->clear_project(str)){ tell_object(TP,"Unable to clear projects for "+str+".\n"); return 1; } tell_object(TP,"Removed all projects for "+str+".\n"); return 1; } /* clear_project_2() */ int list_project(string str){ string prt,tmp, name; int width,i; mapping projects; if(str=="all") projects = PROJECT_H->query_projects(); else projects = PROJECT_H->query_projects(str); if(!sizeof(keys(projects))){ tell_object(TP,"There are no projects for "+str+".\n"); return 1; } width = TP->query_cols(); if(creatorp(str)){ name = CAP(str)+"'s Projects"; tmp = sprintf( " %-*s%-*s\n", 33, "%^WHITE%^Domain%^RESET%^", 45, "%^WHITE%^Project%^RESET%^"); foreach(string dom in keys(projects)){ for ( i = 0; i < sizeof( projects[dom] ); i++ ) { tmp += sprintf( " %-*s%-=*s\n", 15, CAP(dom), width-20, projects[dom][i]); } } } if(DOMAIN_H->query_domain(str)){ name = "Projects for "+CAP(str); tmp = sprintf( " %-*s%-*s\n", 33, "%^WHITE%^Creator%^RESET%^", 46, "%^WHITE%^Project%^RESET%^"); foreach(string cre in keys(projects)){ for ( i = 0; i < sizeof( projects[cre] ); i++ ) { tmp += sprintf( " %-*s%-=*s\n", 15, CAP(cre), width-20, projects[cre][i]); } } } if(str=="all"){ name = "Listing of all projects"; tmp = sprintf( " %-*s%-*s%-*s\n", 32, "%^WHITE%^ Creator%^RESET%^",35, "%^WHITE%^ Domain%^RESET%^", 48,"%^WHITE%^Project%^RESET%^"); foreach(string cre in keys(projects)){ foreach(string dom in keys(projects[cre])){ for ( i = 0; i < sizeof( projects[cre][dom] ); i++ ) { tmp += sprintf( " %-*s%-*s%-=*s\n", 15, CAP(cre), 15, CAP(dom), width-20, projects[cre][dom][i]); } } } } prt = sprintf("%|*'-'s\n", width-1,"-"); prt += sprintf( "%|*s\n", width-1, name ); prt += sprintf("%|*'-'s\n", width-1,"-"); prt += tmp; prt += sprintf("%|*'-'s\n", width-1,"-"); tell_object(TP,prt); return 1; } /*add_project()*/ /** @ignore yes */ mixed *query_patterns() { return ({ "add <string'project name'> in <word'domain'> to <word'creator'>", (: add_project($4[0], $4[1], $4[2]) :), "remove <string'project name'> in <word'domain'> from <word'creator'>", (: remove_project($4[0], $4[1], $4[2]) :), "clear <word'creator|domain'>", (: clear_project($4[0]) :), "list <word'creator|domain|all'>", (: list_project($4[0]) :) }); } /* query_patterns() */