Version 20.44.4: Mar 06, 2021 Degrees database table renamed.

This commit is contained in:
acanas 2021-03-07 17:45:36 +01:00
parent 61b751c97d
commit c86e71dc3b
33 changed files with 4876 additions and 3862 deletions

View File

@ -260,9 +260,9 @@ CREATE TABLE IF NOT EXISTS countries (
INDEX(Name_pl),
INDEX(Name_pt));
--
-- Table courses: stores the courses/subjects
-- Table crs_courses: stores the courses/subjects
--
CREATE TABLE IF NOT EXISTS courses (
CREATE TABLE IF NOT EXISTS crs_courses (
CrsCod INT NOT NULL AUTO_INCREMENT,
DegCod INT NOT NULL DEFAULT -1,
Year TINYINT NOT NULL DEFAULT 0,

View File

@ -491,7 +491,7 @@ static int API_CheckCourseAndGroupCodes (struct soap *soap,
/***** Query if course code already exists in database *****/
if (DB_QueryCOUNT ("can not get course",
"SELECT COUNT(*) FROM courses"
"SELECT COUNT(*) FROM crs_courses"
" WHERE CrsCod=%ld",
CrsCod) != 1)
return soap_sender_fault (soap,
@ -589,7 +589,7 @@ static int API_GetCurrentDegCodFromCurrentCrsCod (void)
/***** Check that key does not exist in database *****/
if (DB_QuerySELECT (&mysql_res,"can not get the degree of a course",
"SELECT DegCod FROM courses WHERE CrsCod=%ld",
"SELECT DegCod FROM crs_courses WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod)) // Course found in table of courses
{
row = mysql_fetch_row (mysql_res);
@ -1361,14 +1361,15 @@ int swad__getCourses (struct soap *soap,
/***** Query my courses from database *****/
NumRows =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get user's courses",
"SELECT courses.CrsCod,"
"courses.ShortName,"
"courses.FullName,"
"SELECT crs_courses.CrsCod,"
"crs_courses.ShortName,"
"crs_courses.FullName,"
"crs_usr.Role"
" FROM crs_usr,courses"
" FROM crs_usr,"
"crs_courses"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.CrsCod=courses.CrsCod"
" ORDER BY courses.FullName",
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" ORDER BY crs_courses.FullName",
Gbl.Usrs.Me.UsrDat.UsrCod);
getCoursesOut->numCourses = (int) NumRows;
@ -4634,20 +4635,26 @@ int swad__getTrivialQuestion (struct soap *soap,
Str_SetDecimalPointToUS (); // To print the floating point as a dot
NumRows =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get test questions",
"SELECT DISTINCTROW tst_questions.QstCod,"
"tst_questions.AnsType,tst_questions.Shuffle,"
"tst_questions.Stem,tst_questions.Feedback,"
"SELECT DISTINCTROW "
"tst_questions.QstCod,"
"tst_questions.AnsType,"
"tst_questions.Shuffle,"
"tst_questions.Stem,"
"tst_questions.Feedback,"
"tst_questions.Score/tst_questions.NumHits AS S"
" FROM courses,tst_questions"
" WHERE courses.DegCod IN (%s)"
" AND courses.CrsCod=tst_questions.CrsCod"
" FROM crs_courses,"
"tst_questions"
" WHERE crs_courses.DegCod IN (%s)"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.AnsType='unique_choice'"
" AND tst_questions.NumHits>0"
" AND tst_questions.QstCod NOT IN"
" (SELECT tst_question_tags.QstCod"
" FROM courses,tst_tags,tst_question_tags"
" WHERE courses.DegCod IN (%s)"
" AND courses.CrsCod=tst_tags.CrsCod"
" FROM crs_courses,"
"tst_tags,"
"tst_question_tags"
" WHERE crs_courses.DegCod IN (%s)"
" AND crs_courses.CrsCod=tst_tags.CrsCod"
" AND tst_tags.TagHidden='Y'"
" AND tst_tags.TagCod=tst_question_tags.TagCod)"
" HAVING S>='%f' AND S<='%f'"
@ -6099,15 +6106,19 @@ int swad__getLastLocation (struct soap *soap,
if (DB_QueryCOUNT ("can not get session data",
"SELECT COUNT(*) FROM "
"(SELECT DISTINCT deg_degrees.CtrCod"
" FROM crs_usr,courses,deg_degrees"
" FROM crs_usr,"
"crs_courses,"
"deg_degrees"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod) AS C1," // centres of my courses
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod) AS C1," // centres of my courses
"(SELECT DISTINCT deg_degrees.CtrCod"
" FROM crs_usr,courses,deg_degrees"
" FROM crs_usr,"
"crs_courses,"
"deg_degrees"
" WHERE crs_usr.UsrCod=%d"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod) AS C2" // centres of user's courses
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod) AS C2" // centres of user's courses
" WHERE C1.CtrCod=C2.CtrCod",
Gbl.Usrs.Me.UsrDat.UsrCod,
userCode))

View File

@ -1865,46 +1865,60 @@ unsigned Agd_GetNumUsrsWithEvents (Hie_Lvl_Level_t Scope)
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of users with events",
"SELECT COUNT(DISTINCT agendas.UsrCod)"
" FROM institutions,centres,deg_degrees,courses,crs_usr,agendas"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"agendas"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.Status=0"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=agendas.UsrCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of users with events",
"SELECT COUNT(DISTINCT agendas.UsrCod)"
" FROM centres,deg_degrees,courses,crs_usr,agendas"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"agendas"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.Status=0"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=agendas.UsrCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of users with events",
"SELECT COUNT(DISTINCT agendas.UsrCod)"
" FROM deg_degrees,courses,crs_usr,agendas"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"agendas"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.Status=0"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=agendas.UsrCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of users with events",
"SELECT COUNT(DISTINCT agendas.UsrCod)"
" FROM courses,crs_usr,agendas"
" WHERE courses.DegCod=%ld"
" AND courses.Status=0"
" AND courses.CrsCod=crs_usr.CrsCod"
" FROM crs_courses,"
"crs_usr,"
"agendas"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=agendas.UsrCod",
Gbl.Hierarchy.Deg.DegCod);
break;
@ -1955,42 +1969,56 @@ unsigned Agd_GetNumEvents (Hie_Lvl_Level_t Scope)
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of events",
"SELECT COUNT(*)"
" FROM institutions,centres,deg_degrees,courses,crs_usr,agendas"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"agendas"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=agendas.UsrCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of events",
"SELECT COUNT(*)"
" FROM centres,deg_degrees,courses,crs_usr,agendas"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"agendas"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=agendas.UsrCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of events",
"SELECT COUNT(*)"
" FROM deg_degrees,courses,crs_usr,agendas"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"agendas"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=agendas.UsrCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of events",
"SELECT COUNT(*)"
" FROM courses,crs_usr,agendas"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod"
" FROM crs_courses,"
"crs_usr,"
"agendas"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=agendas.UsrCod",
Gbl.Hierarchy.Deg.DegCod);
break;

View File

@ -110,9 +110,9 @@ void Ann_ShowAllAnnouncements (void)
NumAnnouncements = (unsigned) DB_QuerySELECT (&mysql_res,"can not get announcements",
"SELECT AnnCod,Status,Roles,Subject,Content"
" FROM announcements"
" WHERE (Roles&%u)<>0 "
" WHERE (Roles&%u)<>0 " // All my roles in different courses
" ORDER BY AnnCod DESC",
(unsigned) Gbl.Usrs.Me.UsrDat.Roles.InCrss); // All my roles in different courses
(unsigned) Gbl.Usrs.Me.UsrDat.Roles.InCrss);
}
else // No user logged
{
@ -220,12 +220,12 @@ void Ann_ShowMyAnnouncementsNotMarkedAsSeen (void)
Rol_GetRolesInAllCrssIfNotYetGot (&Gbl.Usrs.Me.UsrDat);
NumAnnouncements = (unsigned) DB_QuerySELECT (&mysql_res,"can not get announcements",
"SELECT AnnCod,Subject,Content FROM announcements"
" WHERE Status=%u AND (Roles&%u)<>0 "
" WHERE Status=%u AND (Roles&%u)<>0 " // All my roles in different courses
" AND AnnCod NOT IN"
" (SELECT AnnCod FROM ann_seen WHERE UsrCod=%ld)"
" ORDER BY AnnCod DESC", // Newest first
(unsigned) Ann_ACTIVE_ANNOUNCEMENT,
(unsigned) Gbl.Usrs.Me.UsrDat.Roles.InCrss, // All my roles in different courses
(unsigned) Gbl.Usrs.Me.UsrDat.Roles.InCrss,
Gbl.Usrs.Me.UsrDat.UsrCod);
/***** Show the announcements *****/

View File

@ -1840,43 +1840,53 @@ unsigned Asg_GetNumCoursesWithAssignments (Hie_Lvl_Level_t Scope)
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of courses with assignments",
"SELECT COUNT(DISTINCT assignments.CrsCod)"
" FROM institutions,centres,deg_degrees,courses,assignments"
" FROM institutions,"
"centres,"
"deg_degrees,"
"courses,"
"assignments"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.Status=0"
" AND courses.CrsCod=assignments.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=assignments.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of courses with assignments",
"SELECT COUNT(DISTINCT assignments.CrsCod)"
" FROM centres,deg_degrees,courses,assignments"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"assignments"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.Status=0"
" AND courses.CrsCod=assignments.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=assignments.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of courses with assignments",
"SELECT COUNT(DISTINCT assignments.CrsCod)"
" FROM deg_degrees,courses,assignments"
" FROM deg_degrees,"
"crs_courses,"
"assignments"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.Status=0"
" AND courses.CrsCod=assignments.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=assignments.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of courses with assignments",
"SELECT COUNT(DISTINCT assignments.CrsCod)"
" FROM courses,assignments"
" WHERE courses.DegCod=%ld"
" AND courses.Status=0"
" AND courses.CrsCod=assignments.CrsCod",
" FROM crs_courses,"
"assignments"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=assignments.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
@ -1919,51 +1929,67 @@ unsigned Asg_GetNumAssignments (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
{
case Hie_Lvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of assignments",
"SELECT COUNT(*),SUM(NumNotif)"
"SELECT COUNT(*)," // row[0]
"SUM(NumNotif)" // row[1]
" FROM assignments"
" WHERE CrsCod>0");
break;
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of assignments",
"SELECT COUNT(*),SUM(assignments.NumNotif)"
" FROM institutions,centres,deg_degrees,courses,assignments"
"SELECT COUNT(*)," // row[0]
"SUM(assignments.NumNotif)" // row[1]
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"assignments"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=assignments.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=assignments.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of assignments",
"SELECT COUNT(*),SUM(assignments.NumNotif)"
" FROM centres,deg_degrees,courses,assignments"
"SELECT COUNT(*)," // row[0]
"SUM(assignments.NumNotif)" // row[1]
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"assignments"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=assignments.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=assignments.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of assignments",
"SELECT COUNT(*),SUM(assignments.NumNotif)"
" FROM deg_degrees,courses,assignments"
"SELECT COUNT(*),"
"SUM(assignments.NumNotif)"
" FROM deg_degrees,"
"crs_courses,"
"assignments"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=assignments.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=assignments.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of assignments",
"SELECT COUNT(*),SUM(assignments.NumNotif)"
" FROM courses,assignments"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=assignments.CrsCod",
"SELECT COUNT(*),"
"SUM(assignments.NumNotif)"
" FROM crs_courses,"
"assignments"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=assignments.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of assignments",
"SELECT COUNT(*),SUM(NumNotif)"
"SELECT COUNT(*),"
"SUM(NumNotif)"
" FROM assignments"
" WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod);

View File

@ -1706,31 +1706,37 @@ unsigned Att_GetNumCoursesWithAttEvents (Hie_Lvl_Level_t Scope)
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of courses with attendance events",
"SELECT COUNT(DISTINCT att_events.CrsCod)"
" FROM centres,deg_degrees,courses,att_events"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"att_events"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.Status=0"
" AND courses.CrsCod=att_events.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=att_events.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of courses with attendance events",
"SELECT COUNT(DISTINCT att_events.CrsCod)"
" FROM deg_degrees,courses,att_events"
" FROM deg_degrees,"
"crs_courses,"
"att_events"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.Status=0"
" AND courses.CrsCod=att_events.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=att_events.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of courses with attendance events",
"SELECT COUNT(DISTINCT att_events.CrsCod)"
" FROM courses,att_events"
" WHERE courses.DegCod=%ld"
" AND courses.Status=0"
" AND courses.CrsCod=att_events.CrsCod",
" FROM crs_courses,"
"att_events"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=att_events.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
@ -1779,34 +1785,44 @@ unsigned Att_GetNumAttEvents (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of attendance events",
"SELECT COUNT(*),SUM(att_events.NumNotif)"
" FROM centres,deg_degrees,courses,att_events"
"SELECT COUNT(*),"
"SUM(att_events.NumNotif)"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"att_events"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=att_events.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=att_events.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of attendance events",
"SELECT COUNT(*),SUM(att_events.NumNotif)"
" FROM deg_degrees,courses,att_events"
"SELECT COUNT(*),"
"SUM(att_events.NumNotif)"
" FROM deg_degrees,"
"crs_courses,"
"att_events"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=att_events.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=att_events.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of attendance events",
"SELECT COUNT(*),SUM(att_events.NumNotif)"
" FROM courses,att_events"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=att_events.CrsCod",
"SELECT COUNT(*),"
"SUM(att_events.NumNotif)"
" FROM crs_courses,"
"att_events"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=att_events.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of attendance events",
"SELECT COUNT(*),SUM(NumNotif)"
"SELECT COUNT(*),"
"SUM(NumNotif)"
" FROM att_events"
" WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod);

View File

@ -1944,8 +1944,8 @@ static unsigned Ctr_GetNumCtrsInCty (long CtyCod)
/***** 3. Slow: number of centres in a country from database *****/
Gbl.Cache.NumCtrsInCty.CtyCod = CtyCod;
Gbl.Cache.NumCtrsInCty.NumCtrs =
(unsigned) DB_QueryCOUNT ("can not get number of centres in a country",
Gbl.Cache.NumCtrsInCty.NumCtrs = (unsigned)
DB_QueryCOUNT ("can not get number of centres in a country",
"SELECT COUNT(*) FROM institutions,centres"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod",
@ -1990,8 +1990,8 @@ unsigned Ctr_GetNumCtrsInIns (long InsCod)
/***** 3. Slow: number of centres in an institution from database *****/
Gbl.Cache.NumCtrsInIns.InsCod = InsCod;
Gbl.Cache.NumCtrsInIns.NumCtrs =
(unsigned) DB_QueryCOUNT ("can not get number of centres in an institution",
Gbl.Cache.NumCtrsInIns.NumCtrs = (unsigned)
DB_QueryCOUNT ("can not get number of centres in an institution",
"SELECT COUNT(*) FROM centres"
" WHERE InsCod=%ld",
InsCod);
@ -2053,7 +2053,7 @@ unsigned Ctr_GetCachedNumCtrsWithMapInCty (long CtyCod)
/***** Get current number of centres with map from database and update cache *****/
/* Ccoordinates 0, 0 means not set ==> don't show map */
NumCtrsWithMap = (unsigned)
DB_QueryCOUNT ("ccan not get number of centres with map",
DB_QueryCOUNT ("can not get number of centres with map",
"SELECT COUNT(*) FROM institutions,centres"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
@ -2100,8 +2100,8 @@ unsigned Ctr_GetCachedNumCtrsWithMapInIns (long InsCod)
unsigned Ctr_GetNumCtrsInPlc (long PlcCod)
{
/***** Get number of centres (of the current institution) in a place *****/
return
(unsigned) DB_QueryCOUNT ("can not get the number of centres in a place",
return (unsigned)
DB_QueryCOUNT ("can not get the number of centres in a place",
"SELECT COUNT(*) FROM centres"
" WHERE InsCod=%ld AND PlcCod=%ld",
Gbl.Hierarchy.Ins.InsCod,PlcCod);
@ -2152,10 +2152,13 @@ unsigned Ctr_GetCachedNumCtrsWithCrss (const char *SubQuery,
NumCtrsWithCrss = (unsigned)
DB_QueryCOUNT ("can not get number of centres with courses",
"SELECT COUNT(DISTINCT centres.CtrCod)"
" FROM institutions,centres,deg_degrees,courses"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod",
" AND deg_degrees.DegCod=crs_courses.DegCod",
SubQuery);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS_WITH_CRSS,Scope,Cod,
FigCch_UNSIGNED,&NumCtrsWithCrss);
@ -2187,11 +2190,15 @@ unsigned Ctr_GetCachedNumCtrsWithUsrs (Rol_Role_t Role,const char *SubQuery,
NumCtrsWithUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of centres with users",
"SELECT COUNT(DISTINCT centres.CtrCod)"
" FROM institutions,centres,deg_degrees,courses,crs_usr"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u",
SubQuery,(unsigned) Role);
FigCch_UpdateFigureIntoCache (FigureCtrs[Role],Scope,Cod,

View File

@ -600,10 +600,14 @@ TODO: Salvador Romero Cort
TODO: FIX BUG, URGENT! En las fechas como parámetro Dat_WriteParamsIniEndDates(), por ejemplo al cambiar el color de la gráfica de accesos por día y hora, no se respeta la zona horaria.
*/
#define Log_PLATFORM_VERSION "SWAD 20.44.3 (2021-03-06)"
#define Log_PLATFORM_VERSION "SWAD 20.44.4 (2021-03-06)"
#define CSS_FILE "swad20.33.9.css"
#define JS_FILE "swad20.6.2.js"
/*
Version 20.44.4: Mar 06, 2021 Degrees database table renamed. (307021 lines)
1 change necessary in database:
RENAME TABLE courses TO crs_courses;
Version 20.44.3: Mar 06, 2021 Degrees database table renamed. (306004 lines)
1 change necessary in database:
RENAME TABLE degrees TO deg_degrees;

View File

@ -500,14 +500,21 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
DB_QuerySELECT (&mysql_res,"can not get number"
" of connected users"
" who belong to this location",
"SELECT COUNT(DISTINCT connected.UsrCod),"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" FROM institutions,centres,deg_degrees,courses,crs_usr,connected,usr_data"
"SELECT COUNT(DISTINCT connected.UsrCod)," // row[0]
"COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2]
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"connected,"
"usr_data"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=connected.UsrCod"
" AND connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Cty.CtyCod);
@ -516,13 +523,19 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
DB_QuerySELECT (&mysql_res,"can not get number"
" of connected users"
" who belong to this location",
"SELECT COUNT(DISTINCT connected.UsrCod),"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" FROM centres,deg_degrees,courses,crs_usr,connected,usr_data"
"SELECT COUNT(DISTINCT connected.UsrCod)," // row[0]
"COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2]
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"connected,"
"usr_data"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=connected.UsrCod"
" AND connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Ins.InsCod);
@ -531,12 +544,17 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
DB_QuerySELECT (&mysql_res,"can not get number"
" of connected users"
" who belong to this location",
"SELECT COUNT(DISTINCT connected.UsrCod),"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" FROM deg_degrees,courses,crs_usr,connected,usr_data"
"SELECT COUNT(DISTINCT connected.UsrCod)," // row[0]
"COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2]
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"connected,"
"usr_data"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=connected.UsrCod"
" AND connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Ctr.CtrCod);
@ -545,11 +563,15 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
DB_QuerySELECT (&mysql_res,"can not get number"
" of connected users"
" who belong to this location",
"SELECT COUNT(DISTINCT connected.UsrCod),"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" FROM courses,crs_usr,connected,usr_data"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod"
"SELECT COUNT(DISTINCT connected.UsrCod)," // row[0]
"COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2]
" FROM crs_courses,"
"crs_usr,"
"connected,"
"usr_data"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=connected.UsrCod"
" AND connected.UsrCod=usr_data.UsrCod",
Gbl.Hierarchy.Deg.DegCod);
@ -558,9 +580,12 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
DB_QuerySELECT (&mysql_res,"can not get number"
" of connected users"
" who belong to this location",
"SELECT COUNT(DISTINCT connected.UsrCod),"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" FROM crs_usr,connected,usr_data"
"SELECT COUNT(DISTINCT connected.UsrCod)," // row[0]
"COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2]
" FROM crs_usr,"
"connected,"
"usr_data"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=connected.UsrCod"
" AND connected.UsrCod=usr_data.UsrCod",
@ -575,9 +600,11 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
DB_QuerySELECT (&mysql_res,"can not get number"
" of connected users"
" who belong to this location",
"SELECT COUNT(DISTINCT connected.UsrCod),"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" FROM connected,usr_data"
"SELECT COUNT(DISTINCT connected.UsrCod)," // row[0]
"COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2]
" FROM connected,"
"usr_data"
" WHERE connected.UsrCod NOT IN (SELECT UsrCod FROM crs_usr)"
" AND connected.UsrCod=usr_data.UsrCod");
break;
@ -590,9 +617,12 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
DB_QuerySELECT (&mysql_res,"can not get number"
" of connected users"
" who belong to this location",
"SELECT COUNT(DISTINCT connected.UsrCod),"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" FROM connected,crs_usr,usr_data"
"SELECT COUNT(DISTINCT connected.UsrCod)," // row[0]
"COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2]
" FROM connected,"
"crs_usr,"
"usr_data"
" WHERE connected.UsrCod=crs_usr.UsrCod"
" AND crs_usr.Role=%u"
" AND connected.UsrCod=usr_data.UsrCod",
@ -602,14 +632,21 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
DB_QuerySELECT (&mysql_res,"can not get number"
" of connected users"
" who belong to this location",
"SELECT COUNT(DISTINCT connected.UsrCod),"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" FROM institutions,centres,deg_degrees,courses,crs_usr,connected,usr_data"
"SELECT COUNT(DISTINCT connected.UsrCod)," // row[0]
"COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2]
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"connected,"
"usr_data"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
" AND connected.UsrCod=usr_data.UsrCod",
@ -620,13 +657,19 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
DB_QuerySELECT (&mysql_res,"can not get number"
" of connected users"
" who belong to this location",
"SELECT COUNT(DISTINCT connected.UsrCod),"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" FROM centres,deg_degrees,courses,crs_usr,connected,usr_data"
"SELECT COUNT(DISTINCT connected.UsrCod)," // row[0]
"COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2]
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"connected,"
"usr_data"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
" AND connected.UsrCod=usr_data.UsrCod",
@ -637,12 +680,17 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
DB_QuerySELECT (&mysql_res,"can not get number"
" of connected users"
" who belong to this location",
"SELECT COUNT(DISTINCT connected.UsrCod),"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" FROM deg_degrees,courses,crs_usr,connected,usr_data"
"SELECT COUNT(DISTINCT connected.UsrCod)," // row[0]
"COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2]
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"connected,"
"usr_data"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
" AND connected.UsrCod=usr_data.UsrCod",
@ -653,11 +701,15 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
DB_QuerySELECT (&mysql_res,"can not get number"
" of connected users"
" who belong to this location",
"SELECT COUNT(DISTINCT connected.UsrCod),"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" FROM courses,crs_usr,connected,usr_data"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod"
"SELECT COUNT(DISTINCT connected.UsrCod)," // row[0]
"COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2]
" FROM crs_courses,"
"crs_usr,"
"connected,"
"usr_data"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
" AND connected.UsrCod=usr_data.UsrCod",
@ -668,9 +720,12 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
DB_QuerySELECT (&mysql_res,"can not get number"
" of connected users"
" who belong to this location",
"SELECT COUNT(DISTINCT connected.UsrCod),"
"COUNT(DISTINCT usr_data.Sex),MIN(usr_data.Sex)"
" FROM crs_usr,connected,usr_data"
"SELECT COUNT(DISTINCT connected.UsrCod)," // row[0]
"COUNT(DISTINCT usr_data.Sex)," // row[1]
"MIN(usr_data.Sex)" // row[2]
" FROM crs_usr,"
"connected,"
"usr_data"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
@ -899,10 +954,13 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
switch (Role)
{
case Rol_GST:
NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get list of connected users"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get list of connected users"
" who belong to this location",
"SELECT UsrCod,LastCrsCod,"
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(LastTime) AS Dif"
"SELECT UsrCod," // row[0]
"LastCrsCod," // row[1]
"UNIX_TIMESTAMP()-"
"UNIX_TIMESTAMP(LastTime) AS Dif" // row[2]
" FROM connected"
" WHERE UsrCod NOT IN (SELECT UsrCod FROM crs_usr)"
" ORDER BY Dif");
@ -913,27 +971,41 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS: // Show connected users in the whole platform
NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get list of connected users"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get list of connected users"
" who belong to this location",
"SELECT DISTINCTROW connected.UsrCod,connected.LastCrsCod,"
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif"
" FROM connected,crs_usr"
"SELECT DISTINCTROW "
"connected.UsrCod," // row[0]
"connected.LastCrsCod," // row[1]
"UNIX_TIMESTAMP()-"
"UNIX_TIMESTAMP(connected.LastTime) AS Dif" // row[2]
" FROM connected,"
"crs_usr"
" WHERE connected.UsrCod=crs_usr.UsrCod"
" AND crs_usr.Role=%u"
" ORDER BY Dif",
(unsigned) Role);
break;
case Hie_Lvl_CTY: // Show connected users in the current country
NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get list of connected users"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get list of connected users"
" who belong to this location",
"SELECT DISTINCTROW connected.UsrCod,connected.LastCrsCod,"
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif"
" FROM institutions,centres,deg_degrees,courses,crs_usr,connected"
"SELECT DISTINCTROW "
"connected.UsrCod," // row[0]
"connected.LastCrsCod," // row[1]
"UNIX_TIMESTAMP()-"
"UNIX_TIMESTAMP(connected.LastTime) AS Dif" // row[2]
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"connected"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
" ORDER BY Dif",
@ -941,15 +1013,23 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
(unsigned) Role);
break;
case Hie_Lvl_INS: // Show connected users in the current institution
NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get list of connected users"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get list of connected users"
" who belong to this location",
"SELECT DISTINCTROW connected.UsrCod,connected.LastCrsCod,"
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif"
" FROM centres,deg_degrees,courses,crs_usr,connected"
"SELECT DISTINCTROW "
"connected.UsrCod," // row[0]
"connected.LastCrsCod," // row[1]
"UNIX_TIMESTAMP()-"
"UNIX_TIMESTAMP(connected.LastTime) AS Dif" // row[2]
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"connected"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
" ORDER BY Dif",
@ -957,14 +1037,21 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
(unsigned) Role);
break;
case Hie_Lvl_CTR: // Show connected users in the current centre
NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get list of connected users"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get list of connected users"
" who belong to this location",
"SELECT DISTINCTROW connected.UsrCod,connected.LastCrsCod,"
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif"
" FROM deg_degrees,courses,crs_usr,connected"
"SELECT DISTINCTROW "
"connected.UsrCod," // row[0]
"connected.LastCrsCod," // row[1]
"UNIX_TIMESTAMP()-"
"UNIX_TIMESTAMP(connected.LastTime) AS Dif" // row[2]
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"connected"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
" ORDER BY Dif",
@ -972,13 +1059,19 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
(unsigned) Role);
break;
case Hie_Lvl_DEG: // Show connected users in the current degree
NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get list of connected users"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get list of connected users"
" who belong to this location",
"SELECT DISTINCTROW connected.UsrCod,connected.LastCrsCod,"
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif"
" FROM courses,crs_usr,connected"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod"
"SELECT DISTINCTROW "
"connected.UsrCod," // row[0]
"connected.LastCrsCod," // row[1]
"UNIX_TIMESTAMP()-"
"UNIX_TIMESTAMP(connected.LastTime) AS Dif" // row[2]
" FROM crs_courses,"
"crs_usr,"
"connected"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
" ORDER BY Dif",
@ -986,11 +1079,15 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
(unsigned) Role);
break;
case Hie_Lvl_CRS: // Show connected users in the current course
NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get list of connected users"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get list of connected users"
" who belong to this location",
"SELECT connected.UsrCod,connected.LastCrsCod,"
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif"
" FROM crs_usr,connected"
"SELECT connected.UsrCod," // row[0]
"connected.LastCrsCod," // row[1]
"UNIX_TIMESTAMP()-"
"UNIX_TIMESTAMP(connected.LastTime) AS Dif" // row[2]
" FROM crs_usr,"
"connected"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"

View File

@ -1986,11 +1986,15 @@ unsigned Cty_GetCachedNumCtysWithCrss (void)
NumCtysWithCrss = (unsigned)
DB_QueryCOUNT ("can not get number of countries with courses",
"SELECT COUNT(DISTINCT countries.CtyCod)"
" FROM countries,institutions,centres,deg_degrees,courses"
" FROM countries,"
"institutions,"
"centres,"
"deg_degrees,"
"crs_courses"
" WHERE countries.CtyCod=institutions.CtyCod"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod");
" AND deg_degrees.DegCod=crs_courses.DegCod");
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTYS_WITH_CRSS,Hie_Lvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtysWithCrss);
}
@ -2021,12 +2025,17 @@ unsigned Cty_GetCachedNumCtysWithUsrs (Rol_Role_t Role,const char *SubQuery,
NumCtysWithUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of countries with users",
"SELECT COUNT(DISTINCT countries.CtyCod)"
" FROM countries,institutions,centres,deg_degrees,courses,crs_usr"
" FROM countries,"
"institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr"
" WHERE %scountries.CtyCod=institutions.CtyCod"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u",
SubQuery,(unsigned) Role);
FigCch_UpdateFigureIntoCache (FigureCtys[Role],Scope,Cod,

View File

@ -415,7 +415,7 @@ unsigned Crs_GetCachedNumCrssInSys (void)
FigCch_UNSIGNED,&NumCrss))
{
/***** Get current number of courses from database and update cache *****/
NumCrss = (unsigned) DB_GetNumRowsTable ("courses");
NumCrss = (unsigned) DB_GetNumRowsTable ("crs_courses");
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,Hie_Lvl_SYS,-1L,
FigCch_UNSIGNED,&NumCrss);
}
@ -445,14 +445,17 @@ unsigned Crs_GetNumCrssInCty (long CtyCod)
/***** 3. Slow: number of courses in a country from database *****/
Gbl.Cache.NumCrssInCty.CtyCod = CtyCod;
Gbl.Cache.NumCrssInCty.NumCrss =
(unsigned) DB_QueryCOUNT ("can not get the number of courses in a country",
Gbl.Cache.NumCrssInCty.NumCrss = (unsigned)
DB_QueryCOUNT ("can not get the number of courses in a country",
"SELECT COUNT(*)"
" FROM institutions,centres,deg_degrees,courses"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod",
" AND deg_degrees.DegCod=crs_courses.DegCod",
CtyCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,Hie_Lvl_CTY,Gbl.Cache.NumCrssInCty.CtyCod,
FigCch_UNSIGNED,&Gbl.Cache.NumCrssInCty.NumCrss);
@ -494,13 +497,15 @@ unsigned Crs_GetNumCrssInIns (long InsCod)
/***** 3. Slow: number of courses in an institution from database *****/
Gbl.Cache.NumCrssInIns.InsCod = InsCod;
Gbl.Cache.NumCrssInIns.NumCrss =
(unsigned) DB_QueryCOUNT ("can not get the number of courses"
" in an institution",
"SELECT COUNT(*) FROM centres,deg_degrees,courses"
Gbl.Cache.NumCrssInIns.NumCrss = (unsigned)
DB_QueryCOUNT ("can not get the number of courses in an institution",
"SELECT COUNT(*)"
" FROM centres,"
"deg_degrees,"
"crs_courses"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod",
" AND deg_degrees.DegCod=crs_courses.DegCod",
InsCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,Hie_Lvl_INS,Gbl.Cache.NumCrssInIns.InsCod,
FigCch_UNSIGNED,&Gbl.Cache.NumCrssInIns.NumCrss);
@ -542,11 +547,13 @@ unsigned Crs_GetNumCrssInCtr (long CtrCod)
/***** 3. Slow: number of courses in a centre from database *****/
Gbl.Cache.NumCrssInCtr.CtrCod = CtrCod;
Gbl.Cache.NumCrssInCtr.NumCrss =
(unsigned) DB_QueryCOUNT ("can not get the number of courses in a centre",
"SELECT COUNT(*) FROM deg_degrees,courses"
Gbl.Cache.NumCrssInCtr.NumCrss = (unsigned)
DB_QueryCOUNT ("can not get the number of courses in a centre",
"SELECT COUNT(*)"
" FROM deg_degrees,"
"crs_courses"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod",
" AND deg_degrees.DegCod=crs_courses.DegCod",
CtrCod);
return Gbl.Cache.NumCrssInCtr.NumCrss;
}
@ -590,10 +597,9 @@ unsigned Crs_GetNumCrssInDeg (long DegCod)
/***** 3. Slow: number of courses in a degree from database *****/
Gbl.Cache.NumCrssInDeg.DegCod = DegCod;
Gbl.Cache.NumCrssInDeg.NumCrss =
(unsigned) DB_QueryCOUNT ("can not get the number of courses in a degree",
"SELECT COUNT(*) FROM courses"
" WHERE DegCod=%ld",
Gbl.Cache.NumCrssInDeg.NumCrss = (unsigned)
DB_QueryCOUNT ("can not get the number of courses in a degree",
"SELECT COUNT(*) FROM crs_courses WHERE DegCod=%ld",
DegCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,Hie_Lvl_DEG,Gbl.Cache.NumCrssInDeg.DegCod,
FigCch_UNSIGNED,&Gbl.Cache.NumCrssInDeg.NumCrss);
@ -635,12 +641,16 @@ unsigned Crs_GetCachedNumCrssWithUsrs (Rol_Role_t Role,const char *SubQuery,
/***** Get current number of courses with users from database and update cache *****/
NumCrssWithUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of courses with users",
"SELECT COUNT(DISTINCT courses.CrsCod)"
" FROM institutions,centres,deg_degrees,courses,crs_usr"
"SELECT COUNT(DISTINCT crs_courses.CrsCod)"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u",
SubQuery,(unsigned) Role);
FigCch_UpdateFigureIntoCache (FigureCrss[Role],Scope,Cod,
@ -678,9 +688,11 @@ void Crs_WriteSelectorOfCourse (void)
if (Gbl.Hierarchy.Deg.DegCod > 0)
{
/***** Get courses belonging to the current degree from database *****/
NumCrss = (unsigned) DB_QuerySELECT (&mysql_res,"can not get courses"
" of a degree",
"SELECT CrsCod,ShortName FROM courses"
NumCrss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get courses of a degree",
"SELECT CrsCod,"
"ShortName"
" FROM crs_courses"
" WHERE DegCod=%ld"
" ORDER BY ShortName",
Gbl.Hierarchy.Deg.DegCod);
@ -752,18 +764,34 @@ static void Crs_GetListCrssInCurrentDeg (Crs_WhatCourses_t WhatCourses)
switch (WhatCourses)
{
case Crs_ACTIVE_COURSES:
NumCrss = (unsigned) DB_QuerySELECT (&mysql_res,"can not get courses"
" of a degree",
"SELECT CrsCod,DegCod,Year,InsCrsCod,Status,RequesterUsrCod,ShortName,FullName"
" FROM courses WHERE DegCod=%ld AND Status=0"
NumCrss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get courses of a degree",
"SELECT CrsCod,"
"DegCod,"
"Year,"
"InsCrsCod,"
"Status,"
"RequesterUsrCod,"
"ShortName,"
"FullName"
" FROM crs_courses"
" WHERE DegCod=%ld AND Status=0"
" ORDER BY Year,ShortName",
Gbl.Hierarchy.Deg.DegCod);
break;
case Crs_ALL_COURSES_EXCEPT_REMOVED:
NumCrss = (unsigned) DB_QuerySELECT (&mysql_res,"can not get courses"
" of a degree",
"SELECT CrsCod,DegCod,Year,InsCrsCod,Status,RequesterUsrCod,ShortName,FullName"
" FROM courses WHERE DegCod=%ld AND (Status & %u)=0"
NumCrss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get courses of a degree",
"SELECT CrsCod,"
"DegCod,"
"Year,"
"InsCrsCod,"
"Status,"
"RequesterUsrCod,"
"ShortName,"
"FullName"
" FROM crs_courses"
" WHERE DegCod=%ld AND (Status & %u)=0"
" ORDER BY Year,ShortName",
Gbl.Hierarchy.Deg.DegCod,
(unsigned) Crs_STATUS_BIT_REMOVED);
@ -1679,7 +1707,7 @@ static void Crs_CreateCourse (unsigned Status)
/***** Insert new course into pending requests *****/
Crs_EditingCrs->CrsCod =
DB_QueryINSERTandReturnCode ("can not create a new course",
"INSERT INTO courses"
"INSERT INTO crs_courses"
" (DegCod,Year,InsCrsCod,Status,RequesterUsrCod,"
"ShortName,FullName)"
" VALUES"
@ -1767,7 +1795,8 @@ bool Crs_GetDataOfCourseByCod (struct Crs_Course *Crs)
"RequesterUsrCod," // row[5]
"ShortName," // row[6]
"FullName" // row[7]
" FROM courses WHERE CrsCod=%ld",
" FROM crs_courses"
" WHERE CrsCod=%ld",
Crs->CrsCod)) // Course found...
{
/***** Get data of the course *****/
@ -1833,10 +1862,12 @@ static void Crs_GetShortNamesByCod (long CrsCod,
{
/***** Get the short name of a degree from database *****/
if (DB_QuerySELECT (&mysql_res,"can not get the short name of a course",
"SELECT courses.ShortName,deg_degrees.ShortName"
" FROM courses,deg_degrees"
" WHERE courses.CrsCod=%ld"
" AND courses.DegCod=deg_degrees.DegCod",
"SELECT crs_courses.ShortName,"
"deg_degrees.ShortName"
" FROM crs_courses,"
"deg_degrees"
" WHERE crs_courses.CrsCod=%ld"
" AND crs_courses.DegCod=deg_degrees.DegCod",
CrsCod) == 1)
{
/***** Get the course short name and degree short name *****/
@ -1868,7 +1899,7 @@ void Crs_RemoveCourseCompletely (long CrsCod)
/***** Remove course from table of courses in database *****/
DB_QueryDELETE ("can not remove a course",
"DELETE FROM courses WHERE CrsCod=%ld",
"DELETE FROM crs_courses WHERE CrsCod=%ld",
CrsCod);
}
}
@ -2138,7 +2169,7 @@ void Crs_UpdateCrsYear (struct Crs_Course *Crs,unsigned NewYear)
{
/***** Update year/semester in table of courses *****/
DB_QueryUPDATE ("can not update the year of a course",
"UPDATE courses SET Year=%u WHERE CrsCod=%ld",
"UPDATE crs_courses SET Year=%u WHERE CrsCod=%ld",
NewYear,Crs->CrsCod);
/***** Copy course year/semester *****/
@ -2154,7 +2185,7 @@ void Crs_UpdateInstitutionalCrsCod (struct Crs_Course *Crs,const char *NewInstit
/***** Update institutional course code in table of courses *****/
DB_QueryUPDATE ("can not update the institutional code"
" of the current course",
"UPDATE courses SET InsCrsCod='%s' WHERE CrsCod=%ld",
"UPDATE crs_courses SET InsCrsCod='%s' WHERE CrsCod=%ld",
NewInstitutionalCrsCod,Crs->CrsCod);
/***** Copy institutional course code *****/
@ -2275,7 +2306,7 @@ bool Crs_CheckIfCrsNameExistsInYearOfDeg (const char *FieldName,const char *Name
/***** Get number of courses in a year of a degree and with a name from database *****/
return (DB_QueryCOUNT ("can not check if the name"
" of a course already existed",
"SELECT COUNT(*) FROM courses"
"SELECT COUNT(*) FROM crs_courses"
" WHERE DegCod=%ld AND Year=%u"
" AND %s='%s' AND CrsCod<>%ld",
DegCod,Year,FieldName,Name,CrsCod) != 0);
@ -2289,7 +2320,7 @@ static void Crs_UpdateCrsNameDB (long CrsCod,const char *FieldName,const char *N
{
/***** Update course changing old name by new name *****/
DB_QueryUPDATE ("can not update the name of a course",
"UPDATE courses SET %s='%s' WHERE CrsCod=%ld",
"UPDATE crs_courses SET %s='%s' WHERE CrsCod=%ld",
FieldName,NewCrsName,CrsCod);
}
@ -2326,7 +2357,7 @@ void Crs_ChangeCrsStatus (void)
/***** Update status in table of courses *****/
DB_QueryUPDATE ("can not update the status of a course",
"UPDATE courses SET Status=%u WHERE CrsCod=%ld",
"UPDATE crs_courses SET Status=%u WHERE CrsCod=%ld",
(unsigned) Status,Crs_EditingCrs->CrsCod);
Crs_EditingCrs->Status = Status;
@ -2571,21 +2602,27 @@ void Crs_GetAndWriteCrssOfAUsr (const struct UsrData *UsrDat,Rol_Role_t Role)
if (asprintf (&SubQuery," AND crs_usr.Role=%u",(unsigned) Role) < 0)
Lay_NotEnoughMemoryExit ();
}
NumCrss = (unsigned) DB_QuerySELECT (&mysql_res,"can not get courses of a user",
NumCrss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get courses of a user",
"SELECT deg_degrees.DegCod," // row[0]
"courses.CrsCod," // row[1]
"crs_courses.CrsCod," // row[1]
"deg_degrees.ShortName," // row[2]
"deg_degrees.FullName," // row[3]
"courses.Year," // row[4]
"courses.FullName," // row[5]
"crs_courses.Year," // row[4]
"crs_courses.FullName," // row[5]
"centres.ShortName," // row[6]
"crs_usr.Accepted" // row[7]
" FROM crs_usr,courses,deg_degrees,centres"
" FROM crs_usr,"
"crs_courses,"
"deg_degrees,"
"centres"
" WHERE crs_usr.UsrCod=%ld%s"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" ORDER BY deg_degrees.FullName,courses.Year,courses.FullName",
" ORDER BY deg_degrees.FullName,"
"crs_courses.Year,"
"crs_courses.FullName",
UsrDat->UsrCod,SubQuery);
/***** Free allocated memory for subquery *****/
@ -2726,11 +2763,11 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
static unsigned RowEvenOdd = 1;
/*
SELECT deg_degrees.DegCod row[0]
courses.CrsCod row[1]
crs_courses.CrsCod row[1]
deg_degrees.ShortName row[2]
deg_degrees.FullName row[3]
courses.Year row[4]
courses.FullName row[5]
crs_courses.Year row[4]
crs_courses.FullName row[5]
centres.ShortName row[6]
crs_usr.Accepted row[7] (only if WriteColumnAccepted == true)
*/
@ -2939,8 +2976,9 @@ void Crs_RemoveOldCrss (void)
/***** Get old courses from database *****/
NumCrss = DB_QuerySELECT (&mysql_res,"can not get old courses",
"SELECT CrsCod FROM crs_last WHERE"
" LastTime<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)"
"SELECT CrsCod"
" FROM crs_last"
" WHERE LastTime<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)"
" AND CrsCod NOT IN (SELECT DISTINCT CrsCod FROM crs_usr)",
SecondsWithoutAccess);
if (NumCrss)

View File

@ -521,7 +521,7 @@ static void CrsCfg_UpdateCrsDegDB (long CrsCod,long DegCod)
{
/***** Update degree in table of courses *****/
DB_QueryUPDATE ("can not move course to another degree",
"UPDATE courses SET DegCod=%ld WHERE CrsCod=%ld",
"UPDATE crs_courses SET DegCod=%ld WHERE CrsCod=%ld",
DegCod,CrsCod);
}

View File

@ -604,9 +604,9 @@ mysql> DESCRIBE countries;
"INDEX(Name_pl),"
"INDEX(Name_pt))"); // ISO 3166-1 country codes
/***** Table courses *****/
/***** Table crs_courses *****/
/*
mysql> DESCRIBE courses;
mysql> DESCRIBE crs_courses;
+-----------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+----------------+
@ -622,7 +622,7 @@ mysql> DESCRIBE courses;
+-----------------+---------------+------+-----+---------+----------------+
9 rows in set (0,00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS courses ("
DB_CreateTable ("CREATE TABLE IF NOT EXISTS crs_courses ("
"CrsCod INT NOT NULL AUTO_INCREMENT,"
"DegCod INT NOT NULL DEFAULT -1,"
"Year TINYINT NOT NULL DEFAULT 0,"

View File

@ -127,29 +127,34 @@ void Deg_SeeDegWithPendingCrss (void)
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_DEG_ADM:
NumDegs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get degrees"
" with pending courses",
"SELECT courses.DegCod,COUNT(*)"
" FROM usr_admins,courses,deg_degrees"
NumDegs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get degrees with pending courses",
"SELECT crs_courses.DegCod,"
"COUNT(*)"
" FROM usr_admins,"
"crs_courses,"
"deg_degrees"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=courses.DegCod"
" AND (courses.Status & %u)<>0"
" AND courses.DegCod=deg_degrees.DegCod"
" GROUP BY courses.DegCod"
" AND usr_admins.Cod=crs_courses.DegCod"
" AND (crs_courses.Status & %u)<>0"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" GROUP BY crs_courses.DegCod"
" ORDER BY deg_degrees.ShortName",
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_DEG),
(unsigned) Crs_STATUS_BIT_PENDING);
break;
case Rol_SYS_ADM:
NumDegs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get degrees"
" with pending courses",
"SELECT courses.DegCod,COUNT(*)"
" FROM courses,deg_degrees"
" WHERE (courses.Status & %u)<>0"
" AND courses.DegCod=deg_degrees.DegCod"
" GROUP BY courses.DegCod"
NumDegs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get degrees with pending courses",
"SELECT crs_courses.DegCod,"
"COUNT(*)"
" FROM crs_courses,"
"deg_degrees"
" WHERE (crs_courses.Status & %u)<>0"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" GROUP BY crs_courses.DegCod"
" ORDER BY deg_degrees.ShortName",
(unsigned) Crs_STATUS_BIT_PENDING);
break;
@ -1068,8 +1073,8 @@ void Deg_GetListAllDegsWithStds (struct ListDegrees *Degs)
unsigned NumDeg;
/***** Get degrees admin by me from database *****/
Degs->Num = (unsigned) DB_QuerySELECT (&mysql_res,"can not get degrees"
" admin by you",
Degs->Num = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get degrees admin by you",
"SELECT DISTINCTROW "
"deg_degrees.DegCod," // row[0]
"deg_degrees.CtrCod," // row[1]
@ -1079,9 +1084,11 @@ void Deg_GetListAllDegsWithStds (struct ListDegrees *Degs)
"deg_degrees.ShortName," // row[5]
"deg_degrees.FullName," // row[6]
"deg_degrees.WWW" // row[7]
" FROM deg_degrees,courses,crs_usr"
" WHERE deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr"
" WHERE deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" ORDER BY deg_degrees.ShortName",
(unsigned) Rol_STD);
@ -1518,7 +1525,8 @@ void Deg_RemoveDegreeCompletely (long DegCod)
/***** Get courses of a degree from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get courses of a degree",
"SELECT CrsCod FROM courses"
"SELECT CrsCod"
" FROM crs_courses"
" WHERE DegCod=%ld",
DegCod);
@ -2078,10 +2086,13 @@ unsigned Deg_GetCachedNumDegsWithCrss (const char *SubQuery,
NumDegsWithCrss = (unsigned)
DB_QueryCOUNT ("can not get number of degrees with courses",
"SELECT COUNT(DISTINCT deg_degrees.DegCod)"
" FROM institutions,centres,deg_degrees,courses"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod",
" AND deg_degrees.DegCod=crs_courses.DegCod",
SubQuery);
FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS_WITH_CRSS,Scope,Cod,
FigCch_UNSIGNED,&NumDegsWithCrss);
@ -2113,11 +2124,15 @@ unsigned Deg_GetCachedNumDegsWithUsrs (Rol_Role_t Role,const char *SubQuery,
NumDegsWithUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of degrees with users",
"SELECT COUNT(DISTINCT deg_degrees.DegCod)"
" FROM institutions,centres,deg_degrees,courses,crs_usr"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u",
SubQuery,(unsigned) Role);
FigCch_UpdateFigureIntoCache (FigureDegs[Role],Scope,Cod,

View File

@ -2329,14 +2329,15 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
{
case Rol_TCH:
// Requests in all courses in which I am teacher
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM crs_usr,crs_usr_requests"
" FROM crs_usr,"
"crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=crs_usr_requests.CrsCod"
@ -2348,18 +2349,20 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
break;
case Rol_DEG_ADM:
// Requests in all degrees administrated by me
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM usr_admins,courses,crs_usr_requests"
" FROM usr_admins,"
"crs_courses,"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=courses.DegCod"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" AND usr_admins.Cod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_DEG),
@ -2367,19 +2370,22 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
break;
case Rol_CTR_ADM:
// Requests in all centres administrated by me
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM usr_admins,deg_degrees,courses,crs_usr_requests"
" FROM usr_admins,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_CTR),
@ -2387,20 +2393,24 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
break;
case Rol_INS_ADM:
// Requests in all institutions administrated by me
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM usr_admins,centres,deg_degrees,courses,crs_usr_requests"
" FROM usr_admins,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_INS),
@ -2408,8 +2418,8 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
break;
case Rol_SYS_ADM:
// All requests
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT ReqCod,"
"CrsCod,"
"UsrCod,"
@ -2430,22 +2440,27 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
{
case Rol_TCH:
// Requests in courses of this country in which I am teacher
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM crs_usr,institutions,centres,deg_degrees,courses,crs_usr_requests"
" FROM crs_usr,"
"institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=%ld"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
@ -2455,91 +2470,114 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
break;
case Rol_DEG_ADM:
// Requests in degrees of this country administrated by me
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM usr_admins,institutions,centres,deg_degrees,courses,crs_usr_requests"
" FROM usr_admins,"
"institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_DEG),
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_DEG),
Gbl.Hierarchy.Cty.CtyCod,
RolesSelected);
break;
case Rol_CTR_ADM:
// Requests in centres of this country administrated by me
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM usr_admins,institutions,centres,deg_degrees,courses,crs_usr_requests"
" FROM usr_admins,"
"institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_CTR),
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_CTR),
Gbl.Hierarchy.Cty.CtyCod,
RolesSelected);
break;
case Rol_INS_ADM:
// Requests in institutions of this country administrated by me
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM usr_admins,institutions,centres,deg_degrees,courses,crs_usr_requests"
" FROM usr_admins,"
"institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=institutions.InsCod"
" AND institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_INS),
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_INS),
Gbl.Hierarchy.Cty.CtyCod,
RolesSelected);
break;
case Rol_SYS_ADM:
// Requests in any course of this country
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM institutions,centres,deg_degrees,courses,crs_usr_requests"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Hierarchy.Cty.CtyCod,
@ -2555,21 +2593,25 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
{
case Rol_TCH:
// Requests in courses of this institution in which I am teacher
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM crs_usr,centres,deg_degrees,courses,crs_usr_requests"
" FROM crs_usr,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=%ld"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
@ -2579,44 +2621,53 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
break;
case Rol_DEG_ADM:
// Requests in degrees of this institution administrated by me
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM usr_admins,centres,deg_degrees,courses,crs_usr_requests"
" FROM usr_admins,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_DEG),
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_DEG),
Gbl.Hierarchy.Ins.InsCod,
RolesSelected);
break;
case Rol_CTR_ADM:
// Requests in centres of this institution administrated by me
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM usr_admins,centres,deg_degrees,courses,crs_usr_requests"
" FROM usr_admins,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=centres.CtrCod"
" AND centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_CTR),
@ -2626,18 +2677,21 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
case Rol_INS_ADM: // If I am logged as admin of this institution, I can view all the requesters from this institution
case Rol_SYS_ADM:
// Requests in any course of this institution
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM centres,deg_degrees,courses,crs_usr_requests"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Hierarchy.Ins.InsCod,
@ -2653,20 +2707,23 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
{
case Rol_TCH:
// Requests in courses of this centre in which I am teacher
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM crs_usr,deg_degrees,courses,crs_usr_requests"
" FROM crs_usr,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
@ -2676,23 +2733,27 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
break;
case Rol_DEG_ADM:
// Requests in degrees of this centre administrated by me
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM usr_admins,deg_degrees,courses,crs_usr_requests"
" FROM usr_admins,"
"deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_DEG),
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_DEG),
Gbl.Hierarchy.Ctr.CtrCod,
RolesSelected);
break;
@ -2700,17 +2761,19 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
case Rol_INS_ADM: // If I am logged as admin of this institution, I can view all the requesters from this centre
case Rol_SYS_ADM:
// Request in any course of this centre
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM deg_degrees,courses,crs_usr_requests"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr_requests"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Hierarchy.Ctr.CtrCod,
@ -2726,19 +2789,21 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
{
case Rol_TCH:
// Requests in courses of this degree in which I am teacher
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM crs_usr,courses,crs_usr_requests"
" FROM crs_usr,"
"crs_courses,"
"crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
@ -2751,16 +2816,17 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
case Rol_INS_ADM: // If I am logged as admin of this institution, I can view all the requesters from this degree
case Rol_SYS_ADM:
// Requests in any course of this degree
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT crs_usr_requests.ReqCod,"
"crs_usr_requests.CrsCod,"
"crs_usr_requests.UsrCod,"
"crs_usr_requests.Role,"
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
" FROM courses,crs_usr_requests"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr_requests.CrsCod"
" FROM crs_courses,"
"crs_usr_requests"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Hierarchy.Deg.DegCod,
@ -2780,9 +2846,12 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
case Rol_INS_ADM: // If I am logged as admin of this institution, I can view all the requesters from this course
case Rol_SYS_ADM:
// Requests in this course
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
"SELECT ReqCod,CrsCod,UsrCod,Role,"
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT ReqCod,"
"CrsCod,"
"UsrCod,"
"Role,"
"UNIX_TIMESTAMP(RequestTime)"
" FROM crs_usr_requests"
" WHERE CrsCod=%ld"

View File

@ -1897,39 +1897,49 @@ unsigned Exa_GetNumCoursesWithExams (Hie_Lvl_Level_t Scope)
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of courses with exams",
"SELECT COUNT(DISTINCT exa_exams.CrsCod)"
" FROM institutions,centres,deg_degrees,courses,exa_exams"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"exa_exams"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=exa_exams.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=exa_exams.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of courses with exams",
"SELECT COUNT(DISTINCT exa_exams.CrsCod)"
" FROM centres,deg_degrees,courses,exa_exams"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"exa_exams"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=exa_exams.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=exa_exams.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of courses with exams",
"SELECT COUNT(DISTINCT exa_exams.CrsCod)"
" FROM deg_degrees,courses,exa_exams"
" FROM deg_degrees,"
"crs_courses,"
"exa_exams"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=exa_exams.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=exa_exams.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of courses with exams",
"SELECT COUNT(DISTINCT exa_exams.CrsCod)"
" FROM courses,exa_exams"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=exa_exams.CrsCod",
" FROM crs_courses,"
"exa_exams"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=exa_exams.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
@ -1977,39 +1987,49 @@ unsigned Exa_GetNumExams (Hie_Lvl_Level_t Scope)
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of exams",
"SELECT COUNT(*)"
" FROM institutions,centres,deg_degrees,courses,exa_exams"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"exa_exams"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=exa_exams.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=exa_exams.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of exams",
"SELECT COUNT(*)"
" FROM centres,deg_degrees,courses,exa_exams"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"exa_exams"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=exa_exams.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=exa_exams.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of exams",
"SELECT COUNT(*)"
" FROM deg_degrees,courses,exa_exams"
" FROM deg_degrees,"
"crs_courses,"
"exa_exams"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=exa_exams.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=exa_exams.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of exams",
"SELECT COUNT(*)"
" FROM courses,exa_exams"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=exa_exams.CrsCod",
" FROM crs_courses,"
"exa_exams"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=exa_exams.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
@ -2060,12 +2080,17 @@ double Exa_GetNumQstsPerCrsExam (Hie_Lvl_Level_t Scope)
DB_QuerySELECT (&mysql_res,"can not get number of questions per exam",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(exa_set_questions.QstCod) AS NumQsts"
" FROM institutions,centres,deg_degrees,courses,exa_exams,exa_set_questions"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"exa_exams,"
"exa_set_questions"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=exa_exams.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=exa_exams.CrsCod"
" AND exa_exams.ExaCod=exa_set_questions.ExaCod"
" GROUP BY exa_set_questions.ExaCod) AS NumQstsTable",
Gbl.Hierarchy.Cty.CtyCod);
@ -2074,11 +2099,15 @@ double Exa_GetNumQstsPerCrsExam (Hie_Lvl_Level_t Scope)
DB_QuerySELECT (&mysql_res,"can not get number of questions per exam",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(exa_set_questions.QstCod) AS NumQsts"
" FROM centres,deg_degrees,courses,exa_exams,exa_set_questions"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"exa_exams,"
"exa_set_questions"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=exa_exams.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=exa_exams.CrsCod"
" AND exa_exams.ExaCod=exa_set_questions.ExaCod"
" GROUP BY exa_set_questions.ExaCod) AS NumQstsTable",
Gbl.Hierarchy.Ins.InsCod);
@ -2087,10 +2116,13 @@ double Exa_GetNumQstsPerCrsExam (Hie_Lvl_Level_t Scope)
DB_QuerySELECT (&mysql_res,"can not get number of questions per exam",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(exa_set_questions.QstCod) AS NumQsts"
" FROM deg_degrees,courses,exa_exams,exa_set_questions"
" FROM deg_degrees,"
"crs_courses,"
"exa_exams,"
"exa_set_questions"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=exa_exams.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=exa_exams.CrsCod"
" AND exa_exams.ExaCod=exa_set_questions.ExaCod"
" GROUP BY exa_set_questions.ExaCod) AS NumQstsTable",
Gbl.Hierarchy.Ctr.CtrCod);
@ -2099,9 +2131,11 @@ double Exa_GetNumQstsPerCrsExam (Hie_Lvl_Level_t Scope)
DB_QuerySELECT (&mysql_res,"can not get number of questions per exam",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(exa_set_questions.QstCod) AS NumQsts"
" FROM courses,exa_exams,exa_set_questions"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=exa_exams.CrsCod"
" FROM crs_courses,"
"exa_exams,"
"exa_set_questions"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=exa_exams.CrsCod"
" AND exa_exams.ExaCod=exa_set_questions.ExaCod"
" GROUP BY exa_set_questions.ExaCod) AS NumQstsTable",
Gbl.Hierarchy.Deg.DegCod);
@ -2110,7 +2144,8 @@ double Exa_GetNumQstsPerCrsExam (Hie_Lvl_Level_t Scope)
DB_QuerySELECT (&mysql_res,"can not get number of questions per exam",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(exa_set_questions.QstCod) AS NumQsts"
" FROM exa_exams,exa_set_questions"
" FROM exa_exams,"
"exa_set_questions"
" WHERE exa_exams.Cod=%ld"
" AND exa_exams.ExaCod=exa_set_questions.ExaCod"
" GROUP BY exa_set_questions.ExaCod) AS NumQstsTable",

File diff suppressed because it is too large Load Diff

View File

@ -1365,76 +1365,109 @@ void Fol_GetAndShowRankingFollowers (void)
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT FollowedCod,COUNT(FollowerCod) AS N"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT FollowedCod,"
"COUNT(FollowerCod) AS N"
" FROM usr_follow"
" GROUP BY FollowedCod"
" ORDER BY N DESC,FollowedCod LIMIT 100");
" ORDER BY N DESC,"
"FollowedCod"
" LIMIT 100");
break;
case Hie_Lvl_CTY:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod,COUNT(DISTINCT usr_follow.FollowerCod) AS N"
" FROM institutions,centres,deg_degrees,courses,crs_usr,usr_follow"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod,"
"COUNT(DISTINCT usr_follow.FollowerCod) AS N"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_follow"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC,usr_follow.FollowedCod LIMIT 100",
" ORDER BY N DESC,"
"usr_follow.FollowedCod"
" LIMIT 100",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod,COUNT(DISTINCT usr_follow.FollowerCod) AS N"
" FROM centres,deg_degrees,courses,crs_usr,usr_follow"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod,"
"COUNT(DISTINCT usr_follow.FollowerCod) AS N"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_follow"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC,usr_follow.FollowedCod LIMIT 100",
" ORDER BY N DESC,"
"usr_follow.FollowedCod"
" LIMIT 100",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod,COUNT(DISTINCT usr_follow.FollowerCod) AS N"
" FROM deg_degrees,courses,crs_usr,usr_follow"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod,"
"COUNT(DISTINCT usr_follow.FollowerCod) AS N"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_follow"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC,usr_follow.FollowedCod LIMIT 100",
" ORDER BY N DESC,"
"usr_follow.FollowedCod"
" LIMIT 100",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod,COUNT(DISTINCT usr_follow.FollowerCod) AS N"
" FROM courses,crs_usr,usr_follow"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod,"
"COUNT(DISTINCT usr_follow.FollowerCod) AS N"
" FROM crs_courses,"
"crs_usr,"
"usr_follow"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC,usr_follow.FollowedCod LIMIT 100",
" ORDER BY N DESC,"
"usr_follow.FollowedCod"
" LIMIT 100",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod,COUNT(DISTINCT usr_follow.FollowerCod) AS N"
" FROM crs_usr,usr_follow"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT usr_follow.FollowedCod,"
"COUNT(DISTINCT usr_follow.FollowerCod) AS N"
" FROM crs_usr,"
"usr_follow"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC,usr_follow.FollowedCod LIMIT 100",
" ORDER BY N DESC,"
"usr_follow.FollowedCod"
" LIMIT 100",
Gbl.Hierarchy.Crs.CrsCod);
break;
default:

View File

@ -2605,10 +2605,6 @@ static void For_PutAllHiddenParamsNewThread (void *Forums)
unsigned For_GetNumTotalForumsOfType (For_ForumType_t ForumType,
long CtyCod,long InsCod,long CtrCod,long DegCod,long CrsCod)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumForums;
/***** Get number of forums of a type from database *****/
switch (ForumType)
{
@ -2619,173 +2615,223 @@ unsigned For_GetNumTotalForumsOfType (For_ForumType_t ForumType,
return 1; // Only one forum
case For_FORUM_INSTIT_USRS:
case For_FORUM_INSTIT_TCHS:
if (InsCod > 0) // InsCod > 0 ==> 0 <= number of institutions forums for an institution <= 1
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
if (InsCod > 0)
// InsCod > 0 ==> 0 <= number of institutions forums for an institution <= 1
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT Location)"
" FROM forum_thread"
" WHERE ForumType=%u"
" AND Location=%ld",
(unsigned) ForumType,InsCod);
else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of institution forums for a country
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
if (CtyCod > 0)
// InsCod <= 0 && CtyCod > 0 ==> Number of institution forums for a country
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT forum_thread.Location)"
" FROM forum_thread,institutions"
" FROM forum_thread,"
"institutions"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=institutions.InsCod"
" AND institutions.CtyCod=%ld",
(unsigned) ForumType,CtyCod);
else // CtyCod <= 0 ==> Number of institutions forums for the whole platform
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
// CtyCod <= 0 ==> Number of institutions forums for the whole platform
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT Location)"
" FROM forum_thread"
" WHERE ForumType=%u",
(unsigned) ForumType);
break;
case For_FORUM_CENTRE_USRS:
case For_FORUM_CENTRE_TCHS:
if (CtrCod > 0) // CtrCod > 0 ==> 0 <= number of centre forums for a centre <= 1
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
if (CtrCod > 0)
// CtrCod > 0 ==> 0 <= number of centre forums for a centre <= 1
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT Location)"
" FROM forum_thread"
" WHERE ForumType=%u"
" AND Location=%ld",
(unsigned) ForumType,CtrCod);
else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of centre forums for an institution
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
if (InsCod > 0)
// CtrCod <= 0 && InsCod > 0 ==> Number of centre forums for an institution
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT forum_thread.Location)"
" FROM forum_thread,centres"
" FROM forum_thread,"
"centres"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=centres.CtrCod"
" AND centres.InsCod=%ld",
(unsigned) ForumType,InsCod);
else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of centre forums for a country
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
if (CtyCod > 0)
// InsCod <= 0 && CtyCod > 0 ==> Number of centre forums for a country
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT forum_thread.Location)"
" FROM forum_thread,centres,institutions"
" FROM forum_thread,"
"centres,"
"institutions"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=%ld",
(unsigned) ForumType,CtyCod);
else // InsCod <= 0 ==> Number of centre forums for the whole platform
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
// InsCod <= 0 ==> Number of centre forums for the whole platform
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT Location)"
" FROM forum_thread"
" WHERE ForumType=%u",
(unsigned) ForumType);
break;
case For_FORUM_DEGREE_USRS:
case For_FORUM_DEGREE_TCHS:
if (DegCod > 0) // DegCod > 0 ==> 0 <= number of degree forums for a degree <= 1
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
if (DegCod > 0)
// DegCod > 0 ==> 0 <= number of degree forums for a degree <= 1
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT Location)"
" FROM forum_thread"
" WHERE ForumType=%u"
" AND Location=%ld",
(unsigned) ForumType,DegCod);
else if (CtrCod > 0) // DegCod <= 0 && CtrCod > 0 ==> Number of degree forums for a centre
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
if (CtrCod > 0)
// DegCod <= 0 && CtrCod > 0 ==> Number of degree forums for a centre
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT forum_thread.Location)"
" FROM forum_thread,deg_degrees"
" FROM forum_thread,"
"deg_degrees"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld",
(unsigned) ForumType,CtrCod);
else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of degree forums for an institution
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
if (InsCod > 0)
// CtrCod <= 0 && InsCod > 0 ==> Number of degree forums for an institution
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT forum_thread.Location)"
" FROM forum_thread,deg_degrees,centres"
" FROM forum_thread,"
"deg_degrees,"
"centres"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=%ld",
(unsigned) ForumType,InsCod);
else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of degree forums for a country
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
if (CtyCod > 0)
// InsCod <= 0 && CtyCod > 0 ==> Number of degree forums for a country
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT forum_thread.Location)"
" FROM forum_thread,deg_degrees,centres,institutions"
" FROM forum_thread,"
"deg_degrees,"
"centres,"
"institutions"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=%ld",
(unsigned) ForumType,CtyCod);
else // InsCod <= 0 ==> Number of degree forums for the whole platform
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
// InsCod <= 0 ==> Number of degree forums for the whole platform
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT Location)"
" FROM forum_thread"
" WHERE ForumType=%u",
(unsigned) ForumType);
break;
case For_FORUM_COURSE_USRS:
case For_FORUM_COURSE_TCHS:
if (CrsCod > 0) // CrsCod > 0 ==> 0 <= number of course forums for a course <= 1
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
if (CrsCod > 0)
// CrsCod > 0 ==> 0 <= number of course forums for a course <= 1
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT Location)"
" FROM forum_thread"
" WHERE ForumType=%u"
" AND Location=%ld",
(unsigned) ForumType,CrsCod);
else if (DegCod > 0) // CrsCod <= 0 && DegCod > 0 ==> Number of course forums for a degree
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
if (DegCod > 0)
// CrsCod <= 0 && DegCod > 0 ==> Number of course forums for a degree
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT forum_thread.Location)"
" FROM forum_thread,courses"
" FROM forum_thread,"
"crs_courses"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=courses.CrsCod"
" AND courses.DegCod=%ld",
" AND forum_thread.Location=crs_courses.CrsCod"
" AND crs_courses.DegCod=%ld",
(unsigned) ForumType,DegCod);
else if (CtrCod > 0) // DegCod <= 0 && CtrCod > 0 ==> Number of course forums for a centre
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
if (CtrCod > 0)
// DegCod <= 0 && CtrCod > 0 ==> Number of course forums for a centre
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT forum_thread.Location)"
" FROM forum_thread,courses,deg_degrees"
" FROM forum_thread,"
"crs_courses,"
"deg_degrees"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND forum_thread.Location=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld",
(unsigned) ForumType,CtrCod);
else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of course forums for an institution
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
if (InsCod > 0)
// CtrCod <= 0 && InsCod > 0 ==> Number of course forums for an institution
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT forum_thread.Location)"
" FROM forum_thread,courses,deg_degrees,centres"
" FROM forum_thread,"
"crs_courses,"
"deg_degrees,"
"centres"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND forum_thread.Location=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=%ld",
(unsigned) ForumType,InsCod);
else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of course forums for a country
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
if (CtyCod > 0)
// InsCod <= 0 && CtyCod > 0 ==> Number of course forums for a country
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT forum_thread.Location)"
" FROM forum_thread,courses,deg_degrees,centres,institutions"
" FROM forum_thread,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND forum_thread.Location=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=%ld",
(unsigned) ForumType,CtyCod);
else // InsCod <= 0 ==> Number of course forums for the whole platform
DB_QuerySELECT (&mysql_res,"can not get number of forums of a type",
// InsCod <= 0 ==> Number of course forums for the whole platform
return (unsigned)
DB_QueryCOUNT ("can not get number of forums of a type",
"SELECT COUNT(DISTINCT Location)"
" FROM forum_thread"
" WHERE ForumType=%u",
(unsigned) ForumType);
break;
default:
return 0;
}
/* Get row with number of threads and number of posts */
row = mysql_fetch_row (mysql_res);
/* Get number of threads (row[0]) */
if (sscanf (row[0],"%u",&NumForums) != 1)
Lay_ShowErrorAndExit ("Error when getting number of forums of a type.");
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
return NumForums;
}
/*****************************************************************************/
@ -2795,8 +2841,6 @@ unsigned For_GetNumTotalForumsOfType (For_ForumType_t ForumType,
unsigned For_GetNumTotalThrsInForumsOfType (For_ForumType_t ForumType,
long CtyCod,long InsCod,long CtrCod,long DegCod,long CrsCod)
{
unsigned NumThrs;
/***** Get total number of threads in forums of this type from database *****/
switch (ForumType)
{
@ -2805,210 +2849,230 @@ unsigned For_GetNumTotalThrsInForumsOfType (For_ForumType_t ForumType,
case For_FORUM__SWAD__USRS:
case For_FORUM__SWAD__TCHS:
// Total number of threads in forums of this type
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread"
" WHERE ForumType=%u",
(unsigned) ForumType);
break;
case For_FORUM_INSTIT_USRS:
case For_FORUM_INSTIT_TCHS:
if (InsCod > 0) // InsCod > 0 ==> Number of threads in institution forums for an institution
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
if (InsCod > 0)
// InsCod > 0 ==> Number of threads in institution forums for an institution
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread"
" WHERE ForumType=%u"
" AND Location=%ld",
(unsigned) ForumType,InsCod);
else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of threads in institution forums for a country
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
if (CtyCod > 0)
// InsCod <= 0 && CtyCod > 0 ==> Number of threads in institution forums for a country
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread,institutions"
" FROM forum_thread,"
"institutions"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=institutions.InsCod"
" AND institutions.CtyCod=%ld",
(unsigned) ForumType,CtyCod);
else // InsCod <= 0 ==> Number of threads in institution forums for the whole platform
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
// InsCod <= 0 ==> Number of threads in institution forums for the whole platform
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread"
" WHERE ForumType=%u",
(unsigned) ForumType);
break;
case For_FORUM_CENTRE_USRS:
case For_FORUM_CENTRE_TCHS:
if (CtrCod > 0) // CtrCod > 0 ==> 0 <= Number of threads in centre forums for a centre <= 1
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
if (CtrCod > 0)
// CtrCod > 0 ==> 0 <= Number of threads in centre forums for a centre <= 1
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread"
" WHERE ForumType=%u"
" AND Location=%ld",
(unsigned) ForumType,CtrCod);
else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of threads in centre forums for an institution
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
if (InsCod > 0)
// CtrCod <= 0 && InsCod > 0 ==> Number of threads in centre forums for an institution
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread,centres"
" FROM forum_thread,"
"centres"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=centres.CtrCod"
" AND centres.InsCod=%ld",
(unsigned) ForumType,InsCod);
else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of threads in centre forums for a country
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
if (CtyCod > 0)
// InsCod <= 0 && CtyCod > 0 ==> Number of threads in centre forums for a country
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread,centres,institutions"
" FROM forum_thread,"
"centres,"
"institutions"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=%ld",
(unsigned) ForumType,CtyCod);
else // InsCod <= 0 ==> Number of threads in centre forums for the whole platform
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
// InsCod <= 0 ==> Number of threads in centre forums for the whole platform
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread"
" WHERE ForumType=%u",
(unsigned) ForumType);
break;
case For_FORUM_DEGREE_USRS:
case For_FORUM_DEGREE_TCHS:
if (DegCod > 0) // DegCod > 0 ==> Number of threads in degree forums for a degree
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
if (DegCod > 0)
// DegCod > 0 ==> Number of threads in degree forums for a degree
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread"
" WHERE ForumType=%u"
" AND Location=%ld",
(unsigned) ForumType,DegCod);
else if (CtrCod > 0) // DegCod <= 0 && CtrCod > 0 ==> Number of threads in degree forums for a centre
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
if (CtrCod > 0)
// DegCod <= 0 && CtrCod > 0 ==> Number of threads in degree forums for a centre
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread,deg_degrees"
" FROM forum_thread,"
"deg_degrees"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld",
(unsigned) ForumType,CtrCod);
else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of threads in degree forums for an institution
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
if (InsCod > 0)
// CtrCod <= 0 && InsCod > 0 ==> Number of threads in degree forums for an institution
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread,deg_degrees,centres"
" FROM forum_thread,"
"deg_degrees,"
"centres"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=%ld",
(unsigned) ForumType,InsCod);
else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of threads in degree forums for a country
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of threads in degree forums for a country
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread,deg_degrees,centres,institutions"
" FROM forum_thread,"
"deg_degrees,"
"centres,"
"institutions"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=%ld",
(unsigned) ForumType,CtyCod);
else // InsCod <= 0 ==> Number of threads in degree forums for the whole platform
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
// InsCod <= 0 ==> Number of threads in degree forums for the whole platform
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread"
" WHERE ForumType=%u",
(unsigned) ForumType);
break;
case For_FORUM_COURSE_USRS:
case For_FORUM_COURSE_TCHS:
if (CrsCod > 0) // CrsCod > 0 ==> 0 <= Number of threads in course forums for a course
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
if (CrsCod > 0)
// CrsCod > 0 ==> 0 <= Number of threads in course forums for a course
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread"
" WHERE ForumType=%u"
" AND Location=%ld",
(unsigned) ForumType,CrsCod);
else if (DegCod > 0) // CrsCod <= 0 && DegCod > 0 ==> Number of threads in course forums for a degree
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
if (DegCod > 0)
// CrsCod <= 0 && DegCod > 0 ==> Number of threads in course forums for a degree
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread,courses"
" FROM forum_thread,"
"crs_courses"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=courses.CrsCod"
" AND courses.DegCod=%ld",
" AND forum_thread.Location=crs_courses.CrsCod"
" AND crs_courses.DegCod=%ld",
(unsigned) ForumType,DegCod);
else if (CtrCod > 0) // DegCod <= 0 && CtrCod > 0 ==> Number of threads in course forums for a centre
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
if (CtrCod > 0)
// DegCod <= 0 && CtrCod > 0 ==> Number of threads in course forums for a centre
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread,courses,deg_degrees"
" FROM forum_thread,"
"crs_courses,"
"deg_degrees"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND forum_thread.Location=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld",
(unsigned) ForumType,CtrCod);
else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of threads in course forums for an institution
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
if (InsCod > 0)
// CtrCod <= 0 && InsCod > 0 ==> Number of threads in course forums for an institution
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread,courses,deg_degrees,centres"
" FROM forum_thread,"
"crs_courses,"
"deg_degrees,"
"centres"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND forum_thread.Location=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=%ld",
(unsigned) ForumType,InsCod);
else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of threads in course forums for a country
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
if (CtyCod > 0)
// InsCod <= 0 && CtyCod > 0 ==> Number of threads in course forums for a country
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread,courses,deg_degrees,centres,institutions"
" FROM forum_thread,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND forum_thread.Location=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=%ld",
(unsigned) ForumType,CtyCod);
else // InsCod <= 0 ==> Number of threads in course forums for the whole platform
NumThrs =
(unsigned) DB_QueryCOUNT ("can not get the number of threads"
" in forums of a type",
// InsCod <= 0 ==> Number of threads in course forums for the whole platform
return (unsigned)
DB_QueryCOUNT ("can not get the number of threads in forums of a type",
"SELECT COUNT(*)"
" FROM forum_thread"
" WHERE ForumType=%u",
(unsigned) ForumType);
break;
default:
NumThrs = 0;
break;
return 0;
}
return NumThrs;
}
/*****************************************************************************/
@ -3053,8 +3117,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
// Total number of posts in forums of this type
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,forum_post "
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"forum_post "
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.ThrCod=forum_post.ThrCod",
(unsigned) ForumType);
@ -3063,8 +3129,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
if (InsCod > 0) // InsCod > 0 ==> Number of posts in institutions forums for an institution
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,forum_post"
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"forum_post"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=%ld"
" AND forum_thread.ThrCod=forum_post.ThrCod",
@ -3072,8 +3140,11 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of posts in institutions forums for a country
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,institutions,forum_post"
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"institutions,"
"forum_post"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=institutions.InsCod"
" AND institutions.CtyCod=%ld"
@ -3082,8 +3153,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
else // InsCod <= 0 ==> Number of posts in institution forums for the whole platform
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,forum_post "
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"forum_post "
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.ThrCod=forum_post.ThrCod",
(unsigned) ForumType);
@ -3093,8 +3166,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
if (CtrCod > 0) // CtrCod > 0 ==> Number of posts in centre forums for a centre
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,forum_post"
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"forum_post"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=%ld"
" AND forum_thread.ThrCod=forum_post.ThrCod",
@ -3102,8 +3177,11 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of posts in centre forums for an institution
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,centres,forum_post"
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"centres,"
"forum_post"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=centres.CtrCod"
" AND centres.InsCod=%ld"
@ -3112,8 +3190,12 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of posts in centre forums for a country
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,centres,institutions,forum_post"
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"centres,"
"institutions,"
"forum_post"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
@ -3123,8 +3205,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
else // InsCod <= 0 ==> Number of posts in centre forums for the whole platform
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,forum_post "
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"forum_post"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.ThrCod=forum_post.ThrCod",
(unsigned) ForumType);
@ -3134,8 +3218,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
if (DegCod > 0) // DegCod > 0 ==> Number of posts in degree forums for a degree
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,forum_post "
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"forum_post"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=%ld"
" AND forum_thread.ThrCod=forum_post.ThrCod",
@ -3143,8 +3229,11 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
else if (CtrCod > 0) // DegCod <= 0 && CtrCod > 0 ==> Number of posts in degree forums for a centre
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,deg_degrees,forum_post "
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"deg_degrees,"
"forum_post"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld"
@ -3153,8 +3242,12 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of posts in degree forums for an institution
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,deg_degrees,centres,forum_post"
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"deg_degrees,"
"centres,"
"forum_post"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
@ -3164,8 +3257,13 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of posts in degree forums for a country
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,deg_degrees,centres,institutions,forum_post"
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"deg_degrees,"
"centres,"
"institutions,"
"forum_post"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
@ -3176,8 +3274,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
else // InsCod <= 0 ==> Number of posts in degree forums for the whole platform
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,forum_post "
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"forum_post "
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.ThrCod=forum_post.ThrCod",
(unsigned) ForumType);
@ -3187,8 +3287,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
if (CrsCod > 0) // CrsCod > 0 ==> 0 <= number of posts in course forums for a course
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,forum_post "
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"forum_post "
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=%ld"
" AND forum_thread.ThrCod=forum_post.ThrCod",
@ -3196,32 +3298,44 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
else if (DegCod > 0) // CrsCod <= 0 && DegCod > 0 ==> Number of posts in course forums for a degree
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,courses,forum_post "
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"crs_courses,"
"forum_post "
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=courses.CrsCod"
" AND courses.DegCod=%ld"
" AND forum_thread.Location=crs_courses.CrsCod"
" AND crs_courses.DegCod=%ld"
" AND forum_thread.ThrCod=forum_post.ThrCod",
(unsigned) ForumType,DegCod);
else if (CtrCod > 0) // DegCod <= 0 && CtrCod > 0 ==> Number of posts in course forums for a centre
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,courses,deg_degrees,forum_post "
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"crs_courses,"
"deg_degrees,"
"forum_post "
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND forum_thread.Location=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld"
" AND forum_thread.ThrCod=forum_post.ThrCod",
(unsigned) ForumType,CtrCod);
else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of posts in course forums for an institution
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,courses,deg_degrees,centres,forum_post"
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"crs_courses,"
"deg_degrees,"
"centres,"
"forum_post"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND forum_thread.Location=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=%ld"
" AND forum_thread.ThrCod=forum_post.ThrCod",
@ -3229,11 +3343,17 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of posts in course forums for a country
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,courses,deg_degrees,centres,institutions,forum_post"
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"forum_post"
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.Location=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND forum_thread.Location=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=%ld"
@ -3242,8 +3362,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
else // CrsCod <= 0 && DegCod <= 0 && CtrCod <= 0 ==> Number of posts in course forums for the whole platform
DB_QuerySELECT (&mysql_res,"can not get the total number"
" of forums of a type",
"SELECT COUNT(*),SUM(forum_post.NumNotif)"
" FROM forum_thread,forum_post "
"SELECT COUNT(*),"
"SUM(forum_post.NumNotif)"
" FROM forum_thread,"
"forum_post "
" WHERE forum_thread.ForumType=%u"
" AND forum_thread.ThrCod=forum_post.ThrCod",
(unsigned) ForumType);

