⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bugdb.cpp

📁 FastDb是高效的内存数据库系统
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	"<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << con.get("myself") << 
	"\"><SELECT NAME=\"bug\" SIZE=20>";
    if (bugs.select(query) != 0) { 
	print(con, bugs);
	con << TAG << 
	   "</SELECT><BR><INPUT TYPE=submit NAME=\"action\" VALUE=\"Select\">";
    } else { 
	con << TAG << EMPTY_LIST;
    }
    con << TAG << "</FORM>";
    mainMenuReference(con);
    return true;
}


bool userForm(WWWconnection& con)
{
    char* name = con.get("name");
    if (name == NULL) { 
	error(con, "No person was selected");
	return true;
    }
    char* myself = con.get("myself");
    key = myself;
    if (persons.select(qPerson) == 0) { 
	error(con, "Person authorization failed");
	return true;
    }
    int selfStatus = persons->status;
    key = name;
    if (persons.select(qPerson) == 0) { 
	error(con, "Person not found");
	return true;
    }
    if (persons->status == Person::isAdministrator) { 
	con << TAG << 
	    HTML_HEAD "<TITLE>BUGDB Administrator</TITLE></HEAD>"
	    BODY	
	    "<H2>Administrator menu</H2><FONT SIZE=\"+1\">"
	    "<UL><LI><A HREF=\"" << con.getStub() << "?socket=" 
	    << con.getAddress() 
	    << "&page=addUserForm&myself=" << URL << myself 
	    << "\">Add user</A>"
	    "<LI><A HREF=\"" << con.getStub() << "?socket=" << con.getAddress()
	    << "&page=addEngineerForm&myself=" << URL << myself 
	    << "\">Add engineer</A>"
	    "<LI><A HREF=\"" << con.getStub() << "?socket=" << con.getAddress()
	    << "&page=selectPersonForm&myself=" << URL << myself 
	    << "\">Select person"
	    "</A>"
	    "<LI><A HREF=\"" << con.getStub() << "?socket=" << con.getAddress()
	    << "&page=removePersonForm&myself=" << URL << myself 
	    << "\">Remove person</A></UL>"

	    "<UL><LI><A HREF=\"" << con.getStub() << "?socket=" 
	    << con.getAddress()
	    << "&page=addSoftwareForm&myself=" << URL << myself 
	    << "\">Add software product</A>"
	    "<LI><A HREF=\"" << con.getStub() << "?socket=" << con.getAddress()
	    << "&page=selectSoftwareForm&myself=" << URL << myself 
	    << "\">Select software product</A>"
	    "<LI><A HREF=\"" << con.getStub() << "?socket=" << con.getAddress()
	    << "&page=removeSoftwareForm&myself=" << URL << myself 
	    << "\">Remove software product</A></UL>"

	    "<UL><LI><A HREF=\"" << con.getStub() << "?socket=" 
	    << con.getAddress()
	    << "&page=selectBugForm&myself=" << URL << myself 
	    << "\">Select bug</A>"
	    "<LI><A HREF=\"" << con.getStub() << "?socket=" 
	    << con.getAddress()
	    << "&page=removeBugForm&myself=" << URL << myself 
	    << "\">Remove bug</A></UL>";
	if (selfStatus == Person::isAdministrator) { 
	    con << TAG << 
		"<UL><LI><A HREF=\"" << con.getStub() << "?socket=" 
		<< con.getAddress() << "&page=changePasswordForm"
		"&myself=administrator&name=" << URL << myself 
		<< "\">Change password</A>"
		"<LI><A HREF=\"" << con.getStub() << "?socket=" 
		<< con.getAddress()
		<< "&page=shutdown\">Shutdown server</A></UL>";
	}
	con << TAG << "</FONT></BODY></HTML>";
	return true;
    }
    con <<
	HTML_HEAD "<TITLE>" << name << "</TITLE></HEAD>"
	BODY
	"<H2>" << name << "</H2><FONT SIZE=\"+1\">"
	"<UL><LI><A HREF=\"" << con.getStub() << "?socket="
	<< con.getAddress() << "&page=createBugReportForm&myself=" 
	<< URL << myself << "\">Create bug report</A>";
    if (persons->sEmailAddress[0] != '\0') { 
	con << TAG << 
	    "<LI><A HREF=\"mailto:" << persons->sEmailAddress 
	    << "\">Send e-mail</A>"
	    "<LI><A HREF=\"" << con.getStub() << "?socket=" << con.getAddress()
	    << "&page=bugQueryForm&myself=" << URL << myself 
	    << "\">Find a bug</A>";
    }
    if (strcmp(myself, name) == 0 || selfStatus == Person::isAdministrator) { 
	con << TAG << "<LI><A HREF=\"" << con.getStub() << "?socket=" 
	    << con.getAddress() << "&page=changePasswordForm&myself=" 
	    << URL << myself << "&name=" << URL << name << 
	    "\">Change password</A>";
    }
    con << TAG << 
	"</UL></FONT><P><TABLE><TR><TH ALIGN=LEFT>Person name:</TH>"
	"<TD><FORM METHOD=POST ACTION=\""
	<< con.getStub() << "\"><INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\"" 
	<< con.getAddress() << "\"><INPUT TYPE=hidden NAME=\"page\" VALUE=\""
	"updatePerson\"><INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself
	<< "\"><INPUT TYPE=hidden NAME=\"name\" VALUE=\"" << name << "\">"
	"<INPUT TYPE=text NAME=\"newname\" SIZE=30 VALUE=\"" 
	<< name << "\"><INPUT TYPE=submit VALUE=\"Change\"></FORM></TD></TR>"
	"<TR><TH ALIGN=LEFT>E-Mail:</TH>"
	"<TD><FORM METHOD=POST ACTION=\""
	<< con.getStub() << "\"><INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\"" 
	<< con.getAddress() << "\"><INPUT TYPE=hidden NAME=\"page\" VALUE=\""
	"updatePerson\"><INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself
	<< "\"><INPUT TYPE=hidden NAME=\"name\" VALUE=\"" << name << "\">"
	"<INPUT TYPE=text NAME=\"email\" SIZE=30 VALUE=\"" 
	<< persons->sEmailAddress << "\">"
	"<INPUT TYPE=submit VALUE=\"Change\"></FORM></TD></TR>";
    if (persons->status != Person::isUser) { 
	con << TAG << "<TR><TH ALIGN=LEFT>Projects:</TH>"
	    "<TD><FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
	    "<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\"" 
	    << con.getAddress() << "\"><INPUT TYPE=hidden NAME=\"page\" "
	    "VALUE=\"softwareForm\">"
	    "<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself << "\">"
	    "<INPUT TYPE=hidden NAME=\"name\" VALUE=\"" << name << "\">"
	    "<SELECT NAME=\"software\" SIZE=1>";
	if (persons->setProjects.length() != 0) { 
	    print(con, persons->setProjects);
	    con << TAG << 
		"</SELECT><INPUT TYPE=submit NAME=\"action\" VALUE=\"Select\">"
		"&nbsp;<INPUT TYPE=submit NAME=\"action\" VALUE=\"Detach\">";
	} else { 
	    con << TAG << EMPTY_LIST;
	}
	if (products.select() != 0) { 
	    con << TAG << 
		"</FORM></TD></TR>"
		"<TR><TH ALIGN=LEFT>Attach to project:</TH>"
		"<TD><FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
		"<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\"" 
		<< con.getAddress() << "\"><INPUT TYPE=hidden NAME=\"page\" "
		"VALUE=\"attachToProject\">"
		"<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself <<"\">"
		"<INPUT TYPE=hidden NAME=\"name\" VALUE=\"" << name << "\">"
		"<SELECT NAME=\"software\" SIZE=1>";
	    print(con, products); 
	    con << TAG << "</SELECT><INPUT TYPE=submit VALUE=\"Attach\">";
	} 
	con << TAG << 
	    "</FORM></TD></TR>"
	    "<TR><TH ALIGN=LEFT>Find a person:</TH>"
	    "<TD><FORM METHOD=POST ACTION=\"" 
	    << con.getStub() << "\">"
	    "<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\"" 
	    << con.getAddress() << "\"><INPUT TYPE=hidden NAME=\"page\" "
	    "VALUE=\"userForm\">"
	    "<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself << "\">"
	    "<INPUT TYPE=text NAME=\"name\" SIZE=30>"
	    "<INPUT TYPE=submit VALUE=\"Find\"></FORM></TD></TR>";
    } 
    con << TAG << "<TR><TH ALIGN=LEFT>Used software:</TH>"
	"<TD><FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
	"<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\"" 
	<< con.getAddress() << "\"><INPUT TYPE=hidden NAME=\"page\" "
	"VALUE=\"softwareForm\">"
	"<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself << "\">"
	"<INPUT TYPE=hidden NAME=\"name\" VALUE=\"" << name << "\">"
	"<SELECT NAME=\"software\" SIZE=1>";
    if (persons->setUsedSoftware.length() != 0) { 
	print(con, persons->setUsedSoftware);
	con << TAG << 
	    "</SELECT><INPUT TYPE=submit NAME=\"action\" VALUE=\"Select\">"
	    "&nbsp;<INPUT TYPE=submit NAME=\"action\" VALUE=\"Unregister\">";
    } else { 
	con << TAG << EMPTY_LIST;
    }
    if (products.select() != 0) { 
	con << TAG << 
	    "</FORM></TD></TR>"
	    "<TR><TH ALIGN=LEFT>Register as software user:</TH>"
	    "<TD><FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
	    "<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\"" 
	    << con.getAddress() << "\"><INPUT TYPE=hidden NAME=\"page\" "
	    "VALUE=\"registerSoftware\">"
	    "<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself << "\">"
	    "<INPUT TYPE=hidden NAME=\"name\" VALUE=\"" << name << "\">"
	    "<SELECT NAME=\"software\" SIZE=1>";
	print(con, products);
	con << TAG << "</SELECT><INPUT TYPE=submit VALUE=\"Register\">";
    }
    con << TAG << "</FORM></TD></TR></TABLE><P>"
	"<B>Reported bugs:</B><BR>"	
	"<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
	"<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\"" 
	<< con.getAddress() << "\"><INPUT TYPE=hidden NAME=\"page\" "
	"VALUE=\"bugForm\">"
	"<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself << "\">"
	"<INPUT TYPE=hidden NAME=\"name\" VALUE=\"" << name << "\">"
	"<SELECT NAME=\"bug\" SIZE=5>";
    if (persons->setReportedBugs.length() != 0) {
	print(con, persons->setReportedBugs);
	con << TAG << 
	   "</SELECT><BR><INPUT TYPE=submit NAME=\"action\" VALUE=\"Select\">";
    } else { 
	con << TAG << EMPTY_LIST;
    }	
    con << TAG << "</FORM><P>";
    if (persons->status != Person::isUser) { 
	con << TAG << 
	    "<P><B>Assigned bugs:</B><BR>"	
	    "<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
	    "<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\"" 
	    << con.getAddress() << "\"><INPUT TYPE=hidden "
	    "NAME=\"page\" VALUE=\"bugForm\">"
	    "<INPUT TYPE=hidden NAME=\"myself\" VALUE=\"" << myself << "\">"
	    "<INPUT TYPE=hidden NAME=\"name\" VALUE=\"" << name << "\">"
	    "<SELECT NAME=\"bug\" SIZE=5>";
	if (persons->setAssignedBugs.length() != 0) {
	    print(con, persons->setAssignedBugs);
	    con << TAG << 
		"</SELECT><BR>"
		"<INPUT TYPE=submit NAME=\"action\" VALUE=\"Select\">&nbsp;"
		"<INPUT TYPE=submit NAME=\"action\" VALUE=\"Deassign\">";
	} else { 
	    con << TAG << EMPTY_LIST;
	}
	con << TAG << "</FORM>";
    }
    if (strcmp(name, myself) == 0) { 
	con << TAG << "</BODY></HTML>";
    } else { 
	mainMenuReference(con);
    }
    return true;
}


