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)
{
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
bool Error = false;
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
Error = true;
if (Error)
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)
{
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))
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);
/***** 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_);
/***** Move unused contents of messages to table of deleted contents of messages *****/
Msg_MoveUnusedMsgsContentToDeleted ();
}
break;
}
}
/*****************************************************************************/

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},
/* 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},
/* ActUpdStd */{1423,-1,TabUnk,ActLstStd ,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,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,Enr_ModifyUsr1 ,Enr_ModifyUsr2 ,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},
/* 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 *****************************/
/*****************************************************************************/
#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 JS_FILE "swad16.101.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.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.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)

View File

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

View File

@ -44,6 +44,7 @@
#include "swad_cryptography.h"
#include "swad_department.h"
#include "swad_degree_type.h"
#include "swad_enrollment.h"
#include "swad_exam.h"
#include "swad_file.h"
#include "swad_file_browser.h"
@ -398,6 +399,7 @@ struct Globals
} Connected;
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
Enr_RegRemOneUsrAction_t RegRemAction; // Enrollment action
} Usrs;
struct
{