Version 16.103.5

This commit is contained in:
Antonio Cañas Vargas 2016-12-18 19:06:48 +01:00
parent e3c68ff386
commit 38cc2d9578
6 changed files with 129 additions and 89 deletions

View File

@ -819,39 +819,43 @@ void Acc_AfterCreationNewAccount (void)
void Acc_GetUsrCodAndRemUsrGbl (void) void Acc_GetUsrCodAndRemUsrGbl (void)
{ {
extern const char *Txt_User_not_found_or_you_do_not_have_permission_; extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
bool Error = false;
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ()) if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
Acc_ReqRemAccountOrRemAccount (Acc_REMOVE_USR); {
if (Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Other.UsrDat.UsrCod))
Acc_ReqRemAccountOrRemAccount (Acc_REMOVE_USR);
else
Error = true;
}
else else
Error = true;
if (Error)
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_); Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
} }
/*****************************************************************************/ /*****************************************************************************/
/**************************** Removing of a user *****************************/ /*************************** Remove a user account ***************************/
/*****************************************************************************/ /*****************************************************************************/
void Acc_ReqRemAccountOrRemAccount (Acc_ReqOrRemUsr_t RequestOrRemove) void Acc_ReqRemAccountOrRemAccount (Acc_ReqOrRemUsr_t RequestOrRemove)
{ {
extern const char *Txt_User_not_found_or_you_do_not_have_permission_; switch (RequestOrRemove)
{
case Acc_REQUEST_REMOVE_USR: // Ask if eliminate completely the user from the platform
Acc_AskIfRemoveUsrAccount (Gbl.Usrs.Me.UsrDat.UsrCod == Gbl.Usrs.Other.UsrDat.UsrCod);
break;
case Acc_REMOVE_USR: // Eliminate completely the user from the platform
if (Pwd_GetConfirmationOnDangerousAction ())
{
Acc_CompletelyEliminateAccount (&Gbl.Usrs.Other.UsrDat,Cns_VERBOSE);
if (Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Other.UsrDat.UsrCod)) /***** Move unused contents of messages to table of deleted contents of messages *****/
switch (RequestOrRemove) Msg_MoveUnusedMsgsContentToDeleted ();
{ }
case Acc_REQUEST_REMOVE_USR: // Ask if eliminate completely the user from the platform break;
Acc_AskIfRemoveUsrAccount (Gbl.Usrs.Me.UsrDat.UsrCod == Gbl.Usrs.Other.UsrDat.UsrCod); }
break;
case Acc_REMOVE_USR: // Eliminate completely the user from the platform
if (Pwd_GetConfirmationOnDangerousAction ())
{
Acc_CompletelyEliminateAccount (&Gbl.Usrs.Other.UsrDat,Cns_VERBOSE);
/***** Move unused contents of messages to table of deleted contents of messages *****/
Msg_MoveUnusedMsgsContentToDeleted ();
}
break;
}
else
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -2440,9 +2440,9 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActCreStd */{1445,-1,TabUnk,ActLstStd ,0x1F0,0x1E0,0x1E0,Act_CONT_NORM,Act_THIS_WINDOW,Enr_CreateNewUsr1 ,Enr_CreateNewUsr2 ,NULL}, /* ActCreStd */{1445,-1,TabUnk,ActLstStd ,0x1F0,0x1E0,0x1E0,Act_CONT_NORM,Act_THIS_WINDOW,Enr_CreateNewUsr1 ,Enr_CreateNewUsr2 ,NULL},
/* ActCreTch */{1446,-1,TabUnk,ActLstTch ,0x1F0,0x1E0,0x1E0,Act_CONT_NORM,Act_THIS_WINDOW,Enr_CreateNewUsr1 ,Enr_CreateNewUsr2 ,NULL}, /* ActCreTch */{1446,-1,TabUnk,ActLstTch ,0x1F0,0x1E0,0x1E0,Act_CONT_NORM,Act_THIS_WINDOW,Enr_CreateNewUsr1 ,Enr_CreateNewUsr2 ,NULL},
/* ActUpdOth */{1422,-1,TabUnk,ActLstOth ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Enr_ModifyUsr ,NULL}, /* ActUpdOth */{1422,-1,TabUnk,ActLstOth ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,Enr_ModifyUsr1 ,Enr_ModifyUsr2 ,NULL},
/* ActUpdStd */{1423,-1,TabUnk,ActLstStd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Enr_ModifyUsr ,NULL}, /* ActUpdStd */{1423,-1,TabUnk,ActLstStd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,Enr_ModifyUsr1 ,Enr_ModifyUsr2 ,NULL},
/* ActUpdTch */{1424,-1,TabUnk,ActLstTch ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Enr_ModifyUsr ,NULL}, /* ActUpdTch */{1424,-1,TabUnk,ActLstTch ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,Enr_ModifyUsr1 ,Enr_ModifyUsr2 ,NULL},
/* ActReqAccEnrStd */{1456,-1,TabUnk,ActLstStd ,0x1E8,0x000,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Enr_ReqAcceptRegisterInCrs ,NULL}, /* ActReqAccEnrStd */{1456,-1,TabUnk,ActLstStd ,0x1E8,0x000,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Enr_ReqAcceptRegisterInCrs ,NULL},
/* ActReqAccEnrTch */{1457,-1,TabUnk,ActLstTch ,0x1F0,0x000,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Enr_ReqAcceptRegisterInCrs ,NULL}, /* ActReqAccEnrTch */{1457,-1,TabUnk,ActLstTch ,0x1F0,0x000,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Enr_ReqAcceptRegisterInCrs ,NULL},

View File

@ -190,13 +190,14 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.103.4 (2016-12-17)" #define Log_PLATFORM_VERSION "SWAD 16.103.5 (2016-12-17)"
#define CSS_FILE "swad16.103.1.css" #define CSS_FILE "swad16.103.1.css"
#define JS_FILE "swad16.101.js" #define JS_FILE "swad16.101.js"
// Number of lines (includes comments but not blank lines) has been got with the following command: // 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 // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
/* /*
Version 16.103.5: Dec 17, 2016 Code refactoring in user enrollment. (211207 lines)
Version 16.103.4: Dec 17, 2016 Code refactoring in user enrollment. (211170 lines) Version 16.103.4: Dec 17, 2016 Code refactoring in user enrollment. (211170 lines)
Version 16.103.3: Dec 17, 2016 Code refactoring in user enrollment. (211149 lines) Version 16.103.3: Dec 17, 2016 Code refactoring in user enrollment. (211149 lines)
Version 16.103.2: Dec 17, 2016 Code refactoring in user enrollment. (211133 lines) Version 16.103.2: Dec 17, 2016 Code refactoring in user enrollment. (211133 lines)

View File

@ -3539,7 +3539,8 @@ void Enr_CreateNewUsr2 (void)
if (Gbl.CurrentCrs.Crs.CrsCod > 0) // Course selected if (Gbl.CurrentCrs.Crs.CrsCod > 0) // Course selected
{ {
/***** Show success message *****/ /***** Show success message *****/
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message); if (Gbl.Message[0])
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
/***** Change user's groups *****/ /***** Change user's groups *****/
if (Gbl.CurrentCrs.Grps.NumGrps) // This course has groups? if (Gbl.CurrentCrs.Grps.NumGrps) // This course has groups?
@ -3555,19 +3556,20 @@ void Enr_CreateNewUsr2 (void)
/**** Modify other user's data and register her/him in course and groups *****/ /**** Modify other user's data and register her/him in course and groups *****/
/*****************************************************************************/ /*****************************************************************************/
void Enr_ModifyUsr (void) void Enr_ModifyUsr1 (void)
{ {
extern const char *Txt_The_role_of_THE_USER_X_in_the_course_Y_has_changed_from_A_to_B; extern const char *Txt_The_role_of_THE_USER_X_in_the_course_Y_has_changed_from_A_to_B;
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_THE_USER_X_has_been_enrolled_in_the_course_Y; extern const char *Txt_THE_USER_X_has_been_enrolled_in_the_course_Y;
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
char UnsignedStr[10+1]; char UnsignedStr[10+1];
unsigned UnsignedNum; unsigned UnsignedNum;
bool ItsMe; bool ItsMe;
Enr_RegRemOneUsrAction_t RegRemAction;
Rol_Role_t OldRole; Rol_Role_t OldRole;
Rol_Role_t NewRole; Rol_Role_t NewRole;
bool Error = false;
/***** Initialize error and message *****/
Gbl.Error = false;
Gbl.Message[0] = '\0';
/***** Get user from form *****/ /***** Get user from form *****/
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ()) if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
@ -3578,7 +3580,7 @@ void Enr_ModifyUsr (void)
Par_GetParToText ("RegRemAction",UnsignedStr,1); Par_GetParToText ("RegRemAction",UnsignedStr,1);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1) if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (UnsignedNum < Enr_NUM_ACTIONS_REG_REM_ONE_USR) if (UnsignedNum < Enr_NUM_ACTIONS_REG_REM_ONE_USR)
switch ((RegRemAction = (Enr_RegRemOneUsrAction_t) UnsignedNum)) switch ((Gbl.Usrs.RegRemAction = (Enr_RegRemOneUsrAction_t) UnsignedNum))
{ {
case Enr_REGISTER_MODIFY_ONE_USR_IN_CRS: case Enr_REGISTER_MODIFY_ONE_USR_IN_CRS:
if (ItsMe || Gbl.Usrs.Me.LoggedRole >= Rol_TEACHER) if (ItsMe || Gbl.Usrs.Me.LoggedRole >= Rol_TEACHER)
@ -3611,7 +3613,6 @@ void Enr_ModifyUsr (void)
Gbl.Usrs.Other.UsrDat.FullName,Gbl.CurrentCrs.Crs.FullName, Gbl.Usrs.Other.UsrDat.FullName,Gbl.CurrentCrs.Crs.FullName,
Txt_ROLES_SINGUL_abc[OldRole][Gbl.Usrs.Other.UsrDat.Sex], Txt_ROLES_SINGUL_abc[OldRole][Gbl.Usrs.Other.UsrDat.Sex],
Txt_ROLES_SINGUL_abc[NewRole][Gbl.Usrs.Other.UsrDat.Sex]); Txt_ROLES_SINGUL_abc[NewRole][Gbl.Usrs.Other.UsrDat.Sex]);
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
} }
} }
else else
@ -3623,93 +3624,124 @@ void Enr_ModifyUsr (void)
/* Show success message */ /* Show success message */
sprintf (Gbl.Message,Txt_THE_USER_X_has_been_enrolled_in_the_course_Y, sprintf (Gbl.Message,Txt_THE_USER_X_has_been_enrolled_in_the_course_Y,
Gbl.Usrs.Other.UsrDat.FullName,Gbl.CurrentCrs.Crs.FullName); Gbl.Usrs.Other.UsrDat.FullName,Gbl.CurrentCrs.Crs.FullName);
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
} }
/***** Change user's groups *****/ /***** Change current action *****/
if (Gbl.CurrentCrs.Grps.NumGrps) // This course has groups? Gbl.Action.Act = (NewRole == Rol_STUDENT) ? ActUpdStd :
{ ((NewRole == Rol_TEACHER) ? ActUpdTch :
if (ItsMe) ActUpdOth);
Grp_ChangeMyGrps (); Tab_SetCurrentTab ();
else
Grp_ChangeOtherUsrGrps ();
}
} }
/***** Show user's record *****/
Rec_ShowSharedRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
} }
else else
Error = true; Gbl.Error = true;
break; break;
case Enr_REGISTER_ONE_DEGREE_ADMIN: case Enr_REGISTER_ONE_DEGREE_ADMIN:
if (Gbl.Usrs.Me.LoggedRole >= Rol_CTR_ADM) if (Gbl.Usrs.Me.LoggedRole < Rol_CTR_ADM)
Enr_ReqAddAdm (Sco_SCOPE_DEG,Gbl.CurrentDeg.Deg.DegCod, Gbl.Error = true;
Gbl.CurrentDeg.Deg.FullName);
else
Error = true;
break; break;
case Enr_REGISTER_ONE_CENTRE_ADMIN: case Enr_REGISTER_ONE_CENTRE_ADMIN:
if (Gbl.Usrs.Me.LoggedRole >= Rol_INS_ADM) if (Gbl.Usrs.Me.LoggedRole < Rol_INS_ADM)
Enr_ReqAddAdm (Sco_SCOPE_CTR,Gbl.CurrentCtr.Ctr.CtrCod, Gbl.Error = true;
Gbl.CurrentCtr.Ctr.FullName);
else
Error = true;
break; break;
case Enr_REGISTER_ONE_INSTITUTION_ADMIN: case Enr_REGISTER_ONE_INSTITUTION_ADMIN:
if (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM) if (Gbl.Usrs.Me.LoggedRole != Rol_SYS_ADM)
Enr_ReqAddAdm (Sco_SCOPE_INS,Gbl.CurrentIns.Ins.InsCod, Gbl.Error = true;
Gbl.CurrentIns.Ins.FullName);
else
Error = true;
break; break;
case Enr_REPORT_USR_AS_POSSIBLE_DUPLICATE: case Enr_REPORT_USR_AS_POSSIBLE_DUPLICATE:
if (!ItsMe && Gbl.Usrs.Me.LoggedRole >= Rol_TEACHER) if (ItsMe || Gbl.Usrs.Me.LoggedRole < Rol_TEACHER)
Dup_ReportUsrAsPossibleDuplicate (); Gbl.Error = true;
else
Error = true;
break; break;
case Enr_REMOVE_ONE_USR_FROM_CRS: case Enr_REMOVE_ONE_USR_FROM_CRS:
if (ItsMe || Gbl.Usrs.Me.LoggedRole >= Rol_TEACHER) if (!ItsMe && Gbl.Usrs.Me.LoggedRole < Rol_TEACHER)
Enr_ReqRemUsrFromCrs (); Gbl.Error = true;
else
Error = true;
break; break;
case Enr_REMOVE_ONE_DEGREE_ADMIN: case Enr_REMOVE_ONE_DEGREE_ADMIN:
if (ItsMe || Gbl.Usrs.Me.LoggedRole >= Rol_CTR_ADM) if (!ItsMe && Gbl.Usrs.Me.LoggedRole < Rol_CTR_ADM)
Enr_ReqRemAdmOfDeg (); Gbl.Error = true;
else
Error = true;
break; break;
case Enr_REMOVE_ONE_CENTRE_ADMIN: case Enr_REMOVE_ONE_CENTRE_ADMIN:
if (ItsMe || Gbl.Usrs.Me.LoggedRole >= Rol_INS_ADM) if (!ItsMe && Gbl.Usrs.Me.LoggedRole < Rol_INS_ADM)
Enr_ReqRemAdmOfCtr (); Gbl.Error = true;
else
Error = true;
break; break;
case Enr_REMOVE_ONE_INSTITUTION_ADMIN: case Enr_REMOVE_ONE_INSTITUTION_ADMIN:
if (ItsMe || Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM) if (!ItsMe && Gbl.Usrs.Me.LoggedRole != Rol_SYS_ADM)
Enr_ReqRemAdmOfIns (); Gbl.Error = true;
else
Error = true;
break; break;
case Enr_ELIMINATE_ONE_USR_FROM_PLATFORM: case Enr_ELIMINATE_ONE_USR_FROM_PLATFORM:
Acc_ReqRemAccountOrRemAccount (Acc_REQUEST_REMOVE_USR); if (!Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Other.UsrDat.UsrCod))
break; Gbl.Error = true;
default:
Error = true;
break; break;
} }
else else
Error = true; Gbl.Error = true;
else else
Error = true; Gbl.Error = true;
} }
else else
Error = true; Gbl.Error = true;
}
if (Error) void Enr_ModifyUsr2 (void)
{
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
if (Gbl.Error)
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_); Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
else // No error
switch (Gbl.Usrs.RegRemAction)
{
case Enr_REGISTER_MODIFY_ONE_USR_IN_CRS:
if (Gbl.CurrentCrs.Crs.CrsCod > 0)
{
/***** Show success message *****/
if (Gbl.Message[0])
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
/***** Change user's groups *****/
if (Gbl.CurrentCrs.Grps.NumGrps) // This course has groups?
{
if (Gbl.Usrs.Other.UsrDat.UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) // It's me
Grp_ChangeMyGrps ();
else
Grp_ChangeOtherUsrGrps ();
}
}
/***** Show user's record *****/
Rec_ShowSharedRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
break;
case Enr_REGISTER_ONE_DEGREE_ADMIN:
Enr_ReqAddAdm (Sco_SCOPE_DEG,Gbl.CurrentDeg.Deg.DegCod,
Gbl.CurrentDeg.Deg.FullName);
break;
case Enr_REGISTER_ONE_CENTRE_ADMIN:
Enr_ReqAddAdm (Sco_SCOPE_CTR,Gbl.CurrentCtr.Ctr.CtrCod,
Gbl.CurrentCtr.Ctr.FullName);
break;
case Enr_REGISTER_ONE_INSTITUTION_ADMIN:
Enr_ReqAddAdm (Sco_SCOPE_INS,Gbl.CurrentIns.Ins.InsCod,
Gbl.CurrentIns.Ins.FullName);
break;
case Enr_REPORT_USR_AS_POSSIBLE_DUPLICATE:
Dup_ReportUsrAsPossibleDuplicate ();
break;
case Enr_REMOVE_ONE_USR_FROM_CRS:
Enr_ReqRemUsrFromCrs ();
break;
case Enr_REMOVE_ONE_DEGREE_ADMIN:
Enr_ReqRemAdmOfDeg ();
break;
case Enr_REMOVE_ONE_CENTRE_ADMIN:
Enr_ReqRemAdmOfCtr ();
break;
case Enr_REMOVE_ONE_INSTITUTION_ADMIN:
Enr_ReqRemAdmOfIns ();
break;
case Enr_ELIMINATE_ONE_USR_FROM_PLATFORM:
Acc_ReqRemAccountOrRemAccount (Acc_REQUEST_REMOVE_USR);
break;
}
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -133,7 +133,8 @@ void Enr_RemAdmDeg (void);
void Enr_AcceptRegisterMeInCrs (void); void Enr_AcceptRegisterMeInCrs (void);
void Enr_CreateNewUsr1 (void); void Enr_CreateNewUsr1 (void);
void Enr_CreateNewUsr2 (void); void Enr_CreateNewUsr2 (void);
void Enr_ModifyUsr (void); void Enr_ModifyUsr1 (void);
void Enr_ModifyUsr2 (void);
void Enr_AcceptUsrInCrs (long UsrCod); void Enr_AcceptUsrInCrs (long UsrCod);
#endif #endif

View File

@ -44,6 +44,7 @@
#include "swad_cryptography.h" #include "swad_cryptography.h"
#include "swad_department.h" #include "swad_department.h"
#include "swad_degree_type.h" #include "swad_degree_type.h"
#include "swad_enrollment.h"
#include "swad_exam.h" #include "swad_exam.h"
#include "swad_file.h" #include "swad_file.h"
#include "swad_file_browser.h" #include "swad_file_browser.h"
@ -398,6 +399,7 @@ struct Globals
} Connected; } Connected;
char FileNamePhoto[NAME_MAX+1]; // File name (with no path and no .jpg) of the temporary file with the selected face char FileNamePhoto[NAME_MAX+1]; // File name (with no path and no .jpg) of the temporary file with the selected face
bool Error; // To signal that an error has happened bool Error; // To signal that an error has happened
Enr_RegRemOneUsrAction_t RegRemAction; // Enrollment action
} Usrs; } Usrs;
struct struct
{ {