Version 20.91.3: Jun 11, 2021 Queries moved to module swad_enrolment_database.

This commit is contained in:
acanas 2021-06-11 10:46:53 +02:00
parent ca9420971c
commit 486382daaa
11 changed files with 177 additions and 143 deletions

View File

@ -988,7 +988,7 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
Dup_DB_RemoveUsrFromDuplicated (UsrDat->UsrCod); Dup_DB_RemoveUsrFromDuplicated (UsrDat->UsrCod);
/***** Remove user from the tables of courses and users *****/ /***** Remove user from the tables of courses and users *****/
Set_DB_RemCrsUsrSettings (UsrDat->UsrCod); Set_DB_RemUsrFromAllCrssSettings (UsrDat->UsrCod);
Enr_DB_RemUsrFromAllCrss (UsrDat->UsrCod); Enr_DB_RemUsrFromAllCrss (UsrDat->UsrCod);
if (QuietOrVerbose == Cns_VERBOSE) if (QuietOrVerbose == Cns_VERBOSE)

View File

@ -203,3 +203,23 @@ void Acc_DB_UpdateUsrData (const struct UsrData *UsrDat)
"", "",
UsrDat->UsrCod); UsrDat->UsrCod);
} }
/*****************************************************************************/
/**************** Update institution, center and department ******************/
/*****************************************************************************/
void Acc_DB_UpdateMyInstitutionCenterDepartment (void)
{
DB_QueryUPDATE ("can not update institution, center and department",
"UPDATE usr_data"
" SET InsCtyCod=%ld,"
"InsCod=%ld,"
"CtrCod=%ld,"
"DptCod=%ld"
" WHERE UsrCod=%ld",
Gbl.Usrs.Me.UsrDat.InsCtyCod,
Gbl.Usrs.Me.UsrDat.InsCod,
Gbl.Usrs.Me.UsrDat.Tch.CtrCod,
Gbl.Usrs.Me.UsrDat.Tch.DptCod,
Gbl.Usrs.Me.UsrDat.UsrCod);
}

View File

