From a0df9b5a9ef6a70a168292e8fd9b56af47ed5e00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Wed, 28 Dec 2016 17:45:53 +0100 Subject: [PATCH] Version 16.111.6 --- swad_assignment.c | 100 +++++++++++++++++++++++++++++----------------- swad_changelog.h | 3 +- 2 files changed, 65 insertions(+), 38 deletions(-) diff --git a/swad_assignment.c b/swad_assignment.c index 0e7f8abc..8d75e776 100644 --- a/swad_assignment.c +++ b/swad_assignment.c @@ -78,6 +78,7 @@ static void Asg_GetParamAsgOrderType (void); static void Asg_PutFormsToRemEditOneAsg (long AsgCod,bool Hidden); static void Asg_PutParams (void); static void Asg_GetDataOfAssignment (struct Assignment *Asg,const char *Query); +static void Asg_ResetAssignment (struct Assignment *Asg); static void Asg_GetAssignmentTxtFromDB (long AsgCod,char *Txt); static void Asg_PutParamAsgCod (long AsgCod); static bool Asg_CheckIfSimilarAssignmentExists (const char *Field,const char *Value,long AsgCod); @@ -684,18 +685,24 @@ void Asg_GetDataOfAssignmentByCod (struct Assignment *Asg) { char Query[1024]; - /***** Build query *****/ - sprintf (Query,"SELECT AsgCod,Hidden,UsrCod," - "UNIX_TIMESTAMP(StartTime)," - "UNIX_TIMESTAMP(EndTime)," - "NOW() BETWEEN StartTime AND EndTime," - "Title,Folder" - " FROM assignments" - " WHERE AsgCod='%ld' AND CrsCod='%ld'", - Asg->AsgCod,Gbl.CurrentCrs.Crs.CrsCod); + if (Asg->AsgCod > 0) + { + /***** Build query *****/ + sprintf (Query,"SELECT AsgCod,Hidden,UsrCod," + "UNIX_TIMESTAMP(StartTime)," + "UNIX_TIMESTAMP(EndTime)," + "NOW() BETWEEN StartTime AND EndTime," + "Title,Folder" + " FROM assignments" + " WHERE AsgCod='%ld' AND CrsCod='%ld'", + Asg->AsgCod,Gbl.CurrentCrs.Crs.CrsCod); - /***** Get data of assignment *****/ - Asg_GetDataOfAssignment (Asg,Query); + /***** Get data of assignment *****/ + Asg_GetDataOfAssignment (Asg,Query); + } + else + /***** Clear all assignment data *****/ + Asg_ResetAssignment (Asg); } /*****************************************************************************/ @@ -706,18 +713,24 @@ void Asg_GetDataOfAssignmentByFolder (struct Assignment *Asg) { char Query[1024]; - /***** Query database *****/ - sprintf (Query,"SELECT AsgCod,Hidden,UsrCod," - "UNIX_TIMESTAMP(StartTime)," - "UNIX_TIMESTAMP(EndTime)," - "NOW() BETWEEN StartTime AND EndTime," - "Title,Folder" - " FROM assignments" - " WHERE CrsCod='%ld' AND Folder='%s'", - Gbl.CurrentCrs.Crs.CrsCod,Asg->Folder); + if (Asg->Folder[0]) + { + /***** Query database *****/ + sprintf (Query,"SELECT AsgCod,Hidden,UsrCod," + "UNIX_TIMESTAMP(StartTime)," + "UNIX_TIMESTAMP(EndTime)," + "NOW() BETWEEN StartTime AND EndTime," + "Title,Folder" + " FROM assignments" + " WHERE CrsCod='%ld' AND Folder='%s'", + Gbl.CurrentCrs.Crs.CrsCod,Asg->Folder); - /***** Get data of assignment *****/ - Asg_GetDataOfAssignment (Asg,Query); + /***** Get data of assignment *****/ + Asg_GetDataOfAssignment (Asg,Query); + } + else + /***** Clear all assignment data *****/ + Asg_ResetAssignment (Asg); } /*****************************************************************************/ @@ -731,16 +744,7 @@ static void Asg_GetDataOfAssignment (struct Assignment *Asg,const char *Query) unsigned long NumRows; /***** Clear all assignment data *****/ - Asg->AsgCod = -1L; - Asg->Hidden = false; - Asg->UsrCod = -1L; - Asg->TimeUTC[Dat_START_TIME] = - Asg->TimeUTC[Dat_END_TIME ] = (time_t) 0; - Asg->Open = false; - Asg->Title[0] = '\0'; - Asg->SendWork = false; - Asg->Folder[0] = '\0'; - Asg->IBelongToCrsOrGrps = false; + Asg_ResetAssignment (Asg); /***** Get data of assignment from database *****/ NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get assignment data"); @@ -783,6 +787,24 @@ static void Asg_GetDataOfAssignment (struct Assignment *Asg,const char *Query) DB_FreeMySQLResult (&mysql_res); } +/*****************************************************************************/ +/************************* Clear all assignment data **************************/ +/*****************************************************************************/ + +static void Asg_ResetAssignment (struct Assignment *Asg) + { + Asg->AsgCod = -1L; + Asg->Hidden = false; + Asg->UsrCod = -1L; + Asg->TimeUTC[Dat_START_TIME] = + Asg->TimeUTC[Dat_END_TIME ] = (time_t) 0; + Asg->Open = false; + Asg->Title[0] = '\0'; + Asg->SendWork = false; + Asg->Folder[0] = '\0'; + Asg->IBelongToCrsOrGrps = false; + } + /*****************************************************************************/ /************************* Free list of assignments **************************/ /*****************************************************************************/ @@ -1264,19 +1286,23 @@ void Asg_RecFormAssignment (void) extern const char *Txt_Created_new_assignment_X; extern const char *Txt_The_assignment_has_been_modified; extern const char *Txt_You_can_not_disable_file_uploading_once_folders_have_been_created; - struct Assignment OldAsg; - struct Assignment NewAsg; + struct Assignment OldAsg; // Current assigment data in database + struct Assignment NewAsg; // Assignment data received from form bool ItsANewAssignment; bool NewAssignmentIsCorrect = true; unsigned NumUsrsToBeNotifiedByEMail; char Txt[Cns_MAX_BYTES_TEXT+1]; /***** Get the code of the assignment *****/ - ItsANewAssignment = ((NewAsg.AsgCod = Asg_GetParamAsgCod ()) == -1L); + NewAsg.AsgCod = Asg_GetParamAsgCod (); + ItsANewAssignment = (NewAsg.AsgCod < 0); - if (!ItsANewAssignment) + if (ItsANewAssignment) + /***** Reset old (current, not existing) assignment data *****/ + Asg_ResetAssignment (&OldAsg); + else { - /* Get data of the old (current) assignment from database */ + /***** Get data of the old (current) assignment from database *****/ OldAsg.AsgCod = NewAsg.AsgCod; Asg_GetDataOfAssignmentByCod (&OldAsg); } diff --git a/swad_changelog.h b/swad_changelog.h index 66957018..bd3a9e93 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -189,13 +189,14 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.111.5 (2016-12-28)" +#define Log_PLATFORM_VERSION "SWAD 16.111.6 (2016-12-28)" #define CSS_FILE "swad16.111.5.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.111.6: Dec 28, 2016 Fixed bug in assigments, reported by Coverity. (211109 lines) Version 16.111.5: Dec 28, 2016 Changes in CSS related to tabs. (211084 lines) Version 16.111.4: Dec 28, 2016 Fixed bug in file browser. (211336 lines) Version 16.111.3: Dec 28, 2016 Unused code removed in file browsers. (211335 lines)