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,"
"tst_questions.Score/tst_questions.NumHits AS S"
" FROM courses,tst_questions"
" WHERE courses.DegCod IN (%s)"
" AND courses.CrsCod=tst_questions.CrsCod"
"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 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,12 +1944,12 @@ 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",
"SELECT COUNT(*) FROM institutions,centres"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod",
CtyCod);
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",
CtyCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS,Hie_Lvl_CTY,Gbl.Cache.NumCtrsInCty.CtyCod,
FigCch_UNSIGNED,&Gbl.Cache.NumCtrsInCty.NumCtrs);
return Gbl.Cache.NumCtrsInCty.NumCtrs;
@ -1990,11 +1990,11 @@ 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",
"SELECT COUNT(*) FROM centres"
" WHERE InsCod=%ld",
InsCod);
Gbl.Cache.NumCtrsInIns.NumCtrs = (unsigned)
DB_QueryCOUNT ("can not get number of centres in an institution",
"SELECT COUNT(*) FROM centres"
" WHERE InsCod=%ld",
InsCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS,Hie_Lvl_INS,Gbl.Cache.NumCtrsInIns.InsCod,
FigCch_UNSIGNED,&Gbl.Cache.NumCtrsInIns.NumCtrs);
return Gbl.Cache.NumCtrsInIns.NumCtrs;
@ -2028,9 +2028,9 @@ unsigned Ctr_GetCachedNumCtrsWithMapInSys (void)
/***** 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 ("can not get number of centres with map",
"SELECT COUNT(*) FROM centres"
" WHERE Latitude<>0 OR Longitude<>0");
DB_QueryCOUNT ("can not get number of centres with map",
"SELECT COUNT(*) FROM centres"
" WHERE Latitude<>0 OR Longitude<>0");
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS_WITH_MAP,Hie_Lvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtrsWithMap);
}
@ -2053,12 +2053,12 @@ 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",
"SELECT COUNT(*) FROM institutions,centres"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND (centres.Latitude<>0 OR centres.Longitude<>0)",
CtyCod);
DB_QueryCOUNT ("can not get number of centres with map",
"SELECT COUNT(*) FROM institutions,centres"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND (centres.Latitude<>0 OR centres.Longitude<>0)",
CtyCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS_WITH_MAP,Hie_Lvl_CTY,CtyCod,
FigCch_UNSIGNED,&NumCtrsWithMap);
}
@ -2081,11 +2081,11 @@ unsigned Ctr_GetCachedNumCtrsWithMapInIns (long InsCod)
/***** 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 ("can not get number of centres with map",
"SELECT COUNT(*) FROM centres"
" WHERE InsCod=%ld"
" AND (Latitude<>0 OR Longitude<>0)",
InsCod);
DB_QueryCOUNT ("can not get number of centres with map",
"SELECT COUNT(*) FROM centres"
" WHERE InsCod=%ld"
" AND (Latitude<>0 OR Longitude<>0)",
InsCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS_WITH_MAP,Hie_Lvl_INS,InsCod,
FigCch_UNSIGNED,&NumCtrsWithMap);
}
@ -2100,11 +2100,11 @@ 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",
"SELECT COUNT(*) FROM centres"
" WHERE InsCod=%ld AND PlcCod=%ld",
Gbl.Hierarchy.Ins.InsCod,PlcCod);
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);
}
/*****************************************************************************/
@ -2122,12 +2122,12 @@ unsigned Ctr_GetCachedNumCtrsWithDegs (const char *SubQuery,
{
/***** Get current number of centres with degrees from database and update cache *****/
NumCtrsWithDegs = (unsigned)
DB_QueryCOUNT ("can not get number of centres with degrees",
"SELECT COUNT(DISTINCT centres.CtrCod)"
" FROM institutions,centres,deg_degrees"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod",
SubQuery);
DB_QueryCOUNT ("can not get number of centres with degrees",
"SELECT COUNT(DISTINCT centres.CtrCod)"
" FROM institutions,centres,deg_degrees"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod",
SubQuery);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS_WITH_DEGS,Scope,Cod,
FigCch_UNSIGNED,&NumCtrsWithDegs);
}
@ -2150,13 +2150,16 @@ unsigned Ctr_GetCachedNumCtrsWithCrss (const char *SubQuery,
{
/***** Get number of centres with courses *****/
NumCtrsWithCrss = (unsigned)
DB_QueryCOUNT ("can not get number of centres with courses",
"SELECT COUNT(DISTINCT centres.CtrCod)"
" FROM institutions,centres,deg_degrees,courses"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod",
SubQuery);
DB_QueryCOUNT ("can not get number of centres with courses",
"SELECT COUNT(DISTINCT centres.CtrCod)"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod",
SubQuery);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS_WITH_CRSS,Scope,Cod,
FigCch_UNSIGNED,&NumCtrsWithCrss);
}
@ -2185,15 +2188,19 @@ unsigned Ctr_GetCachedNumCtrsWithUsrs (Rol_Role_t Role,const char *SubQuery,
{
/***** Get current number of centres with users from database and update cache *****/
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"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u",
SubQuery,(unsigned) Role);
DB_QueryCOUNT ("can not get number of centres with users",
"SELECT COUNT(DISTINCT centres.CtrCod)"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" 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,
FigCch_UNSIGNED,&NumCtrsWithUsrs);
}

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"
@ -891,21 +946,24 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
struct UsrData UsrDat;
bool PutLinkToRecord = (Gbl.Hierarchy.Level == Hie_Lvl_CRS && // Course selected
Gbl.Scope.Current == Hie_Lvl_CRS && // Scope is current course
(Role == Rol_STD || // Role is student,...
Role == Rol_NET || // ...non-editing teacher...
Role == Rol_TCH)); // ...or teacher
(Role == Rol_STD || // Role is student,...
Role == Rol_NET || // ...non-editing teacher...
Role == Rol_TCH)); // ...or teacher
/***** Get connected users who belong to current location from database *****/
switch (Role)
{
case Rol_GST:
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"
" FROM connected"
" WHERE UsrCod NOT IN (SELECT UsrCod FROM crs_usr)"
" ORDER BY Dif");
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get list of connected users"
" who belong to this location",
"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");
break;
case Rol_STD:
case Rol_NET:
@ -913,90 +971,129 @@ 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"
" who belong to this location",
"SELECT DISTINCTROW connected.UsrCod,connected.LastCrsCod,"
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif"
" FROM connected,crs_usr"
" WHERE connected.UsrCod=crs_usr.UsrCod"
" AND crs_usr.Role=%u"
" ORDER BY Dif",
(unsigned) Role);
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get list of connected users"
" who belong to this location",
"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"
" 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"
" 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 crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
" ORDER BY Dif",
Gbl.Hierarchy.Cty.CtyCod,
(unsigned) Role);
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get list of connected users"
" who belong to this location",
"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=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
" ORDER BY Dif",
Gbl.Hierarchy.Cty.CtyCod,
(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"
" 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"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
" ORDER BY Dif",
Gbl.Hierarchy.Ins.InsCod,
(unsigned) Role);
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get list of connected users"
" who belong to this location",
"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=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
" ORDER BY Dif",
Gbl.Hierarchy.Ins.InsCod,
(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"
" 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"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
" ORDER BY Dif",
Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) Role);
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get list of connected users"
" who belong to this location",
"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=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
" ORDER BY Dif",
Gbl.Hierarchy.Ctr.CtrCod,
(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"
" 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"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
" ORDER BY Dif",
Gbl.Hierarchy.Deg.DegCod,
(unsigned) Role);
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get list of connected users"
" who belong to this location",
"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",
Gbl.Hierarchy.Deg.DegCod,
(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"
" who belong to this location",
"SELECT connected.UsrCod,connected.LastCrsCod,"
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif"
" FROM crs_usr,connected"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=connected.UsrCod"
" ORDER BY Dif",
Gbl.Hierarchy.Crs.CrsCod,
(unsigned) Role);
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get list of connected users"
" who belong to this location",
"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"
" ORDER BY Dif",
Gbl.Hierarchy.Crs.CrsCod,
(unsigned) Role);
break;
default:
Lay_WrongScopeExit ();

