Version 18.7.29

This commit is contained in:
Antonio Cañas Vargas 2018-10-22 10:21:34 +02:00
parent ab5f548d49
commit a7ee271156
3 changed files with 109 additions and 96 deletions

View File

@ -355,10 +355,11 @@ En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 18.7.28 (2018-10-22)" #define Log_PLATFORM_VERSION "SWAD 18.7.29 (2018-10-22)"
#define CSS_FILE "swad18.4.css" #define CSS_FILE "swad18.4.css"
#define JS_FILE "swad17.17.1.js" #define JS_FILE "swad17.17.1.js"
/* /*
Version 18.7.29: Oct 22, 2018 Some sprintf for database queries changed by asprintf. (237687 lines)
Version 18.7.28: Oct 22, 2018 Some sprintf for database queries changed by asprintf. (237674 lines) Version 18.7.28: Oct 22, 2018 Some sprintf for database queries changed by asprintf. (237674 lines)
Version 18.7.27: Oct 22, 2018 Some sprintf for database queries changed by asprintf. (237661 lines) Version 18.7.27: Oct 22, 2018 Some sprintf for database queries changed by asprintf. (237661 lines)
Version 18.7.26: Oct 22, 2018 Some sprintf for database queries changed by asprintf. (237600 lines) Version 18.7.26: Oct 22, 2018 Some sprintf for database queries changed by asprintf. (237600 lines)

View File

@ -25,7 +25,9 @@
/********************************* Headers ***********************************/ /********************************* Headers ***********************************/
/*****************************************************************************/ /*****************************************************************************/
#define _GNU_SOURCE // For asprintf
#include <linux/stddef.h> // For NULL #include <linux/stddef.h> // For NULL
#include <stdio.h> // For asprintf
#include <stdlib.h> // For calloc #include <stdlib.h> // For calloc
#include <string.h> // For string functions #include <string.h> // For string functions
@ -247,7 +249,7 @@ void Hld_EditHolidays (void)
void Hld_GetListHolidays (void) void Hld_GetListHolidays (void)
{ {
char OrderBySubQuery[256]; char OrderBySubQuery[256];
char Query[2048]; char *Query;
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
unsigned NumHld; unsigned NumHld;
@ -268,30 +270,31 @@ void Hld_GetListHolidays (void)
sprintf (OrderBySubQuery,"StartDate,Place"); sprintf (OrderBySubQuery,"StartDate,Place");
break; break;
} }
sprintf (Query,"(SELECT holidays.HldCod,holidays.PlcCod," if (asprintf (&Query,"(SELECT holidays.HldCod,holidays.PlcCod,"
"places.FullName as Place,HldTyp," "places.FullName as Place,HldTyp,"
"DATE_FORMAT(holidays.StartDate,'%%Y%%m%%d') AS StartDate," "DATE_FORMAT(holidays.StartDate,'%%Y%%m%%d') AS StartDate,"
"DATE_FORMAT(holidays.EndDate,'%%Y%%m%%d') AS EndDate," "DATE_FORMAT(holidays.EndDate,'%%Y%%m%%d') AS EndDate,"
"holidays.Name" "holidays.Name"
" FROM holidays,places" " FROM holidays,places"
" WHERE holidays.InsCod=%ld" " WHERE holidays.InsCod=%ld"
" AND holidays.PlcCod=places.PlcCod" " AND holidays.PlcCod=places.PlcCod"
" AND places.InsCod=%ld)" " AND places.InsCod=%ld)"
" UNION " " UNION "
"(SELECT HldCod,PlcCod,'' as Place,HldTyp," "(SELECT HldCod,PlcCod,'' as Place,HldTyp,"
"DATE_FORMAT(StartDate,'%%Y%%m%%d') AS StartDate," "DATE_FORMAT(StartDate,'%%Y%%m%%d') AS StartDate,"
"DATE_FORMAT(EndDate,'%%Y%%m%%d') AS EndDate,Name" "DATE_FORMAT(EndDate,'%%Y%%m%%d') AS EndDate,Name"
" FROM holidays" " FROM holidays"
" WHERE InsCod=%ld" " WHERE InsCod=%ld"
" AND PlcCod NOT IN" " AND PlcCod NOT IN"
"(SELECT DISTINCT PlcCod FROM places WHERE InsCod=%ld))" "(SELECT DISTINCT PlcCod FROM places WHERE InsCod=%ld))"
" ORDER BY %s", " ORDER BY %s",
Gbl.CurrentIns.Ins.InsCod, Gbl.CurrentIns.Ins.InsCod,
Gbl.CurrentIns.Ins.InsCod, Gbl.CurrentIns.Ins.InsCod,
Gbl.CurrentIns.Ins.InsCod, Gbl.CurrentIns.Ins.InsCod,
Gbl.CurrentIns.Ins.InsCod, Gbl.CurrentIns.Ins.InsCod,
OrderBySubQuery); OrderBySubQuery) < 0)
if ((Gbl.Hlds.Num = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get holidays"))) // Holidays found... Lay_NotEnoughMemoryExit ();
if ((Gbl.Hlds.Num = (unsigned) DB_QuerySELECT_free (Query,&mysql_res,"can not get holidays"))) // Holidays found...
{ {
/***** Create list of holidays *****/ /***** Create list of holidays *****/
if ((Gbl.Hlds.Lst = (struct Holiday *) calloc ((size_t) Gbl.Hlds.Num,sizeof (struct Holiday))) == NULL) if ((Gbl.Hlds.Lst = (struct Holiday *) calloc ((size_t) Gbl.Hlds.Num,sizeof (struct Holiday))) == NULL)
@ -358,7 +361,7 @@ void Hld_GetListHolidays (void)
static void Hld_GetDataOfHolidayByCod (struct Holiday *Hld) static void Hld_GetDataOfHolidayByCod (struct Holiday *Hld)
{ {
char Query[2048]; char *Query;
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
@ -375,30 +378,31 @@ static void Hld_GetDataOfHolidayByCod (struct Holiday *Hld)
Lay_ShowErrorAndExit ("Wrong code of holiday."); Lay_ShowErrorAndExit ("Wrong code of holiday.");
/***** Get data of holiday from database *****/ /***** Get data of holiday from database *****/
sprintf (Query,"(SELECT holidays.PlcCod,places.FullName as Place,HldTyp," if (asprintf (&Query,"(SELECT holidays.PlcCod,places.FullName as Place,HldTyp,"
"DATE_FORMAT(holidays.StartDate,'%%Y%%m%%d')," "DATE_FORMAT(holidays.StartDate,'%%Y%%m%%d'),"
"DATE_FORMAT(holidays.EndDate,'%%Y%%m%%d'),holidays.Name" "DATE_FORMAT(holidays.EndDate,'%%Y%%m%%d'),holidays.Name"
" FROM holidays,places" " FROM holidays,places"
" WHERE holidays.HldCod=%ld" " WHERE holidays.HldCod=%ld"
" AND holidays.InsCod=%ld" " AND holidays.InsCod=%ld"
" AND holidays.PlcCod=places.PlcCod" " AND holidays.PlcCod=places.PlcCod"
" AND places.InsCod=%ld)" " AND places.InsCod=%ld)"
" UNION " " UNION "
"(SELECT PlcCod,'' as Place,HldTyp," "(SELECT PlcCod,'' as Place,HldTyp,"
"DATE_FORMAT(StartDate,'%%Y%%m%%d')," "DATE_FORMAT(StartDate,'%%Y%%m%%d'),"
"DATE_FORMAT(EndDate,'%%Y%%m%%d'),Name" "DATE_FORMAT(EndDate,'%%Y%%m%%d'),Name"
" FROM holidays" " FROM holidays"
" WHERE HldCod=%ld" " WHERE HldCod=%ld"
" AND InsCod=%ld" " AND InsCod=%ld"
" AND PlcCod NOT IN" " AND PlcCod NOT IN"
"(SELECT DISTINCT PlcCod FROM places WHERE InsCod=%ld))", "(SELECT DISTINCT PlcCod FROM places WHERE InsCod=%ld))",
Hld->HldCod, Hld->HldCod,
Gbl.CurrentIns.Ins.InsCod, Gbl.CurrentIns.Ins.InsCod,
Gbl.CurrentIns.Ins.InsCod, Gbl.CurrentIns.Ins.InsCod,
Hld->HldCod, Hld->HldCod,
Gbl.CurrentIns.Ins.InsCod, Gbl.CurrentIns.Ins.InsCod,
Gbl.CurrentIns.Ins.InsCod); Gbl.CurrentIns.Ins.InsCod) < 0)
if (DB_QuerySELECT (Query,&mysql_res,"can not get data of a holiday")) // Holiday found... Lay_NotEnoughMemoryExit ();
if (DB_QuerySELECT_free (Query,&mysql_res,"can not get data of a holiday")) // Holiday found...
{ {
/* Get row */ /* Get row */
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
@ -639,7 +643,7 @@ long Hld_GetParamHldCod (void)
void Hld_RemoveHoliday1 (void) void Hld_RemoveHoliday1 (void)
{ {
extern const char *Txt_Holiday_X_removed; extern const char *Txt_Holiday_X_removed;
char Query[128]; char *Query;
struct Holiday Hld; struct Holiday Hld;
/***** Get holiday code *****/ /***** Get holiday code *****/
@ -650,9 +654,10 @@ void Hld_RemoveHoliday1 (void)
Hld_GetDataOfHolidayByCod (&Hld); Hld_GetDataOfHolidayByCod (&Hld);
/***** Remove holiday *****/ /***** Remove holiday *****/
sprintf (Query,"DELETE FROM holidays WHERE HldCod=%ld", if (asprintf (&Query,"DELETE FROM holidays WHERE HldCod=%ld",
Hld.HldCod); Hld.HldCod) < 0)
DB_QueryDELETE (Query,"can not remove a holiday"); Lay_NotEnoughMemoryExit ();
DB_QueryDELETE_free (Query,"can not remove a holiday");
/***** Write message to show the change made *****/ /***** Write message to show the change made *****/
Gbl.Alert.Type = Ale_SUCCESS; Gbl.Alert.Type = Ale_SUCCESS;
@ -678,7 +683,7 @@ void Hld_RemoveHoliday2 (void)
void Hld_ChangeHolidayPlace1 (void) void Hld_ChangeHolidayPlace1 (void)
{ {
extern const char *Txt_The_place_of_the_holiday_X_has_changed_to_Y; extern const char *Txt_The_place_of_the_holiday_X_has_changed_to_Y;
char Query[128]; char *Query;
struct Holiday *Hld; struct Holiday *Hld;
struct Place NewPlace; struct Place NewPlace;
@ -699,9 +704,10 @@ void Hld_ChangeHolidayPlace1 (void)
Hld_GetDataOfHolidayByCod (Hld); Hld_GetDataOfHolidayByCod (Hld);
/***** Update the place in database *****/ /***** Update the place in database *****/
sprintf (Query,"UPDATE holidays SET PlcCod=%ld WHERE HldCod=%ld", if (asprintf (&Query,"UPDATE holidays SET PlcCod=%ld WHERE HldCod=%ld",
NewPlace.PlcCod,Hld->HldCod); NewPlace.PlcCod,Hld->HldCod) < 0)
DB_QueryUPDATE (Query,"can not update the place of a holiday"); Lay_NotEnoughMemoryExit ();
DB_QueryUPDATE_free (Query,"can not update the place of a holiday");
Hld->PlcCod = NewPlace.PlcCod; Hld->PlcCod = NewPlace.PlcCod;
Str_Copy (Hld->PlaceFullName,NewPlace.FullName, Str_Copy (Hld->PlaceFullName,NewPlace.FullName,
Plc_MAX_BYTES_PLACE_FULL_NAME); Plc_MAX_BYTES_PLACE_FULL_NAME);
@ -729,7 +735,7 @@ void Hld_ChangeHolidayPlace2 (void)
void Hld_ChangeHolidayType1 (void) void Hld_ChangeHolidayType1 (void)
{ {
extern const char *Txt_The_type_of_the_holiday_X_has_changed; extern const char *Txt_The_type_of_the_holiday_X_has_changed;
char Query[256]; char *Query;
struct Holiday *Hld; struct Holiday *Hld;
Hld = &Gbl.Hlds.EditingHld; Hld = &Gbl.Hlds.EditingHld;
@ -746,10 +752,11 @@ void Hld_ChangeHolidayType1 (void)
/***** Update holiday/no school period in database *****/ /***** Update holiday/no school period in database *****/
Dat_AssignDate (&Hld->EndDate,&Hld->StartDate); Dat_AssignDate (&Hld->EndDate,&Hld->StartDate);
sprintf (Query,"UPDATE holidays SET HldTyp=%u,EndDate=StartDate" if (asprintf (&Query,"UPDATE holidays SET HldTyp=%u,EndDate=StartDate"
" WHERE HldCod=%ld", " WHERE HldCod=%ld",
(unsigned) Hld->HldTyp,Hld->HldCod); (unsigned) Hld->HldTyp,Hld->HldCod) < 0)
DB_QueryUPDATE (Query,"can not update the type of a holiday"); Lay_NotEnoughMemoryExit ();
DB_QueryUPDATE_free (Query,"can not update the type of a holiday");
/***** Write message to show the change made *****/ /***** Write message to show the change made *****/
Gbl.Alert.Type = Ale_SUCCESS; Gbl.Alert.Type = Ale_SUCCESS;
@ -792,7 +799,7 @@ void Hld_ChangeEndDate1 (void)
static void Hld_ChangeDate (Hld_StartOrEndDate_t StartOrEndDate) static void Hld_ChangeDate (Hld_StartOrEndDate_t StartOrEndDate)
{ {
extern const char *Txt_The_date_of_the_holiday_X_has_changed_to_Y; extern const char *Txt_The_date_of_the_holiday_X_has_changed_to_Y;
char Query[128]; char *Query;
struct Holiday *Hld; struct Holiday *Hld;
struct Date NewDate; struct Date NewDate;
struct Date *PtrDate = NULL; // Initialized to avoid warning struct Date *PtrDate = NULL; // Initialized to avoid warning
@ -842,13 +849,14 @@ static void Hld_ChangeDate (Hld_StartOrEndDate_t StartOrEndDate)
} }
/***** Update the date in database *****/ /***** Update the date in database *****/
sprintf (Query,"UPDATE holidays SET %s='%04u%02u%02u' WHERE HldCod=%ld", if (asprintf (&Query,"UPDATE holidays SET %s='%04u%02u%02u' WHERE HldCod=%ld",
StrStartOrEndDate, StrStartOrEndDate,
NewDate.Year, NewDate.Year,
NewDate.Month, NewDate.Month,
NewDate.Day, NewDate.Day,
Hld->HldCod); Hld->HldCod) < 0)
DB_QueryUPDATE (Query,"can not update the date of a holiday"); Lay_NotEnoughMemoryExit ();
DB_QueryUPDATE_free (Query,"can not update the date of a holiday");
Dat_AssignDate (PtrDate,&NewDate); Dat_AssignDate (PtrDate,&NewDate);
/***** Write message to show the change made *****/ /***** Write message to show the change made *****/
@ -881,7 +889,7 @@ void Hld_RenameHoliday1 (void)
extern const char *Txt_You_can_not_leave_the_name_of_the_holiday_X_empty; extern const char *Txt_You_can_not_leave_the_name_of_the_holiday_X_empty;
extern const char *Txt_The_name_of_the_holiday_X_has_changed_to_Y; extern const char *Txt_The_name_of_the_holiday_X_has_changed_to_Y;
extern const char *Txt_The_name_of_the_holiday_X_has_not_changed; extern const char *Txt_The_name_of_the_holiday_X_has_not_changed;
char Query[128 + Hld_MAX_BYTES_HOLIDAY_NAME]; char *Query;
struct Holiday *Hld; struct Holiday *Hld;
char NewHldName[Hld_MAX_BYTES_HOLIDAY_NAME + 1]; char NewHldName[Hld_MAX_BYTES_HOLIDAY_NAME + 1];
@ -913,9 +921,10 @@ void Hld_RenameHoliday1 (void)
{ {
/***** If degree was in database... *****/ /***** If degree was in database... *****/
/* Update the table changing old name by new name */ /* Update the table changing old name by new name */
sprintf (Query,"UPDATE holidays SET Name='%s' WHERE HldCod=%ld", if (asprintf (&Query,"UPDATE holidays SET Name='%s' WHERE HldCod=%ld",
NewHldName,Hld->HldCod); NewHldName,Hld->HldCod) < 0)
DB_QueryUPDATE (Query,"can not update the text of a holiday"); Lay_NotEnoughMemoryExit ();
DB_QueryUPDATE_free (Query,"can not update the text of a holiday");
Str_Copy (Hld->Name,NewHldName, Str_Copy (Hld->Name,NewHldName,
Hld_MAX_BYTES_HOLIDAY_NAME); Hld_MAX_BYTES_HOLIDAY_NAME);
@ -1188,20 +1197,21 @@ void Hld_RecFormNewHoliday2 (void)
static void Hld_CreateHoliday (struct Holiday *Hld) static void Hld_CreateHoliday (struct Holiday *Hld)
{ {
char Query[256 + Hld_MAX_BYTES_HOLIDAY_NAME]; char *Query;
/***** Create a new holiday or no school period *****/ /***** Create a new holiday or no school period *****/
sprintf (Query,"INSERT INTO holidays" if (asprintf (&Query,"INSERT INTO holidays"
" (InsCod,PlcCod,HldTyp,StartDate,EndDate,Name)" " (InsCod,PlcCod,HldTyp,StartDate,EndDate,Name)"
" VALUES" " VALUES"
" (%ld,%ld,%u,'%04u%02u%02u','%04u%02u%02u','%s')", " (%ld,%ld,%u,'%04u%02u%02u','%04u%02u%02u','%s')",
Gbl.CurrentIns.Ins.InsCod,Hld->PlcCod,(unsigned) Hld->HldTyp, Gbl.CurrentIns.Ins.InsCod,Hld->PlcCod,(unsigned) Hld->HldTyp,
Hld->StartDate.Year, Hld->StartDate.Year,
Hld->StartDate.Month, Hld->StartDate.Month,
Hld->StartDate.Day, Hld->StartDate.Day,
Hld->EndDate.Year, Hld->EndDate.Year,
Hld->EndDate.Month, Hld->EndDate.Month,
Hld->EndDate.Day, Hld->EndDate.Day,
Hld->Name); Hld->Name) < 0)
DB_QueryINSERT (Query,"can not create holiday"); Lay_NotEnoughMemoryExit ();
DB_QueryINSERT_free (Query,"can not create holiday");
} }

View File

@ -25,7 +25,8 @@
/********************************* Headers ***********************************/ /********************************* Headers ***********************************/
/*****************************************************************************/ /*****************************************************************************/
#include <stdio.h> // For fprintf, etc. #define _GNU_SOURCE // For asprintf
#include <stdio.h> // For asprintf, fprintf, etc.
#include <string.h> #include <string.h>
#include "swad_box.h" #include "swad_box.h"
@ -121,7 +122,7 @@ static void Ico_PutIconsIconSet (void)
void Ico_ChangeIconSet (void) void Ico_ChangeIconSet (void)
{ {
char Query[512]; char *Query;
/***** Get param with icon set *****/ /***** Get param with icon set *****/
Gbl.Prefs.IconSet = Ico_GetParamIconSet (); Gbl.Prefs.IconSet = Ico_GetParamIconSet ();
@ -134,10 +135,11 @@ void Ico_ChangeIconSet (void)
/***** Store icon set in database *****/ /***** Store icon set in database *****/
if (Gbl.Usrs.Me.Logged) if (Gbl.Usrs.Me.Logged)
{ {
sprintf (Query,"UPDATE usr_data SET IconSet='%s' WHERE UsrCod=%ld", if (asprintf (&Query,"UPDATE usr_data SET IconSet='%s' WHERE UsrCod=%ld",
Ico_IconSetId[Gbl.Prefs.IconSet], Ico_IconSetId[Gbl.Prefs.IconSet],
Gbl.Usrs.Me.UsrDat.UsrCod); Gbl.Usrs.Me.UsrDat.UsrCod) < 0)
DB_QueryUPDATE (Query,"can not update your preference about icon set"); Lay_NotEnoughMemoryExit ();
DB_QueryUPDATE_free (Query,"can not update your preference about icon set");
} }
/***** Set preferences from current IP *****/ /***** Set preferences from current IP *****/