Version 16.118.1

This commit is contained in:
Antonio Cañas Vargas 2017-01-17 03:33:05 +01:00
parent a70828bbc5
commit bde39748d4
21 changed files with 348 additions and 174 deletions

View File

@ -205,27 +205,33 @@ unsigned ID_GetListUsrCodsFromUsrID (struct UsrData *UsrDat,
NumID++) NumID++)
{ {
if (NumID) if (NumID)
Str_Concat (Query,",",MaxLength); Str_Concat (Query,",",
MaxLength);
sprintf (SubQuery,"'%s'",UsrDat->IDs.List[NumID].ID); sprintf (SubQuery,"'%s'",UsrDat->IDs.List[NumID].ID);
Str_Concat (Query,SubQuery,MaxLength); Str_Concat (Query,SubQuery,
MaxLength);
} }
Str_Concat (Query,")",MaxLength); Str_Concat (Query,")",
MaxLength);
if (CheckPassword) if (CheckPassword)
{ {
if (OnlyConfirmedIDs) if (OnlyConfirmedIDs)
Str_Concat (Query," AND usr_IDs.Confirmed='Y'",MaxLength); Str_Concat (Query," AND usr_IDs.Confirmed='Y'",
MaxLength);
// Get user's code if I have written the correct password // Get user's code if I have written the correct password
// or if password in database is empty (new user) // or if password in database is empty (new user)
sprintf (SubQuery," AND usr_IDs.UsrCod=usr_data.UsrCod" sprintf (SubQuery," AND usr_IDs.UsrCod=usr_data.UsrCod"
" AND (usr_data.Password='%s' OR usr_data.Password='')", " AND (usr_data.Password='%s' OR usr_data.Password='')",
EncryptedPassword); EncryptedPassword);
Str_Concat (Query,SubQuery,MaxLength); Str_Concat (Query,SubQuery,
MaxLength);
} }
else if (OnlyConfirmedIDs) else if (OnlyConfirmedIDs)
Str_Concat (Query," AND Confirmed='Y'",MaxLength); Str_Concat (Query," AND Confirmed='Y'",
MaxLength);
ListUsrCods->NumUsrs = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get user's codes"); ListUsrCods->NumUsrs = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get user's codes");

View File

@ -458,8 +458,10 @@ static void Asg_WriteAsgAuthor (struct Assignment *Asg)
Usr_MAX_BYTES_SURNAMES); Usr_MAX_BYTES_SURNAMES);
if (UsrDat.Surname2[0]) if (UsrDat.Surname2[0])
{ {
Str_Concat (Surnames," ",Usr_MAX_BYTES_SURNAMES); Str_Concat (Surnames," ",
Str_Concat (Surnames,UsrDat.Surname2,Usr_MAX_BYTES_SURNAMES); Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames,UsrDat.Surname2,
Usr_MAX_BYTES_SURNAMES);
} }
Str_LimitLengthHTMLStr (FirstName,8); Str_LimitLengthHTMLStr (FirstName,8);
Str_LimitLengthHTMLStr (Surnames,8); Str_LimitLengthHTMLStr (Surnames,8);

View File

@ -500,8 +500,10 @@ static void Att_WriteAttEventAuthor (struct AttendanceEvent *Att)
Usr_MAX_BYTES_SURNAMES); Usr_MAX_BYTES_SURNAMES);
if (UsrDat.Surname2[0]) if (UsrDat.Surname2[0])
{ {
Str_Concat (Surnames," ",Usr_MAX_BYTES_SURNAMES); Str_Concat (Surnames," ",
Str_Concat (Surnames,UsrDat.Surname2,Usr_MAX_BYTES_SURNAMES); Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames,UsrDat.Surname2,
Usr_MAX_BYTES_SURNAMES);
} }
Str_LimitLengthHTMLStr (FirstName,8); Str_LimitLengthHTMLStr (FirstName,8);
Str_LimitLengthHTMLStr (Surnames,8); Str_LimitLengthHTMLStr (Surnames,8);
@ -2432,9 +2434,11 @@ static unsigned Att_GetNumStdsFromAListWhoAreInAttEvent (long AttCod,long LstSel
NumStd ? ",%ld" : NumStd ? ",%ld" :
"%ld", "%ld",
LstSelectedUsrCods[NumStd]); LstSelectedUsrCods[NumStd]);
Str_Concat (Query,SubQuery,MaxLength); Str_Concat (Query,SubQuery,
MaxLength);
} }
Str_Concat (Query,") AND Present='Y'",MaxLength); Str_Concat (Query,") AND Present='Y'",
MaxLength);
NumStdsInAttEvent = (unsigned) DB_QueryCOUNT (Query,"can not get number of students from a list who are registered in an event"); NumStdsInAttEvent = (unsigned) DB_QueryCOUNT (Query,"can not get number of students from a list who are registered in an event");

View File

@ -191,13 +191,14 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.118 (2017-01-16)" #define Log_PLATFORM_VERSION "SWAD 16.118.1 (2017-01-16)"
#define CSS_FILE "swad16.111.5.css" #define CSS_FILE "swad16.111.5.css"
#define JS_FILE "swad16.114.js" #define JS_FILE "swad16.114.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.118.1: Jan 17, 2017 Code refactoring related to string concatenation. (211850 lines)
Version 16.118: Jan 17, 2017 Code refactoring related to string copy. (211676 lines) Version 16.118: Jan 17, 2017 Code refactoring related to string copy. (211676 lines)
Version 16.117.1: Jan 16, 2017 Code refactoring related to string concatenation. (211229 lines) Version 16.117.1: Jan 16, 2017 Code refactoring related to string concatenation. (211229 lines)
Version 16.117: Jan 16, 2017 Code refactoring related to string concatenation. (211244 lines) Version 16.117: Jan 16, 2017 Code refactoring related to string concatenation. (211244 lines)

View File