View File

@ -1984,13 +1984,17 @@ unsigned Cty_GetCachedNumCtysWithCrss (void)
{
/***** Get current number of countries with courses from database and update cache *****/
NumCtysWithCrss = (unsigned)
DB_QueryCOUNT ("can not get number of countries with courses",
"SELECT COUNT(DISTINCT countries.CtyCod)"
" FROM countries,institutions,centres,deg_degrees,courses"
" WHERE countries.CtyCod=institutions.CtyCod"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod");
DB_QueryCOUNT ("can not get number of countries with courses",
"SELECT COUNT(DISTINCT countries.CtyCod)"
" 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=crs_courses.DegCod");
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTYS_WITH_CRSS,Hie_Lvl_SYS,-1L,
FigCch_UNSIGNED,&NumCtysWithCrss);
}
@ -2019,16 +2023,21 @@ unsigned Cty_GetCachedNumCtysWithUsrs (Rol_Role_t Role,const char *SubQuery,
{
/***** Get current number of countries with users from database and update cache *****/
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"
" 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 crs_usr.Role=%u",
SubQuery,(unsigned) Role);
DB_QueryCOUNT ("can not get number of countries with users",
"SELECT COUNT(DISTINCT countries.CtyCod)"
" 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=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u",
SubQuery,(unsigned) Role);
FigCch_UpdateFigureIntoCache (FigureCtys[Role],Scope,Cod,
FigCch_UNSIGNED,&NumCtysWithUsrs);
}

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,15 +445,18 @@ 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",
"SELECT COUNT(*)"
" FROM institutions,centres,deg_degrees,courses"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod",
CtyCod);
Gbl.Cache.NumCrssInCty.NumCrss = (unsigned)
DB_QueryCOUNT ("can not get the number of courses in a country",
"SELECT COUNT(*)"
" 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=crs_courses.DegCod",
CtyCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,Hie_Lvl_CTY,Gbl.Cache.NumCrssInCty.CtyCod,
FigCch_UNSIGNED,&Gbl.Cache.NumCrssInCty.NumCrss);
return Gbl.Cache.NumCrssInCty.NumCrss;
@ -494,14 +497,16 @@ 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"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod",
InsCod);
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=crs_courses.DegCod",
InsCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,Hie_Lvl_INS,Gbl.Cache.NumCrssInIns.InsCod,
FigCch_UNSIGNED,&Gbl.Cache.NumCrssInIns.NumCrss);
return Gbl.Cache.NumCrssInIns.NumCrss;
@ -542,12 +547,14 @@ 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"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod",
CtrCod);
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=crs_courses.DegCod",
CtrCod);
return Gbl.Cache.NumCrssInCtr.NumCrss;
}
@ -590,11 +597,10 @@ 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",
DegCod);
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);
return Gbl.Cache.NumCrssInDeg.NumCrss;
@ -634,15 +640,19 @@ 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"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u",
SubQuery,(unsigned) Role);
DB_QueryCOUNT ("can not get number of courses with users",
"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=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u",
SubQuery,(unsigned) Role);
FigCch_UpdateFigureIntoCache (FigureCrss[Role],Scope,Cod,
FigCch_UNSIGNED,&NumCrssWithUsrs);
}
@ -678,12 +688,14 @@ 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"
" WHERE DegCod=%ld"
" ORDER BY ShortName",
Gbl.Hierarchy.Deg.DegCod);
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);
/***** Get courses of this degree *****/
for (NumCrs = 0;
@ -752,21 +764,37 @@ 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"
" ORDER BY Year,ShortName",
Gbl.Hierarchy.Deg.DegCod);
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"
" ORDER BY Year,ShortName",
Gbl.Hierarchy.Deg.DegCod,
(unsigned) Crs_STATUS_BIT_REMOVED);
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);
break;
default:
break;
@ -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,22 +2602,28 @@ 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",
"SELECT deg_degrees.DegCod," // row[0]
"courses.CrsCod," // row[1]
"deg_degrees.ShortName," // row[2]
"deg_degrees.FullName," // row[3]
"courses.Year," // row[4]
"courses.FullName," // row[5]
"centres.ShortName," // row[6]
"crs_usr.Accepted" // row[7]
" FROM crs_usr,courses,deg_degrees,centres"
" WHERE crs_usr.UsrCod=%ld%s"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" ORDER BY deg_degrees.FullName,courses.Year,courses.FullName",
UsrDat->UsrCod,SubQuery);
NumCrss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get courses of a user",
"SELECT deg_degrees.DegCod," // row[0]
"crs_courses.CrsCod," // row[1]
"deg_degrees.ShortName," // row[2]
"deg_degrees.FullName," // row[3]
"crs_courses.Year," // row[4]
"crs_courses.FullName," // row[5]
"centres.ShortName," // row[6]
"crs_usr.Accepted" // row[7]
" FROM crs_usr,"
"crs_courses,"
"deg_degrees,"
"centres"
" WHERE crs_usr.UsrCod=%ld%s"
" 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,"
"crs_courses.Year,"
"crs_courses.FullName",
UsrDat->UsrCod,SubQuery);
/***** Free allocated memory for subquery *****/
free (SubQuery);
@ -2725,14 +2762,14 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
bool Accepted;
static unsigned RowEvenOdd = 1;
/*
SELECT deg_degrees.DegCod row[0]
courses.CrsCod row[1]
deg_degrees.ShortName row[2]
deg_degrees.FullName row[3]
courses.Year row[4]
courses.FullName row[5]
centres.ShortName row[6]
crs_usr.Accepted row[7] (only if WriteColumnAccepted == true)
SELECT deg_degrees.DegCod row[0]
crs_courses.CrsCod row[1]
deg_degrees.ShortName row[2]
deg_degrees.FullName row[3]
crs_courses.Year row[4]
crs_courses.FullName row[5]
centres.ShortName row[6]
crs_usr.Accepted row[7] (only if WriteColumnAccepted == true)
*/
/***** Get degree code (row[0]) *****/
@ -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,31 +127,36 @@ 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"
" 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"
" ORDER BY deg_degrees.ShortName",
Gbl.Usrs.Me.UsrDat.UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_DEG),
(unsigned) Crs_STATUS_BIT_PENDING);
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=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"
" ORDER BY deg_degrees.ShortName",
(unsigned) Crs_STATUS_BIT_PENDING);
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;
default: // Forbidden for other users
return;
@ -1068,23 +1073,25 @@ 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",
"SELECT DISTINCTROW "
"deg_degrees.DegCod," // row[0]
"deg_degrees.CtrCod," // row[1]
"deg_degrees.DegTypCod," // row[2]
"deg_degrees.Status," // row[3]
"deg_degrees.RequesterUsrCod," // row[4]
"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"
" AND crs_usr.Role=%u"
" ORDER BY deg_degrees.ShortName",
(unsigned) Rol_STD);
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]
"deg_degrees.DegTypCod," // row[2]
"deg_degrees.Status," // row[3]
"deg_degrees.RequesterUsrCod," // row[4]
"deg_degrees.ShortName," // row[5]
"deg_degrees.FullName," // row[6]
"deg_degrees.WWW" // row[7]
" 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);
if (Degs->Num) // Degrees found...
{
@ -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);
@ -2076,13 +2084,16 @@ unsigned Deg_GetCachedNumDegsWithCrss (const char *SubQuery,
{
/***** Get current number of degrees with courses from database and update cache *****/
NumDegsWithCrss = (unsigned)
DB_QueryCOUNT ("can not get number of degrees with courses",
"SELECT COUNT(DISTINCT deg_degrees.DegCod)"
" FROM institutions,centres,deg_degrees,courses"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod",
SubQuery);
DB_QueryCOUNT ("can not get number of degrees with courses",
"SELECT COUNT(DISTINCT deg_degrees.DegCod)"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod",
SubQuery);
FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS_WITH_CRSS,Scope,Cod,
FigCch_UNSIGNED,&NumDegsWithCrss);
}
@ -2111,15 +2122,19 @@ unsigned Deg_GetCachedNumDegsWithUsrs (Rol_Role_t Role,const char *SubQuery,
{
/***** Get current number of degrees with users from database and update cache *****/
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"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u",
SubQuery,(unsigned) Role);
DB_QueryCOUNT ("can not get number of degrees with users",
"SELECT COUNT(DISTINCT deg_degrees.DegCod)"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" 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,
FigCch_UNSIGNED,&NumDegsWithUsrs);
}

View File

@ -2329,96 +2329,106 @@ 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",
"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"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.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,
(unsigned) Rol_TCH,
RolesSelected);
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"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.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,
(unsigned) Rol_TCH,
RolesSelected);
break;
case Rol_DEG_ADM:
// Requests in all degrees administrated by me
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"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" AND usr_admins.Cod=courses.DegCod"
" AND 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),
RolesSelected);
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,"
"crs_courses,"
"crs_usr_requests"
" WHERE usr_admins.UsrCod=%ld"
" AND usr_admins.Scope='%s'"
" 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),
RolesSelected);
break;
case Rol_CTR_ADM:
// Requests in all centres administrated by me
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"
" 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 ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_CTR),
RolesSelected);
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,"
"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=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),
RolesSelected);
break;
case Rol_INS_ADM:
// Requests in all institutions administrated by me
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"
" 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 ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_INS),
RolesSelected);
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,"
"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=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),
RolesSelected);
break;
case Rol_SYS_ADM:
// All requests
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
" for enrolment",
"SELECT ReqCod,"
"CrsCod,"
"UsrCod,"
"Role,"
"UNIX_TIMESTAMP(RequestTime)"
" FROM crs_usr_requests"
" WHERE ((1<<Role)&%u)<>0"
" ORDER BY RequestTime DESC",
RolesSelected);
NumReqs =
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
"SELECT ReqCod,"
"CrsCod,"
"UsrCod,"
"Role,"
"UNIX_TIMESTAMP(RequestTime)"
" FROM crs_usr_requests"
" WHERE ((1<<Role)&%u)<>0"
" ORDER BY RequestTime DESC",
RolesSelected);
break;
default:
Lay_NoPermissionExit ();
@ -2430,120 +2440,148 @@ 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",
"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"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND 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 ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Rol_TCH,
Gbl.Hierarchy.Cty.CtyCod,
RolesSelected);
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,"
"crs_courses,"
"crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" 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 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,
(unsigned) Rol_TCH,
Gbl.Hierarchy.Cty.CtyCod,
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",
"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"
" 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 ((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.Hierarchy.Cty.CtyCod,
RolesSelected);
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,"
"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=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.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",
"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"
" 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 ((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.Hierarchy.Cty.CtyCod,
RolesSelected);
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,"
"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=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.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"
" 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 ((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.Hierarchy.Cty.CtyCod,
RolesSelected);
"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,"
"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=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.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",
"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"
" 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 ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Hierarchy.Cty.CtyCod,
RolesSelected);
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,"
"crs_courses,"
"crs_usr_requests"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" 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,
RolesSelected);
break;
default:
Lay_NoPermissionExit ();
@ -2555,93 +2593,109 @@ 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",
"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"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=%ld"
" AND 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,
(unsigned) Rol_TCH,
Gbl.Hierarchy.Ins.InsCod,
RolesSelected);
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,"
"crs_courses,"
"crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" 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 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,
(unsigned) Rol_TCH,
Gbl.Hierarchy.Ins.InsCod,
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",
"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"
" 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 ((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.Hierarchy.Ins.InsCod,
RolesSelected);
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,"
"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=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.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",
"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"
" 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 ((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.Hierarchy.Ins.InsCod,
RolesSelected);
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,"
"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=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.Hierarchy.Ins.InsCod,
RolesSelected);
break;
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",
"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"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND 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,
RolesSelected);
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,"
"crs_courses,"
"crs_usr_requests"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" 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,
RolesSelected);
break;
default:
Lay_NoPermissionExit ();
@ -2653,68 +2707,77 @@ 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",
"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"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=courses.CrsCod"
" AND courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%ld"
" AND 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,
(unsigned) Rol_TCH,
Gbl.Hierarchy.Ctr.CtrCod,
RolesSelected);
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,"
"crs_courses,"
"crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" AND crs_usr.CrsCod=crs_courses.CrsCod"
" AND crs_courses.DegCod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=%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,
(unsigned) Rol_TCH,
Gbl.Hierarchy.Ctr.CtrCod,
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",
"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"
" 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 ((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.Hierarchy.Ctr.CtrCod,
RolesSelected);
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,"
"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=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.Hierarchy.Ctr.CtrCod,
RolesSelected);
break;
case Rol_CTR_ADM: // If I am logged as admin of this centre , I can view all the requesters from this centre
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",
"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"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND 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,
RolesSelected);
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,"
"crs_courses,"
"crs_usr_requests"
" WHERE deg_degrees.CtrCod=%ld"
" 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,
RolesSelected);
break;
default:
Lay_NoPermissionExit ();
@ -2726,45 +2789,48 @@ 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",
"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"
" 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 ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Rol_TCH,
Gbl.Hierarchy.Deg.DegCod,
RolesSelected);
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_courses,"
"crs_usr_requests"
" WHERE crs_usr.UsrCod=%ld"
" AND crs_usr.Role=%u"
" 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,
(unsigned) Rol_TCH,
Gbl.Hierarchy.Deg.DegCod,
RolesSelected);
break;
case Rol_DEG_ADM: // If I am logged as admin of this degree , I can view all the requesters from this degree
case Rol_CTR_ADM: // If I am logged as admin of this centre , I can view all the requesters from this degree
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",
"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"
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Hierarchy.Deg.DegCod,
RolesSelected);
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_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,
RolesSelected);
break;
default:
Lay_NoPermissionExit ();
@ -2780,16 +2846,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 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,"
"UNIX_TIMESTAMP(RequestTime)"
" FROM crs_usr_requests"
" WHERE CrsCod=%ld"
" AND ((1<<Role)&%u)<>0"
" ORDER BY RequestTime DESC",
Gbl.Hierarchy.Crs.CrsCod,
RolesSelected);
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"
" AND ((1<<Role)&%u)<>0"
" ORDER BY RequestTime DESC",
Gbl.Hierarchy.Crs.CrsCod,
RolesSelected);
break;
default:
Lay_NoPermissionExit ();

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,77 +1365,110 @@ 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"
" FROM usr_follow"
" GROUP BY FollowedCod"
" ORDER BY N DESC,FollowedCod LIMIT 100");
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");
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"
" 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 crs_usr.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC,usr_follow.FollowedCod LIMIT 100",
Gbl.Hierarchy.Cty.CtyCod);
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=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",
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"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND 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",
Gbl.Hierarchy.Ins.InsCod);
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=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",
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"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND 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",
Gbl.Hierarchy.Ctr.CtrCod);
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=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",
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"
" AND crs_usr.UsrCod=usr_follow.FollowedCod"
" GROUP BY usr_follow.FollowedCod"
" ORDER BY N DESC,usr_follow.FollowedCod LIMIT 100",
Gbl.Hierarchy.Deg.DegCod);
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",
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"
" 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",
Gbl.Hierarchy.Crs.CrsCod);
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",
Gbl.Hierarchy.Crs.CrsCod);
break;
default:
Lay_WrongScopeExit ();

