mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-29 03:45:53 +02:00
Version 16.45.2
This commit is contained in:
parent
902437f326
commit
db4c7737b0
|
@ -154,13 +154,14 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 16.45.1 (2016-10-27)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 16.45.2 (2016-10-27)"
|
||||
#define CSS_FILE "swad16.32.1.css"
|
||||
#define JS_FILE "swad15.238.1.js"
|
||||
|
||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
|
||||
/*
|
||||
Version 16.45.2: Oct 27, 2016 Code refactoring related with scopes. (205896 lines)
|
||||
Version 16.45.1: Oct 27, 2016 Fixed bugs in surveys. (? lines)
|
||||
Version 16.45: Oct 27, 2016 Changes in database table for surveys. Not finished. (205927 lines)
|
||||
10 changes necessary in database:
|
||||
|
|
|
@ -2230,7 +2230,7 @@ static void Crs_EmptyCourseCompletely (long CrsCod)
|
|||
Att_RemoveCrsAttEvents (CrsCod);
|
||||
|
||||
/***** Remove surveys of the course *****/
|
||||
Svy_RemoveCrsSurveys (CrsCod);
|
||||
Svy_RemoveSurveys (Sco_SCOPE_CRS,CrsCod);
|
||||
|
||||
/***** Remove notices in the course *****/
|
||||
/* Copy all notices from the course to table of deleted notices */
|
||||
|
|
|
@ -137,6 +137,7 @@ void Deg_SeePending (void)
|
|||
|
||||
void Deg_SeeDegWithPendingCrss (void)
|
||||
{
|
||||
extern const char *Sco_ScopeDB[Sco_NUM_SCOPES];
|
||||
extern const char *Txt_Degrees_with_pending_courses;
|
||||
extern const char *Txt_Degree;
|
||||
extern const char *Txt_Courses_ABBREVIATION;
|
||||
|
@ -155,12 +156,13 @@ void Deg_SeeDegWithPendingCrss (void)
|
|||
case Rol_DEG_ADM:
|
||||
sprintf (Query,"SELECT courses.DegCod,COUNT(*)"
|
||||
" FROM admin,courses,degrees"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='Deg'"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='%s'"
|
||||
" AND admin.Cod=courses.DegCod"
|
||||
" AND (courses.Status & %u)<>0"
|
||||
" AND courses.DegCod=degrees.DegCod"
|
||||
" GROUP BY courses.DegCod ORDER BY degrees.ShortName",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) Crs_STATUS_BIT_PENDING);
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_ScopeDB[Sco_SCOPE_DEG],
|
||||
(unsigned) Crs_STATUS_BIT_PENDING);
|
||||
break;
|
||||
case Rol_SYS_ADM:
|
||||
sprintf (Query,"SELECT courses.DegCod,COUNT(*)"
|
||||
|
@ -2250,6 +2252,7 @@ long Deg_GetInsCodOfDegreeByCod (long DegCod)
|
|||
|
||||
void Deg_RemoveDegreeCompletely (long DegCod)
|
||||
{
|
||||
extern const char *Sco_ScopeDB[Sco_NUM_SCOPES];
|
||||
char Query[512];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
@ -2281,8 +2284,10 @@ void Deg_RemoveDegreeCompletely (long DegCod)
|
|||
/* Free structure that stores the query result */
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
||||
/***** Remove surveys of the degree (not including surveys of courses in degree, already removed) *****/
|
||||
Svy_RemoveDegSurveys (DegCod);
|
||||
/***** Remove surveys of the degree
|
||||
(not including surveys of courses in degree,
|
||||
already removed) *****/
|
||||
Svy_RemoveSurveys (Sco_SCOPE_DEG,DegCod);
|
||||
|
||||
/***** Remove all the threads and posts in degree forums *****/
|
||||
/* Remove disabled posts */
|
||||
|
@ -2327,8 +2332,8 @@ void Deg_RemoveDegreeCompletely (long DegCod)
|
|||
Fil_RemoveTree (PathDeg);
|
||||
|
||||
/***** Remove administrators of this degree *****/
|
||||
sprintf (Query,"DELETE FROM admin WHERE Scope='Deg' AND Cod='%ld'",
|
||||
DegCod);
|
||||
sprintf (Query,"DELETE FROM admin WHERE Scope='%s' AND Cod='%ld'",
|
||||
Sco_ScopeDB[Sco_SCOPE_DEG],DegCod);
|
||||
DB_QueryDELETE (Query,"can not remove administrators of a degree");
|
||||
|
||||
/***** Remove the degree *****/
|
||||
|
@ -2854,6 +2859,7 @@ unsigned Deg_GetNumDegsWithUsrs (Rol_Role_t Role,const char *SubQuery)
|
|||
|
||||
void Deg_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
|
||||
{
|
||||
extern const char *Sco_ScopeDB[Sco_NUM_SCOPES];
|
||||
extern const char *Txt_all_degrees;
|
||||
char Query[1024];
|
||||
MYSQL_RES *mysql_res;
|
||||
|
@ -2868,30 +2874,31 @@ void Deg_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
|
|||
sprintf (Query,"(SELECT '%u' AS S,'-1' AS Cod,'' AS FullName"
|
||||
" FROM admin"
|
||||
" WHERE UsrCod='%ld'"
|
||||
" AND Scope='Sys')"
|
||||
" AND Scope='%s')"
|
||||
" UNION "
|
||||
"(SELECT '%u' AS S,admin.Cod,institutions.FullName"
|
||||
" FROM admin,institutions"
|
||||
" WHERE admin.UsrCod='%ld'"
|
||||
" AND admin.Scope='Ins'"
|
||||
" AND admin.Scope='%s'"
|
||||
" AND admin.Cod=institutions.InsCod)"
|
||||
" UNION "
|
||||
"(SELECT '%u' AS S,admin.Cod,centres.FullName"
|
||||
" FROM admin,centres"
|
||||
" WHERE admin.UsrCod='%ld'"
|
||||
" AND admin.Scope='Ctr'"
|
||||
" AND admin.Scope='%s'"
|
||||
" AND admin.Cod=centres.CtrCod)"
|
||||
" UNION "
|
||||
"(SELECT '%u' AS S,admin.Cod,degrees.FullName"
|
||||
" FROM admin,degrees"
|
||||
" WHERE admin.UsrCod='%ld'"
|
||||
" AND admin.Scope='Deg'"
|
||||
" AND admin.Scope='%s'"
|
||||
" AND admin.Cod=degrees.DegCod)"
|
||||
" ORDER BY S,FullName",
|
||||
(unsigned) Sco_SCOPE_SYS,UsrCod,
|
||||
(unsigned) Sco_SCOPE_INS,UsrCod,
|
||||
(unsigned) Sco_SCOPE_CTR,UsrCod,
|
||||
(unsigned) Sco_SCOPE_DEG,UsrCod);
|
||||
(unsigned) Sco_SCOPE_SYS,UsrCod,Sco_ScopeDB[Sco_SCOPE_SYS],
|
||||
(unsigned) Sco_SCOPE_INS,UsrCod,Sco_ScopeDB[Sco_SCOPE_INS],
|
||||
(unsigned) Sco_SCOPE_CTR,UsrCod,Sco_ScopeDB[Sco_SCOPE_CTR],
|
||||
(unsigned) Sco_SCOPE_DEG,UsrCod,Sco_ScopeDB[Sco_SCOPE_DEG]);
|
||||
|
||||
if ((NumRows = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get institutions, centres, degrees admin by a user")))
|
||||
/***** Get the list of degrees *****/
|
||||
for (NumRow = 1;
|
||||
|
|
|
@ -2080,6 +2080,7 @@ void Enr_UpdateEnrollmentRequests (void)
|
|||
|
||||
static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected)
|
||||
{
|
||||
extern const char *Sco_ScopeDB[Sco_NUM_SCOPES];
|
||||
extern const char *The_ClassForm[The_NUM_THEMES];
|
||||
extern const char *Txt_Enrollment_requests;
|
||||
extern const char *Txt_Scope;
|
||||
|
@ -2190,12 +2191,12 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM admin,courses,crs_usr_requests"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='Deg'"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='%s'"
|
||||
" AND admin.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,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_ScopeDB[Sco_SCOPE_DEG],
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_CTR_ADM:
|
||||
|
@ -2206,13 +2207,13 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM admin,degrees,courses,crs_usr_requests"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='Ctr'"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='%s'"
|
||||
" AND admin.Cod=degrees.CtrCod"
|
||||
" AND 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,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_ScopeDB[Sco_SCOPE_CTR],
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_INS_ADM:
|
||||
|
@ -2223,14 +2224,14 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM admin,centres,degrees,courses,crs_usr_requests"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='Ins'"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='%s'"
|
||||
" AND admin.Cod=centres.InsCod"
|
||||
" AND centres.CtrCod=degrees.CtrCod"
|
||||
" AND 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,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_ScopeDB[Sco_SCOPE_INS],
|
||||
RolesSelected);
|
||||
break;
|
||||
case Rol_SYS_ADM:
|
||||
|
@ -2284,7 +2285,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM admin,institutions,centres,degrees,courses,crs_usr_requests"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='Deg'"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='%s'"
|
||||
" AND admin.Cod=degrees.DegCod"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
|
@ -2293,7 +2294,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
" 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,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_ScopeDB[Sco_SCOPE_DEG],
|
||||
Gbl.CurrentCty.Cty.CtyCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
|
@ -2305,7 +2306,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM admin,institutions,centres,degrees,courses,crs_usr_requests"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='Ctr'"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='%s'"
|
||||
" AND admin.Cod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod='%ld'"
|
||||
|
@ -2314,7 +2315,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
" 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,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_ScopeDB[Sco_SCOPE_CTR],
|
||||
Gbl.CurrentCty.Cty.CtyCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
|
@ -2326,7 +2327,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM admin,institutions,centres,degrees,courses,crs_usr_requests"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='Ins'"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='%s'"
|
||||
" AND admin.Cod=institutions.InsCod"
|
||||
" AND institutions.CtyCod='%ld'"
|
||||
" AND institutions.InsCod=centres.InsCod"
|
||||
|
@ -2335,7 +2336,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
" 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,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_ScopeDB[Sco_SCOPE_INS],
|
||||
Gbl.CurrentCty.Cty.CtyCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
|
@ -2395,7 +2396,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM admin,centres,degrees,courses,crs_usr_requests"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='Deg'"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='%s'"
|
||||
" AND admin.Cod=degrees.DegCod"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod='%ld'"
|
||||
|
@ -2403,7 +2404,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
" 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,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_ScopeDB[Sco_SCOPE_DEG],
|
||||
Gbl.CurrentIns.Ins.InsCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
|
@ -2415,7 +2416,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM admin,centres,degrees,courses,crs_usr_requests"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='Ctr'"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='%s'"
|
||||
" AND admin.Cod=centres.CtrCod"
|
||||
" AND centres.InsCod='%ld'"
|
||||
" AND centres.CtrCod=degrees.CtrCod"
|
||||
|
@ -2423,7 +2424,7 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
" 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,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_ScopeDB[Sco_SCOPE_CTR],
|
||||
Gbl.CurrentIns.Ins.InsCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
|
@ -2482,14 +2483,14 @@ static void Enr_ShowEnrollmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
"crs_usr_requests.Role,"
|
||||
"UNIX_TIMESTAMP(crs_usr_requests.RequestTime)"
|
||||
" FROM admin,degrees,courses,crs_usr_requests"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='Deg'"
|
||||
" WHERE admin.UsrCod='%ld' AND admin.Scope='%s'"
|
||||
" AND admin.Cod=degrees.DegCod"
|
||||
" AND degrees.CtrCod='%ld'"
|
||||
" AND 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,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,Sco_ScopeDB[Sco_SCOPE_DEG],
|
||||
Gbl.CurrentCtr.Ctr.CtrCod,
|
||||
RolesSelected);
|
||||
break;
|
||||
|
|
|
@ -1265,14 +1265,15 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
|
|||
// to not send requests to be a student to admins)
|
||||
// ==> send notification to administrators or superusers
|
||||
sprintf (Query,"SELECT UsrCod FROM admin"
|
||||
" WHERE (Scope='Sys'"
|
||||
" OR (Scope='Ins' AND Cod='%ld')"
|
||||
" OR (Scope='Ctr' AND Cod='%ld')"
|
||||
" OR (Scope='Deg' AND Cod='%ld'))"
|
||||
" WHERE (Scope='%s'"
|
||||
" OR (Scope='%s' AND Cod='%ld')"
|
||||
" OR (Scope='%s' AND Cod='%ld')"
|
||||
" OR (Scope='%s' AND Cod='%ld'))"
|
||||
" AND UsrCod<>'%ld'",
|
||||
Gbl.CurrentIns.Ins.InsCod,
|
||||
Gbl.CurrentCtr.Ctr.CtrCod,
|
||||
Gbl.CurrentDeg.Deg.DegCod,
|
||||
Sco_ScopeDB[Sco_SCOPE_SYS],
|
||||
Sco_ScopeDB[Sco_SCOPE_INS],Gbl.CurrentIns.Ins.InsCod,
|
||||
Sco_ScopeDB[Sco_SCOPE_CTR],Gbl.CurrentCtr.Ctr.CtrCod,
|
||||
Sco_ScopeDB[Sco_SCOPE_DEG],Gbl.CurrentDeg.Deg.DegCod,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
break;
|
||||
case Ntf_EVENT_TIMELINE_COMMENT: // New comment to one of my social notes or comments
|
||||
|
|
|
@ -2176,8 +2176,7 @@ static void Svy_CreateSurvey (struct Survey *Svy,const char *Txt)
|
|||
" VALUES ('%s','%ld','N','%u','%ld',"
|
||||
"FROM_UNIXTIME('%ld'),FROM_UNIXTIME('%ld'),"
|
||||
"'%s','%s')",
|
||||
Sco_ScopeDB[Svy->Scope],
|
||||
Svy->Cod,
|
||||
Sco_ScopeDB[Svy->Scope],Svy->Cod,
|
||||
Svy->Roles,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
Svy->TimeUTC[Svy_START_TIME],
|
||||
|
@ -2397,56 +2396,11 @@ static void Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (struct Survey *Svy)
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************* Remove all the surveys of a degree ********************/
|
||||
/************ Remove all the surveys of a place on the hierarchy *************/
|
||||
/************ (country, institution, centre, degree or course) *************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Svy_RemoveDegSurveys (long DegCod)
|
||||
{
|
||||
extern const char *Sco_ScopeDB[Sco_NUM_SCOPES];
|
||||
char Query[512];
|
||||
|
||||
/***** Remove all the users in degree surveys
|
||||
(not including surveys of courses in degree) *****/
|
||||
sprintf (Query,"DELETE FROM svy_users"
|
||||
" USING surveys,svy_users"
|
||||
" WHERE surveys.Scope='%s' AND surveys.Cod='%ld'"
|
||||
" AND surveys.SvyCod=svy_users.SvyCod",
|
||||
Sco_ScopeDB[Sco_SCOPE_DEG],DegCod);
|
||||
DB_QueryDELETE (Query,"can not remove users"
|
||||
" who had answered surveys in a degree");
|
||||
|
||||
/***** Remove all the answers in degree surveys
|
||||
(not including surveys of courses in degree) *****/
|
||||
sprintf (Query,"DELETE FROM svy_answers"
|
||||
" USING surveys,svy_questions,svy_answers"
|
||||
" WHERE surveys.Scope='%s' AND surveys.Cod='%ld'"
|
||||
" AND surveys.SvyCod=svy_questions.SvyCod"
|
||||
" AND svy_questions.QstCod=svy_answers.QstCod",
|
||||
Sco_ScopeDB[Sco_SCOPE_DEG],DegCod);
|
||||
DB_QueryDELETE (Query,"can not remove answers of surveys in a degree");
|
||||
|
||||
/***** Remove all the questions in this survey
|
||||
(not including surveys of courses in degree) *****/
|
||||
sprintf (Query,"DELETE FROM svy_questions"
|
||||
" USING surveys,svy_questions"
|
||||
" WHERE surveys.Scope='%s' AND surveys.Cod='%ld'"
|
||||
" AND surveys.SvyCod=svy_questions.SvyCod",
|
||||
Sco_ScopeDB[Sco_SCOPE_DEG],DegCod);
|
||||
DB_QueryDELETE (Query,"can not remove questions of surveys in a degree");
|
||||
|
||||
/***** Remove degree surveys
|
||||
(not including surveys of courses in degree) *****/
|
||||
sprintf (Query,"DELETE FROM surveys"
|
||||
" WHERE Scope='%s' AND Cod='%ld'",
|
||||
Sco_ScopeDB[Sco_SCOPE_DEG],DegCod);
|
||||
DB_QueryDELETE (Query,"can not remove all the surveys of a course");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************* Remove all the surveys of a course ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Svy_RemoveCrsSurveys (long CrsCod)
|
||||
void Svy_RemoveSurveys (Sco_Scope_t Scope,long Cod)
|
||||
{
|
||||
extern const char *Sco_ScopeDB[Sco_NUM_SCOPES];
|
||||
char Query[512];
|
||||
|
@ -2456,9 +2410,9 @@ void Svy_RemoveCrsSurveys (long CrsCod)
|
|||
" USING surveys,svy_users"
|
||||
" WHERE surveys.Scope='%s' AND surveys.Cod='%ld'"
|
||||
" AND surveys.SvyCod=svy_users.SvyCod",
|
||||
Sco_ScopeDB[Sco_SCOPE_CRS],CrsCod);
|
||||
Sco_ScopeDB[Scope],Cod);
|
||||
DB_QueryDELETE (Query,"can not remove users"
|
||||
" who had answered surveys in a course");
|
||||
" who had answered surveys in a place on the hierarchy");
|
||||
|
||||
/***** Remove all the answers in course surveys *****/
|
||||
sprintf (Query,"DELETE FROM svy_answers"
|
||||
|
@ -2466,31 +2420,31 @@ void Svy_RemoveCrsSurveys (long CrsCod)
|
|||
" WHERE surveys.Scope='%s' AND surveys.Cod='%ld'"
|
||||
" AND surveys.SvyCod=svy_questions.SvyCod"
|
||||
" AND svy_questions.QstCod=svy_answers.QstCod",
|
||||
Sco_ScopeDB[Sco_SCOPE_CRS],CrsCod);
|
||||
DB_QueryDELETE (Query,"can not remove answers of surveys in a course");
|
||||
Sco_ScopeDB[Scope],Cod);
|
||||
DB_QueryDELETE (Query,"can not remove answers of surveys in a place on the hierarchy");
|
||||
|
||||
/***** Remove all the questions in course surveys *****/
|
||||
sprintf (Query,"DELETE FROM svy_questions"
|
||||
" USING surveys,svy_questions"
|
||||
" WHERE surveys.Scope='%s' AND surveys.Cod='%ld'"
|
||||
" AND surveys.SvyCod=svy_questions.SvyCod",
|
||||
Sco_ScopeDB[Sco_SCOPE_CRS],CrsCod);
|
||||
DB_QueryDELETE (Query,"can not remove questions of surveys in a course");
|
||||
Sco_ScopeDB[Scope],Cod);
|
||||
DB_QueryDELETE (Query,"can not remove questions of surveys in a place on the hierarchy");
|
||||
|
||||
/***** Remove groups *****/
|
||||
sprintf (Query,"DELETE FROM svy_grp"
|
||||
" USING surveys,svy_grp"
|
||||
" WHERE surveys.Scope='%s' AND surveys.Cod='%ld'"
|
||||
" AND surveys.SvyCod=svy_grp.SvyCod",
|
||||
Sco_ScopeDB[Sco_SCOPE_CRS],CrsCod);
|
||||
Sco_ScopeDB[Scope],Cod);
|
||||
DB_QueryDELETE (Query,"can not remove all the groups"
|
||||
" associated to surveys of a course");
|
||||
|
||||
/***** Remove course surveys *****/
|
||||
sprintf (Query,"DELETE FROM surveys"
|
||||
" WHERE Scope='%s' AND Cod='%ld'",
|
||||
Sco_ScopeDB[Sco_SCOPE_CRS],CrsCod);
|
||||
DB_QueryDELETE (Query,"can not remove all the surveys of a course");
|
||||
Sco_ScopeDB[Scope],Cod);
|
||||
DB_QueryDELETE (Query,"can not remove all the surveys in a place on the hierarchy");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -4002,12 +3956,10 @@ float Svy_GetNumQstsPerCrsSurvey (Sco_Scope_t Scope)
|
|||
sprintf (Query,"SELECT AVG(NumQsts) FROM"
|
||||
" (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
|
||||
" FROM surveys,svy_questions"
|
||||
" WHERE surveys.Scope='%s'"
|
||||
" AND surveys.CrsCod='%ld'"
|
||||
" WHERE surveys.Scope='%s' AND surveys.Cod='%ld'"
|
||||
" AND surveys.SvyCod=svy_questions.SvyCod"
|
||||
" GROUP BY svy_questions.SvyCod) AS NumQstsTable",
|
||||
Sco_ScopeDB[Sco_SCOPE_CRS],
|
||||
Gbl.CurrentCrs.Crs.CrsCod);
|
||||
Sco_ScopeDB[Sco_SCOPE_CRS],Gbl.CurrentCrs.Crs.CrsCod);
|
||||
break;
|
||||
default:
|
||||
Lay_ShowErrorAndExit ("Wrong scope.");
|
||||
|
|
|
@ -98,8 +98,7 @@ void Svy_RecFormSurvey (void);
|
|||
bool Svy_CheckIfSvyIsAssociatedToGrp (long SvyCod,long GrpCod);
|
||||
void Svy_RemoveGroup (long GrpCod);
|
||||
void Svy_RemoveGroupsOfType (long GrpTypCod);
|
||||
void Svy_RemoveDegSurveys (long DegCod);
|
||||
void Svy_RemoveCrsSurveys (long CrsCod);
|
||||
void Svy_RemoveSurveys (long CrsCod);
|
||||
|
||||
void Svy_RequestEditQuestion (void);
|
||||
void Svy_ReceiveQst (void);
|
||||
|
|
66
swad_user.c
66
swad_user.c
|
@ -773,12 +773,13 @@ bool Usr_CheckIfUsrIsAdm (long UsrCod,Sco_Scope_t Scope,long Cod)
|
|||
|
||||
bool Usr_CheckIfUsrIsSuperuser (long UsrCod)
|
||||
{
|
||||
extern const char *Sco_ScopeDB[Sco_NUM_SCOPES];
|
||||
char Query[128];
|
||||
|
||||
/***** Get if a user is superuser from database *****/
|
||||
sprintf (Query,"SELECT COUNT(*) FROM admin"
|
||||
" WHERE UsrCod='%ld' AND Scope='Sys'",
|
||||
UsrCod);
|
||||
" WHERE UsrCod='%ld' AND Scope='%s'",
|
||||
UsrCod,Sco_ScopeDB[Sco_SCOPE_SYS]);
|
||||
return (DB_QueryCOUNT (Query,"can not check if a user is superuser") != 0);
|
||||
}
|
||||
|
||||
|
@ -4114,6 +4115,7 @@ void Usr_DropTmpTableWithCandidateUsrs (void)
|
|||
|
||||
static void Usr_GetAdmsLst (Sco_Scope_t Scope)
|
||||
{
|
||||
extern const char *Sco_ScopeDB[Sco_NUM_SCOPES];
|
||||
char Query[1024];
|
||||
const char *QueryFields =
|
||||
"UsrCod,"
|
||||
|
@ -4156,30 +4158,31 @@ static void Usr_GetAdmsLst (Sco_Scope_t Scope)
|
|||
sprintf (Query,"SELECT %s FROM usr_data"
|
||||
" WHERE UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Sys')"
|
||||
" WHERE Scope='%s')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT admin.UsrCod FROM admin,institutions"
|
||||
" WHERE admin.Scope='Ins'"
|
||||
" WHERE admin.Scope='%s'"
|
||||
" AND admin.Cod=institutions.InsCod"
|
||||
" AND institutions.CtyCod='%ld')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT admin.UsrCod FROM admin,centres,institutions"
|
||||
" WHERE admin.Scope='Ctr'"
|
||||
" WHERE admin.Scope='%s'"
|
||||
" AND admin.Cod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod='%ld')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT admin.UsrCod FROM admin,degrees,centres,institutions"
|
||||
" WHERE admin.Scope='Deg'"
|
||||
" WHERE admin.Scope='%s'"
|
||||
" AND admin.Cod=degrees.DegCod"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod='%ld')"
|
||||
" ORDER BY Surname1,Surname2,FirstName,UsrCod",
|
||||
QueryFields,
|
||||
Gbl.CurrentCty.Cty.CtyCod,
|
||||
Gbl.CurrentCty.Cty.CtyCod,
|
||||
Gbl.CurrentCty.Cty.CtyCod);
|
||||
Sco_ScopeDB[Sco_SCOPE_SYS],
|
||||
Sco_ScopeDB[Sco_SCOPE_INS],Gbl.CurrentCty.Cty.CtyCod,
|
||||
Sco_ScopeDB[Sco_SCOPE_CTR],Gbl.CurrentCty.Cty.CtyCod,
|
||||
Sco_ScopeDB[Sco_SCOPE_DEG],Gbl.CurrentCty.Cty.CtyCod);
|
||||
break;
|
||||
case Sco_SCOPE_INS: // System admins,
|
||||
// admins of the current institution,
|
||||
|
@ -4187,26 +4190,27 @@ static void Usr_GetAdmsLst (Sco_Scope_t Scope)
|
|||
sprintf (Query,"SELECT %s FROM usr_data"
|
||||
" WHERE UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Sys')"
|
||||
" WHERE Scope='%s')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Ins' AND Cod='%ld')"
|
||||
" WHERE Scope='%s' AND Cod='%ld')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT admin.UsrCod FROM admin,centres"
|
||||
" WHERE admin.Scope='Ctr'"
|
||||
" WHERE admin.Scope='%s'"
|
||||
" AND admin.Cod=centres.CtrCod"
|
||||
" AND centres.InsCod='%ld')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT admin.UsrCod FROM admin,degrees,centres"
|
||||
" WHERE admin.Scope='Deg'"
|
||||
" WHERE admin.Scope='%s'"
|
||||
" AND admin.Cod=degrees.DegCod"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" AND centres.InsCod='%ld')"
|
||||
" ORDER BY Surname1,Surname2,FirstName,UsrCod",
|
||||
QueryFields,
|
||||
Gbl.CurrentIns.Ins.InsCod,
|
||||
Gbl.CurrentIns.Ins.InsCod,
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
Sco_ScopeDB[Sco_SCOPE_SYS],
|
||||
Sco_ScopeDB[Sco_SCOPE_INS],Gbl.CurrentIns.Ins.InsCod,
|
||||
Sco_ScopeDB[Sco_SCOPE_CTR],Gbl.CurrentIns.Ins.InsCod,
|
||||
Sco_ScopeDB[Sco_SCOPE_DEG],Gbl.CurrentIns.Ins.InsCod);
|
||||
break;
|
||||
case Sco_SCOPE_CTR: // System admins,
|
||||
// admins of the current institution,
|
||||
|
@ -4215,44 +4219,46 @@ static void Usr_GetAdmsLst (Sco_Scope_t Scope)
|
|||
sprintf (Query,"SELECT %s FROM usr_data"
|
||||
" WHERE UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Sys')"
|
||||
" WHERE Scope='%s')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Ins' AND Cod='%ld')"
|
||||
" WHERE Scope='%s' AND Cod='%ld')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Ctr' AND Cod='%ld')"
|
||||
" WHERE Scope='%s' AND Cod='%ld')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT admin.UsrCod FROM admin,degrees"
|
||||
" WHERE admin.Scope='Deg'"
|
||||
" WHERE admin.Scope='%s'"
|
||||
" AND admin.Cod=degrees.DegCod"
|
||||
" AND degrees.CtrCod='%ld')"
|
||||
" ORDER BY Surname1,Surname2,FirstName,UsrCod",
|
||||
QueryFields,
|
||||
Gbl.CurrentIns.Ins.InsCod,
|
||||
Gbl.CurrentCtr.Ctr.CtrCod,
|
||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||
Sco_ScopeDB[Sco_SCOPE_SYS],
|
||||
Sco_ScopeDB[Sco_SCOPE_INS],Gbl.CurrentIns.Ins.InsCod,
|
||||
Sco_ScopeDB[Sco_SCOPE_CTR],Gbl.CurrentCtr.Ctr.CtrCod,
|
||||
Sco_ScopeDB[Sco_SCOPE_DEG],Gbl.CurrentCtr.Ctr.CtrCod);
|
||||
break;
|
||||
case Sco_SCOPE_DEG: // System admins
|
||||
// and admins of the current institution, centre or degree
|
||||
sprintf (Query,"SELECT %s FROM usr_data"
|
||||
" WHERE UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Sys')"
|
||||
" WHERE Scope='%s')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Ins' AND Cod='%ld')"
|
||||
" WHERE Scope='%s' AND Cod='%ld')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Ctr' AND Cod='%ld')"
|
||||
" WHERE Scope='%s' AND Cod='%ld')"
|
||||
" OR UsrCod IN "
|
||||
"(SELECT UsrCod FROM admin"
|
||||
" WHERE Scope='Deg' AND Cod='%ld')"
|
||||
" WHERE Scope='%s' AND Cod='%ld')"
|
||||
" ORDER BY Surname1,Surname2,FirstName,UsrCod",
|
||||
QueryFields,
|
||||
Gbl.CurrentIns.Ins.InsCod,
|
||||
Gbl.CurrentCtr.Ctr.CtrCod,
|
||||
Gbl.CurrentDeg.Deg.DegCod);
|
||||
Sco_ScopeDB[Sco_SCOPE_SYS],
|
||||
Sco_ScopeDB[Sco_SCOPE_INS],Gbl.CurrentIns.Ins.InsCod,
|
||||
Sco_ScopeDB[Sco_SCOPE_CTR],Gbl.CurrentCtr.Ctr.CtrCod,
|
||||
Sco_ScopeDB[Sco_SCOPE_DEG],Gbl.CurrentDeg.Deg.DegCod);
|
||||
break;
|
||||
default: // not aplicable
|
||||
Lay_ShowErrorAndExit ("Wrong scope.");
|
||||
|
|
Loading…
Reference in New Issue
Block a user