@ -423,11 +423,15 @@ void Cht_OpenChatWindow (void)
Usr_MAX_BYTES_FULL_NAME); Usr_MAX_BYTES_FULL_NAME);
if (Gbl.Usrs.Me.UsrDat.Surname2[0]) if (Gbl.Usrs.Me.UsrDat.Surname2[0])
{ {
Str_Concat (UsrName," ",Usr_MAX_BYTES_FULL_NAME); Str_Concat (UsrName," ",
Str_Concat (UsrName,Gbl.Usrs.Me.UsrDat.Surname2,Usr_MAX_BYTES_FULL_NAME); Usr_MAX_BYTES_FULL_NAME);
Str_Concat (UsrName,Gbl.Usrs.Me.UsrDat.Surname2,
Usr_MAX_BYTES_FULL_NAME);
} }
Str_Concat (UsrName,", ",Usr_MAX_BYTES_FULL_NAME); Str_Concat (UsrName,", ",
Str_Concat (UsrName,Gbl.Usrs.Me.UsrDat.FirstName,Usr_MAX_BYTES_FULL_NAME); Usr_MAX_BYTES_FULL_NAME);
Str_Concat (UsrName,Gbl.Usrs.Me.UsrDat.FirstName,
Usr_MAX_BYTES_FULL_NAME);
/***** Build the lists of available rooms *****/ /***** Build the lists of available rooms *****/
sprintf (ListRoomCodes,"#%s",RoomCode); sprintf (ListRoomCodes,"#%s",RoomCode);
@ -438,40 +442,49 @@ void Cht_OpenChatWindow (void)
if (strcmp (RoomCode,"GBL_USR")) if (strcmp (RoomCode,"GBL_USR"))
{ {
Str_Concat (ListRoomCodes,"|#GBL_USR",sizeof (ListRoomCodes) - 1); Str_Concat (ListRoomCodes,"|#GBL_USR",
Cht_MAX_LENGTH_ROOM_CODES);
sprintf (RoomShortName,"|%s",Txt_SEX_PLURAL_Abc[Usr_SEX_ALL]); sprintf (RoomShortName,"|%s",Txt_SEX_PLURAL_Abc[Usr_SEX_ALL]);
Str_Concat (ListRoomShortNames,RoomShortName,sizeof (ListRoomShortNames) - 1); Str_Concat (ListRoomShortNames,RoomShortName,
Cht_MAX_LENGTH_ROOM_SHRT_NAMES);
sprintf (RoomFullName,"|%s (%s)", sprintf (RoomFullName,"|%s (%s)",
Txt_General,Txt_SEX_PLURAL_abc[Usr_SEX_ALL]); Txt_General,Txt_SEX_PLURAL_abc[Usr_SEX_ALL]);
Str_Concat (ListRoomFullNames,RoomFullName,sizeof (ListRoomFullNames) - 1); Str_Concat (ListRoomFullNames,RoomFullName,
Cht_MAX_LENGTH_ROOM_FULL_NAMES);
} }
if (Gbl.Usrs.Me.LoggedRole == Rol_STUDENT) if (Gbl.Usrs.Me.LoggedRole == Rol_STUDENT)
if (strcmp (RoomCode,"GBL_STD")) if (strcmp (RoomCode,"GBL_STD"))
{ {
Str_Concat (ListRoomCodes,"|#GBL_STD",sizeof (ListRoomCodes) - 1); Str_Concat (ListRoomCodes,"|#GBL_STD",
Cht_MAX_LENGTH_ROOM_CODES);
sprintf (RoomShortName,"|%s",Txt_Students_ABBREVIATION); sprintf (RoomShortName,"|%s",Txt_Students_ABBREVIATION);
Str_Concat (ListRoomShortNames,RoomShortName,sizeof (ListRoomShortNames) - 1); Str_Concat (ListRoomShortNames,RoomShortName,
Cht_MAX_LENGTH_ROOM_SHRT_NAMES);
sprintf (RoomFullName,"|%s (%s)",Txt_General, sprintf (RoomFullName,"|%s (%s)",Txt_General,
Txt_ROLES_PLURAL_abc[Rol_STUDENT][Usr_SEX_ALL]); Txt_ROLES_PLURAL_abc[Rol_STUDENT][Usr_SEX_ALL]);
Str_Concat (ListRoomFullNames,RoomFullName,sizeof (ListRoomFullNames) - 1); Str_Concat (ListRoomFullNames,RoomFullName,
Cht_MAX_LENGTH_ROOM_FULL_NAMES);
} }
if (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER) if (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER)
if (strcmp (RoomCode,"GBL_TCH")) if (strcmp (RoomCode,"GBL_TCH"))
{ {
Str_Concat (ListRoomCodes,"|#GBL_TCH",sizeof (ListRoomCodes) - 1); Str_Concat (ListRoomCodes,"|#GBL_TCH",
Cht_MAX_LENGTH_ROOM_CODES);
sprintf (RoomShortName,"|%s",Txt_Teachers_ABBREVIATION); sprintf (RoomShortName,"|%s",Txt_Teachers_ABBREVIATION);
Str_Concat (ListRoomShortNames,RoomShortName,sizeof (ListRoomShortNames) - 1); Str_Concat (ListRoomShortNames,RoomShortName,
Cht_MAX_LENGTH_ROOM_SHRT_NAMES);
sprintf (RoomFullName,"|%s (%s)", sprintf (RoomFullName,"|%s (%s)",
Txt_General,Txt_ROLES_PLURAL_abc[Rol_TEACHER][Usr_SEX_ALL]); Txt_General,Txt_ROLES_PLURAL_abc[Rol_TEACHER][Usr_SEX_ALL]);
Str_Concat (ListRoomFullNames,RoomFullName,sizeof (ListRoomFullNames) - 1); Str_Concat (ListRoomFullNames,RoomFullName,
Cht_MAX_LENGTH_ROOM_FULL_NAMES);
} }
for (NumMyDeg = 0; for (NumMyDeg = 0;
@ -481,20 +494,26 @@ void Cht_OpenChatWindow (void)
sprintf (ThisRoomCode,"DEG_%ld",Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod); sprintf (ThisRoomCode,"DEG_%ld",Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod);
if (strcmp (RoomCode,ThisRoomCode)) if (strcmp (RoomCode,ThisRoomCode))
{ {
Str_Concat (ListRoomCodes,"|#",sizeof (ListRoomCodes) - 1); Str_Concat (ListRoomCodes,"|#",
Str_Concat (ListRoomCodes,ThisRoomCode,sizeof (ListRoomCodes) - 1); Cht_MAX_LENGTH_ROOM_CODES);
Str_Concat (ListRoomCodes,ThisRoomCode,
Cht_MAX_LENGTH_ROOM_CODES);
/* Get data of this degree */ /* Get data of this degree */
Deg.DegCod = Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod; Deg.DegCod = Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg);
sprintf (ThisRoomShortName,"%s",Deg.ShrtName); sprintf (ThisRoomShortName,"%s",Deg.ShrtName);
Str_Concat (ListRoomShortNames,"|",sizeof (ListRoomShortNames) - 1); Str_Concat (ListRoomShortNames,"|",
Str_Concat (ListRoomShortNames,ThisRoomShortName,sizeof (ListRoomShortNames) - 1); Cht_MAX_LENGTH_ROOM_SHRT_NAMES);
Str_Concat (ListRoomShortNames,ThisRoomShortName,
Cht_MAX_LENGTH_ROOM_SHRT_NAMES);
sprintf (ThisRoomFullName,"%s %s",Txt_Degree,Deg.ShrtName); sprintf (ThisRoomFullName,"%s %s",Txt_Degree,Deg.ShrtName);
Str_Concat (ListRoomFullNames,"|",sizeof (ListRoomFullNames) - 1); Str_Concat (ListRoomFullNames,"|",
Str_Concat (ListRoomFullNames,ThisRoomFullName,sizeof (ListRoomFullNames) - 1); Cht_MAX_LENGTH_ROOM_FULL_NAMES);
Str_Concat (ListRoomFullNames,ThisRoomFullName,
Cht_MAX_LENGTH_ROOM_FULL_NAMES);
} }
} }
@ -505,20 +524,26 @@ void Cht_OpenChatWindow (void)
sprintf (ThisRoomCode,"CRS_%ld",Gbl.Usrs.Me.MyCrss.Crss[NumMyCrs].CrsCod); sprintf (ThisRoomCode,"CRS_%ld",Gbl.Usrs.Me.MyCrss.Crss[NumMyCrs].CrsCod);
if (strcmp (RoomCode,ThisRoomCode)) if (strcmp (RoomCode,ThisRoomCode))
{ {
Str_Concat (ListRoomCodes,"|#",sizeof (ListRoomCodes) - 1); Str_Concat (ListRoomCodes,"|#",
Str_Concat (ListRoomCodes,ThisRoomCode,sizeof (ListRoomCodes) - 1); Cht_MAX_LENGTH_ROOM_CODES);
Str_Concat (ListRoomCodes,ThisRoomCode,
Cht_MAX_LENGTH_ROOM_CODES);
/* Get data of this course */ /* Get data of this course */
Crs.CrsCod = Gbl.Usrs.Me.MyCrss.Crss[NumMyCrs].CrsCod; Crs.CrsCod = Gbl.Usrs.Me.MyCrss.Crss[NumMyCrs].CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs);
sprintf (ThisRoomShortName,"%s",Crs.ShrtName); sprintf (ThisRoomShortName,"%s",Crs.ShrtName);
Str_Concat (ListRoomShortNames,"|",sizeof (ListRoomShortNames) - 1); Str_Concat (ListRoomShortNames,"|",
Str_Concat (ListRoomShortNames,ThisRoomShortName,sizeof (ListRoomShortNames) - 1); Cht_MAX_LENGTH_ROOM_SHRT_NAMES);
Str_Concat (ListRoomShortNames,ThisRoomShortName,
Cht_MAX_LENGTH_ROOM_SHRT_NAMES);
sprintf (ThisRoomFullName,"%s %s",Txt_Course,Crs.ShrtName); sprintf (ThisRoomFullName,"%s %s",Txt_Course,Crs.ShrtName);
Str_Concat (ListRoomFullNames,"|",sizeof (ListRoomFullNames) - 1); Str_Concat (ListRoomFullNames,"|",
Str_Concat (ListRoomFullNames,ThisRoomFullName,sizeof (ListRoomFullNames) - 1); Cht_MAX_LENGTH_ROOM_FULL_NAMES);
Str_Concat (ListRoomFullNames,ThisRoomFullName,
Cht_MAX_LENGTH_ROOM_FULL_NAMES);
} }
} }

View File

@ -969,17 +969,21 @@ void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData)
{ {
sprintf (StrField,"countries.Name_%s,", sprintf (StrField,"countries.Name_%s,",
Txt_STR_LANG_ID[Lan]); Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryNam1,StrField,Cty_MAX_LENGTH_SUBQUERY_CTYS); Str_Concat (SubQueryNam1,StrField,
Cty_MAX_LENGTH_SUBQUERY_CTYS);
sprintf (StrField,"Name_%s,", sprintf (StrField,"Name_%s,",
Txt_STR_LANG_ID[Lan]); Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryNam2,StrField,Cty_MAX_LENGTH_SUBQUERY_CTYS); Str_Concat (SubQueryNam2,StrField,
Cty_MAX_LENGTH_SUBQUERY_CTYS);
sprintf (StrField,"countries.WWW_%s,", sprintf (StrField,"countries.WWW_%s,",
Txt_STR_LANG_ID[Lan]); Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryWWW1,StrField,Cty_MAX_LENGTH_SUBQUERY_CTYS); Str_Concat (SubQueryWWW1,StrField,
Cty_MAX_LENGTH_SUBQUERY_CTYS);
sprintf (StrField,"WWW_%s,", sprintf (StrField,"WWW_%s,",
Txt_STR_LANG_ID[Lan]); Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryWWW2,StrField,Cty_MAX_LENGTH_SUBQUERY_CTYS); Str_Concat (SubQueryWWW2,StrField,
Cty_MAX_LENGTH_SUBQUERY_CTYS);
} }
switch (Gbl.Ctys.SelectedOrderType) switch (Gbl.Ctys.SelectedOrderType)
@ -1258,14 +1262,18 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty,Cty_GetExtraData_t GetExtraD
Lan++) Lan++)
{ {
sprintf (StrField,"countries.Name_%s,",Txt_STR_LANG_ID[Lan]); sprintf (StrField,"countries.Name_%s,",Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryNam1,StrField,Cty_MAX_LENGTH_SUBQUERY_CTYS); Str_Concat (SubQueryNam1,StrField,
Cty_MAX_LENGTH_SUBQUERY_CTYS);
sprintf (StrField,"Name_%s,",Txt_STR_LANG_ID[Lan]); sprintf (StrField,"Name_%s,",Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryNam2,StrField,Cty_MAX_LENGTH_SUBQUERY_CTYS); Str_Concat (SubQueryNam2,StrField,
Cty_MAX_LENGTH_SUBQUERY_CTYS);
sprintf (StrField,"countries.WWW_%s,",Txt_STR_LANG_ID[Lan]); sprintf (StrField,"countries.WWW_%s,",Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryWWW1,StrField,Cty_MAX_LENGTH_SUBQUERY_CTYS); Str_Concat (SubQueryWWW1,StrField,
Cty_MAX_LENGTH_SUBQUERY_CTYS);
sprintf (StrField,"WWW_%s,",Txt_STR_LANG_ID[Lan]); sprintf (StrField,"WWW_%s,",Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryWWW2,StrField,Cty_MAX_LENGTH_SUBQUERY_CTYS); Str_Concat (SubQueryWWW2,StrField,
Cty_MAX_LENGTH_SUBQUERY_CTYS);
} }
sprintf (Query,"(SELECT countries.Alpha2,%s%sCOUNT(*) AS NumUsrs" sprintf (Query,"(SELECT countries.Alpha2,%s%sCOUNT(*) AS NumUsrs"
" FROM countries,usr_data" " FROM countries,usr_data"
@ -2114,18 +2122,26 @@ static void Cty_CreateCountry (struct Country *Cty)
Lan++) Lan++)
{ {
sprintf (StrField,",Name_%s",Txt_STR_LANG_ID[Lan]); sprintf (StrField,",Name_%s",Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryNam1,StrField,Cty_MAX_LENGTH_SUBQUERY_CTYS); Str_Concat (SubQueryNam1,StrField,
Cty_MAX_LENGTH_SUBQUERY_CTYS);
Str_Concat (SubQueryNam2,",'" ,Cty_MAX_LENGTH_SUBQUERY_CTYS_NAME); Str_Concat (SubQueryNam2,",'",
Str_Concat (SubQueryNam2,Cty->Name[Lan],Cty_MAX_LENGTH_SUBQUERY_CTYS_NAME); Cty_MAX_LENGTH_SUBQUERY_CTYS_NAME);
Str_Concat (SubQueryNam2,"'" ,Cty_MAX_LENGTH_SUBQUERY_CTYS_NAME); Str_Concat (SubQueryNam2,Cty->Name[Lan],
Cty_MAX_LENGTH_SUBQUERY_CTYS_NAME);
Str_Concat (SubQueryNam2,"'",
Cty_MAX_LENGTH_SUBQUERY_CTYS_NAME);
sprintf (StrField,",WWW_%s",Txt_STR_LANG_ID[Lan]); sprintf (StrField,",WWW_%s",Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryWWW1,StrField,Cty_MAX_LENGTH_SUBQUERY_CTYS); Str_Concat (SubQueryWWW1,StrField,
Cty_MAX_LENGTH_SUBQUERY_CTYS);
Str_Concat (SubQueryWWW2,",'" ,Cty_MAX_LENGTH_SUBQUERY_CTYS_WWW); Str_Concat (SubQueryWWW2,",'",
Str_Concat (SubQueryWWW2,Cty->WWW[Lan],Cty_MAX_LENGTH_SUBQUERY_CTYS_WWW); Cty_MAX_LENGTH_SUBQUERY_CTYS_WWW);
Str_Concat (SubQueryWWW2,"'" ,Cty_MAX_LENGTH_SUBQUERY_CTYS_WWW); Str_Concat (SubQueryWWW2,Cty->WWW[Lan],
Cty_MAX_LENGTH_SUBQUERY_CTYS_WWW);
Str_Concat (SubQueryWWW2,"'",
Cty_MAX_LENGTH_SUBQUERY_CTYS_WWW);
} }
sprintf (Query,"INSERT INTO countries (CtyCod,Alpha2%s%s)" sprintf (Query,"INSERT INTO countries (CtyCod,Alpha2%s%s)"
" VALUES ('%03ld','%s'%s%s)", " VALUES ('%03ld','%s'%s%s)",

View File

@ -330,7 +330,8 @@ void Fil_CreateUpdateFile (const char CurrentName[PATH_MAX + 1],
PATH_MAX); PATH_MAX);
NewName[LengthFileRoot] = '\0'; NewName[LengthFileRoot] = '\0';
sprintf (OldName,"%s%s",NewName,ExtensionOldName); sprintf (OldName,"%s%s",NewName,ExtensionOldName);
Str_Concat (NewName,".new",PATH_MAX); Str_Concat (NewName,".new",
PATH_MAX);
/* The new file shouldn't exist. If it exists is due to any error when running this CGI formerly /* The new file shouldn't exist. If it exists is due to any error when running this CGI formerly
and the file was not renamed successfully. In this case, remove it! */ and the file was not renamed successfully. In this case, remove it! */

View File

@ -8176,8 +8176,10 @@ void Brw_RecFolderFileBrowser (void)
if (strlen (Path) + 1 + strlen (Gbl.FileBrowser.NewFilFolLnkName) > PATH_MAX) if (strlen (Path) + 1 + strlen (Gbl.FileBrowser.NewFilFolLnkName) > PATH_MAX)
Lay_ShowErrorAndExit ("Path is too long."); Lay_ShowErrorAndExit ("Path is too long.");
Str_Concat (Path,"/",PATH_MAX); Str_Concat (Path,"/",
Str_Concat (Path,Gbl.FileBrowser.NewFilFolLnkName,PATH_MAX); PATH_MAX);
Str_Concat (Path,Gbl.FileBrowser.NewFilFolLnkName,
PATH_MAX);
/* Create the new directory */ /* Create the new directory */
if (mkdir (Path,(mode_t) 0xFFF) == 0) if (mkdir (Path,(mode_t) 0xFFF) == 0)
@ -8450,8 +8452,10 @@ static bool Brw_RcvFileInFileBrw (Brw_UploadType_t UploadType)
Gbl.FileBrowser.Priv.FullPathInTree); Gbl.FileBrowser.Priv.FullPathInTree);
if (strlen (Path) + 1 + strlen (Gbl.FileBrowser.NewFilFolLnkName) + strlen (".tmp") > PATH_MAX) if (strlen (Path) + 1 + strlen (Gbl.FileBrowser.NewFilFolLnkName) + strlen (".tmp") > PATH_MAX)
Lay_ShowErrorAndExit ("Path is too long."); Lay_ShowErrorAndExit ("Path is too long.");
Str_Concat (Path,"/",PATH_MAX); Str_Concat (Path,"/",
Str_Concat (Path,Gbl.FileBrowser.NewFilFolLnkName,PATH_MAX); PATH_MAX);
Str_Concat (Path,Gbl.FileBrowser.NewFilFolLnkName,
PATH_MAX);
/* Check if the destination file exists */ /* Check if the destination file exists */
if (Fil_CheckIfPathExists (Path)) if (Fil_CheckIfPathExists (Path))
@ -8643,9 +8647,12 @@ void Brw_RecLinkFileBrowser (void)
sprintf (Path,"%s/%s",Gbl.FileBrowser.Priv.PathAboveRootFolder,Gbl.FileBrowser.Priv.FullPathInTree); sprintf (Path,"%s/%s",Gbl.FileBrowser.Priv.PathAboveRootFolder,Gbl.FileBrowser.Priv.FullPathInTree);
if (strlen (Path) + 1 + strlen (FileName) + strlen (".url") > PATH_MAX) if (strlen (Path) + 1 + strlen (FileName) + strlen (".url") > PATH_MAX)
Lay_ShowErrorAndExit ("Path is too long."); Lay_ShowErrorAndExit ("Path is too long.");
Str_Concat (Path,"/",PATH_MAX); Str_Concat (Path,"/",
Str_Concat (Path,FileName,PATH_MAX); PATH_MAX);
Str_Concat (Path,".url",PATH_MAX); Str_Concat (Path,FileName,
PATH_MAX);
Str_Concat (Path,".url",
PATH_MAX);
/* Check if the URL file exists */ /* Check if the URL file exists */
if (Fil_CheckIfPathExists (Path)) if (Fil_CheckIfPathExists (Path))

View File

@ -3108,8 +3108,10 @@ void Grp_GetNamesGrpsStdBelongsTo (long GrpTypCod,long UsrCod,char *GroupNames)
/* El group name in row[0] */ /* El group name in row[0] */
if (NumRow) if (NumRow)
Str_Concat (GroupNames,", ",MaxLength); Str_Concat (GroupNames,", ",
Str_Concat (GroupNames,row[0],MaxLength); MaxLength);
Str_Concat (GroupNames,row[0],
MaxLength);
} }
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/

View File

@ -913,12 +913,14 @@ void Mai_ListEmails (void)
LengthStrAddr ++; LengthStrAddr ++;
if (LengthStrAddr > Mai_MAX_LENGTH_STR_ADDR) if (LengthStrAddr > Mai_MAX_LENGTH_STR_ADDR)
Lay_ShowErrorAndExit ("The space allocated to store email addresses is full."); Lay_ShowErrorAndExit ("The space allocated to store email addresses is full.");
Str_Concat (StrAddresses,",",Mai_MAX_LENGTH_STR_ADDR); Str_Concat (StrAddresses,",",
Mai_MAX_LENGTH_STR_ADDR);
} }
LengthStrAddr += strlen (UsrDat.Email); LengthStrAddr += strlen (UsrDat.Email);
if (LengthStrAddr > Mai_MAX_LENGTH_STR_ADDR) if (LengthStrAddr > Mai_MAX_LENGTH_STR_ADDR)
Lay_ShowErrorAndExit ("The space allocated to store email addresses is full."); Lay_ShowErrorAndExit ("The space allocated to store email addresses is full.");
Str_Concat (StrAddresses,UsrDat.Email,Mai_MAX_LENGTH_STR_ADDR); Str_Concat (StrAddresses,UsrDat.Email,
Mai_MAX_LENGTH_STR_ADDR);
fprintf (Gbl.F.Out,"<a href=\"mailto:%s?subject=%s\">%s</a>", fprintf (Gbl.F.Out,"<a href=\"mailto:%s?subject=%s\">%s</a>",
UsrDat.Email,Gbl.CurrentCrs.Crs.FullName,UsrDat.Email); UsrDat.Email,Gbl.CurrentCrs.Crs.FullName,UsrDat.Email);

View File

@ -1071,10 +1071,13 @@ static void Msg_MakeFilterFromToSubquery (char FilterFromToSubquery[Msg_MAX_LENG
Str_GetNextStringUntilSpace (&Ptr,SearchWord,Usr_MAX_LENGTH_USR_NAME_OR_SURNAME); Str_GetNextStringUntilSpace (&Ptr,SearchWord,Usr_MAX_LENGTH_USR_NAME_OR_SURNAME);
if (strlen (FilterFromToSubquery) + strlen (SearchWord) + 512 > Msg_MAX_LENGTH_MESSAGES_QUERY) // Prevent string overflow if (strlen (FilterFromToSubquery) + strlen (SearchWord) + 512 > Msg_MAX_LENGTH_MESSAGES_QUERY) // Prevent string overflow
break; break;
Str_Concat (FilterFromToSubquery,"%",Msg_MAX_LENGTH_MESSAGES_QUERY); Str_Concat (FilterFromToSubquery,"%",
Str_Concat (FilterFromToSubquery,SearchWord,Msg_MAX_LENGTH_MESSAGES_QUERY); Msg_MAX_LENGTH_MESSAGES_QUERY);
Str_Concat (FilterFromToSubquery,SearchWord,
Msg_MAX_LENGTH_MESSAGES_QUERY);
} }
Str_Concat (FilterFromToSubquery,"%'",Msg_MAX_LENGTH_MESSAGES_QUERY); Str_Concat (FilterFromToSubquery,"%'",
Msg_MAX_LENGTH_MESSAGES_QUERY);
} }
else else
FilterFromToSubquery[0] = '\0'; FilterFromToSubquery[0] = '\0';

View File

@ -1170,12 +1170,16 @@ void Pho_ShowUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL,
Usr_MAX_BYTES_SURNAMES); Usr_MAX_BYTES_SURNAMES);
if (UsrDat->Surname2[0]) if (UsrDat->Surname2[0])
{ {
Str_Concat (Surnames," ",Usr_MAX_BYTES_SURNAMES); Str_Concat (Surnames," ",
Str_Concat (Surnames,UsrDat->Surname2,Usr_MAX_BYTES_SURNAMES); Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames,UsrDat->Surname2,
Usr_MAX_BYTES_SURNAMES);
} }
Str_LimitLengthHTMLStr (Surnames,23); Str_LimitLengthHTMLStr (Surnames,23);
Str_Concat (ShortName,"<br />",Usr_MAX_BYTES_FULL_NAME); Str_Concat (ShortName,"<br />",
Str_Concat (ShortName,Surnames,Usr_MAX_BYTES_FULL_NAME); Usr_MAX_BYTES_FULL_NAME);
Str_Concat (ShortName,Surnames,
Usr_MAX_BYTES_FULL_NAME);
Act_SetUniqueId (IdCaption); Act_SetUniqueId (IdCaption);
fprintf (Gbl.F.Out,"<div id=\"%s\" class=\"NOT_SHOWN\">" fprintf (Gbl.F.Out,"<div id=\"%s\" class=\"NOT_SHOWN\">"

View File

@ -639,7 +639,8 @@ void Rec_AskConfirmRemFieldWithRecords (unsigned NumRecords)
{ {
sprintf (Message_part2,Txt_this_field_is_filled_in_the_records_of_X_students, sprintf (Message_part2,Txt_this_field_is_filled_in_the_records_of_X_students,
NumRecords); NumRecords);
Str_Concat (Gbl.Message,Message_part2,Lay_MAX_BYTES_ALERT); Str_Concat (Gbl.Message,Message_part2,
Lay_MAX_BYTES_ALERT);
} }
Lay_ShowAlert (Lay_WARNING,Gbl.Message); Lay_ShowAlert (Lay_WARNING,Gbl.Message);

View File

@ -1275,18 +1275,26 @@ bool Sch_BuildSearchQuery (char SearchQuery[Sch_MAX_LENGTH_SEARCH_QUERY + 1],
Sch_MAX_LENGTH_SEARCH_QUERY) // Prevent string overflow Sch_MAX_LENGTH_SEARCH_QUERY) // Prevent string overflow
break; break;
if (NumWords) if (NumWords)
Str_Concat (SearchQuery," AND ",Sch_MAX_LENGTH_SEARCH_QUERY); Str_Concat (SearchQuery," AND ",
Str_Concat (SearchQuery,FieldName,Sch_MAX_LENGTH_SEARCH_QUERY); Sch_MAX_LENGTH_SEARCH_QUERY);
Str_Concat (SearchQuery," LIKE ",Sch_MAX_LENGTH_SEARCH_QUERY); Str_Concat (SearchQuery,FieldName,
Sch_MAX_LENGTH_SEARCH_QUERY);
Str_Concat (SearchQuery," LIKE ",
Sch_MAX_LENGTH_SEARCH_QUERY);
if (CharSet) if (CharSet)
if (CharSet[0]) if (CharSet[0])
Str_Concat (SearchQuery,CharSet,Sch_MAX_LENGTH_SEARCH_QUERY); Str_Concat (SearchQuery,CharSet,
Str_Concat (SearchQuery,"'%",Sch_MAX_LENGTH_SEARCH_QUERY); Sch_MAX_LENGTH_SEARCH_QUERY);
Str_Concat (SearchQuery,SearchWords[NumWords],Sch_MAX_LENGTH_SEARCH_QUERY); Str_Concat (SearchQuery,"'%",
Str_Concat (SearchQuery,"%'",Sch_MAX_LENGTH_SEARCH_QUERY); Sch_MAX_LENGTH_SEARCH_QUERY);
Str_Concat (SearchQuery,SearchWords[NumWords],
Sch_MAX_LENGTH_SEARCH_QUERY);
Str_Concat (SearchQuery,"%'",
Sch_MAX_LENGTH_SEARCH_QUERY);
if (Collate) if (Collate)
if (Collate[0]) if (Collate[0])
Str_Concat (SearchQuery,Collate,Sch_MAX_LENGTH_SEARCH_QUERY); Str_Concat (SearchQuery,Collate,
Sch_MAX_LENGTH_SEARCH_QUERY);
} }
} }

View File

@ -335,7 +335,8 @@ void Sta_LogAccess (const char *Comments)
" VALUES ('%ld','", " VALUES ('%ld','",
LogCod); LogCod);
Str_AddStrToQuery (Query,Comments,sizeof (Query)); Str_AddStrToQuery (Query,Comments,sizeof (Query));
Str_Concat (Query,"')",Sta_MAX_LENGTH_QUERY_LOG); Str_Concat (Query,"')",
Sta_MAX_LENGTH_QUERY_LOG);
if (Gbl.WebService.IsWebService) if (Gbl.WebService.IsWebService)
{ {
@ -1113,7 +1114,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
LogTable, LogTable,
(long) Gbl.DateRange.TimeUTC[0], (long) Gbl.DateRange.TimeUTC[0],
(long) Gbl.DateRange.TimeUTC[1]); (long) Gbl.DateRange.TimeUTC[1]);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
switch (GlobalOrCourse) switch (GlobalOrCourse)
{ {
@ -1129,7 +1131,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{ {
sprintf (QueryAux," AND %s.CtyCod='%ld'", sprintf (QueryAux," AND %s.CtyCod='%ld'",
LogTable,Gbl.CurrentCty.Cty.CtyCod); LogTable,Gbl.CurrentCty.Cty.CtyCod);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
} }
break; break;
case Sco_SCOPE_INS: case Sco_SCOPE_INS:
@ -1137,7 +1140,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{ {
sprintf (QueryAux," AND %s.InsCod='%ld'", sprintf (QueryAux," AND %s.InsCod='%ld'",
LogTable,Gbl.CurrentIns.Ins.InsCod); LogTable,Gbl.CurrentIns.Ins.InsCod);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
} }
break; break;
case Sco_SCOPE_CTR: case Sco_SCOPE_CTR:
@ -1145,7 +1149,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{ {
sprintf (QueryAux," AND %s.CtrCod='%ld'", sprintf (QueryAux," AND %s.CtrCod='%ld'",
LogTable,Gbl.CurrentCtr.Ctr.CtrCod); LogTable,Gbl.CurrentCtr.Ctr.CtrCod);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
} }
break; break;
case Sco_SCOPE_DEG: case Sco_SCOPE_DEG:
@ -1153,7 +1158,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{ {
sprintf (QueryAux," AND %s.DegCod='%ld'", sprintf (QueryAux," AND %s.DegCod='%ld'",
LogTable,Gbl.CurrentDeg.Deg.DegCod); LogTable,Gbl.CurrentDeg.Deg.DegCod);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
} }
break; break;
case Sco_SCOPE_CRS: case Sco_SCOPE_CRS:
@ -1161,7 +1167,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{ {
sprintf (QueryAux," AND %s.CrsCod='%ld'", sprintf (QueryAux," AND %s.CrsCod='%ld'",
LogTable,Gbl.CurrentCrs.Crs.CrsCod); LogTable,Gbl.CurrentCrs.Crs.CrsCod);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
} }
break; break;
} }
@ -1225,7 +1232,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
LogTable,Gbl.Usrs.Me.UsrDat.UsrCod); LogTable,Gbl.Usrs.Me.UsrDat.UsrCod);
break; break;
} }
Str_Concat (Query,StrRole,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,StrRole,
Sta_MAX_LENGTH_QUERY_ACCESS);
switch (Gbl.Stat.ClicksGroupedBy) switch (Gbl.Stat.ClicksGroupedBy)
{ {
@ -1233,12 +1241,14 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
case Sta_CLICKS_GBL_PER_WEB_SERVICE_FUNCTION: case Sta_CLICKS_GBL_PER_WEB_SERVICE_FUNCTION:
sprintf (QueryAux," AND %s.LogCod=log_ws.LogCod", sprintf (QueryAux," AND %s.LogCod=log_ws.LogCod",
LogTable); LogTable);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
case Sta_CLICKS_GBL_PER_BANNER: case Sta_CLICKS_GBL_PER_BANNER:
sprintf (QueryAux," AND %s.LogCod=log_banners.LogCod", sprintf (QueryAux," AND %s.LogCod=log_banners.LogCod",
LogTable); LogTable);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
default: default:
break; break;
@ -1247,7 +1257,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
case Sta_SHOW_COURSE_ACCESSES: case Sta_SHOW_COURSE_ACCESSES:
sprintf (QueryAux," AND %s.CrsCod='%ld'", sprintf (QueryAux," AND %s.CrsCod='%ld'",
LogTable,Gbl.CurrentCrs.Crs.CrsCod); LogTable,Gbl.CurrentCrs.Crs.CrsCod);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
LengthQuery = strlen (Query); LengthQuery = strlen (Query);
NumUsr = 0; NumUsr = 0;
Ptr = Gbl.Usrs.Select.All; Ptr = Gbl.Usrs.Select.All;
@ -1264,11 +1275,13 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
NumUsr ? " OR %s.UsrCod='%ld'" : NumUsr ? " OR %s.UsrCod='%ld'" :
" AND (%s.UsrCod='%ld'", " AND (%s.UsrCod='%ld'",
LogTable,UsrDat.UsrCod); LogTable,UsrDat.UsrCod);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
NumUsr++; NumUsr++;
} }
} }
Str_Concat (Query,")",Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,")",
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
} }
@ -1277,47 +1290,57 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{ {
sprintf (QueryAux," AND %s.ActCod='%ld'", sprintf (QueryAux," AND %s.ActCod='%ld'",
LogTable,Act_Actions[Gbl.Stat.NumAction].ActCod); LogTable,Act_Actions[Gbl.Stat.NumAction].ActCod);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
} }
/* End the query */ /* End the query */
switch (Gbl.Stat.ClicksGroupedBy) switch (Gbl.Stat.ClicksGroupedBy)
{ {
case Sta_CLICKS_CRS_DETAILED_LIST: case Sta_CLICKS_CRS_DETAILED_LIST:
Str_Concat (Query," ORDER BY F",Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query," ORDER BY F",
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
case Sta_CLICKS_CRS_PER_USR: case Sta_CLICKS_CRS_PER_USR:
sprintf (QueryAux," GROUP BY %s.UsrCod ORDER BY Num DESC",LogTable); sprintf (QueryAux," GROUP BY %s.UsrCod ORDER BY Num DESC",LogTable);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
case Sta_CLICKS_CRS_PER_DAYS: case Sta_CLICKS_CRS_PER_DAYS:
case Sta_CLICKS_GBL_PER_DAYS: case Sta_CLICKS_GBL_PER_DAYS:
Str_Concat (Query," GROUP BY Day DESC",Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query," GROUP BY Day DESC",
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
case Sta_CLICKS_CRS_PER_DAYS_AND_HOUR: case Sta_CLICKS_CRS_PER_DAYS_AND_HOUR:
case Sta_CLICKS_GBL_PER_DAYS_AND_HOUR: case Sta_CLICKS_GBL_PER_DAYS_AND_HOUR:
Str_Concat (Query," GROUP BY Day DESC,Hour",Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query," GROUP BY Day DESC,Hour",
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
case Sta_CLICKS_CRS_PER_WEEKS: case Sta_CLICKS_CRS_PER_WEEKS:
case Sta_CLICKS_GBL_PER_WEEKS: case Sta_CLICKS_GBL_PER_WEEKS:
Str_Concat (Query," GROUP BY Week DESC",Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query," GROUP BY Week DESC",
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
case Sta_CLICKS_CRS_PER_MONTHS: case Sta_CLICKS_CRS_PER_MONTHS:
case Sta_CLICKS_GBL_PER_MONTHS: case Sta_CLICKS_GBL_PER_MONTHS:
Str_Concat (Query," GROUP BY Month DESC",Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query," GROUP BY Month DESC",
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
case Sta_CLICKS_CRS_PER_HOUR: case Sta_CLICKS_CRS_PER_HOUR:
case Sta_CLICKS_GBL_PER_HOUR: case Sta_CLICKS_GBL_PER_HOUR:
Str_Concat (Query," GROUP BY Hour",Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query," GROUP BY Hour",
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
case Sta_CLICKS_CRS_PER_MINUTE: case Sta_CLICKS_CRS_PER_MINUTE:
case Sta_CLICKS_GBL_PER_MINUTE: case Sta_CLICKS_GBL_PER_MINUTE:
Str_Concat (Query," GROUP BY Minute",Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query," GROUP BY Minute",
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
case Sta_CLICKS_CRS_PER_ACTION: case Sta_CLICKS_CRS_PER_ACTION:
case Sta_CLICKS_GBL_PER_ACTION: case Sta_CLICKS_GBL_PER_ACTION:
sprintf (QueryAux," GROUP BY %s.ActCod ORDER BY Num DESC",LogTable); sprintf (QueryAux," GROUP BY %s.ActCod ORDER BY Num DESC",LogTable);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
case Sta_CLICKS_GBL_PER_PLUGIN: case Sta_CLICKS_GBL_PER_PLUGIN:
Str_Concat (Query," GROUP BY log_ws.PlgCod ORDER BY Num DESC", Str_Concat (Query," GROUP BY log_ws.PlgCod ORDER BY Num DESC",
@ -1333,23 +1356,28 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
break; break;
case Sta_CLICKS_GBL_PER_COUNTRY: case Sta_CLICKS_GBL_PER_COUNTRY:
sprintf (QueryAux," GROUP BY %s.CtyCod ORDER BY Num DESC",LogTable); sprintf (QueryAux," GROUP BY %s.CtyCod ORDER BY Num DESC",LogTable);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
case Sta_CLICKS_GBL_PER_INSTITUTION: case Sta_CLICKS_GBL_PER_INSTITUTION:
sprintf (QueryAux," GROUP BY %s.InsCod ORDER BY Num DESC",LogTable); sprintf (QueryAux," GROUP BY %s.InsCod ORDER BY Num DESC",LogTable);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
case Sta_CLICKS_GBL_PER_CENTRE: case Sta_CLICKS_GBL_PER_CENTRE:
sprintf (QueryAux," GROUP BY %s.CtrCod ORDER BY Num DESC",LogTable); sprintf (QueryAux," GROUP BY %s.CtrCod ORDER BY Num DESC",LogTable);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
case Sta_CLICKS_GBL_PER_DEGREE: case Sta_CLICKS_GBL_PER_DEGREE:
sprintf (QueryAux," GROUP BY %s.DegCod ORDER BY Num DESC",LogTable); sprintf (QueryAux," GROUP BY %s.DegCod ORDER BY Num DESC",LogTable);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
case Sta_CLICKS_GBL_PER_COURSE: case Sta_CLICKS_GBL_PER_COURSE:
sprintf (QueryAux," GROUP BY %s.CrsCod ORDER BY Num DESC",LogTable); sprintf (QueryAux," GROUP BY %s.CrsCod ORDER BY Num DESC",LogTable);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS); Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
break; break;
} }
/***** Write query for debug *****/ /***** Write query for debug *****/

View File

@ -697,8 +697,10 @@ static void Svy_WriteAuthor (struct Survey *Svy)
Usr_MAX_BYTES_SURNAMES); Usr_MAX_BYTES_SURNAMES);
if (UsrDat.Surname2[0]) if (UsrDat.Surname2[0])
{ {
Str_Concat (Surnames," ",Usr_MAX_BYTES_SURNAMES); Str_Concat (Surnames," ",
Str_Concat (Surnames,UsrDat.Surname2,Usr_MAX_BYTES_SURNAMES); Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames,UsrDat.Surname2,
Usr_MAX_BYTES_SURNAMES);
} }
Str_LimitLengthHTMLStr (FirstName,8); Str_LimitLengthHTMLStr (FirstName,8);
Str_LimitLengthHTMLStr (Surnames,8); Str_LimitLengthHTMLStr (Surnames,8);

View File

@ -989,13 +989,15 @@ static void Syl_WriteNumItem (char *StrDst,FILE *FileTgt,int Level,int *CodItem)
if (N > 1) if (N > 1)
{ {
if (StrDst) if (StrDst)
Str_Concat (StrDst,".",Syl_MAX_LENGTH_ITEM_COD); Str_Concat (StrDst,".",
Syl_MAX_LENGTH_ITEM_COD);
if (FileTgt) if (FileTgt)
fprintf (FileTgt,"."); fprintf (FileTgt,".");
} }
sprintf (InStr,"%d",CodItem[N]); sprintf (InStr,"%d",CodItem[N]);
if (StrDst) if (StrDst)
Str_Concat (StrDst,InStr,Syl_MAX_LENGTH_ITEM_COD); Str_Concat (StrDst,InStr,
Syl_MAX_LENGTH_ITEM_COD);
if (FileTgt) if (FileTgt)
fprintf (FileTgt,"%s",InStr); fprintf (FileTgt,"%s",InStr);
} }

View File

@ -2391,27 +2391,38 @@ static unsigned long Tst_GetQuestionsForEdit (MYSQL_RES **mysql_res)
"tst_questions.Score" "tst_questions.Score"
" FROM tst_questions"); " FROM tst_questions");
if (!Gbl.Test.Tags.All) if (!Gbl.Test.Tags.All)
Str_Concat (Query,",tst_question_tags,tst_tags",Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query,",tst_question_tags,tst_tags",
Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query," WHERE tst_questions.CrsCod='",Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query," WHERE tst_questions.CrsCod='",
Tst_MAX_LENGTH_QUERY_TEST);
sprintf (CrsCodStr,"%ld",Gbl.CurrentCrs.Crs.CrsCod); sprintf (CrsCodStr,"%ld",Gbl.CurrentCrs.Crs.CrsCod);
Str_Concat (Query,CrsCodStr,Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query,CrsCodStr,
Str_Concat (Query,"' AND tst_questions.EditTime>=FROM_UNIXTIME('",Tst_MAX_LENGTH_QUERY_TEST); Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"' AND tst_questions.EditTime>=FROM_UNIXTIME('",
Tst_MAX_LENGTH_QUERY_TEST);
sprintf (LongStr,"%ld",(long) Gbl.DateRange.TimeUTC[0]); sprintf (LongStr,"%ld",(long) Gbl.DateRange.TimeUTC[0]);
Str_Concat (Query,LongStr,Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query,LongStr,
Str_Concat (Query,"') AND tst_questions.EditTime<=FROM_UNIXTIME('",Tst_MAX_LENGTH_QUERY_TEST); Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"') AND tst_questions.EditTime<=FROM_UNIXTIME('",
Tst_MAX_LENGTH_QUERY_TEST);
sprintf (LongStr,"%ld",(long) Gbl.DateRange.TimeUTC[1]); sprintf (LongStr,"%ld",(long) Gbl.DateRange.TimeUTC[1]);
Str_Concat (Query,LongStr,Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query,LongStr,
Str_Concat (Query,"')",Tst_MAX_LENGTH_QUERY_TEST); Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"')",
Tst_MAX_LENGTH_QUERY_TEST);
/* Add the tags selected */ /* Add the tags selected */
if (!Gbl.Test.Tags.All) if (!Gbl.Test.Tags.All)
{ {
Str_Concat (Query," AND tst_questions.QstCod=tst_question_tags.QstCod" Str_Concat (Query," AND tst_questions.QstCod=tst_question_tags.QstCod"
" AND tst_question_tags.TagCod=tst_tags.TagCod" " AND tst_question_tags.TagCod=tst_tags.TagCod"
" AND tst_tags.CrsCod='",Tst_MAX_LENGTH_QUERY_TEST); " AND tst_tags.CrsCod='",
Str_Concat (Query,CrsCodStr,Tst_MAX_LENGTH_QUERY_TEST); Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"'",Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query,CrsCodStr,
Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"'",
Tst_MAX_LENGTH_QUERY_TEST);
LengthQuery = strlen (Query); LengthQuery = strlen (Query);
NumItemInList = 0; NumItemInList = 0;
Ptr = Gbl.Test.Tags.List; Ptr = Gbl.Test.Tags.List;
@ -2425,11 +2436,14 @@ static unsigned long Tst_GetQuestionsForEdit (MYSQL_RES **mysql_res)
NumItemInList ? " OR tst_tags.TagTxt='" : NumItemInList ? " OR tst_tags.TagTxt='" :
" AND (tst_tags.TagTxt='", " AND (tst_tags.TagTxt='",
Tst_MAX_LENGTH_QUERY_TEST); Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,TagText,Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query,TagText,
Str_Concat (Query,"'",Tst_MAX_LENGTH_QUERY_TEST); Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"'",
Tst_MAX_LENGTH_QUERY_TEST);
NumItemInList++; NumItemInList++;
} }
Str_Concat (Query,")",Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query,")",
Tst_MAX_LENGTH_QUERY_TEST);
} }
/* Add the types of answer selected */ /* Add the types of answer selected */
@ -2449,38 +2463,47 @@ static unsigned long Tst_GetQuestionsForEdit (MYSQL_RES **mysql_res)
NumItemInList ? " OR tst_questions.AnsType='" : NumItemInList ? " OR tst_questions.AnsType='" :
" AND (tst_questions.AnsType='", " AND (tst_questions.AnsType='",
Tst_MAX_LENGTH_QUERY_TEST); Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,Tst_StrAnswerTypesDB[AnsType],Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query,Tst_StrAnswerTypesDB[AnsType],
Str_Concat (Query,"'",Tst_MAX_LENGTH_QUERY_TEST); Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"'",
Tst_MAX_LENGTH_QUERY_TEST);
NumItemInList++; NumItemInList++;
} }
Str_Concat (Query,")",Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query,")",
Tst_MAX_LENGTH_QUERY_TEST);
} }
/* End the query */ /* End the query */
Str_Concat (Query," GROUP BY tst_questions.QstCod",Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query," GROUP BY tst_questions.QstCod",
Tst_MAX_LENGTH_QUERY_TEST);
switch (Gbl.Test.SelectedOrderType) switch (Gbl.Test.SelectedOrderType)
{ {
case Tst_ORDER_STEM: case Tst_ORDER_STEM:
Str_Concat (Query," ORDER BY tst_questions.Stem",Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query," ORDER BY tst_questions.Stem",
Tst_MAX_LENGTH_QUERY_TEST);
break; break;
case Tst_ORDER_NUM_HITS: case Tst_ORDER_NUM_HITS:
Str_Concat (Query," ORDER BY tst_questions.NumHits DESC," Str_Concat (Query," ORDER BY tst_questions.NumHits DESC,"
"tst_questions.Stem",Tst_MAX_LENGTH_QUERY_TEST); "tst_questions.Stem",
Tst_MAX_LENGTH_QUERY_TEST);
break; break;
case Tst_ORDER_AVERAGE_SCORE: case Tst_ORDER_AVERAGE_SCORE:
Str_Concat (Query," ORDER BY tst_questions.Score/tst_questions.NumHits DESC," Str_Concat (Query," ORDER BY tst_questions.Score/tst_questions.NumHits DESC,"
"tst_questions.NumHits DESC," "tst_questions.NumHits DESC,"
"tst_questions.Stem",Tst_MAX_LENGTH_QUERY_TEST); "tst_questions.Stem",
Tst_MAX_LENGTH_QUERY_TEST);
break; break;
case Tst_ORDER_NUM_HITS_NOT_BLANK: case Tst_ORDER_NUM_HITS_NOT_BLANK:
Str_Concat (Query," ORDER BY tst_questions.NumHitsNotBlank DESC," Str_Concat (Query," ORDER BY tst_questions.NumHitsNotBlank DESC,"
"tst_questions.Stem",Tst_MAX_LENGTH_QUERY_TEST); "tst_questions.Stem",
Tst_MAX_LENGTH_QUERY_TEST);
break; break;
case Tst_ORDER_AVERAGE_SCORE_NOT_BLANK: case Tst_ORDER_AVERAGE_SCORE_NOT_BLANK:
Str_Concat (Query," ORDER BY tst_questions.Score/tst_questions.NumHitsNotBlank DESC," Str_Concat (Query," ORDER BY tst_questions.Score/tst_questions.NumHitsNotBlank DESC,"
"tst_questions.NumHitsNotBlank DESC," "tst_questions.NumHitsNotBlank DESC,"
"tst_questions.Stem",Tst_MAX_LENGTH_QUERY_TEST); "tst_questions.Stem",
Tst_MAX_LENGTH_QUERY_TEST);
break; break;
} }
@ -2566,11 +2589,14 @@ static unsigned long Tst_GetQuestionsForTest (MYSQL_RES **mysql_res)
NumItemInList ? " OR tst_tags.TagTxt='" : NumItemInList ? " OR tst_tags.TagTxt='" :
" AND (tst_tags.TagTxt='", " AND (tst_tags.TagTxt='",
Tst_MAX_LENGTH_QUERY_TEST); Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,TagText,Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query,TagText,
Str_Concat (Query,"'",Tst_MAX_LENGTH_QUERY_TEST); Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"'",
Tst_MAX_LENGTH_QUERY_TEST);
NumItemInList++; NumItemInList++;
} }
Str_Concat (Query,")",Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query,")",
Tst_MAX_LENGTH_QUERY_TEST);
} }
/* Add answer types selected */ /* Add answer types selected */
@ -2590,17 +2616,22 @@ static unsigned long Tst_GetQuestionsForTest (MYSQL_RES **mysql_res)
NumItemInList ? " OR tst_questions.AnsType='" : NumItemInList ? " OR tst_questions.AnsType='" :
" AND (tst_questions.AnsType='", " AND (tst_questions.AnsType='",
Tst_MAX_LENGTH_QUERY_TEST); Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,Tst_StrAnswerTypesDB[AnsType],Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query,Tst_StrAnswerTypesDB[AnsType],
Str_Concat (Query,"'",Tst_MAX_LENGTH_QUERY_TEST); Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"'",
Tst_MAX_LENGTH_QUERY_TEST);
NumItemInList++; NumItemInList++;
} }
Str_Concat (Query,")",Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query,")",
Tst_MAX_LENGTH_QUERY_TEST);
} }
/* End query */ /* End query */
Str_Concat (Query," ORDER BY RAND(NOW()) LIMIT ",Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query," ORDER BY RAND(NOW()) LIMIT ",
Tst_MAX_LENGTH_QUERY_TEST);
sprintf (StrNumQsts,"%u",Gbl.Test.NumQsts); sprintf (StrNumQsts,"%u",Gbl.Test.NumQsts);
Str_Concat (Query,StrNumQsts,Tst_MAX_LENGTH_QUERY_TEST); Str_Concat (Query,StrNumQsts,
Tst_MAX_LENGTH_QUERY_TEST);
/* /*
if (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM) if (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)
Lay_ShowAlert (Lay_INFO,Query); Lay_ShowAlert (Lay_INFO,Query);

View File

@ -721,13 +721,17 @@ void Usr_BuildFullName (struct UsrData *UsrDat)
Usr_MAX_BYTES_FULL_NAME); Usr_MAX_BYTES_FULL_NAME);
if (UsrDat->Surname1[0]) if (UsrDat->Surname1[0])
{ {
Str_Concat (UsrDat->FullName," ",Usr_MAX_BYTES_FULL_NAME); Str_Concat (UsrDat->FullName," ",
Str_Concat (UsrDat->FullName,UsrDat->Surname1,Usr_MAX_BYTES_FULL_NAME); Usr_MAX_BYTES_FULL_NAME);
Str_Concat (UsrDat->FullName,UsrDat->Surname1,
Usr_MAX_BYTES_FULL_NAME);
} }
if (UsrDat->Surname2[0]) if (UsrDat->Surname2[0])
{ {
Str_Concat (UsrDat->FullName," ",Usr_MAX_BYTES_FULL_NAME); Str_Concat (UsrDat->FullName," ",
Str_Concat (UsrDat->FullName,UsrDat->Surname2,Usr_MAX_BYTES_FULL_NAME); Usr_MAX_BYTES_FULL_NAME);
Str_Concat (UsrDat->FullName,UsrDat->Surname2,
Usr_MAX_BYTES_FULL_NAME);
} }
} }
@ -749,8 +753,10 @@ void Usr_RestrictLengthAndWriteName (const struct UsrData *UsrDat,unsigned MaxCh
Usr_MAX_BYTES_SURNAMES); Usr_MAX_BYTES_SURNAMES);
if (UsrDat->Surname2[0]) if (UsrDat->Surname2[0])
{ {
Str_Concat (Surnames," ",Usr_MAX_BYTES_SURNAMES); Str_Concat (Surnames," ",
Str_Concat (Surnames,UsrDat->Surname2,Usr_MAX_BYTES_SURNAMES); Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames,UsrDat->Surname2,
Usr_MAX_BYTES_SURNAMES);
} }
Str_LimitLengthHTMLStr (Surnames,MaxChars); Str_LimitLengthHTMLStr (Surnames,MaxChars);
@ -3893,11 +3899,14 @@ static void Usr_BuildQueryToGetUsrsLstCrs (Rol_Role_t Role,
" GrpCod='", " GrpCod='",
Usr_MAX_LENGTH_QUERY_GET_LIST_USRS); Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
sprintf (LongStr,"%ld",GrpCod); sprintf (LongStr,"%ld",GrpCod);
Str_Concat (Query,LongStr,Usr_MAX_LENGTH_QUERY_GET_LIST_USRS); Str_Concat (Query,LongStr,
Str_Concat (Query,"'",Usr_MAX_LENGTH_QUERY_GET_LIST_USRS); Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
Str_Concat (Query,"'",
Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
NumPositiveCods++; NumPositiveCods++;
} }
Str_Concat (Query,")",Usr_MAX_LENGTH_QUERY_GET_LIST_USRS); Str_Concat (Query,")",
Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
} }
} }
@ -3908,9 +3917,11 @@ static void Usr_BuildQueryToGetUsrsLstCrs (Rol_Role_t Role,
if (AddStdsWithoutGroupOf[NumGrpTyp]) if (AddStdsWithoutGroupOf[NumGrpTyp])
{ {
if (NumPositiveCods || NumNegativeCods) if (NumPositiveCods || NumNegativeCods)
Str_Concat (Query," OR ",Usr_MAX_LENGTH_QUERY_GET_LIST_USRS); Str_Concat (Query," OR ",
Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
else else
Str_Concat (Query," AND (",Usr_MAX_LENGTH_QUERY_GET_LIST_USRS); Str_Concat (Query," AND (",
Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
/* Select all the students of the course who don't belong to any group of type GrpTypCod */ /* Select all the students of the course who don't belong to any group of type GrpTypCod */
Str_Concat (Query,"crs_usr.UsrCod NOT IN" Str_Concat (Query,"crs_usr.UsrCod NOT IN"
" (SELECT DISTINCT crs_grp_usr.UsrCod" " (SELECT DISTINCT crs_grp_usr.UsrCod"
@ -3918,14 +3929,16 @@ static void Usr_BuildQueryToGetUsrsLstCrs (Rol_Role_t Role,
" WHERE crs_grp.GrpTypCod='", " WHERE crs_grp.GrpTypCod='",
Usr_MAX_LENGTH_QUERY_GET_LIST_USRS); Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
sprintf (LongStr,"%ld",Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod); sprintf (LongStr,"%ld",Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod);
Str_Concat (Query,LongStr,Usr_MAX_LENGTH_QUERY_GET_LIST_USRS); Str_Concat (Query,LongStr,
Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
Str_Concat (Query,"' AND crs_grp.GrpCod=crs_grp_usr.GrpCod)", Str_Concat (Query,"' AND crs_grp.GrpCod=crs_grp_usr.GrpCod)",
Usr_MAX_LENGTH_QUERY_GET_LIST_USRS); Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
NumNegativeCods++; NumNegativeCods++;
} }
if (NumPositiveCods || if (NumPositiveCods ||
NumNegativeCods) NumNegativeCods)
Str_Concat (Query,")",Usr_MAX_LENGTH_QUERY_GET_LIST_USRS); Str_Concat (Query,")",
Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
/***** Free memory used by the list of booleans AddStdsWithoutGroupOf *****/ /***** Free memory used by the list of booleans AddStdsWithoutGroupOf *****/
free ((void *) AddStdsWithoutGroupOf); free ((void *) AddStdsWithoutGroupOf);
@ -3939,7 +3952,8 @@ static void Usr_BuildQueryToGetUsrsLstCrs (Rol_Role_t Role,
"usr_data.Surname1," "usr_data.Surname1,"
"usr_data.Surname2," "usr_data.Surname2,"
"usr_data.FirstName," "usr_data.FirstName,"
"usr_data.UsrCod",Usr_MAX_LENGTH_QUERY_GET_LIST_USRS); "usr_data.UsrCod",
Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -2256,7 +2256,8 @@ static void Svc_GetListGrpsInAttendanceEventFromDB (long AttCod,char **ListGroup
NumGrp ? ",%ld" : NumGrp ? ",%ld" :
"%ld", "%ld",
GrpCod); GrpCod);
Str_Concat (*ListGroups,GrpCodStr,Length); Str_Concat (*ListGroups,GrpCodStr,
Length);
} }
} }
@ -2759,7 +2760,8 @@ int swad__sendAttendanceUsers (struct soap *soap,
sprintf (SubQuery,sendAttendanceUsersOut->numUsers ? ",'%ld'" : sprintf (SubQuery,sendAttendanceUsersOut->numUsers ? ",'%ld'" :
" AND UsrCod NOT IN ('%ld'", " AND UsrCod NOT IN ('%ld'",
UsrCod); UsrCod);
Str_Concat (Query,SubQuery,Length); Str_Concat (Query,SubQuery,
Length);
} }
sendAttendanceUsersOut->numUsers++; sendAttendanceUsersOut->numUsers++;
@ -2770,7 +2772,8 @@ int swad__sendAttendanceUsers (struct soap *soap,
{ {
/* Mark not present users as absent in table of users */ /* Mark not present users as absent in table of users */
if (sendAttendanceUsersOut->numUsers) if (sendAttendanceUsersOut->numUsers)
Str_Concat (Query,")",Length); Str_Concat (Query,")",
Length);
DB_QueryUPDATE (Query,"can not set other users as absent"); DB_QueryUPDATE (Query,"can not set other users as absent");
free ((void *) Query); free ((void *) Query);
@ -3256,7 +3259,8 @@ int swad__sendMessage (struct soap *soap,
if (FirstNickname) if (FirstNickname)
{ {
if (ReplyUsrCod > 0) if (ReplyUsrCod > 0)
Str_Concat (Query," UNION ",Svc_MAX_LENGTH_QUERY_RECIPIENTS); Str_Concat (Query," UNION ",
Svc_MAX_LENGTH_QUERY_RECIPIENTS);
Str_Concat (Query,"SELECT UsrCod FROM usr_nicknames" Str_Concat (Query,"SELECT UsrCod FROM usr_nicknames"
" WHERE Nickname IN ('", " WHERE Nickname IN ('",
Svc_MAX_LENGTH_QUERY_RECIPIENTS); Svc_MAX_LENGTH_QUERY_RECIPIENTS);
@ -3264,13 +3268,17 @@ int swad__sendMessage (struct soap *soap,
ThereAreNicknames = true; ThereAreNicknames = true;
} }
else else
Str_Concat (Query,",'",Svc_MAX_LENGTH_QUERY_RECIPIENTS); Str_Concat (Query,",'",
Str_Concat (Query,Nickname,Svc_MAX_LENGTH_QUERY_RECIPIENTS); Svc_MAX_LENGTH_QUERY_RECIPIENTS);
Str_Concat (Query,"'",Svc_MAX_LENGTH_QUERY_RECIPIENTS); Str_Concat (Query,Nickname,
Svc_MAX_LENGTH_QUERY_RECIPIENTS);
Str_Concat (Query,"'",
Svc_MAX_LENGTH_QUERY_RECIPIENTS);
} }
} }
if (ThereAreNicknames) if (ThereAreNicknames)
Str_Concat (Query,")",Svc_MAX_LENGTH_QUERY_RECIPIENTS); Str_Concat (Query,")",
Svc_MAX_LENGTH_QUERY_RECIPIENTS);
/***** Initialize output structure *****/ /***** Initialize output structure *****/
sendMessageOut->numUsers = 0; sendMessageOut->numUsers = 0;
@ -4056,7 +4064,8 @@ int swad__getTrivialQuestion (struct soap *soap,
else else
{ {
sprintf (DegStr,",'%ld'",DegCod); sprintf (DegStr,",'%ld'",DegCod);
Str_Concat (DegreesStr,DegStr,Svc_MAX_LENGTH_DEGREES_STR); Str_Concat (DegreesStr,DegStr,
Svc_MAX_LENGTH_DEGREES_STR);
} }
} }
} }

View File

@ -303,21 +303,27 @@ static void ZIP_CreateDirCompressionUsr (struct UsrData *UsrDat)
ZIP_MAX_LENGTH_FULL_NAME_AND_ID); ZIP_MAX_LENGTH_FULL_NAME_AND_ID);
if (UsrDat->Surname1[0] && if (UsrDat->Surname1[0] &&
UsrDat->Surname2[0]) UsrDat->Surname2[0])
Str_Concat (FullNameAndUsrID,"_",ZIP_MAX_LENGTH_FULL_NAME_AND_ID); // Separation between surname 1 and surname 2 Str_Concat (FullNameAndUsrID,"_", // Separation between surname 1 and surname 2
Str_Concat (FullNameAndUsrID,UsrDat->Surname2,ZIP_MAX_LENGTH_FULL_NAME_AND_ID); ZIP_MAX_LENGTH_FULL_NAME_AND_ID);
Str_Concat (FullNameAndUsrID,UsrDat->Surname2,
ZIP_MAX_LENGTH_FULL_NAME_AND_ID);
if ((UsrDat->Surname1[0] || if ((UsrDat->Surname1[0] ||
UsrDat->Surname2[0]) && UsrDat->Surname2[0]) &&
UsrDat->FirstName[0]) UsrDat->FirstName[0])
Str_Concat (FullNameAndUsrID,"_",ZIP_MAX_LENGTH_FULL_NAME_AND_ID); // Separation between surnames and first name Str_Concat (FullNameAndUsrID,"_", // Separation between surnames and first name
Str_Concat (FullNameAndUsrID,UsrDat->FirstName,ZIP_MAX_LENGTH_FULL_NAME_AND_ID); ZIP_MAX_LENGTH_FULL_NAME_AND_ID);
Str_Concat (FullNameAndUsrID,UsrDat->FirstName,
ZIP_MAX_LENGTH_FULL_NAME_AND_ID);
if ((UsrDat->Surname1[0] || if ((UsrDat->Surname1[0] ||
UsrDat->Surname2[0] || UsrDat->Surname2[0] ||
UsrDat->FirstName[0]) && UsrDat->FirstName[0]) &&
UsrDat->IDs.Num) UsrDat->IDs.Num)
Str_Concat (FullNameAndUsrID,"-",ZIP_MAX_LENGTH_FULL_NAME_AND_ID); // Separation between name and ID Str_Concat (FullNameAndUsrID,"-", // Separation between name and ID
ZIP_MAX_LENGTH_FULL_NAME_AND_ID);
Str_LimitLengthHTMLStr (FullNameAndUsrID,50); Str_LimitLengthHTMLStr (FullNameAndUsrID,50);
if (UsrDat->IDs.Num) // If this user has at least one ID if (UsrDat->IDs.Num) // If this user has at least one ID
Str_Concat (FullNameAndUsrID,UsrDat->IDs.List[0].ID,ZIP_MAX_LENGTH_FULL_NAME_AND_ID); // First user's ID Str_Concat (FullNameAndUsrID,UsrDat->IDs.List[0].ID,
ZIP_MAX_LENGTH_FULL_NAME_AND_ID); // First user's ID
Str_ConvertToValidFileName (FullNameAndUsrID); Str_ConvertToValidFileName (FullNameAndUsrID);
/* Create path to folder and link */ /* Create path to folder and link */