File diff suppressed because it is too large Load Diff

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,254 +352,288 @@ 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",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM deg_degrees,courses,crs_usr,usr_data"
" WHERE deg_degrees.DegTypCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND 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",
Indicators->DegTypCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"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=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,"
"crs_courses.FullName",
Indicators->DegTypCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
else
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"
" AND crs_usr.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
(unsigned) Rol_TCH,
Indicators->DptCod);
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"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,"
"crs_courses.FullName",
(unsigned) Rol_TCH,
Indicators->DptCod);
}
else
{
if (Indicators->DegTypCod > 0)
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.DegTypCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
Indicators->DegTypCod);
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName,"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM deg_degrees,"
"crs_courses"
" WHERE deg_degrees.DegTypCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.FullName,"
"crs_courses.FullName",
Indicators->DegTypCod);
else
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"
" ORDER BY deg_degrees.FullName,"
"courses.FullName");
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName,"
"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,"
"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",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM institutions,centres,deg_degrees,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 crs_usr.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
Gbl.Hierarchy.Cty.CtyCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"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=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,"
"crs_courses.FullName",
Gbl.Hierarchy.Cty.CtyCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
else
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"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
Gbl.Hierarchy.Cty.CtyCod);
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName,"
"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=crs_courses.DegCod"
" ORDER BY deg_degrees.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",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM centres,deg_degrees,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 crs_usr.Role=%u"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.DptCod=%ld"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
Gbl.Hierarchy.Ins.InsCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"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=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,"
"crs_courses.FullName",
Gbl.Hierarchy.Ins.InsCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
else
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"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
Gbl.Hierarchy.Ins.InsCod);
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName,"
"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=crs_courses.DegCod"
" ORDER BY deg_degrees.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",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM deg_degrees,courses,crs_usr,usr_data"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND 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",
Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"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=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,"
"crs_courses.FullName",
Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
else
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.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
Gbl.Hierarchy.Ctr.CtrCod);
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName,"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM deg_degrees,"
"crs_courses"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.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",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM deg_degrees,courses,crs_usr,usr_data"
" WHERE deg_degrees.DegCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND 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",
Gbl.Hierarchy.Deg.DegCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"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=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,"
"crs_courses.FullName",
Gbl.Hierarchy.Deg.DegCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
else
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=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
Gbl.Hierarchy.Deg.DegCod);
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName,"
"crs_courses.FullName,"
"crs_courses.CrsCod,"
"crs_courses.InsCrsCod"
" FROM deg_degrees,"
"crs_courses"
" WHERE deg_degrees.DegCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" ORDER BY deg_degrees.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",
"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"
" 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",
Gbl.Hierarchy.Crs.CrsCod,
Gbl.Hierarchy.Crs.CrsCod,
(unsigned) Rol_TCH,
Indicators->DptCod);
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT DISTINCTROW "
"deg_degrees.FullName,"
"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,"
"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",
"SELECT deg_degrees.FullName,"
"courses.FullName,"
"courses.CrsCod,"
"courses.InsCrsCod"
" FROM deg_degrees,courses"
" WHERE courses.CrsCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" ORDER BY deg_degrees.FullName,"
"courses.FullName",
Gbl.Hierarchy.Crs.CrsCod);
NumCrss = (unsigned)
DB_QuerySELECT (mysql_res,"can not get courses",
"SELECT deg_degrees.FullName,"
"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,"
"crs_courses.FullName",
Gbl.Hierarchy.Crs.CrsCod);
break;
default:
Lay_WrongScopeExit ();
@ -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

@ -2053,13 +2053,16 @@ unsigned Ins_GetCachedNumInssWithCrss (const char *SubQuery,
{
/***** Get current number of institutions with courses from database and update cache *****/
NumInssWithCrss = (unsigned)
DB_QueryCOUNT ("can not get number of institutions with courses",
"SELECT COUNT(DISTINCT institutions.InsCod)"
" FROM institutions,centres,deg_degrees,courses"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod",
SubQuery);
DB_QueryCOUNT ("can not get number of institutions with courses",
"SELECT COUNT(DISTINCT institutions.InsCod)"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod",
SubQuery);
FigCch_UpdateFigureIntoCache (FigCch_NUM_INSS_WITH_CRSS,Scope,Cod,
FigCch_UNSIGNED,&NumInssWithCrss);
}
@ -2088,15 +2091,19 @@ unsigned Ins_GetCachedNumInssWithUsrs (Rol_Role_t Role,const char *SubQuery,
{
/***** Get current number of institutions with users from database and update cache *****/
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"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u",
SubQuery,(unsigned) Role);
DB_QueryCOUNT ("can not get number of institutions with users",
"SELECT COUNT(DISTINCT institutions.InsCod)"
" FROM institutions,"
"centres,"
"deg_degrees,"
"crs_courses,"
"crs_usr"
" WHERE %sinstitutions.InsCod=centres.InsCod"
" AND centres.CtrCod=deg_degrees.CtrCod"
" 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,
FigCch_UNSIGNED,&NumInssWithUsrs);
}

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",
"SELECT COUNT(*)"
" FROM institutions,centres,deg_degrees,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",
Table,
Gbl.Hierarchy.Cty.CtyCod,
Table);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
" 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=crs_courses.DegCod"
" AND crs_courses.CrsCod=%s.CrsCod",
Table,
Gbl.Hierarchy.Cty.CtyCod,
Table);
case Hie_Lvl_INS:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
" FROM centres,deg_degrees,courses,%s"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=%s.CrsCod",
Table,
Gbl.Hierarchy.Ins.InsCod,
Table);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"%s"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=%s.CrsCod",
Table,
Gbl.Hierarchy.Ins.InsCod,
Table);
case Hie_Lvl_CTR:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
" FROM deg_degrees,courses,%s"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=%s.CrsCod",
Table,
Gbl.Hierarchy.Ctr.CtrCod,
Table);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
" FROM deg_degrees,"
"crs_courses,"
"%s"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=%s.CrsCod",
Table,
Gbl.Hierarchy.Ctr.CtrCod,
Table);
case Hie_Lvl_DEG:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
" FROM courses,%s"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=%s.CrsCod",
Table,
Gbl.Hierarchy.Deg.DegCod,
Table);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
" FROM crs_courses,"
"%s"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=%s.CrsCod",
Table,
Gbl.Hierarchy.Deg.DegCod,
Table);
case Hie_Lvl_CRS:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
" FROM %s"
" WHERE CrsCod=%ld",
Table,
Gbl.Hierarchy.Crs.CrsCod);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of sent messages",
"SELECT COUNT(*)"
" FROM %s"
" WHERE CrsCod=%ld",
Table,
Gbl.Hierarchy.Crs.CrsCod);
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,222 +2324,244 @@ 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",
"SELECT COUNT(*)"
" FROM institutions,centres,deg_degrees,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 msg_snt.MsgCod=%s.MsgCod",
Table,
Gbl.Hierarchy.Cty.CtyCod,
Table);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT COUNT(*)"
" 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=crs_courses.DegCod"
" AND crs_courses.CrsCod=msg_snt.CrsCod"
" AND msg_snt.MsgCod=%s.MsgCod",
Table,
Gbl.Hierarchy.Cty.CtyCod,
Table);
case Hie_Lvl_INS:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
"SELECT COUNT(*)"
" FROM centres,deg_degrees,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 msg_snt.MsgCod=%s.MsgCod",
Table,
Gbl.Hierarchy.Ins.InsCod,
Table);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT COUNT(*)"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"%s,"
"msg_snt"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" 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);
case Hie_Lvl_CTR:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
"SELECT COUNT(*)"
" FROM deg_degrees,courses,%s,msg_snt"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=msg_snt.CrsCod"
" AND msg_snt.MsgCod=%s.MsgCod",
Table,
Gbl.Hierarchy.Ctr.CtrCod,
Table);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT COUNT(*)"
" FROM deg_degrees,"
"crs_courses,"
"%s,"
"msg_snt"
" WHERE deg_degrees.CtrCod=%ld"
" 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);
case Hie_Lvl_DEG:
NumMsgs =
(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"
" AND msg_snt.MsgCod=%s.MsgCod",
Table,
Gbl.Hierarchy.Deg.DegCod,
Table);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT COUNT(*)"
" 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);
case Hie_Lvl_CRS:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
"SELECT COUNT(*)"
" FROM msg_snt,%s"
" WHERE msg_snt.CrsCod=%ld"
" AND msg_snt.MsgCod=%s.MsgCod",
Table,
Gbl.Hierarchy.Crs.CrsCod,
Table);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT COUNT(*)"
" FROM msg_snt,"
"%s"
" WHERE msg_snt.CrsCod=%ld"
" AND msg_snt.MsgCod=%s.MsgCod",
Table,
Gbl.Hierarchy.Crs.CrsCod,
Table);
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",
"SELECT "
"(SELECT COUNT(*)"
" FROM msg_rcv"
" WHERE Notified='Y')"
" + "
"(SELECT COUNT(*)"
" FROM msg_rcv_deleted"
" WHERE Notified='Y')");
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
"(SELECT COUNT(*)"
" FROM msg_rcv"
" WHERE Notified='Y')"
" + "
"(SELECT COUNT(*)"
" FROM msg_rcv_deleted"
" WHERE Notified='Y')");
case Hie_Lvl_CTY:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
"SELECT "
"(SELECT COUNT(*)"
" FROM institutions,centres,deg_degrees,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 msg_snt.MsgCod=msg_rcv.MsgCod"
" AND msg_rcv.Notified='Y')"
" + "
"(SELECT COUNT(*)"
" FROM institutions,centres,deg_degrees,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 msg_snt.MsgCod=msg_rcv_deleted.MsgCod"
" AND msg_rcv_deleted.Notified='Y')",
Gbl.Hierarchy.Cty.CtyCod,
Gbl.Hierarchy.Cty.CtyCod);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
"(SELECT COUNT(*)"
" 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=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,"
"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=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);
case Hie_Lvl_INS:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
"SELECT "
"(SELECT COUNT(*)"
" FROM centres,deg_degrees,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 msg_snt.MsgCod=msg_rcv.MsgCod"
" AND msg_rcv.Notified='Y')"
" + "
"(SELECT COUNT(*)"
" FROM centres,deg_degrees,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 msg_snt.MsgCod=msg_rcv_deleted.MsgCod"
" AND msg_rcv_deleted.Notified='Y')",
Gbl.Hierarchy.Ins.InsCod,
Gbl.Hierarchy.Ins.InsCod);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
"(SELECT COUNT(*)"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"msg_snt,"
"msg_rcv"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" 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,"
"crs_courses,"
"msg_snt,"
"msg_rcv_deleted"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" 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);
case Hie_Lvl_CTR:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
"SELECT "
"(SELECT COUNT(*)"
" FROM deg_degrees,courses,msg_snt,msg_rcv"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND 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"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND 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;
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
"(SELECT COUNT(*)"
" FROM deg_degrees,"
"crs_courses,"
"msg_snt,"
"msg_rcv"
" WHERE deg_degrees.CtrCod=%ld"
" 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,"
"crs_courses,"
"msg_snt,"
"msg_rcv_deleted"
" WHERE deg_degrees.CtrCod=%ld"
" 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);
case Hie_Lvl_DEG:
NumMsgs =
(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"
" 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"
" AND msg_snt.MsgCod=msg_rcv_deleted.MsgCod"
" AND msg_rcv_deleted.Notified='Y')",
Gbl.Hierarchy.Deg.DegCod,
Gbl.Hierarchy.Deg.DegCod);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
"(SELECT COUNT(*)"
" 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 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);
case Hie_Lvl_CRS:
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number"
" of received messages",
"SELECT "
"(SELECT COUNT(*)"
" 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"
" 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;
return (unsigned)
DB_QueryCOUNT ("can not get number of received messages",
"SELECT "
"(SELECT COUNT(*)"
" 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"
" 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);
case Hie_Lvl_UNK:
default:
Lay_WrongScopeExit ();
break;
return 0;
}
break;
return 0;
default:
return 0;
}
return NumMsgs;
}
/*****************************************************************************/
@ -2744,25 +2765,30 @@ 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"
" WHERE msg_rcv.UsrCod=%ld"
" AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.CrsCod=courses.CrsCod"
" ORDER BY courses.ShortName",
Gbl.Usrs.Me.UsrDat.UsrCod);
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=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"
" WHERE msg_snt.UsrCod=%ld"
" AND msg_snt.CrsCod=courses.CrsCod"
" ORDER BY courses.ShortName",
Gbl.Usrs.Me.UsrDat.UsrCod);
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=crs_courses.CrsCod"
" ORDER BY crs_courses.ShortName",
Gbl.Usrs.Me.UsrDat.UsrCod);
break;
default: // Not aplicable here
break;

View File

@ -454,88 +454,104 @@ void Net_ShowWebAndSocialNetworksStats (void)
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
NumRows =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks",
"SELECT Web,COUNT(*) AS N"
" FROM usr_webs"
" GROUP BY Web"
" ORDER BY N DESC,Web");
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of users"
" with webs / social networks",
"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"
" 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"
" 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 crs_usr.UsrCod=usr_webs.UsrCod"
" GROUP BY usr_webs.Web"
" ORDER BY N DESC,usr_webs.Web",
Gbl.Hierarchy.Cty.CtyCod);
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,"
"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=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"
" with webs / social networks",
"SELECT usr_webs.Web,"
"COUNT(DISTINCT usr_webs.UsrCod) AS N"
" FROM centres,deg_degrees,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 crs_usr.UsrCod=usr_webs.UsrCod"
" GROUP BY usr_webs.Web"
" ORDER BY N DESC,usr_webs.Web",
Gbl.Hierarchy.Ins.InsCod);
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,"
"crs_courses,"
"crs_usr,"
"usr_webs"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" 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"
" with webs / social networks",
"SELECT usr_webs.Web,"
"COUNT(DISTINCT usr_webs.UsrCod) AS N"
" FROM deg_degrees,courses,crs_usr,usr_webs"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND 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);
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,"
"crs_courses,"
"crs_usr,"
"usr_webs"
" WHERE deg_degrees.CtrCod=%ld"
" 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"
" 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"
" AND crs_usr.UsrCod=usr_webs.UsrCod"
" GROUP BY usr_webs.Web"
" ORDER BY N DESC,usr_webs.Web",
Gbl.Hierarchy.Deg.DegCod);
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_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"
" with webs / social networks",
"SELECT usr_webs.Web,"
"COUNT(DISTINCT usr_webs.UsrCod) AS N"
" FROM crs_usr,usr_webs"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_webs.UsrCod"
" GROUP BY usr_webs.Web"
" ORDER BY N DESC,usr_webs.Web",
Gbl.Hierarchy.Crs.CrsCod);
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"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_webs.UsrCod"
" GROUP BY usr_webs.Web"
" ORDER BY N DESC,usr_webs.Web",
Gbl.Hierarchy.Crs.CrsCod);
break;
default:
Lay_WrongScopeExit ();

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,16 +1425,19 @@ 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",
"SELECT DISTINCT deg_degrees.DegCod"
" FROM deg_degrees,courses,crs_usr"
" WHERE deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role=%u"
" AND deg_degrees.DegCod NOT IN"
" (SELECT DISTINCT DegCod FROM sta_degrees)"
" LIMIT 1",
(unsigned) Rol_STD);
NumRows =
DB_QuerySELECT (&mysql_res,"can not get degrees",
"SELECT DISTINCT deg_degrees.DegCod"
" 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)"
" LIMIT 1",
(unsigned) Rol_STD);
/* If number of rows is 1, then get the degree code */
if (NumRows == 1)
@ -1454,17 +1457,19 @@ 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",
"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"
" AND crs_usr.Role=%u"
" ORDER BY sta_degrees.TimeAvgPhoto LIMIT 1",
Cfg_MIN_TIME_TO_RECOMPUTE_AVG_PHOTO,
(unsigned) Rol_STD);
NumRows =
DB_QuerySELECT (&mysql_res,"can not get degrees",
"SELECT sta_degrees.DegCod"
" 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,
(unsigned) Rol_STD);
/* If number of rows is 1, then get the degree code */
if (NumRows == 1)

View File

@ -1421,95 +1421,133 @@ 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"
" FROM usr_figures"
" WHERE %s>0"
" AND UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY %s DESC,UsrCod LIMIT 100",
FieldName,
FieldName,FieldName);
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",
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"
" 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 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",
FieldName,
Gbl.Hierarchy.Cty.CtyCod,
FieldName,FieldName);
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=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",
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"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND 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",
FieldName,
Gbl.Hierarchy.Ins.InsCod,
FieldName,FieldName);
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=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",
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"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND 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",
FieldName,
Gbl.Hierarchy.Ctr.CtrCod,
FieldName,FieldName);
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=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",
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"
" 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",
FieldName,
Gbl.Hierarchy.Deg.DegCod,
FieldName,FieldName);
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",
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"
" 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",
FieldName,
Gbl.Hierarchy.Crs.CrsCod,
FieldName,FieldName);
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",
FieldName,
Gbl.Hierarchy.Crs.CrsCod,
FieldName,FieldName);
break;
default:
Lay_WrongScopeExit ();
@ -1600,117 +1638,132 @@ void Prf_GetAndShowRankingClicksPerDay (void)
switch (Gbl.Scope.Current)
{
case Hie_Lvl_SYS:
NumUsrs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT UsrCod,"
"NumClicks/(DATEDIFF(NOW(),"
"FirstClickTime)+1) AS NumClicksPerDay"
" FROM usr_figures"
" WHERE NumClicks>0"
" AND FirstClickTime>FROM_UNIXTIME(0)"
" AND UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC,UsrCod"
" LIMIT 100");
NumUsrs = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get ranking",
"SELECT UsrCod,"
"NumClicks/(DATEDIFF(NOW(),"
"FirstClickTime)+1) AS NumClicksPerDay"
" FROM usr_figures"
" WHERE NumClicks>0"
" AND FirstClickTime>FROM_UNIXTIME(0)"
" AND UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC,UsrCod"
" LIMIT 100");
break;
case Hie_Lvl_CTY:
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"
" 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 crs_usr.UsrCod=usr_figures.UsrCod"
" AND usr_figures.NumClicks>0"
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC,"
"usr_figures.UsrCod"
" LIMIT 100",
Gbl.Hierarchy.Cty.CtyCod);
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,"
"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=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)"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC,"
"usr_figures.UsrCod"
" LIMIT 100",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
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"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod"
" AND usr_figures.NumClicks>0"
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC,"
"usr_figures.UsrCod"
" LIMIT 100",
Gbl.Hierarchy.Ins.InsCod);
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,"
"crs_courses,"
"crs_usr,"
"usr_figures"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" 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)"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC,"
"usr_figures.UsrCod"
" LIMIT 100",
Gbl.Hierarchy.Ins.InsCod);
break;
case Hie_Lvl_CTR:
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"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_figures.UsrCod"
" AND usr_figures.NumClicks>0"
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC,"
"usr_figures.UsrCod"
" LIMIT 100",
Gbl.Hierarchy.Ctr.CtrCod);
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,"
"crs_courses,"
"crs_usr,"
"usr_figures"
" WHERE deg_degrees.CtrCod=%ld"
" 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)"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC,"
"usr_figures.UsrCod"
" LIMIT 100",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case Hie_Lvl_DEG:
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"
" AND crs_usr.UsrCod=usr_figures.UsrCod"
" AND usr_figures.NumClicks>0"
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC,"
"usr_figures.UsrCod"
" LIMIT 100",
Gbl.Hierarchy.Deg.DegCod);
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_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)"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC,"
"usr_figures.UsrCod"
" LIMIT 100",
Gbl.Hierarchy.Deg.DegCod);
break;
case Hie_Lvl_CRS:
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"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_figures.UsrCod"
" AND usr_figures.NumClicks>0"
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC,"
"usr_figures.UsrCod"
" LIMIT 100",
Gbl.Hierarchy.Crs.CrsCod);
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"
" WHERE crs_usr.CrsCod=%ld"
" AND crs_usr.UsrCod=usr_figures.UsrCod"
" AND usr_figures.NumClicks>0"
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC,"
"usr_figures.UsrCod"
" LIMIT 100",
Gbl.Hierarchy.Crs.CrsCod);
break;
default:
Lay_WrongScopeExit ();

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",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM prg_items"
" WHERE CrsCod>0");
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with program items",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM prg_items"
" WHERE CrsCod>0");
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",
"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",
"SELECT COUNT(DISTINCT projects.CrsCod)"
" FROM institutions,centres,deg_degrees,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",
Gbl.Hierarchy.Cty.CtyCod);
break;
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of courses with projects",
"SELECT COUNT(DISTINCT projects.CrsCod)"
" FROM centres,deg_degrees,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",
Gbl.Hierarchy.Ins.InsCod);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM projects"
" WHERE CrsCod>0");
case Hie_Lvl_CTY:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT projects.CrsCod)"
" 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=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=projects.CrsCod",
Gbl.Hierarchy.Cty.CtyCod);
case Hie_Lvl_INS:
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT projects.CrsCod)"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"projects"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=projects.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of courses with projects",
"SELECT COUNT(DISTINCT projects.CrsCod)"
" FROM deg_degrees,courses,projects"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.Status=0"
" AND courses.CrsCod=projects.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT projects.CrsCod)"
" FROM deg_degrees,"
"crs_courses,"
"projects"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.Status=0"
" AND crs_courses.CrsCod=projects.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"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",
Gbl.Hierarchy.Deg.DegCod);
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with projects",
"SELECT COUNT(DISTINCT 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",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM projects"
" WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod);
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",
"SELECT COUNT(*)"
" FROM projects"
" WHERE CrsCod>0");
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",
"SELECT COUNT(*)"
" FROM institutions,centres,deg_degrees,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",
Gbl.Hierarchy.Cty.CtyCod);
return (unsigned)
DB_QueryCOUNT ("can not get number of projects",
"SELECT COUNT(*)"
" 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=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",
"SELECT COUNT(*)"
" FROM centres,deg_degrees,courses,projects"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=projects.CrsCod",
Gbl.Hierarchy.Ins.InsCod);
return (unsigned)
DB_QueryCOUNT ("can not get number of projects",
"SELECT COUNT(*)"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"projects"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" 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",
"SELECT COUNT(*)"
" FROM deg_degrees,courses,projects"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=projects.CrsCod",
Gbl.Hierarchy.Ctr.CtrCod);
return (unsigned)
DB_QueryCOUNT ("can not get number of projects",
"SELECT COUNT(*)"
" FROM deg_degrees,"
"crs_courses,"
"projects"
" WHERE deg_degrees.CtrCod=%ld"
" 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",
"SELECT COUNT(*)"
" FROM courses,projects"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=projects.CrsCod",
Gbl.Hierarchy.Deg.DegCod);
return (unsigned)
DB_QueryCOUNT ("can not get number of projects",
"SELECT COUNT(*)"
" 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",
"SELECT COUNT(*)"
" FROM projects"
" WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod);
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,30 +604,34 @@ 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]
"deg_degrees.ShortName," // row[2]
"deg_degrees.FullName," // row[3]
"courses.Year," // row[4]
"courses.FullName," // row[5]
"centres.ShortName" // row[6]
" FROM courses,deg_degrees,centres,institutions,countries"
" WHERE %s"
" AND 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,"
"institutions.FullName,"
"degrees.FullName,"
"courses.Year",
SearchQuery,RangeQuery);
DB_QuerySELECT (&mysql_res,"can not get courses",
"SELECT deg_degrees.DegCod," // row[0]
"crs_courses.CrsCod," // row[1]
"deg_degrees.ShortName," // row[2]
"deg_degrees.FullName," // row[3]
"crs_courses.Year," // row[4]
"crs_courses.FullName," // row[5]
"centres.ShortName" // row[6]
" FROM crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"countries"
" WHERE %s"
" 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 crs_courses.FullName,"
"institutions.FullName,"
"degrees.FullName,"
"crs_courses.Year",
SearchQuery,RangeQuery);
Crs_ListCrssFound (&mysql_res,NumCrss);
return NumCrss;
}
@ -683,108 +687,129 @@ static unsigned Sch_SearchOpenDocumentsInDB (const char *RangeQuery)
"_latin1 "," COLLATE latin1_general_ci"))
{
/***** Query database *****/
NumDocs = DB_QuerySELECT (&mysql_res,"can not get files",
"SELECT * FROM "
"("
"SELECT files.FilCod," // Institution
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"-1 AS CtrCod,"
"'' AS CtrShortName,"
"-1 AS DegCod,"
"'' AS DegShortName,"
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" FROM files,courses,deg_degrees,centres,institutions,countries"
" WHERE files.Public='Y' AND %s"
" AND files.FileBrowser IN (%u,%u)"
" AND files.Cod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
" UNION "
"SELECT files.FilCod," // Centre
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"-1 AS DegCod,"
"'' AS DegShortName,"
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" FROM files,courses,deg_degrees,centres,institutions,countries"
" WHERE files.Public='Y' AND %s"
" AND files.FileBrowser IN (%u,%u)"
" AND files.Cod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
" UNION "
"SELECT files.FilCod," // Degree
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"-1,'' AS CrsShortName,"
"-1"
" FROM files,courses,deg_degrees,centres,institutions,countries"
" WHERE files.Public='Y' AND %s"
" AND files.FileBrowser IN (%u,%u)"
" AND files.Cod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
" UNION "
"SELECT files.FilCod," // Course
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"courses.CrsCod,"
"courses.ShortName AS CrsShortName,"
"-1"
" FROM files,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 deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
") AS selected_files"
" WHERE PathFromRoot<>''"
" ORDER BY InsShortName,"
"CtrShortName,"
"DegShortName,"
"CrsShortName,"
"PathFromRoot",
SearchQuery,
(unsigned) Brw_ADMI_DOC_INS,
(unsigned) Brw_ADMI_SHR_INS,
RangeQuery,
SearchQuery,
(unsigned) Brw_ADMI_DOC_CTR,
(unsigned) Brw_ADMI_SHR_CTR,
RangeQuery,
SearchQuery,
(unsigned) Brw_ADMI_DOC_DEG,
(unsigned) Brw_ADMI_SHR_DEG,
RangeQuery,
SearchQuery,
(unsigned) Brw_ADMI_DOC_CRS,
(unsigned) Brw_ADMI_SHR_CRS,
RangeQuery);
NumDocs =
DB_QuerySELECT (&mysql_res,"can not get files",
"SELECT * FROM "
"("
"SELECT files.FilCod," // Institution
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"-1 AS CtrCod,"
"'' AS CtrShortName,"
"-1 AS DegCod,"
"'' AS DegShortName,"
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" 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"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
" UNION "
"SELECT files.FilCod," // Centre
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"-1 AS DegCod,"
"'' AS DegShortName,"
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" 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"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
" UNION "
"SELECT files.FilCod," // Degree
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"-1,'' AS CrsShortName,"
"-1"
" 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"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
" UNION "
"SELECT files.FilCod," // Course
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"crs_courses.CrsCod,"
"crs_courses.ShortName AS CrsShortName,"
"-1"
" FROM files,"
"crs_courses,"
"deg_degrees,"
"centres,"
"institutions,"
"countries"
" WHERE files.Public='Y' AND %s"
" AND files.FileBrowser IN (%u,%u)"
" 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"
"%s"
") AS selected_files"
" WHERE PathFromRoot<>''"
" ORDER BY InsShortName,"
"CtrShortName,"
"DegShortName,"
"CrsShortName,"
"PathFromRoot",
SearchQuery,
(unsigned) Brw_ADMI_DOC_INS,
(unsigned) Brw_ADMI_SHR_INS,
RangeQuery,
SearchQuery,
(unsigned) Brw_ADMI_DOC_CTR,
(unsigned) Brw_ADMI_SHR_CTR,
RangeQuery,
SearchQuery,
(unsigned) Brw_ADMI_DOC_DEG,
(unsigned) Brw_ADMI_SHR_DEG,
RangeQuery,
SearchQuery,
(unsigned) Brw_ADMI_DOC_CRS,
(unsigned) Brw_ADMI_SHR_CRS,
RangeQuery);
/***** List documents found *****/
Brw_ListDocsFound (&mysql_res,NumDocs,
@ -849,71 +874,84 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
(unsigned) Brw_ADMI_MRK_GRP);
/***** Build the query *****/
NumDocs = DB_QuerySELECT (&mysql_res,"can not get files",
"SELECT * FROM "
"("
"SELECT files.FilCod,"
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"courses.CrsCod,"
"courses.ShortName AS CrsShortName,"
"-1 AS GrpCod"
" FROM files,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 deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
" UNION "
"SELECT files.FilCod,"
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"courses.CrsCod,"
"courses.ShortName AS CrsShortName,"
"crs_grp.GrpCod"
" FROM files,crs_grp,crs_grp_types,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 deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
") AS selected_files"
" WHERE PathFromRoot<>''"
" ORDER BY InsShortName,"
"CtrShortName,"
"DegShortName,"
"CrsShortName,"
"PathFromRoot",
SearchQuery,
(unsigned) Brw_ADMI_DOC_CRS,
(unsigned) Brw_ADMI_TCH_CRS,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) Brw_ADMI_MRK_CRS,
RangeQuery,
SearchQuery,
(unsigned) Brw_ADMI_DOC_GRP,
(unsigned) Brw_ADMI_TCH_GRP,
(unsigned) Brw_ADMI_SHR_GRP,
(unsigned) Brw_ADMI_MRK_GRP,
RangeQuery);
NumDocs =
DB_QuerySELECT (&mysql_res,"can not get files",
"SELECT * FROM "
"("
"SELECT files.FilCod,"
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"crs_courses.CrsCod,"
"crs_courses.ShortName AS CrsShortName,"
"-1 AS GrpCod"
" 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=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"
"%s"
" UNION "
"SELECT files.FilCod,"
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"crs_courses.CrsCod,"
"crs_courses.ShortName AS CrsShortName,"
"crs_grp.GrpCod"
" 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=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"
"%s"
") AS selected_files"
" WHERE PathFromRoot<>''"
" ORDER BY InsShortName,"
"CtrShortName,"
"DegShortName,"
"CrsShortName,"
"PathFromRoot",
SearchQuery,
(unsigned) Brw_ADMI_DOC_CRS,
(unsigned) Brw_ADMI_TCH_CRS,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) Brw_ADMI_MRK_CRS,
RangeQuery,
SearchQuery,
(unsigned) Brw_ADMI_DOC_GRP,
(unsigned) Brw_ADMI_TCH_GRP,
(unsigned) Brw_ADMI_SHR_GRP,
(unsigned) Brw_ADMI_MRK_GRP,
RangeQuery);
/***** List documents found *****/
Brw_ListDocsFound (&mysql_res,NumDocs,
@ -949,153 +987,185 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery)
"_latin1 "," COLLATE latin1_general_ci"))
{
/***** Build the query *****/
NumDocs = DB_QuerySELECT (&mysql_res,"can not get files",
"SELECT * FROM "
"("
"SELECT files.FilCod," // Institution
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"-1 AS CtrCod,"
"'' AS CtrShortName,"
"-1 AS DegCod,"
"'' AS DegShortName,"
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" FROM files,courses,deg_degrees,centres,institutions,countries"
" WHERE files.PublisherUsrCod=%ld AND %s"
" AND files.FileBrowser IN (%u,%u)"
" AND files.Cod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
" UNION "
"SELECT files.FilCod," // Centre
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"-1 AS DegCod,"
"'' AS DegShortName,"
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" FROM files,courses,deg_degrees,centres,institutions,countries"
" WHERE files.PublisherUsrCod=%ld AND %s"
" AND files.FileBrowser IN (%u,%u)"
" AND files.Cod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
" UNION "
"SELECT files.FilCod," // Degree
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" FROM files,courses,deg_degrees,centres,institutions,countries"
" WHERE files.PublisherUsrCod=%ld AND %s"
" AND files.FileBrowser IN (%u,%u)"
" AND files.Cod=deg_degrees.DegCod"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
" UNION "
"SELECT files.FilCod," // Course
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"courses.CrsCod,"
"courses.ShortName AS CrsShortName,"
"-1 AS GrpCod"
" FROM files,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 deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
" UNION "
"SELECT files.FilCod," // Group
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"courses.CrsCod,"
"courses.ShortName AS CrsShortName,"
"crs_grp.GrpCod"
" FROM files,crs_grp,crs_grp_types,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 deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
" UNION "
"SELECT files.FilCod," // Briefcase
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"-1 AS InsCod,"
"'' AS InsShortName,"
"-1 AS CtrCod,"
"'' AS CtrShortName,"
"-1 AS DegCod,"
"'' AS DegShortName,"
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" FROM files"
" WHERE files.PublisherUsrCod=%ld AND %s"
" AND files.FileBrowser=%u"
") AS selected_files"
" WHERE PathFromRoot<>''"
" ORDER BY InsShortName,CtrShortName,DegShortName,CrsShortName,PathFromRoot",
Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery,
(unsigned) Brw_ADMI_DOC_INS,
(unsigned) Brw_ADMI_SHR_INS,
RangeQuery,
Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery,
(unsigned) Brw_ADMI_DOC_CTR,
(unsigned) Brw_ADMI_SHR_CTR,
RangeQuery,
Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery,
(unsigned) Brw_ADMI_DOC_DEG,
(unsigned) Brw_ADMI_SHR_DEG,
RangeQuery,
Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery,
(unsigned) Brw_ADMI_DOC_CRS,
(unsigned) Brw_ADMI_TCH_CRS,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) Brw_ADMI_MRK_CRS,
RangeQuery,
Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery,
(unsigned) Brw_ADMI_DOC_GRP,
(unsigned) Brw_ADMI_TCH_GRP,
(unsigned) Brw_ADMI_SHR_GRP,
(unsigned) Brw_ADMI_MRK_GRP,
RangeQuery,
Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery,
(unsigned) Brw_ADMI_BRF_USR);
NumDocs =
DB_QuerySELECT (&mysql_res,"can not get files",
"SELECT * FROM "
"("
"SELECT files.FilCod," // Institution
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"-1 AS CtrCod,"
"'' AS CtrShortName,"
"-1 AS DegCod,"
"'' AS DegShortName,"
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" 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"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
" UNION "
"SELECT files.FilCod," // Centre
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"-1 AS DegCod,"
"'' AS DegShortName,"
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" 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"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
" UNION "
"SELECT files.FilCod," // Degree
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" 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"
" AND deg_degrees.CtrCod=centres.CtrCod"
" AND centres.InsCod=institutions.InsCod"
" AND institutions.CtyCod=countries.CtyCod"
"%s"
" UNION "
"SELECT files.FilCod," // Course
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"crs_courses.CrsCod,"
"crs_courses.ShortName AS CrsShortName,"
"-1 AS GrpCod"
" 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=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"
"%s"
" UNION "
"SELECT files.FilCod," // Group
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"institutions.InsCod,"
"institutions.ShortName AS InsShortName,"
"centres.CtrCod,"
"centres.ShortName AS CtrShortName,"
"deg_degrees.DegCod,"
"deg_degrees.ShortName AS DegShortName,"
"crs_courses.CrsCod,"
"crs_courses.ShortName AS CrsShortName,"
"crs_grp.GrpCod"
" 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=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"
"%s"
" UNION "
"SELECT files.FilCod," // Briefcase
"SUBSTRING(files.Path,LOCATE('/',files.Path)) AS PathFromRoot,"
"-1 AS InsCod,"
"'' AS InsShortName,"
"-1 AS CtrCod,"
"'' AS CtrShortName,"
"-1 AS DegCod,"
"'' AS DegShortName,"
"-1 AS CrsCod,"
"'' AS CrsShortName,"
"-1 AS GrpCod"
" FROM files"
" WHERE files.PublisherUsrCod=%ld AND %s"
" AND files.FileBrowser=%u"
") AS selected_files"
" WHERE PathFromRoot<>''"
" ORDER BY InsShortName,"
"CtrShortName,"
"DegShortName,"
"CrsShortName,"
"PathFromRoot",
Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery,
(unsigned) Brw_ADMI_DOC_INS,
(unsigned) Brw_ADMI_SHR_INS,
RangeQuery,
Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery,
(unsigned) Brw_ADMI_DOC_CTR,
(unsigned) Brw_ADMI_SHR_CTR,
RangeQuery,
Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery,
(unsigned) Brw_ADMI_DOC_DEG,
(unsigned) Brw_ADMI_SHR_DEG,
RangeQuery,
Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery,
(unsigned) Brw_ADMI_DOC_CRS,
(unsigned) Brw_ADMI_TCH_CRS,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) Brw_ADMI_MRK_CRS,
RangeQuery,
Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery,
(unsigned) Brw_ADMI_DOC_GRP,
(unsigned) Brw_ADMI_TCH_GRP,
(unsigned) Brw_ADMI_SHR_GRP,
(unsigned) Brw_ADMI_MRK_GRP,
RangeQuery,
Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery,
(unsigned) Brw_ADMI_BRF_USR);
/***** List documents found *****/
Brw_ListDocsFound (&mysql_res,NumDocs,

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",
"SELECT COUNT(DISTINCT svy_surveys.Cod)"
" FROM institutions,centres,deg_degrees,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 svy_surveys.Scope='%s'",
Gbl.Hierarchy.Ins.InsCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT svy_surveys.Cod)"
" 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=crs_courses.DegCod"
" AND crs_courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Ins.InsCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with surveys",
"SELECT COUNT(DISTINCT svy_surveys.Cod)"
" FROM centres,deg_degrees,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 svy_surveys.Scope='%s'",
Gbl.Hierarchy.Ins.InsCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT svy_surveys.Cod)"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"svy_surveys"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" 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));
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of courses"
" with surveys",
"SELECT COUNT(DISTINCT svy_surveys.Cod)"
" FROM deg_degrees,courses,svy_surveys"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=svy_surveys.Cod"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Ctr.CtrCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT svy_surveys.Cod)"
" FROM deg_degrees,"
"crs_courses,"
"svy_surveys"
" WHERE deg_degrees.CtrCod=%ld"
" 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));
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"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"
" AND svy_surveys.Scope='%s'",
Gbl.Hierarchy.Deg.DegCod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS));
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT 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));
case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"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;
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);
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",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM tst_questions"
" WHERE AnsType='%s'",
Tst_StrAnswerTypesDB[AnsType]);
break;
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]);
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",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM institutions,centres,deg_degrees,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 tst_questions.AnsType='%s'",
Gbl.Hierarchy.Cty.CtyCod,
Tst_StrAnswerTypesDB[AnsType]);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" 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=crs_courses.DegCod"
" AND crs_courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.AnsType='%s'",
Gbl.Hierarchy.Cty.CtyCod,
Tst_StrAnswerTypesDB[AnsType]);
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",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM centres,deg_degrees,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 tst_questions.AnsType='%s'",
Gbl.Hierarchy.Ins.InsCod,
Tst_StrAnswerTypesDB[AnsType]);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM centres,"
"deg_degrees,"
"crs_courses,"
"tst_questions"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=deg_degrees.CtrCod"
" 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]);
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",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM deg_degrees,courses,tst_questions"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.AnsType='%s'",
Gbl.Hierarchy.Ctr.CtrCod,
Tst_StrAnswerTypesDB[AnsType]);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM deg_degrees,"
"crs_courses,"
"tst_questions"
" WHERE deg_degrees.CtrCod=%ld"
" 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]);
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",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM courses,tst_questions"
" WHERE courses.DegCod=%ld"
" AND courses.CrsCod=tst_questions.CrsCod"
" AND tst_questions.AnsType='%s'",
Gbl.Hierarchy.Deg.DegCod,
Tst_StrAnswerTypesDB[AnsType]);
break;
return (unsigned)
DB_QueryCOUNT ("can not get number of courses with test questions",
"SELECT COUNT(DISTINCT 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]);
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",
"SELECT COUNT(DISTINCT CrsCod)"
" FROM tst_questions"
" WHERE CrsCod=%ld"
" AND AnsType='%s'",
Gbl.Hierarchy.Crs.CrsCod,
Tst_StrAnswerTypesDB[AnsType]);
break;
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]);
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",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" 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",
"SELECT COUNT(DISTINCT tst_questions.CrsCod)"
" FROM tst_questions,tst_config"
" WHERE tst_questions.AnsType='%s'"
" AND tst_questions.CrsCod=tst_config.CrsCod"
" AND tst_config.pluggable='%s'",
Tst_StrAnswerTypesDB[AnsType],
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
break;
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"
" WHERE tst_questions.CrsCod=tst_config.CrsCod"
" AND tst_config.pluggable='%s'",
TstCfg_PluggableDB[TstCfg_PLUGGABLE_YES]);
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"
" 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]);
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;
}

File diff suppressed because it is too large Load Diff