diff --git a/swad_changelog.h b/swad_changelog.h
index 78e06c3f6..9982ef145 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -355,10 +355,11 @@ En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
-#define Log_PLATFORM_VERSION "SWAD 18.11.16 (2018-11-02)"
+#define Log_PLATFORM_VERSION "SWAD 18.11.17 (2018-11-02)"
#define CSS_FILE "swad18.4.css"
#define JS_FILE "swad17.17.1.js"
/*
+ Version 18.11.17: Nov 02, 2018 Joining building and performing query into one function. (236504 lines)
Version 18.11.16: Nov 02, 2018 Joining building and performing query into one function. (236332 lines)
Version 18.11.15: Nov 02, 2018 Joining building and performing query into one function. (236312 lines)
Version 18.11.14: Nov 01, 2018 Joining building and performing query into one function. (236211 lines)
diff --git a/swad_database.c b/swad_database.c
index 91d68e8af..a6e6b1aec 100644
--- a/swad_database.c
+++ b/swad_database.c
@@ -3142,11 +3142,6 @@ unsigned long DB_QuerySELECT (MYSQL_RES **mysql_res,const char *MsgError,
return DB_QuerySELECT_old (&Query,mysql_res,MsgError);
}
-unsigned long DB_QuerySELECT_new (MYSQL_RES **mysql_res,const char *MsgError)
- {
- return DB_QuerySELECT_old (&Gbl.DB.QueryPtr,mysql_res,MsgError);
- }
-
unsigned long DB_QuerySELECT_old (char **Query,MYSQL_RES **mysql_res,const char *MsgError)
{
int Result;
diff --git a/swad_database.h b/swad_database.h
index 53cc6d355..4df8a16c4 100644
--- a/swad_database.h
+++ b/swad_database.h
@@ -42,7 +42,6 @@ void DB_BuildQuery_old (char **Query,const char *fmt,...);
unsigned long DB_QuerySELECT (MYSQL_RES **mysql_res,const char *MsgError,
const char *fmt,...);
-unsigned long DB_QuerySELECT_new (MYSQL_RES **mysql_res,const char *MsgError);
unsigned long DB_QuerySELECT_old (char **Query,MYSQL_RES **mysql_res,const char *MsgError);
unsigned long DB_QueryCOUNT (const char *MsgError,
diff --git a/swad_test.c b/swad_test.c
index c628b08da..ca8a3b188 100644
--- a/swad_test.c
+++ b/swad_test.c
@@ -6974,108 +6974,119 @@ static unsigned Tst_GetNumTstQuestions (Sco_Scope_t Scope,Tst_AnswerType_t AnsTy
{
case Sco_SCOPE_SYS:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(*),SUM(NumHits),SUM(Score)"
- " FROM tst_questions");
+ DB_QuerySELECT (&mysql_res,"can not get number of test questions",
+ "SELECT COUNT(*),SUM(NumHits),SUM(Score)"
+ " FROM tst_questions");
else
- DB_BuildQuery ("SELECT COUNT(*),SUM(NumHits),SUM(Score)"
- " FROM tst_questions"
- " WHERE AnsType='%s'",
- Tst_StrAnswerTypesDB[AnsType]);
+ DB_QuerySELECT (&mysql_res,"can not get number of test questions",
+ "SELECT COUNT(*),SUM(NumHits),SUM(Score)"
+ " FROM tst_questions"
+ " WHERE AnsType='%s'",
+ Tst_StrAnswerTypesDB[AnsType]);
break;
case Sco_SCOPE_CTY:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(*),SUM(NumHits),SUM(Score)"
- " FROM institutions,centres,degrees,courses,tst_questions"
- " WHERE institutions.CtyCod=%ld"
- " AND institutions.InsCod=centres.InsCod"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod",
- Gbl.CurrentCty.Cty.CtyCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of test questions",
+ "SELECT COUNT(*),SUM(NumHits),SUM(Score)"
+ " FROM institutions,centres,degrees,courses,tst_questions"
+ " WHERE institutions.CtyCod=%ld"
+ " AND institutions.InsCod=centres.InsCod"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod",
+ Gbl.CurrentCty.Cty.CtyCod);
else
- DB_BuildQuery ("SELECT COUNT(*),SUM(NumHits),SUM(Score)"
- " FROM institutions,centres,degrees,courses,tst_questions"
- " WHERE institutions.CtyCod=%ld"
- " AND institutions.InsCod=centres.InsCod"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod"
- " AND tst_questions.AnsType='%s'",
- Gbl.CurrentCty.Cty.CtyCod,
- Tst_StrAnswerTypesDB[AnsType]);
+ DB_QuerySELECT (&mysql_res,"can not get number of test questions",
+ "SELECT COUNT(*),SUM(NumHits),SUM(Score)"
+ " FROM institutions,centres,degrees,courses,tst_questions"
+ " WHERE institutions.CtyCod=%ld"
+ " AND institutions.InsCod=centres.InsCod"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod"
+ " AND tst_questions.AnsType='%s'",
+ Gbl.CurrentCty.Cty.CtyCod,
+ Tst_StrAnswerTypesDB[AnsType]);
break;
case Sco_SCOPE_INS:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(*),SUM(NumHits),SUM(Score)"
- " FROM centres,degrees,courses,tst_questions"
- " WHERE centres.InsCod=%ld"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod",
- Gbl.CurrentIns.Ins.InsCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of test questions",
+ "SELECT COUNT(*),SUM(NumHits),SUM(Score)"
+ " FROM centres,degrees,courses,tst_questions"
+ " WHERE centres.InsCod=%ld"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod",
+ Gbl.CurrentIns.Ins.InsCod);
else
- DB_BuildQuery ("SELECT COUNT(*),SUM(NumHits),SUM(Score)"
- " FROM centres,degrees,courses,tst_questions"
- " WHERE centres.InsCod=%ld"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod"
- " AND tst_questions.AnsType='%s'",
- Gbl.CurrentIns.Ins.InsCod,
- Tst_StrAnswerTypesDB[AnsType]);
+ DB_QuerySELECT (&mysql_res,"can not get number of test questions",
+ "SELECT COUNT(*),SUM(NumHits),SUM(Score)"
+ " FROM centres,degrees,courses,tst_questions"
+ " WHERE centres.InsCod=%ld"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod"
+ " AND tst_questions.AnsType='%s'",
+ Gbl.CurrentIns.Ins.InsCod,
+ Tst_StrAnswerTypesDB[AnsType]);
break;
case Sco_SCOPE_CTR:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(*),SUM(NumHits),SUM(Score)"
- " FROM degrees,courses,tst_questions"
- " WHERE degrees.CtrCod=%ld"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod",
- Gbl.CurrentCtr.Ctr.CtrCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of test questions",
+ "SELECT COUNT(*),SUM(NumHits),SUM(Score)"
+ " FROM degrees,courses,tst_questions"
+ " WHERE degrees.CtrCod=%ld"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod",
+ Gbl.CurrentCtr.Ctr.CtrCod);
else
- DB_BuildQuery ("SELECT COUNT(*),SUM(NumHits),SUM(Score)"
- " FROM degrees,courses,tst_questions"
- " WHERE degrees.CtrCod=%ld"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod"
- " AND tst_questions.AnsType='%s'",
- Gbl.CurrentCtr.Ctr.CtrCod,
- Tst_StrAnswerTypesDB[AnsType]);
+ DB_QuerySELECT (&mysql_res,"can not get number of test questions",
+ "SELECT COUNT(*),SUM(NumHits),SUM(Score)"
+ " FROM degrees,courses,tst_questions"
+ " WHERE degrees.CtrCod=%ld"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod"
+ " AND tst_questions.AnsType='%s'",
+ Gbl.CurrentCtr.Ctr.CtrCod,
+ Tst_StrAnswerTypesDB[AnsType]);
break;
case Sco_SCOPE_DEG:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(*),SUM(NumHits),SUM(Score)"
- " FROM courses,tst_questions"
- " WHERE courses.DegCod=%ld"
- " AND courses.CrsCod=tst_questions.CrsCod",
- Gbl.CurrentDeg.Deg.DegCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of test questions",
+ "SELECT COUNT(*),SUM(NumHits),SUM(Score)"
+ " FROM courses,tst_questions"
+ " WHERE courses.DegCod=%ld"
+ " AND courses.CrsCod=tst_questions.CrsCod",
+ Gbl.CurrentDeg.Deg.DegCod);
else
- DB_BuildQuery ("SELECT COUNT(*),SUM(NumHits),SUM(Score)"
- " FROM courses,tst_questions"
- " WHERE courses.DegCod=%ld"
- " AND courses.CrsCod=tst_questions.CrsCod"
- " AND tst_questions.AnsType='%s'",
- Gbl.CurrentDeg.Deg.DegCod,
- Tst_StrAnswerTypesDB[AnsType]);
+ DB_QuerySELECT (&mysql_res,"can not get number of test questions",
+ "SELECT COUNT(*),SUM(NumHits),SUM(Score)"
+ " FROM courses,tst_questions"
+ " WHERE courses.DegCod=%ld"
+ " AND courses.CrsCod=tst_questions.CrsCod"
+ " AND tst_questions.AnsType='%s'",
+ Gbl.CurrentDeg.Deg.DegCod,
+ Tst_StrAnswerTypesDB[AnsType]);
break;
case Sco_SCOPE_CRS:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(*),SUM(NumHits),SUM(Score)"
- " FROM tst_questions"
- " WHERE CrsCod=%ld",
- Gbl.CurrentCrs.Crs.CrsCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of test questions",
+ "SELECT COUNT(*),SUM(NumHits),SUM(Score)"
+ " FROM tst_questions"
+ " WHERE CrsCod=%ld",
+ Gbl.CurrentCrs.Crs.CrsCod);
else
- DB_BuildQuery ("SELECT COUNT(*),SUM(NumHits),SUM(Score)"
- " FROM tst_questions"
- " WHERE CrsCod=%ld AND AnsType='%s'",
- Gbl.CurrentCrs.Crs.CrsCod,
- Tst_StrAnswerTypesDB[AnsType]);
+ DB_QuerySELECT (&mysql_res,"can not get number of test questions",
+ "SELECT COUNT(*),SUM(NumHits),SUM(Score)"
+ " FROM tst_questions"
+ " WHERE CrsCod=%ld AND AnsType='%s'",
+ Gbl.CurrentCrs.Crs.CrsCod,
+ Tst_StrAnswerTypesDB[AnsType]);
break;
default:
Lay_WrongScopeExit ();
break;
}
- DB_QuerySELECT_new (&mysql_res,"can not get number of test questions");
/***** Get number of questions *****/
row = mysql_fetch_row (mysql_res);
@@ -7121,109 +7132,132 @@ static unsigned Tst_GetNumCoursesWithTstQuestions (Sco_Scope_t Scope,Tst_AnswerT
{
case Sco_SCOPE_SYS:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(DISTINCT CrsCod)"
- " FROM tst_questions");
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with test questions",
+ "SELECT COUNT(DISTINCT CrsCod)"
+ " FROM tst_questions");
else
- DB_BuildQuery ("SELECT COUNT(DISTINCT CrsCod)"
- " FROM tst_questions"
- " WHERE AnsType='%s'",
- Tst_StrAnswerTypesDB[AnsType]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with test questions",
+ "SELECT COUNT(DISTINCT CrsCod)"
+ " FROM tst_questions"
+ " WHERE AnsType='%s'",
+ Tst_StrAnswerTypesDB[AnsType]);
break;
case Sco_SCOPE_CTY:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM institutions,centres,degrees,courses,tst_questions"
- " WHERE institutions.CtyCod=%ld"
- " AND institutions.InsCod=centres.InsCod"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod",
- Gbl.CurrentCty.Cty.CtyCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM institutions,centres,degrees,courses,tst_questions"
+ " WHERE institutions.CtyCod=%ld"
+ " AND institutions.InsCod=centres.InsCod"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod",
+ Gbl.CurrentCty.Cty.CtyCod);
else
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM institutions,centres,degrees,courses,tst_questions"
- " WHERE institutions.CtyCod=%ld"
- " AND institutions.InsCod=centres.InsCod"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod"
- " AND tst_questions.AnsType='%s'",
- Gbl.CurrentCty.Cty.CtyCod,
- Tst_StrAnswerTypesDB[AnsType]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM institutions,centres,degrees,courses,tst_questions"
+ " WHERE institutions.CtyCod=%ld"
+ " AND institutions.InsCod=centres.InsCod"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod"
+ " AND tst_questions.AnsType='%s'",
+ Gbl.CurrentCty.Cty.CtyCod,
+ Tst_StrAnswerTypesDB[AnsType]);
break;
case Sco_SCOPE_INS:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM centres,degrees,courses,tst_questions"
- " WHERE centres.InsCod=%ld"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod",
- Gbl.CurrentIns.Ins.InsCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM centres,degrees,courses,tst_questions"
+ " WHERE centres.InsCod=%ld"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod",
+ Gbl.CurrentIns.Ins.InsCod);
else
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM centres,degrees,courses,tst_questions"
- " WHERE centres.InsCod=%ld"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod"
- " AND tst_questions.AnsType='%s'",
- Gbl.CurrentIns.Ins.InsCod,
- Tst_StrAnswerTypesDB[AnsType]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM centres,degrees,courses,tst_questions"
+ " WHERE centres.InsCod=%ld"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod"
+ " AND tst_questions.AnsType='%s'",
+ Gbl.CurrentIns.Ins.InsCod,
+ Tst_StrAnswerTypesDB[AnsType]);
break;
case Sco_SCOPE_CTR:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM degrees,courses,tst_questions"
- " WHERE degrees.CtrCod=%ld"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod",
- Gbl.CurrentCtr.Ctr.CtrCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM degrees,courses,tst_questions"
+ " WHERE degrees.CtrCod=%ld"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod",
+ Gbl.CurrentCtr.Ctr.CtrCod);
else
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM degrees,courses,tst_questions"
- " WHERE degrees.CtrCod=%ld"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod"
- " AND tst_questions.AnsType='%s'",
- Gbl.CurrentCtr.Ctr.CtrCod,
- Tst_StrAnswerTypesDB[AnsType]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM degrees,courses,tst_questions"
+ " WHERE degrees.CtrCod=%ld"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod"
+ " AND tst_questions.AnsType='%s'",
+ Gbl.CurrentCtr.Ctr.CtrCod,
+ Tst_StrAnswerTypesDB[AnsType]);
break;
case Sco_SCOPE_DEG:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNTDISTINCT (tst_questions.CrsCod)"
- " FROM courses,tst_questions"
- " WHERE courses.DegCod=%ld"
- " AND courses.CrsCod=tst_questions.CrsCod",
- Gbl.CurrentDeg.Deg.DegCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with test questions",
+ "SELECT COUNTDISTINCT (tst_questions.CrsCod)"
+ " FROM courses,tst_questions"
+ " WHERE courses.DegCod=%ld"
+ " AND courses.CrsCod=tst_questions.CrsCod",
+ Gbl.CurrentDeg.Deg.DegCod);
else
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM courses,tst_questions"
- " WHERE courses.DegCod=%ld"
- " AND courses.CrsCod=tst_questions.CrsCod"
- " AND tst_questions.AnsType='%s'",
- Gbl.CurrentDeg.Deg.DegCod,
- Tst_StrAnswerTypesDB[AnsType]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM courses,tst_questions"
+ " WHERE courses.DegCod=%ld"
+ " AND courses.CrsCod=tst_questions.CrsCod"
+ " AND tst_questions.AnsType='%s'",
+ Gbl.CurrentDeg.Deg.DegCod,
+ Tst_StrAnswerTypesDB[AnsType]);
break;
case Sco_SCOPE_CRS:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(DISTINCT CrsCod)"
- " FROM tst_questions"
- " WHERE CrsCod=%ld",
- Gbl.CurrentCrs.Crs.CrsCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with test questions",
+ "SELECT COUNT(DISTINCT CrsCod)"
+ " FROM tst_questions"
+ " WHERE CrsCod=%ld",
+ Gbl.CurrentCrs.Crs.CrsCod);
else
- DB_BuildQuery ("SELECT COUNT(DISTINCT CrsCod)"
- " FROM tst_questions"
- " WHERE CrsCod=%ld"
- " AND AnsType='%s'",
- Gbl.CurrentCrs.Crs.CrsCod,
- Tst_StrAnswerTypesDB[AnsType]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with test questions",
+ "SELECT COUNT(DISTINCT CrsCod)"
+ " FROM tst_questions"
+ " WHERE CrsCod=%ld"
+ " AND AnsType='%s'",
+ Gbl.CurrentCrs.Crs.CrsCod,
+ Tst_StrAnswerTypesDB[AnsType]);
break;
default:
Lay_WrongScopeExit ();
break;
}
- DB_QuerySELECT_new (&mysql_res,"can not get number of courses with test questions");
/***** Get number of courses *****/
row = mysql_fetch_row (mysql_res);
@@ -7253,145 +7287,168 @@ static unsigned Tst_GetNumCoursesWithPluggableTstQuestions (Sco_Scope_t Scope,Ts
{
case Sco_SCOPE_SYS:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM tst_questions,tst_config"
- " WHERE tst_questions.CrsCod=tst_config.CrsCod"
- " AND tst_config.pluggable='%s'",
- Tst_PluggableDB[Tst_PLUGGABLE_YES]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with pluggable test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM tst_questions,tst_config"
+ " WHERE tst_questions.CrsCod=tst_config.CrsCod"
+ " AND tst_config.pluggable='%s'",
+ Tst_PluggableDB[Tst_PLUGGABLE_YES]);
else
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM tst_questions,tst_config"
- " WHERE tst_questions.AnsType='%s'"
- " AND tst_questions.CrsCod=tst_config.CrsCod"
- " AND tst_config.pluggable='%s'",
- Tst_StrAnswerTypesDB[AnsType],
- Tst_PluggableDB[Tst_PLUGGABLE_YES]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with pluggable test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM tst_questions,tst_config"
+ " WHERE tst_questions.AnsType='%s'"
+ " AND tst_questions.CrsCod=tst_config.CrsCod"
+ " AND tst_config.pluggable='%s'",
+ Tst_StrAnswerTypesDB[AnsType],
+ Tst_PluggableDB[Tst_PLUGGABLE_YES]);
break;
case Sco_SCOPE_CTY:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM institutions,centres,degrees,courses,tst_questions,tst_config"
- " WHERE institutions.CtyCod=%ld"
- " AND institutions.InsCod=centres.InsCod"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod"
- " AND tst_questions.CrsCod=tst_config.CrsCod"
- " AND tst_config.pluggable='%s'",
- Gbl.CurrentCty.Cty.CtyCod,
- Tst_PluggableDB[Tst_PLUGGABLE_YES]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with pluggable test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM institutions,centres,degrees,courses,tst_questions,tst_config"
+ " WHERE institutions.CtyCod=%ld"
+ " AND institutions.InsCod=centres.InsCod"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod"
+ " AND tst_questions.CrsCod=tst_config.CrsCod"
+ " AND tst_config.pluggable='%s'",
+ Gbl.CurrentCty.Cty.CtyCod,
+ Tst_PluggableDB[Tst_PLUGGABLE_YES]);
else
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM institutions,centres,degrees,courses,tst_questions,tst_config"
- " WHERE institutions.CtyCod=%ld"
- " AND institutions.InsCod=centres.InsCod"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod"
- " AND tst_questions.AnsType='%s'"
- " AND tst_questions.CrsCod=tst_config.CrsCod"
- " AND tst_config.pluggable='%s'",
- Gbl.CurrentCty.Cty.CtyCod,
- Tst_StrAnswerTypesDB[AnsType],
- Tst_PluggableDB[Tst_PLUGGABLE_YES]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with pluggable test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM institutions,centres,degrees,courses,tst_questions,tst_config"
+ " WHERE institutions.CtyCod=%ld"
+ " AND institutions.InsCod=centres.InsCod"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod"
+ " AND tst_questions.AnsType='%s'"
+ " AND tst_questions.CrsCod=tst_config.CrsCod"
+ " AND tst_config.pluggable='%s'",
+ Gbl.CurrentCty.Cty.CtyCod,
+ Tst_StrAnswerTypesDB[AnsType],
+ Tst_PluggableDB[Tst_PLUGGABLE_YES]);
break;
case Sco_SCOPE_INS:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM centres,degrees,courses,tst_questions,tst_config"
- " WHERE centres.InsCod=%ld"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod"
- " AND tst_questions.CrsCod=tst_config.CrsCod"
- " AND tst_config.pluggable='%s'",
- Gbl.CurrentIns.Ins.InsCod,
- Tst_PluggableDB[Tst_PLUGGABLE_YES]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with pluggable test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM centres,degrees,courses,tst_questions,tst_config"
+ " WHERE centres.InsCod=%ld"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod"
+ " AND tst_questions.CrsCod=tst_config.CrsCod"
+ " AND tst_config.pluggable='%s'",
+ Gbl.CurrentIns.Ins.InsCod,
+ Tst_PluggableDB[Tst_PLUGGABLE_YES]);
else
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM centres,degrees,courses,tst_questions,tst_config"
- " WHERE centres.InsCod=%ld"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod"
- " AND tst_questions.AnsType='%s'"
- " AND tst_questions.CrsCod=tst_config.CrsCod"
- " AND tst_config.pluggable='%s'",
- Gbl.CurrentIns.Ins.InsCod,
- Tst_StrAnswerTypesDB[AnsType],
- Tst_PluggableDB[Tst_PLUGGABLE_YES]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with pluggable test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM centres,degrees,courses,tst_questions,tst_config"
+ " WHERE centres.InsCod=%ld"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod"
+ " AND tst_questions.AnsType='%s'"
+ " AND tst_questions.CrsCod=tst_config.CrsCod"
+ " AND tst_config.pluggable='%s'",
+ Gbl.CurrentIns.Ins.InsCod,
+ Tst_StrAnswerTypesDB[AnsType],
+ Tst_PluggableDB[Tst_PLUGGABLE_YES]);
break;
case Sco_SCOPE_CTR:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM degrees,courses,tst_questions,tst_config"
- " WHERE degrees.CtrCod=%ld"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod"
- " AND tst_questions.CrsCod=tst_config.CrsCod"
- " AND tst_config.pluggable='%s'",
- Gbl.CurrentCtr.Ctr.CtrCod,
- Tst_PluggableDB[Tst_PLUGGABLE_YES]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with pluggable test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM degrees,courses,tst_questions,tst_config"
+ " WHERE degrees.CtrCod=%ld"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod"
+ " AND tst_questions.CrsCod=tst_config.CrsCod"
+ " AND tst_config.pluggable='%s'",
+ Gbl.CurrentCtr.Ctr.CtrCod,
+ Tst_PluggableDB[Tst_PLUGGABLE_YES]);
else
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM degrees,courses,tst_questions,tst_config"
- " WHERE degrees.CtrCod=%ld"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=tst_questions.CrsCod"
- " AND tst_questions.AnsType='%s'"
- " AND tst_questions.CrsCod=tst_config.CrsCod"
- " AND tst_config.pluggable='%s'",
- Gbl.CurrentCtr.Ctr.CtrCod,
- Tst_StrAnswerTypesDB[AnsType],
- Tst_PluggableDB[Tst_PLUGGABLE_YES]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with pluggable test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM degrees,courses,tst_questions,tst_config"
+ " WHERE degrees.CtrCod=%ld"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=tst_questions.CrsCod"
+ " AND tst_questions.AnsType='%s'"
+ " AND tst_questions.CrsCod=tst_config.CrsCod"
+ " AND tst_config.pluggable='%s'",
+ Gbl.CurrentCtr.Ctr.CtrCod,
+ Tst_StrAnswerTypesDB[AnsType],
+ Tst_PluggableDB[Tst_PLUGGABLE_YES]);
break;
case Sco_SCOPE_DEG:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM courses,tst_questions,tst_config"
- " WHERE courses.DegCod=%ld"
- " AND courses.CrsCod=tst_questions.CrsCod"
- " AND tst_questions.CrsCod=tst_config.CrsCod"
- " AND tst_config.pluggable='%s'",
- Gbl.CurrentDeg.Deg.DegCod,
- Tst_PluggableDB[Tst_PLUGGABLE_YES]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with pluggable test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM courses,tst_questions,tst_config"
+ " WHERE courses.DegCod=%ld"
+ " AND courses.CrsCod=tst_questions.CrsCod"
+ " AND tst_questions.CrsCod=tst_config.CrsCod"
+ " AND tst_config.pluggable='%s'",
+ Gbl.CurrentDeg.Deg.DegCod,
+ Tst_PluggableDB[Tst_PLUGGABLE_YES]);
else
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM courses,tst_questions,tst_config"
- " WHERE courses.DegCod=%ld"
- " AND courses.CrsCod=tst_questions.CrsCod"
- " AND tst_questions.AnsType='%s'"
- " AND tst_questions.CrsCod=tst_config.CrsCod"
- " AND tst_config.pluggable='%s'",
- Gbl.CurrentDeg.Deg.DegCod,
- Tst_StrAnswerTypesDB[AnsType],
- Tst_PluggableDB[Tst_PLUGGABLE_YES]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with pluggable test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM courses,tst_questions,tst_config"
+ " WHERE courses.DegCod=%ld"
+ " AND courses.CrsCod=tst_questions.CrsCod"
+ " AND tst_questions.AnsType='%s'"
+ " AND tst_questions.CrsCod=tst_config.CrsCod"
+ " AND tst_config.pluggable='%s'",
+ Gbl.CurrentDeg.Deg.DegCod,
+ Tst_StrAnswerTypesDB[AnsType],
+ Tst_PluggableDB[Tst_PLUGGABLE_YES]);
break;
case Sco_SCOPE_CRS:
if (AnsType == Tst_ANS_ALL)
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM tst_questions,tst_config"
- " WHERE tst_questions.CrsCod=%ld"
- " AND tst_questions.CrsCod=tst_config.CrsCod"
- " AND tst_config.pluggable='%s'",
- Gbl.CurrentCrs.Crs.CrsCod,
- Tst_PluggableDB[Tst_PLUGGABLE_YES]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with pluggable test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM tst_questions,tst_config"
+ " WHERE tst_questions.CrsCod=%ld"
+ " AND tst_questions.CrsCod=tst_config.CrsCod"
+ " AND tst_config.pluggable='%s'",
+ Gbl.CurrentCrs.Crs.CrsCod,
+ Tst_PluggableDB[Tst_PLUGGABLE_YES]);
else
- DB_BuildQuery ("SELECT COUNT(DISTINCT tst_questions.CrsCod)"
- " FROM tst_questions,tst_config"
- " WHERE tst_questions.CrsCod=%ld"
- " AND tst_questions.AnsType='%s'"
- " AND tst_questions.CrsCod=tst_config.CrsCod"
- " AND tst_config.pluggable='%s'",
- Gbl.CurrentCrs.Crs.CrsCod,
- Tst_StrAnswerTypesDB[AnsType],
- Tst_PluggableDB[Tst_PLUGGABLE_YES]);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses"
+ " with pluggable test questions",
+ "SELECT COUNT(DISTINCT tst_questions.CrsCod)"
+ " FROM tst_questions,tst_config"
+ " WHERE tst_questions.CrsCod=%ld"
+ " AND tst_questions.AnsType='%s'"
+ " AND tst_questions.CrsCod=tst_config.CrsCod"
+ " AND tst_config.pluggable='%s'",
+ Gbl.CurrentCrs.Crs.CrsCod,
+ Tst_StrAnswerTypesDB[AnsType],
+ Tst_PluggableDB[Tst_PLUGGABLE_YES]);
break;
default:
Lay_WrongScopeExit ();
break;
}
- DB_QuerySELECT_new (&mysql_res,"can not get number of courses with pluggable test questions");
/***** Get number of courses *****/
row = mysql_fetch_row (mysql_res);
@@ -7725,19 +7782,20 @@ static void Tst_ShowTestResults (struct UsrData *UsrDat)
char *ClassDat;
/***** Make database query *****/
- DB_BuildQuery ("SELECT TstCod,AllowTeachers,"
- "UNIX_TIMESTAMP(TstTime),"
- "NumQsts,NumQstsNotBlank,Score"
- " FROM tst_exams"
- " WHERE CrsCod=%ld AND UsrCod=%ld"
- " AND TstTime>=FROM_UNIXTIME(%ld)"
- " AND TstTime<=FROM_UNIXTIME(%ld)"
- " ORDER BY TstCod",
- Gbl.CurrentCrs.Crs.CrsCod,
- UsrDat->UsrCod,
- (long) Gbl.DateRange.TimeUTC[0],
- (long) Gbl.DateRange.TimeUTC[1]);
- NumExams = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get test exams of a user");
+ NumExams =
+ (unsigned) DB_QuerySELECT (&mysql_res,"can not get test exams of a user",
+ "SELECT TstCod,AllowTeachers,"
+ "UNIX_TIMESTAMP(TstTime),"
+ "NumQsts,NumQstsNotBlank,Score"
+ " FROM tst_exams"
+ " WHERE CrsCod=%ld AND UsrCod=%ld"
+ " AND TstTime>=FROM_UNIXTIME(%ld)"
+ " AND TstTime<=FROM_UNIXTIME(%ld)"
+ " ORDER BY TstCod",
+ Gbl.CurrentCrs.Crs.CrsCod,
+ UsrDat->UsrCod,
+ (long) Gbl.DateRange.TimeUTC[0],
+ (long) Gbl.DateRange.TimeUTC[1]);
/***** Show user's data *****/
fprintf (Gbl.F.Out,"
");
@@ -8389,14 +8447,15 @@ static void Tst_GetTestResultDataByTstCod (long TstCod,time_t *TstTimeUTC,
MYSQL_ROW row;
/***** Make database query *****/
- DB_BuildQuery ("SELECT UsrCod,AllowTeachers,"
- "UNIX_TIMESTAMP(TstTime),"
- "NumQsts,NumQstsNotBlank,Score"
- " FROM tst_exams"
- " WHERE TstCod=%ld AND CrsCod=%ld",
- TstCod,
- Gbl.CurrentCrs.Crs.CrsCod);
- if (DB_QuerySELECT_new (&mysql_res,"can not get data of a test result of a user") == 1)
+ if (DB_QuerySELECT (&mysql_res,"can not get data"
+ " of a test result of a user",
+ "SELECT UsrCod,AllowTeachers,"
+ "UNIX_TIMESTAMP(TstTime),"
+ "NumQsts,NumQstsNotBlank,Score"
+ " FROM tst_exams"
+ " WHERE TstCod=%ld AND CrsCod=%ld",
+ TstCod,
+ Gbl.CurrentCrs.Crs.CrsCod) == 1)
{
row = mysql_fetch_row (mysql_res);
@@ -8468,11 +8527,13 @@ static void Tst_GetTestResultQuestionsFromDB (long TstCod)
unsigned NumQst;
/***** Get questions of a test result from database *****/
- DB_BuildQuery ("SELECT QstCod,Indexes,Answers FROM tst_exam_questions"
- " WHERE TstCod=%ld ORDER BY QstInd",
- TstCod);
- Gbl.Test.NumQsts = (unsigned) DB_QuerySELECT_new (&mysql_res,
- "can not get questions of a test result");
+ Gbl.Test.NumQsts =
+ (unsigned) DB_QuerySELECT (&mysql_res,"can not get questions"
+ " of a test result",
+ "SELECT QstCod,Indexes,Answers"
+ " FROM tst_exam_questions"
+ " WHERE TstCod=%ld ORDER BY QstInd",
+ TstCod);
/***** Get questions codes *****/
for (NumQst = 0;
diff --git a/swad_user.c b/swad_user.c
index 796d38cf9..4f04331f4 100644
--- a/swad_user.c
+++ b/swad_user.c
@@ -432,10 +432,10 @@ void Usr_GetUsrCodFromEncryptedUsrCod (struct UsrData *UsrDat)
if (UsrDat->EncryptedUsrCod[0])
{
/***** Get user's code from database *****/
- DB_BuildQuery ("SELECT UsrCod FROM usr_data WHERE EncryptedUsrCod='%s'",
- UsrDat->EncryptedUsrCod);
- NumRows = DB_QuerySELECT_new (&mysql_res,"can not get user's code");
-
+ NumRows = DB_QuerySELECT (&mysql_res,"can not get user's code",
+ "SELECT UsrCod FROM usr_data"
+ " WHERE EncryptedUsrCod='%s'",
+ UsrDat->EncryptedUsrCod);
if (NumRows != 1)
Lay_ShowErrorAndExit ("Error when getting user's code.");
@@ -464,10 +464,10 @@ void Usr_GetEncryptedUsrCodFromUsrCod (struct UsrData *UsrDat) // TODO: Remove t
if (UsrDat->UsrCod > 0)
{
/***** Get encrypted user's code from database *****/
- DB_BuildQuery ("SELECT EncryptedUsrCod FROM usr_data WHERE UsrCod=%ld",
- UsrDat->UsrCod);
- NumRows = DB_QuerySELECT_new (&mysql_res,"can not get encrypted user's code");
-
+ NumRows = DB_QuerySELECT (&mysql_res,"can not get encrypted user's code",
+ "SELECT EncryptedUsrCod FROM usr_data"
+ " WHERE UsrCod=%ld",
+ UsrDat->UsrCod);
if (NumRows != 1)
Lay_ShowErrorAndExit ("Error when getting encrypted user's code.");
@@ -501,18 +501,42 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
Txt_Language_t Lan;
/***** Get user's data from database *****/
- DB_BuildQuery ("SELECT EncryptedUsrCod,Password,Surname1,Surname2,FirstName,Sex,"
- "Theme,IconSet,Language,FirstDayOfWeek,DateFormat,"
- "Photo,PhotoVisibility,ProfileVisibility,"
- "CtyCod,InsCtyCod,InsCod,DptCod,CtrCod,Office,OfficePhone,"
- "LocalAddress,LocalPhone,FamilyAddress,FamilyPhone,OriginPlace,"
- "DATE_FORMAT(Birthday,'%%Y%%m%%d'),Comments,"
- "Menu,SideCols,NotifNtfEvents,EmailNtfEvents"
- " FROM usr_data WHERE UsrCod=%ld",
- UsrDat->UsrCod);
- NumRows = DB_QuerySELECT_new (&mysql_res,"can not get user's data");
-
- /***** Check number of rows in result *****/
+ NumRows = DB_QuerySELECT (&mysql_res,"can not get user's data",
+ "SELECT EncryptedUsrCod," // row[ 0]
+ "Password," // row[ 1]
+ "Surname1," // row[ 2]
+ "Surname2," // row[ 3]
+ "FirstName," // row[ 4]
+ "Sex," // row[ 5]
+ "Theme," // row[ 6]
+ "IconSet," // row[ 7]
+ "Language," // row[ 8]
+ "FirstDayOfWeek," // row[ 9]
+ "DateFormat," // row[10]
+ "Photo," // row[11]
+ "PhotoVisibility," // row[12]
+ "ProfileVisibility," // row[13]
+ "CtyCod," // row[14]
+ "InsCtyCod," // row[15]
+ "InsCod," // row[16]
+ "DptCod," // row[17]
+ "CtrCod," // row[18]
+ "Office," // row[19]
+ "OfficePhone," // row[20]
+ "LocalAddress," // row[21]
+ "LocalPhone," // row[22]
+ "FamilyAddress," // row[23]
+ "FamilyPhone," // row[24]
+ "OriginPlace," // row[25]
+ "DATE_FORMAT(Birthday,"
+ "'%%Y%%m%%d')," // row[26]
+ "Comments," // row[27]
+ "Menu," // row[28]
+ "SideCols," // row[29]
+ "NotifNtfEvents," // row[20]
+ "EmailNtfEvents" // row[31]
+ " FROM usr_data WHERE UsrCod=%ld",
+ UsrDat->UsrCod);
if (NumRows != 1)
Lay_ShowErrorAndExit ("Error when getting user's data.");
@@ -679,13 +703,14 @@ static void Usr_GetMyLastData (void)
unsigned long NumRows;
unsigned UnsignedNum;
- /***** Get user's data from database *****/
- DB_BuildQuery ("SELECT WhatToSearch,LastCrs,LastTab,UNIX_TIMESTAMP(LastAccNotif)"
- " FROM usr_last WHERE UsrCod=%ld",
- Gbl.Usrs.Me.UsrDat.UsrCod);
- NumRows = DB_QuerySELECT_new (&mysql_res,"can not get user's last data");
-
- /***** Check number of rows in result *****/
+ /***** Get user's last data from database *****/
+ NumRows = DB_QuerySELECT (&mysql_res,"can not get user's last data",
+ "SELECT WhatToSearch," // row[0]
+ "LastCrs," // row[1]
+ "LastTab," // row[2]
+ "UNIX_TIMESTAMP(LastAccNotif)" // row[3]
+ " FROM usr_last WHERE UsrCod=%ld",
+ Gbl.Usrs.Me.UsrDat.UsrCod);
if (NumRows == 0)
{
/***** Free structure that stores the query result *****/
@@ -1657,10 +1682,11 @@ void Usr_GetMyCourses (void)
DB_Query_new ("can not create temporary table");
/***** Get my courses from database *****/
- DB_BuildQuery ("SELECT CrsCod,Role,DegCod FROM my_courses_tmp");
- NumCrss = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get the courses you belong to");
-
- /***** Get my courses from database *****/
+ NumCrss =
+ (unsigned) DB_QuerySELECT (&mysql_res,"can not get which courses"
+ " you belong to",
+ "SELECT CrsCod,Role,DegCod"
+ " FROM my_courses_tmp");
for (NumCrs = 0;
NumCrs < NumCrss;
NumCrs++)
@@ -2114,18 +2140,25 @@ unsigned Usr_GetCtysFromUsr (long UsrCod,MYSQL_RES **mysql_res)
extern const char *Txt_STR_LANG_ID[1 + Txt_NUM_LANGUAGES];
/***** Get the institutions a user belongs to from database *****/
- DB_BuildQuery ("SELECT countries.CtyCod,MAX(crs_usr.Role)"
- " FROM crs_usr,courses,degrees,centres,institutions,countries"
- " WHERE crs_usr.UsrCod=%ld"
- " AND crs_usr.CrsCod=courses.CrsCod"
- " AND courses.DegCod=degrees.DegCod"
- " AND degrees.CtrCod=centres.CtrCod"
- " AND centres.InsCod=institutions.InsCod"
- " AND institutions.CtyCod=countries.CtyCod"
- " GROUP BY countries.CtyCod"
- " ORDER BY countries.Name_%s",
- UsrCod,Txt_STR_LANG_ID[Gbl.Prefs.Language]);
- return (unsigned) DB_QuerySELECT_new (mysql_res,"can not get the countries a user belongs to");
+ return
+ (unsigned) DB_QuerySELECT (mysql_res,"can not get the countries"
+ " a user belongs to",
+ "SELECT countries.CtyCod,MAX(crs_usr.Role)"
+ " FROM crs_usr,"
+ "courses,"
+ "degrees,"
+ "centres,"
+ "institutions,"
+ "countries"
+ " WHERE crs_usr.UsrCod=%ld"
+ " AND crs_usr.CrsCod=courses.CrsCod"
+ " AND courses.DegCod=degrees.DegCod"
+ " AND degrees.CtrCod=centres.CtrCod"
+ " AND centres.InsCod=institutions.InsCod"
+ " AND institutions.CtyCod=countries.CtyCod"
+ " GROUP BY countries.CtyCod"
+ " ORDER BY countries.Name_%s",
+ UsrCod,Txt_STR_LANG_ID[Gbl.Prefs.Language]);
}
/*****************************************************************************/
@@ -2137,29 +2170,42 @@ unsigned long Usr_GetInssFromUsr (long UsrCod,long CtyCod,MYSQL_RES **mysql_res)
{
/***** Get the institutions a user belongs to from database *****/
if (CtyCod > 0)
- DB_BuildQuery ("SELECT institutions.InsCod,MAX(crs_usr.Role)"
- " FROM crs_usr,courses,degrees,centres,institutions"
- " WHERE crs_usr.UsrCod=%ld"
- " AND crs_usr.CrsCod=courses.CrsCod"
- " AND courses.DegCod=degrees.DegCod"
- " AND degrees.CtrCod=centres.CtrCod"
- " AND centres.InsCod=institutions.InsCod"
- " AND institutions.CtyCod=%ld"
- " GROUP BY institutions.InsCod"
- " ORDER BY institutions.ShortName",
- UsrCod,CtyCod);
+ return DB_QuerySELECT (mysql_res,"can not get the institutions"
+ " a user belongs to",
+ "SELECT institutions.InsCod,"
+ "MAX(crs_usr.Role)"
+ " FROM crs_usr,"
+ "courses,"
+ "degrees,"
+ "centres,"
+ "institutions"
+ " WHERE crs_usr.UsrCod=%ld"
+ " AND crs_usr.CrsCod=courses.CrsCod"
+ " AND courses.DegCod=degrees.DegCod"
+ " AND degrees.CtrCod=centres.CtrCod"
+ " AND centres.InsCod=institutions.InsCod"
+ " AND institutions.CtyCod=%ld"
+ " GROUP BY institutions.InsCod"
+ " ORDER BY institutions.ShortName",
+ UsrCod,CtyCod);
else
- DB_BuildQuery ("SELECT institutions.InsCod,MAX(crs_usr.Role)"
- " FROM crs_usr,courses,degrees,centres,institutions"
- " WHERE crs_usr.UsrCod=%ld"
- " AND crs_usr.CrsCod=courses.CrsCod"
- " AND courses.DegCod=degrees.DegCod"
- " AND degrees.CtrCod=centres.CtrCod"
- " AND centres.InsCod=institutions.InsCod"
- " GROUP BY institutions.InsCod"
- " ORDER BY institutions.ShortName",
- UsrCod);
- return DB_QuerySELECT_new (mysql_res,"can not get the institutions a user belongs to");
+ return DB_QuerySELECT (mysql_res,"can not get the institutions"
+ " a user belongs to",
+ "SELECT institutions.InsCod,"
+ "MAX(crs_usr.Role)"
+ " FROM crs_usr,"
+ "courses,"
+ "degrees,"
+ "centres,"
+ "institutions"
+ " WHERE crs_usr.UsrCod=%ld"
+ " AND crs_usr.CrsCod=courses.CrsCod"
+ " AND courses.DegCod=degrees.DegCod"
+ " AND degrees.CtrCod=centres.CtrCod"
+ " AND centres.InsCod=institutions.InsCod"
+ " GROUP BY institutions.InsCod"
+ " ORDER BY institutions.ShortName",
+ UsrCod);
}
/*****************************************************************************/
@@ -2171,25 +2217,38 @@ unsigned long Usr_GetCtrsFromUsr (long UsrCod,long InsCod,MYSQL_RES **mysql_res)
{
/***** Get from database the centres a user belongs to *****/
if (InsCod > 0)
- DB_BuildQuery ("SELECT centres.CtrCod,MAX(crs_usr.Role)"
- " FROM crs_usr,courses,degrees,centres"
- " WHERE crs_usr.UsrCod=%ld"
- " AND crs_usr.CrsCod=courses.CrsCod"
- " AND courses.DegCod=degrees.DegCod"
- " AND degrees.CtrCod=centres.CtrCod"
- " AND centres.InsCod=%ld"
- " GROUP BY centres.CtrCod ORDER BY centres.ShortName",
- UsrCod,InsCod);
+ return DB_QuerySELECT (mysql_res,"can not check the centres"
+ " a user belongs to",
+ "SELECT centres.CtrCod,"
+ "MAX(crs_usr.Role)"
+ " FROM crs_usr,"
+ "courses,"
+ "degrees,"
+ "centres"
+ " WHERE crs_usr.UsrCod=%ld"
+ " AND crs_usr.CrsCod=courses.CrsCod"
+ " AND courses.DegCod=degrees.DegCod"
+ " AND degrees.CtrCod=centres.CtrCod"
+ " AND centres.InsCod=%ld"
+ " GROUP BY centres.CtrCod"
+ " ORDER BY centres.ShortName",
+ UsrCod,InsCod);
else
- DB_BuildQuery ("SELECT degrees.CtrCod,MAX(crs_usr.Role)"
- " FROM crs_usr,courses,degrees,centres"
- " WHERE crs_usr.UsrCod=%ld"
- " AND crs_usr.CrsCod=courses.CrsCod"
- " AND courses.DegCod=degrees.DegCod"
- " AND degrees.CtrCod=centres.CtrCod"
- " GROUP BY centres.CtrCod ORDER BY centres.ShortName",
- UsrCod);
- return DB_QuerySELECT_new (mysql_res,"can not check the centres a user belongs to");
+ return DB_QuerySELECT (mysql_res,"can not check the centres"
+ " a user belongs to",
+ "SELECT degrees.CtrCod,"
+ "MAX(crs_usr.Role)"
+ " FROM crs_usr,"
+ "courses,"
+ "degrees,"
+ "centres"
+ " WHERE crs_usr.UsrCod=%ld"
+ " AND crs_usr.CrsCod=courses.CrsCod"
+ " AND courses.DegCod=degrees.DegCod"
+ " AND degrees.CtrCod=centres.CtrCod"
+ " GROUP BY centres.CtrCod"
+ " ORDER BY centres.ShortName",
+ UsrCod);
}
/*****************************************************************************/
@@ -2201,24 +2260,34 @@ unsigned long Usr_GetDegsFromUsr (long UsrCod,long CtrCod,MYSQL_RES **mysql_res)
{
/***** Get from database the degrees a user belongs to *****/
if (CtrCod > 0)
- DB_BuildQuery ("SELECT degrees.DegCod,MAX(crs_usr.Role)"
- " FROM crs_usr,courses,degrees"
- " WHERE crs_usr.UsrCod=%ld"
- " AND crs_usr.CrsCod=courses.CrsCod"
- " AND courses.DegCod=degrees.DegCod"
- " AND degrees.CtrCod=%ld"
- " GROUP BY degrees.DegCod ORDER BY degrees.ShortName",
- UsrCod,CtrCod);
+ return DB_QuerySELECT (mysql_res,"can not check the degrees"
+ " a user belongs to",
+ "SELECT degrees.DegCod,"
+ "MAX(crs_usr.Role)"
+ " FROM crs_usr,"
+ "courses,"
+ "degrees"
+ " WHERE crs_usr.UsrCod=%ld"
+ " AND crs_usr.CrsCod=courses.CrsCod"
+ " AND courses.DegCod=degrees.DegCod"
+ " AND degrees.CtrCod=%ld"
+ " GROUP BY degrees.DegCod"
+ " ORDER BY degrees.ShortName",
+ UsrCod,CtrCod);
else
- DB_BuildQuery ("SELECT degrees.DegCod,MAX(crs_usr.Role)"
- " FROM crs_usr,courses,degrees"
- " WHERE crs_usr.UsrCod=%ld"
- " AND crs_usr.CrsCod=courses.CrsCod"
- " AND courses.DegCod=degrees.DegCod"
- " GROUP BY degrees.DegCod ORDER BY degrees.ShortName",
- UsrCod);
- return DB_QuerySELECT_new (mysql_res,"can not check the degrees"
- " a user belongs to");
+ return DB_QuerySELECT (mysql_res,"can not check the degrees"
+ " a user belongs to",
+ "SELECT degrees.DegCod,"
+ "MAX(crs_usr.Role)"
+ " FROM crs_usr,"
+ "courses,"
+ "degrees"
+ " WHERE crs_usr.UsrCod=%ld"
+ " AND crs_usr.CrsCod=courses.CrsCod"
+ " AND courses.DegCod=degrees.DegCod"
+ " GROUP BY degrees.DegCod"
+ " ORDER BY degrees.ShortName",
+ UsrCod);
}
/*****************************************************************************/
@@ -2230,22 +2299,32 @@ unsigned long Usr_GetCrssFromUsr (long UsrCod,long DegCod,MYSQL_RES **mysql_res)
{
/***** Get from database the courses a user belongs to *****/
if (DegCod > 0) // Courses in a degree
- DB_BuildQuery ("SELECT crs_usr.CrsCod,crs_usr.Role,courses.DegCod"
- " FROM crs_usr,courses"
- " WHERE crs_usr.UsrCod=%ld"
- " AND crs_usr.CrsCod=courses.CrsCod"
- " AND courses.DegCod=%ld"
- " ORDER BY courses.ShortName",
- UsrCod,DegCod);
+ return DB_QuerySELECT (mysql_res,"can not get the courses"
+ " a user belongs to",
+ "SELECT crs_usr.CrsCod,"
+ "crs_usr.Role,"
+ "courses.DegCod"
+ " FROM crs_usr,"
+ "courses"
+ " WHERE crs_usr.UsrCod=%ld"
+ " AND crs_usr.CrsCod=courses.CrsCod"
+ " AND courses.DegCod=%ld"
+ " ORDER BY courses.ShortName",
+ UsrCod,DegCod);
else // All the courses
- DB_BuildQuery ("SELECT crs_usr.CrsCod,crs_usr.Role,courses.DegCod"
- " FROM crs_usr,courses,degrees"
- " WHERE crs_usr.UsrCod=%ld"
- " AND crs_usr.CrsCod=courses.CrsCod"
- " AND courses.DegCod=degrees.DegCod"
- " ORDER BY degrees.ShortName,courses.ShortName",
- UsrCod);
- return DB_QuerySELECT_new (mysql_res,"can not get the courses a user belongs to");
+ return DB_QuerySELECT (mysql_res,"can not get the courses"
+ " a user belongs to",
+ "SELECT crs_usr.CrsCod,"
+ "crs_usr.Role,"
+ "courses.DegCod"
+ " FROM crs_usr,"
+ "courses,"
+ "degrees"
+ " WHERE crs_usr.UsrCod=%ld"
+ " AND crs_usr.CrsCod=courses.CrsCod"
+ " AND courses.DegCod=degrees.DegCod"
+ " ORDER BY degrees.ShortName,courses.ShortName",
+ UsrCod);
}
/*****************************************************************************/
@@ -4013,11 +4092,12 @@ long Usr_GetRamdomStdFromCrs (long CrsCod)
long UsrCod = -1L; // -1 means user not found
/***** Get a random student from current course from database *****/
- DB_BuildQuery ("SELECT UsrCod FROM crs_usr"
- " WHERE CrsCod=%ld AND Role=%u"
- " ORDER BY RAND(NOW()) LIMIT 1",
- CrsCod,(unsigned) Rol_STD);
- if (DB_QuerySELECT_new (&mysql_res,"can not get a random student from the current course"))
+ if (DB_QuerySELECT (&mysql_res,"can not get a random student"
+ " from the current course",
+ "SELECT UsrCod FROM crs_usr"
+ " WHERE CrsCod=%ld AND Role=%u"
+ " ORDER BY RAND(NOW()) LIMIT 1",
+ CrsCod,(unsigned) Rol_STD))
{
/***** Get user code *****/
row = mysql_fetch_row (mysql_res);
@@ -4042,12 +4122,12 @@ long Usr_GetRamdomStdFromGrp (long GrpCod)
long UsrCod = -1L; // -1 means user not found
/***** Get a random student from a group from database *****/
- DB_BuildQuery ("SELECT crs_grp_usr.UsrCod FROM crs_grp_usr,crs_usr"
- " WHERE crs_grp_usr.GrpCod=%ld"
- " AND crs_grp_usr.UsrCod=crs_usr.UsrCod"
- " AND crs_usr.Role=%u ORDER BY RAND(NOW()) LIMIT 1",
- GrpCod,(unsigned) Rol_STD);
- if (DB_QuerySELECT_new (&mysql_res,"can not get a random student from a group"))
+ if (DB_QuerySELECT (&mysql_res,"can not get a random student from a group",
+ "SELECT crs_grp_usr.UsrCod FROM crs_grp_usr,crs_usr"
+ " WHERE crs_grp_usr.GrpCod=%ld"
+ " AND crs_grp_usr.UsrCod=crs_usr.UsrCod"
+ " AND crs_usr.Role=%u ORDER BY RAND(NOW()) LIMIT 1",
+ GrpCod,(unsigned) Rol_STD))
{
/***** Get user code *****/
row = mysql_fetch_row (mysql_res);
@@ -7109,12 +7189,12 @@ static void Usr_GetMyUsrListTypeFromDB (void)
Usr_ShowUsrsType_t ListType;
/***** Get type of listing of users from database *****/
- DB_BuildQuery ("SELECT UsrListType FROM crs_usr"
- " WHERE CrsCod=%ld AND UsrCod=%ld",
- Gbl.CurrentCrs.Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod);
- NumRows = DB_QuerySELECT_new (&mysql_res,"can not get type of listing of users");
-
- if (NumRows == 1) // Should be one only row
+ NumRows = DB_QuerySELECT (&mysql_res,"can not get type of listing of users",
+ "SELECT UsrListType FROM crs_usr"
+ " WHERE CrsCod=%ld AND UsrCod=%ld",
+ Gbl.CurrentCrs.Crs.CrsCod,
+ Gbl.Usrs.Me.UsrDat.UsrCod);
+ if (NumRows == 1) // Should be one only row
{
/* Get type of users' listing used to select some of them */
Gbl.Usrs.Me.ListType = Usr_SHOW_USRS_TYPE_DEFAULT;
@@ -7129,9 +7209,12 @@ static void Usr_GetMyUsrListTypeFromDB (void)
break;
}
}
- else if (NumRows == 0) // If I am an administrator or superuser and I don't belong to current course, then the result will be the default
+ else if (NumRows == 0) // If I am an administrator or superuser
+ // and I don't belong to current course,
+ // then the result will be the default
Gbl.Usrs.Me.ListType = Usr_SHOW_USRS_TYPE_DEFAULT;
- else // Error in databse: more than one row for a user in course
+ else // Error in database:
+ // more than one row for a user in course
Lay_ShowErrorAndExit ("Error when getting type of listing of users.");
/***** Free structure that stores the query result *****/
@@ -7208,12 +7291,13 @@ static void Usr_GetMyColsClassPhotoFromDB (void)
if (Gbl.Usrs.Me.Logged && Gbl.CurrentCrs.Crs.CrsCod > 0)
{
/***** Get number of columns in class photo from database *****/
- DB_BuildQuery ("SELECT ColsClassPhoto FROM crs_usr"
- " WHERE CrsCod=%ld AND UsrCod=%ld",
- Gbl.CurrentCrs.Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod);
- NumRows = DB_QuerySELECT_new (&mysql_res,"can not get number of columns in class photo");
-
- if (NumRows == 1) // Should be one only row
+ NumRows = DB_QuerySELECT (&mysql_res,"can not get number of columns"
+ " in class photo",
+ "SELECT ColsClassPhoto FROM crs_usr"
+ " WHERE CrsCod=%ld AND UsrCod=%ld",
+ Gbl.CurrentCrs.Crs.CrsCod,
+ Gbl.Usrs.Me.UsrDat.UsrCod);
+ if (NumRows == 1) // Should be one only row
{
/* Get number of columns in class photo */
row = mysql_fetch_row (mysql_res);
@@ -7223,8 +7307,10 @@ static void Usr_GetMyColsClassPhotoFromDB (void)
Gbl.Usrs.ClassPhoto.Cols > Usr_CLASS_PHOTO_COLS_MAX)
Gbl.Usrs.ClassPhoto.Cols = Usr_CLASS_PHOTO_COLS_DEF;
}
- else if (NumRows > 1) // Error in databse: more than one row for a user in course
- Lay_ShowErrorAndExit ("Error when getting number of columns in class photo.");
+ else if (NumRows > 1) // Error in database:
+ // more than one row for a user in course
+ Lay_ShowErrorAndExit ("Error when getting number of columns"
+ " in class photo.");
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
@@ -7310,11 +7396,12 @@ void Usr_GetMyPrefAboutListWithPhotosFromDB (void)
if (Gbl.Usrs.Me.Logged && Gbl.CurrentCrs.Crs.CrsCod)
{
/***** Get if listing of users must show photos from database *****/
- DB_BuildQuery ("SELECT ListWithPhotos FROM crs_usr"
- " WHERE CrsCod=%ld AND UsrCod=%ld",
- Gbl.CurrentCrs.Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod);
- NumRows = DB_QuerySELECT_new (&mysql_res,"can not check if listing of users must show photos");
-
+ NumRows = DB_QuerySELECT (&mysql_res,"can not check if listing of users"
+ " must show photos",
+ "SELECT ListWithPhotos FROM crs_usr"
+ " WHERE CrsCod=%ld AND UsrCod=%ld",
+ Gbl.CurrentCrs.Crs.CrsCod,
+ Gbl.Usrs.Me.UsrDat.UsrCod);
if (NumRows == 1) // Should be one only row
{
/* Get number of columns in class photo */
@@ -7322,8 +7409,10 @@ void Usr_GetMyPrefAboutListWithPhotosFromDB (void)
row = mysql_fetch_row (mysql_res);
Gbl.Usrs.Listing.WithPhotos = (row[0][0] == 'Y');
}
- else if (NumRows > 1) // Error in databse: more than one row for a user in course
- Lay_ShowErrorAndExit ("Error when checking if listing of users must show photos.");
+ else if (NumRows > 1) // Error in database:
+ // more than one row for a user in course
+ Lay_ShowErrorAndExit ("Error when checking if listing of users"
+ " must show photos.");
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
@@ -8612,108 +8701,118 @@ float Usr_GetNumCrssPerUsr (Rol_Role_t Role)
{
case Sco_SCOPE_SYS:
if (Role == Rol_UNK) // Any user
- DB_BuildQuery ("SELECT AVG(NumCrss) FROM "
- "(SELECT COUNT(CrsCod) AS NumCrss"
- " FROM crs_usr"
- " GROUP BY UsrCod) AS NumCrssTable");
+ DB_QuerySELECT (&mysql_res,"can not get number of courses per user",
+ "SELECT AVG(NumCrss) FROM "
+ "(SELECT COUNT(CrsCod) AS NumCrss"
+ " FROM crs_usr"
+ " GROUP BY UsrCod) AS NumCrssTable");
else
- DB_BuildQuery ("SELECT AVG(NumCrss) FROM "
- "(SELECT COUNT(CrsCod) AS NumCrss"
- " FROM crs_usr"
- " WHERE Role=%u GROUP BY UsrCod) AS NumCrssTable",
- (unsigned) Role);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses per user",
+ "SELECT AVG(NumCrss) FROM "
+ "(SELECT COUNT(CrsCod) AS NumCrss"
+ " FROM crs_usr"
+ " WHERE Role=%u GROUP BY UsrCod) AS NumCrssTable",
+ (unsigned) Role);
break;
case Sco_SCOPE_CTY:
if (Role == Rol_UNK) // Any user
- DB_BuildQuery ("SELECT AVG(NumCrss) FROM "
- "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
- " FROM institutions,centres,degrees,courses,crs_usr"
- " WHERE institutions.CtyCod=%ld"
- " AND institutions.InsCod=centres.InsCod"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=crs_usr.CrsCod"
- " GROUP BY crs_usr.UsrCod) AS NumCrssTable",
- Gbl.CurrentCty.Cty.CtyCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses per user",
+ "SELECT AVG(NumCrss) FROM "
+ "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
+ " FROM institutions,centres,degrees,courses,crs_usr"
+ " WHERE institutions.CtyCod=%ld"
+ " AND institutions.InsCod=centres.InsCod"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=crs_usr.CrsCod"
+ " GROUP BY crs_usr.UsrCod) AS NumCrssTable",
+ Gbl.CurrentCty.Cty.CtyCod);
else
- DB_BuildQuery ("SELECT AVG(NumCrss) FROM "
- "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
- " FROM institutions,centres,degrees,courses,crs_usr"
- " WHERE institutions.CtyCod=%ld"
- " AND institutions.InsCod=centres.InsCod"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=crs_usr.CrsCod"
- " AND crs_usr.Role=%u"
- " GROUP BY crs_usr.UsrCod) AS NumCrssTable",
- Gbl.CurrentCty.Cty.CtyCod,
- (unsigned) Role);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses per user",
+ "SELECT AVG(NumCrss) FROM "
+ "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
+ " FROM institutions,centres,degrees,courses,crs_usr"
+ " WHERE institutions.CtyCod=%ld"
+ " AND institutions.InsCod=centres.InsCod"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=crs_usr.CrsCod"
+ " AND crs_usr.Role=%u"
+ " GROUP BY crs_usr.UsrCod) AS NumCrssTable",
+ Gbl.CurrentCty.Cty.CtyCod,
+ (unsigned) Role);
break;
case Sco_SCOPE_INS:
if (Role == Rol_UNK) // Any user
- DB_BuildQuery ("SELECT AVG(NumCrss) FROM "
- "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
- " FROM centres,degrees,courses,crs_usr"
- " WHERE centres.InsCod=%ld"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=crs_usr.CrsCod"
- " GROUP BY crs_usr.UsrCod) AS NumCrssTable",
- Gbl.CurrentIns.Ins.InsCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses per user",
+ "SELECT AVG(NumCrss) FROM "
+ "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
+ " FROM centres,degrees,courses,crs_usr"
+ " WHERE centres.InsCod=%ld"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=crs_usr.CrsCod"
+ " GROUP BY crs_usr.UsrCod) AS NumCrssTable",
+ Gbl.CurrentIns.Ins.InsCod);
else
- DB_BuildQuery ("SELECT AVG(NumCrss) FROM "
- "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
- " FROM centres,degrees,courses,crs_usr"
- " WHERE centres.InsCod=%ld"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=crs_usr.CrsCod"
- " AND crs_usr.Role=%u"
- " GROUP BY crs_usr.UsrCod) AS NumCrssTable",
- Gbl.CurrentIns.Ins.InsCod,
- (unsigned) Role);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses per user",
+ "SELECT AVG(NumCrss) FROM "
+ "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
+ " FROM centres,degrees,courses,crs_usr"
+ " WHERE centres.InsCod=%ld"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=crs_usr.CrsCod"
+ " AND crs_usr.Role=%u"
+ " GROUP BY crs_usr.UsrCod) AS NumCrssTable",
+ Gbl.CurrentIns.Ins.InsCod,
+ (unsigned) Role);
break;
case Sco_SCOPE_CTR:
if (Role == Rol_UNK) // Any user
- DB_BuildQuery ("SELECT AVG(NumCrss) FROM "
- "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
- " FROM degrees,courses,crs_usr"
- " WHERE degrees.CtrCod=%ld"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=crs_usr.CrsCod"
- " GROUP BY crs_usr.UsrCod) AS NumCrssTable",
- Gbl.CurrentCtr.Ctr.CtrCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses per user",
+ "SELECT AVG(NumCrss) FROM "
+ "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
+ " FROM degrees,courses,crs_usr"
+ " WHERE degrees.CtrCod=%ld"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=crs_usr.CrsCod"
+ " GROUP BY crs_usr.UsrCod) AS NumCrssTable",
+ Gbl.CurrentCtr.Ctr.CtrCod);
else
- DB_BuildQuery ("SELECT AVG(NumCrss) FROM "
- "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
- " FROM degrees,courses,crs_usr"
- " WHERE degrees.CtrCod=%ld"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=crs_usr.CrsCod"
- " AND crs_usr.Role=%u"
- " GROUP BY crs_usr.UsrCod) AS NumCrssTable",
- Gbl.CurrentCtr.Ctr.CtrCod,
- (unsigned) Role);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses per user",
+ "SELECT AVG(NumCrss) FROM "
+ "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
+ " FROM degrees,courses,crs_usr"
+ " WHERE degrees.CtrCod=%ld"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=crs_usr.CrsCod"
+ " AND crs_usr.Role=%u"
+ " GROUP BY crs_usr.UsrCod) AS NumCrssTable",
+ Gbl.CurrentCtr.Ctr.CtrCod,
+ (unsigned) Role);
break;
case Sco_SCOPE_DEG:
if (Role == Rol_UNK) // Any user
- DB_BuildQuery ("SELECT AVG(NumCrss) FROM "
- "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
- " FROM courses,crs_usr"
- " WHERE courses.DegCod=%ld"
- " AND courses.CrsCod=crs_usr.CrsCod"
- " GROUP BY crs_usr.UsrCod) AS NumCrssTable",
- Gbl.CurrentDeg.Deg.DegCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses per user",
+ "SELECT AVG(NumCrss) FROM "
+ "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
+ " FROM courses,crs_usr"
+ " WHERE courses.DegCod=%ld"
+ " AND courses.CrsCod=crs_usr.CrsCod"
+ " GROUP BY crs_usr.UsrCod) AS NumCrssTable",
+ Gbl.CurrentDeg.Deg.DegCod);
else
- DB_BuildQuery ("SELECT AVG(NumCrss) FROM "
- "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
- " FROM courses,crs_usr"
- " WHERE courses.DegCod=%ld"
- " AND courses.CrsCod=crs_usr.CrsCod"
- " AND crs_usr.Role=%u"
- " GROUP BY crs_usr.UsrCod) AS NumCrssTable",
- Gbl.CurrentDeg.Deg.DegCod,
- (unsigned) Role);
+ DB_QuerySELECT (&mysql_res,"can not get number of courses per user",
+ "SELECT AVG(NumCrss) FROM "
+ "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
+ " FROM courses,crs_usr"
+ " WHERE courses.DegCod=%ld"
+ " AND courses.CrsCod=crs_usr.CrsCod"
+ " AND crs_usr.Role=%u"
+ " GROUP BY crs_usr.UsrCod) AS NumCrssTable",
+ Gbl.CurrentDeg.Deg.DegCod,
+ (unsigned) Role);
break;
case Sco_SCOPE_CRS:
return 1.0;
@@ -8721,7 +8820,6 @@ float Usr_GetNumCrssPerUsr (Rol_Role_t Role)
Lay_WrongScopeExit ();
break;
}
- DB_QuerySELECT_new (&mysql_res,"can not get number of courses per user");
/***** Get number of courses *****/
row = mysql_fetch_row (mysql_res);
@@ -8748,108 +8846,118 @@ float Usr_GetNumUsrsPerCrs (Rol_Role_t Role)
{
case Sco_SCOPE_SYS:
if (Role == Rol_UNK) // Any user
- DB_BuildQuery ("SELECT AVG(NumUsrs) FROM "
- "(SELECT COUNT(UsrCod) AS NumUsrs"
- " FROM crs_usr"
- " GROUP BY CrsCod) AS NumUsrsTable");
+ DB_QuerySELECT (&mysql_res,"can not get number of users per course",
+ "SELECT AVG(NumUsrs) FROM "
+ "(SELECT COUNT(UsrCod) AS NumUsrs"
+ " FROM crs_usr"
+ " GROUP BY CrsCod) AS NumUsrsTable");
else
- DB_BuildQuery ("SELECT AVG(NumUsrs) FROM "
- "(SELECT COUNT(UsrCod) AS NumUsrs"
- " FROM crs_usr"
- " WHERE Role=%u GROUP BY CrsCod) AS NumUsrsTable",
- (unsigned) Role);
+ DB_QuerySELECT (&mysql_res,"can not get number of users per course",
+ "SELECT AVG(NumUsrs) FROM "
+ "(SELECT COUNT(UsrCod) AS NumUsrs"
+ " FROM crs_usr"
+ " WHERE Role=%u GROUP BY CrsCod) AS NumUsrsTable",
+ (unsigned) Role);
break;
case Sco_SCOPE_CTY:
if (Role == Rol_UNK) // Any user
- DB_BuildQuery ("SELECT AVG(NumUsrs) FROM "
- "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
- " FROM institutions,centres,degrees,courses,crs_usr"
- " WHERE institutions.CtyCod=%ld"
- " AND institutions.InsCod=centres.InsCod"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=crs_usr.CrsCod"
- " GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
- Gbl.CurrentCty.Cty.CtyCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of users per course",
+ "SELECT AVG(NumUsrs) FROM "
+ "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
+ " FROM institutions,centres,degrees,courses,crs_usr"
+ " WHERE institutions.CtyCod=%ld"
+ " AND institutions.InsCod=centres.InsCod"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=crs_usr.CrsCod"
+ " GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
+ Gbl.CurrentCty.Cty.CtyCod);
else
- DB_BuildQuery ("SELECT AVG(NumUsrs) FROM "
- "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
- " FROM institutions,centres,degrees,courses,crs_usr"
- " WHERE institutions.CtyCod=%ld"
- " AND institutions.InsCod=centres.InsCod"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=crs_usr.CrsCod"
- " AND crs_usr.Role=%u"
- " GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
- Gbl.CurrentCty.Cty.CtyCod,
- (unsigned) Role);
+ DB_QuerySELECT (&mysql_res,"can not get number of users per course",
+ "SELECT AVG(NumUsrs) FROM "
+ "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
+ " FROM institutions,centres,degrees,courses,crs_usr"
+ " WHERE institutions.CtyCod=%ld"
+ " AND institutions.InsCod=centres.InsCod"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=crs_usr.CrsCod"
+ " AND crs_usr.Role=%u"
+ " GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
+ Gbl.CurrentCty.Cty.CtyCod,
+ (unsigned) Role);
break;
case Sco_SCOPE_INS:
if (Role == Rol_UNK) // Any user
- DB_BuildQuery ("SELECT AVG(NumUsrs) FROM "
- "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
- " FROM centres,degrees,courses,crs_usr"
- " WHERE centres.InsCod=%ld"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=crs_usr.CrsCod"
- " GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
- Gbl.CurrentIns.Ins.InsCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of users per course",
+ "SELECT AVG(NumUsrs) FROM "
+ "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
+ " FROM centres,degrees,courses,crs_usr"
+ " WHERE centres.InsCod=%ld"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=crs_usr.CrsCod"
+ " GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
+ Gbl.CurrentIns.Ins.InsCod);
else
- DB_BuildQuery ("SELECT AVG(NumUsrs) FROM "
- "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
- " FROM centres,degrees,courses,crs_usr"
- " WHERE centres.InsCod=%ld"
- " AND centres.CtrCod=degrees.CtrCod"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=crs_usr.CrsCod"
- " AND crs_usr.Role=%u"
- " GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
- Gbl.CurrentIns.Ins.InsCod,
- (unsigned) Role);
+ DB_QuerySELECT (&mysql_res,"can not get number of users per course",
+ "SELECT AVG(NumUsrs) FROM "
+ "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
+ " FROM centres,degrees,courses,crs_usr"
+ " WHERE centres.InsCod=%ld"
+ " AND centres.CtrCod=degrees.CtrCod"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=crs_usr.CrsCod"
+ " AND crs_usr.Role=%u"
+ " GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
+ Gbl.CurrentIns.Ins.InsCod,
+ (unsigned) Role);
break;
case Sco_SCOPE_CTR:
if (Role == Rol_UNK) // Any user
- DB_BuildQuery ("SELECT AVG(NumUsrs) FROM "
- "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
- " FROM degrees,courses,crs_usr"
- " WHERE degrees.CtrCod=%ld"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=crs_usr.CrsCod"
- " GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
- Gbl.CurrentCtr.Ctr.CtrCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of users per course",
+ "SELECT AVG(NumUsrs) FROM "
+ "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
+ " FROM degrees,courses,crs_usr"
+ " WHERE degrees.CtrCod=%ld"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=crs_usr.CrsCod"
+ " GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
+ Gbl.CurrentCtr.Ctr.CtrCod);
else
- DB_BuildQuery ("SELECT AVG(NumUsrs) FROM "
- "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
- " FROM degrees,courses,crs_usr"
- " WHERE degrees.CtrCod=%ld"
- " AND degrees.DegCod=courses.DegCod"
- " AND courses.CrsCod=crs_usr.CrsCod"
- " AND crs_usr.Role=%u"
- " GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
- Gbl.CurrentCtr.Ctr.CtrCod,
- (unsigned) Role);
+ DB_QuerySELECT (&mysql_res,"can not get number of users per course",
+ "SELECT AVG(NumUsrs) FROM "
+ "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
+ " FROM degrees,courses,crs_usr"
+ " WHERE degrees.CtrCod=%ld"
+ " AND degrees.DegCod=courses.DegCod"
+ " AND courses.CrsCod=crs_usr.CrsCod"
+ " AND crs_usr.Role=%u"
+ " GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
+ Gbl.CurrentCtr.Ctr.CtrCod,
+ (unsigned) Role);
break;
case Sco_SCOPE_DEG:
if (Role == Rol_UNK) // Any user
- DB_BuildQuery ("SELECT AVG(NumUsrs) FROM "
- "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
- " FROM courses,crs_usr"
- " WHERE courses.DegCod=%ld"
- " AND courses.CrsCod=crs_usr.CrsCod"
- " GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
- Gbl.CurrentDeg.Deg.DegCod);
+ DB_QuerySELECT (&mysql_res,"can not get number of users per course",
+ "SELECT AVG(NumUsrs) FROM "
+ "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
+ " FROM courses,crs_usr"
+ " WHERE courses.DegCod=%ld"
+ " AND courses.CrsCod=crs_usr.CrsCod"
+ " GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
+ Gbl.CurrentDeg.Deg.DegCod);
else
- DB_BuildQuery ("SELECT AVG(NumUsrs) FROM "
- "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
- " FROM courses,crs_usr"
- " WHERE courses.DegCod=%ld"
- " AND courses.CrsCod=crs_usr.CrsCod"
- " AND crs_usr.Role=%u"
- " GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
- Gbl.CurrentDeg.Deg.DegCod,
- (unsigned) Role);
+ DB_QuerySELECT (&mysql_res,"can not get number of users per course",
+ "SELECT AVG(NumUsrs) FROM "
+ "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
+ " FROM courses,crs_usr"
+ " WHERE courses.DegCod=%ld"
+ " AND courses.CrsCod=crs_usr.CrsCod"
+ " AND crs_usr.Role=%u"
+ " GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
+ Gbl.CurrentDeg.Deg.DegCod,
+ (unsigned) Role);
break;
case Sco_SCOPE_CRS:
switch (Role)
@@ -8871,7 +8979,6 @@ float Usr_GetNumUsrsPerCrs (Rol_Role_t Role)
Lay_WrongScopeExit ();
break;
}
- DB_QuerySELECT_new (&mysql_res,"can not get number of users per course");
/***** Get number of users *****/
row = mysql_fetch_row (mysql_res);