diff --git a/sql/swad.sql b/sql/swad.sql index f854bedfc..64876e0f6 100644 --- a/sql/swad.sql +++ b/sql/swad.sql @@ -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, diff --git a/swad_API.c b/swad_API.c index 55f93f644..6ad8cf53a 100644 --- a/swad_API.c +++ b/swad_API.c @@ -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)) diff --git a/swad_agenda.c b/swad_agenda.c index 88ddf8139..9eb2ec2eb 100644 --- a/swad_agenda.c +++ b/swad_agenda.c @@ -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; diff --git a/swad_announcement.c b/swad_announcement.c index 432303dea..4a69ec539 100644 --- a/swad_announcement.c +++ b/swad_announcement.c @@ -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 *****/ diff --git a/swad_assignment.c b/swad_assignment.c index 163d30fc3..d56b4b3d5 100644 --- a/swad_assignment.c +++ b/swad_assignment.c @@ -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); diff --git a/swad_attendance.c b/swad_attendance.c index 02e8447e4..fd5e03133 100644 --- a/swad_attendance.c +++ b/swad_attendance.c @@ -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); diff --git a/swad_centre.c b/swad_centre.c index fc9a13a3a..0c47b825b 100644 --- a/swad_centre.c +++ b/swad_centre.c @@ -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); } diff --git a/swad_changelog.h b/swad_changelog.h index 8f1c27a69..56720ac53 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -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; diff --git a/swad_connected.c b/swad_connected.c index 27893573e..490c5084a 100644 --- a/swad_connected.c +++ b/swad_connected.c @@ -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 (); diff --git a/swad_country.c b/swad_country.c index 2f5b04828..c43c2cf9e 100644 --- a/swad_country.c +++ b/swad_country.c @@ -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); } diff --git a/swad_course.c b/swad_course.c index bc281a616..eaf7c2583 100644 --- a/swad_course.c +++ b/swad_course.c @@ -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 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," diff --git a/swad_degree.c b/swad_degree.c index df397a201..b7e3359a4 100644 --- a/swad_degree.c +++ b/swad_degree.c @@ -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); } diff --git a/swad_enrolment.c b/swad_enrolment.c index c11e5931c..9d29386cb 100644 --- a/swad_enrolment.c +++ b/swad_enrolment.c @@ -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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<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<0" + " ORDER BY RequestTime DESC", + Gbl.Hierarchy.Crs.CrsCod, + RolesSelected); break; default: Lay_NoPermissionExit (); diff --git a/swad_exam.c b/swad_exam.c index 2843c4547..d34fc92f7 100644 --- a/swad_exam.c +++ b/swad_exam.c @@ -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", diff --git a/swad_figure.c b/swad_figure.c index 4cad9bd37..fd2cb0eb8 100644 --- a/swad_figure.c +++ b/swad_figure.c @@ -882,7 +882,7 @@ static void Fig_GetAndShowHierarchyWithUsrs (Rol_Role_t Role) NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,SubQuery,Hie_Lvl_CTR,Gbl.Hierarchy.Ctr.CtrCod); break; case Hie_Lvl_DEG: - sprintf (SubQuery,"courses.DegCod=%ld AND ",Gbl.Hierarchy.Deg.DegCod); + sprintf (SubQuery,"crs_courses.DegCod=%ld AND ",Gbl.Hierarchy.Deg.DegCod); NumCtysWithUsrs = Cty_GetCachedNumCtysWithUsrs (Role,SubQuery,Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod); NumInssWithUsrs = Ins_GetCachedNumInssWithUsrs (Role,SubQuery,Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod); NumCtrsWithUsrs = Ctr_GetCachedNumCtrsWithUsrs (Role,SubQuery,Hie_Lvl_DEG,Gbl.Hierarchy.Deg.DegCod); @@ -1208,42 +1208,52 @@ static void Fig_GetAndShowInssOrderedByNumCrss (void) switch (Gbl.Scope.Current) { case Hie_Lvl_SYS: - NumInss = - (unsigned) DB_QuerySELECT (&mysql_res,"can not get institutions", - "SELECT centres.InsCod,COUNT(*) AS N" - " FROM centres,deg_degrees,courses" - " WHERE centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " GROUP BY InsCod" - " ORDER BY N DESC"); + NumInss = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get institutions", + "SELECT centres.InsCod," + "COUNT(*) AS N" + " FROM centres," + "deg_degrees," + "crs_courses" + " WHERE centres.CtrCod=deg_degrees.CtrCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " GROUP BY InsCod" + " ORDER BY N DESC"); break; case Hie_Lvl_CTY: - NumInss = - (unsigned) DB_QuerySELECT (&mysql_res,"can not get institutions", - "SELECT centres.InsCod,COUNT(*) AS N" - " 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" - " GROUP BY centres.InsCod" - " ORDER BY N DESC", - Gbl.Hierarchy.Cty.CtyCod); + NumInss = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get institutions", + "SELECT centres.InsCod," + "COUNT(*) AS N" + " 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" + " GROUP BY centres.InsCod" + " ORDER BY N DESC", + Gbl.Hierarchy.Cty.CtyCod); break; case Hie_Lvl_INS: case Hie_Lvl_CTR: case Hie_Lvl_DEG: case Hie_Lvl_CRS: - NumInss = - (unsigned) DB_QuerySELECT (&mysql_res,"can not get institutions", - "SELECT centres.InsCod,COUNT(*) AS N" - " FROM centres,deg_degrees,courses" - " WHERE centres.InsCod=%ld" - " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " GROUP BY centres.InsCod" - " ORDER BY N DESC", - Gbl.Hierarchy.Ins.InsCod); + NumInss = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get institutions", + "SELECT centres.InsCod," + "COUNT(*) AS N" + " FROM centres," + "deg_degrees," + "crs_courses" + " WHERE centres.InsCod=%ld" + " AND centres.CtrCod=deg_degrees.CtrCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " GROUP BY centres.InsCod" + " ORDER BY N DESC", + Gbl.Hierarchy.Ins.InsCod); break; default: Lay_WrongScopeExit (); @@ -1280,45 +1290,55 @@ static void Fig_GetAndShowInssOrderedByNumUsrsInCrss (void) switch (Gbl.Scope.Current) { case Hie_Lvl_SYS: - NumInss = - (unsigned) DB_QuerySELECT (&mysql_res,"can not get institutions", - "SELECT centres.InsCod,COUNT(DISTINCT crs_usr.UsrCod) AS N" - " FROM centres,deg_degrees,courses,crs_usr" - " WHERE centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" - " GROUP BY InsCod" - " ORDER BY N DESC"); + NumInss = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get institutions", + "SELECT centres.InsCod," + "COUNT(DISTINCT crs_usr.UsrCod) AS N" + " FROM centres,deg_degrees,crs_courses,crs_usr" + " WHERE centres.CtrCod=deg_degrees.CtrCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" + " GROUP BY InsCod" + " ORDER BY N DESC"); break; case Hie_Lvl_CTY: - NumInss = - (unsigned) DB_QuerySELECT (&mysql_res,"can not get institutions", - "SELECT centres.InsCod,COUNT(DISTINCT crs_usr.UsrCod) AS N" - " FROM institutions,centres,deg_degrees,courses,crs_usr" - " WHERE institutions.CtyCod=%ld" - " AND institutions.InsCod=centres.InsCod" - " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" - " GROUP BY centres.InsCod" - " ORDER BY N DESC", - Gbl.Hierarchy.Cty.CtyCod); + NumInss = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get institutions", + "SELECT centres.InsCod," + "COUNT(DISTINCT crs_usr.UsrCod) AS N" + " FROM institutions," + "centres," + "deg_degrees," + "crs_courses," + "crs_usr" + " 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" + " GROUP BY centres.InsCod" + " ORDER BY N DESC", + Gbl.Hierarchy.Cty.CtyCod); break; case Hie_Lvl_INS: case Hie_Lvl_CTR: case Hie_Lvl_DEG: case Hie_Lvl_CRS: - NumInss = - (unsigned) DB_QuerySELECT (&mysql_res,"can not get institutions", - "SELECT centres.InsCod,COUNT(DISTINCT crs_usr.UsrCod) AS N" - " FROM centres,deg_degrees,courses,crs_usr" - " WHERE centres.InsCod=%ld" - " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" - " GROUP BY centres.InsCod" - " ORDER BY N DESC", - Gbl.Hierarchy.Ins.InsCod); + NumInss = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get institutions", + "SELECT centres.InsCod," + "COUNT(DISTINCT crs_usr.UsrCod) AS N" + " FROM centres," + "deg_degrees," + "crs_courses," + "crs_usr" + " WHERE centres.InsCod=%ld" + " AND centres.CtrCod=deg_degrees.CtrCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" + " GROUP BY centres.InsCod" + " ORDER BY N DESC", + Gbl.Hierarchy.Ins.InsCod); break; default: Lay_WrongScopeExit (); @@ -1675,7 +1695,9 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "file_browser_size.NumFolders," "file_browser_size.NumFiles," "file_browser_size.TotalSize" - " FROM crs_grp_types,crs_grp,file_browser_size" + " FROM crs_grp_types," + "crs_grp," + "file_browser_size" " WHERE crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser IN (%u,%u,%u,%u)" @@ -1719,7 +1741,9 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM crs_grp_types,crs_grp,file_browser_size" + " FROM crs_grp_types," + "crs_grp," + "file_browser_size" " WHERE crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", @@ -1778,12 +1802,16 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "file_browser_size.NumFolders," "file_browser_size.NumFiles," "file_browser_size.TotalSize" - " FROM institutions,centres,deg_degrees,courses,file_browser_size" + " FROM institutions," + "centres," + "deg_degrees," + "crs_courses," + "file_browser_size" " WHERE institutions.CtyCod=%ld" " AND institutions.InsCod=centres.InsCod" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=file_browser_size.Cod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser IN (%u,%u,%u,%u,%u,%u)" " UNION " "SELECT crs_grp_types.CrsCod," @@ -1792,12 +1820,18 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "file_browser_size.NumFolders," "file_browser_size.NumFiles," "file_browser_size.TotalSize" - " FROM institutions,centres,deg_degrees,courses,crs_grp_types,crs_grp,file_browser_size" + " FROM institutions," + "centres," + "deg_degrees," + "crs_courses," + "crs_grp_types," + "crs_grp," + "file_browser_size" " 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_grp_types.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_grp_types.CrsCod" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser IN (%u,%u,%u,%u)" @@ -1827,12 +1861,16 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM institutions,centres,deg_degrees,courses,file_browser_size" + " FROM institutions," + "centres," + "deg_degrees," + "crs_courses," + "file_browser_size" " WHERE institutions.CtyCod=%ld" " AND institutions.InsCod=centres.InsCod" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=file_browser_size.Cod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=file_browser_size.Cod" " and file_browser_size.FileBrowser=%u", Gbl.Hierarchy.Cty.CtyCod,(unsigned) FileBrowser); break; @@ -1848,12 +1886,18 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM institutions,centres,deg_degrees,courses,crs_grp_types,crs_grp,file_browser_size" + " FROM institutions," + "centres," + "deg_degrees," + "crs_courses," + "crs_grp_types," + "crs_grp," + "file_browser_size" " 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_grp_types.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_grp_types.CrsCod" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", @@ -1869,12 +1913,16 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM institutions,centres,deg_degrees,courses,file_browser_size" + " FROM institutions," + "centres," + "deg_degrees," + "crs_courses," + "file_browser_size" " WHERE institutions.CtyCod=%ld" " AND institutions.InsCod=centres.InsCod" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=file_browser_size.Cod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", Gbl.Hierarchy.Cty.CtyCod,(unsigned) FileBrowser); break; @@ -1887,12 +1935,17 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM institutions,centres,deg_degrees,courses,crs_usr,file_browser_size" + " FROM institutions," + "centres," + "deg_degrees," + "crs_courses," + "crs_usr," + "file_browser_size" " 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=file_browser_size.ZoneUsrCod" " AND file_browser_size.FileBrowser=%u", Gbl.Hierarchy.Cty.CtyCod,(unsigned) FileBrowser); @@ -1923,11 +1976,14 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "file_browser_size.NumFolders," "file_browser_size.NumFiles," "file_browser_size.TotalSize" - " FROM centres,deg_degrees,courses,file_browser_size" + " FROM centres," + "deg_degrees," + "crs_courses," + "file_browser_size" " WHERE centres.InsCod=%ld" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=file_browser_size.Cod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser IN (%u,%u,%u,%u,%u,%u)" " UNION " "SELECT crs_grp_types.CrsCod," @@ -1936,11 +1992,16 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "file_browser_size.NumFolders," "file_browser_size.NumFiles," "file_browser_size.TotalSize" - " FROM centres,deg_degrees,courses,crs_grp_types,crs_grp,file_browser_size" + " FROM centres," + "deg_degrees," + "crs_courses," + "crs_grp_types," + "crs_grp," + "file_browser_size" " WHERE centres.InsCod=%ld" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_grp_types.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_grp_types.CrsCod" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser IN (%u,%u,%u,%u)" @@ -1970,11 +2031,14 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM centres,deg_degrees,courses,file_browser_size" + " FROM centres," + "deg_degrees," + "crs_courses," + "file_browser_size" " WHERE centres.InsCod=%ld" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=file_browser_size.Cod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=file_browser_size.Cod" " and file_browser_size.FileBrowser=%u", Gbl.Hierarchy.Ins.InsCod,(unsigned) FileBrowser); break; @@ -1990,11 +2054,16 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM centres,deg_degrees,courses,crs_grp_types,crs_grp,file_browser_size" + " FROM centres," + "deg_degrees," + "crs_courses," + "crs_grp_types," + "crs_grp," + "file_browser_size" " WHERE centres.InsCod=%ld" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_grp_types.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_grp_types.CrsCod" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", @@ -2010,11 +2079,14 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM centres,deg_degrees,courses,file_browser_size" + " FROM centres," + "deg_degrees," + "crs_courses," + "file_browser_size" " WHERE centres.InsCod=%ld" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=file_browser_size.Cod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", Gbl.Hierarchy.Ins.InsCod,(unsigned) FileBrowser); break; @@ -2027,11 +2099,15 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM centres,deg_degrees,courses,crs_usr,file_browser_size" + " FROM centres," + "deg_degrees," + "crs_courses," + "crs_usr," + "file_browser_size" " 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=file_browser_size.ZoneUsrCod" " AND file_browser_size.FileBrowser=%u", Gbl.Hierarchy.Ins.InsCod,(unsigned) FileBrowser); @@ -2062,10 +2138,12 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "file_browser_size.NumFolders," "file_browser_size.NumFiles," "file_browser_size.TotalSize" - " FROM deg_degrees,courses,file_browser_size" + " FROM deg_degrees," + "crs_courses," + "file_browser_size" " WHERE deg_degrees.CtrCod=%ld" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=file_browser_size.Cod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser IN (%u,%u,%u,%u,%u,%u)" " UNION " "SELECT crs_grp_types.CrsCod," @@ -2074,10 +2152,14 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "file_browser_size.NumFolders," "file_browser_size.NumFiles," "file_browser_size.TotalSize" - " FROM deg_degrees,courses,crs_grp_types,crs_grp,file_browser_size" + " FROM deg_degrees," + "crs_courses," + "crs_grp_types," + "crs_grp," + "file_browser_size" " WHERE deg_degrees.CtrCod=%ld" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_grp_types.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_grp_types.CrsCod" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser IN (%u,%u,%u,%u)" @@ -2107,10 +2189,12 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM deg_degrees,courses,file_browser_size" + " FROM deg_degrees," + "crs_courses," + "file_browser_size" " WHERE deg_degrees.CtrCod=%ld" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=file_browser_size.Cod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", Gbl.Hierarchy.Ctr.CtrCod,(unsigned) FileBrowser); break; @@ -2126,10 +2210,14 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM deg_degrees,courses,crs_grp_types,crs_grp,file_browser_size" + " FROM deg_degrees," + "crs_courses," + "crs_grp_types," + "crs_grp," + "file_browser_size" " WHERE deg_degrees.CtrCod=%ld" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_grp_types.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_grp_types.CrsCod" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", @@ -2145,10 +2233,12 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM deg_degrees,courses,file_browser_size" + " FROM deg_degrees," + "crs_courses," + "file_browser_size" " WHERE deg_degrees.CtrCod=%ld" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=file_browser_size.Cod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", Gbl.Hierarchy.Ctr.CtrCod,(unsigned) FileBrowser); break; @@ -2161,10 +2251,13 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM deg_degrees,courses,crs_usr,file_browser_size" + " FROM deg_degrees," + "crs_courses," + "crs_usr," + "file_browser_size" " 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=file_browser_size.ZoneUsrCod" " AND file_browser_size.FileBrowser=%u", Gbl.Hierarchy.Ctr.CtrCod,(unsigned) FileBrowser); @@ -2195,9 +2288,10 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "file_browser_size.NumFolders," "file_browser_size.NumFiles," "file_browser_size.TotalSize" - " FROM courses,file_browser_size" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=file_browser_size.Cod" + " FROM crs_courses," + "file_browser_size" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser IN (%u,%u,%u,%u,%u,%u)" " UNION " "SELECT crs_grp_types.CrsCod," @@ -2206,9 +2300,12 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "file_browser_size.NumFolders," "file_browser_size.NumFiles," "file_browser_size.TotalSize" - " FROM courses,crs_grp_types,crs_grp,file_browser_size" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=crs_grp_types.CrsCod" + " FROM crs_courses," + "crs_grp_types," + "crs_grp," + "file_browser_size" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=crs_grp_types.CrsCod" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser IN (%u,%u,%u,%u)" @@ -2238,9 +2335,10 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM courses,file_browser_size" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=file_browser_size.Cod" + " FROM crs_courses," + "file_browser_size" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", Gbl.Hierarchy.Deg.DegCod,(unsigned) FileBrowser); break; @@ -2256,9 +2354,12 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM courses,crs_grp_types,crs_grp,file_browser_size" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=crs_grp_types.CrsCod" + " FROM crs_courses," + "crs_grp_types," + "crs_grp," + "file_browser_size" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=crs_grp_types.CrsCod" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", @@ -2274,9 +2375,10 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM courses,file_browser_size" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=file_browser_size.Cod" + " FROM crs_courses," + "file_browser_size" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", Gbl.Hierarchy.Deg.DegCod,(unsigned) FileBrowser); break; @@ -2289,9 +2391,11 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM courses,crs_usr,file_browser_size" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=crs_usr.CrsCod" + " FROM crs_courses," + "crs_usr," + "file_browser_size" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=file_browser_size.ZoneUsrCod" " AND file_browser_size.FileBrowser=%u", Gbl.Hierarchy.Deg.DegCod,(unsigned) FileBrowser); @@ -2332,7 +2436,9 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "file_browser_size.NumFolders," "file_browser_size.NumFiles," "file_browser_size.TotalSize" - " FROM crs_grp_types,crs_grp,file_browser_size" + " FROM crs_grp_types," + "crs_grp," + "file_browser_size" " WHERE crs_grp_types.CrsCod=%ld" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" @@ -2379,7 +2485,9 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM crs_grp_types,crs_grp,file_browser_size" + " FROM crs_grp_types," + "crs_grp," + "file_browser_size" " WHERE crs_grp_types.CrsCod=%ld" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" @@ -2409,7 +2517,8 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope, "SUM(file_browser_size.NumFolders)," "SUM(file_browser_size.NumFiles)," "SUM(file_browser_size.TotalSize)" - " FROM crs_usr,file_browser_size" + " FROM crs_usr," + "file_browser_size" " WHERE crs_usr.CrsCod=%ld" " AND crs_usr.UsrCod=file_browser_size.ZoneUsrCod" " AND file_browser_size.FileBrowser=%u", @@ -2818,93 +2927,109 @@ static void Fig_GetNumberOfOERsFromDB (Hie_Lvl_Level_t Scope,Brw_License_t Licen switch (Scope) { case Hie_Lvl_SYS: - NumRows = - (unsigned) DB_QuerySELECT (&mysql_res,"can not get number of OERs", - "SELECT Public,COUNT(*)" - " FROM files" - " WHERE License=%u" - " GROUP BY Public", - (unsigned) License); + NumRows = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get number of OERs", + "SELECT Public," + "COUNT(*)" + " FROM files" + " WHERE License=%u" + " GROUP BY Public", + (unsigned) License); break; case Hie_Lvl_CTY: - NumRows = - (unsigned) DB_QuerySELECT (&mysql_res,"can not get number of OERs", - "SELECT files.Public,COUNT(*)" - " FROM institutions,centres,deg_degrees,courses,files" - " WHERE institutions.CtyCod=%ld" - " AND institutions.InsCod=centres.InsCod" - " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=files.Cod" - " AND files.FileBrowser IN (%u,%u)" - " AND files.License=%u" - " GROUP BY files.Public", - Gbl.Hierarchy.Cty.CtyCod, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) License); + NumRows = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get number of OERs", + "SELECT files.Public," + "COUNT(*)" + " FROM institutions," + "centres," + "deg_degrees," + "crs_courses," + "files" + " 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=files.Cod" + " AND files.FileBrowser IN (%u,%u)" + " AND files.License=%u" + " GROUP BY files.Public", + Gbl.Hierarchy.Cty.CtyCod, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) License); break; case Hie_Lvl_INS: - NumRows = - (unsigned) DB_QuerySELECT (&mysql_res,"can not get number of OERs", - "SELECT files.Public,COUNT(*)" - " FROM centres,deg_degrees,courses,files" - " WHERE centres.InsCod=%ld" - " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=files.Cod" - " AND files.FileBrowser IN (%u,%u)" - " AND files.License=%u" - " GROUP BY files.Public", - Gbl.Hierarchy.Ins.InsCod, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) License); + NumRows = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get number of OERs", + "SELECT files.Public," + "COUNT(*)" + " FROM centres," + "deg_degrees," + "crs_courses," + "files" + " WHERE centres.InsCod=%ld" + " AND centres.CtrCod=deg_degrees.CtrCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=files.Cod" + " AND files.FileBrowser IN (%u,%u)" + " AND files.License=%u" + " GROUP BY files.Public", + Gbl.Hierarchy.Ins.InsCod, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) License); break; case Hie_Lvl_CTR: - NumRows = - (unsigned) DB_QuerySELECT (&mysql_res,"can not get number of OERs", - "SELECT files.Public,COUNT(*)" - " FROM deg_degrees,courses,files" - " WHERE deg_degrees.CtrCod=%ld" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=files.Cod" - " AND files.FileBrowser IN (%u,%u)" - " AND files.License=%u" - " GROUP BY files.Public", - Gbl.Hierarchy.Ctr.CtrCod, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) License); + NumRows = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get number of OERs", + "SELECT files.Public," + "COUNT(*)" + " FROM deg_degrees," + "crs_courses," + "files" + " WHERE deg_degrees.CtrCod=%ld" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=files.Cod" + " AND files.FileBrowser IN (%u,%u)" + " AND files.License=%u" + " GROUP BY files.Public", + Gbl.Hierarchy.Ctr.CtrCod, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) License); break; case Hie_Lvl_DEG: - NumRows = - (unsigned) DB_QuerySELECT (&mysql_res,"can not get number of OERs", - "SELECT files.Public,COUNT(*)" - " FROM courses,files" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=files.Cod" - " AND files.FileBrowser IN (%u,%u)" - " AND files.License=%u" - " GROUP BY files.Public", - Gbl.Hierarchy.Deg.DegCod, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) License); + NumRows = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get number of OERs", + "SELECT files.Public," + "COUNT(*)" + " FROM crs_courses," + "files" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=files.Cod" + " AND files.FileBrowser IN (%u,%u)" + " AND files.License=%u" + " GROUP BY files.Public", + Gbl.Hierarchy.Deg.DegCod, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) License); break; case Hie_Lvl_CRS: - NumRows = - (unsigned) DB_QuerySELECT (&mysql_res,"can not get number of OERs", - "SELECT Public,COUNT(*)" - " FROM files" - " WHERE Cod=%ld" - " AND FileBrowser IN (%u,%u)" - " AND License=%u" - " GROUP BY Public", - Gbl.Hierarchy.Crs.CrsCod, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) License); + NumRows = (unsigned) + DB_QuerySELECT (&mysql_res,"can not get number of OERs", + "SELECT Public," + "COUNT(*)" + " FROM files" + " WHERE Cod=%ld" + " AND FileBrowser IN (%u,%u)" + " AND License=%u" + " GROUP BY Public", + Gbl.Hierarchy.Crs.CrsCod, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) License); break; default: Lay_WrongScopeExit (); @@ -3427,76 +3552,97 @@ static void Fig_GetAndShowTimelineActivityStats (void) switch (Gbl.Scope.Current) { case Hie_Lvl_SYS: - NumRows = DB_QuerySELECT (&mysql_res,"can not get number of social notes", - "SELECT COUNT(*)," - "COUNT(DISTINCT UsrCod)" - " FROM tml_notes WHERE NoteType=%u", - NoteType); + NumRows = + DB_QuerySELECT (&mysql_res,"can not get number of social notes", + "SELECT COUNT(*)," + "COUNT(DISTINCT UsrCod)" + " FROM tml_notes WHERE NoteType=%u", + NoteType); break; case Hie_Lvl_CTY: - NumRows = DB_QuerySELECT (&mysql_res,"can not get number of social notes", - "SELECT COUNT(DISTINCT tml_notes.NotCod)," - "COUNT(DISTINCT tml_notes.UsrCod)" - " FROM institutions,centres,deg_degrees,courses,crs_usr,tml_notes" - " 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=tml_notes.UsrCod" - " AND tml_notes.NoteType=%u", - Gbl.Hierarchy.Cty.CtyCod, - (unsigned) NoteType); + NumRows = + DB_QuerySELECT (&mysql_res,"can not get number of social notes", + "SELECT COUNT(DISTINCT tml_notes.NotCod)," + "COUNT(DISTINCT tml_notes.UsrCod)" + " FROM institutions," + "centres," + "deg_degrees," + "crs_courses," + "crs_usr," + "tml_notes" + " 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=tml_notes.UsrCod" + " AND tml_notes.NoteType=%u", + Gbl.Hierarchy.Cty.CtyCod, + (unsigned) NoteType); break; case Hie_Lvl_INS: - NumRows = DB_QuerySELECT (&mysql_res,"can not get number of social notes", - "SELECT COUNT(DISTINCT tml_notes.NotCod)," - "COUNT(DISTINCT tml_notes.UsrCod)" - " FROM centres,deg_degrees,courses,crs_usr,tml_notes" - " 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=tml_notes.UsrCod" - " AND tml_notes.NoteType=%u", - Gbl.Hierarchy.Ins.InsCod, - (unsigned) NoteType); + NumRows = + DB_QuerySELECT (&mysql_res,"can not get number of social notes", + "SELECT COUNT(DISTINCT tml_notes.NotCod)," + "COUNT(DISTINCT tml_notes.UsrCod)" + " FROM centres," + "deg_degrees," + "crs_courses," + "crs_usr," + "tml_notes" + " 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=tml_notes.UsrCod" + " AND tml_notes.NoteType=%u", + Gbl.Hierarchy.Ins.InsCod, + (unsigned) NoteType); break; case Hie_Lvl_CTR: - NumRows = DB_QuerySELECT (&mysql_res,"can not get number of social notes", - "SELECT COUNT(DISTINCT tml_notes.NotCod)," - "COUNT(DISTINCT tml_notes.UsrCod)" - " FROM deg_degrees,courses,crs_usr,tml_notes" - " WHERE deg_degrees.CtrCod=%ld" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=tml_notes.UsrCod" - " AND tml_notes.NoteType=%u", - Gbl.Hierarchy.Ctr.CtrCod, - (unsigned) NoteType); + NumRows = + DB_QuerySELECT (&mysql_res,"can not get number of social notes", + "SELECT COUNT(DISTINCT tml_notes.NotCod)," + "COUNT(DISTINCT tml_notes.UsrCod)" + " FROM deg_degrees," + "crs_courses," + "crs_usr," + "tml_notes" + " WHERE deg_degrees.CtrCod=%ld" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" + " AND crs_usr.UsrCod=tml_notes.UsrCod" + " AND tml_notes.NoteType=%u", + Gbl.Hierarchy.Ctr.CtrCod, + (unsigned) NoteType); break; case Hie_Lvl_DEG: - NumRows = DB_QuerySELECT (&mysql_res,"can not get number of social notes", - "SELECT COUNT(DISTINCT tml_notes.NotCod)," - "COUNT(DISTINCT tml_notes.UsrCod)" - " FROM courses,crs_usr,tml_notes" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=tml_notes.UsrCod" - " AND tml_notes.NoteType=%u", - Gbl.Hierarchy.Deg.DegCod, - (unsigned) NoteType); + NumRows = + DB_QuerySELECT (&mysql_res,"can not get number of social notes", + "SELECT COUNT(DISTINCT tml_notes.NotCod)," + "COUNT(DISTINCT tml_notes.UsrCod)" + " FROM crs_courses," + "crs_usr," + "tml_notes" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=crs_usr.CrsCod" + " AND crs_usr.UsrCod=tml_notes.UsrCod" + " AND tml_notes.NoteType=%u", + Gbl.Hierarchy.Deg.DegCod, + (unsigned) NoteType); break; case Hie_Lvl_CRS: - NumRows = DB_QuerySELECT (&mysql_res,"can not get number of social notes", - "SELECT COUNT(DISTINCT tml_notes.NotCod)," - "COUNT(DISTINCT tml_notes.UsrCod)" - " FROM crs_usr,tml_notes" - " WHERE crs_usr.CrsCod=%ld" - " AND crs_usr.UsrCod=tml_notes.UsrCod" - " AND tml_notes.NoteType=%u", - Gbl.Hierarchy.Crs.CrsCod, - (unsigned) NoteType); + NumRows = + DB_QuerySELECT (&mysql_res,"can not get number of social notes", + "SELECT COUNT(DISTINCT tml_notes.NotCod)," + "COUNT(DISTINCT tml_notes.UsrCod)" + " FROM crs_usr," + "tml_notes" + " WHERE crs_usr.CrsCod=%ld" + " AND crs_usr.UsrCod=tml_notes.UsrCod" + " AND tml_notes.NoteType=%u", + Gbl.Hierarchy.Crs.CrsCod, + (unsigned) NoteType); break; default: Lay_WrongScopeExit (); @@ -3558,65 +3704,86 @@ static void Fig_GetAndShowTimelineActivityStats (void) switch (Gbl.Scope.Current) { case Hie_Lvl_SYS: - NumRows = DB_QuerySELECT (&mysql_res,"can not get number of social notes", - "SELECT COUNT(*)," - "COUNT(DISTINCT UsrCod)" - " FROM tml_notes"); + NumRows = + DB_QuerySELECT (&mysql_res,"can not get number of social notes", + "SELECT COUNT(*)," + "COUNT(DISTINCT UsrCod)" + " FROM tml_notes"); break; case Hie_Lvl_CTY: - NumRows = DB_QuerySELECT (&mysql_res,"can not get number of social notes", - "SELECT COUNT(DISTINCT tml_notes.NotCod)," - "COUNT(DISTINCT tml_notes.UsrCod)" - " FROM institutions,centres,deg_degrees,courses,crs_usr,tml_notes" - " 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=tml_notes.UsrCod", - Gbl.Hierarchy.Cty.CtyCod); + NumRows = + DB_QuerySELECT (&mysql_res,"can not get number of social notes", + "SELECT COUNT(DISTINCT tml_notes.NotCod)," + "COUNT(DISTINCT tml_notes.UsrCod)" + " FROM institutions," + "centres," + "deg_degrees," + "crs_courses," + "crs_usr," + "tml_notes" + " 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=tml_notes.UsrCod", + Gbl.Hierarchy.Cty.CtyCod); break; case Hie_Lvl_INS: - NumRows = DB_QuerySELECT (&mysql_res,"can not get number of social notes", - "SELECT COUNT(DISTINCT tml_notes.NotCod)," - "COUNT(DISTINCT tml_notes.UsrCod)" - " FROM centres,deg_degrees,courses,crs_usr,tml_notes" - " 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=tml_notes.UsrCod", - Gbl.Hierarchy.Ins.InsCod); + NumRows = + DB_QuerySELECT (&mysql_res,"can not get number of social notes", + "SELECT COUNT(DISTINCT tml_notes.NotCod)," + "COUNT(DISTINCT tml_notes.UsrCod)" + " FROM centres," + "deg_degrees," + "crs_courses," + "crs_usr," + "tml_notes" + " 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=tml_notes.UsrCod", + Gbl.Hierarchy.Ins.InsCod); break; case Hie_Lvl_CTR: - NumRows = DB_QuerySELECT (&mysql_res,"can not get number of social notes", - "SELECT COUNT(DISTINCT tml_notes.NotCod)," - "COUNT(DISTINCT tml_notes.UsrCod)" - " FROM deg_degrees,courses,crs_usr,tml_notes" - " WHERE deg_degrees.CtrCod=%ld" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=tml_notes.UsrCod", - Gbl.Hierarchy.Ctr.CtrCod); + NumRows = + DB_QuerySELECT (&mysql_res,"can not get number of social notes", + "SELECT COUNT(DISTINCT tml_notes.NotCod)," + "COUNT(DISTINCT tml_notes.UsrCod)" + " FROM deg_degrees," + "crs_courses," + "crs_usr," + "tml_notes" + " WHERE deg_degrees.CtrCod=%ld" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" + " AND crs_usr.UsrCod=tml_notes.UsrCod", + Gbl.Hierarchy.Ctr.CtrCod); break; case Hie_Lvl_DEG: - NumRows = DB_QuerySELECT (&mysql_res,"can not get number of social notes", - "SELECT COUNT(DISTINCT tml_notes.NotCod)," - "COUNT(DISTINCT tml_notes.UsrCod)" - " FROM courses,crs_usr,tml_notes" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=tml_notes.UsrCod", - Gbl.Hierarchy.Deg.DegCod); + NumRows = + DB_QuerySELECT (&mysql_res,"can not get number of social notes", + "SELECT COUNT(DISTINCT tml_notes.NotCod)," + "COUNT(DISTINCT tml_notes.UsrCod)" + " FROM crs_courses," + "crs_usr," + "tml_notes" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=crs_usr.CrsCod" + " AND crs_usr.UsrCod=tml_notes.UsrCod", + Gbl.Hierarchy.Deg.DegCod); break; case Hie_Lvl_CRS: - NumRows = DB_QuerySELECT (&mysql_res,"can not get number of social notes", - "SELECT COUNT(DISTINCT tml_notes.NotCod)," - "COUNT(DISTINCT tml_notes.UsrCod)" - " FROM crs_usr,tml_notes" - " WHERE crs_usr.CrsCod=%ld" - " AND crs_usr.UsrCod=tml_notes.UsrCod", - Gbl.Hierarchy.Crs.CrsCod); + NumRows = + DB_QuerySELECT (&mysql_res,"can not get number of social notes", + "SELECT COUNT(DISTINCT tml_notes.NotCod)," + "COUNT(DISTINCT tml_notes.UsrCod)" + " FROM crs_usr," + "tml_notes" + " WHERE crs_usr.CrsCod=%ld" + " AND crs_usr.UsrCod=tml_notes.UsrCod", + Gbl.Hierarchy.Crs.CrsCod); break; default: Lay_WrongScopeExit (); @@ -3746,74 +3913,84 @@ static void Fig_GetAndShowFollowStats (void) FieldDB[Fol]); break; case Hie_Lvl_CTY: - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get the total number" - " of following/followers", - "SELECT COUNT(DISTINCT usr_follow.%s)" - " 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.%s", - FieldDB[Fol], - Gbl.Hierarchy.Cty.CtyCod, - FieldDB[Fol]); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get the total number of following/followers", + "SELECT COUNT(DISTINCT usr_follow.%s)" + " 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.%s", + FieldDB[Fol], + Gbl.Hierarchy.Cty.CtyCod, + FieldDB[Fol]); break; case Hie_Lvl_INS: - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get the total number" - " of following/followers", - "SELECT COUNT(DISTINCT usr_follow.%s)" - " 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.%s", - FieldDB[Fol], - Gbl.Hierarchy.Ins.InsCod, - FieldDB[Fol]); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get the total number of following/followers", + "SELECT COUNT(DISTINCT usr_follow.%s)" + " 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.%s", + FieldDB[Fol], + Gbl.Hierarchy.Ins.InsCod, + FieldDB[Fol]); break; case Hie_Lvl_CTR: - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get the total number" - " of following/followers", - "SELECT COUNT(DISTINCT usr_follow.%s)" - " 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.%s", - FieldDB[Fol], - Gbl.Hierarchy.Ctr.CtrCod, - FieldDB[Fol]); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get the total number of following/followers", + "SELECT COUNT(DISTINCT usr_follow.%s)" + " 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.%s", + FieldDB[Fol], + Gbl.Hierarchy.Ctr.CtrCod, + FieldDB[Fol]); break; case Hie_Lvl_DEG: - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get the total number" - " of following/followers", - "SELECT COUNT(DISTINCT usr_follow.%s)" - " FROM courses,crs_usr,usr_follow" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=usr_follow.%s", - FieldDB[Fol], - Gbl.Hierarchy.Deg.DegCod, - FieldDB[Fol]); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get the total number of following/followers", + "SELECT COUNT(DISTINCT usr_follow.%s)" + " 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.%s", + FieldDB[Fol], + Gbl.Hierarchy.Deg.DegCod, + FieldDB[Fol]); break; case Hie_Lvl_CRS: - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get the total number" - " of following/followers", - "SELECT COUNT(DISTINCT usr_follow.%s)" - " FROM crs_usr,usr_follow" - " WHERE crs_usr.CrsCod=%ld" - " AND crs_usr.UsrCod=usr_follow.%s", - FieldDB[Fol], - Gbl.Hierarchy.Crs.CrsCod, - FieldDB[Fol]); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get the total number of following/followers", + "SELECT COUNT(DISTINCT usr_follow.%s)" + " FROM crs_usr," + "usr_follow" + " WHERE crs_usr.CrsCod=%ld" + " AND crs_usr.UsrCod=usr_follow.%s", + FieldDB[Fol], + Gbl.Hierarchy.Crs.CrsCod, + FieldDB[Fol]); break; default: Lay_WrongScopeExit (); @@ -3864,12 +4041,17 @@ static void Fig_GetAndShowFollowStats (void) " per survey", "SELECT AVG(N) FROM " "(SELECT COUNT(DISTINCT usr_follow.%s) AS N" - " FROM institutions,centres,deg_degrees,courses,crs_usr,usr_follow" + " FROM institutions," + "centres," + "deg_degrees," + "crs_courses," + "crs_usr," + "usr_follow" " WHERE institutions.CtyCod=%ld" " AND institutions.InsCod=centres.InsCod" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=usr_follow.%s" " GROUP BY %s) AS F", FieldDB[Fol], @@ -3882,11 +4064,15 @@ static void Fig_GetAndShowFollowStats (void) " per survey", "SELECT AVG(N) FROM " "(SELECT COUNT(DISTINCT usr_follow.%s) AS N" - " FROM centres,deg_degrees,courses,crs_usr,usr_follow" + " FROM centres," + "deg_degrees," + "crs_courses," + "crs_usr," + "usr_follow" " WHERE centres.InsCod=%ld" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=usr_follow.%s" " GROUP BY %s) AS F", FieldDB[Fol], @@ -3899,10 +4085,13 @@ static void Fig_GetAndShowFollowStats (void) " per survey", "SELECT AVG(N) FROM " "(SELECT COUNT(DISTINCT usr_follow.%s) AS N" - " FROM deg_degrees,courses,crs_usr,usr_follow" + " FROM deg_degrees," + "crs_courses," + "crs_usr," + "usr_follow" " WHERE deg_degrees.CtrCod=%ld" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=usr_follow.%s" " GROUP BY %s) AS F", FieldDB[Fol], @@ -3915,9 +4104,11 @@ static void Fig_GetAndShowFollowStats (void) " per survey", "SELECT AVG(N) FROM " "(SELECT COUNT(DISTINCT usr_follow.%s) AS N" - " FROM courses,crs_usr,usr_follow" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=crs_usr.CrsCod" + " 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.%s" " GROUP BY %s) AS F", FieldDB[Fol], @@ -3930,7 +4121,8 @@ static void Fig_GetAndShowFollowStats (void) " per survey", "SELECT AVG(N) FROM " "(SELECT COUNT(DISTINCT usr_follow.%s) AS N" - " FROM crs_usr,usr_follow" + " FROM crs_usr," + "usr_follow" " WHERE crs_usr.CrsCod=%ld" " AND crs_usr.UsrCod=usr_follow.%s" " GROUP BY %s) AS F", @@ -5553,81 +5745,91 @@ unsigned Fig_GetNumUsrsWhoChoseAnOption (const char *SubQuery) { unsigned NumUsrs; - /***** Get the number of users who have chosen this privacy option from database *****/ + /***** Get the number of users who have chosen + this privacy option from database *****/ switch (Gbl.Scope.Current) { case Hie_Lvl_SYS: - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get the number of users" - " who have chosen an option", - "SELECT COUNT(*)" - " FROM usr_data WHERE %s", - SubQuery); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get the number of users who have chosen an option", + "SELECT COUNT(*)" + " FROM usr_data WHERE %s", + SubQuery); break; case Hie_Lvl_CTY: - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get the number of users" - " who have chosen an option", - "SELECT COUNT(DISTINCT usr_data.UsrCod)" - " 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.UsrCod=usr_data.UsrCod" - " AND %s", - Gbl.Hierarchy.Cty.CtyCod,SubQuery); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get the number of users who have chosen an option", + "SELECT COUNT(DISTINCT usr_data.UsrCod)" + " 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.UsrCod=usr_data.UsrCod" + " AND %s", + Gbl.Hierarchy.Cty.CtyCod,SubQuery); break; case Hie_Lvl_INS: - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get the number of users" - " who have chosen an option", - "SELECT COUNT(DISTINCT usr_data.UsrCod)" - " 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.UsrCod=usr_data.UsrCod" - " AND %s", - Gbl.Hierarchy.Ins.InsCod,SubQuery); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get the number of users who have chosen an option", + "SELECT COUNT(DISTINCT usr_data.UsrCod)" + " 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.UsrCod=usr_data.UsrCod" + " AND %s", + Gbl.Hierarchy.Ins.InsCod,SubQuery); break; case Hie_Lvl_CTR: - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get the number of users" - " who have chosen an option", - "SELECT COUNT(DISTINCT usr_data.UsrCod)" - " 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.UsrCod=usr_data.UsrCod" - " AND %s", - Gbl.Hierarchy.Ctr.CtrCod,SubQuery); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get the number of users who have chosen an option", + "SELECT COUNT(DISTINCT usr_data.UsrCod)" + " 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.UsrCod=usr_data.UsrCod" + " AND %s", + Gbl.Hierarchy.Ctr.CtrCod,SubQuery); break; case Hie_Lvl_DEG: - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get the number of users" - " who have chosen an option", - "SELECT COUNT(DISTINCT usr_data.UsrCod)" - " FROM courses,crs_usr,usr_data" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=usr_data.UsrCod" - " AND %s", - Gbl.Hierarchy.Deg.DegCod,SubQuery); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get the number of users who have chosen an option", + "SELECT COUNT(DISTINCT usr_data.UsrCod)" + " FROM crs_courses," + "crs_usr," + "usr_data" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=crs_usr.CrsCod" + " AND crs_usr.UsrCod=usr_data.UsrCod" + " AND %s", + Gbl.Hierarchy.Deg.DegCod,SubQuery); break; case Hie_Lvl_CRS: - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get the number of users" - " who have chosen an option", - "SELECT COUNT(DISTINCT usr_data.UsrCod)" - " FROM crs_usr,usr_data" - " WHERE crs_usr.CrsCod=%ld" - " AND crs_usr.UsrCod=usr_data.UsrCod" - " AND %s", - Gbl.Hierarchy.Crs.CrsCod,SubQuery); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get the number of users who have chosen an option", + "SELECT COUNT(DISTINCT usr_data.UsrCod)" + " FROM crs_usr," + "usr_data" + " WHERE crs_usr.CrsCod=%ld" + " AND crs_usr.UsrCod=usr_data.UsrCod" + " AND %s", + Gbl.Hierarchy.Crs.CrsCod,SubQuery); break; default: Lay_WrongScopeExit (); diff --git a/swad_follow.c b/swad_follow.c index e2ea9a79d..5ecaf2811 100644 --- a/swad_follow.c +++ b/swad_follow.c @@ -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 (); diff --git a/swad_forum.c b/swad_forum.c index 22508af04..de8f3b72f 100644 --- a/swad_forum.c +++ b/swad_forum.c @@ -2605,10 +2605,6 @@ static void For_PutAllHiddenParamsNewThread (void *Forums) unsigned For_GetNumTotalForumsOfType (For_ForumType_t ForumType, long CtyCod,long InsCod,long CtrCod,long DegCod,long CrsCod) { - MYSQL_RES *mysql_res; - MYSQL_ROW row; - unsigned NumForums; - /***** Get number of forums of a type from database *****/ switch (ForumType) { @@ -2619,173 +2615,223 @@ unsigned For_GetNumTotalForumsOfType (For_ForumType_t ForumType, return 1; // Only one forum case For_FORUM_INSTIT_USRS: case For_FORUM_INSTIT_TCHS: - if (InsCod > 0) // InsCod > 0 ==> 0 <= number of institutions forums for an institution <= 1 - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT Location)" - " FROM forum_thread" - " WHERE ForumType=%u" - " AND Location=%ld", - (unsigned) ForumType,InsCod); - else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of institution forums for a country - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT forum_thread.Location)" - " FROM forum_thread,institutions" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=institutions.InsCod" - " AND institutions.CtyCod=%ld", - (unsigned) ForumType,CtyCod); - else // CtyCod <= 0 ==> Number of institutions forums for the whole platform - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT Location)" - " FROM forum_thread" - " WHERE ForumType=%u", - (unsigned) ForumType); - break; + if (InsCod > 0) + // InsCod > 0 ==> 0 <= number of institutions forums for an institution <= 1 + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT Location)" + " FROM forum_thread" + " WHERE ForumType=%u" + " AND Location=%ld", + (unsigned) ForumType,InsCod); + + if (CtyCod > 0) + // InsCod <= 0 && CtyCod > 0 ==> Number of institution forums for a country + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT forum_thread.Location)" + " FROM forum_thread," + "institutions" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=institutions.InsCod" + " AND institutions.CtyCod=%ld", + (unsigned) ForumType,CtyCod); + + // CtyCod <= 0 ==> Number of institutions forums for the whole platform + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT Location)" + " FROM forum_thread" + " WHERE ForumType=%u", + (unsigned) ForumType); case For_FORUM_CENTRE_USRS: case For_FORUM_CENTRE_TCHS: - if (CtrCod > 0) // CtrCod > 0 ==> 0 <= number of centre forums for a centre <= 1 - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT Location)" - " FROM forum_thread" - " WHERE ForumType=%u" - " AND Location=%ld", - (unsigned) ForumType,CtrCod); - else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of centre forums for an institution - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT forum_thread.Location)" - " FROM forum_thread,centres" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=centres.CtrCod" - " AND centres.InsCod=%ld", - (unsigned) ForumType,InsCod); - else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of centre forums for a country - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT forum_thread.Location)" - " FROM forum_thread,centres,institutions" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=centres.CtrCod" - " AND centres.InsCod=institutions.InsCod" - " AND institutions.CtyCod=%ld", - (unsigned) ForumType,CtyCod); - else // InsCod <= 0 ==> Number of centre forums for the whole platform - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT Location)" - " FROM forum_thread" - " WHERE ForumType=%u", - (unsigned) ForumType); - break; + if (CtrCod > 0) + // CtrCod > 0 ==> 0 <= number of centre forums for a centre <= 1 + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT Location)" + " FROM forum_thread" + " WHERE ForumType=%u" + " AND Location=%ld", + (unsigned) ForumType,CtrCod); + + if (InsCod > 0) + // CtrCod <= 0 && InsCod > 0 ==> Number of centre forums for an institution + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT forum_thread.Location)" + " FROM forum_thread," + "centres" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=centres.CtrCod" + " AND centres.InsCod=%ld", + (unsigned) ForumType,InsCod); + + if (CtyCod > 0) + // InsCod <= 0 && CtyCod > 0 ==> Number of centre forums for a country + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT forum_thread.Location)" + " FROM forum_thread," + "centres," + "institutions" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=centres.CtrCod" + " AND centres.InsCod=institutions.InsCod" + " AND institutions.CtyCod=%ld", + (unsigned) ForumType,CtyCod); + + // InsCod <= 0 ==> Number of centre forums for the whole platform + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT Location)" + " FROM forum_thread" + " WHERE ForumType=%u", + (unsigned) ForumType); case For_FORUM_DEGREE_USRS: case For_FORUM_DEGREE_TCHS: - if (DegCod > 0) // DegCod > 0 ==> 0 <= number of degree forums for a degree <= 1 - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT Location)" - " FROM forum_thread" - " WHERE ForumType=%u" - " AND Location=%ld", - (unsigned) ForumType,DegCod); - else if (CtrCod > 0) // DegCod <= 0 && CtrCod > 0 ==> Number of degree forums for a centre - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT forum_thread.Location)" - " FROM forum_thread,deg_degrees" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=deg_degrees.DegCod" - " AND deg_degrees.CtrCod=%ld", - (unsigned) ForumType,CtrCod); - else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of degree forums for an institution - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT forum_thread.Location)" - " FROM forum_thread,deg_degrees,centres" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=deg_degrees.DegCod" - " AND deg_degrees.CtrCod=centres.CtrCod" - " AND centres.InsCod=%ld", - (unsigned) ForumType,InsCod); - else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of degree forums for a country - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT forum_thread.Location)" - " FROM forum_thread,deg_degrees,centres,institutions" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=deg_degrees.DegCod" - " AND deg_degrees.CtrCod=centres.CtrCod" - " AND centres.InsCod=institutions.InsCod" - " AND institutions.CtyCod=%ld", - (unsigned) ForumType,CtyCod); - else // InsCod <= 0 ==> Number of degree forums for the whole platform - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT Location)" - " FROM forum_thread" - " WHERE ForumType=%u", - (unsigned) ForumType); - break; + if (DegCod > 0) + // DegCod > 0 ==> 0 <= number of degree forums for a degree <= 1 + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT Location)" + " FROM forum_thread" + " WHERE ForumType=%u" + " AND Location=%ld", + (unsigned) ForumType,DegCod); + + if (CtrCod > 0) + // DegCod <= 0 && CtrCod > 0 ==> Number of degree forums for a centre + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT forum_thread.Location)" + " FROM forum_thread," + "deg_degrees" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=deg_degrees.DegCod" + " AND deg_degrees.CtrCod=%ld", + (unsigned) ForumType,CtrCod); + + if (InsCod > 0) + // CtrCod <= 0 && InsCod > 0 ==> Number of degree forums for an institution + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT forum_thread.Location)" + " FROM forum_thread," + "deg_degrees," + "centres" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=deg_degrees.DegCod" + " AND deg_degrees.CtrCod=centres.CtrCod" + " AND centres.InsCod=%ld", + (unsigned) ForumType,InsCod); + + if (CtyCod > 0) + // InsCod <= 0 && CtyCod > 0 ==> Number of degree forums for a country + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT forum_thread.Location)" + " FROM forum_thread," + "deg_degrees," + "centres," + "institutions" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=deg_degrees.DegCod" + " AND deg_degrees.CtrCod=centres.CtrCod" + " AND centres.InsCod=institutions.InsCod" + " AND institutions.CtyCod=%ld", + (unsigned) ForumType,CtyCod); + + // InsCod <= 0 ==> Number of degree forums for the whole platform + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT Location)" + " FROM forum_thread" + " WHERE ForumType=%u", + (unsigned) ForumType); case For_FORUM_COURSE_USRS: case For_FORUM_COURSE_TCHS: - if (CrsCod > 0) // CrsCod > 0 ==> 0 <= number of course forums for a course <= 1 - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT Location)" - " FROM forum_thread" - " WHERE ForumType=%u" - " AND Location=%ld", - (unsigned) ForumType,CrsCod); - else if (DegCod > 0) // CrsCod <= 0 && DegCod > 0 ==> Number of course forums for a degree - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT forum_thread.Location)" - " FROM forum_thread,courses" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=courses.CrsCod" - " AND courses.DegCod=%ld", - (unsigned) ForumType,DegCod); - else if (CtrCod > 0) // DegCod <= 0 && CtrCod > 0 ==> Number of course forums for a centre - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT forum_thread.Location)" - " FROM forum_thread,courses,deg_degrees" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" - " AND deg_degrees.CtrCod=%ld", - (unsigned) ForumType,CtrCod); - else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of course forums for an institution - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT forum_thread.Location)" - " FROM forum_thread,courses,deg_degrees,centres" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" - " AND deg_degrees.CtrCod=centres.CtrCod" - " AND centres.InsCod=%ld", - (unsigned) ForumType,InsCod); - else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of course forums for a country - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT forum_thread.Location)" - " FROM forum_thread,courses,deg_degrees,centres,institutions" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" - " AND deg_degrees.CtrCod=centres.CtrCod" - " AND centres.InsCod=institutions.InsCod" - " AND institutions.CtyCod=%ld", - (unsigned) ForumType,CtyCod); - else // InsCod <= 0 ==> Number of course forums for the whole platform - DB_QuerySELECT (&mysql_res,"can not get number of forums of a type", - "SELECT COUNT(DISTINCT Location)" - " FROM forum_thread" - " WHERE ForumType=%u", - (unsigned) ForumType); - break; + if (CrsCod > 0) + // CrsCod > 0 ==> 0 <= number of course forums for a course <= 1 + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT Location)" + " FROM forum_thread" + " WHERE ForumType=%u" + " AND Location=%ld", + (unsigned) ForumType,CrsCod); + + if (DegCod > 0) + // CrsCod <= 0 && DegCod > 0 ==> Number of course forums for a degree + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT forum_thread.Location)" + " FROM forum_thread," + "crs_courses" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=crs_courses.CrsCod" + " AND crs_courses.DegCod=%ld", + (unsigned) ForumType,DegCod); + + if (CtrCod > 0) + // DegCod <= 0 && CtrCod > 0 ==> Number of course forums for a centre + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT forum_thread.Location)" + " FROM forum_thread," + "crs_courses," + "deg_degrees" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" + " AND deg_degrees.CtrCod=%ld", + (unsigned) ForumType,CtrCod); + + if (InsCod > 0) + // CtrCod <= 0 && InsCod > 0 ==> Number of course forums for an institution + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT forum_thread.Location)" + " FROM forum_thread," + "crs_courses," + "deg_degrees," + "centres" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" + " AND deg_degrees.CtrCod=centres.CtrCod" + " AND centres.InsCod=%ld", + (unsigned) ForumType,InsCod); + + if (CtyCod > 0) + // InsCod <= 0 && CtyCod > 0 ==> Number of course forums for a country + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT forum_thread.Location)" + " FROM forum_thread," + "crs_courses," + "deg_degrees," + "centres," + "institutions" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" + " AND deg_degrees.CtrCod=centres.CtrCod" + " AND centres.InsCod=institutions.InsCod" + " AND institutions.CtyCod=%ld", + (unsigned) ForumType,CtyCod); + + // InsCod <= 0 ==> Number of course forums for the whole platform + return (unsigned) + DB_QueryCOUNT ("can not get number of forums of a type", + "SELECT COUNT(DISTINCT Location)" + " FROM forum_thread" + " WHERE ForumType=%u", + (unsigned) ForumType); default: return 0; } - - /* Get row with number of threads and number of posts */ - row = mysql_fetch_row (mysql_res); - - /* Get number of threads (row[0]) */ - if (sscanf (row[0],"%u",&NumForums) != 1) - Lay_ShowErrorAndExit ("Error when getting number of forums of a type."); - - /***** Free structure that stores the query result *****/ - DB_FreeMySQLResult (&mysql_res); - - return NumForums; } /*****************************************************************************/ @@ -2795,8 +2841,6 @@ unsigned For_GetNumTotalForumsOfType (For_ForumType_t ForumType, unsigned For_GetNumTotalThrsInForumsOfType (For_ForumType_t ForumType, long CtyCod,long InsCod,long CtrCod,long DegCod,long CrsCod) { - unsigned NumThrs; - /***** Get total number of threads in forums of this type from database *****/ switch (ForumType) { @@ -2805,210 +2849,230 @@ unsigned For_GetNumTotalThrsInForumsOfType (For_ForumType_t ForumType, case For_FORUM__SWAD__USRS: case For_FORUM__SWAD__TCHS: // Total number of threads in forums of this type - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread" - " WHERE ForumType=%u", - (unsigned) ForumType); - break; + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread" + " WHERE ForumType=%u", + (unsigned) ForumType); case For_FORUM_INSTIT_USRS: case For_FORUM_INSTIT_TCHS: - if (InsCod > 0) // InsCod > 0 ==> Number of threads in institution forums for an institution - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread" - " WHERE ForumType=%u" - " AND Location=%ld", - (unsigned) ForumType,InsCod); - else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of threads in institution forums for a country - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread,institutions" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=institutions.InsCod" - " AND institutions.CtyCod=%ld", - (unsigned) ForumType,CtyCod); - else // InsCod <= 0 ==> Number of threads in institution forums for the whole platform - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread" - " WHERE ForumType=%u", - (unsigned) ForumType); - break; + if (InsCod > 0) + // InsCod > 0 ==> Number of threads in institution forums for an institution + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread" + " WHERE ForumType=%u" + " AND Location=%ld", + (unsigned) ForumType,InsCod); + + if (CtyCod > 0) + // InsCod <= 0 && CtyCod > 0 ==> Number of threads in institution forums for a country + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread," + "institutions" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=institutions.InsCod" + " AND institutions.CtyCod=%ld", + (unsigned) ForumType,CtyCod); + + // InsCod <= 0 ==> Number of threads in institution forums for the whole platform + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread" + " WHERE ForumType=%u", + (unsigned) ForumType); case For_FORUM_CENTRE_USRS: case For_FORUM_CENTRE_TCHS: - if (CtrCod > 0) // CtrCod > 0 ==> 0 <= Number of threads in centre forums for a centre <= 1 - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread" - " WHERE ForumType=%u" - " AND Location=%ld", - (unsigned) ForumType,CtrCod); - else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of threads in centre forums for an institution - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread,centres" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=centres.CtrCod" - " AND centres.InsCod=%ld", - (unsigned) ForumType,InsCod); - else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of threads in centre forums for a country - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread,centres,institutions" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=centres.CtrCod" - " AND centres.InsCod=institutions.InsCod" - " AND institutions.CtyCod=%ld", - (unsigned) ForumType,CtyCod); - else // InsCod <= 0 ==> Number of threads in centre forums for the whole platform - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread" - " WHERE ForumType=%u", - (unsigned) ForumType); - break; + if (CtrCod > 0) + // CtrCod > 0 ==> 0 <= Number of threads in centre forums for a centre <= 1 + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread" + " WHERE ForumType=%u" + " AND Location=%ld", + (unsigned) ForumType,CtrCod); + + if (InsCod > 0) + // CtrCod <= 0 && InsCod > 0 ==> Number of threads in centre forums for an institution + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread," + "centres" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=centres.CtrCod" + " AND centres.InsCod=%ld", + (unsigned) ForumType,InsCod); + + if (CtyCod > 0) + // InsCod <= 0 && CtyCod > 0 ==> Number of threads in centre forums for a country + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread," + "centres," + "institutions" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=centres.CtrCod" + " AND centres.InsCod=institutions.InsCod" + " AND institutions.CtyCod=%ld", + (unsigned) ForumType,CtyCod); + + // InsCod <= 0 ==> Number of threads in centre forums for the whole platform + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread" + " WHERE ForumType=%u", + (unsigned) ForumType); case For_FORUM_DEGREE_USRS: case For_FORUM_DEGREE_TCHS: - if (DegCod > 0) // DegCod > 0 ==> Number of threads in degree forums for a degree - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread" - " WHERE ForumType=%u" - " AND Location=%ld", - (unsigned) ForumType,DegCod); - else if (CtrCod > 0) // DegCod <= 0 && CtrCod > 0 ==> Number of threads in degree forums for a centre - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread,deg_degrees" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=deg_degrees.DegCod" - " AND deg_degrees.CtrCod=%ld", - (unsigned) ForumType,CtrCod); - else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of threads in degree forums for an institution - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread,deg_degrees,centres" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=deg_degrees.DegCod" - " AND deg_degrees.CtrCod=centres.CtrCod" - " AND centres.InsCod=%ld", - (unsigned) ForumType,InsCod); - else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of threads in degree forums for a country - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread,deg_degrees,centres,institutions" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=deg_degrees.DegCod" - " AND deg_degrees.CtrCod=centres.CtrCod" - " AND centres.InsCod=institutions.InsCod" - " AND institutions.CtyCod=%ld", - (unsigned) ForumType,CtyCod); - else // InsCod <= 0 ==> Number of threads in degree forums for the whole platform - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread" - " WHERE ForumType=%u", - (unsigned) ForumType); - break; + if (DegCod > 0) + // DegCod > 0 ==> Number of threads in degree forums for a degree + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread" + " WHERE ForumType=%u" + " AND Location=%ld", + (unsigned) ForumType,DegCod); + + if (CtrCod > 0) + // DegCod <= 0 && CtrCod > 0 ==> Number of threads in degree forums for a centre + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread," + "deg_degrees" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=deg_degrees.DegCod" + " AND deg_degrees.CtrCod=%ld", + (unsigned) ForumType,CtrCod); + + if (InsCod > 0) + // CtrCod <= 0 && InsCod > 0 ==> Number of threads in degree forums for an institution + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread," + "deg_degrees," + "centres" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=deg_degrees.DegCod" + " AND deg_degrees.CtrCod=centres.CtrCod" + " AND centres.InsCod=%ld", + (unsigned) ForumType,InsCod); + + if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of threads in degree forums for a country + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread," + "deg_degrees," + "centres," + "institutions" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=deg_degrees.DegCod" + " AND deg_degrees.CtrCod=centres.CtrCod" + " AND centres.InsCod=institutions.InsCod" + " AND institutions.CtyCod=%ld", + (unsigned) ForumType,CtyCod); + + // InsCod <= 0 ==> Number of threads in degree forums for the whole platform + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread" + " WHERE ForumType=%u", + (unsigned) ForumType); case For_FORUM_COURSE_USRS: case For_FORUM_COURSE_TCHS: - if (CrsCod > 0) // CrsCod > 0 ==> 0 <= Number of threads in course forums for a course - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread" - " WHERE ForumType=%u" - " AND Location=%ld", - (unsigned) ForumType,CrsCod); - else if (DegCod > 0) // CrsCod <= 0 && DegCod > 0 ==> Number of threads in course forums for a degree - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread,courses" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=courses.CrsCod" - " AND courses.DegCod=%ld", - (unsigned) ForumType,DegCod); - else if (CtrCod > 0) // DegCod <= 0 && CtrCod > 0 ==> Number of threads in course forums for a centre - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread,courses,deg_degrees" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" - " AND deg_degrees.CtrCod=%ld", - (unsigned) ForumType,CtrCod); - else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of threads in course forums for an institution - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread,courses,deg_degrees,centres" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" - " AND deg_degrees.CtrCod=centres.CtrCod" - " AND centres.InsCod=%ld", - (unsigned) ForumType,InsCod); - else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of threads in course forums for a country - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread,courses,deg_degrees,centres,institutions" - " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" - " AND deg_degrees.CtrCod=centres.CtrCod" - " AND centres.InsCod=institutions.InsCod" - " AND institutions.CtyCod=%ld", - (unsigned) ForumType,CtyCod); - else // InsCod <= 0 ==> Number of threads in course forums for the whole platform - NumThrs = - (unsigned) DB_QueryCOUNT ("can not get the number of threads" - " in forums of a type", - "SELECT COUNT(*)" - " FROM forum_thread" - " WHERE ForumType=%u", - (unsigned) ForumType); - break; - default: - NumThrs = 0; - break; - } + if (CrsCod > 0) + // CrsCod > 0 ==> 0 <= Number of threads in course forums for a course + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread" + " WHERE ForumType=%u" + " AND Location=%ld", + (unsigned) ForumType,CrsCod); - return NumThrs; + if (DegCod > 0) + // CrsCod <= 0 && DegCod > 0 ==> Number of threads in course forums for a degree + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread," + "crs_courses" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=crs_courses.CrsCod" + " AND crs_courses.DegCod=%ld", + (unsigned) ForumType,DegCod); + + if (CtrCod > 0) + // DegCod <= 0 && CtrCod > 0 ==> Number of threads in course forums for a centre + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread," + "crs_courses," + "deg_degrees" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" + " AND deg_degrees.CtrCod=%ld", + (unsigned) ForumType,CtrCod); + + if (InsCod > 0) + // CtrCod <= 0 && InsCod > 0 ==> Number of threads in course forums for an institution + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread," + "crs_courses," + "deg_degrees," + "centres" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" + " AND deg_degrees.CtrCod=centres.CtrCod" + " AND centres.InsCod=%ld", + (unsigned) ForumType,InsCod); + + if (CtyCod > 0) + // InsCod <= 0 && CtyCod > 0 ==> Number of threads in course forums for a country + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread," + "crs_courses," + "deg_degrees," + "centres," + "institutions" + " WHERE forum_thread.ForumType=%u" + " AND forum_thread.Location=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" + " AND deg_degrees.CtrCod=centres.CtrCod" + " AND centres.InsCod=institutions.InsCod" + " AND institutions.CtyCod=%ld", + (unsigned) ForumType,CtyCod); + + // InsCod <= 0 ==> Number of threads in course forums for the whole platform + return (unsigned) + DB_QueryCOUNT ("can not get the number of threads in forums of a type", + "SELECT COUNT(*)" + " FROM forum_thread" + " WHERE ForumType=%u", + (unsigned) ForumType); + default: + return 0; + } } /*****************************************************************************/ @@ -3053,8 +3117,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, // Total number of posts in forums of this type DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,forum_post " + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "forum_post " " WHERE forum_thread.ForumType=%u" " AND forum_thread.ThrCod=forum_post.ThrCod", (unsigned) ForumType); @@ -3063,8 +3129,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, if (InsCod > 0) // InsCod > 0 ==> Number of posts in institutions forums for an institution DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,forum_post" + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "forum_post" " WHERE forum_thread.ForumType=%u" " AND forum_thread.Location=%ld" " AND forum_thread.ThrCod=forum_post.ThrCod", @@ -3072,8 +3140,11 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of posts in institutions forums for a country DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,institutions,forum_post" + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "institutions," + "forum_post" " WHERE forum_thread.ForumType=%u" " AND forum_thread.Location=institutions.InsCod" " AND institutions.CtyCod=%ld" @@ -3082,8 +3153,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, else // InsCod <= 0 ==> Number of posts in institution forums for the whole platform DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,forum_post " + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "forum_post " " WHERE forum_thread.ForumType=%u" " AND forum_thread.ThrCod=forum_post.ThrCod", (unsigned) ForumType); @@ -3093,8 +3166,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, if (CtrCod > 0) // CtrCod > 0 ==> Number of posts in centre forums for a centre DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,forum_post" + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "forum_post" " WHERE forum_thread.ForumType=%u" " AND forum_thread.Location=%ld" " AND forum_thread.ThrCod=forum_post.ThrCod", @@ -3102,8 +3177,11 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of posts in centre forums for an institution DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,centres,forum_post" + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "centres," + "forum_post" " WHERE forum_thread.ForumType=%u" " AND forum_thread.Location=centres.CtrCod" " AND centres.InsCod=%ld" @@ -3112,8 +3190,12 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of posts in centre forums for a country DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,centres,institutions,forum_post" + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "centres," + "institutions," + "forum_post" " WHERE forum_thread.ForumType=%u" " AND forum_thread.Location=centres.CtrCod" " AND centres.InsCod=institutions.InsCod" @@ -3123,8 +3205,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, else // InsCod <= 0 ==> Number of posts in centre forums for the whole platform DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,forum_post " + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "forum_post" " WHERE forum_thread.ForumType=%u" " AND forum_thread.ThrCod=forum_post.ThrCod", (unsigned) ForumType); @@ -3134,8 +3218,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, if (DegCod > 0) // DegCod > 0 ==> Number of posts in degree forums for a degree DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,forum_post " + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "forum_post" " WHERE forum_thread.ForumType=%u" " AND forum_thread.Location=%ld" " AND forum_thread.ThrCod=forum_post.ThrCod", @@ -3143,8 +3229,11 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, else if (CtrCod > 0) // DegCod <= 0 && CtrCod > 0 ==> Number of posts in degree forums for a centre DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,deg_degrees,forum_post " + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "deg_degrees," + "forum_post" " WHERE forum_thread.ForumType=%u" " AND forum_thread.Location=deg_degrees.DegCod" " AND deg_degrees.CtrCod=%ld" @@ -3153,8 +3242,12 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of posts in degree forums for an institution DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,deg_degrees,centres,forum_post" + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "deg_degrees," + "centres," + "forum_post" " WHERE forum_thread.ForumType=%u" " AND forum_thread.Location=deg_degrees.DegCod" " AND deg_degrees.CtrCod=centres.CtrCod" @@ -3164,8 +3257,13 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of posts in degree forums for a country DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,deg_degrees,centres,institutions,forum_post" + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "deg_degrees," + "centres," + "institutions," + "forum_post" " WHERE forum_thread.ForumType=%u" " AND forum_thread.Location=deg_degrees.DegCod" " AND deg_degrees.CtrCod=centres.CtrCod" @@ -3176,8 +3274,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, else // InsCod <= 0 ==> Number of posts in degree forums for the whole platform DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,forum_post " + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "forum_post " " WHERE forum_thread.ForumType=%u" " AND forum_thread.ThrCod=forum_post.ThrCod", (unsigned) ForumType); @@ -3187,8 +3287,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, if (CrsCod > 0) // CrsCod > 0 ==> 0 <= number of posts in course forums for a course DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,forum_post " + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "forum_post " " WHERE forum_thread.ForumType=%u" " AND forum_thread.Location=%ld" " AND forum_thread.ThrCod=forum_post.ThrCod", @@ -3196,32 +3298,44 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, else if (DegCod > 0) // CrsCod <= 0 && DegCod > 0 ==> Number of posts in course forums for a degree DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,courses,forum_post " + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "crs_courses," + "forum_post " " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=courses.CrsCod" - " AND courses.DegCod=%ld" + " AND forum_thread.Location=crs_courses.CrsCod" + " AND crs_courses.DegCod=%ld" " AND forum_thread.ThrCod=forum_post.ThrCod", (unsigned) ForumType,DegCod); else if (CtrCod > 0) // DegCod <= 0 && CtrCod > 0 ==> Number of posts in course forums for a centre DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,courses,deg_degrees,forum_post " + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "crs_courses," + "deg_degrees," + "forum_post " " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND forum_thread.Location=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=%ld" " AND forum_thread.ThrCod=forum_post.ThrCod", (unsigned) ForumType,CtrCod); else if (InsCod > 0) // CtrCod <= 0 && InsCod > 0 ==> Number of posts in course forums for an institution DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,courses,deg_degrees,centres,forum_post" + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "crs_courses," + "deg_degrees," + "centres," + "forum_post" " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND forum_thread.Location=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=centres.CtrCod" " AND centres.InsCod=%ld" " AND forum_thread.ThrCod=forum_post.ThrCod", @@ -3229,11 +3343,17 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, else if (CtyCod > 0) // InsCod <= 0 && CtyCod > 0 ==> Number of posts in course forums for a country DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,courses,deg_degrees,centres,institutions,forum_post" + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "crs_courses," + "deg_degrees," + "centres," + "institutions," + "forum_post" " WHERE forum_thread.ForumType=%u" - " AND forum_thread.Location=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND forum_thread.Location=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=centres.CtrCod" " AND centres.InsCod=institutions.InsCod" " AND institutions.CtyCod=%ld" @@ -3242,8 +3362,10 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, else // CrsCod <= 0 && DegCod <= 0 && CtrCod <= 0 ==> Number of posts in course forums for the whole platform DB_QuerySELECT (&mysql_res,"can not get the total number" " of forums of a type", - "SELECT COUNT(*),SUM(forum_post.NumNotif)" - " FROM forum_thread,forum_post " + "SELECT COUNT(*)," + "SUM(forum_post.NumNotif)" + " FROM forum_thread," + "forum_post " " WHERE forum_thread.ForumType=%u" " AND forum_thread.ThrCod=forum_post.ThrCod", (unsigned) ForumType); diff --git a/swad_game.c b/swad_game.c index 566cc949f..99af104be 100644 --- a/swad_game.c +++ b/swad_game.c @@ -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", diff --git a/swad_indicator.c b/swad_indicator.c index 0c85a31b4..9d8d64c5e 100644 --- a/swad_indicator.c +++ b/swad_indicator.c @@ -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); } diff --git a/swad_institution.c b/swad_institution.c index 8c6207961..d3b8dd25d 100644 --- a/swad_institution.c +++ b/swad_institution.c @@ -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); } diff --git a/swad_message.c b/swad_message.c index 142b20631..602ae3fb5 100644 --- a/swad_message.c +++ b/swad_message.c @@ -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; diff --git a/swad_network.c b/swad_network.c index b18d1a7ae..6a2622c05 100644 --- a/swad_network.c +++ b/swad_network.c @@ -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 (); diff --git a/swad_notice.c b/swad_notice.c index 7993379cd..8304727da 100644 --- a/swad_notice.c +++ b/swad_notice.c @@ -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); diff --git a/swad_photo.c b/swad_photo.c index 65820b7fc..010d9f969 100644 --- a/swad_photo.c +++ b/swad_photo.c @@ -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.TimeAvgPhoto0" - " 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 (); diff --git a/swad_program.c b/swad_program.c index 6db3cd672..21d32109f 100644 --- a/swad_program.c +++ b/swad_program.c @@ -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; } diff --git a/swad_project.c b/swad_project.c index e071dd02b..d6e9ee0f4 100644 --- a/swad_project.c +++ b/swad_project.c @@ -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; } diff --git a/swad_search.c b/swad_search.c index 42cb942aa..0afbaaba0 100644 --- a/swad_search.c +++ b/swad_search.c @@ -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, diff --git a/swad_survey.c b/swad_survey.c index aebdbc3e4..41bcb69d2 100644 --- a/swad_survey.c +++ b/swad_survey.c @@ -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", diff --git a/swad_test.c b/swad_test.c index 0433ccdcc..6eb066cb0 100644 --- a/swad_test.c +++ b/swad_test.c @@ -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; } diff --git a/swad_user.c b/swad_user.c index fd174fe80..f43dae900 100644 --- a/swad_user.c +++ b/swad_user.c @@ -1026,11 +1026,9 @@ bool Usr_ICanEditOtherUsr (const struct UsrData *UsrDat) unsigned Usr_GetNumCrssOfUsr (long UsrCod) { /***** Get the number of courses of a user from database ******/ - return - (unsigned) DB_QueryCOUNT ("can not get the number of courses of a user", - "SELECT COUNT(*) FROM crs_usr" - " WHERE UsrCod=%ld", - UsrCod); + return (unsigned) + DB_QueryCOUNT ("can not get the number of courses of a user", + "SELECT COUNT(*) FROM crs_usr WHERE UsrCod=%ld",UsrCod); } /*****************************************************************************/ @@ -1040,11 +1038,11 @@ unsigned Usr_GetNumCrssOfUsr (long UsrCod) unsigned Usr_GetNumCrssOfUsrNotAccepted (long UsrCod) { /***** Get the number of courses of a user not accepted from database ******/ - return - (unsigned) DB_QueryCOUNT ("can not get the number of courses of a user", - "SELECT COUNT(*) FROM crs_usr" - " WHERE UsrCod=%ld AND Accepted='N'", - UsrCod); + return (unsigned) + DB_QueryCOUNT ("can not get the number of courses of a user", + "SELECT COUNT(*) FROM crs_usr" + " WHERE UsrCod=%ld AND Accepted='N'", + UsrCod); } /*****************************************************************************/ @@ -1054,12 +1052,10 @@ unsigned Usr_GetNumCrssOfUsrNotAccepted (long UsrCod) unsigned Usr_GetNumCrssOfUsrWithARole (long UsrCod,Rol_Role_t Role) { /***** Get the number of courses of a user with a role from database ******/ - return - (unsigned) DB_QueryCOUNT ("can not get the number of courses of a user" - " with a role", - "SELECT COUNT(*) FROM crs_usr" - " WHERE UsrCod=%ld AND Role=%u", - UsrCod,(unsigned) Role); + return (unsigned) + DB_QueryCOUNT ("can not get the number of courses of a user with a role", + "SELECT COUNT(*) FROM crs_usr WHERE UsrCod=%ld AND Role=%u", + UsrCod,(unsigned) Role); } /*****************************************************************************/ @@ -1069,12 +1065,11 @@ unsigned Usr_GetNumCrssOfUsrWithARole (long UsrCod,Rol_Role_t Role) unsigned Usr_GetNumCrssOfUsrWithARoleNotAccepted (long UsrCod,Rol_Role_t Role) { /***** Get the number of courses of a user with a role from database ******/ - return - (unsigned) DB_QueryCOUNT ("can not get the number of courses of a user" - " with a role", - "SELECT COUNT(*) FROM crs_usr" - " WHERE UsrCod=%ld AND Role=%u AND Accepted='N'", - UsrCod,(unsigned) Role); + return (unsigned) + DB_QueryCOUNT ("can not get the number of courses of a user with a role", + "SELECT COUNT(*) FROM crs_usr" + " WHERE UsrCod=%ld AND Role=%u AND Accepted='N'", + UsrCod,(unsigned) Role); } /*****************************************************************************/ @@ -1721,13 +1716,17 @@ void Usr_GetMyCourses (void) "Role TINYINT NOT NULL," "DegCod INT NOT NULL," "UNIQUE INDEX(CrsCod,Role,DegCod)) ENGINE=MEMORY" - " SELECT crs_usr.CrsCod,crs_usr.Role,courses.DegCod" - " FROM crs_usr,courses,deg_degrees" + " SELECT crs_usr.CrsCod," + "crs_usr.Role," + "crs_courses.DegCod" + " FROM crs_usr," + "crs_courses," + "deg_degrees" " WHERE crs_usr.UsrCod=%ld" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " ORDER BY deg_degrees.ShortName," - "courses.ShortName", + "crs_courses.ShortName", Gbl.Usrs.Me.UsrDat.UsrCod); /***** Get my courses from database *****/ @@ -1881,11 +1880,14 @@ bool Usr_CheckIfUsrBelongsToIns (long UsrCod,long InsCod) Gbl.Cache.UsrBelongsToIns.Belongs = (DB_QueryCOUNT ("can not check if a user belongs to an institution", "SELECT COUNT(DISTINCT centres.InsCod)" - " FROM crs_usr,courses,deg_degrees,centres" + " FROM crs_usr," + "crs_courses," + "deg_degrees," + "centres" " WHERE crs_usr.UsrCod=%ld" " AND crs_usr.Accepted='Y'" // Only if user accepted - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=centres.CtrCod" " AND centres.InsCod=%ld", UsrCod,InsCod) != 0); @@ -1921,11 +1923,13 @@ bool Usr_CheckIfUsrBelongsToCtr (long UsrCod,long CtrCod) Gbl.Cache.UsrBelongsToCtr.Belongs = (DB_QueryCOUNT ("can not check if a user belongs to a centre", "SELECT COUNT(DISTINCT deg_degrees.CtrCod)" - " FROM crs_usr,courses,deg_degrees" + " FROM crs_usr," + "crs_courses," + "deg_degrees" " WHERE crs_usr.UsrCod=%ld" " AND crs_usr.Accepted='Y'" // Only if user accepted - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=%ld", UsrCod,CtrCod) != 0); return Gbl.Cache.UsrBelongsToCtr.Belongs; @@ -1959,12 +1963,13 @@ bool Usr_CheckIfUsrBelongsToDeg (long UsrCod,long DegCod) Gbl.Cache.UsrBelongsToDeg.DegCod = DegCod; Gbl.Cache.UsrBelongsToDeg.Belongs = (DB_QueryCOUNT ("can not check if a user belongs to a degree", - "SELECT COUNT(DISTINCT courses.DegCod)" - " FROM crs_usr,courses" + "SELECT COUNT(DISTINCT crs_courses.DegCod)" + " FROM crs_usr," + "crs_courses" " WHERE crs_usr.UsrCod=%ld" " AND crs_usr.Accepted='Y'" // Only if user accepted - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=%ld", + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=%ld", UsrCod,DegCod) != 0); return Gbl.Cache.UsrBelongsToDeg.Belongs; } @@ -2196,16 +2201,17 @@ unsigned Usr_GetCtysFromUsr (long UsrCod,MYSQL_RES **mysql_res) return (unsigned) DB_QuerySELECT (mysql_res,"can not get the countries" " a user belongs to", - "SELECT countries.CtyCod,MAX(crs_usr.Role)" + "SELECT countries.CtyCod," + "MAX(crs_usr.Role)" " FROM crs_usr," - "courses," + "crs_courses," "deg_degrees," "centres," "institutions," "countries" " WHERE crs_usr.UsrCod=%ld" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=centres.CtrCod" " AND centres.InsCod=institutions.InsCod" " AND institutions.CtyCod=countries.CtyCod" @@ -2228,13 +2234,13 @@ unsigned long Usr_GetInssFromUsr (long UsrCod,long CtyCod,MYSQL_RES **mysql_res) "SELECT institutions.InsCod," "MAX(crs_usr.Role)" " FROM crs_usr," - "courses," + "crs_courses," "deg_degrees," "centres," "institutions" " WHERE crs_usr.UsrCod=%ld" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=centres.CtrCod" " AND centres.InsCod=institutions.InsCod" " AND institutions.CtyCod=%ld" @@ -2247,13 +2253,13 @@ unsigned long Usr_GetInssFromUsr (long UsrCod,long CtyCod,MYSQL_RES **mysql_res) "SELECT institutions.InsCod," "MAX(crs_usr.Role)" " FROM crs_usr," - "courses," + "crs_courses," "deg_degrees," "centres," "institutions" " WHERE crs_usr.UsrCod=%ld" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=centres.CtrCod" " AND centres.InsCod=institutions.InsCod" " GROUP BY institutions.InsCod" @@ -2275,12 +2281,12 @@ unsigned long Usr_GetCtrsFromUsr (long UsrCod,long InsCod,MYSQL_RES **mysql_res) "SELECT centres.CtrCod," "MAX(crs_usr.Role)" " FROM crs_usr," - "courses," + "crs_courses," "deg_degrees," "centres" " WHERE crs_usr.UsrCod=%ld" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=centres.CtrCod" " AND centres.InsCod=%ld" " GROUP BY centres.CtrCod" @@ -2292,12 +2298,12 @@ unsigned long Usr_GetCtrsFromUsr (long UsrCod,long InsCod,MYSQL_RES **mysql_res) "SELECT deg_degrees.CtrCod," "MAX(crs_usr.Role)" " FROM crs_usr," - "courses," + "crs_courses," "deg_degrees," "centres" " WHERE crs_usr.UsrCod=%ld" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=centres.CtrCod" " GROUP BY centres.CtrCod" " ORDER BY centres.ShortName", @@ -2318,11 +2324,11 @@ unsigned long Usr_GetDegsFromUsr (long UsrCod,long CtrCod,MYSQL_RES **mysql_res) "SELECT deg_degrees.DegCod," "MAX(crs_usr.Role)" " FROM crs_usr," - "courses," + "crs_courses," "deg_degrees" " WHERE crs_usr.UsrCod=%ld" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=%ld" " GROUP BY deg_degrees.DegCod" " ORDER BY deg_degrees.ShortName", @@ -2333,11 +2339,11 @@ unsigned long Usr_GetDegsFromUsr (long UsrCod,long CtrCod,MYSQL_RES **mysql_res) "SELECT deg_degrees.DegCod," "MAX(crs_usr.Role)" " FROM crs_usr," - "courses," + "crs_courses," "deg_degrees" " WHERE crs_usr.UsrCod=%ld" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " GROUP BY deg_degrees.DegCod" " ORDER BY deg_degrees.ShortName", UsrCod); @@ -2356,28 +2362,28 @@ unsigned long Usr_GetCrssFromUsr (long UsrCod,long DegCod,MYSQL_RES **mysql_res) " a user belongs to", "SELECT crs_usr.CrsCod," "crs_usr.Role," - "courses.DegCod" + "crs_courses.DegCod" " FROM crs_usr," - "courses" + "crs_courses" " WHERE crs_usr.UsrCod=%ld" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=%ld" - " ORDER BY courses.ShortName", + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=%ld" + " ORDER BY crs_courses.ShortName", UsrCod,DegCod); else // All the courses return DB_QuerySELECT (mysql_res,"can not get the courses" " a user belongs to", "SELECT crs_usr.CrsCod," "crs_usr.Role," - "courses.DegCod" + "crs_courses.DegCod" " FROM crs_usr," - "courses," + "crs_courses," "deg_degrees" " WHERE crs_usr.UsrCod=%ld" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " ORDER BY deg_degrees.ShortName," - "courses.ShortName", + "crs_courses.ShortName", UsrCod); } @@ -2399,13 +2405,14 @@ void Usr_GetMainDeg (long UsrCod, " FROM deg_degrees," // The second table contain only one row with the main degree - " (SELECT courses.DegCod AS DegCod," + " (SELECT crs_courses.DegCod AS DegCod," "MAX(crs_usr.Role) AS MaxRole," "COUNT(*) AS N" - " FROM crs_usr,courses" + " FROM crs_usr," + "crs_courses" " WHERE crs_usr.UsrCod=%ld" - " AND crs_usr.CrsCod=courses.CrsCod" - " GROUP BY courses.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " GROUP BY crs_courses.DegCod" " ORDER BY N DESC" // Ordered by number of courses in which user is enroled " LIMIT 1)" // We need only the main degree " AS main_degree" @@ -4087,26 +4094,25 @@ unsigned Usr_GetNumTchsCurrentInsInDepartment (long DptCod) { /***** Get the number of teachers from the current institution in a department *****/ - return - (unsigned) DB_QueryCOUNT ("can not get the number of teachers" - " in a department", - "SELECT COUNT(DISTINCT usr_data.UsrCod)" - " FROM usr_data," - "crs_usr," - "courses," - "deg_degrees," - "centres" - " WHERE usr_data.InsCod=%ld" // User in the current institution... - " AND usr_data.DptCod=%ld" // ...and the specified department... - " AND usr_data.UsrCod=crs_usr.UsrCod" // ...who is... - " AND crs_usr.Role IN (%u,%u)" // ...a teacher... - " AND crs_usr.CrsCod=courses.CrsCod" // ...in a course... - " AND courses.DegCod=deg_degrees.DegCod" // ...of a degree... - " AND deg_degrees.CtrCod=centres.InsCod" // ...of a centre... - " AND centres.InsCod=%ld", // ...of the current institution - Gbl.Hierarchy.Ins.InsCod,DptCod, - (unsigned) Rol_NET,(unsigned) Rol_TCH, - Gbl.Hierarchy.Ins.InsCod); + return (unsigned) + DB_QueryCOUNT ("can not get the number of teachers in a department", + "SELECT COUNT(DISTINCT usr_data.UsrCod)" + " FROM usr_data," + "crs_usr," + "crs_courses," + "deg_degrees," + "centres" + " WHERE usr_data.InsCod=%ld" // User in the current institution... + " AND usr_data.DptCod=%ld" // ...and the specified department... + " AND usr_data.UsrCod=crs_usr.UsrCod" // ...who is... + " AND crs_usr.Role IN (%u,%u)" // ...a teacher... + " AND crs_usr.CrsCod=crs_courses.CrsCod" // ...in a course... + " AND crs_courses.DegCod=deg_degrees.DegCod" // ...of a degree... + " AND deg_degrees.CtrCod=centres.InsCod" // ...of a centre... + " AND centres.InsCod=%ld", // ...of the current institution + Gbl.Hierarchy.Ins.InsCod,DptCod, + (unsigned) Rol_NET,(unsigned) Rol_TCH, + Gbl.Hierarchy.Ins.InsCod); } /*****************************************************************************/ @@ -4597,14 +4603,14 @@ void Usr_GetListUsrs (Hie_Lvl_Level_t Scope,Rol_Role_t Role) "SELECT %s" " FROM usr_data," "crs_usr," - "courses," + "crs_courses," "deg_degrees," "centres," "institutions" " WHERE usr_data.UsrCod=crs_usr.UsrCod" " AND crs_usr.Role=%u" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=centres.CtrCod" " AND centres.InsCod=institutions.InsCod" " AND institutions.CtyCod=%ld" @@ -4622,13 +4628,13 @@ void Usr_GetListUsrs (Hie_Lvl_Level_t Scope,Rol_Role_t Role) "SELECT %s" " FROM usr_data," "crs_usr," - "courses," + "crs_courses," "deg_degrees," "centres" " WHERE usr_data.UsrCod=crs_usr.UsrCod" " AND crs_usr.Role=%u" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=centres.CtrCod" " AND centres.InsCod=%ld" " ORDER BY usr_data.Surname1," @@ -4645,12 +4651,12 @@ void Usr_GetListUsrs (Hie_Lvl_Level_t Scope,Rol_Role_t Role) "SELECT %s" " FROM usr_data," "crs_usr," - "courses," + "crs_courses," "deg_degrees" " WHERE usr_data.UsrCod=crs_usr.UsrCod" " AND crs_usr.Role=%u" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=%ld" " ORDER BY usr_data.Surname1," "usr_data.Surname2," @@ -4666,11 +4672,11 @@ void Usr_GetListUsrs (Hie_Lvl_Level_t Scope,Rol_Role_t Role) "SELECT %s" " FROM usr_data," "crs_usr," - "courses" + "crs_courses" " WHERE usr_data.UsrCod=crs_usr.UsrCod" " AND crs_usr.Role=%u" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=%ld" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=%ld" " ORDER BY usr_data.Surname1," "usr_data.Surname2," "usr_data.FirstName," @@ -4760,14 +4766,14 @@ void Usr_SearchListUsrs (Rol_Role_t Role) "SELECT %s" " FROM candidate_users," "crs_usr," - "courses," + "crs_courses," "deg_degrees," "centres," "institutions," "usr_data" " WHERE candidate_users.UsrCod=crs_usr.UsrCod" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=centres.CtrCod" " AND centres.InsCod=institutions.InsCod" " AND institutions.CtyCod=%ld" @@ -4782,13 +4788,13 @@ void Usr_SearchListUsrs (Rol_Role_t Role) "SELECT %s" " FROM candidate_users," "crs_usr," - "courses," + "crs_courses," "deg_degrees," "centres," "usr_data" " WHERE candidate_users.UsrCod=crs_usr.UsrCod" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=centres.CtrCod" " AND centres.InsCod=%ld" " AND %s", @@ -4802,12 +4808,12 @@ void Usr_SearchListUsrs (Rol_Role_t Role) "SELECT %s" " FROM candidate_users," "crs_usr," - "courses," + "crs_courses," "deg_degrees," "usr_data" " WHERE candidate_users.UsrCod=crs_usr.UsrCod" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=%ld" " AND %s", QueryFields, @@ -4820,11 +4826,11 @@ void Usr_SearchListUsrs (Rol_Role_t Role) "SELECT %s" " FROM candidate_users," "crs_usr," - "courses," + "crs_courses," "usr_data" " WHERE candidate_users.UsrCod=crs_usr.UsrCod" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=%ld" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=%ld" " AND %s", QueryFields, Gbl.Hierarchy.Deg.DegCod, @@ -4907,15 +4913,15 @@ void Usr_SearchListUsrs (Rol_Role_t Role) "SELECT %s" " FROM candidate_users," "crs_usr," - "courses," + "crs_courses," "deg_degrees," "centres," "institutions," "usr_data" " WHERE candidate_users.UsrCod=crs_usr.UsrCod" "%s" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=centres.CtrCod" " AND centres.InsCod=institutions.InsCod" " AND institutions.CtyCod=%ld" @@ -4931,14 +4937,14 @@ void Usr_SearchListUsrs (Rol_Role_t Role) "SELECT %s" " FROM candidate_users," "crs_usr," - "courses," + "crs_courses," "deg_degrees," "centres," "usr_data" " WHERE candidate_users.UsrCod=crs_usr.UsrCod" "%s" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=centres.CtrCod" " AND centres.InsCod=%ld" " AND %s", @@ -4953,13 +4959,13 @@ void Usr_SearchListUsrs (Rol_Role_t Role) "SELECT %s" " FROM candidate_users," "crs_usr," - "courses," + "crs_courses," "deg_degrees," "usr_data" " WHERE candidate_users.UsrCod=crs_usr.UsrCod" "%s" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=deg_degrees.DegCod" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=deg_degrees.DegCod" " AND deg_degrees.CtrCod=%ld" " AND %s", QueryFields, @@ -4973,12 +4979,12 @@ void Usr_SearchListUsrs (Rol_Role_t Role) "SELECT %s" " FROM candidate_users," "crs_usr," - "courses," + "crs_courses," "usr_data" " WHERE candidate_users.UsrCod=crs_usr.UsrCod" "%s" - " AND crs_usr.CrsCod=courses.CrsCod" - " AND courses.DegCod=%ld" + " AND crs_usr.CrsCod=crs_courses.CrsCod" + " AND crs_courses.DegCod=%ld" " AND %s", QueryFields, SubQueryRole, @@ -5367,9 +5373,11 @@ void Usr_GetUnorderedStdsCodesInDeg (long DegCod) "usr_data.PhotoVisibility," // row[ 8] "usr_data.CtyCod," // row[ 9] "usr_data.InsCod" // row[10] - " FROM courses,crs_usr,usr_data" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=crs_usr.CrsCod" + " FROM crs_courses," + "crs_usr," + "usr_data" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.Role=%u" " AND crs_usr.UsrCod=usr_data.UsrCod", DegCod,(unsigned) Rol_STD); @@ -9368,128 +9376,128 @@ unsigned Usr_GetNumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,unsigned Roles) break; case Hie_Lvl_CTY: if (AnyUserInCourses) // Any user - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get number of users", - "SELECT COUNT(DISTINCT crs_usr.UsrCod)" - " FROM institutions," - "centres," - "deg_degrees," - "courses," - "crs_usr" - " WHERE institutions.CtyCod=%ld" - " AND institutions.InsCod=centres.InsCod" - " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod", - Cod); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get number of users", + "SELECT COUNT(DISTINCT crs_usr.UsrCod)" + " FROM institutions," + "centres," + "deg_degrees," + "crs_courses," + "crs_usr" + " 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", + Cod); else - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get number of users", - "SELECT COUNT(DISTINCT crs_usr.UsrCod)" - " FROM institutions," - "centres," - "deg_degrees," - "courses," - "crs_usr" - " WHERE institutions.CtyCod=%ld" - " AND institutions.InsCod=centres.InsCod" - " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.Role%s", - Cod,SubQueryRoles); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get number of users", + "SELECT COUNT(DISTINCT crs_usr.UsrCod)" + " FROM institutions," + "centres," + "deg_degrees," + "crs_courses," + "crs_usr" + " 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%s", + Cod,SubQueryRoles); break; case Hie_Lvl_INS: if (AnyUserInCourses) // Any user - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get number of users", - "SELECT COUNT(DISTINCT crs_usr.UsrCod)" - " FROM centres," - "deg_degrees," - "courses," - "crs_usr" - " WHERE centres.InsCod=%ld" - " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod", - Cod); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get number of users", + "SELECT COUNT(DISTINCT crs_usr.UsrCod)" + " FROM centres," + "deg_degrees," + "crs_courses," + "crs_usr" + " WHERE centres.InsCod=%ld" + " AND centres.CtrCod=deg_degrees.CtrCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod", + Cod); else - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get number of users", - "SELECT COUNT(DISTINCT crs_usr.UsrCod)" - " FROM centres," - "deg_degrees," - "courses," - "crs_usr" - " WHERE centres.InsCod=%ld" - " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.Role%s", - Cod,SubQueryRoles); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get number of users", + "SELECT COUNT(DISTINCT crs_usr.UsrCod)" + " FROM centres," + "deg_degrees," + "crs_courses," + "crs_usr" + " 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%s", + Cod,SubQueryRoles); break; case Hie_Lvl_CTR: if (AnyUserInCourses) // Any user - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get number of users", - "SELECT COUNT(DISTINCT crs_usr.UsrCod)" - " FROM deg_degrees," - "courses," - "crs_usr" - " WHERE deg_degrees.CtrCod=%ld" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod", - Cod); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get number of users", + "SELECT COUNT(DISTINCT crs_usr.UsrCod)" + " FROM deg_degrees," + "crs_courses," + "crs_usr" + " WHERE deg_degrees.CtrCod=%ld" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod", + Cod); else - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get number of users", - "SELECT COUNT(DISTINCT crs_usr.UsrCod)" - " FROM deg_degrees," - "courses," - "crs_usr" - " WHERE deg_degrees.CtrCod=%ld" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.Role%s", - Cod,SubQueryRoles); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get number of users", + "SELECT COUNT(DISTINCT crs_usr.UsrCod)" + " FROM deg_degrees," + "crs_courses," + "crs_usr" + " WHERE deg_degrees.CtrCod=%ld" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" + " AND crs_usr.Role%s", + Cod,SubQueryRoles); break; case Hie_Lvl_DEG: if (AnyUserInCourses) // Any user - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get number of users", - "SELECT COUNT(DISTINCT crs_usr.UsrCod)" - " FROM courses," - "crs_usr" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=crs_usr.CrsCod", - Cod); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get number of users", + "SELECT COUNT(DISTINCT crs_usr.UsrCod)" + " FROM crs_courses," + "crs_usr" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=crs_usr.CrsCod", + Cod); else - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get number of users", - "SELECT COUNT(DISTINCT crs_usr.UsrCod)" - " FROM courses," - "crs_usr" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.Role%s", - Cod,SubQueryRoles); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get number of users", + "SELECT COUNT(DISTINCT crs_usr.UsrCod)" + " FROM crs_courses," + "crs_usr" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=crs_usr.CrsCod" + " AND crs_usr.Role%s", + Cod,SubQueryRoles); break; case Hie_Lvl_CRS: if (AnyUserInCourses) // Any user - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get number of users", - "SELECT COUNT(DISTINCT UsrCod)" - " FROM crs_usr" - " WHERE CrsCod=%ld", - Cod); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get number of users", + "SELECT COUNT(DISTINCT UsrCod)" + " FROM crs_usr" + " WHERE CrsCod=%ld", + Cod); else - NumUsrs = - (unsigned) DB_QueryCOUNT ("can not get number of users", - "SELECT COUNT(DISTINCT UsrCod)" - " FROM crs_usr" - " WHERE CrsCod=%ld" - " AND Role%s", - Cod,SubQueryRoles); + NumUsrs = (unsigned) + DB_QueryCOUNT ("can not get number of users", + "SELECT COUNT(DISTINCT UsrCod)" + " FROM crs_usr" + " WHERE CrsCod=%ld" + " AND Role%s", + Cod,SubQueryRoles); break; default: Lay_WrongScopeExit (); @@ -9599,13 +9607,13 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro " FROM institutions," "centres," "deg_degrees," - "courses," + "crs_courses," "crs_usr" " WHERE institutions.CtyCod=%ld" " AND institutions.InsCod=centres.InsCod" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " GROUP BY crs_usr.UsrCod) AS NumCrssTable", Cod); else @@ -9615,13 +9623,13 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro " FROM institutions," "centres," "deg_degrees," - "courses," + "crs_courses," "crs_usr" " WHERE institutions.CtyCod=%ld" " AND institutions.InsCod=centres.InsCod" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.Role=%u" " GROUP BY crs_usr.UsrCod) AS NumCrssTable", Cod, @@ -9634,12 +9642,12 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss" " FROM centres," "deg_degrees," - "courses," + "crs_courses," "crs_usr" " WHERE centres.InsCod=%ld" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " GROUP BY crs_usr.UsrCod) AS NumCrssTable", Cod); else @@ -9648,12 +9656,12 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss" " FROM centres," "deg_degrees," - "courses," + "crs_courses," "crs_usr" " WHERE centres.InsCod=%ld" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.Role=%u" " GROUP BY crs_usr.UsrCod) AS NumCrssTable", Cod, @@ -9665,11 +9673,11 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro "SELECT AVG(NumCrss) FROM " "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss" " FROM deg_degrees," - "courses," + "crs_courses," "crs_usr" " WHERE deg_degrees.CtrCod=%ld" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " GROUP BY crs_usr.UsrCod) AS NumCrssTable", Cod); else @@ -9677,11 +9685,11 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro "SELECT AVG(NumCrss) FROM " "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss" " FROM deg_degrees," - "courses," + "crs_courses," "crs_usr" " WHERE deg_degrees.CtrCod=%ld" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.Role=%u" " GROUP BY crs_usr.UsrCod) AS NumCrssTable", Cod, @@ -9692,20 +9700,20 @@ static double Usr_GetNumCrssPerUsr (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro DB_QuerySELECT (&mysql_res,"can not get number of courses per user", "SELECT AVG(NumCrss) FROM " "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss" - " FROM courses," + " FROM crs_courses," "crs_usr" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=crs_usr.CrsCod" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " GROUP BY crs_usr.UsrCod) AS NumCrssTable", Cod); else DB_QuerySELECT (&mysql_res,"can not get number of courses per user", "SELECT AVG(NumCrss) FROM " "(SELECT COUNT(crs_usr.CrsCod) AS NumCrss" - " FROM courses," + " FROM crs_courses," "crs_usr" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=crs_usr.CrsCod" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.Role=%u" " GROUP BY crs_usr.UsrCod) AS NumCrssTable", Cod, @@ -9788,13 +9796,13 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro " FROM institutions," "centres," "deg_degrees," - "courses," + "crs_courses," "crs_usr" " WHERE institutions.CtyCod=%ld" " AND institutions.InsCod=centres.InsCod" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " GROUP BY crs_usr.CrsCod) AS NumUsrsTable", Cod); else @@ -9804,13 +9812,13 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro " FROM institutions," "centres," "deg_degrees," - "courses," + "crs_courses," "crs_usr" " WHERE institutions.CtyCod=%ld" " AND institutions.InsCod=centres.InsCod" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.Role=%u" " GROUP BY crs_usr.CrsCod) AS NumUsrsTable", Cod, @@ -9823,12 +9831,12 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs" " FROM centres," "deg_degrees," - "courses," + "crs_courses," "crs_usr" " WHERE centres.InsCod=%ld" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " GROUP BY crs_usr.CrsCod) AS NumUsrsTable", Cod); else @@ -9837,12 +9845,12 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs" " FROM centres," "deg_degrees," - "courses," + "crs_courses," "crs_usr" " WHERE centres.InsCod=%ld" " AND centres.CtrCod=deg_degrees.CtrCod" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.Role=%u" " GROUP BY crs_usr.CrsCod) AS NumUsrsTable", Cod, @@ -9854,11 +9862,11 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro "SELECT AVG(NumUsrs) FROM " "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs" " FROM deg_degrees," - "courses," + "crs_courses," "crs_usr" " WHERE deg_degrees.CtrCod=%ld" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " GROUP BY crs_usr.CrsCod) AS NumUsrsTable", Cod); else @@ -9866,11 +9874,11 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro "SELECT AVG(NumUsrs) FROM " "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs" " FROM deg_degrees," - "courses," + "crs_courses," "crs_usr" " WHERE deg_degrees.CtrCod=%ld" - " AND deg_degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" + " AND deg_degrees.DegCod=crs_courses.DegCod" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.Role=%u" " GROUP BY crs_usr.CrsCod) AS NumUsrsTable", Cod, @@ -9881,20 +9889,20 @@ static double Usr_GetNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Ro DB_QuerySELECT (&mysql_res,"can not get number of users per course", "SELECT AVG(NumUsrs) FROM " "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs" - " FROM courses," + " FROM crs_courses," "crs_usr" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=crs_usr.CrsCod" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " GROUP BY crs_usr.CrsCod) AS NumUsrsTable", Cod); else DB_QuerySELECT (&mysql_res,"can not get number of users per course", "SELECT AVG(NumUsrs) FROM " "(SELECT COUNT(crs_usr.UsrCod) AS NumUsrs" - " FROM courses," + " FROM crs_courses," "crs_usr" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=crs_usr.CrsCod" + " WHERE crs_courses.DegCod=%ld" + " AND crs_courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.Role=%u" " GROUP BY crs_usr.CrsCod) AS NumUsrsTable", Cod,