@ -52,5 +52,6 @@ bool Acc_DB_CheckIfEmailAlreadyExists (const char NewEmail[Cns_MAX_BYTES_EMAIL_A
long Acc_DB_CreateNewUsr (const struct UsrData *UsrDat); long Acc_DB_CreateNewUsr (const struct UsrData *UsrDat);
void Acc_DB_UpdateUsrData (const struct UsrData *UsrDat); void Acc_DB_UpdateUsrData (const struct UsrData *UsrDat);
void Acc_DB_UpdateMyInstitutionCenterDepartment (void);
#endif #endif

View File

@ -602,13 +602,14 @@ TODO: FIX BUG, URGENT! En las fechas como par
TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo. TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo.
*/ */
#define Log_PLATFORM_VERSION "SWAD 20.91.2 (2021-06-11)" #define Log_PLATFORM_VERSION "SWAD 20.91.3 (2021-06-11)"
#define CSS_FILE "swad20.45.css" #define CSS_FILE "swad20.45.css"
#define JS_FILE "swad20.69.1.js" #define JS_FILE "swad20.69.1.js"
/* /*
TODO: Rename CENTRE to CENTER in help wiki. TODO: Rename CENTRE to CENTER in help wiki.
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
Version 20.91.3: Jun 11, 2021 Queries moved to module swad_enrolment_database. (313173 lines)
Version 20.91.2: Jun 11, 2021 Queries moved to module swad_enrolment_database. (313143 lines) Version 20.91.2: Jun 11, 2021 Queries moved to module swad_enrolment_database. (313143 lines)
Version 20.91.1: Jun 10, 2021 Queries moved to module swad_enrolment_database. (313145 lines) Version 20.91.1: Jun 10, 2021 Queries moved to module swad_enrolment_database. (313145 lines)
Version 20.91: Jun 09, 2021 New module swad_enrolment_database for database queries related to user's enrolment. (313063 lines) Version 20.91: Jun 09, 2021 New module swad_enrolment_database for database queries related to user's enrolment. (313063 lines)

View File

@ -55,6 +55,7 @@
#include "swad_notice.h" #include "swad_notice.h"
#include "swad_project.h" #include "swad_project.h"
#include "swad_search.h" #include "swad_search.h"
#include "swad_setting.h"
#include "swad_survey.h" #include "swad_survey.h"
#include "swad_test.h" #include "swad_test.h"
@ -1842,7 +1843,7 @@ static void Crs_EmptyCourseCompletely (long CrsCod)
Enr_DB_RemCrsRequests (CrsCod); Enr_DB_RemCrsRequests (CrsCod);
/***** Remove possible users remaining in the course (teachers) *****/ /***** Remove possible users remaining in the course (teachers) *****/
Enr_DB_RemAllUsrsFromCrsSettings (CrsCod); Set_DB_RemAllUsrsFromCrsSettings (CrsCod);
Enr_DB_RemAllUsrsFromCrs (CrsCod); Enr_DB_RemAllUsrsFromCrs (CrsCod);
/***** Remove directories of the course *****/ /***** Remove directories of the course *****/

View File

@ -153,8 +153,7 @@ static void Enr_PutLinkToRemAllStdsThisCrs (void);
static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected); static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected);
static void Enr_RemoveEnrolmentRequest (long CrsCod,long UsrCod); static void Enr_RemUsrEnrolmentRequestInCrs (long UsrCod,long CrsCod);
static void Enr_RemoveExpiredEnrolmentRequests (void);
static void Enr_ReqRegRemUsr (Rol_Role_t Role); static void Enr_ReqRegRemUsr (Rol_Role_t Role);
static void Enr_ReqAnotherUsrIDToRegisterRemove (Rol_Role_t Role); static void Enr_ReqAnotherUsrIDToRegisterRemove (Rol_Role_t Role);
@ -296,10 +295,11 @@ void Enr_RegisterUsrInCurrentCrs (struct UsrData *UsrDat,Rol_Role_t NewRole,
} }
/***** Register user in current course in database *****/ /***** Register user in current course in database *****/
Enr_DB_InsertUsrInCurrentCrs (UsrDat->UsrCod,NewRole,KeepOrSetAccepted); Enr_DB_InsertUsrInCurrentCrs (UsrDat->UsrCod,Gbl.Hierarchy.Crs.CrsCod,
NewRole,KeepOrSetAccepted);
/***** Register last prefs in current course in database *****/ /***** Register last prefs in current course in database *****/
Set_DB_InsertUsrInCurrentCrsSettings (UsrDat->UsrCod); Set_DB_InsertUsrInCrsSettings (UsrDat->UsrCod,Gbl.Hierarchy.Crs.CrsCod);
/***** Flush caches *****/ /***** Flush caches *****/
Usr_FlushCachesUsr (); Usr_FlushCachesUsr ();
@ -344,7 +344,7 @@ static void Enr_NotifyAfterEnrolment (struct UsrData *UsrDat,Rol_Role_t NewRole)
} }
/***** Remove possible enrolment request ******/ /***** Remove possible enrolment request ******/
Enr_RemoveEnrolmentRequest (Gbl.Hierarchy.Crs.CrsCod,UsrDat->UsrCod); Enr_RemUsrEnrolmentRequestInCrs (UsrDat->UsrCod,Gbl.Hierarchy.Crs.CrsCod);
/***** Remove old enrolment notifications before inserting the new one ******/ /***** Remove old enrolment notifications before inserting the new one ******/
Ntf_MarkNotifToOneUsrAsRemoved (Ntf_EVENT_ENROLMENT_STD,-1,UsrDat->UsrCod); Ntf_MarkNotifToOneUsrAsRemoved (Ntf_EVENT_ENROLMENT_STD,-1,UsrDat->UsrCod);
@ -1917,8 +1917,8 @@ void Enr_SignUpInCrs (void)
Err_WrongRoleExit (); Err_WrongRoleExit ();
/***** Try to get and old request of the same user (me) in the current course *****/ /***** Try to get and old request of the same user (me) in the current course *****/
ReqCod = Enr_DB_GetUsrEnrolmentRequestInCrs (Gbl.Hierarchy.Crs.CrsCod, ReqCod = Enr_DB_GetUsrEnrolmentRequestInCrs (Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.Usrs.Me.UsrDat.UsrCod); Gbl.Hierarchy.Crs.CrsCod);
/***** Request user in current course in database *****/ /***** Request user in current course in database *****/
if (ReqCod > 0) // Old request exists in database if (ReqCod > 0) // Old request exists in database
@ -2024,7 +2024,8 @@ void Enr_AskIfRejectSignUp (void)
Rec_ShowSharedRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat); Rec_ShowSharedRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
/* Remove inscription request because it has not sense */ /* Remove inscription request because it has not sense */
Enr_RemoveEnrolmentRequest (Gbl.Hierarchy.Crs.CrsCod,Gbl.Usrs.Other.UsrDat.UsrCod); Enr_RemUsrEnrolmentRequestInCrs (Gbl.Usrs.Other.UsrDat.UsrCod,
Gbl.Hierarchy.Crs.CrsCod);
} }
else // User does not belong to this course else // User does not belong to this course
{ {
@ -2082,7 +2083,8 @@ void Enr_RejectSignUp (void)
} }
/* Remove inscription request */ /* Remove inscription request */
Enr_RemoveEnrolmentRequest (Gbl.Hierarchy.Crs.CrsCod,Gbl.Usrs.Other.UsrDat.UsrCod); Enr_RemUsrEnrolmentRequestInCrs (Gbl.Usrs.Other.UsrDat.UsrCod,
Gbl.Hierarchy.Crs.CrsCod);
/* Confirmation message */ /* Confirmation message */
Ale_ShowAlert (Ale_SUCCESS,Txt_Enrolment_of_X_rejected, Ale_ShowAlert (Ale_SUCCESS,Txt_Enrolment_of_X_rejected,
@ -2171,7 +2173,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
Act_Action_t NextAction; Act_Action_t NextAction;
/***** Remove expired enrolment requests *****/ /***** Remove expired enrolment requests *****/
Enr_RemoveExpiredEnrolmentRequests (); Enr_DB_RemoveExpiredEnrolmentRequests ();
/***** Get scope *****/ /***** Get scope *****/
Gbl.Scope.Allowed = 1 << HieLvl_SYS | Gbl.Scope.Allowed = 1 << HieLvl_SYS |
@ -2373,7 +2375,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
Gbl.Usrs.Me.UsrDat.UsrCod); Gbl.Usrs.Me.UsrDat.UsrCod);
} }
else // User does not exists or user already belongs to course ==> remove pair from crs_requests table else // User does not exists or user already belongs to course ==> remove pair from crs_requests table
Enr_RemoveEnrolmentRequest (Crs.CrsCod,UsrDat.UsrCod); Enr_RemUsrEnrolmentRequestInCrs (UsrDat.UsrCod,Crs.CrsCod);
} }
/* End table */ /* End table */
@ -2393,12 +2395,12 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
/********************* Remove a request for enrolment ***********************/ /********************* Remove a request for enrolment ***********************/
/*****************************************************************************/ /*****************************************************************************/
static void Enr_RemoveEnrolmentRequest (long CrsCod,long UsrCod) static void Enr_RemUsrEnrolmentRequestInCrs (long UsrCod,long CrsCod)
{ {
long ReqCod; long ReqCod;
/***** Get request code *****/ /***** Get request code *****/
ReqCod = Enr_DB_GetUsrEnrolmentRequestInCrs (CrsCod,UsrCod); ReqCod = Enr_DB_GetUsrEnrolmentRequestInCrs (UsrCod,CrsCod);
if (ReqCod > 0) if (ReqCod > 0)
{ {
@ -2411,32 +2413,6 @@ static void Enr_RemoveEnrolmentRequest (long CrsCod,long UsrCod)
} }
} }
/*****************************************************************************/
/******************* Remove expired requests for enrolment ******************/
/*****************************************************************************/
static void Enr_RemoveExpiredEnrolmentRequests (void)
{
/***** Mark possible notifications as removed
Important: do this before removing the request *****/
DB_QueryUPDATE ("can not set notification(s) as removed",
"UPDATE ntf_notifications,"
"crs_requests"
" SET ntf_notifications.Status=(ntf_notifications.Status | %u)"
" WHERE ntf_notifications.NotifyEvent=%u"
" AND ntf_notifications.Cod=crs_requests.ReqCod"
" AND crs_requests.RequestTime<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)",
(unsigned) Ntf_STATUS_BIT_REMOVED,
(unsigned) Ntf_EVENT_ENROLMENT_REQUEST,
Cfg_TIME_TO_DELETE_ENROLMENT_REQUESTS);
/***** Remove expired requests for enrolment *****/
DB_QueryDELETE ("can not remove expired requests for enrolment",
"DELETE LOW_PRIORITY FROM crs_requests"
" WHERE RequestTime<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)",
Cfg_TIME_TO_DELETE_ENROLMENT_REQUESTS);
}
/*****************************************************************************/ /*****************************************************************************/
/********************** Write a form to admin one user ***********************/ /********************** Write a form to admin one user ***********************/
/*****************************************************************************/ /*****************************************************************************/
@ -2821,14 +2797,7 @@ static void Enr_RegisterAdmin (struct UsrData *UsrDat,HieLvl_Level_t Scope,long
else // User was not administrator of current institution/center/degree else // User was not administrator of current institution/center/degree
{ {
/***** Insert or replace administrator in current institution/center/degree *****/ /***** Insert or replace administrator in current institution/center/degree *****/
DB_QueryREPLACE ("can not create administrator", Enr_DB_InsertAdmin (UsrDat->UsrCod,Scope,Cod);
"REPLACE INTO usr_admins"
" (UsrCod,Scope,Cod)"
" VALUES"
" (%ld,'%s',%ld)",
UsrDat->UsrCod,
Sco_GetDBStrFromScope (Scope),
Cod);
Ale_ShowAlert (Ale_SUCCESS,Txt_THE_USER_X_has_been_enroled_as_administrator_of_Y, Ale_ShowAlert (Ale_SUCCESS,Txt_THE_USER_X_has_been_enroled_as_administrator_of_Y,
UsrDat->FullName,InsCtrDegName); UsrDat->FullName,InsCtrDegName);
@ -3102,7 +3071,7 @@ void Enr_AcceptRegisterMeInCrs (void)
extern const char *Txt_You_have_confirmed_your_enrolment_in_the_course_X; extern const char *Txt_You_have_confirmed_your_enrolment_in_the_course_X;
/***** Confirm my enrolment *****/ /***** Confirm my enrolment *****/
Enr_DB_AcceptUsrInCrs (Gbl.Usrs.Me.UsrDat.UsrCod); Enr_DB_AcceptUsrInCrs (Gbl.Usrs.Me.UsrDat.UsrCod,Gbl.Hierarchy.Crs.CrsCod);
/***** Mark all notifications about enrolment (as student or as teacher) /***** Mark all notifications about enrolment (as student or as teacher)
in current course as removed *****/ in current course as removed *****/
@ -3546,18 +3515,8 @@ static void Enr_EffectivelyRemUsrFromCrs (struct UsrData *UsrDat,
Ntf_MarkNotifInCrsAsRemoved (UsrDat->UsrCod,Crs->CrsCod); Ntf_MarkNotifInCrsAsRemoved (UsrDat->UsrCod,Crs->CrsCod);
/***** Remove user from the tables of courses-users *****/ /***** Remove user from the tables of courses-users *****/
DB_QueryDELETE ("can not remove a user from a course", Set_DB_RemUsrFromCrsSettings (UsrDat->UsrCod,Crs->CrsCod);
"DELETE FROM crs_user_settings" Enr_DB_RemUsrFromCrs (UsrDat->UsrCod,Crs->CrsCod);
" WHERE UsrCod=%ld"
" AND CrsCod=%ld",
UsrDat->UsrCod,
Crs->CrsCod);
DB_QueryDELETE ("can not remove a user from a course",
"DELETE FROM crs_users"
" WHERE CrsCod=%ld"
" AND UsrCod=%ld",
Crs->CrsCod,
UsrDat->UsrCod);
/***** Flush caches *****/ /***** Flush caches *****/
Usr_FlushCachesUsr (); Usr_FlushCachesUsr ();

View File

@ -84,7 +84,7 @@ extern struct Globals Gbl;
/*************** Register user in current course in database *****************/ /*************** Register user in current course in database *****************/
/*****************************************************************************/ /*****************************************************************************/
void Enr_DB_InsertUsrInCurrentCrs (long UsrCod,Rol_Role_t NewRole, void Enr_DB_InsertUsrInCurrentCrs (long UsrCod,long CrsCod,Rol_Role_t NewRole,
Enr_KeepOrSetAccepted_t KeepOrSetAccepted) Enr_KeepOrSetAccepted_t KeepOrSetAccepted)
{ {
DB_QueryINSERT ("can not register user in course", DB_QueryINSERT ("can not register user in course",
@ -92,38 +92,18 @@ void Enr_DB_InsertUsrInCurrentCrs (long UsrCod,Rol_Role_t NewRole,
" (CrsCod,UsrCod,Role,Accepted)" " (CrsCod,UsrCod,Role,Accepted)"
" VALUES" " VALUES"
" (%ld,%ld,%u,'%c')", " (%ld,%ld,%u,'%c')",
Gbl.Hierarchy.Crs.CrsCod, CrsCod,
UsrCod, UsrCod,
(unsigned) NewRole, (unsigned) NewRole,
KeepOrSetAccepted == Enr_SET_ACCEPTED_TO_TRUE ? 'Y' : KeepOrSetAccepted == Enr_SET_ACCEPTED_TO_TRUE ? 'Y' :
'N'); 'N');
} }
/*****************************************************************************/
/**************** Update institution, center and department ******************/
/*****************************************************************************/
void Enr_DB_UpdateInstitutionCenterDepartment (void)
{
DB_QueryUPDATE ("can not update institution, center and department",
"UPDATE usr_data"
" SET InsCtyCod=%ld,"
"InsCod=%ld,"
"CtrCod=%ld,"
"DptCod=%ld"
" WHERE UsrCod=%ld",
Gbl.Usrs.Me.UsrDat.InsCtyCod,
Gbl.Usrs.Me.UsrDat.InsCod,
Gbl.Usrs.Me.UsrDat.Tch.CtrCod,
Gbl.Usrs.Me.UsrDat.Tch.DptCod,
Gbl.Usrs.Me.UsrDat.UsrCod);
}
/*****************************************************************************/ /*****************************************************************************/
/********* Set a user's acceptation to true in the current course ************/ /********* Set a user's acceptation to true in the current course ************/
/*****************************************************************************/ /*****************************************************************************/
void Enr_DB_AcceptUsrInCrs (long UsrCod) void Enr_DB_AcceptUsrInCrs (long UsrCod,long CrsCod)
{ {
/***** Set enrolment of a user to "accepted" in the current course *****/ /***** Set enrolment of a user to "accepted" in the current course *****/
DB_QueryUPDATE ("can not confirm user's enrolment", DB_QueryUPDATE ("can not confirm user's enrolment",
@ -131,10 +111,48 @@ void Enr_DB_AcceptUsrInCrs (long UsrCod)
" SET Accepted='Y'" " SET Accepted='Y'"
" WHERE CrsCod=%ld" " WHERE CrsCod=%ld"
" AND UsrCod=%ld", " AND UsrCod=%ld",
Gbl.Hierarchy.Crs.CrsCod, CrsCod,
UsrCod); UsrCod);
} }
/*****************************************************************************/
/************************** Remove user from course **************************/
/*****************************************************************************/
void Enr_DB_RemUsrFromCrs (long UsrCod,long CrsCod)
{
DB_QueryDELETE ("can not remove a user from a course",
"DELETE FROM crs_users"
" WHERE CrsCod=%ld"
" AND UsrCod=%ld",
CrsCod,
UsrCod);
}
/*****************************************************************************/
/************************ Remove a user from a course ************************/
/*****************************************************************************/
void Enr_DB_RemUsrFromAllCrss (long UsrCod)
{
DB_QueryDELETE ("can not remove a user from all courses",
"DELETE FROM crs_users"
" WHERE UsrCod=%ld",
UsrCod);
}
/*****************************************************************************/
/*************** Remove all users from settings in a course ******************/
/*****************************************************************************/
void Enr_DB_RemAllUsrsFromCrs (long CrsCod)
{
DB_QueryDELETE ("can not remove users from a course",
"DELETE FROM crs_users"
" WHERE CrsCod=%ld",
CrsCod);
}
/*****************************************************************************/ /*****************************************************************************/
/********* Set a user's acceptation to true in the current course ************/ /********* Set a user's acceptation to true in the current course ************/
/*****************************************************************************/ /*****************************************************************************/
@ -688,7 +706,7 @@ unsigned Enr_DB_GetEnrolmentRequestByCod (MYSQL_RES **mysql_res,long ReqCod)
/********** Try to get an enrolment request from a user in a course **********/ /********** Try to get an enrolment request from a user in a course **********/
/*****************************************************************************/ /*****************************************************************************/
long Enr_DB_GetUsrEnrolmentRequestInCrs (long CrsCod,long UsrCod) long Enr_DB_GetUsrEnrolmentRequestInCrs (long UsrCod,long CrsCod)
{ {
return return
DB_QuerySELECTCode ("can not get enrolment request", DB_QuerySELECTCode ("can not get enrolment request",
@ -773,39 +791,61 @@ void Enr_DB_RemUsrRequests (long UsrCod)
} }
/*****************************************************************************/ /*****************************************************************************/
/*************** Remove all users from settings in a course ******************/ /******************* Remove expired requests for enrolment ******************/
/*****************************************************************************/ /*****************************************************************************/
void Enr_DB_RemAllUsrsFromCrsSettings (long CrsCod) void Enr_DB_RemoveExpiredEnrolmentRequests (void)
{ {
DB_QueryDELETE ("can not remove users from a course settings", /***** Mark possible notifications as removed
"DELETE FROM crs_user_settings" Important: do this before removing the request *****/
" WHERE CrsCod=%ld", DB_QueryUPDATE ("can not set notification(s) as removed",
CrsCod); "UPDATE ntf_notifications,"
"crs_requests"
" SET ntf_notifications.Status=(ntf_notifications.Status | %u)"
" WHERE ntf_notifications.NotifyEvent=%u"
" AND ntf_notifications.Cod=crs_requests.ReqCod"
" AND crs_requests.RequestTime<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)",
(unsigned) Ntf_STATUS_BIT_REMOVED,
(unsigned) Ntf_EVENT_ENROLMENT_REQUEST,
Cfg_TIME_TO_DELETE_ENROLMENT_REQUESTS);
/***** Remove expired requests for enrolment *****/
DB_QueryDELETE ("can not remove expired requests for enrolment",
"DELETE LOW_PRIORITY FROM crs_requests"
" WHERE RequestTime<FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)",
Cfg_TIME_TO_DELETE_ENROLMENT_REQUESTS);
} }
/*****************************************************************************/ /*****************************************************************************/
/*************** Remove all users from settings in a course ******************/ /** Insert/replace user as administrator of an institution, center or degree */
/*****************************************************************************/ /*****************************************************************************/
void Enr_DB_RemAllUsrsFromCrs (long CrsCod) void Enr_DB_InsertAdmin (long UsrCod,HieLvl_Level_t Scope,long Cod)
{ {
DB_QueryDELETE ("can not remove users from a course", DB_QueryREPLACE ("can not create administrator",
"DELETE FROM crs_users" "REPLACE INTO usr_admins"
" WHERE CrsCod=%ld", " (UsrCod,Scope,Cod)"
CrsCod); " VALUES"
" (%ld,'%s',%ld)",
UsrCod,
Sco_GetDBStrFromScope (Scope),
Cod);
} }
/*****************************************************************************/ /*****************************************************************************/
/************************ Remove a user from a course ************************/ /***** Remove user as administrator of an institution, center or degree ******/
/*****************************************************************************/ /*****************************************************************************/
void Enr_DB_RemUsrFromAllCrss (long UsrCod) void Enr_DB_RemAdmin (long UsrCod,HieLvl_Level_t Scope,long Cod)
{ {
DB_QueryDELETE ("can not remove a user from all courses", DB_QueryDELETE ("can not remove an administrator",
"DELETE FROM crs_users" "DELETE FROM usr_admins"
" WHERE UsrCod=%ld", " WHERE UsrCod=%ld"
UsrCod); " AND Scope='%s'"
" AND Cod=%ld",
UsrCod,
Sco_GetDBStrFromScope (Scope),
Cod);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -833,19 +873,3 @@ void Enr_DB_RemAdmins (HieLvl_Level_t Scope,long Cod)
Sco_GetDBStrFromScope (Scope), Sco_GetDBStrFromScope (Scope),
Cod); Cod);
} }
/*****************************************************************************/
/***** Remove user as administrator of an institution, center or degree ******/
/*****************************************************************************/
void Enr_DB_RemAdmin (long UsrCod,HieLvl_Level_t Scope,long Cod)
{
DB_QueryDELETE ("can not remove an administrator",
"DELETE FROM usr_admins"
" WHERE UsrCod=%ld"
" AND Scope='%s'"
" AND Cod=%ld",
UsrCod,
Sco_GetDBStrFromScope (Scope),
Cod);
}

View File

@ -45,28 +45,26 @@
/****************************** Public prototypes ****************************/ /****************************** Public prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
void Enr_DB_InsertUsrInCurrentCrs (long UsrCod,Rol_Role_t NewRole, void Enr_DB_InsertUsrInCurrentCrs (long UsrCod,long CrsCod,Rol_Role_t NewRole,
Enr_KeepOrSetAccepted_t KeepOrSetAccepted); Enr_KeepOrSetAccepted_t KeepOrSetAccepted);
void Enr_DB_AcceptUsrInCrs (long UsrCod,long CrsCod);
void Enr_DB_UpdateInstitutionCenterDepartment (void); void Enr_DB_RemUsrFromCrs (long UsrCod,long CrsCod);
void Enr_DB_RemUsrFromAllCrss (long UsrCod);
void Enr_DB_AcceptUsrInCrs (long UsrCod); void Enr_DB_RemAllUsrsFromCrs (long CrsCod);
unsigned Enr_DB_GetEnrolmentRequests (MYSQL_RES **mysql_res,unsigned RolesSelected); unsigned Enr_DB_GetEnrolmentRequests (MYSQL_RES **mysql_res,unsigned RolesSelected);
unsigned Enr_DB_GetEnrolmentRequestByCod (MYSQL_RES **mysql_res,long ReqCod); unsigned Enr_DB_GetEnrolmentRequestByCod (MYSQL_RES **mysql_res,long ReqCod);
long Enr_DB_GetUsrEnrolmentRequestInCrs (long CrsCod,long UsrCod); long Enr_DB_GetUsrEnrolmentRequestInCrs (long UsrCod,long CrsCod);
long Enr_DB_CreateMyEnrolmentRequestInCurrentCrs (Rol_Role_t NewRole); long Enr_DB_CreateMyEnrolmentRequestInCurrentCrs (Rol_Role_t NewRole);
void Enr_DB_UpdateMyEnrolmentRequestInCurrentCrs (long ReqCod,Rol_Role_t NewRole); void Enr_DB_UpdateMyEnrolmentRequestInCurrentCrs (long ReqCod,Rol_Role_t NewRole);
void Enr_DB_RemRequest (long ReqCod); void Enr_DB_RemRequest (long ReqCod);
void Enr_DB_RemCrsRequests (long CrsCod); void Enr_DB_RemCrsRequests (long CrsCod);
void Enr_DB_RemUsrRequests (long UsrCod); void Enr_DB_RemUsrRequests (long UsrCod);
void Enr_DB_RemoveExpiredEnrolmentRequests (void);
void Enr_DB_RemAllUsrsFromCrsSettings (long CrsCod); void Enr_DB_InsertAdmin (long UsrCod,HieLvl_Level_t Scope,long Cod);
void Enr_DB_RemAllUsrsFromCrs (long CrsCod); void Enr_DB_RemAdmin (long UsrCod,HieLvl_Level_t Scope,long Cod);
void Enr_DB_RemUsrFromAllCrss (long UsrCod);
void Enr_DB_RemUsrAsAdmin (long UsrCod); void Enr_DB_RemUsrAsAdmin (long UsrCod);
void Enr_DB_RemAdmins (HieLvl_Level_t Scope,long Cod); void Enr_DB_RemAdmins (HieLvl_Level_t Scope,long Cod);
void Enr_DB_RemAdmin (long UsrCod,HieLvl_Level_t Scope,long Cod);
#endif #endif

View File

@ -33,6 +33,7 @@
#include <string.h> #include <string.h>
#include "swad_account.h" #include "swad_account.h"
#include "swad_account_database.h"
#include "swad_action.h" #include "swad_action.h"
#include "swad_box.h" #include "swad_box.h"
#include "swad_config.h" #include "swad_config.h"
@ -4088,7 +4089,7 @@ void Rec_ChgCountryOfMyInstitution (void)
} }
/***** Update institution, center and department *****/ /***** Update institution, center and department *****/
Enr_DB_UpdateInstitutionCenterDepartment (); Acc_DB_UpdateMyInstitutionCenterDepartment ();
/***** Show form again *****/ /***** Show form again *****/
Rec_ShowMySharedRecordAndMore (); Rec_ShowMySharedRecordAndMore ();
@ -4126,7 +4127,7 @@ void Rec_UpdateMyInstitution (void)
Gbl.Usrs.Me.UsrDat.Tch.DptCod = (NumDpts ? -1L : 0); Gbl.Usrs.Me.UsrDat.Tch.DptCod = (NumDpts ? -1L : 0);
/***** Update institution, center and department *****/ /***** Update institution, center and department *****/
Enr_DB_UpdateInstitutionCenterDepartment (); Acc_DB_UpdateMyInstitutionCenterDepartment ();
/***** Show form again *****/ /***** Show form again *****/
Rec_ShowMySharedRecordAndMore (); Rec_ShowMySharedRecordAndMore ();
@ -4159,7 +4160,7 @@ void Rec_UpdateMyCenter (void)
Gbl.Usrs.Me.UsrDat.Tch.CtrCod = Ctr.CtrCod; Gbl.Usrs.Me.UsrDat.Tch.CtrCod = Ctr.CtrCod;
/***** Update institution, center and department *****/ /***** Update institution, center and department *****/
Enr_DB_UpdateInstitutionCenterDepartment (); Acc_DB_UpdateMyInstitutionCenterDepartment ();
/***** Show form again *****/ /***** Show form again *****/
Rec_ShowMySharedRecordAndMore (); Rec_ShowMySharedRecordAndMore ();
@ -4190,7 +4191,7 @@ void Rec_UpdateMyDepartment (void)
/***** Update institution, center and department *****/ /***** Update institution, center and department *****/
Gbl.Usrs.Me.UsrDat.Tch.DptCod = Dpt.DptCod; Gbl.Usrs.Me.UsrDat.Tch.DptCod = Dpt.DptCod;
Enr_DB_UpdateInstitutionCenterDepartment (); Acc_DB_UpdateMyInstitutionCenterDepartment ();
/***** Show form again *****/ /***** Show form again *****/
Rec_ShowMySharedRecordAndMore (); Rec_ShowMySharedRecordAndMore ();

View File

@ -404,7 +404,7 @@ void Set_EndOneSettingSelector (void)
/************ Register last prefs in current course in database **************/ /************ Register last prefs in current course in database **************/
/*****************************************************************************/ /*****************************************************************************/
void Set_DB_InsertUsrInCurrentCrsSettings (long UsrCod) void Set_DB_InsertUsrInCrsSettings (long UsrCod,long CrsCod)
{ {
extern const char *Usr_StringsUsrListTypeInDB[Usr_NUM_USR_LIST_TYPES]; extern const char *Usr_StringsUsrListTypeInDB[Usr_NUM_USR_LIST_TYPES];
@ -420,7 +420,7 @@ void Set_DB_InsertUsrInCurrentCrsSettings (long UsrCod)
"0,FROM_UNIXTIME(%ld),0," "0,FROM_UNIXTIME(%ld),0,"
"'%s',%u,'%c')", "'%s',%u,'%c')",
UsrCod, UsrCod,
Gbl.Hierarchy.Crs.CrsCod, CrsCod,
(long) (time_t) 0, // The user never accessed to tests in this course (long) (time_t) 0, // The user never accessed to tests in this course
Usr_StringsUsrListTypeInDB[Usr_SHOW_USRS_TYPE_DEFAULT], Usr_StringsUsrListTypeInDB[Usr_SHOW_USRS_TYPE_DEFAULT],
Usr_CLASS_PHOTO_COLS_DEF, Usr_CLASS_PHOTO_COLS_DEF,
@ -429,13 +429,40 @@ void Set_DB_InsertUsrInCurrentCrsSettings (long UsrCod)
} }
/*****************************************************************************/ /*****************************************************************************/
/******************** Remove a user from course settings *********************/ /****************** Remove a user from a courses setting *********************/
/*****************************************************************************/ /*****************************************************************************/
void Set_DB_RemCrsUsrSettings (long UsrCod) void Set_DB_RemUsrFromCrsSettings (long UsrCod,long CrsCod)
{
DB_QueryDELETE ("can not remove a user from a course",
"DELETE FROM crs_user_settings"
" WHERE UsrCod=%ld"
" AND CrsCod=%ld",
UsrCod,
CrsCod);
}
/*****************************************************************************/
/***************** Remove a user from all courses settings *******************/
/*****************************************************************************/
void Set_DB_RemUsrFromAllCrssSettings (long UsrCod)
{ {
DB_QueryDELETE ("can not remove a user from all courses", DB_QueryDELETE ("can not remove a user from all courses",
"DELETE FROM crs_user_settings" "DELETE FROM crs_user_settings"
" WHERE UsrCod=%ld", " WHERE UsrCod=%ld",
UsrCod); UsrCod);
} }
/*****************************************************************************/
/*************** Remove all users from settings in a course ******************/
/*****************************************************************************/
void Set_DB_RemAllUsrsFromCrsSettings (long CrsCod)
{
DB_QueryDELETE ("can not remove users from a course settings",
"DELETE FROM crs_user_settings"
" WHERE CrsCod=%ld",
CrsCod);
}

View File

@ -58,7 +58,9 @@ void Set_EndSettingsHead (void);
void Set_BeginOneSettingSelector (void); void Set_BeginOneSettingSelector (void);
void Set_EndOneSettingSelector (void); void Set_EndOneSettingSelector (void);
void Set_DB_InsertUsrInCurrentCrsSettings (long UsrCod); void Set_DB_InsertUsrInCrsSettings (long UsrCod,long CrsCod);
void Set_DB_RemCrsUsrSettings (long UsrCod); void Set_DB_RemUsrFromCrsSettings (long UsrCod,long CrsCod);
void Set_DB_RemUsrFromAllCrssSettings (long UsrCod);
void Set_DB_RemAllUsrsFromCrsSettings (long CrsCod);
#endif #endif