Version 15.204

This commit is contained in:
Antonio Cañas Vargas 2016-04-25 00:06:44 +02:00
parent 10805e0aea
commit cfb6dfdeac
7 changed files with 69 additions and 33 deletions

View File

@ -54,6 +54,12 @@ extern struct Globals Gbl;
/******************************* Private types *******************************/ /******************************* Private types *******************************/
/*****************************************************************************/ /*****************************************************************************/
typedef enum
{
ID_REQUEST_CONFIRM_ID,
ID_CONFIRM_ID,
} ID_ReqConfOrConfID_t;
/*****************************************************************************/ /*****************************************************************************/
/***************************** Private variables *****************************/ /***************************** Private variables *****************************/
/*****************************************************************************/ /*****************************************************************************/
@ -74,6 +80,8 @@ static void ID_RemoveUsrIDFromDB (long UsrCod,const char *UsrID);
static void ID_NewUsrID (const struct UsrData *UsrDat,bool ItsMe); static void ID_NewUsrID (const struct UsrData *UsrDat,bool ItsMe);
static void ID_InsertANewUsrIDInDB (long UsrCod,const char *NewID,bool Confirmed); static void ID_InsertANewUsrIDInDB (long UsrCod,const char *NewID,bool Confirmed);
static void ID_ReqConfOrConfOtherUsrID (ID_ReqConfOrConfID_t ReqConfOrConfID);
/*****************************************************************************/ /*****************************************************************************/
/********************** Get list of IDs of a user ****************************/ /********************** Get list of IDs of a user ****************************/
/*****************************************************************************/ /*****************************************************************************/
@ -820,7 +828,7 @@ static void ID_NewUsrID (const struct UsrData *UsrDat,bool ItsMe)
char NewID[ID_MAX_LENGTH_USR_ID+1]; char NewID[ID_MAX_LENGTH_USR_ID+1];
unsigned NumID; unsigned NumID;
bool AlreadyExists; bool AlreadyExists;
bool Confirmed; unsigned NumIDFound;
bool Error = false; bool Error = false;
if (Pwd_CheckIfICanChangeOtherUsrPassword (UsrDat->UsrCod)) if (Pwd_CheckIfICanChangeOtherUsrPassword (UsrDat->UsrCod))
@ -837,14 +845,15 @@ static void ID_NewUsrID (const struct UsrData *UsrDat,bool ItsMe)
for (NumID = 0, AlreadyExists = false; for (NumID = 0, AlreadyExists = false;
NumID < UsrDat->IDs.Num && !AlreadyExists; NumID < UsrDat->IDs.Num && !AlreadyExists;
NumID++) NumID++)
{ if (!strcasecmp (UsrDat->IDs.List[NumID].ID,NewID))
AlreadyExists = !strcasecmp (UsrDat->IDs.List[NumID].ID,NewID); {
Confirmed = UsrDat->IDs.List[NumID].Confirmed; AlreadyExists = true;
} NumIDFound = NumID;
}
if (AlreadyExists) // This new ID was already associated to this user if (AlreadyExists) // This new ID was already associated to this user
{ {
if (ItsMe || Confirmed) if (ItsMe || UsrDat->IDs.List[NumIDFound].Confirmed)
{ {
Error = true; Error = true;
sprintf (Gbl.Message,Txt_The_ID_X_matches_one_of_the_existing, sprintf (Gbl.Message,Txt_The_ID_X_matches_one_of_the_existing,
@ -853,7 +862,7 @@ static void ID_NewUsrID (const struct UsrData *UsrDat,bool ItsMe)
else // It's not me && !Confirmed else // It's not me && !Confirmed
{ {
/***** Mark this ID as confirmed *****/ /***** Mark this ID as confirmed *****/
ID_ConfirmUsrID (UsrDat->UsrCod,NewID); ID_ConfirmUsrID (UsrDat,NewID);
sprintf (Gbl.Message,Txt_The_ID_X_has_been_confirmed, sprintf (Gbl.Message,Txt_The_ID_X_has_been_confirmed,
NewID); NewID);
} }
@ -883,7 +892,7 @@ static void ID_NewUsrID (const struct UsrData *UsrDat,bool ItsMe)
/***** Show message *****/ /***** Show message *****/
Lay_ShowAlert (Error ? Lay_WARNING : Lay_ShowAlert (Error ? Lay_WARNING :
Lay_INFO, Lay_SUCCESS,
Gbl.Message); Gbl.Message);
} }
else else
@ -913,9 +922,28 @@ static void ID_InsertANewUsrIDInDB (long UsrCod,const char *NewID,bool Confirmed
/*****************************************************************************/ /*****************************************************************************/
void ID_RequestConfirmOtherUsrID (void) void ID_RequestConfirmOtherUsrID (void)
{
ID_ReqConfOrConfOtherUsrID (ID_REQUEST_CONFIRM_ID);
}
/*****************************************************************************/
/************************ Confirm another user's ID **************************/
/*****************************************************************************/
void ID_ConfirmOtherUsrID (void)
{
ID_ReqConfOrConfOtherUsrID (ID_CONFIRM_ID);
}
/*****************************************************************************/
/********** Request the confirmation or confirm another user's ID ************/
/*****************************************************************************/
static void ID_ReqConfOrConfOtherUsrID (ID_ReqConfOrConfID_t ReqConfOrConfID)
{ {
extern const char *Txt_ID_X_had_already_been_confirmed; extern const char *Txt_ID_X_had_already_been_confirmed;
extern const char *Txt_Do_you_want_to_confirm_the_ID_X; extern const char *Txt_Do_you_want_to_confirm_the_ID_X;
extern const char *Txt_The_ID_X_has_been_confirmed;
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_;
char UsrID[ID_MAX_LENGTH_USR_ID+1]; char UsrID[ID_MAX_LENGTH_USR_ID+1];
bool ICanConfirm = false; bool ICanConfirm = false;
@ -940,7 +968,7 @@ void ID_RequestConfirmOtherUsrID (void)
for (NumID = 0, Found = false; for (NumID = 0, Found = false;
NumID < Gbl.Usrs.Other.UsrDat.IDs.Num && !Found; NumID < Gbl.Usrs.Other.UsrDat.IDs.Num && !Found;
NumID++) NumID++)
if (!strcmp (UsrID,Gbl.Usrs.Other.UsrDat.IDs.List[NumID].ID)) if (!strcasecmp (UsrID,Gbl.Usrs.Other.UsrDat.IDs.List[NumID].ID))
{ {
Found = true; Found = true;
NumIDFound = NumID; NumIDFound = NumID;
@ -957,13 +985,29 @@ void ID_RequestConfirmOtherUsrID (void)
} }
else else
{ {
/***** Ask for confirmation *****/ switch (ReqConfOrConfID)
sprintf (Gbl.Message,Txt_Do_you_want_to_confirm_the_ID_X, {
Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].ID); case ID_REQUEST_CONFIRM_ID: // Ask if confirm ID
Lay_ShowAlert (Lay_INFO,Gbl.Message); /***** Ask for confirmation *****/
sprintf (Gbl.Message,Txt_Do_you_want_to_confirm_the_ID_X,
Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].ID);
Lay_ShowAlert (Lay_INFO,Gbl.Message);
/***** Put button to confirm ID *****/ /***** Put button to confirm ID *****/
ID_PutButtonToConfirmID (&Gbl.Usrs.Other.UsrDat,NumIDFound); ID_PutButtonToConfirmID (&Gbl.Usrs.Other.UsrDat,NumIDFound);
break;
case ID_CONFIRM_ID: // Confirm ID
/***** Mark this ID as confirmed *****/
ID_ConfirmUsrID (&Gbl.Usrs.Other.UsrDat,
Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].ID);
Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].Confirmed = true;
/***** Write success message *****/
sprintf (Gbl.Message,Txt_The_ID_X_has_been_confirmed,
Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].ID);
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
break;
}
} }
} }
else // User's ID not found else // User's ID not found
@ -976,26 +1020,17 @@ void ID_RequestConfirmOtherUsrID (void)
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_);
} }
/*****************************************************************************/
/************************ Confirm another user's ID **************************/
/*****************************************************************************/
void ID_ConfirmOtherUsrID (void)
{
Lay_ShowAlert (Lay_SUCCESS,"Confirmado"); // TODO: Need translation!!!!
}
/*****************************************************************************/ /*****************************************************************************/
/*********************** Set a user's ID as confirmed ************************/ /*********************** Set a user's ID as confirmed ************************/
/*****************************************************************************/ /*****************************************************************************/
void ID_ConfirmUsrID (long UsrCod,const char *UsrID) void ID_ConfirmUsrID (const struct UsrData *UsrDat,const char *UsrID)
{ {
char Query[256+ID_MAX_LENGTH_USR_ID]; char Query[256+ID_MAX_LENGTH_USR_ID];
/***** Update my nickname in database *****/ /***** Update database *****/
sprintf (Query,"UPDATE usr_IDs SET Confirmed='Y'" sprintf (Query,"UPDATE usr_IDs SET Confirmed='Y'"
" WHERE UsrCod='%ld' AND UsrID='%s' AND Confirmed<>'Y'", " WHERE UsrCod='%ld' AND UsrID='%s' AND Confirmed<>'Y'",
UsrCod,UsrID); UsrDat->UsrCod,UsrID);
DB_QueryINSERT (Query,"can not confirm a user's ID"); DB_QueryINSERT (Query,"can not confirm a user's ID");
} }

View File

@ -76,6 +76,6 @@ void ID_NewOtherUsrID (void);
void ID_RequestConfirmOtherUsrID (void); void ID_RequestConfirmOtherUsrID (void);
void ID_ConfirmOtherUsrID (void); void ID_ConfirmOtherUsrID (void);
void ID_ConfirmUsrID (long UsrCod,const char *UsrID); void ID_ConfirmUsrID (const struct UsrData *UsrDat,const char *UsrID);
#endif #endif

View File

@ -134,13 +134,14 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.203.6 (2016-04-24)" #define Log_PLATFORM_VERSION "SWAD 15.204 (2016-04-25)"
#define CSS_FILE "swad15.203.css" #define CSS_FILE "swad15.204.css"
#define JS_FILE "swad15.197.js" #define JS_FILE "swad15.197.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 15.204: Apr 25, 2016 New form to confirm another user's ID. (201326 lines)
Version 15.203.6: Apr 24, 2016 New form to confirm another user's ID. Not finished. (201295 lines) Version 15.203.6: Apr 24, 2016 New form to confirm another user's ID. Not finished. (201295 lines)
Version 15.203.5: Apr 24, 2016 New form to confirm another user's ID. Not finished. (201230 lines) Version 15.203.5: Apr 24, 2016 New form to confirm another user's ID. Not finished. (201230 lines)
Version 15.203.4: Apr 23, 2016 New form to confirm another user's ID. Not finished. (201140 lines) Version 15.203.4: Apr 23, 2016 New form to confirm another user's ID. Not finished. (201140 lines)

