Version 20.51.30: Mar 20, 2021 Survey groups database table renamed.

This commit is contained in:
acanas 2021-03-20 15:06:07 +01:00
parent 8e521f25ad
commit 64a4aa6ce9
6 changed files with 78 additions and 52 deletions

View File

@ -1332,9 +1332,9 @@ CREATE TABLE IF NOT EXISTS svy_answers (
Answer TEXT NOT NULL,
UNIQUE INDEX(QstCod,AnsInd));
--
-- Table svy_grp: stores the groups associated to each survey
-- Table svy_groups: stores the groups associated to each survey
--
CREATE TABLE IF NOT EXISTS svy_grp (
CREATE TABLE IF NOT EXISTS svy_groups (
SvyCod INT NOT NULL,
GrpCod INT NOT NULL,
UNIQUE INDEX(SvyCod,GrpCod));

View File

@ -600,13 +600,17 @@ 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.51.29 (2021-03-20)"
#define Log_PLATFORM_VERSION "SWAD 20.51.30 (2021-03-20)"
#define CSS_FILE "swad20.45.css"
#define JS_FILE "swad20.6.2.js"
/*
TODO: Rename CENTRE to CENTER in help wiki.
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
Version 20.51.30: Mar 20, 2021 Survey groups database table renamed. (308287 lines)
1 change necessary in database:
RENAME TABLE svy_grp TO svy_groups;
Version 20.51.29: Mar 20, 2021 Attendance groups database table renamed. (308259 lines)
1 change necessary in database:
RENAME TABLE att_grp TO att_groups;

View File

@ -2779,9 +2779,9 @@ mysql> DESCRIBE svy_answers;
"Answer TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
"UNIQUE INDEX(QstCod,AnsInd))");
/***** Table svy_grp *****/
/***** Table svy_groups *****/
/*
mysql> DESCRIBE svy_grp;
mysql> DESCRIBE svy_groups;
+--------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
@ -2790,7 +2790,7 @@ mysql> DESCRIBE svy_grp;
+--------+---------+------+-----+---------+-------+
2 rows in set (0.01 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS svy_grp ("
DB_CreateTable ("CREATE TABLE IF NOT EXISTS svy_groups ("
"SvyCod INT NOT NULL,"
"GrpCod INT NOT NULL,"
"UNIQUE INDEX(SvyCod,GrpCod))");

View File

@ -1694,7 +1694,7 @@ void Grp_ListGrpsToEditAsgAttSvyEvtMch (struct GroupType *GrpTyp,
{
[Grp_ASSIGNMENT] = {"asg_groups","AsgCod"},
[Grp_ATT_EVENT ] = {"att_groups","AttCod"},
[Grp_SURVEY ] = {"svy_grp" ,"SvyCod"},
[Grp_SURVEY ] = {"svy_groups","SvyCod"},
[Grp_EXA_EVENT ] = {"exa_groups","SesCod"},
[Grp_MATCH ] = {"mch_groups","MchCod"},
};

View File

@ -1402,25 +1402,31 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
NumRows = DB_QuerySELECT (&mysql_res,"can not get users"
" to be notified",
"(SELECT crs_usr.UsrCod"
" FROM svy_surveys,crs_usr"
" WHERE svy_surveys.SvyCod=%ld"
" AND svy_surveys.SvyCod NOT IN"
" (SELECT SvyCod FROM svy_grp WHERE SvyCod=%ld)"
" AND svy_surveys.Scope='%s'"
" AND svy_surveys.Cod=crs_usr.CrsCod"
" AND crs_usr.UsrCod<>%ld"
" AND (svy_surveys.Roles&(1<<crs_usr.Role))<>0)"
" FROM svy_surveys,"
"crs_usr"
" WHERE svy_surveys.SvyCod=%ld"
" AND svy_surveys.SvyCod NOT IN"
" (SELECT SvyCod"
" FROM svy_groups"
" WHERE SvyCod=%ld)"
" AND svy_surveys.Scope='%s'"
" AND svy_surveys.Cod=crs_usr.CrsCod"
" AND crs_usr.UsrCod<>%ld"
" AND (svy_surveys.Roles&(1<<crs_usr.Role))<>0)"
" UNION "
"(SELECT DISTINCT crs_grp_usr.UsrCod"
" FROM svy_grp,crs_grp_usr,svy_surveys,crs_usr"
" WHERE svy_grp.SvyCod=%ld"
" AND svy_grp.GrpCod=crs_grp_usr.GrpCod"
" AND crs_grp_usr.UsrCod=crs_usr.UsrCod"
" AND crs_grp_usr.UsrCod<>%ld"
" AND svy_grp.SvyCod=svy_surveys.SvyCod"
" AND svy_surveys.Scope='%s'"
" AND svy_surveys.Cod=crs_usr.CrsCod"
" AND (svy_surveys.Roles&(1<<crs_usr.Role))<>0)",
" FROM svy_groups,"
"crs_grp_usr,"
"svy_surveys,"
"crs_usr"
" WHERE svy_groups.SvyCod=%ld"
" AND svy_groups.GrpCod=crs_grp_usr.GrpCod"
" AND crs_grp_usr.UsrCod=crs_usr.UsrCod"
" AND crs_grp_usr.UsrCod<>%ld"
" AND svy_groups.SvyCod=svy_surveys.SvyCod"
" AND svy_surveys.Scope='%s'"
" AND svy_surveys.Cod=crs_usr.CrsCod"
" AND (svy_surveys.Roles&(1<<crs_usr.Role))<>0)",
Cod,
Cod,
Sco_GetDBStrFromScope (Hie_Lvl_CRS),

View File

@ -988,16 +988,18 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
if (Gbl.Crs.Grps.WhichGrps == Grp_MY_GROUPS)
{
if (asprintf (&SubQuery[Hie_Lvl_CRS],"%s("
"Scope='%s' AND Cod=%ld%s"
"Scope='%s'"
" AND Cod=%ld%s"
" AND "
"(SvyCod NOT IN"
" (SELECT SvyCod FROM svy_grp)"
" (SELECT SvyCod"
" FROM svy_groups)"
" OR"
" SvyCod IN"
" (SELECT svy_grp.SvyCod"
" FROM svy_grp,crs_grp_usr"
" WHERE crs_grp_usr.UsrCod=%ld"
" AND svy_grp.GrpCod=crs_grp_usr.GrpCod))"
" (SELECT svy_groups.SvyCod"
" FROM svy_groups,crs_grp_usr"
" WHERE crs_grp_usr.UsrCod=%ld"
" AND svy_groups.GrpCod=crs_grp_usr.GrpCod))"
")",
SubQueryFilled ? " OR " :
"",
@ -2151,8 +2153,8 @@ static void Svy_ShowLstGrpsToEditSurvey (long SvyCod)
HTM_LABEL_Begin (NULL);
HTM_INPUT_CHECKBOX ("WholeCrs",HTM_DONT_SUBMIT_ON_CHANGE,
"id=\"WholeCrs\" value=\"Y\"%s onclick=\"uncheckChildren(this,'GrpCods')\"",
Grp_CheckIfAssociatedToGrps ("svy_grp","SvyCod",SvyCod) ? "" :
" checked=\"checked\"");
Grp_CheckIfAssociatedToGrps ("svy_groups","SvyCod",SvyCod) ? "" :
" checked=\"checked\"");
HTM_TxtF ("%s&nbsp;%s",Txt_The_whole_course,Gbl.Hierarchy.Crs.ShrtName);
HTM_LABEL_End ();
HTM_TD_End ();
@ -2420,7 +2422,8 @@ static void Svy_RemoveAllTheGrpsAssociatedToAndSurvey (long SvyCod)
{
/***** Remove groups of the survey *****/
DB_QueryDELETE ("can not remove the groups associated to a survey",
"DELETE FROM svy_grp WHERE SvyCod=%ld",
"DELETE FROM svy_groups"
" WHERE SvyCod=%ld",
SvyCod);
}
@ -2433,7 +2436,8 @@ void Svy_RemoveGroup (long GrpCod)
/***** Remove group from all the surveys *****/
DB_QueryDELETE ("can not remove group from the associations"
" between surveys and groups",
"DELETE FROM svy_grp WHERE GrpCod=%ld",
"DELETE FROM svy_groups"
" WHERE GrpCod=%ld",
GrpCod);
}
@ -2446,9 +2450,11 @@ void Svy_RemoveGroupsOfType (long GrpTypCod)
/***** Remove group from all the surveys *****/
DB_QueryDELETE ("can not remove groups of a type"
" from the associations between surveys and groups",
"DELETE FROM svy_grp USING crs_grp,svy_grp"
"DELETE FROM svy_groups"
" USING crs_grp,"
"svy_groups"
" WHERE crs_grp.GrpTypCod=%ld"
" AND crs_grp.GrpCod=svy_grp.GrpCod",
" AND crs_grp.GrpCod=svy_groups.GrpCod",
GrpTypCod);
}
@ -2466,7 +2472,7 @@ static void Svy_CreateGrps (long SvyCod)
NumGrpSel++)
/* Create group */
DB_QueryINSERT ("can not associate a group to a survey",
"INSERT INTO svy_grp"
"INSERT INTO svy_groups"
" (SvyCod,GrpCod)"
" VALUES"
" (%ld,%ld)",
@ -2490,13 +2496,14 @@ static void Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (struct Svy_Survey *Svy)
/***** Get groups associated to a survey from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get groups of a survey",
"SELECT crs_grp_types.GrpTypName,crs_grp.GrpName"
" FROM svy_grp,crs_grp,crs_grp_types"
" WHERE svy_grp.SvyCod=%ld"
" AND svy_grp.GrpCod=crs_grp.GrpCod"
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
"SELECT crs_grp_types.GrpTypName,"
"crs_grp.GrpName"
" FROM svy_groups,crs_grp,crs_grp_types"
" WHERE svy_groups.SvyCod=%ld"
" AND svy_groups.GrpCod=crs_grp.GrpCod"
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
" ORDER BY crs_grp_types.GrpTypName,"
"crs_grp.GrpName",
"crs_grp.GrpName",
Svy->SvyCod);
/***** Write heading *****/
@ -2576,10 +2583,12 @@ void Svy_RemoveSurveys (Hie_Lvl_Level_t Scope,long Cod)
/***** Remove groups *****/
DB_QueryDELETE ("can not remove all the groups"
" associated to surveys of a course",
"DELETE FROM svy_grp"
" USING svy_surveys,svy_grp"
" WHERE svy_surveys.Scope='%s' AND svy_surveys.Cod=%ld"
" AND svy_surveys.SvyCod=svy_grp.SvyCod",
"DELETE FROM svy_groups"
" USING svy_surveys,"
"svy_groups"
" WHERE svy_surveys.Scope='%s'"
" AND svy_surveys.Cod=%ld"
" AND svy_surveys.SvyCod=svy_groups.SvyCod",
Sco_GetDBStrFromScope (Scope),Cod);
/***** Remove course surveys *****/
@ -2598,12 +2607,19 @@ static bool Svy_CheckIfICanDoThisSurveyBasedOnGrps (long SvyCod)
{
/***** Get if I can do a survey from database *****/
return (DB_QueryCOUNT ("can not check if I can do a survey",
"SELECT COUNT(*) FROM svy_surveys"
"SELECT COUNT(*)"
" FROM svy_surveys"
" WHERE SvyCod=%ld"
" AND (SvyCod NOT IN (SELECT SvyCod FROM svy_grp) OR"
" SvyCod IN (SELECT svy_grp.SvyCod FROM svy_grp,crs_grp_usr"
" WHERE crs_grp_usr.UsrCod=%ld"
" AND svy_grp.GrpCod=crs_grp_usr.GrpCod))",
" AND"
" (SvyCod NOT IN"
" (SELECT SvyCod FROM svy_groups)"
" OR"
" SvyCod IN"
" (SELECT svy_groups.SvyCod"
" FROM crs_grp_usr,"
"svy_groups"
" WHERE crs_grp_usr.UsrCod=%ld"
" AND svy_groups.GrpCod=crs_grp_usr.GrpCod))",
SvyCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0);
}