bool createBugReportForm(WWWconnection& con)
{
    int i;
    sequencer.select();
    con << TAG << 
	HTML_HEAD "<TITLE>Bug</TITLE></HEAD>"
	BODY
	"<H2>Bug</H2>"
	"<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
	"<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\"" 
	<< con.getAddress() << "\"><INPUT TYPE=hidden "
	"NAME=\"page\" VALUE=\"createBugReport\">"
	"<INPUT TYPE=hidden NAME=\"myself\" VALUE=\""<<con.get("myself")<<"\">"
	"<INPUT TYPE=hidden NAME=\"bug\" VALUE=" << ++sequencer->nBugs << ">"
	"<TABLE><TH ALIGN=LEFT>Summary:</TH>"
	"<TD><INPUT TYPE=text NAME=\"summary\" SIZE=40></TD></TR>"
	"<TR><TH ALIGN=LEFT>Category:</TH>"
	"<TD><SELECT NAME=\"category\" SIZE=1>";
    for (i = 1; eCATEGORY_STRING[i] != NULL; i++) { 
	con << TAG << "<OPTION SELECTED VALUE=" << i << ">"
	    << eCATEGORY_STRING[i] << "</OPTION>";
    }
    con << TAG << "</SELECT></TD></TR>"
	"<TR><TH ALIGN=LEFT>Severity:</TH>"
	"<TD><SELECT NAME=\"severity\" SIZE=1>";
    for (i = 1; eSEVERITY_STRING[i] != NULL; i++) { 
	con << TAG << "<OPTION SELECTED VALUE=" << i << ">"
	    << eSEVERITY_STRING[i] << "</OPTION>";
    }
    con << TAG << 
	"</SELECT></TD></TR>"
	"<TR><TH ALIGN=LEFT>Priority:</TH>"
	"<TD><SELECT NAME=\"priority\" SIZE=1>";
    for (i = 1; eFIXING_PRIORITY_STRING[i] != NULL; i++) { 
	con << TAG << "<OPTION SELECTED VALUE=" << i << ">"
	    << eFIXING_PRIORITY_STRING[i] << "</OPTION>";
    }
    con << TAG << 
	"</SELECT></TD></TR>"
	"<TR><TH ALIGN=LEFT>Software:</TH>"
	"<TD><SELECT NAME=\"software\" SIZE=1>";
    if (products.select() != 0) { 
	print(con, products);
    } 
    con << TAG <<
	    "</SELECT></TD></TR>"
	    "<TR><TH ALIGN=LEFT>Version:</TH>"
	    "<TD><INPUT TYPE=text NAME=\"version\"></TD></TR>"
	    "<TR><TH ALIGN=LEFT>Platform:</TH>"
	    "<TD><INPUT TYPE=text NAME=\"platform\"</TD></TR>"
	    "<TR><TH ALIGN=LEFT>OS:</TH>"
	    "<TD><INPUT TYPE=text NAME=\"os\"></TD></TR></TABLE><P>"
	    "<INPUT TYPE=submit VALUE=\"Submit\">&nbsp;"
	    "<INPUT TYPE=reset></FORM>";
    mainMenuReference(con);
    sequencer.update();
    return true;
}

bool bugForm(WWWconnection& con);

bool createBugReport(WWWconnection& con)
{
    key = con.get("myself");
    if (persons.select(qPerson) == 0) { 
	error(con, "Author unknown");
	return true;
    }
    key = con.get("software");
    if (products.select(qSoftware) == 0) { 
	error(con, "No such software product");
	return true;
    }
    if (sscanf(con.get("version"), "%d.%d", &majorVersion, &minorVersion) != 2)
    {
	error(con, "Bad version format");
	return true;
    }
    initialVersion = products->pVersions;
    if (versions.select(qVersion) == 0) { 
	error(con, "No such software product version");
	return true;
    }
    
    Bug bug;
    bug.bugId = atoi(con.get("bug"));
    bug.sOneLineSummary = con.get("summary");
    bug.eCategory = atoi(con.get("category"));
    bug.eFixingPriority = atoi(con.get("priority"));
    bug.eSeverity = atoi(con.get("severity"));
    bug.sOperatingSystem = con.get("os");
    bug.sHardwarePlatform = con.get("platform");
    bug.pReportedBy = persons.currentId();
    bug.pAssignedTo = null;
    bug.pSoftware = products.currentId();
    bug.pVersion = versions.currentId();
    bug.nReports = 0;
    insert(bug);
    con.addPair("action", "Select");
    return bugForm(con);
}