View File

@ -3367,7 +3367,7 @@ static void Enr_ReqRemOrRemUsrFromCrs (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr)
// An administrator can remove anyone // An administrator can remove anyone
ItsMe = (Gbl.Usrs.Me.UsrDat.UsrCod == Gbl.Usrs.Other.UsrDat.UsrCod); ItsMe = (Gbl.Usrs.Me.UsrDat.UsrCod == Gbl.Usrs.Other.UsrDat.UsrCod);
ICanRemove = (Gbl.Usrs.Me.LoggedRole == Rol_STUDENT ? ItsMe : ICanRemove = (Gbl.Usrs.Me.LoggedRole == Rol_STUDENT ? ItsMe :
(Gbl.Usrs.Me.LoggedRole >= Gbl.Usrs.Other.UsrDat.RoleInCurrentCrsDB)); (Gbl.Usrs.Me.LoggedRole >= Gbl.Usrs.Other.UsrDat.RoleInCurrentCrsDB));
if (ICanRemove) if (ICanRemove)
switch (ReqDelOrDelUsr) switch (ReqDelOrDelUsr)
{ {

View File

@ -227,7 +227,7 @@ void Imp_ImportStdsFromAnImpGrp (long ImpGrpCod,struct ListCodGrps *LstGrps,unsi
Grp_RegisterUsrIntoGroups (&UsrDat,LstGrps); // Register student in the selected groups Grp_RegisterUsrIntoGroups (&UsrDat,LstGrps); // Register student in the selected groups
/* Confirm user's ID */ /* Confirm user's ID */
ID_ConfirmUsrID (UsrDat.UsrCod,ImpStd.ExternalUsrID); ID_ConfirmUsrID (&UsrDat,ImpStd.ExternalUsrID);
(*NumUsrsRegistered)++; (*NumUsrsRegistered)++;
} }

View File

@ -2258,7 +2258,7 @@ static bool Usr_ChkUsrAndGetUsrDataFromExternalLogin (void)
Usr_FreeListUsrCods (&ListUsrCods); Usr_FreeListUsrCods (&ListUsrCods);
/* Mark user's ID as confirmed */ /* Mark user's ID as confirmed */
ID_ConfirmUsrID (Gbl.Usrs.Me.UsrDat.UsrCod,Gbl.Usrs.Me.UsrIdLogin); ID_ConfirmUsrID (&Gbl.Usrs.Me.UsrDat,Gbl.Usrs.Me.UsrIdLogin);
/* Get user's data */ /* Get user's data */
Usr_GetAllUsrDataFromUsrCod (&Gbl.Usrs.Me.UsrDat); Usr_GetAllUsrDataFromUsrCod (&Gbl.Usrs.Me.UsrDat);