View File

@ -2659,77 +2659,72 @@ void Gam_RequestNewMatch (void)
unsigned Gam_GetNumCoursesWithGames (Hie_Lvl_Level_t Scope)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumCourses;
/***** Get number of courses with games from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of courses with games",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with games",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM gam_games");
break;
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of courses with games",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with games",
"SELECT COUNT(DISTINCT gam_games.CrsCod)"
" FROM institutions,centres,deg_degrees,courses,gam_games"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"gam_games"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=gam_games.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=gam_games.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of courses with games",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with games",
"SELECT COUNT(DISTINCT gam_games.CrsCod)"
" FROM centres,deg_degrees,courses,gam_games"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"gam_games"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=gam_games.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=gam_games.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of courses with games",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with games",
"SELECT COUNT(DISTINCT gam_games.CrsCod)"
" FROM deg_degrees,courses,gam_games"
" FROM deg_degrees,"
"crs_courses,"
"gam_games"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=gam_games.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=gam_games.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of courses with games",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with games",
"SELECT COUNT(DISTINCT gam_games.CrsCod)"
" FROM courses,gam_games"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=gam_games.CrsCod",
" FROM crs_courses,"
"gam_games"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=gam_games.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of courses with games",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with games",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM gam_games"
" WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod);
break;
default:
Lay_WrongScopeExit ();
break;
return 0;
}
/***** Get number of games *****/
row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&NumCourses) != 1)
Lay_ShowErrorAndExit ("Error when getting number of courses with games.");
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
return NumCourses;
}
/*****************************************************************************/
@ -2739,77 +2734,72 @@ unsigned Gam_GetNumCoursesWithGames (Hie_Lvl_Level_t Scope)
unsigned Gam_GetNumGames (Hie_Lvl_Level_t Scope)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumGames;
/***** Get number of games from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of games",
return (unsigned)
DB_QueryCOUNT ("can not get number of games",
"SELECT COUNT(*)"
" FROM gam_games");
break;
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of games",
return (unsigned)
DB_QueryCOUNT ("can not get number of games",
"SELECT COUNT(*)"
" FROM institutions,centres,deg_degrees,courses,gam_games"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"gam_games"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=gam_games.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=gam_games.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of games",
return (unsigned)
DB_QueryCOUNT ("can not get number of games",
"SELECT COUNT(*)"
" FROM centres,deg_degrees,courses,gam_games"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"gam_games"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=gam_games.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=gam_games.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of games",
return (unsigned)
DB_QueryCOUNT ("can not get number of games",
"SELECT COUNT(*)"
" FROM deg_degrees,courses,gam_games"
" FROM deg_degrees,"
"crs_courses,"
"gam_games"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=gam_games.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=gam_games.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of games",
return (unsigned)
DB_QueryCOUNT ("can not get number of games",
"SELECT COUNT(*)"
" FROM courses,gam_games"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=gam_games.CrsCod",
" FROM crs_courses,"
"gam_games"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=gam_games.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of games",
return (unsigned)
DB_QueryCOUNT ("can not get number of games",
"SELECT COUNT(*)"
" FROM gam_games"
" WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod);
break;
default:
Lay_WrongScopeExit ();
break;
return 0;
}
/***** Get number of games *****/
row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&NumGames) != 1)
Lay_ShowErrorAndExit ("Error when getting number of games.");
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
return NumGames;
}
/*****************************************************************************/
@ -2829,7 +2819,8 @@ double Gam_GetNumQstsPerCrsGame (Hie_Lvl_Level_t Scope)
DB_QuerySELECT (&mysql_res,"can not get number of questions per game",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(gam_questions.QstCod) AS NumQsts"
" FROM gam_games,gam_questions"
" FROM gam_games,"
"gam_questions"
" WHERE gam_games.GamCod=gam_questions.GamCod"
" GROUP BY gam_questions.GamCod) AS NumQstsTable");
break;
@ -2837,12 +2828,17 @@ double Gam_GetNumQstsPerCrsGame (Hie_Lvl_Level_t Scope)
DB_QuerySELECT (&mysql_res,"can not get number of questions per game",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(gam_questions.QstCod) AS NumQsts"
" FROM institutions,centres,deg_degrees,courses,gam_games,gam_questions"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"gam_games,"
"gam_questions"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=gam_games.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=gam_games.CrsCod"
" AND gam_games.GamCod=gam_questions.GamCod"
" GROUP BY gam_questions.GamCod) AS NumQstsTable",
Gbl.Hierarchy.Cty.CtyCod);
@ -2851,11 +2847,15 @@ double Gam_GetNumQstsPerCrsGame (Hie_Lvl_Level_t Scope)
DB_QuerySELECT (&mysql_res,"can not get number of questions per game",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(gam_questions.QstCod) AS NumQsts"
" FROM centres,deg_degrees,courses,gam_games,gam_questions"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"gam_games,"
"gam_questions"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=gam_games.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=gam_games.CrsCod"
" AND gam_games.GamCod=gam_questions.GamCod"
" GROUP BY gam_questions.GamCod) AS NumQstsTable",
Gbl.Hierarchy.Ins.InsCod);
@ -2864,10 +2864,13 @@ double Gam_GetNumQstsPerCrsGame (Hie_Lvl_Level_t Scope)
DB_QuerySELECT (&mysql_res,"can not get number of questions per game",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(gam_questions.QstCod) AS NumQsts"
" FROM deg_degrees,courses,gam_games,gam_questions"
" FROM deg_degrees,"
"crs_courses,"
"gam_games,"
"gam_questions"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=gam_games.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=gam_games.CrsCod"
" AND gam_games.GamCod=gam_questions.GamCod"
" GROUP BY gam_questions.GamCod) AS NumQstsTable",
Gbl.Hierarchy.Ctr.CtrCod);
@ -2876,9 +2879,11 @@ double Gam_GetNumQstsPerCrsGame (Hie_Lvl_Level_t Scope)
DB_QuerySELECT (&mysql_res,"can not get number of questions per game",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(gam_questions.QstCod) AS NumQsts"
" FROM courses,gam_games,gam_questions"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=gam_games.CrsCod"
" FROM crs_courses,"
"gam_games,"
"gam_questions"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=gam_games.CrsCod"
" AND gam_games.GamCod=gam_questions.GamCod"
" GROUP BY gam_questions.GamCod) AS NumQstsTable",
Gbl.Hierarchy.Deg.DegCod);
@ -2887,7 +2892,8 @@ double Gam_GetNumQstsPerCrsGame (Hie_Lvl_Level_t Scope)
DB_QuerySELECT (&mysql_res,"can not get number of questions per game",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(gam_questions.QstCod) AS NumQsts"
" FROM gam_games,gam_questions"
" FROM gam_games,"
"gam_questions"
" WHERE gam_games.Cod=%ld"
" AND gam_games.GamCod=gam_questions.GamCod"
" GROUP BY gam_questions.GamCod) AS NumQstsTable",

View File

@ -352,253 +352,287 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
if (Indicators->DptCod >= 0) // 0 means another department
{
if (Indicators->DegTypCod > 0)
NumCrss =
(unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM deg_degrees,courses,crs_usr,usr_data"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_data"
" WHERE deg_degrees.DegTypCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
"crs_courses.FullName",
Indicators->DegTypCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
else
NumCrss =
(unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM deg_degrees,courses,crs_usr,usr_data"
" WHERE deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_data"
" WHERE deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
"crs_courses.FullName",
(unsigned) Rol_TCH,
Indicators->DptCod);
}
else
{
if (Indicators->DegTypCod > 0)
NumCrss =
(unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM deg_degrees,courses"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM deg_degrees,"
"crs_courses"
" WHERE deg_degrees.DegTypCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
"crs_courses.FullName",
Indicators->DegTypCod);
else
NumCrss =
(unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM deg_degrees,courses"
" WHERE deg_degrees.DegCod=courses.DegCod"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM deg_degrees,"
"crs_courses"
" WHERE deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.FullName,"
"courses.FullName");
"crs_courses.FullName");
}
break;
case Hie_Lvl_CTY:
if (Indicators->DptCod >= 0) // 0 means another department
NumCrss =
(unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM institutions,centres,deg_degrees,courses,crs_usr,usr_data"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_data"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
"crs_courses.FullName",
Gbl.Hierarchy.Cty.CtyCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
else
NumCrss =
(unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM institutions,centres,deg_degrees,courses"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
"crs_courses.FullName",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
if (Indicators->DptCod >= 0) // 0 means another department
NumCrss =
(unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM centres,deg_degrees,courses,crs_usr,usr_data"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_data"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
"crs_courses.FullName",
Gbl.Hierarchy.Ins.InsCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
else
NumCrss =
(unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM centres,deg_degrees,courses"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM centres,"
"deg_degrees,"
"crs_courses"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
"crs_courses.FullName",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
if (Indicators->DptCod >= 0) // 0 means another department
NumCrss =
(unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM deg_degrees,courses,crs_usr,usr_data"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_data"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
"crs_courses.FullName",
Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
else
NumCrss =
(unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM deg_degrees,courses"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM deg_degrees,"
"crs_courses"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
"crs_courses.FullName",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
if (Indicators->DptCod >= 0) // 0 means another department
NumCrss =
(unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM deg_degrees,courses,crs_usr,usr_data"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_data"
" WHERE deg_degrees.DegCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
"crs_courses.FullName",
Gbl.Hierarchy.Deg.DegCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
else
NumCrss =
(unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM deg_degrees,courses"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM deg_degrees,"
"crs_courses"
" WHERE deg_degrees.DegCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
"crs_courses.FullName",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
if (Indicators->DptCod >= 0) // 0 means another department
NumCrss =
(unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM deg_degrees,courses,crs_usr,usr_data"
" WHERE courses.CrsCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_data"
" WHERE crs_courses.CrsCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.CrsCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
"crs_courses.FullName",
Gbl.Hierarchy.Crs.CrsCod,
Gbl.Hierarchy.Crs.CrsCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
else
NumCrss =
(unsigned) DB_QuerySELECT (mysql_res,"can not get courses",
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM deg_degrees,courses"
" WHERE courses.CrsCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM deg_degrees,"
"crs_courses"
" WHERE crs_courses.CrsCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
"crs_courses.FullName",
Gbl.Hierarchy.Crs.CrsCod);
break;
default:
@ -1341,8 +1375,7 @@ int Ind_GetNumIndicatorsCrsFromDB (long CrsCod)
/***** Get number of indicators of a course from database *****/
if (DB_QuerySELECT (&mysql_res,"can not get number of indicators",
"SELECT NumIndicators FROM courses"
" WHERE CrsCod=%ld",
"SELECT NumIndicators FROM crs_courses WHERE CrsCod=%ld",
CrsCod))
{
/***** Get row *****/
@ -1367,7 +1400,7 @@ static void Ind_StoreIndicatorsCrsIntoDB (long CrsCod,unsigned NumIndicators)
{
/***** Store number of indicators of a course in database *****/
DB_QueryUPDATE ("can not store number of indicators of a course",
"UPDATE courses SET NumIndicators=%u WHERE CrsCod=%ld",
"UPDATE crs_courses SET NumIndicators=%u WHERE CrsCod=%ld",
NumIndicators,CrsCod);
}

View File

@ -2055,10 +2055,13 @@ unsigned Ins_GetCachedNumInssWithCrss (const char *SubQuery,
NumInssWithCrss = (unsigned)
DB_QueryCOUNT ("can not get number of institutions with courses",
"SELECT COUNT(DISTINCT institutions.InsCod)"
" FROM institutions,centres,deg_degrees,courses"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod",
" AND deg_degrees.DegCod=crs_courses.DegCod",
SubQuery);
FigCch_UpdateFigureIntoCache (FigCch_NUM_INSS_WITH_CRSS,Scope,Cod,
FigCch_UNSIGNED,&NumInssWithCrss);
@ -2090,11 +2093,15 @@ unsigned Ins_GetCachedNumInssWithUsrs (Rol_Role_t Role,const char *SubQuery,
NumInssWithUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of institutions with users",
"SELECT COUNT(DISTINCT institutions.InsCod)"
" FROM institutions,centres,deg_degrees,courses,crs_usr"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u",
SubQuery,(unsigned) Role);
FigCch_UpdateFigureIntoCache (FigureInss[Role],Scope,Cod,

View File

@ -2218,7 +2218,6 @@ unsigned long Msg_GetNumMsgsSentByUsr (long UsrCod)
unsigned Msg_GetNumMsgsSent (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
{
const char *Table = "msg_snt";
unsigned NumMsgs = 0; // Initialized to avoid warning
/***** Get the number of messages sent from this location
(all the platform, current degree or current course) from database *****/
@ -2235,73 +2234,74 @@ unsigned Msg_GetNumMsgsSent (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
switch (Scope)
{
case Hie_Lvl_SYS:
NumMsgs = (unsigned) DB_GetNumRowsTable (Table);
break;
return (unsigned) DB_GetNumRowsTable (Table);
case Hie_Lvl_CTY:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number of sent messages",
return (unsigned)
DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
" FROM institutions,centres,deg_degrees,courses,%s"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"%s"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=%s.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=%s.CrsCod",
Table,
Gbl.Hierarchy.Cty.CtyCod,
Table);
break;
case Hie_Lvl_INS:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number of sent messages",
return (unsigned)
DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
" FROM centres,deg_degrees,courses,%s"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"%s"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=%s.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=%s.CrsCod",
Table,
Gbl.Hierarchy.Ins.InsCod,
Table);
break;
case Hie_Lvl_CTR:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number of sent messages",
return (unsigned)
DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
" FROM deg_degrees,courses,%s"
" FROM deg_degrees,"
"crs_courses,"
"%s"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=%s.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=%s.CrsCod",
Table,
Gbl.Hierarchy.Ctr.CtrCod,
Table);
break;
case Hie_Lvl_DEG:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number of sent messages",
return (unsigned)
DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
" FROM courses,%s"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=%s.CrsCod",
" FROM crs_courses,"
"%s"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=%s.CrsCod",
Table,
Gbl.Hierarchy.Deg.DegCod,
Table);
break;
case Hie_Lvl_CRS:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number of sent messages",
return (unsigned)
DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
" FROM %s"
" WHERE CrsCod=%ld",
Table,
Gbl.Hierarchy.Crs.CrsCod);
break;
default:
Lay_WrongScopeExit ();
break;
return 0;
}
return NumMsgs;
}
/*****************************************************************************/
@ -2312,7 +2312,6 @@ unsigned Msg_GetNumMsgsSent (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
{
char *Table;
unsigned NumMsgs = 0; // Initialized to avoid warning
/***** Get the number of unique messages sent from this location
(all the platform, current degree or current course) from database *****/
@ -2325,90 +2324,93 @@ unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
switch (Scope)
{
case Hie_Lvl_SYS:
NumMsgs = (unsigned) DB_GetNumRowsTable (Table);
break;
return (unsigned) DB_GetNumRowsTable (Table);
case Hie_Lvl_CTY:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT COUNT(*)"
" FROM institutions,centres,deg_degrees,courses,%s,msg_snt"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"%s,"
"msg_snt"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=msg_snt.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=msg_snt.CrsCod"
" AND msg_snt.MsgCod=%s.MsgCod",
Table,
Gbl.Hierarchy.Cty.CtyCod,
Table);
break;
case Hie_Lvl_INS:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT COUNT(*)"
" FROM centres,deg_degrees,courses,%s,msg_snt"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"%s,"
"msg_snt"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=msg_snt.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=msg_snt.CrsCod"
" AND msg_snt.MsgCod=%s.MsgCod",
Table,
Gbl.Hierarchy.Ins.InsCod,
Table);
break;
case Hie_Lvl_CTR:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT COUNT(*)"
" FROM deg_degrees,courses,%s,msg_snt"
" FROM deg_degrees,"
"crs_courses,"
"%s,"
"msg_snt"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=msg_snt.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=msg_snt.CrsCod"
" AND msg_snt.MsgCod=%s.MsgCod",
Table,
Gbl.Hierarchy.Ctr.CtrCod,
Table);
break;
case Hie_Lvl_DEG:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT COUNT(*)"
" FROM courses,%s,msg_snt"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=msg_snt.CrsCod"
" FROM crs_courses,"
"%s,"
"msg_snt"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=msg_snt.CrsCod"
" AND msg_snt.MsgCod=%s.MsgCod",
Table,
Gbl.Hierarchy.Deg.DegCod,
Table);
break;
case Hie_Lvl_CRS:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT COUNT(*)"
" FROM msg_snt,%s"
" FROM msg_snt,"
"%s"
" WHERE msg_snt.CrsCod=%ld"
" AND msg_snt.MsgCod=%s.MsgCod",
Table,
Gbl.Hierarchy.Crs.CrsCod,
Table);
break;
case Hie_Lvl_UNK:
default:
Lay_WrongScopeExit ();
break;
return 0;
}
break;
return 0;
case Msg_STATUS_NOTIFIED:
switch (Scope)
{
case Hie_Lvl_SYS:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
"(SELECT COUNT(*)"
" FROM msg_rcv"
@ -2417,130 +2419,149 @@ unsigned Msg_GetNumMsgsReceived (Hie_Lvl_Level_t Scope,Msg_Status_t MsgStatus)
"(SELECT COUNT(*)"
" FROM msg_rcv_deleted"
" WHERE Notified='Y')");
break;
case Hie_Lvl_CTY:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
"(SELECT COUNT(*)"
" FROM institutions,centres,deg_degrees,courses,msg_snt,msg_rcv"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"msg_snt,"
"msg_rcv"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=msg_snt.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=msg_snt.CrsCod"
" AND msg_snt.MsgCod=msg_rcv.MsgCod"
" AND msg_rcv.Notified='Y')"
" + "
"(SELECT COUNT(*)"
" FROM institutions,centres,deg_degrees,courses,msg_snt,msg_rcv_deleted"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"msg_snt,"
"msg_rcv_deleted"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=msg_snt.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=msg_snt.CrsCod"
" AND msg_snt.MsgCod=msg_rcv_deleted.MsgCod"
" AND msg_rcv_deleted.Notified='Y')",
Gbl.Hierarchy.Cty.CtyCod,
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
"(SELECT COUNT(*)"
" FROM centres,deg_degrees,courses,msg_snt,msg_rcv"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"msg_snt,"
"msg_rcv"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=msg_snt.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=msg_snt.CrsCod"
" AND msg_snt.MsgCod=msg_rcv.MsgCod"
" AND msg_rcv.Notified='Y')"
" + "
"(SELECT COUNT(*)"
" FROM centres,deg_degrees,courses,msg_snt,msg_rcv_deleted"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"msg_snt,"
"msg_rcv_deleted"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=msg_snt.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=msg_snt.CrsCod"
" AND msg_snt.MsgCod=msg_rcv_deleted.MsgCod"
" AND msg_rcv_deleted.Notified='Y')",
Gbl.Hierarchy.Ins.InsCod,
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
"(SELECT COUNT(*)"
" FROM deg_degrees,courses,msg_snt,msg_rcv"
" FROM deg_degrees,"
"crs_courses,"
"msg_snt,"
"msg_rcv"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=msg_snt.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=msg_snt.CrsCod"
" AND msg_snt.MsgCod=msg_rcv.MsgCod"
" AND msg_rcv.Notified='Y')"
" + "
"(SELECT COUNT(*)"
" FROM deg_degrees,courses,msg_snt,msg_rcv_deleted"
" FROM deg_degrees,"
"crs_courses,"
"msg_snt,"
"msg_rcv_deleted"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=msg_snt.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=msg_snt.CrsCod"
" AND msg_snt.MsgCod=msg_rcv_deleted.MsgCod"
" AND msg_rcv_deleted.Notified='Y')",
Gbl.Hierarchy.Ctr.CtrCod,
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
"(SELECT COUNT(*)"
" FROM courses,msg_snt,msg_rcv"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=msg_snt.CrsCod"
" FROM crs_courses,"
"msg_snt,"
"msg_rcv"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=msg_snt.CrsCod"
" AND msg_snt.MsgCod=msg_rcv.MsgCod"
" AND msg_rcv.Notified='Y')"
" + "
"(SELECT COUNT(*)"
" FROM courses,msg_snt,msg_rcv_deleted"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=msg_snt.CrsCod"
" FROM crs_courses,"
"msg_snt,"
"msg_rcv_deleted"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=msg_snt.CrsCod"
" AND msg_snt.MsgCod=msg_rcv_deleted.MsgCod"
" AND msg_rcv_deleted.Notified='Y')",
Gbl.Hierarchy.Deg.DegCod,
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
"(SELECT COUNT(*)"
" FROM msg_snt,msg_rcv"
" FROM msg_snt,"
"msg_rcv"
" WHERE msg_snt.CrsCod=%ld"
" AND msg_snt.MsgCod=msg_rcv.MsgCod"
" AND msg_rcv.Notified='Y')"
" + "
"(SELECT COUNT(*)"
" FROM msg_snt,msg_rcv_deleted"
" FROM msg_snt,"
"msg_rcv_deleted"
" WHERE msg_snt.CrsCod=%ld"
" AND msg_snt.MsgCod=msg_rcv_deleted.MsgCod"
" AND msg_rcv_deleted.Notified='Y')",
Gbl.Hierarchy.Crs.CrsCod,
Gbl.Hierarchy.Crs.CrsCod);
break;
case Hie_Lvl_UNK:
default:
Lay_WrongScopeExit ();
break;
return 0;
}
break;
return 0;
default:
return 0;
}
return NumMsgs;
}
/*****************************************************************************/
@ -2744,24 +2765,29 @@ static void Msg_GetDistinctCoursesInMyMessages (struct Msg_Messages *Messages)
switch (Messages->TypeOfMessages)
{
case Msg_RECEIVED:
NumRows = DB_QuerySELECT (&mysql_res,"can not get distinct courses"
" in your messages",""
"SELECT DISTINCT courses.CrsCod,courses.ShortName"
" FROM msg_rcv,msg_snt,courses"
NumRows =
DB_QuerySELECT (&mysql_res,"can not get distinct courses in your messages",
"SELECT DISTINCT crs_courses.CrsCod,"
"crs_courses.ShortName"
" FROM msg_rcv,"
"msg_snt,"
"crs_courses"
" WHERE msg_rcv.UsrCod=%ld"
" AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.CrsCod=courses.CrsCod"
" ORDER BY courses.ShortName",
" AND msg_snt.CrsCod=crs_courses.CrsCod"
" ORDER BY crs_courses.ShortName",
Gbl.Usrs.Me.UsrDat.UsrCod);
break;
case Msg_SENT:
NumRows = DB_QuerySELECT (&mysql_res,"can not get distinct courses"
" in your messages",
"SELECT DISTINCT courses.CrsCod,courses.ShortName"
" FROM msg_snt,courses"
NumRows =
DB_QuerySELECT (&mysql_res,"can not get distinct courses in your messages",
"SELECT DISTINCT crs_courses.CrsCod,"
"crs_courses.ShortName"
" FROM msg_snt,"
"crs_courses"
" WHERE msg_snt.UsrCod=%ld"
" AND msg_snt.CrsCod=courses.CrsCod"
" ORDER BY courses.ShortName",
" AND msg_snt.CrsCod=crs_courses.CrsCod"
" ORDER BY crs_courses.ShortName",
Gbl.Usrs.Me.UsrDat.UsrCod);
break;
default: // Not aplicable here

View File

@ -454,83 +454,99 @@ void Net_ShowWebAndSocialNetworksStats (void)
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
NumRows =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get number of users"
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks",
"SELECT Web,COUNT(*) AS N"
"SELECT Web,"
"COUNT(*) AS N"
" FROM usr_webs"
" GROUP BY Web"
" ORDER BY N DESC,Web");
break;
case Hie_Lvl_CTY:
NumRows =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get number of users"
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks",
"SELECT usr_webs.Web,"
"COUNT(DISTINCT usr_webs.UsrCod) AS N"
" FROM institutions,centres,deg_degrees,courses,crs_usr,usr_webs"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_webs"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_webs.UsrCod"
" GROUP BY usr_webs.Web"
" ORDER BY N DESC,usr_webs.Web",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
NumRows =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get number of users"
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks",
"SELECT usr_webs.Web,"
"COUNT(DISTINCT usr_webs.UsrCod) AS N"
" FROM centres,deg_degrees,courses,crs_usr,usr_webs"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_webs"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_webs.UsrCod"
" GROUP BY usr_webs.Web"
" ORDER BY N DESC,usr_webs.Web",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
NumRows =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get number of users"
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks",
"SELECT usr_webs.Web,"
"COUNT(DISTINCT usr_webs.UsrCod) AS N"
" FROM deg_degrees,courses,crs_usr,usr_webs"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_webs"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_webs.UsrCod"
" GROUP BY usr_webs.Web"
" ORDER BY N DESC,usr_webs.Web",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
NumRows =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get number of users"
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks",
"SELECT usr_webs.Web,"
"COUNT(DISTINCT usr_webs.UsrCod) AS N"
" FROM courses,crs_usr,usr_webs"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod"
" FROM crs_courses,"
"crs_usr,"
"usr_webs"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_webs.UsrCod"
" GROUP BY usr_webs.Web"
" ORDER BY N DESC,usr_webs.Web",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
NumRows =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get number of users"
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks",
"SELECT usr_webs.Web,"
"COUNT(DISTINCT usr_webs.UsrCod) AS N"
" FROM crs_usr,usr_webs"
" FROM crs_usr,"
"usr_webs"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_webs.UsrCod"
" GROUP BY usr_webs.Web"

View File

@ -822,60 +822,76 @@ unsigned Not_GetNumNotices (Hie_Lvl_Level_t Scope,Not_Status_t Status,unsigned *
{
case Hie_Lvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of notices",
"SELECT COUNT(*),SUM(NumNotif)"
"SELECT COUNT(*),"
"SUM(NumNotif)"
" FROM notices"
" WHERE Status=%u",
Status);
break;
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of notices",
"SELECT COUNT(*),SUM(notices.NumNotif)"
" FROM institutions,centres,deg_degrees,courses,notices"
"SELECT COUNT(*),"
"SUM(notices.NumNotif)"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"notices"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=notices.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=notices.CrsCod"
" AND notices.Status=%u",
Gbl.Hierarchy.Cty.CtyCod,
Status);
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of notices",
"SELECT COUNT(*),SUM(notices.NumNotif)"
" FROM centres,deg_degrees,courses,notices"
"SELECT COUNT(*),"
"SUM(notices.NumNotif)"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"notices"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=notices.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=notices.CrsCod"
" AND notices.Status=%u",
Gbl.Hierarchy.Ins.InsCod,
Status);
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of notices",
"SELECT COUNT(*),SUM(notices.NumNotif)"
" FROM deg_degrees,courses,notices"
"SELECT COUNT(*),"
"SUM(notices.NumNotif)"
" FROM deg_degrees,"
"crs_courses,"
"notices"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=notices.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=notices.CrsCod"
" AND notices.Status=%u",
Gbl.Hierarchy.Ctr.CtrCod,
Status);
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of notices",
"SELECT COUNT(*),SUM(notices.NumNotif)"
" FROM courses,notices"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=notices.CrsCod"
"SELECT COUNT(*),"
"SUM(notices.NumNotif)"
" FROM crs_courses,"
"notices"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=notices.CrsCod"
" AND notices.Status=%u",
Gbl.Hierarchy.Deg.DegCod,
Status);
break;
case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of notices",
"SELECT COUNT(*),SUM(NumNotif)"
"SELECT COUNT(*),"
"SUM(NumNotif)"
" FROM notices"
" WHERE CrsCod=%ld"
" AND Status=%u",
@ -924,50 +940,66 @@ unsigned Not_GetNumNoticesDeleted (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
{
case Hie_Lvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of deleted notices",
"SELECT COUNT(*),SUM(NumNotif)"
"SELECT COUNT(*),"
"SUM(NumNotif)"
" FROM notices_deleted");
break;
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of deleted notices",
"SELECT COUNT(*),SUM(notices_deleted.NumNotif)"
" FROM institutions,centres,deg_degrees,courses,notices_deleted"
"SELECT COUNT(*),"
"SUM(notices_deleted.NumNotif)"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"notices_deleted"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=notices_deleted.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=notices_deleted.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of deleted notices",
"SELECT COUNT(*),SUM(notices_deleted.NumNotif)"
" FROM centres,deg_degrees,courses,notices_deleted"
"SELECT COUNT(*),"
"SUM(notices_deleted.NumNotif)"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"notices_deleted"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=notices_deleted.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=notices_deleted.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of deleted notices",
"SELECT COUNT(*),SUM(notices_deleted.NumNotif)"
" FROM deg_degrees,courses,notices_deleted"
"SELECT COUNT(*),"
"SUM(notices_deleted.NumNotif)"
" FROM deg_degrees,"
"crs_courses,"
"notices_deleted"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=notices_deleted.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=notices_deleted.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of deleted notices",
"SELECT COUNT(*),SUM(notices_deleted.NumNotif)"
" FROM courses,notices_deleted"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=notices_deleted.CrsCod",
"SELECT COUNT(*),"
"SUM(notices_deleted.NumNotif)"
" FROM crs_courses,"
"notices_deleted"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=notices_deleted.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of deleted notices",
"SELECT COUNT(*),SUM(NumNotif)"
"SELECT COUNT(*),"
"SUM(NumNotif)"
" FROM notices_deleted"
" WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod);

View File

@ -1425,11 +1425,14 @@ static long Pho_GetDegWithAvgPhotoLeastRecentlyUpdated (void)
/***** 1. If a degree is not in table of computed degrees,
choose it as least recently updated *****/
/* Get one degree with students not yet computed */
NumRows = DB_QuerySELECT (&mysql_res,"can not get degrees",
NumRows =
DB_QuerySELECT (&mysql_res,"can not get degrees",
"SELECT DISTINCT deg_degrees.DegCod"
" FROM deg_degrees,courses,crs_usr"
" WHERE deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr"
" WHERE deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND deg_degrees.DegCod NOT IN"
" (SELECT DISTINCT DegCod FROM sta_degrees)"
@ -1454,13 +1457,15 @@ static long Pho_GetDegWithAvgPhotoLeastRecentlyUpdated (void)
/***** 2. If all the degrees are in table,
choose the least recently updated that has students *****/
/* Get degrees from database */
NumRows = DB_QuerySELECT (&mysql_res,"can not get degrees",
NumRows =
DB_QuerySELECT (&mysql_res,"can not get degrees",
"SELECT sta_degrees.DegCod"
" FROM sta_degrees,courses,crs_usr"
" WHERE sta_degrees.TimeAvgPhoto<"
"FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)"
" AND sta_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" FROM sta_degrees,"
"crs_courses,"
"crs_usr"
" WHERE sta_degrees.TimeAvgPhoto<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)"
" AND sta_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" ORDER BY sta_degrees.TimeAvgPhoto LIMIT 1",
Cfg_MIN_TIME_TO_RECOMPUTE_AVG_PHOTO,

View File

@ -1421,92 +1421,130 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT UsrCod,%s"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT UsrCod,"
"%s"
" FROM usr_figures"
" WHERE %s>0"
" AND UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY %s DESC,UsrCod LIMIT 100",
" ORDER BY %s DESC,"
"UsrCod"
" LIMIT 100",
FieldName,
FieldName,FieldName);
break;
case Hie_Lvl_CTY:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW usr_figures.UsrCod,usr_figures.%s"
" FROM institutions,centres,deg_degrees,courses,crs_usr,usr_figures"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
"usr_figures.UsrCod,"
"usr_figures.%s"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_figures"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod"
" AND usr_figures.%s>0"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100",
" ORDER BY usr_figures.%s DESC,"
"usr_figures.UsrCod"
" LIMIT 100",
FieldName,
Gbl.Hierarchy.Cty.CtyCod,
FieldName,FieldName);
break;
case Hie_Lvl_INS:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW usr_figures.UsrCod,usr_figures.%s"
" FROM centres,deg_degrees,courses,crs_usr,usr_figures"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
"usr_figures.UsrCod,"
"usr_figures.%s"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_figures"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod"
" AND usr_figures.%s>0"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100",
" ORDER BY usr_figures.%s DESC,"
"usr_figures.UsrCod"
" LIMIT 100",
FieldName,
Gbl.Hierarchy.Ins.InsCod,
FieldName,FieldName);
break;
case Hie_Lvl_CTR:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW usr_figures.UsrCod,usr_figures.%s"
" FROM deg_degrees,courses,crs_usr,usr_figures"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
"usr_figures.UsrCod,"
"usr_figures.%s"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_figures"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod"
" AND usr_figures.%s>0"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100",
" ORDER BY usr_figures.%s DESC,"
"usr_figures.UsrCod"
" LIMIT 100",
FieldName,
Gbl.Hierarchy.Ctr.CtrCod,
FieldName,FieldName);
break;
case Hie_Lvl_DEG:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW usr_figures.UsrCod,usr_figures.%s"
" FROM courses,crs_usr,usr_figures"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
"usr_figures.UsrCod,"
"usr_figures.%s"
" FROM crs_courses,"
"crs_usr,"
"usr_figures"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod"
" AND usr_figures.%s>0"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100",
" ORDER BY usr_figures.%s DESC,"
"usr_figures.UsrCod"
" LIMIT 100",
FieldName,
Gbl.Hierarchy.Deg.DegCod,
FieldName,FieldName);
break;
case Hie_Lvl_CRS:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW usr_figures.UsrCod,usr_figures.%s"
" FROM crs_usr,usr_figures"
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
"usr_figures.UsrCod,"
"usr_figures.%s"
" FROM crs_usr,"
"usr_figures"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_figures.UsrCod"
" AND usr_figures.%s>0"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100",
" ORDER BY usr_figures.%s DESC,"
"usr_figures.UsrCod"
" LIMIT 100",
FieldName,
Gbl.Hierarchy.Crs.CrsCod,
FieldName,FieldName);
@ -1600,8 +1638,8 @@ void Prf_GetAndShowRankingClicksPerDay (void)
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT UsrCod,"
"NumClicks/(DATEDIFF(NOW(),"
"FirstClickTime)+1) AS NumClicksPerDay"
@ -1613,18 +1651,23 @@ void Prf_GetAndShowRankingClicksPerDay (void)
" LIMIT 100");
break;
case Hie_Lvl_CTY:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
"usr_figures.UsrCod,"
"usr_figures.NumClicks/(DATEDIFF(NOW(),"
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
" FROM institutions,centres,deg_degrees,courses,crs_usr,usr_figures"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_figures"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod"
" AND usr_figures.NumClicks>0"
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
@ -1635,17 +1678,21 @@ void Prf_GetAndShowRankingClicksPerDay (void)
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
"usr_figures.UsrCod,"
"usr_figures.NumClicks/(DATEDIFF(NOW(),"
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
" FROM centres,deg_degrees,courses,crs_usr,usr_figures"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_figures"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod"
" AND usr_figures.NumClicks>0"
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
@ -1656,16 +1703,19 @@ void Prf_GetAndShowRankingClicksPerDay (void)
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
"usr_figures.UsrCod,"
"usr_figures.NumClicks/(DATEDIFF(NOW(),"
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
" FROM deg_degrees,courses,crs_usr,usr_figures"
" FROM deg_degrees,"
"crs_courses,"
"crs_usr,"
"usr_figures"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod"
" AND usr_figures.NumClicks>0"
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
@ -1676,15 +1726,17 @@ void Prf_GetAndShowRankingClicksPerDay (void)
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
"usr_figures.UsrCod,"
"usr_figures.NumClicks/(DATEDIFF(NOW(),"
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
" FROM courses,crs_usr,usr_figures"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod"
" FROM crs_courses,"
"crs_usr,"
"usr_figures"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod"
" AND usr_figures.NumClicks>0"
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
@ -1695,13 +1747,14 @@ void Prf_GetAndShowRankingClicksPerDay (void)
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT DISTINCTROW "
"usr_figures.UsrCod,"
"usr_figures.NumClicks/(DATEDIFF(NOW(),"
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
" FROM crs_usr,usr_figures"
" FROM crs_usr,"
"usr_figures"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_figures.UsrCod"
" AND usr_figures.NumClicks>0"

View File

@ -2182,82 +2182,77 @@ void Prg_RemoveCrsItems (long CrsCod)
unsigned Prg_GetNumCoursesWithItems (Hie_Lvl_Level_t Scope)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumCourses;
/***** Get number of courses with program items from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of courses with program items",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with program items",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM prg_items"
" WHERE CrsCod>0");
break;
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of courses with program items",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with program items",
"SELECT COUNT(DISTINCT prg_items.CrsCod)"
" FROM institutions,centres,deg_degrees,courses,prg_items"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"prg_items"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.Status=0"
" AND courses.CrsCod=prg_items.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=prg_items.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of courses with program items",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with program items",
"SELECT COUNT(DISTINCT prg_items.CrsCod)"
" FROM centres,deg_degrees,courses,prg_items"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"prg_items"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.Status=0"
" AND courses.CrsCod=prg_items.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=prg_items.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of courses with program items",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with program items",
"SELECT COUNT(DISTINCT prg_items.CrsCod)"
" FROM deg_degrees,courses,prg_items"
" FROM deg_degrees,"
"crs_courses,"
"prg_items"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.Status=0"
" AND courses.CrsCod=prg_items.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=prg_items.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of courses with program items",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with program items",
"SELECT COUNT(DISTINCT prg_items.CrsCod)"
" FROM courses,prg_items"
" WHERE courses.DegCod=%ld"
" AND courses.Status=0"
" AND courses.CrsCod=prg_items.CrsCod",
" FROM crs_courses,"
"prg_items"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=prg_items.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of courses with program items",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with program items",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM prg_items"
" WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod);
break;
default:
Lay_WrongScopeExit ();
break;
return 0;
}
/***** Get number of courses *****/
row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&NumCourses) != 1)
Lay_ShowErrorAndExit ("Error when getting number of courses with program items.");
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
return NumCourses;
}
/*****************************************************************************/
@ -2267,76 +2262,77 @@ unsigned Prg_GetNumCoursesWithItems (Hie_Lvl_Level_t Scope)
unsigned Prg_GetNumItems (Hie_Lvl_Level_t Scope)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumItems;
/***** Get number of program items from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of program items",
return (unsigned)
DB_QueryCOUNT ("can not get number of program items",
"SELECT COUNT(*)"
" FROM prg_items"
" WHERE CrsCod>0");
break;
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of program items",
return (unsigned)
DB_QueryCOUNT ("can not get number of program items",
"SELECT COUNT(*)"
" FROM institutions,centres,deg_degrees,courses,prg_items"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"prg_items"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=prg_items.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=prg_items.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of program items",
return (unsigned)
DB_QueryCOUNT ("can not get number of program items",
"SELECT COUNT(*)"
" FROM centres,deg_degrees,courses,prg_items"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"prg_items"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=prg_items.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=prg_items.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of program items",
return (unsigned)
DB_QueryCOUNT ("can not get number of program items",
"SELECT COUNT(*)"
" FROM deg_degrees,courses,prg_items"
" FROM deg_degrees,"
"crs_courses,"
"prg_items"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=prg_items.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=prg_items.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of program items",
return (unsigned)
DB_QueryCOUNT ("can not get number of program items",
"SELECT COUNT(*)"
" FROM courses,prg_items"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=prg_items.CrsCod",
" FROM crs_courses,"
"prg_items"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=prg_items.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of program items",
return (unsigned)
DB_QueryCOUNT ("can not get number of program items",
"SELECT COUNT(*)"
" FROM prg_items"
" WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod);
break;
default:
Lay_WrongScopeExit ();
break;
return 0;
}
/***** Get number of program items *****/
row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&NumItems) != 1)
Lay_ShowErrorAndExit ("Error when getting number of program items.");
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
return NumItems;
}

View File

@ -4570,82 +4570,79 @@ void Prj_RemoveUsrFromProjects (long UsrCod)
unsigned Prj_GetNumCoursesWithProjects (Hie_Lvl_Level_t Scope)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumCourses;
/***** Get number of courses with projects from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of courses with projects",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM projects"
" WHERE CrsCod>0");
break;
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of courses with projects",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT projects.CrsCod)"
" FROM institutions,centres,deg_degrees,courses,projects"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"projects"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.Status=0"
" AND courses.CrsCod=projects.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=projects.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of courses with projects",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT projects.CrsCod)"
" FROM centres,deg_degrees,courses,projects"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"projects"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.Status=0"
" AND courses.CrsCod=projects.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=projects.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of courses with projects",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT projects.CrsCod)"
" FROM deg_degrees,courses,projects"
" FROM deg_degrees,"
"crs_courses,"
"projects"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.Status=0"
" AND courses.CrsCod=projects.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=projects.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of courses with projects",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT projects.CrsCod)"
" FROM courses,projects"
" WHERE courses.DegCod=%ld"
" AND courses.Status=0"
" AND courses.CrsCod=projects.CrsCod",
" FROM crs_courses,"
"projects"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=projects.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of courses with projects",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM projects"
" WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod);
break;
default:
Lay_WrongScopeExit ();
break;
return 0;
}
/***** Get number of courses *****/
row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&NumCourses) != 1)
Lay_ShowErrorAndExit ("Error when getting number of courses with projects.");
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
return NumCourses;
}
/*****************************************************************************/
@ -4655,76 +4652,77 @@ unsigned Prj_GetNumCoursesWithProjects (Hie_Lvl_Level_t Scope)
unsigned Prj_GetNumProjects (Hie_Lvl_Level_t Scope)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumProjects;
/***** Get number of projects from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of projects",
return (unsigned)
DB_QueryCOUNT ("can not get number of projects",
"SELECT COUNT(*)"
" FROM projects"
" WHERE CrsCod>0");
break;
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of projects",
return (unsigned)
DB_QueryCOUNT ("can not get number of projects",
"SELECT COUNT(*)"
" FROM institutions,centres,deg_degrees,courses,projects"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"projects"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=projects.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=projects.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of projects",
return (unsigned)
DB_QueryCOUNT ("can not get number of projects",
"SELECT COUNT(*)"
" FROM centres,deg_degrees,courses,projects"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"projects"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=projects.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=projects.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of projects",
return (unsigned)
DB_QueryCOUNT ("can not get number of projects",
"SELECT COUNT(*)"
" FROM deg_degrees,courses,projects"
" FROM deg_degrees,"
"crs_courses,"
"projects"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=projects.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=projects.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of projects",
return (unsigned)
DB_QueryCOUNT ("can not get number of projects",
"SELECT COUNT(*)"
" FROM courses,projects"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=projects.CrsCod",
" FROM crs_courses,"
"projects"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=projects.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of projects",
return (unsigned)
DB_QueryCOUNT ("can not get number of projects",
"SELECT COUNT(*)"
" FROM projects"
" WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod);
break;
default:
Lay_WrongScopeExit ();
break;
return 0;
}
/***** Get number of projects *****/
row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&NumProjects) != 1)
Lay_ShowErrorAndExit ("Error when getting number of projects.");
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
return NumProjects;
}

View File

@ -370,7 +370,7 @@ static void Sch_SearchInDB (void)
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
sprintf (RangeQuery," AND courses.CrsCod=%ld",
sprintf (RangeQuery," AND crs_courses.CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod);
break;
}
@ -604,29 +604,33 @@ static unsigned Sch_SearchCoursesInDB (const char *RangeQuery)
/***** Check user's permission *****/
if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_COURSES))
/***** Split course string into words *****/
if (Sch_BuildSearchQuery (SearchQuery,"courses.FullName",NULL,NULL))
if (Sch_BuildSearchQuery (SearchQuery,"crs_courses.FullName",NULL,NULL))
{
/***** Query database and list courses found *****/
NumCrss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get courses",
"SELECT deg_degrees.DegCod," // row[0]
"courses.CrsCod," // row[1]
"crs_courses.CrsCod," // row[1]
"deg_degrees.ShortName," // row[2]
"deg_degrees.FullName," // row[3]
"courses.Year," // row[4]
"courses.FullName," // row[5]
"crs_courses.Year," // row[4]
"crs_courses.FullName," // row[5]
"centres.ShortName" // row[6]
" FROM courses,deg_degrees,centres,institutions,countries"
" FROM crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"countries"
" WHERE %s"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
" ORDER BY courses.FullName,"
" ORDER BY crs_courses.FullName,"
"institutions.FullName,"
"degrees.FullName,"
"courses.Year",
"crs_courses.Year",
SearchQuery,RangeQuery);
Crs_ListCrssFound (&mysql_res,NumCrss);
return NumCrss;
@ -683,7 +687,8 @@ static unsigned Sch_SearchOpenDocumentsInDB (const char *RangeQuery)
"_latin1 "," COLLATE latin1_general_ci"))
{
/***** Query database *****/
NumDocs = DB_QuerySELECT (&mysql_res,"can not get files",
NumDocs =
DB_QuerySELECT (&mysql_res,"can not get files",
"SELECT * FROM "
"("
"SELECT files.FilCod," // Institution
@ -697,7 +702,12 @@ static unsigned Sch_SearchOpenDocumentsInDB (const char *RangeQuery)
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" FROM files,courses,deg_degrees,centres,institutions,countries"
" FROM files,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"countries"
" WHERE files.Public='Y' AND %s"
" AND files.FileBrowser IN (%u,%u)"
" AND files.Cod=institutions.InsCod"
@ -715,7 +725,12 @@ static unsigned Sch_SearchOpenDocumentsInDB (const char *RangeQuery)
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" FROM files,courses,deg_degrees,centres,institutions,countries"
" FROM files,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"countries"
" WHERE files.Public='Y' AND %s"
" AND files.FileBrowser IN (%u,%u)"
" AND files.Cod=centres.CtrCod"
@ -733,7 +748,12 @@ static unsigned Sch_SearchOpenDocumentsInDB (const char *RangeQuery)
"deg_degrees.ShortName AS DegShortName,"
"-1,'' AS CrsShortName,"
"-1"
" FROM files,courses,deg_degrees,centres,institutions,countries"
" FROM files,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"countries"
" WHERE files.Public='Y' AND %s"
" AND files.FileBrowser IN (%u,%u)"
" AND files.Cod=deg_degrees.DegCod"
@ -750,14 +770,19 @@ static unsigned Sch_SearchOpenDocumentsInDB (const char *RangeQuery)
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"courses.CrsCod,"
"courses.ShortName AS CrsShortName,"
"crs_courses.CrsCod,"
"crs_courses.ShortName AS CrsShortName,"
"-1"
" FROM files,courses,deg_degrees,centres,institutions,countries"
" FROM files,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"countries"
" WHERE files.Public='Y' AND %s"
" AND files.FileBrowser IN (%u,%u)"
" AND files.Cod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND files.Cod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
@ -849,7 +874,8 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
(unsigned) Brw_ADMI_MRK_GRP);
/***** Build the query *****/
NumDocs = DB_QuerySELECT (&mysql_res,"can not get files",
NumDocs =
DB_QuerySELECT (&mysql_res,"can not get files",
"SELECT * FROM "
"("
"SELECT files.FilCod,"
@ -860,14 +886,19 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"courses.CrsCod,"
"courses.ShortName AS CrsShortName,"
"crs_courses.CrsCod,"
"crs_courses.ShortName AS CrsShortName,"
"-1 AS GrpCod"
" FROM files,courses,deg_degrees,centres,institutions,countries"
" FROM files,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"countries"
" WHERE files.FilCod IN (SELECT FilCod FROM my_files_crs) AND %s"
" AND files.FileBrowser IN (%u,%u,%u,%u)"
" AND files.Cod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND files.Cod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
@ -881,16 +912,23 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"courses.CrsCod,"
"courses.ShortName AS CrsShortName,"
"crs_courses.CrsCod,"
"crs_courses.ShortName AS CrsShortName,"
"crs_grp.GrpCod"
" FROM files,crs_grp,crs_grp_types,courses,deg_degrees,centres,institutions,countries"
" FROM files,"
"crs_grp,"
"crs_grp_types,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"countries"
" WHERE files.FilCod IN (SELECT FilCod FROM my_files_grp) AND %s"
" AND files.FileBrowser IN (%u,%u,%u,%u)"
" AND files.Cod=crs_grp.GrpCod"
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
" AND crs_grp_types.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_grp_types.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
@ -949,7 +987,8 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
"_latin1 "," COLLATE latin1_general_ci"))
{
/***** Build the query *****/
NumDocs = DB_QuerySELECT (&mysql_res,"can not get files",
NumDocs =
DB_QuerySELECT (&mysql_res,"can not get files",
"SELECT * FROM "
"("
"SELECT files.FilCod," // Institution
@ -963,7 +1002,12 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" FROM files,courses,deg_degrees,centres,institutions,countries"
" FROM files,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"countries"
" WHERE files.PublisherUsrCod=%ld AND %s"
" AND files.FileBrowser IN (%u,%u)"
" AND files.Cod=institutions.InsCod"
@ -981,7 +1025,12 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" FROM files,courses,deg_degrees,centres,institutions,countries"
" FROM files,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"countries"
" WHERE files.PublisherUsrCod=%ld AND %s"
" AND files.FileBrowser IN (%u,%u)"
" AND files.Cod=centres.CtrCod"
@ -1000,7 +1049,12 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" FROM files,courses,deg_degrees,centres,institutions,countries"
" FROM files,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"countries"
" WHERE files.PublisherUsrCod=%ld AND %s"
" AND files.FileBrowser IN (%u,%u)"
" AND files.Cod=deg_degrees.DegCod"
@ -1017,14 +1071,19 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"courses.CrsCod,"
"courses.ShortName AS CrsShortName,"
"crs_courses.CrsCod,"
"crs_courses.ShortName AS CrsShortName,"
"-1 AS GrpCod"
" FROM files,courses,deg_degrees,centres,institutions,countries"
" FROM files,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"countries"
" WHERE files.PublisherUsrCod=%ld AND %s"
" AND files.FileBrowser IN (%u,%u,%u,%u)"
" AND files.Cod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND files.Cod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
@ -1038,16 +1097,23 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"courses.CrsCod,"
"courses.ShortName AS CrsShortName,"
"crs_courses.CrsCod,"
"crs_courses.ShortName AS CrsShortName,"
"crs_grp.GrpCod"
" FROM files,crs_grp,crs_grp_types,courses,deg_degrees,centres,institutions,countries"
" FROM files,"
"crs_grp,"
"crs_grp_types,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"countries"
" WHERE files.PublisherUsrCod=%ld AND %s"
" AND files.FileBrowser IN (%u,%u,%u,%u)"
" AND files.Cod=crs_grp.GrpCod"
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
" AND crs_grp_types.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_grp_types.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
@ -1069,7 +1135,11 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
" AND files.FileBrowser=%u"
") AS selected_files"
" WHERE PathFromRoot<>''"
" ORDER BY InsShortName,CtrShortName,DegShortName,CrsShortName,PathFromRoot",
" ORDER BY InsShortName,"
"CtrShortName,"
"DegShortName,"
"CrsShortName,"
"PathFromRoot",
Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery,
(unsigned) Brw_ADMI_DOC_INS,
(unsigned) Brw_ADMI_SHR_INS,

View File

@ -3877,94 +3877,83 @@ static unsigned Svy_GetNumUsrsWhoHaveAnsweredSvy (long SvyCod)
unsigned Svy_GetNumCoursesWithCrsSurveys (Hie_Lvl_Level_t Scope)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumCourses;
/***** Get number of courses with surveys from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with surveys",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT Cod)"
" FROM svy_surveys"
" WHERE Scope='%s'",
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
break;
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with surveys",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT svy_surveys.Cod)"
" FROM institutions,centres,deg_degrees,courses,svy_surveys"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"svy_surveys"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=svy_surveys.Cod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Ins.InsCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with surveys",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT svy_surveys.Cod)"
" FROM centres,deg_degrees,courses,svy_surveys"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"svy_surveys"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=svy_surveys.Cod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Ins.InsCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with surveys",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT svy_surveys.Cod)"
" FROM deg_degrees,courses,svy_surveys"
" FROM deg_degrees,"
"crs_courses,"
"svy_surveys"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=svy_surveys.Cod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Ctr.CtrCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with surveys",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT svy_surveys.Cod)"
" FROM courses,svy_surveys"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=svy_surveys.Cod"
" FROM crs_courses,"
"svy_surveys"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Deg.DegCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
break;
case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with surveys",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT Cod)"
" FROM svy_surveys"
" WHERE Scope='%s' AND Cod=%ld",
Sco_GetDBStrFromScope (Hie_Lvl_CRS),
Gbl.Hierarchy.Crs.CrsCod);
break;
default:
Lay_WrongScopeExit ();
break;
return 0;
}
/***** Get number of surveys *****/
row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&NumCourses) != 1)
Lay_ShowErrorAndExit ("Error when getting number of courses with surveys.");
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
return NumCourses;
}
/*****************************************************************************/
@ -3984,60 +3973,76 @@ unsigned Svy_GetNumCrsSurveys (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
{
case Hie_Lvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of surveys",
"SELECT COUNT(*),SUM(NumNotif)"
"SELECT COUNT(*),"
"SUM(NumNotif)"
" FROM svy_surveys"
" WHERE Scope='%s'",
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
break;
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of surveys",
"SELECT COUNT(*),SUM(svy_surveys.NumNotif)"
" FROM institutions,centres,deg_degrees,courses,svy_surveys"
"SELECT COUNT(*),"
"SUM(svy_surveys.NumNotif)"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"svy_surveys"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=svy_surveys.Cod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Cty.CtyCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of surveys",
"SELECT COUNT(*),SUM(svy_surveys.NumNotif)"
" FROM centres,deg_degrees,courses,svy_surveys"
"SELECT COUNT(*),"
"SUM(svy_surveys.NumNotif)"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"svy_surveys"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=svy_surveys.Cod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Ins.InsCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
break;
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of surveys",
"SELECT COUNT(*),SUM(svy_surveys.NumNotif)"
" FROM deg_degrees,courses,svy_surveys"
"SELECT COUNT(*),"
"SUM(svy_surveys.NumNotif)"
" FROM deg_degrees,"
"crs_courses,"
"svy_surveys"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=svy_surveys.Cod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Ctr.CtrCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
break;
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of surveys",
"SELECT COUNT(*),SUM(svy_surveys.NumNotif)"
" FROM courses,svy_surveys"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=svy_surveys.Cod"
"SELECT COUNT(*),"
"SUM(svy_surveys.NumNotif)"
" FROM crs_courses,"
"svy_surveys"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Deg.DegCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
break;
case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of surveys",
"SELECT COUNT(*),SUM(NumNotif)"
"SELECT COUNT(*),"
"SUM(NumNotif)"
" FROM svy_surveys"
" WHERE svy_surveys.Scope='%s'"
" AND CrsCod=%ld",
@ -4087,7 +4092,8 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
" per survey",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
" FROM svy_surveys,svy_questions"
" FROM svy_surveys,"
"svy_questions"
" WHERE svy_surveys.Scope='%s'"
" AND svy_surveys.SvyCod=svy_questions.SvyCod"
" GROUP BY svy_questions.SvyCod) AS NumQstsTable",
@ -4098,12 +4104,17 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
" per survey",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
" FROM institutions,centres,deg_degrees,courses,svy_surveys,svy_questions"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"svy_surveys,"
"svy_questions"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=svy_surveys.Cod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'"
" AND svy_surveys.SvyCod=svy_questions.SvyCod"
" GROUP BY svy_questions.SvyCod) AS NumQstsTable",
@ -4115,11 +4126,15 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
" per survey",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
" FROM centres,deg_degrees,courses,svy_surveys,svy_questions"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"svy_surveys,"
"svy_questions"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=svy_surveys.Cod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'"
" AND svy_surveys.SvyCod=svy_questions.SvyCod"
" GROUP BY svy_questions.SvyCod) AS NumQstsTable",
@ -4131,10 +4146,13 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
" per survey",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
" FROM deg_degrees,courses,svy_surveys,svy_questions"
" FROM deg_degrees,"
"crs_courses,"
"svy_surveys,"
"svy_questions"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=svy_surveys.Cod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'"
" AND svy_surveys.SvyCod=svy_questions.SvyCod"
" GROUP BY svy_questions.SvyCod) AS NumQstsTable",
@ -4146,9 +4164,11 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
" per survey",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
" FROM courses,svy_surveys,svy_questions"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=svy_surveys.Cod"
" FROM crs_courses,"
"svy_surveys,"
"svy_questions"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'"
" AND svy_surveys.SvyCod=svy_questions.SvyCod"
" GROUP BY svy_questions.SvyCod) AS NumQstsTable",
@ -4160,7 +4180,8 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
" per survey",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
" FROM svy_surveys,svy_questions"
" FROM svy_surveys,"
"svy_questions"
" WHERE svy_surveys.Scope='%s' AND svy_surveys.Cod=%ld"
" AND svy_surveys.SvyCod=svy_questions.SvyCod"
" GROUP BY svy_questions.SvyCod) AS NumQstsTable",

View File

@ -5359,24 +5359,32 @@ static unsigned Tst_GetNumTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t A
"SELECT COUNT(*),"
"SUM(NumHits),"
"SUM(Score)"
" FROM institutions,centres,deg_degrees,courses,tst_questions"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"tst_questions"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
else
DB_QuerySELECT (&mysql_res,"can not get number of test questions",
"SELECT COUNT(*),"
"SUM(NumHits),"
"SUM(Score)"
" FROM institutions,centres,deg_degrees,courses,tst_questions"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"tst_questions"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.AnsType='%s'",
Gbl.Hierarchy.Cty.CtyCod,
Tst_StrAnswerTypesDB[AnsType]);
@ -5387,22 +5395,28 @@ static unsigned Tst_GetNumTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t A
"SELECT COUNT(*),"
"SUM(NumHits),"
"SUM(Score)"
" FROM centres,deg_degrees,courses,tst_questions"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"tst_questions"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
else
DB_QuerySELECT (&mysql_res,"can not get number of test questions",
"SELECT COUNT(*),"
"SUM(NumHits),"
"SUM(Score)"
" FROM centres,deg_degrees,courses,tst_questions"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"tst_questions"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.AnsType='%s'",
Gbl.Hierarchy.Ins.InsCod,
Tst_StrAnswerTypesDB[AnsType]);
@ -5413,20 +5427,24 @@ static unsigned Tst_GetNumTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t A
"SELECT COUNT(*),"
"SUM(NumHits),"
"SUM(Score)"
" FROM deg_degrees,courses,tst_questions"
" FROM deg_degrees,"
"crs_courses,"
"tst_questions"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
else
DB_QuerySELECT (&mysql_res,"can not get number of test questions",
"SELECT COUNT(*),"
"SUM(NumHits),"
"SUM(Score)"
" FROM deg_degrees,courses,tst_questions"
" FROM deg_degrees,"
"crs_courses,"
"tst_questions"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.AnsType='%s'",
Gbl.Hierarchy.Ctr.CtrCod,
Tst_StrAnswerTypesDB[AnsType]);
@ -5437,18 +5455,20 @@ static unsigned Tst_GetNumTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t A
"SELECT COUNT(*),"
"SUM(NumHits),"
"SUM(Score)"
" FROM courses,tst_questions"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=tst_questions.CrsCod",
" FROM crs_courses,"
"tst_questions"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=tst_questions.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
else
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"
" FROM crs_courses,"
"tst_questions"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.AnsType='%s'",
Gbl.Hierarchy.Deg.DegCod,
Tst_StrAnswerTypesDB[AnsType]);
@ -5512,151 +5532,150 @@ static unsigned Tst_GetNumTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t A
static unsigned Tst_GetNumCoursesWithTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t AnsType)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumCourses;
/***** Get number of courses with test questions from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM tst_questions");
else
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM tst_questions"
" WHERE AnsType='%s'",
Tst_StrAnswerTypesDB[AnsType]);
break;
case Hie_Lvl_CTY:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM institutions,centres,deg_degrees,courses,tst_questions"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"tst_questions"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
else
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM institutions,centres,deg_degrees,courses,tst_questions"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"tst_questions"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.AnsType='%s'",
Gbl.Hierarchy.Cty.CtyCod,
Tst_StrAnswerTypesDB[AnsType]);
break;
case Hie_Lvl_INS:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM centres,deg_degrees,courses,tst_questions"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"tst_questions"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
else
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM centres,deg_degrees,courses,tst_questions"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"tst_questions"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.AnsType='%s'",
Gbl.Hierarchy.Ins.InsCod,
Tst_StrAnswerTypesDB[AnsType]);
break;
case Hie_Lvl_CTR:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM deg_degrees,courses,tst_questions"
" FROM deg_degrees,"
"crs_courses,"
"tst_questions"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
else
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM deg_degrees,courses,tst_questions"
" FROM deg_degrees,"
"crs_courses,"
"tst_questions"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.AnsType='%s'",
Gbl.Hierarchy.Ctr.CtrCod,
Tst_StrAnswerTypesDB[AnsType]);
break;
case Hie_Lvl_DEG:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with test questions",
return (unsigned)
DB_QueryCOUNT ("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",
" FROM crs_courses,"
"tst_questions"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=tst_questions.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
else
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with test questions",
return (unsigned)
DB_QueryCOUNT ("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"
" FROM crs_courses,"
"tst_questions"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.AnsType='%s'",
Gbl.Hierarchy.Deg.DegCod,
Tst_StrAnswerTypesDB[AnsType]);
break;
case Hie_Lvl_CRS:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM tst_questions"
" WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod);
else
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM tst_questions"
" WHERE CrsCod=%ld"
" AND AnsType='%s'",
Gbl.Hierarchy.Crs.CrsCod,
Tst_StrAnswerTypesDB[AnsType]);
break;
default:
Lay_WrongScopeExit ();
break;
return 0;
}
/***** Get number of courses *****/
row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&NumCourses) != 1)
Lay_ShowErrorAndExit ("Error when getting number of courses with test questions.");
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
return NumCourses;
}
/*****************************************************************************/
@ -5668,165 +5687,189 @@ static unsigned Tst_GetNumCoursesWithTstQuestions (Hie_Lvl_Level_t Scope,Tst_Ans
static unsigned Tst_GetNumCoursesWithPluggableTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t AnsType)
{
extern const char *TstCfg_PluggableDB[TstCfg_NUM_OPTIONS_PLUGGABLE];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumCourses;
/***** Get number of courses with test questions from database *****/
switch (Scope)
{
case Hie_Lvl_SYS:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with pluggable test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with pluggable test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM tst_questions,tst_config"
" FROM tst_questions,"
"tst_config"
" WHERE tst_questions.CrsCod=tst_config.CrsCod"
" AND tst_config.pluggable='%s'",
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
else
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with pluggable test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with pluggable test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM tst_questions,tst_config"
" 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],
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
break;
case Hie_Lvl_CTY:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with pluggable test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with pluggable test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM institutions,centres,deg_degrees,courses,tst_questions,tst_config"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"tst_questions,"
"tst_config"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.CrsCod=tst_config.CrsCod"
" AND tst_config.pluggable='%s'",
Gbl.Hierarchy.Cty.CtyCod,
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
else
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with pluggable test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with pluggable test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM institutions,centres,deg_degrees,courses,tst_questions,tst_config"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"tst_questions,"
"tst_config"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.AnsType='%s'"
" AND tst_questions.CrsCod=tst_config.CrsCod"
" AND tst_config.pluggable='%s'",
Gbl.Hierarchy.Cty.CtyCod,
Tst_StrAnswerTypesDB[AnsType],
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
break;
case Hie_Lvl_INS:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with pluggable test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with pluggable test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM centres,deg_degrees,courses,tst_questions,tst_config"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"tst_questions,"
"tst_config"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.CrsCod=tst_config.CrsCod"
" AND tst_config.pluggable='%s'",
Gbl.Hierarchy.Ins.InsCod,
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
else
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with pluggable test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with pluggable test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM centres,deg_degrees,courses,tst_questions,tst_config"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"tst_questions,"
"tst_config"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.AnsType='%s'"
" AND tst_questions.CrsCod=tst_config.CrsCod"
" AND tst_config.pluggable='%s'",
Gbl.Hierarchy.Ins.InsCod,
Tst_StrAnswerTypesDB[AnsType],
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
break;
case Hie_Lvl_CTR:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with pluggable test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with pluggable test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM deg_degrees,courses,tst_questions,tst_config"
" FROM deg_degrees,"
"crs_courses,"
"tst_questions,"
"tst_config"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.CrsCod=tst_config.CrsCod"
" AND tst_config.pluggable='%s'",
Gbl.Hierarchy.Ctr.CtrCod,
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
else
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with pluggable test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with pluggable test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM deg_degrees,courses,tst_questions,tst_config"
" FROM deg_degrees,"
"crs_courses,"
"tst_questions,"
"tst_config"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.AnsType='%s'"
" AND tst_questions.CrsCod=tst_config.CrsCod"
" AND tst_config.pluggable='%s'",
Gbl.Hierarchy.Ctr.CtrCod,
Tst_StrAnswerTypesDB[AnsType],
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
break;
case Hie_Lvl_DEG:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with pluggable test questions",
return (unsigned)
DB_QueryCOUNT ("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"
" FROM crs_courses,"
"tst_questions,"
"tst_config"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.CrsCod=tst_config.CrsCod"
" AND tst_config.pluggable='%s'",
Gbl.Hierarchy.Deg.DegCod,
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
else
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with pluggable test questions",
return (unsigned)
DB_QueryCOUNT ("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"
" FROM crs_courses,"
"tst_questions,"
"tst_config"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.AnsType='%s'"
" AND tst_questions.CrsCod=tst_config.CrsCod"
" AND tst_config.pluggable='%s'",
Gbl.Hierarchy.Deg.DegCod,
Tst_StrAnswerTypesDB[AnsType],
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
break;
case Hie_Lvl_CRS:
if (AnsType == Tst_ANS_UNKNOWN) // Any type
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with pluggable test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with pluggable test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM tst_questions,tst_config"
" FROM tst_questions,"
"tst_config"
" WHERE tst_questions.CrsCod=%ld"
" AND tst_questions.CrsCod=tst_config.CrsCod"
" AND tst_config.pluggable='%s'",
Gbl.Hierarchy.Crs.CrsCod,
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
else
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with pluggable test questions",
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with pluggable test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM tst_questions,tst_config"
" FROM tst_questions,"
"tst_config"
" WHERE tst_questions.CrsCod=%ld"
" AND tst_questions.AnsType='%s'"
" AND tst_questions.CrsCod=tst_config.CrsCod"
@ -5834,19 +5877,7 @@ static unsigned Tst_GetNumCoursesWithPluggableTstQuestions (Hie_Lvl_Level_t Scop
Gbl.Hierarchy.Crs.CrsCod,
Tst_StrAnswerTypesDB[AnsType],
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
break;
default:
Lay_WrongScopeExit ();
break;
return 0;
}
/***** Get number of courses *****/
row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&NumCourses) != 1)
Lay_ShowErrorAndExit ("Error when getting number of courses with pluggable test questions.");
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
return NumCourses;
}

View File

@ -1026,11 +1026,9 @@ bool Usr_ICanEditOtherUsr (const struct UsrData *UsrDat)
unsigned Usr_GetNumCrssOfUsr (long UsrCod)
{
/***** Get the number of courses of a user from database ******/
return
(unsigned) DB_QueryCOUNT ("can not get the number of courses of a user",
"SELECT COUNT(*) FROM crs_usr"
" WHERE UsrCod=%ld",
UsrCod);
return (unsigned)
DB_QueryCOUNT ("can not get the number of courses of a user",
"SELECT COUNT(*) FROM crs_usr WHERE UsrCod=%ld",UsrCod);
}
/*****************************************************************************/
@ -1040,8 +1038,8 @@ unsigned Usr_GetNumCrssOfUsr (long UsrCod)
unsigned Usr_GetNumCrssOfUsrNotAccepted (long UsrCod)
{
/***** Get the number of courses of a user not accepted from database ******/
return
(unsigned) DB_QueryCOUNT ("can not get the number of courses of a user",
return (unsigned)
DB_QueryCOUNT ("can not get the number of courses of a user",
"SELECT COUNT(*) FROM crs_usr"
" WHERE UsrCod=%ld AND Accepted='N'",
UsrCod);
@ -1054,11 +1052,9 @@ unsigned Usr_GetNumCrssOfUsrNotAccepted (long UsrCod)
unsigned Usr_GetNumCrssOfUsrWithARole (long UsrCod,Rol_Role_t Role)
{
/***** Get the number of courses of a user with a role from database ******/
return
(unsigned) DB_QueryCOUNT ("can not get the number of courses of a user"
" with a role",
"SELECT COUNT(*) FROM crs_usr"
" WHERE UsrCod=%ld AND Role=%u",
return (unsigned)
DB_QueryCOUNT ("can not get the number of courses of a user with a role",
"SELECT COUNT(*) FROM crs_usr WHERE UsrCod=%ld AND Role=%u",
UsrCod,(unsigned) Role);
}
@ -1069,9 +1065,8 @@ unsigned Usr_GetNumCrssOfUsrWithARole (long UsrCod,Rol_Role_t Role)
unsigned Usr_GetNumCrssOfUsrWithARoleNotAccepted (long UsrCod,Rol_Role_t Role)
{
/***** Get the number of courses of a user with a role from database ******/
return
(unsigned) DB_QueryCOUNT ("can not get the number of courses of a user"
" with a role",
return (unsigned)
DB_QueryCOUNT ("can not get the number of courses of a user with a role",
"SELECT COUNT(*) FROM crs_usr"
" WHERE UsrCod=%ld AND Role=%u AND Accepted='N'",
UsrCod,(unsigned) Role);
@ -1721,13 +1716,17 @@ void Usr_GetMyCourses (void)
"Role TINYINT NOT NULL,"
"DegCod INT NOT NULL,"
"UNIQUE INDEX(CrsCod,Role,DegCod)) ENGINE=MEMORY"
" SELECT crs_usr.CrsCod,crs_usr.Role,courses.DegCod"
" FROM crs_usr,courses,deg_degrees"
" SELECT crs_usr.CrsCod,"
"crs_usr.Role,"
"crs_courses.DegCod"
" FROM crs_usr,"
"crs_courses,"
"deg_degrees"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" ORDER BY deg_degrees.ShortName,"
"courses.ShortName",
"crs_courses.ShortName",
Gbl.Usrs.Me.UsrDat.UsrCod);
/***** Get my courses from database *****/
@ -1881,11 +1880,14 @@ bool Usr_CheckIfUsrBelongsToIns (long UsrCod,long InsCod)
Gbl.Cache.UsrBelongsToIns.Belongs =
(DB_QueryCOUNT ("can not check if a user belongs to an institution",
"SELECT COUNT(DISTINCT centres.InsCod)"
" FROM crs_usr,courses,deg_degrees,centres"
" FROM crs_usr,"
"crs_courses,"
"deg_degrees,"
"centres"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Accepted='Y'" // Only if user accepted
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=%ld",
UsrCod,InsCod) != 0);
@ -1921,11 +1923,13 @@ bool Usr_CheckIfUsrBelongsToCtr (long UsrCod,long CtrCod)
Gbl.Cache.UsrBelongsToCtr.Belongs =
(DB_QueryCOUNT ("can not check if a user belongs to a centre",
"SELECT COUNT(DISTINCT deg_degrees.CtrCod)"
" FROM crs_usr,courses,deg_degrees"
" FROM crs_usr,"
"crs_courses,"
"deg_degrees"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Accepted='Y'" // Only if user accepted
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld",
UsrCod,CtrCod) != 0);
return Gbl.Cache.UsrBelongsToCtr.Belongs;
@ -1959,12 +1963,13 @@ bool Usr_CheckIfUsrBelongsToDeg (long UsrCod,long DegCod)
Gbl.Cache.UsrBelongsToDeg.DegCod = DegCod;
Gbl.Cache.UsrBelongsToDeg.Belongs =
(DB_QueryCOUNT ("can not check if a user belongs to a degree",
"SELECT COUNT(DISTINCT courses.DegCod)"
" FROM crs_usr,courses"
"SELECT COUNT(DISTINCT crs_courses.DegCod)"
" FROM crs_usr,"
"crs_courses"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Accepted='Y'" // Only if user accepted
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=%ld",
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=%ld",
UsrCod,DegCod) != 0);
return Gbl.Cache.UsrBelongsToDeg.Belongs;
}
@ -2196,16 +2201,17 @@ unsigned Usr_GetCtysFromUsr (long UsrCod,MYSQL_RES **mysql_res)
return
(unsigned) DB_QuerySELECT (mysql_res,"can not get the countries"
" a user belongs to",
"SELECT countries.CtyCod,MAX(crs_usr.Role)"
"SELECT countries.CtyCod,"
"MAX(crs_usr.Role)"
" FROM crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"countries"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
@ -2228,13 +2234,13 @@ unsigned long Usr_GetInssFromUsr (long UsrCod,long CtyCod,MYSQL_RES **mysql_res)
"SELECT institutions.InsCod,"
"MAX(crs_usr.Role)"
" FROM crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=%ld"
@ -2247,13 +2253,13 @@ unsigned long Usr_GetInssFromUsr (long UsrCod,long CtyCod,MYSQL_RES **mysql_res)
"SELECT institutions.InsCod,"
"MAX(crs_usr.Role)"
" FROM crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" GROUP BY institutions.InsCod"
@ -2275,12 +2281,12 @@ unsigned long Usr_GetCtrsFromUsr (long UsrCod,long InsCod,MYSQL_RES **mysql_res)
"SELECT centres.CtrCod,"
"MAX(crs_usr.Role)"
" FROM crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees,"
"centres"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=%ld"
" GROUP BY centres.CtrCod"
@ -2292,12 +2298,12 @@ unsigned long Usr_GetCtrsFromUsr (long UsrCod,long InsCod,MYSQL_RES **mysql_res)
"SELECT deg_degrees.CtrCod,"
"MAX(crs_usr.Role)"
" FROM crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees,"
"centres"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" GROUP BY centres.CtrCod"
" ORDER BY centres.ShortName",
@ -2318,11 +2324,11 @@ unsigned long Usr_GetDegsFromUsr (long UsrCod,long CtrCod,MYSQL_RES **mysql_res)
"SELECT deg_degrees.DegCod,"
"MAX(crs_usr.Role)"
" FROM crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld"
" GROUP BY deg_degrees.DegCod"
" ORDER BY deg_degrees.ShortName",
@ -2333,11 +2339,11 @@ unsigned long Usr_GetDegsFromUsr (long UsrCod,long CtrCod,MYSQL_RES **mysql_res)
"SELECT deg_degrees.DegCod,"
"MAX(crs_usr.Role)"
" FROM crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" GROUP BY deg_degrees.DegCod"
" ORDER BY deg_degrees.ShortName",
UsrCod);
@ -2356,28 +2362,28 @@ unsigned long Usr_GetCrssFromUsr (long UsrCod,long DegCod,MYSQL_RES **mysql_res)
" a user belongs to",
"SELECT crs_usr.CrsCod,"
"crs_usr.Role,"
"courses.DegCod"
"crs_courses.DegCod"
" FROM crs_usr,"
"courses"
"crs_courses"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=%ld"
" ORDER BY courses.ShortName",
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=%ld"
" ORDER BY crs_courses.ShortName",
UsrCod,DegCod);
else // All the courses
return DB_QuerySELECT (mysql_res,"can not get the courses"
" a user belongs to",
"SELECT crs_usr.CrsCod,"
"crs_usr.Role,"
"courses.DegCod"
"crs_courses.DegCod"
" FROM crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" ORDER BY deg_degrees.ShortName,"
"courses.ShortName",
"crs_courses.ShortName",
UsrCod);
}
@ -2399,13 +2405,14 @@ void Usr_GetMainDeg (long UsrCod,
" FROM deg_degrees,"
// The second table contain only one row with the main degree
" (SELECT courses.DegCod AS DegCod,"
" (SELECT crs_courses.DegCod AS DegCod,"
"MAX(crs_usr.Role) AS MaxRole,"
"COUNT(*) AS N"
" FROM crs_usr,courses"
" FROM crs_usr,"
"crs_courses"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.CrsCod=courses.CrsCod"
" GROUP BY courses.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" GROUP BY crs_courses.DegCod"
" ORDER BY N DESC" // Ordered by number of courses in which user is enroled
" LIMIT 1)" // We need only the main degree
" AS main_degree"
@ -4087,21 +4094,20 @@ unsigned Usr_GetNumTchsCurrentInsInDepartment (long DptCod)
{
/***** Get the number of teachers
from the current institution in a department *****/
return
(unsigned) DB_QueryCOUNT ("can not get the number of teachers"
" in a department",
return (unsigned)
DB_QueryCOUNT ("can not get the number of teachers in a department",
"SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM usr_data,"
"crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees,"
"centres"
" WHERE usr_data.InsCod=%ld" // User in the current institution...
" AND usr_data.DptCod=%ld" // ...and the specified department...
" AND usr_data.UsrCod=crs_usr.UsrCod" // ...who is...
" AND crs_usr.Role IN (%u,%u)" // ...a teacher...
" AND crs_usr.CrsCod=courses.CrsCod" // ...in a course...
" AND courses.DegCod=deg_degrees.DegCod" // ...of a degree...
" AND crs_usr.CrsCod=crs_courses.CrsCod" // ...in a course...
" AND crs_courses.DegCod=deg_degrees.DegCod" // ...of a degree...
" AND deg_degrees.CtrCod=centres.InsCod" // ...of a centre...
" AND centres.InsCod=%ld", // ...of the current institution
Gbl.Hierarchy.Ins.InsCod,DptCod,
@ -4597,14 +4603,14 @@ void Usr_GetListUsrs (Hie_Lvl_Level_t Scope,Rol_Role_t Role)
"SELECT %s"
" FROM usr_data,"
"crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions"
" WHERE usr_data.UsrCod=crs_usr.UsrCod"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=%ld"
@ -4622,13 +4628,13 @@ void Usr_GetListUsrs (Hie_Lvl_Level_t Scope,Rol_Role_t Role)
"SELECT %s"
" FROM usr_data,"
"crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees,"
"centres"
" WHERE usr_data.UsrCod=crs_usr.UsrCod"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=%ld"
" ORDER BY usr_data.Surname1,"
@ -4645,12 +4651,12 @@ void Usr_GetListUsrs (Hie_Lvl_Level_t Scope,Rol_Role_t Role)
"SELECT %s"
" FROM usr_data,"
"crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees"
" WHERE usr_data.UsrCod=crs_usr.UsrCod"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld"
" ORDER BY usr_data.Surname1,"
"usr_data.Surname2,"
@ -4666,11 +4672,11 @@ void Usr_GetListUsrs (Hie_Lvl_Level_t Scope,Rol_Role_t Role)
"SELECT %s"
" FROM usr_data,"
"crs_usr,"
"courses"
"crs_courses"
" WHERE usr_data.UsrCod=crs_usr.UsrCod"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=%ld"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=%ld"
" ORDER BY usr_data.Surname1,"
"usr_data.Surname2,"
"usr_data.FirstName,"
@ -4760,14 +4766,14 @@ void Usr_SearchListUsrs (Rol_Role_t Role)
"SELECT %s"
" FROM candidate_users,"
"crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"usr_data"
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=%ld"
@ -4782,13 +4788,13 @@ void Usr_SearchListUsrs (Rol_Role_t Role)
"SELECT %s"
" FROM candidate_users,"
"crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees,"
"centres,"
"usr_data"
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=%ld"
" AND %s",
@ -4802,12 +4808,12 @@ void Usr_SearchListUsrs (Rol_Role_t Role)
"SELECT %s"
" FROM candidate_users,"
"crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees,"
"usr_data"
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld"
" AND %s",
QueryFields,
@ -4820,11 +4826,11 @@ void Usr_SearchListUsrs (Rol_Role_t Role)
"SELECT %s"
" FROM candidate_users,"
"crs_usr,"
"courses,"
"crs_courses,"
"usr_data"
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=%ld"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=%ld"
" AND %s",
QueryFields,
Gbl.Hierarchy.Deg.DegCod,
@ -4907,15 +4913,15 @@ void Usr_SearchListUsrs (Rol_Role_t Role)
"SELECT %s"
" FROM candidate_users,"
"crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"usr_data"
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
"%s"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=%ld"
@ -4931,14 +4937,14 @@ void Usr_SearchListUsrs (Rol_Role_t Role)
"SELECT %s"
" FROM candidate_users,"
"crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees,"
"centres,"
"usr_data"
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
"%s"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=%ld"
" AND %s",
@ -4953,13 +4959,13 @@ void Usr_SearchListUsrs (Rol_Role_t Role)
"SELECT %s"
" FROM candidate_users,"
"crs_usr,"
"courses,"
"crs_courses,"
"deg_degrees,"
"usr_data"
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
"%s"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld"
" AND %s",
QueryFields,
@ -4973,12 +4979,12 @@ void Usr_SearchListUsrs (Rol_Role_t Role)
"SELECT %s"
" FROM candidate_users,"
"crs_usr,"
"courses,"
"crs_courses,"
"usr_data"
" WHERE candidate_users.UsrCod=crs_usr.UsrCod"
"%s"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=%ld"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=%ld"
" AND %s",
QueryFields,
SubQueryRole,
@ -5367,9 +5373,11 @@ void Usr_GetUnorderedStdsCodesInDeg (long DegCod)
"usr_data.PhotoVisibility," // row[ 8]
"usr_data.CtyCod," // row[ 9]
"usr_data.InsCod" // row[10]
" FROM courses,crs_usr,usr_data"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod"
" FROM crs_courses,"
"crs_usr,"
"usr_data"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod",
DegCod,(unsigned) Rol_STD);
@ -9368,123 +9376,123 @@ unsigned Usr_GetNumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,unsigned Roles)
break;
case Hie_Lvl_CTY:
if (AnyUserInCourses) // Any user
NumUsrs =
(unsigned) DB_QueryCOUNT ("can not get number of users",
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(DISTINCT crs_usr.UsrCod)"
" FROM institutions,"
"centres,"
"deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod",
Cod);
else
NumUsrs =
(unsigned) DB_QueryCOUNT ("can not get number of users",
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(DISTINCT crs_usr.UsrCod)"
" FROM institutions,"
"centres,"
"deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role%s",
Cod,SubQueryRoles);
break;
case Hie_Lvl_INS:
if (AnyUserInCourses) // Any user
NumUsrs =
(unsigned) DB_QueryCOUNT ("can not get number of users",
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(DISTINCT crs_usr.UsrCod)"
" FROM centres,"
"deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod",
Cod);
else
NumUsrs =
(unsigned) DB_QueryCOUNT ("can not get number of users",
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(DISTINCT crs_usr.UsrCod)"
" FROM centres,"
"deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role%s",
Cod,SubQueryRoles);
break;
case Hie_Lvl_CTR:
if (AnyUserInCourses) // Any user
NumUsrs =
(unsigned) DB_QueryCOUNT ("can not get number of users",
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(DISTINCT crs_usr.UsrCod)"
" FROM deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod",
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod",
Cod);
else
NumUsrs =
(unsigned) DB_QueryCOUNT ("can not get number of users",
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(DISTINCT crs_usr.UsrCod)"
" FROM deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role%s",
Cod,SubQueryRoles);
break;
case Hie_Lvl_DEG:
if (AnyUserInCourses) // Any user
NumUsrs =
(unsigned) DB_QueryCOUNT ("can not get number of users",
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(DISTINCT crs_usr.UsrCod)"
" FROM courses,"
" FROM crs_courses,"
"crs_usr"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod",
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod",
Cod);
else
NumUsrs =
(unsigned) DB_QueryCOUNT ("can not get number of users",
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(DISTINCT crs_usr.UsrCod)"
" FROM courses,"
" FROM crs_courses,"
"crs_usr"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role%s",
Cod,SubQueryRoles);
break;
case Hie_Lvl_CRS:
if (AnyUserInCourses) // Any user
NumUsrs =
(unsigned) DB_QueryCOUNT ("can not get number of users",
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(DISTINCT UsrCod)"
" FROM crs_usr"
" WHERE CrsCod=%ld",
Cod);
else
NumUsrs =
(unsigned) DB_QueryCOUNT ("can not get number of users",
NumUsrs = (unsigned)
DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(DISTINCT UsrCod)"
" FROM crs_usr"
" WHERE CrsCod=%ld"
@ -9599,13 +9607,13 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro
" FROM institutions,"
"centres,"
"deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" GROUP BY crs_usr.UsrCod) AS NumCrssTable",
Cod);
else
@ -9615,13 +9623,13 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro
" FROM institutions,"
"centres,"
"deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" GROUP BY crs_usr.UsrCod) AS NumCrssTable",
Cod,
@ -9634,12 +9642,12 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro
"(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
" FROM centres,"
"deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" GROUP BY crs_usr.UsrCod) AS NumCrssTable",
Cod);
else
@ -9648,12 +9656,12 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro
"(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
" FROM centres,"
"deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" GROUP BY crs_usr.UsrCod) AS NumCrssTable",
Cod,
@ -9665,11 +9673,11 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro
"SELECT AVG(NumCrss) FROM "
"(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
" FROM deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" GROUP BY crs_usr.UsrCod) AS NumCrssTable",
Cod);
else
@ -9677,11 +9685,11 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro
"SELECT AVG(NumCrss) FROM "
"(SELECT COUNT(crs_usr.CrsCod) AS NumCrss"
" FROM deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" GROUP BY crs_usr.UsrCod) AS NumCrssTable",
Cod,
@ -9692,20 +9700,20 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro
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,"
" FROM crs_courses,"
"crs_usr"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" GROUP BY crs_usr.UsrCod) AS NumCrssTable",
Cod);
else
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,"
" FROM crs_courses,"
"crs_usr"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" GROUP BY crs_usr.UsrCod) AS NumCrssTable",
Cod,
@ -9788,13 +9796,13 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro
" FROM institutions,"
"centres,"
"deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
Cod);
else
@ -9804,13 +9812,13 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro
" FROM institutions,"
"centres,"
"deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
Cod,
@ -9823,12 +9831,12 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro
"(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
" FROM centres,"
"deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
Cod);
else
@ -9837,12 +9845,12 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro
"(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
" FROM centres,"
"deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
Cod,
@ -9854,11 +9862,11 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro
"SELECT AVG(NumUsrs) FROM "
"(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
" FROM deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
Cod);
else
@ -9866,11 +9874,11 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro
"SELECT AVG(NumUsrs) FROM "
"(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs"
" FROM deg_degrees,"
"courses,"
"crs_courses,"
"crs_usr"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
Cod,
@ -9881,20 +9889,20 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro
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,"
" FROM crs_courses,"
"crs_usr"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
Cod);
else
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,"
" FROM crs_courses,"
"crs_usr"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=crs_usr.CrsCod"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" GROUP BY crs_usr.CrsCod) AS NumUsrsTable",
Cod,