bool bugForm(WWWconnection& con)
{
    int i;
    char* bugStr = con.get("bug"); 
    bugId = atoi(bugStr);
    if (bugs.select(qBug) == 0) { 
	error(con, "No bug was selected");
	return true;
    }
    char* myself = con.get("myself");
    if (strcmp(con.get("action"), "Remove") == 0) { 
	dbReference<Bug> pBug = bugs.currentId();
	bugId = atoi(con.get("relatedbug"));
	if (bugs.select(qBug) == 0) { 
	    error(con, "No such bug");
	    return true;
	}
	int i = rindex(bugs->setSimilarBugs, pBug);
	if (i < 0) { 
	    error(con, "No such related bug");
	    return true;
	}
	bugs->setSimilarBugs.remove(i);
	bugs.update();
	return bugForm(con);
    }
    key = myself;
    if (persons.select(qPerson) == 0) { 
	error(con, "No such user");
	return true;
    }
    if (strcmp(con.get("action"), "Deassign") == 0) { 
	int i = rindex(persons->setAssignedBugs, bugs.currentId());
	if (i < 0) { 
	    error(con, "Bug was not assigned");
	    return true;
	}
	persons->setAssignedBugs.remove(i);
	persons.update();
	con.addPair("name", myself);
	return userForm(con);
    }

    int personStatus = persons->status;
    products.at(bugs->pSoftware);
    versions.at(bugs->pVersion);
    con << TAG <<
	HTML_HEAD "<TITLE>Bug in " << products->sName << " v. " << 
	versions->getVersionString() << "</TITLE></HEAD>"
	BODY
	"<H2>Bug in " << products->sName << " v. "
	<< versions->getVersionString() << "</H2>"
	"<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -