From 6b452071676d47171696d94630fb3e3ebabd5249 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Sun, 4 Jun 2017 15:11:41 +0200 Subject: [PATCH] Version 16.234 --- swad_account.c | 6 +- swad_action.c | 6 +- swad_changelog.h | 8 +-- swad_enrolment.c | 140 ++++++++++++++++++++++--------------- swad_enrolment.h | 3 +- swad_file_browser.c | 24 +------ swad_file_browser.h | 4 +- swad_group.c | 22 +----- swad_group.h | 4 +- swad_record.c | 18 +---- swad_record.h | 4 +- swad_role.c | 6 +- swad_text.c | 165 -------------------------------------------- 13 files changed, 112 insertions(+), 298 deletions(-) diff --git a/swad_account.c b/swad_account.c index d3878d5e7..bf9ec4233 100644 --- a/swad_account.c +++ b/swad_account.c @@ -980,16 +980,16 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat, bool PhotoRemoved = false; /***** Remove the works zones of the user in all courses *****/ - Brw_RemoveUsrWorksInAllCrss (UsrDat,QuietOrVerbose); // Make this before of removing the user from the courses + Brw_RemoveUsrWorksInAllCrss (UsrDat); // Make this before of removing the user from the courses /***** Remove the fields of course record in all courses *****/ - Rec_RemoveFieldsCrsRecordAll (UsrDat->UsrCod,QuietOrVerbose); + Rec_RemoveFieldsCrsRecordAll (UsrDat->UsrCod); /***** Remove user from all the attendance events *****/ Att_RemoveUsrFromAllAttEvents (UsrDat->UsrCod); /***** Remove user from all the groups of all courses *****/ - Grp_RemUsrFromAllGrps (UsrDat,QuietOrVerbose); + Grp_RemUsrFromAllGrps (UsrDat); /***** Remove user's requests for inscription *****/ sprintf (Query,"DELETE FROM crs_usr_requests WHERE UsrCod=%ld", diff --git a/swad_action.c b/swad_action.c index 88e6b2935..1a09409d4 100644 --- a/swad_action.c +++ b/swad_action.c @@ -2599,9 +2599,9 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActNewMaiStd */{1482,-1,TabUnk,ActLstStd ,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Mai_NewOtherUsrEmail ,NULL}, /* ActNewMaiTch */{1483,-1,TabUnk,ActLstTch ,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Mai_NewOtherUsrEmail ,NULL}, - /* ActRemStdCrs */{1462,-1,TabUnk,ActLstStd ,0x3F8,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Enr_RemUsrFromCrs ,NULL}, - /* ActRemNETCrs */{1647,-1,TabUnk,ActLstTch ,0x3F0,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Enr_RemUsrFromCrs ,NULL}, - /* ActRemTchCrs */{1463,-1,TabUnk,ActLstTch ,0x3E0,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Enr_RemUsrFromCrs ,NULL}, + /* ActRemStdCrs */{1462,-1,TabUnk,ActLstStd ,0x3F8,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,Enr_RemUsrFromCrs1 ,Enr_RemUsrFromCrs2 ,NULL}, + /* ActRemNETCrs */{1647,-1,TabUnk,ActLstTch ,0x3F0,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,Enr_RemUsrFromCrs1 ,Enr_RemUsrFromCrs2 ,NULL}, + /* ActRemTchCrs */{1463,-1,TabUnk,ActLstTch ,0x3E0,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,Enr_RemUsrFromCrs1 ,Enr_RemUsrFromCrs2 ,NULL}, /* ActRemUsrGbl */{ 62,-1,TabUnk,ActLstOth ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Acc_GetUsrCodAndRemUsrGbl ,NULL}, diff --git a/swad_changelog.h b/swad_changelog.h index 5b94f83cb..51bdb8599 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -232,22 +232,20 @@ // TODO: Fix bug: soy profesor no editor y superusuario. Si me modifico en la asignatura, me borro sin querer de los grupos, ya que no me deja elegir grupos. // TODO: Fix bug: no llegan notificaciones de inscripción como profesor no editor. -// TODO: Fix bug: un profesor no editor no debería poder cambiarse a profesor. - -// TODO: When a user (student) is removed from a course, remove him in a priori function (check that he can not view Students option) -// TODO: When the role of a user is modified in a course, modify him in a priori function (check that he can not view Students option) /*****************************************************************************/ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.233 (2017-06-03)" +#define Log_PLATFORM_VERSION "SWAD 16.234 (2017-06-03)" #define CSS_FILE "swad16.226.css" #define JS_FILE "swad16.206.3.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.234: Jun 04, 2017 Removed some verbose messages when removing a user. + Modification / removing of a user is performed in an a priori function. (220995 lines) Version 16.233: Jun 04, 2017 Code refactoring related with roles. (221175 lines) Version 16.232.8: Jun 03, 2017 Fix bug (an URL like https://openswad.org/es?a gived Internal Server Error). (221147 lines) Version 16.232.7: Jun 03, 2017 Changed contextual links in institutional links and banners. (221148 lines) diff --git a/swad_enrolment.c b/swad_enrolment.c index 5b3b2bbe9..64ddeb947 100644 --- a/swad_enrolment.c +++ b/swad_enrolment.c @@ -137,13 +137,15 @@ static void Enr_ShowFormToEditOtherUsr (void); static void Enr_AddAdm (Sco_Scope_t Scope,long Cod,const char *InsCtrDegName); static void Enr_RegisterAdmin (struct UsrData *UsrDat,Sco_Scope_t Scope, long Cod,const char *InsCtrDegName); -static void Enr_ReqRemOrRemUsrFromCrs (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr); + +static bool Enr_CheckIfICanRemUsrFromCrs (void); + static void Enr_ReqRemAdmOfDeg (void); static void Enr_ReqRemOrRemAdm (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr,Sco_Scope_t Scope, long Cod,const char *InsCtrDegName); static void Enr_ReqAddAdm (Sco_Scope_t Scope,long Cod,const char *InsCtrDegName); -static void Enr_AskIfRemoveUsrFromCrs (struct UsrData *UsrDat,bool ItsMe); +static void Enr_AskIfRemoveUsrFromCrs (struct UsrData *UsrDat); static void Enr_EffectivelyRemUsrFromCrs (struct UsrData *UsrDat,struct Course *Crs, Enr_RemoveUsrWorks_t RemoveUsrWorks,Cns_QuietOrVerbose_t QuietOrVerbose); @@ -3438,7 +3440,7 @@ static void Enr_RegisterAdmin (struct UsrData *UsrDat,Sco_Scope_t Scope,long Cod void Enr_ReqRemMeFromCrs (void) { - Enr_AskIfRemoveUsrFromCrs (&Gbl.Usrs.Me.UsrDat,true); + Enr_AskIfRemoveUsrFromCrs (&Gbl.Usrs.Me.UsrDat); } /*****************************************************************************/ @@ -3447,69 +3449,81 @@ void Enr_ReqRemMeFromCrs (void) void Enr_ReqRemUsrFromCrs (void) { - Enr_ReqRemOrRemUsrFromCrs (Enr_REQUEST_REMOVE_USR); + extern const char *Txt_User_not_found_or_you_do_not_have_permission_; + + /***** Get user to be removed *****/ + if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ()) + { + if (Enr_CheckIfICanRemUsrFromCrs ()) + Enr_AskIfRemoveUsrFromCrs (&Gbl.Usrs.Other.UsrDat); + else + Ale_ShowAlert (Ale_WARNING,Txt_User_not_found_or_you_do_not_have_permission_); + } + else + Ale_ShowAlert (Ale_WARNING,Txt_User_not_found_or_you_do_not_have_permission_); } /*****************************************************************************/ /********************* Remove a user from current course *********************/ /*****************************************************************************/ -void Enr_RemUsrFromCrs (void) +void Enr_RemUsrFromCrs1 (void) { + extern const char *Txt_User_not_found_or_you_do_not_have_permission_; + if (Pwd_GetConfirmationOnDangerousAction ()) - Enr_ReqRemOrRemUsrFromCrs (Enr_REMOVE_USR); + { + /***** Get user to be removed *****/ + if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ()) + { + if (Enr_CheckIfICanRemUsrFromCrs ()) + Enr_EffectivelyRemUsrFromCrs (&Gbl.Usrs.Other.UsrDat,&Gbl.CurrentCrs.Crs, + Enr_REMOVE_WORKS,Cns_VERBOSE); + else + { + Gbl.Alert.Type = Ale_WARNING; + sprintf (Gbl.Alert.Txt,"%s",Txt_User_not_found_or_you_do_not_have_permission_); + } + } + else + { + Gbl.Alert.Type = Ale_WARNING; + sprintf (Gbl.Alert.Txt,"%s",Txt_User_not_found_or_you_do_not_have_permission_); + } + } + } + +void Enr_RemUsrFromCrs2 (void) + { + Ale_ShowAlert (Gbl.Alert.Type,Gbl.Alert.Txt); } /*****************************************************************************/ -/******************** Remove of a user from current course *******************/ +/*********** Check if I can remove another user in current course ************/ /*****************************************************************************/ -static void Enr_ReqRemOrRemUsrFromCrs (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr) +static bool Enr_CheckIfICanRemUsrFromCrs (void) { - extern const char *Txt_User_not_found_or_you_do_not_have_permission_; - bool ItsMe; - bool ICanRemove; + /* Check if it's forbidden remove that user */ + // A teacher can remove a student or himself + // An administrator can remove anyone - /***** Get user to be removed *****/ - if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ()) + switch (Gbl.Usrs.Me.Roles.LoggedRole) { - /* Check if it's forbidden remove that user */ - // A teacher can remove a student or himself - // An administrator can remove anyone - ItsMe = (Gbl.Usrs.Me.UsrDat.UsrCod == Gbl.Usrs.Other.UsrDat.UsrCod); - switch (Gbl.Usrs.Me.Roles.LoggedRole) - { - case Rol_STD: - case Rol_NET: - ICanRemove = ItsMe; - break; - case Rol_TCH: - case Rol_DEG_ADM: - case Rol_CTR_ADM: - case Rol_INS_ADM: - case Rol_SYS_ADM: - ICanRemove = true; - break; - default: - ICanRemove = false; - break; - } - if (ICanRemove) - switch (ReqDelOrDelUsr) - { - case Enr_REQUEST_REMOVE_USR: // Ask if remove user from current course - Enr_AskIfRemoveUsrFromCrs (&Gbl.Usrs.Other.UsrDat,ItsMe); - break; - case Enr_REMOVE_USR: // Remove user from current course - Enr_EffectivelyRemUsrFromCrs (&Gbl.Usrs.Other.UsrDat,&Gbl.CurrentCrs.Crs, - Enr_REMOVE_WORKS,Cns_VERBOSE); - break; - } - else - Ale_ShowAlert (Ale_WARNING,Txt_User_not_found_or_you_do_not_have_permission_); + case Rol_STD: + case Rol_NET: + return (Gbl.Usrs.Me.UsrDat.UsrCod == Gbl.Usrs.Other.UsrDat.UsrCod); // It's me? + case Rol_TCH: + case Rol_DEG_ADM: + case Rol_CTR_ADM: + case Rol_INS_ADM: + case Rol_SYS_ADM: + return true; + break; + default: + return false; + break; } - else - Ale_ShowAlert (Ale_WARNING,Txt_User_not_found_or_you_do_not_have_permission_); } /*****************************************************************************/ @@ -4069,19 +4083,22 @@ void Enr_AcceptUsrInCrs (long UsrCod) /******************* Ask if really wanted to remove a user *******************/ /*****************************************************************************/ -static void Enr_AskIfRemoveUsrFromCrs (struct UsrData *UsrDat,bool ItsMe) +static void Enr_AskIfRemoveUsrFromCrs (struct UsrData *UsrDat) { extern const char *Txt_Do_you_really_want_to_be_removed_from_the_course_X; extern const char *Txt_Do_you_really_want_to_remove_the_following_user_from_the_course_X; extern const char *Txt_Remove_me_from_this_course; extern const char *Txt_Remove_user_from_this_course; extern const char *Txt_User_not_found_or_you_do_not_have_permission_; + bool ItsMe; Act_Action_t NextAction; if (Usr_CheckIfUsrBelongsToCrs (UsrDat->UsrCod, Gbl.CurrentCrs.Crs.CrsCod, false)) { + ItsMe = (Gbl.Usrs.Me.UsrDat.UsrCod == Gbl.Usrs.Other.UsrDat.UsrCod); + /***** Show question and button to remove user as administrator *****/ /* Start alert */ sprintf (Gbl.Alert.Txt, @@ -4134,6 +4151,7 @@ static void Enr_EffectivelyRemUsrFromCrs (struct UsrData *UsrDat,struct Course * extern const char *Txt_THE_USER_X_has_been_removed_from_the_course_Y; extern const char *Txt_User_not_found_or_you_do_not_have_permission_; char Query[1024]; + bool ItsMe; if (Usr_CheckIfUsrBelongsToCrs (UsrDat->UsrCod, Crs->CrsCod, @@ -4143,17 +4161,17 @@ static void Enr_EffectivelyRemUsrFromCrs (struct UsrData *UsrDat,struct Course * Att_RemoveUsrFromCrsAttEvents (UsrDat->UsrCod,Crs->CrsCod); /***** Remove user from all the groups in course *****/ - Grp_RemUsrFromAllGrpsInCrs (UsrDat,Crs,QuietOrVerbose); + Grp_RemUsrFromAllGrpsInCrs (UsrDat,Crs); /***** Remove user's status about reading of course information *****/ Inf_RemoveUsrFromCrsInfoRead (UsrDat->UsrCod,Crs->CrsCod); /***** Remove works zone of this user in course *****/ if (RemoveUsrWorks == Enr_REMOVE_WORKS) - Brw_RemoveUsrWorksInCrs (UsrDat,Crs,QuietOrVerbose); + Brw_RemoveUsrWorksInCrs (UsrDat,Crs); /***** Remove fields of this user in its course record *****/ - Rec_RemoveFieldsCrsRecordInCrs (UsrDat->UsrCod,Crs,QuietOrVerbose); + Rec_RemoveFieldsCrsRecordInCrs (UsrDat->UsrCod,Crs); /***** Remove some information about files in course and groups *****/ Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (UsrDat->UsrCod,Crs->CrsCod); @@ -4171,16 +4189,28 @@ static void Enr_EffectivelyRemUsrFromCrs (struct UsrData *UsrDat,struct Course * Crs->CrsCod,UsrDat->UsrCod); DB_QueryDELETE (Query,"can not remove a user from a course"); + /***** If it's me, change my roles *****/ + ItsMe = (UsrDat->UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod); + if (ItsMe) + { + Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrsDB = UsrDat->Roles.InCurrentCrsDB = Rol_UNK; + Gbl.Usrs.Me.UsrDat.Roles.InCrss = UsrDat->Roles.InCrss = -1; // not yet filled/calculated + Rol_SetMyRoles (); + } + if (QuietOrVerbose == Cns_VERBOSE) { + Gbl.Alert.Type = Ale_SUCCESS; sprintf (Gbl.Alert.Txt,Txt_THE_USER_X_has_been_removed_from_the_course_Y, UsrDat->FullName,Crs->FullName); - Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt); } } else // User does not belong to course if (QuietOrVerbose == Cns_VERBOSE) - Ale_ShowAlert (Ale_WARNING,Txt_User_not_found_or_you_do_not_have_permission_); + { + Gbl.Alert.Type = Ale_WARNING; + sprintf (Gbl.Alert.Txt,"%s",Txt_User_not_found_or_you_do_not_have_permission_); + } } /*****************************************************************************/ diff --git a/swad_enrolment.h b/swad_enrolment.h index be6bdfc58..f739ed4d1 100644 --- a/swad_enrolment.h +++ b/swad_enrolment.h @@ -130,7 +130,8 @@ void Enr_AddAdmToDeg (void); void Enr_ReqRemMeFromCrs (void); void Enr_ReqRemUsrFromCrs (void); -void Enr_RemUsrFromCrs (void); +void Enr_RemUsrFromCrs1 (void); +void Enr_RemUsrFromCrs2 (void); void Enr_RemAdmIns (void); void Enr_RemAdmCtr (void); void Enr_RemAdmDeg (void); diff --git a/swad_file_browser.c b/swad_file_browser.c index b5c9f693b..c4203b3dd 100644 --- a/swad_file_browser.c +++ b/swad_file_browser.c @@ -11181,9 +11181,8 @@ void Brw_RemoveGrpZones (long CrsCod,long GrpCod) /***************** Remove the works of a user in a course ********************/ /*****************************************************************************/ -void Brw_RemoveUsrWorksInCrs (struct UsrData *UsrDat,struct Course *Crs,Cns_QuietOrVerbose_t QuietOrVerbose) +void Brw_RemoveUsrWorksInCrs (struct UsrData *UsrDat,struct Course *Crs) { - extern const char *Txt_Works_of_X_in_Y_removed; char PathUsrInCrs[PATH_MAX + 1]; /***** Remove user's works in the course from database *****/ @@ -11195,23 +11194,14 @@ void Brw_RemoveUsrWorksInCrs (struct UsrData *UsrDat,struct Course *Crs,Cns_Quie (unsigned) (UsrDat->UsrCod % 100),UsrDat->UsrCod); Fil_RemoveTree (PathUsrInCrs); // If this was the last user in his/her subfolder ==> the subfolder will be empty - - /***** Write message *****/ - if (QuietOrVerbose == Cns_VERBOSE) - { - sprintf (Gbl.Alert.Txt,Txt_Works_of_X_in_Y_removed, - UsrDat->FullName,Crs->FullName); - Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt); - } } /*****************************************************************************/ /************* Remove the works of a user in all of his courses **************/ /*****************************************************************************/ -void Brw_RemoveUsrWorksInAllCrss (struct UsrData *UsrDat,Cns_QuietOrVerbose_t QuietOrVerbose) +void Brw_RemoveUsrWorksInAllCrss (struct UsrData *UsrDat) { - extern const char *Txt_The_works_of_X_have_been_removed_in_a_total_of_Y_of_his_her_Z_courses; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned long NumRow,NumRows; @@ -11231,21 +11221,13 @@ void Brw_RemoveUsrWorksInAllCrss (struct UsrData *UsrDat,Cns_QuietOrVerbose_t Qu Crs.CrsCod = Str_ConvertStrCodToLongCod (row[0]); /* Get data of course */ Crs_GetDataOfCourseByCod (&Crs); - Brw_RemoveUsrWorksInCrs (UsrDat,&Crs,QuietOrVerbose); + Brw_RemoveUsrWorksInCrs (UsrDat,&Crs); NumCrssWorksRemoved++; } } /***** Free structure that stores the query result *****/ DB_FreeMySQLResult (&mysql_res); - - /***** Write message *****/ - if (QuietOrVerbose == Cns_VERBOSE) - { - sprintf (Gbl.Alert.Txt,Txt_The_works_of_X_have_been_removed_in_a_total_of_Y_of_his_her_Z_courses, - UsrDat->FullName,NumCrssWorksRemoved,(unsigned) NumRows); - Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt); - } } /*****************************************************************************/ diff --git a/swad_file_browser.h b/swad_file_browser.h index fc085c56b..100054e65 100644 --- a/swad_file_browser.h +++ b/swad_file_browser.h @@ -248,8 +248,8 @@ void Brw_PutParamsFileBrowser (Act_Action_t NextAction, void Brw_RemoveZonesOfGroupsOfType (long GrpTypCod); void Brw_RemoveGrpZones (long CrsCod,long GrpCod); -void Brw_RemoveUsrWorksInCrs (struct UsrData *UsrDat,struct Course *Crs,Cns_QuietOrVerbose_t QuietOrVerbose); -void Brw_RemoveUsrWorksInAllCrss (struct UsrData *UsrDat,Cns_QuietOrVerbose_t QuietOrVerbose); +void Brw_RemoveUsrWorksInCrs (struct UsrData *UsrDat,struct Course *Crs); +void Brw_RemoveUsrWorksInAllCrss (struct UsrData *UsrDat); void Brw_GetSummaryAndContentOfFile (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1], char **ContentStr, diff --git a/swad_group.c b/swad_group.c index d40b3ea5d..c1215f479 100644 --- a/swad_group.c +++ b/swad_group.c @@ -1113,9 +1113,8 @@ unsigned Grp_RemoveUsrFromGroups (struct UsrData *UsrDat,struct ListCodGrps *Lst /*************** Remove a user of all the groups of a course *****************/ /*****************************************************************************/ -void Grp_RemUsrFromAllGrpsInCrs (struct UsrData *UsrDat,struct Course *Crs,Cns_QuietOrVerbose_t QuietOrVerbose) +void Grp_RemUsrFromAllGrpsInCrs (struct UsrData *UsrDat,struct Course *Crs) { - extern const char *Txt_THE_USER_X_has_been_removed_from_all_groups_of_the_course_Y; char Query[512]; /***** Remove user from all the groups of the course *****/ @@ -1126,37 +1125,20 @@ void Grp_RemUsrFromAllGrpsInCrs (struct UsrData *UsrDat,struct Course *Crs,Cns_Q " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod)", UsrDat->UsrCod,Crs->CrsCod); DB_QueryDELETE (Query,"can not remove a user from all groups of a course"); - - /***** Write message to show the change made *****/ - if (QuietOrVerbose == Cns_VERBOSE) - { - sprintf (Gbl.Alert.Txt,Txt_THE_USER_X_has_been_removed_from_all_groups_of_the_course_Y, - UsrDat->FullName,Crs->FullName); - Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt); - } } /*****************************************************************************/ /******* Remove a user from all the groups of all the user's courses *********/ /*****************************************************************************/ -void Grp_RemUsrFromAllGrps (struct UsrData *UsrDat,Cns_QuietOrVerbose_t QuietOrVerbose) +void Grp_RemUsrFromAllGrps (struct UsrData *UsrDat) { - extern const char *Txt_THE_USER_X_has_been_removed_from_all_groups_in_all_courses; char Query[128]; /***** Remove user from all groups *****/ sprintf (Query,"DELETE FROM crs_grp_usr WHERE UsrCod=%ld", UsrDat->UsrCod); DB_QueryDELETE (Query,"can not remove a user from the groups he/she belongs to"); - - /***** Write message to show the change made *****/ - if (QuietOrVerbose == Cns_VERBOSE) - { - sprintf (Gbl.Alert.Txt,Txt_THE_USER_X_has_been_removed_from_all_groups_in_all_courses, - UsrDat->FullName); - Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt); - } } /*****************************************************************************/ diff --git a/swad_group.h b/swad_group.h index 7339fe17a..279358ef6 100644 --- a/swad_group.h +++ b/swad_group.h @@ -148,8 +148,8 @@ bool Grp_ChangeGrpsOtherUsrAtomically (struct ListCodGrps *LstGrpsUsrWants); bool Grp_CheckIfSelectionGrpsIsValid (struct ListCodGrps *LstGrps); void Grp_RegisterUsrIntoGroups (struct UsrData *UsrDat,struct ListCodGrps *LstGrps); unsigned Grp_RemoveUsrFromGroups (struct UsrData *UsrDat,struct ListCodGrps *LstGrps); -void Grp_RemUsrFromAllGrpsInCrs (struct UsrData *UsrDat,struct Course *Crs,Cns_QuietOrVerbose_t QuietOrVerbose); -void Grp_RemUsrFromAllGrps (struct UsrData *UsrDat,Cns_QuietOrVerbose_t QuietOrVerbose); +void Grp_RemUsrFromAllGrpsInCrs (struct UsrData *UsrDat,struct Course *Crs); +void Grp_RemUsrFromAllGrps (struct UsrData *UsrDat); void Grp_ListGrpsToEditAsgAttOrSvy (struct GroupType *GrpTyp,long Cod,Grp_AsgOrSvy_t Grp_AsgOrSvy); void Grp_ReqRegisterInGrps (void); diff --git a/swad_record.c b/swad_record.c index 222d7256c..3cca1b5b3 100644 --- a/swad_record.c +++ b/swad_record.c @@ -1994,9 +1994,8 @@ void Rec_UpdateCrsRecord (long UsrCod) /************ Remove fields of record of a user in current course ************/ /*****************************************************************************/ -void Rec_RemoveFieldsCrsRecordInCrs (long UsrCod,struct Course *Crs,Cns_QuietOrVerbose_t QuietOrVerbose) +void Rec_RemoveFieldsCrsRecordInCrs (long UsrCod,struct Course *Crs) { - extern const char *Txt_User_record_card_in_the_course_X_has_been_removed; char Query[256]; /***** Remove text of the field of record course *****/ @@ -2005,32 +2004,19 @@ void Rec_RemoveFieldsCrsRecordInCrs (long UsrCod,struct Course *Crs,Cns_QuietOrV " (SELECT FieldCod FROM crs_record_fields WHERE CrsCod=%ld)", UsrCod,Crs->CrsCod); DB_QueryDELETE (Query,"can not remove user's record in a course"); - - /***** Write mensaje *****/ - if (QuietOrVerbose == Cns_VERBOSE) - { - sprintf (Gbl.Alert.Txt,Txt_User_record_card_in_the_course_X_has_been_removed, - Crs->FullName); - Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt); - } } /*****************************************************************************/ /************* Remove fields of record of a user in all courses **************/ /*****************************************************************************/ -void Rec_RemoveFieldsCrsRecordAll (long UsrCod,Cns_QuietOrVerbose_t QuietOrVerbose) +void Rec_RemoveFieldsCrsRecordAll (long UsrCod) { - extern const char *Txt_User_record_cards_in_all_courses_have_been_removed; char Query[128]; /***** Remove text of the field of record course *****/ sprintf (Query,"DELETE FROM crs_records WHERE UsrCod=%ld",UsrCod); DB_QueryDELETE (Query,"can not remove user's records in all courses"); - - /***** Write mensaje *****/ - if (QuietOrVerbose == Cns_VERBOSE) - Ale_ShowAlert (Ale_SUCCESS,Txt_User_record_cards_in_all_courses_have_been_removed); } /*****************************************************************************/ diff --git a/swad_record.h b/swad_record.h index c51f8323c..c387744dc 100644 --- a/swad_record.h +++ b/swad_record.h @@ -155,8 +155,8 @@ void Rec_UpdateAndShowOtherCrsRecord (void); unsigned long Rec_GetFieldFromCrsRecord (long UsrCod,long FieldCod,MYSQL_RES **mysql_res); void Rec_GetFieldsCrsRecordFromForm (void); void Rec_UpdateCrsRecord (long UsrCod); -void Rec_RemoveFieldsCrsRecordInCrs (long UsrCod,struct Course *Crs,Cns_QuietOrVerbose_t QuietOrVerbose); -void Rec_RemoveFieldsCrsRecordAll (long UsrCod,Cns_QuietOrVerbose_t QuietOrVerbose); +void Rec_RemoveFieldsCrsRecordInCrs (long UsrCod,struct Course *Crs); +void Rec_RemoveFieldsCrsRecordAll (long UsrCod); void Rec_AllocMemFieldsRecordsCrs (void); void Rec_FreeMemFieldsRecordsCrs (void); diff --git a/swad_role.c b/swad_role.c index 2f779c800..c67ebbdef 100644 --- a/swad_role.c +++ b/swad_role.c @@ -73,9 +73,9 @@ void Rol_SetMyRoles (void) Rol_GetRolesInAllCrssIfNotYetGot (&Gbl.Usrs.Me.UsrDat); // Get my roles if not yet got Gbl.Usrs.Me.Roles.Max = Rol_GetMaxRoleInCrss ((unsigned) Gbl.Usrs.Me.UsrDat.Roles.InCrss); Gbl.Usrs.Me.Roles.LoggedRole = (Gbl.Usrs.Me.Roles.RoleFromSession == Rol_UNK) ? // If no logged role retrieved from session... - ((Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrsDB == Rol_UNK) ? Rol_USR : - Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrsDB) : - Gbl.Usrs.Me.Roles.RoleFromSession; // Get logged role from session + ((Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrsDB == Rol_UNK) ? Rol_USR : + Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrsDB) : + Gbl.Usrs.Me.Roles.RoleFromSession; // Get logged role from session /***** Check if I am administrator of current institution/centre/degree *****/ if (Gbl.CurrentIns.Ins.InsCod > 0) diff --git a/swad_text.c b/swad_text.c index 69a6cdf5e..ee54df714 100644 --- a/swad_text.c +++ b/swad_text.c @@ -46269,66 +46269,6 @@ const char *Txt_THE_USER_X_has_been_removed_as_administrator = // Warning: it is "%s has been removed as administrator."; // Necessita de tradução #endif -const char *Txt_THE_USER_X_has_been_removed_from_all_groups_in_all_courses = // Warning: it is very important to include %s in the following sentences -#if L==1 - "%s ha sido eliminado/a" - " de todos los grupos de todas sus asignaturas."; // Necessita traduccio -#elif L==2 - "%s has been removed" - " from all groups in all courses."; // Übersetzung notwendig -#elif L==3 - "%s has been removed" - " from all groups in all courses."; -#elif L==4 - "%s ha sido eliminado/a" - " de todos los grupos de todas sus asignaturas."; -#elif L==5 - "%s has been removed" - " from all groups in all courses."; // Besoin de traduction -#elif L==6 - "%s ha sido eliminado/a" - " de todos los grupos de todas sus asignaturas."; // Okoteve traducción -#elif L==7 - "%s è stato rimosso" - " da tutti i gruppi di tutti i corsi."; -#elif L==8 - "%s has been removed" - " from all groups in all courses."; // Potrzebujesz tlumaczenie -#elif L==9 - "%s has been removed" - " from all groups in all courses."; // Necessita de tradução -#endif - -const char *Txt_THE_USER_X_has_been_removed_from_all_groups_of_the_course_Y = // Warning: it is very important to include two %s in the following sentences -#if L==1 - "%s ha sido eliminado/a" - " de todos los grupos de la asignatura %s."; // Necessita traduccio -#elif L==2 - "%s has been removed" - " from all groups of the course %s."; // Übersetzung notwendig -#elif L==3 - "%s has been removed" - " from all groups of the course %s."; -#elif L==4 - "%s ha sido eliminado/a" - " de todos los grupos de la asignatura %s."; -#elif L==5 - "%s has been removed" - " from all groups of the course %s."; // Besoin de traduction -#elif L==6 - "%s ha sido eliminado/a" - " de todos los grupos de la asignatura %s."; // Okoteve traducción -#elif L==7 - "%s è stato rimosso" - " da tutti i gruppi del corso %s."; -#elif L==8 - "%s has been removed" - " from all groups of the course %s."; // Potrzebujesz tlumaczenie -#elif L==9 - "%s has been removed" - " from all groups of the course %s."; // Necessita de tradução -#endif - const char *Txt_THE_USER_X_has_been_removed_from_all_his_her_courses = // Warning: it is very important to include %s in the following sentences #if L==1 "%s ha sido eliminado/a de todas sus asignaturas."; // Necessita traduccio @@ -46749,39 +46689,6 @@ const char *Txt_The_whole_course = "Toda a disciplina"; #endif -const char *Txt_The_works_of_X_have_been_removed_in_a_total_of_Y_of_his_her_Z_courses = // Warning: it is very important to include all %s and %u, in the correct order, in the following sentences -#if L==1 - "Se han eliminado todos los trabajos" - " de %s" - " en un total de %u de sus %u asignaturas."; // Necessita traduccio -#elif L==2 - "The works of %s" - " have been removed in a total of %u of her/his %u courses."; // Need Übersetzung -#elif L==3 - "The works of %s" - " have been removed in a total of %u of her/his %u courses."; -#elif L==4 - "Se han eliminado todos los trabajos" - " de %s" - " en un total de %u de sus %u asignaturas."; -#elif L==5 - "The works of %s" - " have been removed in a total of %u of her/his %u courses."; // Besoin de traduction -#elif L==6 - "Se han eliminado todos los trabajos" - " de %s" - " en un total de %u de sus %u asignaturas."; // Okoteve traducción -#elif L==7 - "I lavori de %s" - " sono stati rimossi in un totale di %u dei suoi corsi."; -#elif L==8 - "The works of %s" - " have been removed in a total of %u of her/his %u courses."; // Potrzebujesz tlumaczenie -#elif L==9 - "The works of %s" - " have been removed in a total of %u of her/his %u courses."; // Necessita de tradução -#endif - const char *Txt_The_year_X_is_not_allowed = // Warning: it is very important to include %u in the following sentences #if L==1 "El año/semestre %u no está permitido."; // Necessita traduccio @@ -50306,48 +50213,6 @@ const char *Txt_User_not_found_or_you_do_not_have_permission_ = " para realizar esta ação."; #endif -const char *Txt_User_record_card_in_the_course_X_has_been_removed = // Warning: it is very important to include %s in the following sentences -#if L==1 - "La ficha del usuario en la asignatura %s ha sido eliminada."; // Necessita traduccio -#elif L==2 - "User record card in the course %s has been removed."; // Need Übersetzung -#elif L==3 - "User record card in the course %s has been removed."; -#elif L==4 - "La ficha del usuario en la asignatura %s ha sido eliminada."; -#elif L==5 - "User record card in the course %s has been removed."; // Besoin de traduction -#elif L==6 - "La ficha del usuario en la asignatura %s ha sido eliminada."; // Okoteve traducción -#elif L==7 - "La scheda dell'utente nel corso %s è stata rimossa."; -#elif L==8 - "User record card in the course %s has been removed."; // Potrzebujesz tlumaczenie -#elif L==9 - "User record card in the course %s has been removed."; // Necessita de tradução -#endif - -const char *Txt_User_record_cards_in_all_courses_have_been_removed = -#if L==1 - "Se han eliminado las fichas del usuario en todas las asignaturas."; // Necessita traduccio -#elif L==2 - "User record cards in all courses have been removed."; // Need Übersetzung -#elif L==3 - "User record cards in all courses have been removed."; -#elif L==4 - "Se han eliminado las fichas del usuario en todas las asignaturas."; -#elif L==5 - "User record cards in all courses have been removed."; // Besoin de traduction -#elif L==6 - "Se han eliminado las fichas del usuario en todas las asignaturas."; // Okoteve traducción -#elif L==7 - "Le schede dell'utente in tutti i corsi sono state rimosse."; -#elif L==8 - "User record cards in all courses have been removed."; // Potrzebujesz tlumaczenie -#elif L==9 - "User record cards in all courses have been removed."; // Necessita de tradução -#endif - const char *Txt_Users = #if L==1 "Usuaris"; @@ -51733,36 +51598,6 @@ const char *Txt_works_ZIP_FILE_NAME = // Name (without extension) of the ZIP fil "trabalhos"; #endif -const char *Txt_Works_of_X_in_Y_removed = // Warning: it is very important to include two %s in the following sentences -#if L==1 - "Trabajos de %s" - " en %s eliminados."; // Necessita traduccio -#elif L==2 - "Die Hausarbeiten von %s" - " in %s wurden entfernt."; -#elif L==3 - "The homework of %s" - " in %s has been removed."; -#elif L==4 - "Trabajos de %s" - " en %s eliminados."; -#elif L==5 - "Homework of %s" - " in %s removed."; // Besoin de traduction -#elif L==6 - "Trabajos de %s" - " en %s eliminados."; // Okoteve traducción -#elif L==7 - "Lavori de %s" - " in %s rimossi."; -#elif L==8 - "The homework of %s" - " in %s has been removed."; // Potrzebujesz tlumaczenie -#elif L==9 - "Homework of %s" - " in %s removed."; // Necessita de tradução -#endif - const char *Txt_Works_area = #if L==1 "Zona d'altres treballs";