mirror of https://github.com/acanas/swad-core.git
Version 20.44.4: Mar 06, 2021 Degrees database table renamed.
This commit is contained in:
parent
61b751c97d
commit
c86e71dc3b
|
@ -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,
|
||||
|
|
59
swad_API.c
59
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))
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 *****/
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
111
swad_centre.c
111
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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
369
swad_connected.c
369
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 ();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
228
swad_course.c
228
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<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)"
|
||||
"SELECT CrsCod"
|
||||
" FROM crs_last"
|
||||
" WHERE LastTime<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)"
|
||||
" AND CrsCod NOT IN (SELECT DISTINCT CrsCod FROM crs_usr)",
|
||||
SecondsWithoutAccess);
|
||||
if (NumCrss)
|
||||
|
|
|
@ -521,7 +521,7 @@ static void CrsCfg_UpdateCrsDegDB (long CrsCod,long DegCod)
|
|||
{
|
||||
/***** Update degree in table of courses *****/
|
||||
DB_QueryUPDATE ("can not move course to another degree",
|
||||
"UPDATE courses SET DegCod=%ld WHERE CrsCod=%ld",
|
||||
"UPDATE crs_courses SET DegCod=%ld WHERE CrsCod=%ld",
|
||||
DegCod,CrsCod);
|
||||
}
|
||||
|
||||
|
|
|
@ -604,9 +604,9 @@ mysql> DESCRIBE countries;
|
|||
"INDEX(Name_pl),"
|
||||
"INDEX(Name_pt))"); // ISO 3166-1 country codes
|
||||
|
||||
/***** Table courses *****/
|
||||
/***** Table crs_courses *****/
|
||||
/*
|
||||
mysql> DESCRIBE courses;
|
||||
mysql> DESCRIBE crs_courses;
|
||||
+-----------------+---------------+------+-----+---------+----------------+
|
||||
| Field | Type | Null | Key | Default | Extra |
|
||||
+-----------------+---------------+------+-----+---------+----------------+
|
||||
|
@ -622,7 +622,7 @@ mysql> DESCRIBE courses;
|
|||
+-----------------+---------------+------+-----+---------+----------------+
|
||||
9 rows in set (0,00 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS courses ("
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS crs_courses ("
|
||||
"CrsCod INT NOT NULL AUTO_INCREMENT,"
|
||||
"DegCod INT NOT NULL DEFAULT -1,"
|
||||
"Year TINYINT NOT NULL DEFAULT 0,"
|
||||
|
|
129
swad_degree.c
129
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);
|
||||
}
|
||||
|
|
775
swad_enrolment.c
775
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<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Rol_TCH,
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM crs_usr,"
|
||||
"crs_usr_requests"
|
||||
" WHERE crs_usr.UsrCod=%ld"
|
||||
" AND crs_usr.Role=%u"
|
||||
" AND crs_usr.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Rol_TCH,
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_DEG_ADM:
|
||||
// Requests in all degrees administrated by me
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,courses,crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_DEG),
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,"
|
||||
"crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_DEG),
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_CTR_ADM:
|
||||
// Requests in all centres administrated by me
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,deg_degrees,courses,crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_CTR),
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_CTR),
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_INS_ADM:
|
||||
// Requests in all institutions administrated by me
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,centres,deg_degrees,courses,crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=centres.InsCod"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_INS),
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,"
|
||||
"centres,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=centres.InsCod"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_INS),
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_SYS_ADM:
|
||||
// All requests
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT ReqCod,"
|
||||
"CrsCod,"
|
||||
"UsrCod,"
|
||||
"Role,"
|
||||
"UNIX_TIMESTAMP(RequestTime)"
|
||||
" FROM crs_usr_requests"
|
||||
" WHERE ((1<<Role)&%u)<>0"
|
||||
" ORDER BY RequestTime DESC",
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT ReqCod,"
|
||||
"CrsCod,"
|
||||
"UsrCod,"
|
||||
"Role,"
|
||||
"UNIX_TIMESTAMP(RequestTime)"
|
||||
" FROM crs_usr_requests"
|
||||
" WHERE ((1<<Role)&%u)<>0"
|
||||
" ORDER BY RequestTime DESC",
|
||||
RolesSelected);
|
||||
break;
|
||||
default:
|
||||
Lay_NoPermissionExit ();
|
||||
|
@ -2430,120 +2440,148 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
{
|
||||
case Rol_TCH:
|
||||
// Requests in courses of this country in which I am teacher
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM crs_usr,institutions,centres,deg_degrees,courses,crs_usr_requests"
|
||||
" WHERE crs_usr.UsrCod=%ld"
|
||||
" AND crs_usr.Role=%u"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=deg_degrees.DegCod"
|
||||
" AND deg_degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod=%ld"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Rol_TCH,
|
||||
Gbl.Hierarchy.Cty.CtyCod,
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM crs_usr,"
|
||||
"institutions,"
|
||||
"centres,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE crs_usr.UsrCod=%ld"
|
||||
" AND crs_usr.Role=%u"
|
||||
" AND crs_usr.CrsCod=crs_courses.CrsCod"
|
||||
" AND crs_courses.DegCod=deg_degrees.DegCod"
|
||||
" AND deg_degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod=%ld"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Rol_TCH,
|
||||
Gbl.Hierarchy.Cty.CtyCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_DEG_ADM:
|
||||
// Requests in degrees of this country administrated by me
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,institutions,centres,deg_degrees,courses,crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=deg_degrees.DegCod"
|
||||
" AND deg_degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod=%ld"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_DEG),
|
||||
Gbl.Hierarchy.Cty.CtyCod,
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,"
|
||||
"institutions,"
|
||||
"centres,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=deg_degrees.DegCod"
|
||||
" AND deg_degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod=%ld"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
Sco_GetDBStrFromScope (Hie_Lvl_DEG),
|
||||
Gbl.Hierarchy.Cty.CtyCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_CTR_ADM:
|
||||
// Requests in centres of this country administrated by me
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,institutions,centres,deg_degrees,courses,crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod=%ld"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_CTR),
|
||||
Gbl.Hierarchy.Cty.CtyCod,
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,"
|
||||
"institutions,"
|
||||
"centres,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod=%ld"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
Sco_GetDBStrFromScope (Hie_Lvl_CTR),
|
||||
Gbl.Hierarchy.Cty.CtyCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_INS_ADM:
|
||||
// Requests in institutions of this country administrated by me
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,institutions,centres,deg_degrees,courses,crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=institutions.InsCod"
|
||||
" AND institutions.CtyCod=%ld"
|
||||
" AND institutions.InsCod=centres.InsCod"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_INS),
|
||||
Gbl.Hierarchy.Cty.CtyCod,
|
||||
RolesSelected);
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,"
|
||||
"institutions,"
|
||||
"centres,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=institutions.InsCod"
|
||||
" AND institutions.CtyCod=%ld"
|
||||
" AND institutions.InsCod=centres.InsCod"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
Sco_GetDBStrFromScope (Hie_Lvl_INS),
|
||||
Gbl.Hierarchy.Cty.CtyCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_SYS_ADM:
|
||||
// Requests in any course of this country
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM institutions,centres,deg_degrees,courses,crs_usr_requests"
|
||||
" WHERE institutions.CtyCod=%ld"
|
||||
" AND institutions.InsCod=centres.InsCod"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Hierarchy.Cty.CtyCod,
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM institutions,"
|
||||
"centres,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE institutions.CtyCod=%ld"
|
||||
" AND institutions.InsCod=centres.InsCod"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Hierarchy.Cty.CtyCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
default:
|
||||
Lay_NoPermissionExit ();
|
||||
|
@ -2555,93 +2593,109 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
{
|
||||
case Rol_TCH:
|
||||
// Requests in courses of this institution in which I am teacher
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM crs_usr,centres,deg_degrees,courses,crs_usr_requests"
|
||||
" WHERE crs_usr.UsrCod=%ld"
|
||||
" AND crs_usr.Role=%u"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=deg_degrees.DegCod"
|
||||
" AND deg_degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod=%ld"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Rol_TCH,
|
||||
Gbl.Hierarchy.Ins.InsCod,
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM crs_usr,"
|
||||
"centres,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE crs_usr.UsrCod=%ld"
|
||||
" AND crs_usr.Role=%u"
|
||||
" AND crs_usr.CrsCod=crs_courses.CrsCod"
|
||||
" AND crs_courses.DegCod=deg_degrees.DegCod"
|
||||
" AND deg_degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod=%ld"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Rol_TCH,
|
||||
Gbl.Hierarchy.Ins.InsCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_DEG_ADM:
|
||||
// Requests in degrees of this institution administrated by me
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,centres,deg_degrees,courses,crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=deg_degrees.DegCod"
|
||||
" AND deg_degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod=%ld"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_DEG),
|
||||
Gbl.Hierarchy.Ins.InsCod,
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,"
|
||||
"centres,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=deg_degrees.DegCod"
|
||||
" AND deg_degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod=%ld"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
Sco_GetDBStrFromScope (Hie_Lvl_DEG),
|
||||
Gbl.Hierarchy.Ins.InsCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_CTR_ADM:
|
||||
// Requests in centres of this institution administrated by me
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,centres,deg_degrees,courses,crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=centres.CtrCod"
|
||||
" AND centres.InsCod=%ld"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_CTR),
|
||||
Gbl.Hierarchy.Ins.InsCod,
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,"
|
||||
"centres,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=centres.CtrCod"
|
||||
" AND centres.InsCod=%ld"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_CTR),
|
||||
Gbl.Hierarchy.Ins.InsCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_INS_ADM: // If I am logged as admin of this institution, I can view all the requesters from this institution
|
||||
case Rol_SYS_ADM:
|
||||
// Requests in any course of this institution
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM centres,deg_degrees,courses,crs_usr_requests"
|
||||
" WHERE centres.InsCod=%ld"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Hierarchy.Ins.InsCod,
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM centres,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE centres.InsCod=%ld"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Hierarchy.Ins.InsCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
default:
|
||||
Lay_NoPermissionExit ();
|
||||
|
@ -2653,68 +2707,77 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
{
|
||||
case Rol_TCH:
|
||||
// Requests in courses of this centre in which I am teacher
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM crs_usr,deg_degrees,courses,crs_usr_requests"
|
||||
" WHERE crs_usr.UsrCod=%ld"
|
||||
" AND crs_usr.Role=%u"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=deg_degrees.DegCod"
|
||||
" AND deg_degrees.CtrCod=%ld"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Rol_TCH,
|
||||
Gbl.Hierarchy.Ctr.CtrCod,
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM crs_usr,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE crs_usr.UsrCod=%ld"
|
||||
" AND crs_usr.Role=%u"
|
||||
" AND crs_usr.CrsCod=crs_courses.CrsCod"
|
||||
" AND crs_courses.DegCod=deg_degrees.DegCod"
|
||||
" AND deg_degrees.CtrCod=%ld"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Rol_TCH,
|
||||
Gbl.Hierarchy.Ctr.CtrCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_DEG_ADM:
|
||||
// Requests in degrees of this centre administrated by me
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,deg_degrees,courses,crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=deg_degrees.DegCod"
|
||||
" AND deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_DEG),
|
||||
Gbl.Hierarchy.Ctr.CtrCod,
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM usr_admins,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE usr_admins.UsrCod=%ld"
|
||||
" AND usr_admins.Scope='%s'"
|
||||
" AND usr_admins.Cod=deg_degrees.DegCod"
|
||||
" AND deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
Sco_GetDBStrFromScope (Hie_Lvl_DEG),
|
||||
Gbl.Hierarchy.Ctr.CtrCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_CTR_ADM: // If I am logged as admin of this centre , I can view all the requesters from this centre
|
||||
case Rol_INS_ADM: // If I am logged as admin of this institution, I can view all the requesters from this centre
|
||||
case Rol_SYS_ADM:
|
||||
// Request in any course of this centre
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM deg_degrees,courses,crs_usr_requests"
|
||||
" WHERE deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Hierarchy.Ctr.CtrCod,
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Hierarchy.Ctr.CtrCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
default:
|
||||
Lay_NoPermissionExit ();
|
||||
|
@ -2726,45 +2789,48 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
{
|
||||
case Rol_TCH:
|
||||
// Requests in courses of this degree in which I am teacher
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM crs_usr,courses,crs_usr_requests"
|
||||
" WHERE crs_usr.UsrCod=%ld"
|
||||
" AND crs_usr.Role=%u"
|
||||
" AND crs_usr.CrsCod=courses.CrsCod"
|
||||
" AND courses.DegCod=%ld"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Rol_TCH,
|
||||
Gbl.Hierarchy.Deg.DegCod,
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM crs_usr,"
|
||||
"crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE crs_usr.UsrCod=%ld"
|
||||
" AND crs_usr.Role=%u"
|
||||
" AND crs_usr.CrsCod=crs_courses.CrsCod"
|
||||
" AND crs_courses.DegCod=%ld"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
(unsigned) Rol_TCH,
|
||||
Gbl.Hierarchy.Deg.DegCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_DEG_ADM: // If I am logged as admin of this degree , I can view all the requesters from this degree
|
||||
case Rol_CTR_ADM: // If I am logged as admin of this centre , I can view all the requesters from this degree
|
||||
case Rol_INS_ADM: // If I am logged as admin of this institution, I can view all the requesters from this degree
|
||||
case Rol_SYS_ADM:
|
||||
// Requests in any course of this degree
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM courses,crs_usr_requests"
|
||||
" WHERE courses.DegCod=%ld"
|
||||
" AND courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Hierarchy.Deg.DegCod,
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT crs_usr_requests.ReqCod,"
|
||||
"crs_usr_requests.CrsCod,"
|
||||
"crs_usr_requests.UsrCod,"
|
||||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM crs_courses,"
|
||||
"crs_usr_requests"
|
||||
" WHERE crs_courses.DegCod=%ld"
|
||||
" AND crs_courses.CrsCod=crs_usr_requests.CrsCod"
|
||||
" AND ((1<<crs_usr_requests.Role)&%u)<>0"
|
||||
" ORDER BY crs_usr_requests.RequestTime DESC",
|
||||
Gbl.Hierarchy.Deg.DegCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
default:
|
||||
Lay_NoPermissionExit ();
|
||||
|
@ -2780,16 +2846,19 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
case Rol_INS_ADM: // If I am logged as admin of this institution, I can view all the requesters from this course
|
||||
case Rol_SYS_ADM:
|
||||
// Requests in this course
|
||||
NumReqs = DB_QuerySELECT (&mysql_res,"can not get requests"
|
||||
" for enrolment",
|
||||
"SELECT ReqCod,CrsCod,UsrCod,Role,"
|
||||
"UNIX_TIMESTAMP(RequestTime)"
|
||||
" FROM crs_usr_requests"
|
||||
" WHERE CrsCod=%ld"
|
||||
" AND ((1<<Role)&%u)<>0"
|
||||
" ORDER BY RequestTime DESC",
|
||||
Gbl.Hierarchy.Crs.CrsCod,
|
||||
RolesSelected);
|
||||
NumReqs =
|
||||
DB_QuerySELECT (&mysql_res,"can not get requests for enrolment",
|
||||
"SELECT ReqCod,"
|
||||
"CrsCod,"
|
||||
"UsrCod,"
|
||||
"Role,"
|
||||
"UNIX_TIMESTAMP(RequestTime)"
|
||||
" FROM crs_usr_requests"
|
||||
" WHERE CrsCod=%ld"
|
||||
" AND ((1<<Role)&%u)<>0"
|
||||
" ORDER BY RequestTime DESC",
|
||||
Gbl.Hierarchy.Crs.CrsCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
default:
|
||||
Lay_NoPermissionExit ();
|
||||
|
|
109
swad_exam.c
109
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",
|
||||
|
|
1122
swad_figure.c
1122
swad_figure.c
File diff suppressed because it is too large
Load Diff
155
swad_follow.c
155
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 ();
|
||||
|
|
932
swad_forum.c
932
swad_forum.c
File diff suppressed because it is too large
Load Diff
194
swad_game.c
194
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",
|
||||
|
|
481
swad_indicator.c
481
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
578
swad_message.c
578
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;
|
||||
|
|
160
swad_network.c
160
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 ();
|
||||
|
|
104
swad_notice.c
104
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);
|
||||
|
|
47
swad_photo.c
47
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.TimeAvgPhoto<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)"
|
||||
" AND sta_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.Role=%u"
|
||||
" ORDER BY sta_degrees.TimeAvgPhoto LIMIT 1",
|
||||
Cfg_MIN_TIME_TO_RECOMPUTE_AVG_PHOTO,
|
||||
(unsigned) Rol_STD);
|
||||
|
||||
/* If number of rows is 1, then get the degree code */
|
||||
if (NumRows == 1)
|
||||
|
|
413
swad_profile.c
413
swad_profile.c
|
@ -1421,95 +1421,133 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
|
|||
switch (Gbl.Scope.Current)
|
||||
{
|
||||
case Hie_Lvl_SYS:
|
||||
NumUsrs =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT UsrCod,%s"
|
||||
" FROM usr_figures"
|
||||
" WHERE %s>0"
|
||||
" AND UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY %s DESC,UsrCod LIMIT 100",
|
||||
FieldName,
|
||||
FieldName,FieldName);
|
||||
NumUsrs = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT UsrCod,"
|
||||
"%s"
|
||||
" FROM usr_figures"
|
||||
" WHERE %s>0"
|
||||
" AND UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY %s DESC,"
|
||||
"UsrCod"
|
||||
" LIMIT 100",
|
||||
FieldName,
|
||||
FieldName,FieldName);
|
||||
break;
|
||||
case Hie_Lvl_CTY:
|
||||
NumUsrs =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW usr_figures.UsrCod,usr_figures.%s"
|
||||
" FROM institutions,centres,deg_degrees,courses,crs_usr,usr_figures"
|
||||
" WHERE institutions.CtyCod=%ld"
|
||||
" AND institutions.InsCod=centres.InsCod"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.%s>0"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100",
|
||||
FieldName,
|
||||
Gbl.Hierarchy.Cty.CtyCod,
|
||||
FieldName,FieldName);
|
||||
NumUsrs = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW "
|
||||
"usr_figures.UsrCod,"
|
||||
"usr_figures.%s"
|
||||
" FROM institutions,"
|
||||
"centres,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr,"
|
||||
"usr_figures"
|
||||
" WHERE institutions.CtyCod=%ld"
|
||||
" AND institutions.InsCod=centres.InsCod"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.%s>0"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY usr_figures.%s DESC,"
|
||||
"usr_figures.UsrCod"
|
||||
" LIMIT 100",
|
||||
FieldName,
|
||||
Gbl.Hierarchy.Cty.CtyCod,
|
||||
FieldName,FieldName);
|
||||
break;
|
||||
case Hie_Lvl_INS:
|
||||
NumUsrs =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW usr_figures.UsrCod,usr_figures.%s"
|
||||
" FROM centres,deg_degrees,courses,crs_usr,usr_figures"
|
||||
" WHERE centres.InsCod=%ld"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.%s>0"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100",
|
||||
FieldName,
|
||||
Gbl.Hierarchy.Ins.InsCod,
|
||||
FieldName,FieldName);
|
||||
NumUsrs = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW "
|
||||
"usr_figures.UsrCod,"
|
||||
"usr_figures.%s"
|
||||
" FROM centres,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr,"
|
||||
"usr_figures"
|
||||
" WHERE centres.InsCod=%ld"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.%s>0"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY usr_figures.%s DESC,"
|
||||
"usr_figures.UsrCod"
|
||||
" LIMIT 100",
|
||||
FieldName,
|
||||
Gbl.Hierarchy.Ins.InsCod,
|
||||
FieldName,FieldName);
|
||||
break;
|
||||
case Hie_Lvl_CTR:
|
||||
NumUsrs =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW usr_figures.UsrCod,usr_figures.%s"
|
||||
" FROM deg_degrees,courses,crs_usr,usr_figures"
|
||||
" WHERE deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.%s>0"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100",
|
||||
FieldName,
|
||||
Gbl.Hierarchy.Ctr.CtrCod,
|
||||
FieldName,FieldName);
|
||||
NumUsrs = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW "
|
||||
"usr_figures.UsrCod,"
|
||||
"usr_figures.%s"
|
||||
" FROM deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr,"
|
||||
"usr_figures"
|
||||
" WHERE deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.%s>0"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY usr_figures.%s DESC,"
|
||||
"usr_figures.UsrCod"
|
||||
" LIMIT 100",
|
||||
FieldName,
|
||||
Gbl.Hierarchy.Ctr.CtrCod,
|
||||
FieldName,FieldName);
|
||||
break;
|
||||
case Hie_Lvl_DEG:
|
||||
NumUsrs =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW usr_figures.UsrCod,usr_figures.%s"
|
||||
" FROM courses,crs_usr,usr_figures"
|
||||
" WHERE courses.DegCod=%ld"
|
||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.%s>0"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100",
|
||||
FieldName,
|
||||
Gbl.Hierarchy.Deg.DegCod,
|
||||
FieldName,FieldName);
|
||||
NumUsrs = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW "
|
||||
"usr_figures.UsrCod,"
|
||||
"usr_figures.%s"
|
||||
" FROM crs_courses,"
|
||||
"crs_usr,"
|
||||
"usr_figures"
|
||||
" WHERE crs_courses.DegCod=%ld"
|
||||
" AND crs_courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.%s>0"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY usr_figures.%s DESC,"
|
||||
"usr_figures.UsrCod"
|
||||
" LIMIT 100",
|
||||
FieldName,
|
||||
Gbl.Hierarchy.Deg.DegCod,
|
||||
FieldName,FieldName);
|
||||
break;
|
||||
case Hie_Lvl_CRS:
|
||||
NumUsrs =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW usr_figures.UsrCod,usr_figures.%s"
|
||||
" FROM crs_usr,usr_figures"
|
||||
" WHERE crs_usr.CrsCod=%ld"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.%s>0"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY usr_figures.%s DESC,usr_figures.UsrCod LIMIT 100",
|
||||
FieldName,
|
||||
Gbl.Hierarchy.Crs.CrsCod,
|
||||
FieldName,FieldName);
|
||||
NumUsrs = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW "
|
||||
"usr_figures.UsrCod,"
|
||||
"usr_figures.%s"
|
||||
" FROM crs_usr,"
|
||||
"usr_figures"
|
||||
" WHERE crs_usr.CrsCod=%ld"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.%s>0"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY usr_figures.%s DESC,"
|
||||
"usr_figures.UsrCod"
|
||||
" LIMIT 100",
|
||||
FieldName,
|
||||
Gbl.Hierarchy.Crs.CrsCod,
|
||||
FieldName,FieldName);
|
||||
break;
|
||||
default:
|
||||
Lay_WrongScopeExit ();
|
||||
|
@ -1600,117 +1638,132 @@ void Prf_GetAndShowRankingClicksPerDay (void)
|
|||
switch (Gbl.Scope.Current)
|
||||
{
|
||||
case Hie_Lvl_SYS:
|
||||
NumUsrs =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT UsrCod,"
|
||||
"NumClicks/(DATEDIFF(NOW(),"
|
||||
"FirstClickTime)+1) AS NumClicksPerDay"
|
||||
" FROM usr_figures"
|
||||
" WHERE NumClicks>0"
|
||||
" AND FirstClickTime>FROM_UNIXTIME(0)"
|
||||
" AND UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY NumClicksPerDay DESC,UsrCod"
|
||||
" LIMIT 100");
|
||||
NumUsrs = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT UsrCod,"
|
||||
"NumClicks/(DATEDIFF(NOW(),"
|
||||
"FirstClickTime)+1) AS NumClicksPerDay"
|
||||
" FROM usr_figures"
|
||||
" WHERE NumClicks>0"
|
||||
" AND FirstClickTime>FROM_UNIXTIME(0)"
|
||||
" AND UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY NumClicksPerDay DESC,UsrCod"
|
||||
" LIMIT 100");
|
||||
break;
|
||||
case Hie_Lvl_CTY:
|
||||
NumUsrs =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW "
|
||||
"usr_figures.UsrCod,"
|
||||
"usr_figures.NumClicks/(DATEDIFF(NOW(),"
|
||||
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
|
||||
" FROM institutions,centres,deg_degrees,courses,crs_usr,usr_figures"
|
||||
" WHERE institutions.CtyCod=%ld"
|
||||
" AND institutions.InsCod=centres.InsCod"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.NumClicks>0"
|
||||
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY NumClicksPerDay DESC,"
|
||||
"usr_figures.UsrCod"
|
||||
" LIMIT 100",
|
||||
Gbl.Hierarchy.Cty.CtyCod);
|
||||
NumUsrs = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW "
|
||||
"usr_figures.UsrCod,"
|
||||
"usr_figures.NumClicks/(DATEDIFF(NOW(),"
|
||||
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
|
||||
" FROM institutions,"
|
||||
"centres,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr,"
|
||||
"usr_figures"
|
||||
" WHERE institutions.CtyCod=%ld"
|
||||
" AND institutions.InsCod=centres.InsCod"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.NumClicks>0"
|
||||
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY NumClicksPerDay DESC,"
|
||||
"usr_figures.UsrCod"
|
||||
" LIMIT 100",
|
||||
Gbl.Hierarchy.Cty.CtyCod);
|
||||
break;
|
||||
case Hie_Lvl_INS:
|
||||
NumUsrs =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW "
|
||||
"usr_figures.UsrCod,"
|
||||
"usr_figures.NumClicks/(DATEDIFF(NOW(),"
|
||||
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
|
||||
" FROM centres,deg_degrees,courses,crs_usr,usr_figures"
|
||||
" WHERE centres.InsCod=%ld"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.NumClicks>0"
|
||||
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY NumClicksPerDay DESC,"
|
||||
"usr_figures.UsrCod"
|
||||
" LIMIT 100",
|
||||
Gbl.Hierarchy.Ins.InsCod);
|
||||
NumUsrs = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW "
|
||||
"usr_figures.UsrCod,"
|
||||
"usr_figures.NumClicks/(DATEDIFF(NOW(),"
|
||||
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
|
||||
" FROM centres,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr,"
|
||||
"usr_figures"
|
||||
" WHERE centres.InsCod=%ld"
|
||||
" AND centres.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.NumClicks>0"
|
||||
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY NumClicksPerDay DESC,"
|
||||
"usr_figures.UsrCod"
|
||||
" LIMIT 100",
|
||||
Gbl.Hierarchy.Ins.InsCod);
|
||||
break;
|
||||
case Hie_Lvl_CTR:
|
||||
NumUsrs =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW "
|
||||
"usr_figures.UsrCod,"
|
||||
"usr_figures.NumClicks/(DATEDIFF(NOW(),"
|
||||
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
|
||||
" FROM deg_degrees,courses,crs_usr,usr_figures"
|
||||
" WHERE deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.NumClicks>0"
|
||||
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY NumClicksPerDay DESC,"
|
||||
"usr_figures.UsrCod"
|
||||
" LIMIT 100",
|
||||
Gbl.Hierarchy.Ctr.CtrCod);
|
||||
NumUsrs = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW "
|
||||
"usr_figures.UsrCod,"
|
||||
"usr_figures.NumClicks/(DATEDIFF(NOW(),"
|
||||
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
|
||||
" FROM deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_usr,"
|
||||
"usr_figures"
|
||||
" WHERE deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.NumClicks>0"
|
||||
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY NumClicksPerDay DESC,"
|
||||
"usr_figures.UsrCod"
|
||||
" LIMIT 100",
|
||||
Gbl.Hierarchy.Ctr.CtrCod);
|
||||
break;
|
||||
case Hie_Lvl_DEG:
|
||||
NumUsrs =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW "
|
||||
"usr_figures.UsrCod,"
|
||||
"usr_figures.NumClicks/(DATEDIFF(NOW(),"
|
||||
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
|
||||
" FROM courses,crs_usr,usr_figures"
|
||||
" WHERE courses.DegCod=%ld"
|
||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.NumClicks>0"
|
||||
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY NumClicksPerDay DESC,"
|
||||
"usr_figures.UsrCod"
|
||||
" LIMIT 100",
|
||||
Gbl.Hierarchy.Deg.DegCod);
|
||||
NumUsrs = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW "
|
||||
"usr_figures.UsrCod,"
|
||||
"usr_figures.NumClicks/(DATEDIFF(NOW(),"
|
||||
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
|
||||
" FROM crs_courses,"
|
||||
"crs_usr,"
|
||||
"usr_figures"
|
||||
" WHERE crs_courses.DegCod=%ld"
|
||||
" AND crs_courses.CrsCod=crs_usr.CrsCod"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.NumClicks>0"
|
||||
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY NumClicksPerDay DESC,"
|
||||
"usr_figures.UsrCod"
|
||||
" LIMIT 100",
|
||||
Gbl.Hierarchy.Deg.DegCod);
|
||||
break;
|
||||
case Hie_Lvl_CRS:
|
||||
NumUsrs =
|
||||
(unsigned) DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW "
|
||||
"usr_figures.UsrCod,"
|
||||
"usr_figures.NumClicks/(DATEDIFF(NOW(),"
|
||||
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
|
||||
" FROM crs_usr,usr_figures"
|
||||
" WHERE crs_usr.CrsCod=%ld"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.NumClicks>0"
|
||||
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY NumClicksPerDay DESC,"
|
||||
"usr_figures.UsrCod"
|
||||
" LIMIT 100",
|
||||
Gbl.Hierarchy.Crs.CrsCod);
|
||||
NumUsrs = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get ranking",
|
||||
"SELECT DISTINCTROW "
|
||||
"usr_figures.UsrCod,"
|
||||
"usr_figures.NumClicks/(DATEDIFF(NOW(),"
|
||||
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
|
||||
" FROM crs_usr,"
|
||||
"usr_figures"
|
||||
" WHERE crs_usr.CrsCod=%ld"
|
||||
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||
" AND usr_figures.NumClicks>0"
|
||||
" AND usr_figures.FirstClickTime>FROM_UNIXTIME(0)"
|
||||
" AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)"
|
||||
" ORDER BY NumClicksPerDay DESC,"
|
||||
"usr_figures.UsrCod"
|
||||
" LIMIT 100",
|
||||
Gbl.Hierarchy.Crs.CrsCod);
|
||||
break;
|
||||
default:
|
||||
Lay_WrongScopeExit ();
|
||||
|
|
158
swad_program.c
158
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;
|
||||
}
|
||||
|
|
238
swad_project.c
238
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;
|
||||
}
|
||||
|
|
742
swad_search.c
742
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,
|
||||
|
|
231
swad_survey.c
231
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",
|
||||
|
|
473
swad_test.c
473
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;
|
||||
}
|
||||
|
|
578
swad_user.c
578
swad_user.c
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue