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++)
{
if (NumID)
Str_Concat (Query,",",MaxLength);
Str_Concat (Query,",",
MaxLength);
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 (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
// or if password in database is empty (new user)
sprintf (SubQuery," AND usr_IDs.UsrCod=usr_data.UsrCod"
" AND (usr_data.Password='%s' OR usr_data.Password='')",
EncryptedPassword);
Str_Concat (Query,SubQuery,MaxLength);
Str_Concat (Query,SubQuery,
MaxLength);
}
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");

View File

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

View File

@ -500,8 +500,10 @@ static void Att_WriteAttEventAuthor (struct AttendanceEvent *Att)
Usr_MAX_BYTES_SURNAMES);
if (UsrDat.Surname2[0])
{
Str_Concat (Surnames," ",Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames,UsrDat.Surname2,Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames," ",
Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames,UsrDat.Surname2,
Usr_MAX_BYTES_SURNAMES);
}
Str_LimitLengthHTMLStr (FirstName,8);
Str_LimitLengthHTMLStr (Surnames,8);
@ -2432,9 +2434,11 @@ static unsigned Att_GetNumStdsFromAListWhoAreInAttEvent (long AttCod,long LstSel
NumStd ? ",%ld" :
"%ld",
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");

View File

@ -191,13 +191,14 @@
/****************************** 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 JS_FILE "swad16.114.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.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.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)

View File

@ -423,11 +423,15 @@ void Cht_OpenChatWindow (void)
Usr_MAX_BYTES_FULL_NAME);
if (Gbl.Usrs.Me.UsrDat.Surname2[0])
{
Str_Concat (UsrName," ",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,Gbl.Usrs.Me.UsrDat.Surname2,
Usr_MAX_BYTES_FULL_NAME);
}
Str_Concat (UsrName,", ",Usr_MAX_BYTES_FULL_NAME);
Str_Concat (UsrName,Gbl.Usrs.Me.UsrDat.FirstName,Usr_MAX_BYTES_FULL_NAME);
Str_Concat (UsrName,", ",
Usr_MAX_BYTES_FULL_NAME);
Str_Concat (UsrName,Gbl.Usrs.Me.UsrDat.FirstName,
Usr_MAX_BYTES_FULL_NAME);
/***** Build the lists of available rooms *****/
sprintf (ListRoomCodes,"#%s",RoomCode);
@ -438,40 +442,49 @@ void Cht_OpenChatWindow (void)
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]);
Str_Concat (ListRoomShortNames,RoomShortName,sizeof (ListRoomShortNames) - 1);
Str_Concat (ListRoomShortNames,RoomShortName,
Cht_MAX_LENGTH_ROOM_SHRT_NAMES);
sprintf (RoomFullName,"|%s (%s)",
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 (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);
Str_Concat (ListRoomShortNames,RoomShortName,sizeof (ListRoomShortNames) - 1);
Str_Concat (ListRoomShortNames,RoomShortName,
Cht_MAX_LENGTH_ROOM_SHRT_NAMES);
sprintf (RoomFullName,"|%s (%s)",Txt_General,
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 (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);
Str_Concat (ListRoomShortNames,RoomShortName,sizeof (ListRoomShortNames) - 1);
Str_Concat (ListRoomShortNames,RoomShortName,
Cht_MAX_LENGTH_ROOM_SHRT_NAMES);
sprintf (RoomFullName,"|%s (%s)",
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;
@ -481,20 +494,26 @@ void Cht_OpenChatWindow (void)
sprintf (ThisRoomCode,"DEG_%ld",Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod);
if (strcmp (RoomCode,ThisRoomCode))
{
Str_Concat (ListRoomCodes,"|#",sizeof (ListRoomCodes) - 1);
Str_Concat (ListRoomCodes,ThisRoomCode,sizeof (ListRoomCodes) - 1);
Str_Concat (ListRoomCodes,"|#",
Cht_MAX_LENGTH_ROOM_CODES);
Str_Concat (ListRoomCodes,ThisRoomCode,
Cht_MAX_LENGTH_ROOM_CODES);
/* Get data of this degree */
Deg.DegCod = Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod;
Deg_GetDataOfDegreeByCod (&Deg);
sprintf (ThisRoomShortName,"%s",Deg.ShrtName);
Str_Concat (ListRoomShortNames,"|",sizeof (ListRoomShortNames) - 1);
Str_Concat (ListRoomShortNames,ThisRoomShortName,sizeof (ListRoomShortNames) - 1);
Str_Concat (ListRoomShortNames,"|",
Cht_MAX_LENGTH_ROOM_SHRT_NAMES);
Str_Concat (ListRoomShortNames,ThisRoomShortName,
Cht_MAX_LENGTH_ROOM_SHRT_NAMES);
sprintf (ThisRoomFullName,"%s %s",Txt_Degree,Deg.ShrtName);
Str_Concat (ListRoomFullNames,"|",sizeof (ListRoomFullNames) - 1);
Str_Concat (ListRoomFullNames,ThisRoomFullName,sizeof (ListRoomFullNames) - 1);
Str_Concat (ListRoomFullNames,"|",
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);
if (strcmp (RoomCode,ThisRoomCode))
{
Str_Concat (ListRoomCodes,"|#",sizeof (ListRoomCodes) - 1);
Str_Concat (ListRoomCodes,ThisRoomCode,sizeof (ListRoomCodes) - 1);
Str_Concat (ListRoomCodes,"|#",
Cht_MAX_LENGTH_ROOM_CODES);
Str_Concat (ListRoomCodes,ThisRoomCode,
Cht_MAX_LENGTH_ROOM_CODES);
/* Get data of this course */
Crs.CrsCod = Gbl.Usrs.Me.MyCrss.Crss[NumMyCrs].CrsCod;
Crs_GetDataOfCourseByCod (&Crs);
sprintf (ThisRoomShortName,"%s",Crs.ShrtName);
Str_Concat (ListRoomShortNames,"|",sizeof (ListRoomShortNames) - 1);
Str_Concat (ListRoomShortNames,ThisRoomShortName,sizeof (ListRoomShortNames) - 1);
Str_Concat (ListRoomShortNames,"|",
Cht_MAX_LENGTH_ROOM_SHRT_NAMES);
Str_Concat (ListRoomShortNames,ThisRoomShortName,
Cht_MAX_LENGTH_ROOM_SHRT_NAMES);
sprintf (ThisRoomFullName,"%s %s",Txt_Course,Crs.ShrtName);
Str_Concat (ListRoomFullNames,"|",sizeof (ListRoomFullNames) - 1);
Str_Concat (ListRoomFullNames,ThisRoomFullName,sizeof (ListRoomFullNames) - 1);
Str_Concat (ListRoomFullNames,"|",
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,",
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]);
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]);
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]);
Str_Concat (SubQueryWWW2,StrField,Cty_MAX_LENGTH_SUBQUERY_CTYS);
Str_Concat (SubQueryWWW2,StrField,
Cty_MAX_LENGTH_SUBQUERY_CTYS);
}
switch (Gbl.Ctys.SelectedOrderType)
@ -1258,14 +1262,18 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty,Cty_GetExtraData_t GetExtraD
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]);
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]);
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]);
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"
" FROM countries,usr_data"
@ -2114,18 +2122,26 @@ static void Cty_CreateCountry (struct Country *Cty)
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,Cty->Name[Lan],Cty_MAX_LENGTH_SUBQUERY_CTYS_NAME);
Str_Concat (SubQueryNam2,"'" ,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]);
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,Cty->WWW[Lan],Cty_MAX_LENGTH_SUBQUERY_CTYS_WWW);
Str_Concat (SubQueryWWW2,"'" ,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)"
" VALUES ('%03ld','%s'%s%s)",

View File

@ -330,7 +330,8 @@ void Fil_CreateUpdateFile (const char CurrentName[PATH_MAX + 1],
PATH_MAX);
NewName[LengthFileRoot] = '\0';
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
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)
Lay_ShowErrorAndExit ("Path is too long.");
Str_Concat (Path,"/",PATH_MAX);
Str_Concat (Path,Gbl.FileBrowser.NewFilFolLnkName,PATH_MAX);
Str_Concat (Path,"/",
PATH_MAX);
Str_Concat (Path,Gbl.FileBrowser.NewFilFolLnkName,
PATH_MAX);
/* Create the new directory */
if (mkdir (Path,(mode_t) 0xFFF) == 0)
@ -8450,8 +8452,10 @@ static bool Brw_RcvFileInFileBrw (Brw_UploadType_t UploadType)
Gbl.FileBrowser.Priv.FullPathInTree);
if (strlen (Path) + 1 + strlen (Gbl.FileBrowser.NewFilFolLnkName) + strlen (".tmp") > PATH_MAX)
Lay_ShowErrorAndExit ("Path is too long.");
Str_Concat (Path,"/",PATH_MAX);
Str_Concat (Path,Gbl.FileBrowser.NewFilFolLnkName,PATH_MAX);
Str_Concat (Path,"/",
PATH_MAX);
Str_Concat (Path,Gbl.FileBrowser.NewFilFolLnkName,
PATH_MAX);
/* Check if the destination file exists */
if (Fil_CheckIfPathExists (Path))
@ -8643,9 +8647,12 @@ void Brw_RecLinkFileBrowser (void)
sprintf (Path,"%s/%s",Gbl.FileBrowser.Priv.PathAboveRootFolder,Gbl.FileBrowser.Priv.FullPathInTree);
if (strlen (Path) + 1 + strlen (FileName) + strlen (".url") > PATH_MAX)
Lay_ShowErrorAndExit ("Path is too long.");
Str_Concat (Path,"/",PATH_MAX);
Str_Concat (Path,FileName,PATH_MAX);
Str_Concat (Path,".url",PATH_MAX);
Str_Concat (Path,"/",
PATH_MAX);
Str_Concat (Path,FileName,
PATH_MAX);
Str_Concat (Path,".url",
PATH_MAX);
/* Check if the URL file exists */
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] */
if (NumRow)
Str_Concat (GroupNames,", ",MaxLength);
Str_Concat (GroupNames,row[0],MaxLength);
Str_Concat (GroupNames,", ",
MaxLength);
Str_Concat (GroupNames,row[0],
MaxLength);
}
/***** Free structure that stores the query result *****/

View File

@ -913,12 +913,14 @@ void Mai_ListEmails (void)
LengthStrAddr ++;
if (LengthStrAddr > Mai_MAX_LENGTH_STR_ADDR)
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);
if (LengthStrAddr > Mai_MAX_LENGTH_STR_ADDR)
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>",
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);
if (strlen (FilterFromToSubquery) + strlen (SearchWord) + 512 > Msg_MAX_LENGTH_MESSAGES_QUERY) // Prevent string overflow
break;
Str_Concat (FilterFromToSubquery,"%",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,SearchWord,
Msg_MAX_LENGTH_MESSAGES_QUERY);
}
Str_Concat (FilterFromToSubquery,"%'",Msg_MAX_LENGTH_MESSAGES_QUERY);
Str_Concat (FilterFromToSubquery,"%'",
Msg_MAX_LENGTH_MESSAGES_QUERY);
}
else
FilterFromToSubquery[0] = '\0';

View File

@ -1170,12 +1170,16 @@ void Pho_ShowUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL,
Usr_MAX_BYTES_SURNAMES);
if (UsrDat->Surname2[0])
{
Str_Concat (Surnames," ",Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames,UsrDat->Surname2,Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames," ",
Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames,UsrDat->Surname2,
Usr_MAX_BYTES_SURNAMES);
}
Str_LimitLengthHTMLStr (Surnames,23);
Str_Concat (ShortName,"<br />",Usr_MAX_BYTES_FULL_NAME);
Str_Concat (ShortName,Surnames,Usr_MAX_BYTES_FULL_NAME);
Str_Concat (ShortName,"<br />",
Usr_MAX_BYTES_FULL_NAME);
Str_Concat (ShortName,Surnames,
Usr_MAX_BYTES_FULL_NAME);
Act_SetUniqueId (IdCaption);
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,
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);

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
break;
if (NumWords)
Str_Concat (SearchQuery," AND ",Sch_MAX_LENGTH_SEARCH_QUERY);
Str_Concat (SearchQuery,FieldName,Sch_MAX_LENGTH_SEARCH_QUERY);
Str_Concat (SearchQuery," LIKE ",Sch_MAX_LENGTH_SEARCH_QUERY);
Str_Concat (SearchQuery," AND ",
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[0])
Str_Concat (SearchQuery,CharSet,Sch_MAX_LENGTH_SEARCH_QUERY);
Str_Concat (SearchQuery,"'%",Sch_MAX_LENGTH_SEARCH_QUERY);
Str_Concat (SearchQuery,SearchWords[NumWords],Sch_MAX_LENGTH_SEARCH_QUERY);
Str_Concat (SearchQuery,"%'",Sch_MAX_LENGTH_SEARCH_QUERY);
Str_Concat (SearchQuery,CharSet,
Sch_MAX_LENGTH_SEARCH_QUERY);
Str_Concat (SearchQuery,"'%",
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[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','",
LogCod);
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)
{
@ -1113,7 +1114,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
LogTable,
(long) Gbl.DateRange.TimeUTC[0],
(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)
{
@ -1129,7 +1131,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{
sprintf (QueryAux," AND %s.CtyCod='%ld'",
LogTable,Gbl.CurrentCty.Cty.CtyCod);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS);
Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
}
break;
case Sco_SCOPE_INS:
@ -1137,7 +1140,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{
sprintf (QueryAux," AND %s.InsCod='%ld'",
LogTable,Gbl.CurrentIns.Ins.InsCod);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS);
Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
}
break;
case Sco_SCOPE_CTR:
@ -1145,7 +1149,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{
sprintf (QueryAux," AND %s.CtrCod='%ld'",
LogTable,Gbl.CurrentCtr.Ctr.CtrCod);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS);
Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
}
break;
case Sco_SCOPE_DEG:
@ -1153,7 +1158,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{
sprintf (QueryAux," AND %s.DegCod='%ld'",
LogTable,Gbl.CurrentDeg.Deg.DegCod);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS);
Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
}
break;
case Sco_SCOPE_CRS:
@ -1161,7 +1167,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{
sprintf (QueryAux," AND %s.CrsCod='%ld'",
LogTable,Gbl.CurrentCrs.Crs.CrsCod);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS);
Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
}
break;
}
@ -1225,7 +1232,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
LogTable,Gbl.Usrs.Me.UsrDat.UsrCod);
break;
}
Str_Concat (Query,StrRole,Sta_MAX_LENGTH_QUERY_ACCESS);
Str_Concat (Query,StrRole,
Sta_MAX_LENGTH_QUERY_ACCESS);
switch (Gbl.Stat.ClicksGroupedBy)
{
@ -1233,12 +1241,14 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
case Sta_CLICKS_GBL_PER_WEB_SERVICE_FUNCTION:
sprintf (QueryAux," AND %s.LogCod=log_ws.LogCod",
LogTable);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS);
Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
break;
case Sta_CLICKS_GBL_PER_BANNER:
sprintf (QueryAux," AND %s.LogCod=log_banners.LogCod",
LogTable);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS);
Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
break;
default:
break;
@ -1247,7 +1257,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
case Sta_SHOW_COURSE_ACCESSES:
sprintf (QueryAux," AND %s.CrsCod='%ld'",
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);
NumUsr = 0;
Ptr = Gbl.Usrs.Select.All;
@ -1264,11 +1275,13 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
NumUsr ? " OR %s.UsrCod='%ld'" :
" AND (%s.UsrCod='%ld'",
LogTable,UsrDat.UsrCod);
Str_Concat (Query,QueryAux,Sta_MAX_LENGTH_QUERY_ACCESS);
Str_Concat (Query,QueryAux,
Sta_MAX_LENGTH_QUERY_ACCESS);
NumUsr++;
}
}
Str_Concat (Query,")",Sta_MAX_LENGTH_QUERY_ACCESS);
Str_Concat (Query,")",
Sta_MAX_LENGTH_QUERY_ACCESS);
break;
}
@ -1277,47 +1290,57 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{
sprintf (QueryAux," AND %s.ActCod='%ld'",
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 */
switch (Gbl.Stat.ClicksGroupedBy)
{
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;
case Sta_CLICKS_CRS_PER_USR:
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;
case Sta_CLICKS_CRS_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;
case Sta_CLICKS_CRS_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;
case Sta_CLICKS_CRS_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;
case Sta_CLICKS_CRS_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;
case Sta_CLICKS_CRS_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;
case Sta_CLICKS_CRS_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;
case Sta_CLICKS_CRS_PER_ACTION:
case Sta_CLICKS_GBL_PER_ACTION:
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;
case Sta_CLICKS_GBL_PER_PLUGIN:
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;
case Sta_CLICKS_GBL_PER_COUNTRY:
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;
case Sta_CLICKS_GBL_PER_INSTITUTION:
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;
case Sta_CLICKS_GBL_PER_CENTRE:
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;
case Sta_CLICKS_GBL_PER_DEGREE:
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;
case Sta_CLICKS_GBL_PER_COURSE:
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;
}
/***** Write query for debug *****/

View File

@ -697,8 +697,10 @@ static void Svy_WriteAuthor (struct Survey *Svy)
Usr_MAX_BYTES_SURNAMES);
if (UsrDat.Surname2[0])
{
Str_Concat (Surnames," ",Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames,UsrDat.Surname2,Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames," ",
Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames,UsrDat.Surname2,
Usr_MAX_BYTES_SURNAMES);
}
Str_LimitLengthHTMLStr (FirstName,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 (StrDst)
Str_Concat (StrDst,".",Syl_MAX_LENGTH_ITEM_COD);
Str_Concat (StrDst,".",
Syl_MAX_LENGTH_ITEM_COD);
if (FileTgt)
fprintf (FileTgt,".");
}
sprintf (InStr,"%d",CodItem[N]);
if (StrDst)
Str_Concat (StrDst,InStr,Syl_MAX_LENGTH_ITEM_COD);
Str_Concat (StrDst,InStr,
Syl_MAX_LENGTH_ITEM_COD);
if (FileTgt)
fprintf (FileTgt,"%s",InStr);
}

View File

@ -2391,27 +2391,38 @@ static unsigned long Tst_GetQuestionsForEdit (MYSQL_RES **mysql_res)
"tst_questions.Score"
" FROM tst_questions");
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);
Str_Concat (Query,CrsCodStr,Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"' AND tst_questions.EditTime>=FROM_UNIXTIME('",Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,CrsCodStr,
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]);
Str_Concat (Query,LongStr,Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"') AND tst_questions.EditTime<=FROM_UNIXTIME('",Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,LongStr,
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]);
Str_Concat (Query,LongStr,Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"')",Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,LongStr,
Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"')",
Tst_MAX_LENGTH_QUERY_TEST);
/* Add the tags selected */
if (!Gbl.Test.Tags.All)
{
Str_Concat (Query," AND tst_questions.QstCod=tst_question_tags.QstCod"
" AND tst_question_tags.TagCod=tst_tags.TagCod"
" AND tst_tags.CrsCod='",Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,CrsCodStr,Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"'",Tst_MAX_LENGTH_QUERY_TEST);
" AND tst_tags.CrsCod='",
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);
NumItemInList = 0;
Ptr = Gbl.Test.Tags.List;
@ -2425,11 +2436,14 @@ static unsigned long Tst_GetQuestionsForEdit (MYSQL_RES **mysql_res)
NumItemInList ? " OR tst_tags.TagTxt='" :
" AND (tst_tags.TagTxt='",
Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,TagText,Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"'",Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,TagText,
Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"'",
Tst_MAX_LENGTH_QUERY_TEST);
NumItemInList++;
}
Str_Concat (Query,")",Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,")",
Tst_MAX_LENGTH_QUERY_TEST);
}
/* Add the types of answer selected */
@ -2449,38 +2463,47 @@ static unsigned long Tst_GetQuestionsForEdit (MYSQL_RES **mysql_res)
NumItemInList ? " OR tst_questions.AnsType='" :
" AND (tst_questions.AnsType='",
Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,Tst_StrAnswerTypesDB[AnsType],Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"'",Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,Tst_StrAnswerTypesDB[AnsType],
Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"'",
Tst_MAX_LENGTH_QUERY_TEST);
NumItemInList++;
}
Str_Concat (Query,")",Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,")",
Tst_MAX_LENGTH_QUERY_TEST);
}
/* 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)
{
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;
case Tst_ORDER_NUM_HITS:
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;
case Tst_ORDER_AVERAGE_SCORE:
Str_Concat (Query," ORDER BY tst_questions.Score/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;
case Tst_ORDER_NUM_HITS_NOT_BLANK:
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;
case Tst_ORDER_AVERAGE_SCORE_NOT_BLANK:
Str_Concat (Query," ORDER BY tst_questions.Score/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;
}
@ -2566,11 +2589,14 @@ static unsigned long Tst_GetQuestionsForTest (MYSQL_RES **mysql_res)
NumItemInList ? " OR tst_tags.TagTxt='" :
" AND (tst_tags.TagTxt='",
Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,TagText,Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"'",Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,TagText,
Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"'",
Tst_MAX_LENGTH_QUERY_TEST);
NumItemInList++;
}
Str_Concat (Query,")",Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,")",
Tst_MAX_LENGTH_QUERY_TEST);
}
/* Add answer types selected */
@ -2590,17 +2616,22 @@ static unsigned long Tst_GetQuestionsForTest (MYSQL_RES **mysql_res)
NumItemInList ? " OR tst_questions.AnsType='" :
" AND (tst_questions.AnsType='",
Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,Tst_StrAnswerTypesDB[AnsType],Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"'",Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,Tst_StrAnswerTypesDB[AnsType],
Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,"'",
Tst_MAX_LENGTH_QUERY_TEST);
NumItemInList++;
}
Str_Concat (Query,")",Tst_MAX_LENGTH_QUERY_TEST);
Str_Concat (Query,")",
Tst_MAX_LENGTH_QUERY_TEST);
}
/* 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);
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)
Lay_ShowAlert (Lay_INFO,Query);

View File

@ -721,13 +721,17 @@ void Usr_BuildFullName (struct UsrData *UsrDat)
Usr_MAX_BYTES_FULL_NAME);
if (UsrDat->Surname1[0])
{
Str_Concat (UsrDat->FullName," ",Usr_MAX_BYTES_FULL_NAME);
Str_Concat (UsrDat->FullName,UsrDat->Surname1,Usr_MAX_BYTES_FULL_NAME);
Str_Concat (UsrDat->FullName," ",
Usr_MAX_BYTES_FULL_NAME);
Str_Concat (UsrDat->FullName,UsrDat->Surname1,
Usr_MAX_BYTES_FULL_NAME);
}
if (UsrDat->Surname2[0])
{
Str_Concat (UsrDat->FullName," ",Usr_MAX_BYTES_FULL_NAME);
Str_Concat (UsrDat->FullName,UsrDat->Surname2,Usr_MAX_BYTES_FULL_NAME);
Str_Concat (UsrDat->FullName," ",
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);
if (UsrDat->Surname2[0])
{
Str_Concat (Surnames," ",Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames,UsrDat->Surname2,Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames," ",
Usr_MAX_BYTES_SURNAMES);
Str_Concat (Surnames,UsrDat->Surname2,
Usr_MAX_BYTES_SURNAMES);
}
Str_LimitLengthHTMLStr (Surnames,MaxChars);
@ -3893,11 +3899,14 @@ static void Usr_BuildQueryToGetUsrsLstCrs (Rol_Role_t Role,
" GrpCod='",
Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
sprintf (LongStr,"%ld",GrpCod);
Str_Concat (Query,LongStr,Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
Str_Concat (Query,"'",Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
Str_Concat (Query,LongStr,
Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
Str_Concat (Query,"'",
Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
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 (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
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 */
Str_Concat (Query,"crs_usr.UsrCod NOT IN"
" (SELECT DISTINCT crs_grp_usr.UsrCod"
@ -3918,14 +3929,16 @@ static void Usr_BuildQueryToGetUsrsLstCrs (Rol_Role_t Role,
" WHERE crs_grp.GrpTypCod='",
Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
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)",
Usr_MAX_LENGTH_QUERY_GET_LIST_USRS);
NumNegativeCods++;
}
if (NumPositiveCods ||
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 ((void *) AddStdsWithoutGroupOf);
@ -3939,7 +3952,8 @@ static void Usr_BuildQueryToGetUsrsLstCrs (Rol_Role_t Role,
"usr_data.Surname1,"
"usr_data.Surname2,"
"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" :
"%ld",
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'" :
" AND UsrCod NOT IN ('%ld'",
UsrCod);
Str_Concat (Query,SubQuery,Length);
Str_Concat (Query,SubQuery,
Length);
}
sendAttendanceUsersOut->numUsers++;
@ -2770,7 +2772,8 @@ int swad__sendAttendanceUsers (struct soap *soap,
{
/* Mark not present users as absent in table of users */
if (sendAttendanceUsersOut->numUsers)
Str_Concat (Query,")",Length);
Str_Concat (Query,")",
Length);
DB_QueryUPDATE (Query,"can not set other users as absent");
free ((void *) Query);
@ -3256,7 +3259,8 @@ int swad__sendMessage (struct soap *soap,
if (FirstNickname)
{
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"
" WHERE Nickname IN ('",
Svc_MAX_LENGTH_QUERY_RECIPIENTS);
@ -3264,13 +3268,17 @@ int swad__sendMessage (struct soap *soap,
ThereAreNicknames = true;
}
else
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);
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)
Str_Concat (Query,")",Svc_MAX_LENGTH_QUERY_RECIPIENTS);
Str_Concat (Query,")",
Svc_MAX_LENGTH_QUERY_RECIPIENTS);
/***** Initialize output structure *****/
sendMessageOut->numUsers = 0;
@ -4056,7 +4064,8 @@ int swad__getTrivialQuestion (struct soap *soap,
else
{
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);
if (UsrDat->Surname1[0] &&
UsrDat->Surname2[0])
Str_Concat (FullNameAndUsrID,"_",ZIP_MAX_LENGTH_FULL_NAME_AND_ID); // Separation between surname 1 and surname 2
Str_Concat (FullNameAndUsrID,UsrDat->Surname2,ZIP_MAX_LENGTH_FULL_NAME_AND_ID);
Str_Concat (FullNameAndUsrID,"_", // Separation between surname 1 and surname 2
ZIP_MAX_LENGTH_FULL_NAME_AND_ID);
Str_Concat (FullNameAndUsrID,UsrDat->Surname2,
ZIP_MAX_LENGTH_FULL_NAME_AND_ID);
if ((UsrDat->Surname1[0] ||
UsrDat->Surname2[0]) &&
UsrDat->FirstName[0])
Str_Concat (FullNameAndUsrID,"_",ZIP_MAX_LENGTH_FULL_NAME_AND_ID); // Separation between surnames and first name
Str_Concat (FullNameAndUsrID,UsrDat->FirstName,ZIP_MAX_LENGTH_FULL_NAME_AND_ID);
Str_Concat (FullNameAndUsrID,"_", // Separation between surnames and first name
ZIP_MAX_LENGTH_FULL_NAME_AND_ID);
Str_Concat (FullNameAndUsrID,UsrDat->FirstName,
ZIP_MAX_LENGTH_FULL_NAME_AND_ID);
if ((UsrDat->Surname1[0] ||
UsrDat->Surname2[0] ||
UsrDat->FirstName[0]) &&
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);
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);
/* Create path to folder and link */