diff --git a/swad_changelog.h b/swad_changelog.h index 35ce6a3ad..a4aa8aaa3 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -355,10 +355,11 @@ En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 18.9.6 (2018-10-29)" +#define Log_PLATFORM_VERSION "SWAD 18.9.7 (2018-10-29)" #define CSS_FILE "swad18.4.css" #define JS_FILE "swad17.17.1.js" /* + Version 18.9.7: Oct 29, 2018 Some sprintf for database queries changed by internal function. (235705 lines) Version 18.9.6: Oct 29, 2018 Some sprintf for database queries changed by internal function. Internal changes in messages. (235787 lines) Version 18.9.5: Oct 29, 2018 Some sprintf for database queries changed by internal function. (235775 lines) diff --git a/swad_report.c b/swad_report.c index a2508e0b2..b8c767496 100644 --- a/swad_report.c +++ b/swad_report.c @@ -991,7 +991,6 @@ static void Rep_GetAndWriteMyCurrentCrss (Rol_Role_t Role, extern const char *Txt_courses; extern const char *Txt_teachers_ABBREVIATION; extern const char *Txt_students_ABBREVIATION; - char Query[512]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumCrss; @@ -1016,7 +1015,7 @@ static void Rep_GetAndWriteMyCurrentCrss (Rol_Role_t Role, Txt_students_ABBREVIATION); /***** Get courses of a user from database *****/ - sprintf (Query,"SELECT crs_usr.CrsCod,log_full.CrsCod,COUNT(*) AS N" + DB_BuildQuery ("SELECT crs_usr.CrsCod,log_full.CrsCod,COUNT(*) AS N" " FROM crs_usr LEFT JOIN log_full ON" " (crs_usr.CrsCod=log_full.CrsCod" " AND crs_usr.UsrCod=log_full.UsrCod" @@ -1025,10 +1024,10 @@ static void Rep_GetAndWriteMyCurrentCrss (Rol_Role_t Role, " AND crs_usr.Role=%u" " GROUP BY crs_usr.CrsCod" " ORDER BY N DESC,log_full.CrsCod DESC", - Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) Role); + Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) Role); /***** List the courses (one row per course) *****/ - if ((NumCrss = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get courses of a user"))) + if ((NumCrss = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get courses of a user"))) { /* Heading row */ fprintf (Gbl.F.Rep,"
    "); @@ -1093,7 +1092,6 @@ static void Rep_GetAndWriteMyHistoricCrss (Rol_Role_t Role, { extern const char *Txt_Hits_as_a_USER; extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; - char Query[256]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumCrss; @@ -1101,17 +1099,17 @@ static void Rep_GetAndWriteMyHistoricCrss (Rol_Role_t Role, long CrsCod; /***** Get historic courses of a user from log *****/ - sprintf (Query,"SELECT CrsCod,COUNT(*) AS N" + DB_BuildQuery ("SELECT CrsCod,COUNT(*) AS N" " FROM log_full" " WHERE UsrCod=%ld AND Role=%u AND CrsCod>0" " GROUP BY CrsCod" " HAVING N>%u" " ORDER BY N DESC", - Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) Role, - Rep_MIN_CLICKS_CRS); + Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) Role, + Rep_MIN_CLICKS_CRS); /***** List the courses (one row per course) *****/ - if ((NumCrss = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get courses of a user"))) + if ((NumCrss = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get courses of a user"))) { /* Heading row */ snprintf (Gbl.Title,sizeof (Gbl.Title), @@ -1216,7 +1214,6 @@ static void Rep_WriteRowCrsData (long CrsCod,Rol_Role_t Role, static void Rep_ShowMyHitsPerYear (bool AnyCourse,long CrsCod,Rol_Role_t Role, struct Rep_Report *Report) { - char Query[1024]; char SubQueryCrs[128]; char SubQueryRol[128]; MYSQL_RES *mysql_res; @@ -1238,17 +1235,17 @@ static void Rep_ShowMyHitsPerYear (bool AnyCourse,long CrsCod,Rol_Role_t Role, else sprintf (SubQueryRol," AND Role=%u",(unsigned) Role); - sprintf (Query,"SELECT SQL_NO_CACHE " + DB_BuildQuery ("SELECT SQL_NO_CACHE " "YEAR(CONVERT_TZ(ClickTime,@@session.time_zone,'UTC')) AS Year," "COUNT(*) FROM log_full" " WHERE ClickTime>=FROM_UNIXTIME(%ld)" " AND UsrCod=%ld%s%s" " GROUP BY Year DESC", - (long) Report->UsrFigures.FirstClickTimeUTC, - Gbl.Usrs.Me.UsrDat.UsrCod, - SubQueryCrs, - SubQueryRol); - NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get clicks"); + (long) Report->UsrFigures.FirstClickTimeUTC, + Gbl.Usrs.Me.UsrDat.UsrCod, + SubQueryCrs, + SubQueryRol); + NumRows = DB_QuerySELECT_new (&mysql_res,"can not get clicks"); /***** Initialize first year *****/ Gbl.DateRange.DateIni.Date.Year = 1900 + Report->tm_FirstClickTime.tm_year; @@ -1393,7 +1390,6 @@ void Rep_RemoveUsrUsageReports (long UsrCod) static void Rep_RemoveUsrReportsFiles (long UsrCod) { - char Query[128]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumReports; @@ -1401,10 +1397,10 @@ static void Rep_RemoveUsrReportsFiles (long UsrCod) char PathUniqueDirReport[PATH_MAX + 1]; /***** Get directories for the reports *****/ - sprintf (Query,"SELECT UniqueDirL,UniqueDirR FROM usr_report" + DB_BuildQuery ("SELECT UniqueDirL,UniqueDirR FROM usr_report" " WHERE UsrCod=%ld", - UsrCod); - NumReports = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get user's usage reports"); + UsrCod); + NumReports = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get user's usage reports"); /***** Remove the reports *****/ for (NumReport = 0; diff --git a/swad_role.c b/swad_role.c index c4cf7b532..db3f4d55d 100644 --- a/swad_role.c +++ b/swad_role.c @@ -335,7 +335,6 @@ void Rol_FlushCacheRoleUsrInCrs (void) Rol_Role_t Rol_GetRoleUsrInCrs (long UsrCod,long CrsCod) { - char Query[256]; MYSQL_RES *mysql_res; MYSQL_ROW row; @@ -354,10 +353,10 @@ Rol_Role_t Rol_GetRoleUsrInCrs (long UsrCod,long CrsCod) Gbl.Cache.RoleUsrInCrs.UsrCod = UsrCod; Gbl.Cache.RoleUsrInCrs.CrsCod = CrsCod; Gbl.Cache.RoleUsrInCrs.Role = Rol_UNK; - sprintf (Query,"SELECT Role FROM crs_usr" + DB_BuildQuery ("SELECT Role FROM crs_usr" " WHERE CrsCod=%ld AND UsrCod=%ld", - CrsCod,UsrCod); - if (DB_QuerySELECT (Query,&mysql_res,"can not get the role of a user in a course") == 1) // User belongs to the course + CrsCod,UsrCod); + if (DB_QuerySELECT_new (&mysql_res,"can not get the role of a user in a course") == 1) // User belongs to the course { row = mysql_fetch_row (mysql_res); Gbl.Cache.RoleUsrInCrs.Role = Rol_ConvertUnsignedStrToRole (row[0]); @@ -375,7 +374,6 @@ Rol_Role_t Rol_GetRoleUsrInCrs (long UsrCod,long CrsCod) void Rol_GetRolesInAllCrssIfNotYetGot (struct UsrData *UsrDat) { - char Query[128]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumRole; @@ -385,11 +383,11 @@ void Rol_GetRolesInAllCrssIfNotYetGot (struct UsrData *UsrDat) if (UsrDat->Roles.InCrss < 0) // Not yet filled { /***** Get distinct roles in all courses of the user from database *****/ - sprintf (Query,"SELECT DISTINCT(Role) FROM crs_usr WHERE UsrCod=%ld", - UsrDat->UsrCod); - NumRoles = (unsigned) DB_QuerySELECT (Query,&mysql_res, - "can not get the roles of a user" - " in all his/her courses"); + DB_BuildQuery ("SELECT DISTINCT(Role) FROM crs_usr WHERE UsrCod=%ld", + UsrDat->UsrCod); + NumRoles = (unsigned) DB_QuerySELECT_new (&mysql_res, + "can not get the roles of a user" + " in all his/her courses"); for (NumRole = 0, UsrDat->Roles.InCrss = 0; NumRole < NumRoles; NumRole++) @@ -585,16 +583,15 @@ unsigned Rol_GetSelectedRoles (void) Rol_Role_t Rol_GetRequestedRole (long UsrCod) { - char Query[256]; MYSQL_RES *mysql_res; MYSQL_ROW row; Rol_Role_t Role = Rol_UNK; /***** Get requested role from database *****/ - sprintf (Query,"SELECT Role FROM crs_usr_requests" + DB_BuildQuery ("SELECT Role FROM crs_usr_requests" " WHERE CrsCod=%ld AND UsrCod=%ld", - Gbl.CurrentCrs.Crs.CrsCod,UsrCod); - if (DB_QuerySELECT (Query,&mysql_res,"can not get requested role")) + Gbl.CurrentCrs.Crs.CrsCod,UsrCod); + if (DB_QuerySELECT_new (&mysql_res,"can not get requested role")) { /***** Get role *****/ row = mysql_fetch_row (mysql_res); diff --git a/swad_session.c b/swad_session.c index e1e9a6141..ed1224fcc 100644 --- a/swad_session.c +++ b/swad_session.c @@ -252,21 +252,20 @@ void Ses_RemoveExpiredSessions (void) bool Ses_GetSessionData (void) { - char Query[256 + Cns_BYTES_SESSION_ID]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned UnsignedNum; bool Result = false; /***** Query data of session from database *****/ - sprintf (Query,"SELECT UsrCod,Password,Role," + DB_BuildQuery ("SELECT UsrCod,Password,Role," "CtyCod,InsCod,CtrCod,DegCod,CrsCod," "WhatToSearch,SearchStr" " FROM sessions WHERE SessionId='%s'", - Gbl.Session.Id); + Gbl.Session.Id); /***** Check if the session existed in the database *****/ - if (DB_QuerySELECT (Query,&mysql_res,"can not get data of session")) + if (DB_QuerySELECT_new (&mysql_res,"can not get data of session")) { row = mysql_fetch_row (mysql_res); @@ -404,7 +403,6 @@ unsigned Ses_GetHiddenParFromDB (Act_Action_t NextAction, const char *ParamName,char *ParamValue, size_t MaxBytes) { - char Query[512 + Cns_BYTES_SESSION_ID]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned long NumRows; @@ -416,10 +414,10 @@ unsigned Ses_GetHiddenParFromDB (Act_Action_t NextAction, if (Gbl.Session.IsOpen) // If the session is open, get parameter from DB { /***** Get a hidden parameter from database *****/ - sprintf (Query,"SELECT ParamValue FROM hidden_params" + DB_BuildQuery ("SELECT ParamValue FROM hidden_params" " WHERE SessionId='%s' AND Action=%ld AND ParamName='%s'", - Gbl.Session.Id,Act_GetActCod (NextAction),ParamName); - NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get a hidden parameter"); + Gbl.Session.Id,Act_GetActCod (NextAction),ParamName); + NumRows = DB_QuerySELECT_new (&mysql_res,"can not get a hidden parameter"); /***** Check if the parameter is found in database *****/ if (NumRows) diff --git a/swad_social.c b/swad_social.c index 8d436a3b5..33b2b6905 100644 --- a/swad_social.c +++ b/swad_social.c @@ -249,7 +249,7 @@ static unsigned Soc_GetNumTimesACommHasBeenFav (struct SocialComment *SocCom); static void Soc_ShowUsrsWhoHaveSharedSocialNote (const struct SocialNote *SocNot); static void Soc_ShowUsrsWhoHaveMarkedSocialNoteAsFav (const struct SocialNote *SocNot); static void Soc_ShowUsrsWhoHaveMarkedSocialCommAsFav (const struct SocialComment *SocCom); -static void Soc_ShowSharersOrFavers (unsigned NumUsrs,const char *Query); +static void Soc_ShowSharersOrFavers (unsigned NumUsrs); static void Soc_GetDataOfSocialNotByCod (struct SocialNote *SocNot); static void Soc_GetDataOfSocialComByCod (struct SocialComment *SocCom); @@ -794,15 +794,14 @@ static void Soc_BuildQueryToGetTimeline (Soc_TimelineUsrOrGbl_t TimelineUsrOrGbl static long Soc_GetPubCodFromSession (const char *FieldName) { - char Query[128 + Cns_BYTES_SESSION_ID]; MYSQL_RES *mysql_res; MYSQL_ROW row; long PubCod; /***** Get last publishing code from database *****/ - sprintf (Query,"SELECT %s FROM sessions WHERE SessionId='%s'", - FieldName,Gbl.Session.Id); - if (DB_QuerySELECT (Query,&mysql_res,"can not get publishing code from session") != 1) + DB_BuildQuery ("SELECT %s FROM sessions WHERE SessionId='%s'", + FieldName,Gbl.Session.Id); + if (DB_QuerySELECT_new (&mysql_res,"can not get publishing code from session") != 1) Lay_ShowErrorAndExit ("Error when getting publishing code from session."); /***** Get last publishing code *****/ @@ -1623,7 +1622,6 @@ static void Soc_WriteDateTime (time_t TimeUTC) static void Soc_GetAndWriteSocialPost (long PstCod) { - char Query[256]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned long NumRows; @@ -1634,10 +1632,10 @@ static void Soc_GetAndWriteSocialPost (long PstCod) Img_ImageConstructor (&Image); /***** Get social post from database *****/ - sprintf (Query,"SELECT Content,ImageName,ImageTitle,ImageURL" + DB_BuildQuery ("SELECT Content,ImageName,ImageTitle,ImageURL" " FROM social_posts WHERE PstCod=%ld", - PstCod); - NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get the content of a social post"); + PstCod); + NumRows = DB_QuerySELECT_new (&mysql_res,"can not get the content of a social post"); /***** Result should have a unique row *****/ if (NumRows == 1) @@ -2411,7 +2409,6 @@ static unsigned long Soc_GetNumCommentsInSocialNote (long NotCod) static void Soc_WriteCommentsInSocialNote (const struct SocialNote *SocNot) { - char Query[1024]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned long NumComments; @@ -2419,7 +2416,7 @@ static void Soc_WriteCommentsInSocialNote (const struct SocialNote *SocNot) struct SocialComment SocCom; /***** Get comments of this social note from database *****/ - sprintf (Query,"SELECT social_pubs.PubCod,social_pubs.PublisherCod," + DB_BuildQuery ("SELECT social_pubs.PubCod,social_pubs.PublisherCod," "social_pubs.NotCod," "UNIX_TIMESTAMP(social_pubs.TimePublish)," "social_comments.Content," @@ -2431,8 +2428,8 @@ static void Soc_WriteCommentsInSocialNote (const struct SocialNote *SocNot) " AND social_pubs.PubType=%u" " AND social_pubs.PubCod=social_comments.PubCod" " ORDER BY social_pubs.PubCod", - SocNot->NotCod,(unsigned) Soc_PUB_COMMENT_TO_NOTE); - NumComments = DB_QuerySELECT (Query,&mysql_res,"can not get social comments"); + SocNot->NotCod,(unsigned) Soc_PUB_COMMENT_TO_NOTE); + NumComments = DB_QuerySELECT_new (&mysql_res,"can not get social comments"); /***** List comments *****/ if (NumComments) // Comments to this social note found @@ -3719,14 +3716,13 @@ static void Soc_RemoveSocialNote (void) static void Soc_RemoveImgFileFromSocialPost (long PstCod) { - char Query[128]; MYSQL_RES *mysql_res; MYSQL_ROW row; /***** Get name of image associated to a social post from database *****/ - sprintf (Query,"SELECT ImageName FROM social_posts WHERE PstCod=%ld", - PstCod); - if (DB_QuerySELECT (Query,&mysql_res,"can not get image")) + DB_BuildQuery ("SELECT ImageName FROM social_posts WHERE PstCod=%ld", + PstCod); + if (DB_QuerySELECT_new (&mysql_res,"can not get image")) { /***** Get image name (row[0]) *****/ row = mysql_fetch_row (mysql_res); @@ -3844,15 +3840,14 @@ static void Soc_RemoveASocialNoteFromDB (struct SocialNote *SocNot) static long Soc_GetNotCodOfSocialPublishing (long PubCod) { - char Query[128]; MYSQL_RES *mysql_res; MYSQL_ROW row; long NotCod = -1L; /***** Get code of social note from database *****/ - sprintf (Query,"SELECT NotCod FROM social_pubs WHERE PubCod=%ld", - PubCod); - if (DB_QuerySELECT (Query,&mysql_res,"can not get code of social note") == 1) // Result should have a unique row + DB_BuildQuery ("SELECT NotCod FROM social_pubs WHERE PubCod=%ld", + PubCod); + if (DB_QuerySELECT_new (&mysql_res,"can not get code of social note") == 1) // Result should have a unique row { /* Get code of social note */ row = mysql_fetch_row (mysql_res); @@ -3871,16 +3866,15 @@ static long Soc_GetNotCodOfSocialPublishing (long PubCod) static long Soc_GetPubCodOfOriginalSocialNote (long NotCod) { - char Query[256]; MYSQL_RES *mysql_res; MYSQL_ROW row; long OriginalPubCod = -1L; /***** Get code of social publishing of the original note *****/ - sprintf (Query,"SELECT PubCod FROM social_pubs" + DB_BuildQuery ("SELECT PubCod FROM social_pubs" " WHERE NotCod=%ld AND PubType=%u", - NotCod,(unsigned) Soc_PUB_ORIGINAL_NOTE); - if (DB_QuerySELECT (Query,&mysql_res,"can not get code of social publishing") == 1) // Result should have a unique row + NotCod,(unsigned) Soc_PUB_ORIGINAL_NOTE); + if (DB_QuerySELECT_new (&mysql_res,"can not get code of social publishing") == 1) // Result should have a unique row { /* Get code of social publishing (row[0]) */ row = mysql_fetch_row (mysql_res); @@ -4064,14 +4058,13 @@ static void Soc_RemoveSocialComment (void) static void Soc_RemoveImgFileFromSocialComment (long PubCod) { - char Query[128]; MYSQL_RES *mysql_res; MYSQL_ROW row; /***** Get name of image associated to a social post from database *****/ - sprintf (Query,"SELECT ImageName FROM social_comments WHERE PubCod=%ld", - PubCod); - if (DB_QuerySELECT (Query,&mysql_res,"can not get image")) + DB_BuildQuery ("SELECT ImageName FROM social_comments WHERE PubCod=%ld", + PubCod); + if (DB_QuerySELECT_new (&mysql_res,"can not get image")) { /***** Get image name (row[0]) *****/ row = mysql_fetch_row (mysql_res); @@ -4308,19 +4301,17 @@ static unsigned Soc_GetNumTimesACommHasBeenFav (struct SocialComment *SocCom) static void Soc_ShowUsrsWhoHaveSharedSocialNote (const struct SocialNote *SocNot) { - char Query[256]; - /***** Get users who have shared this note *****/ - sprintf (Query,"SELECT PublisherCod FROM social_pubs" + DB_BuildQuery ("SELECT PublisherCod FROM social_pubs" " WHERE NotCod=%ld" " AND PublisherCod<>%ld" " AND PubType=%u" " ORDER BY PubCod LIMIT %u", - SocNot->NotCod, - SocNot->UsrCod, - (unsigned) Soc_PUB_SHARED_NOTE, - Soc_MAX_SHARERS_FAVERS_SHOWN); - Soc_ShowSharersOrFavers (SocNot->NumShared,Query); + SocNot->NotCod, + SocNot->UsrCod, + (unsigned) Soc_PUB_SHARED_NOTE, + Soc_MAX_SHARERS_FAVERS_SHOWN); + Soc_ShowSharersOrFavers (SocNot->NumShared); } /*****************************************************************************/ @@ -4329,17 +4320,15 @@ static void Soc_ShowUsrsWhoHaveSharedSocialNote (const struct SocialNote *SocNot static void Soc_ShowUsrsWhoHaveMarkedSocialNoteAsFav (const struct SocialNote *SocNot) { - char Query[256]; - /***** Get users who have marked this note as favourite *****/ - sprintf (Query,"SELECT UsrCod FROM social_notes_fav" + DB_BuildQuery ("SELECT UsrCod FROM social_notes_fav" " WHERE NotCod=%ld" " AND UsrCod<>%ld" // Extra check " ORDER BY FavCod LIMIT %u", - SocNot->NotCod, - SocNot->UsrCod, - Soc_MAX_SHARERS_FAVERS_SHOWN); - Soc_ShowSharersOrFavers (SocNot->NumFavs,Query); + SocNot->NotCod, + SocNot->UsrCod, + Soc_MAX_SHARERS_FAVERS_SHOWN); + Soc_ShowSharersOrFavers (SocNot->NumFavs); } /*****************************************************************************/ @@ -4348,17 +4337,15 @@ static void Soc_ShowUsrsWhoHaveMarkedSocialNoteAsFav (const struct SocialNote *S static void Soc_ShowUsrsWhoHaveMarkedSocialCommAsFav (const struct SocialComment *SocCom) { - char Query[256]; - /***** Get users who have marked this comment as favourite *****/ - sprintf (Query,"SELECT UsrCod FROM social_comments_fav" + DB_BuildQuery ("SELECT UsrCod FROM social_comments_fav" " WHERE PubCod=%ld" " AND UsrCod<>%ld" // Extra check " ORDER BY FavCod LIMIT %u", - SocCom->PubCod, - SocCom->UsrCod, - Soc_MAX_SHARERS_FAVERS_SHOWN); - Soc_ShowSharersOrFavers (SocCom->NumFavs,Query); + SocCom->PubCod, + SocCom->UsrCod, + Soc_MAX_SHARERS_FAVERS_SHOWN); + Soc_ShowSharersOrFavers (SocCom->NumFavs); } /*****************************************************************************/ @@ -4366,7 +4353,7 @@ static void Soc_ShowUsrsWhoHaveMarkedSocialCommAsFav (const struct SocialComment /*****************************************************************************/ // All forms in this function and nested functions must have unique identifiers -static void Soc_ShowSharersOrFavers (unsigned NumUsrs,const char *Query) +static void Soc_ShowSharersOrFavers (unsigned NumUsrs) { MYSQL_RES *mysql_res; MYSQL_ROW row; @@ -4384,7 +4371,7 @@ static void Soc_ShowSharersOrFavers (unsigned NumUsrs,const char *Query) if (NumUsrs) { /***** Get list of users from database *****/ - NumFirstUsrs = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get users"); + NumFirstUsrs = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get users"); if (NumFirstUsrs) { /***** Initialize structure with user's data *****/ @@ -4440,18 +4427,17 @@ static void Soc_ShowSharersOrFavers (unsigned NumUsrs,const char *Query) static void Soc_GetDataOfSocialNotByCod (struct SocialNote *SocNot) { - char Query[256]; MYSQL_RES *mysql_res; MYSQL_ROW row; if (SocNot->NotCod > 0) { /***** Get data of social note from database *****/ - sprintf (Query,"SELECT NotCod,NoteType,Cod,UsrCod,HieCod,Unavailable,UNIX_TIMESTAMP(TimeNote)" + DB_BuildQuery ("SELECT NotCod,NoteType,Cod,UsrCod,HieCod,Unavailable,UNIX_TIMESTAMP(TimeNote)" " FROM social_notes" " WHERE NotCod=%ld", - SocNot->NotCod); - if (DB_QuerySELECT (Query,&mysql_res,"can not get data of social note")) + SocNot->NotCod); + if (DB_QuerySELECT_new (&mysql_res,"can not get data of social note")) { /***** Get data of social note *****/ row = mysql_fetch_row (mysql_res); @@ -4475,14 +4461,13 @@ static void Soc_GetDataOfSocialNotByCod (struct SocialNote *SocNot) static void Soc_GetDataOfSocialComByCod (struct SocialComment *SocCom) { - char Query[1024]; MYSQL_RES *mysql_res; MYSQL_ROW row; if (SocCom->PubCod > 0) { /***** Get data of social comment from database *****/ - sprintf (Query,"SELECT social_pubs.PubCod,social_pubs.PublisherCod," + DB_BuildQuery ("SELECT social_pubs.PubCod,social_pubs.PublisherCod," "social_pubs.NotCod," "UNIX_TIMESTAMP(social_pubs.TimePublish)," "social_comments.Content," @@ -4493,8 +4478,8 @@ static void Soc_GetDataOfSocialComByCod (struct SocialComment *SocCom) " WHERE social_pubs.PubCod=%ld" " AND social_pubs.PubType=%u" " AND social_pubs.PubCod=social_comments.PubCod", - SocCom->PubCod,(unsigned) Soc_PUB_COMMENT_TO_NOTE); - if (DB_QuerySELECT (Query,&mysql_res,"can not get data of social comment")) + SocCom->PubCod,(unsigned) Soc_PUB_COMMENT_TO_NOTE); + if (DB_QuerySELECT_new (&mysql_res,"can not get data of social comment")) { /***** Get data of social comment *****/ row = mysql_fetch_row (mysql_res); @@ -4720,7 +4705,6 @@ void Soc_GetNotifSocialPublishing (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1], char **ContentStr, long PubCod,bool GetContent) { - char Query[256]; MYSQL_RES *mysql_res; MYSQL_ROW row; struct SocialPublishing SocPub; @@ -4735,10 +4719,10 @@ void Soc_GetNotifSocialPublishing (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1], Content[0] = '\0'; /***** Get summary and content from social post from database *****/ - sprintf (Query,"SELECT PubCod,NotCod,PublisherCod,PubType,UNIX_TIMESTAMP(TimePublish)" + DB_BuildQuery ("SELECT PubCod,NotCod,PublisherCod,PubType,UNIX_TIMESTAMP(TimePublish)" " FROM social_pubs WHERE PubCod=%ld", - PubCod); - if (DB_QuerySELECT (Query,&mysql_res,"can not get data of social publishing") == 1) // Result should have a unique row + PubCod); + if (DB_QuerySELECT_new (&mysql_res,"can not get data of social publishing") == 1) // Result should have a unique row { /* Get data of social publishing */ row = mysql_fetch_row (mysql_res); @@ -4763,10 +4747,10 @@ void Soc_GetNotifSocialPublishing (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1], { /***** Get content of social post from database *****/ // TODO: What happens if content is empty and an image is attached? - sprintf (Query,"SELECT Content FROM social_posts" + DB_BuildQuery ("SELECT Content FROM social_posts" " WHERE PstCod=%ld", - SocNot.Cod); - if (DB_QuerySELECT (Query,&mysql_res,"can not get the content of a social post") == 1) // Result should have a unique row + SocNot.Cod); + if (DB_QuerySELECT_new (&mysql_res,"can not get the content of a social post") == 1) // Result should have a unique row { /***** Get row *****/ row = mysql_fetch_row (mysql_res); @@ -4802,10 +4786,10 @@ void Soc_GetNotifSocialPublishing (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1], case Soc_PUB_COMMENT_TO_NOTE: /***** Get content of social post from database *****/ // TODO: What happens if content is empty and an image is attached? - sprintf (Query,"SELECT Content FROM social_comments" + DB_BuildQuery ("SELECT Content FROM social_comments" " WHERE PubCod=%ld", - SocPub.PubCod); - if (DB_QuerySELECT (Query,&mysql_res,"can not get the content of a comment to a social note") == 1) // Result should have a unique row + SocPub.PubCod); + if (DB_QuerySELECT_new (&mysql_res,"can not get the content of a comment to a social note") == 1) // Result should have a unique row { /***** Get row *****/ row = mysql_fetch_row (mysql_res); diff --git a/swad_statistic.c b/swad_statistic.c index 90f9b67a6..82c646794 100644 --- a/swad_statistic.c +++ b/swad_statistic.c @@ -206,7 +206,7 @@ static void Sta_GetAndShowInssOrderedByNumDegs (void); static void Sta_GetAndShowInssOrderedByNumCrss (void); static void Sta_GetAndShowInssOrderedByNumUsrsInCrss (void); static void Sta_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem (void); -static void Sta_GetAndShowInss (const char *Query,const char *TxtFigure); +static void Sta_GetAndShowInss (const char *TxtFigure); static unsigned Sta_GetInsAndStat (struct Instit *Ins,MYSQL_RES *mysql_res); static void Sta_GetAndShowDegreeTypesStats (void); @@ -869,7 +869,6 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) extern const char *Txt_List_of_detailed_clicks; extern const char *Txt_STAT_TYPE_COUNT_CAPS[Sta_NUM_COUNT_TYPES]; extern const char *Txt_Time_zone_used_in_the_calculation_of_these_statistics; - char Query[Sta_MAX_BYTES_QUERY_ACCESS + 1]; char QueryAux[512]; long LengthQuery; MYSQL_RES *mysql_res; @@ -1053,118 +1052,140 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) } /***** Select clicks from the table of log *****/ + /* Allocate memory for the query */ + if ((Gbl.DB.QueryPtr = (char *) malloc (Sta_MAX_BYTES_QUERY_ACCESS + 1)) == NULL) + Lay_NotEnoughMemoryExit (); + /* Start the query */ switch (Gbl.Stat.ClicksGroupedBy) { case Sta_CLICKS_CRS_DETAILED_LIST: - sprintf (Query,"SELECT SQL_NO_CACHE LogCod,UsrCod,Role," - "UNIX_TIMESTAMP(ClickTime) AS F,ActCod FROM %s", - LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE LogCod,UsrCod,Role," + "UNIX_TIMESTAMP(ClickTime) AS F,ActCod FROM %s", + LogTable); break; case Sta_CLICKS_CRS_PER_USR: - sprintf (Query,"SELECT SQL_NO_CACHE UsrCod,%s AS Num FROM %s", - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE UsrCod,%s AS Num FROM %s", + StrQueryCountType,LogTable); break; case Sta_CLICKS_CRS_PER_DAY: case Sta_CLICKS_GBL_PER_DAY: - sprintf (Query,"SELECT SQL_NO_CACHE " - "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y%%m%%d') AS Day," - "%s FROM %s", - BrowserTimeZone, - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE " + "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y%%m%%d') AS Day," + "%s FROM %s", + BrowserTimeZone, + StrQueryCountType,LogTable); break; case Sta_CLICKS_CRS_PER_DAY_AND_HOUR: case Sta_CLICKS_GBL_PER_DAY_AND_HOUR: - sprintf (Query,"SELECT SQL_NO_CACHE " - "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y%%m%%d') AS Day," - "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%H') AS Hour," - "%s FROM %s", - BrowserTimeZone, - BrowserTimeZone, - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE " + "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y%%m%%d') AS Day," + "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%H') AS Hour," + "%s FROM %s", + BrowserTimeZone, + BrowserTimeZone, + StrQueryCountType,LogTable); break; case Sta_CLICKS_CRS_PER_WEEK: case Sta_CLICKS_GBL_PER_WEEK: /* With %x%v the weeks are counted from monday to sunday. With %X%V the weeks are counted from sunday to saturday. */ - sprintf (Query,(Gbl.Prefs.FirstDayOfWeek == 0) ? - "SELECT SQL_NO_CACHE " // Weeks start on monday - "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%x%%v') AS Week," - "%s FROM %s" : - "SELECT SQL_NO_CACHE " // Weeks start on sunday - "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%X%%V') AS Week," - "%s FROM %s", - BrowserTimeZone, - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + (Gbl.Prefs.FirstDayOfWeek == 0) ? + "SELECT SQL_NO_CACHE " // Weeks start on monday + "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%x%%v') AS Week," + "%s FROM %s" : + "SELECT SQL_NO_CACHE " // Weeks start on sunday + "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%X%%V') AS Week," + "%s FROM %s", + BrowserTimeZone, + StrQueryCountType,LogTable); break; case Sta_CLICKS_CRS_PER_MONTH: case Sta_CLICKS_GBL_PER_MONTH: - sprintf (Query,"SELECT SQL_NO_CACHE " - "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y%%m') AS Month," - "%s FROM %s", - BrowserTimeZone, - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE " + "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y%%m') AS Month," + "%s FROM %s", + BrowserTimeZone, + StrQueryCountType,LogTable); break; case Sta_CLICKS_CRS_PER_YEAR: case Sta_CLICKS_GBL_PER_YEAR: - sprintf (Query,"SELECT SQL_NO_CACHE " - "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y') AS Year," - "%s FROM %s", - BrowserTimeZone, - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE " + "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y') AS Year," + "%s FROM %s", + BrowserTimeZone, + StrQueryCountType,LogTable); break; case Sta_CLICKS_CRS_PER_HOUR: case Sta_CLICKS_GBL_PER_HOUR: - sprintf (Query,"SELECT SQL_NO_CACHE " - "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%H') AS Hour," - "%s FROM %s", - BrowserTimeZone, - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE " + "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%H') AS Hour," + "%s FROM %s", + BrowserTimeZone, + StrQueryCountType,LogTable); break; case Sta_CLICKS_CRS_PER_MINUTE: case Sta_CLICKS_GBL_PER_MINUTE: - sprintf (Query,"SELECT SQL_NO_CACHE " - "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%H%%i') AS Minute," - "%s FROM %s", - BrowserTimeZone, - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE " + "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%H%%i') AS Minute," + "%s FROM %s", + BrowserTimeZone, + StrQueryCountType,LogTable); break; case Sta_CLICKS_CRS_PER_ACTION: case Sta_CLICKS_GBL_PER_ACTION: - sprintf (Query,"SELECT SQL_NO_CACHE ActCod,%s AS Num FROM %s", - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE ActCod,%s AS Num FROM %s", + StrQueryCountType,LogTable); break; case Sta_CLICKS_GBL_PER_PLUGIN: - sprintf (Query,"SELECT SQL_NO_CACHE log_ws.PlgCod,%s AS Num FROM %s,log_ws", - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE log_ws.PlgCod,%s AS Num FROM %s,log_ws", + StrQueryCountType,LogTable); break; case Sta_CLICKS_GBL_PER_API_FUNCTION: - sprintf (Query,"SELECT SQL_NO_CACHE log_ws.FunCod,%s AS Num FROM %s,log_ws", - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE log_ws.FunCod,%s AS Num FROM %s,log_ws", + StrQueryCountType,LogTable); break; case Sta_CLICKS_GBL_PER_BANNER: - sprintf (Query,"SELECT SQL_NO_CACHE log_banners.BanCod,%s AS Num FROM %s,log_banners", - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE log_banners.BanCod,%s AS Num FROM %s,log_banners", + StrQueryCountType,LogTable); break; case Sta_CLICKS_GBL_PER_COUNTRY: - sprintf (Query,"SELECT SQL_NO_CACHE CtyCod,%s AS Num FROM %s", - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE CtyCod,%s AS Num FROM %s", + StrQueryCountType,LogTable); break; case Sta_CLICKS_GBL_PER_INSTITUTION: - sprintf (Query,"SELECT SQL_NO_CACHE InsCod,%s AS Num FROM %s", - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE InsCod,%s AS Num FROM %s", + StrQueryCountType,LogTable); break; case Sta_CLICKS_GBL_PER_CENTRE: - sprintf (Query,"SELECT SQL_NO_CACHE CtrCod,%s AS Num FROM %s", - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE CtrCod,%s AS Num FROM %s", + StrQueryCountType,LogTable); break; case Sta_CLICKS_GBL_PER_DEGREE: - sprintf (Query,"SELECT SQL_NO_CACHE DegCod,%s AS Num FROM %s", - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE DegCod,%s AS Num FROM %s", + StrQueryCountType,LogTable); break; case Sta_CLICKS_GBL_PER_COURSE: - sprintf (Query,"SELECT SQL_NO_CACHE CrsCod,%s AS Num FROM %s", - StrQueryCountType,LogTable); + snprintf (Gbl.DB.QueryPtr,Sta_MAX_BYTES_QUERY_ACCESS + 1, + "SELECT SQL_NO_CACHE CrsCod,%s AS Num FROM %s", + StrQueryCountType,LogTable); break; } sprintf (QueryAux," WHERE %s.ClickTime" @@ -1172,7 +1193,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) LogTable, (long) Gbl.DateRange.TimeUTC[0], (long) Gbl.DateRange.TimeUTC[1]); - Str_Concat (Query,QueryAux, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); switch (GlobalOrCourse) @@ -1189,7 +1210,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) { sprintf (QueryAux," AND %s.CtyCod=%ld", LogTable,Gbl.CurrentCty.Cty.CtyCod); - Str_Concat (Query,QueryAux, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); } break; @@ -1198,7 +1219,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) { sprintf (QueryAux," AND %s.InsCod=%ld", LogTable,Gbl.CurrentIns.Ins.InsCod); - Str_Concat (Query,QueryAux, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); } break; @@ -1207,7 +1228,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) { sprintf (QueryAux," AND %s.CtrCod=%ld", LogTable,Gbl.CurrentCtr.Ctr.CtrCod); - Str_Concat (Query,QueryAux, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); } break; @@ -1216,7 +1237,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) { sprintf (QueryAux," AND %s.DegCod=%ld", LogTable,Gbl.CurrentDeg.Deg.DegCod); - Str_Concat (Query,QueryAux, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); } break; @@ -1225,7 +1246,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) { sprintf (QueryAux," AND %s.CrsCod=%ld", LogTable,Gbl.CurrentCrs.Crs.CrsCod); - Str_Concat (Query,QueryAux, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); } break; @@ -1294,7 +1315,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) LogTable,Gbl.Usrs.Me.UsrDat.UsrCod); break; } - Str_Concat (Query,StrRole, + Str_Concat (Gbl.DB.QueryPtr,StrRole, Sta_MAX_BYTES_QUERY_ACCESS); switch (Gbl.Stat.ClicksGroupedBy) @@ -1303,13 +1324,13 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) case Sta_CLICKS_GBL_PER_API_FUNCTION: sprintf (QueryAux," AND %s.LogCod=log_ws.LogCod", LogTable); - Str_Concat (Query,QueryAux, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_GBL_PER_BANNER: sprintf (QueryAux," AND %s.LogCod=log_banners.LogCod", LogTable); - Str_Concat (Query,QueryAux, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); break; default: @@ -1319,13 +1340,13 @@ 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, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); /***** Initialize data structure of the user *****/ Usr_UsrDataConstructor (&UsrDat); - LengthQuery = strlen (Query); + LengthQuery = strlen (Gbl.DB.QueryPtr); NumUsr = 0; Ptr = Gbl.Usrs.Select[Rol_UNK]; while (*Ptr) @@ -1342,12 +1363,12 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) NumUsr ? " OR %s.UsrCod=%ld" : " AND (%s.UsrCod=%ld", LogTable,UsrDat.UsrCod); - Str_Concat (Query,QueryAux, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); NumUsr++; } } - Str_Concat (Query,")", + Str_Concat (Gbl.DB.QueryPtr,")", Sta_MAX_BYTES_QUERY_ACCESS); /***** Free memory used by the data of the user *****/ @@ -1360,7 +1381,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) { sprintf (QueryAux," AND %s.ActCod=%ld", LogTable,Act_GetActCod (Gbl.Stat.NumAction)); - Str_Concat (Query,QueryAux, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); } @@ -1368,90 +1389,90 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) switch (Gbl.Stat.ClicksGroupedBy) { case Sta_CLICKS_CRS_DETAILED_LIST: - Str_Concat (Query," ORDER BY F", + Str_Concat (Gbl.DB.QueryPtr," ORDER BY F", Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_CRS_PER_USR: sprintf (QueryAux," GROUP BY %s.UsrCod ORDER BY Num DESC",LogTable); - Str_Concat (Query,QueryAux, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_CRS_PER_DAY: case Sta_CLICKS_GBL_PER_DAY: - Str_Concat (Query," GROUP BY Day DESC", + Str_Concat (Gbl.DB.QueryPtr," GROUP BY Day DESC", Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_CRS_PER_DAY_AND_HOUR: case Sta_CLICKS_GBL_PER_DAY_AND_HOUR: - Str_Concat (Query," GROUP BY Day DESC,Hour", + Str_Concat (Gbl.DB.QueryPtr," GROUP BY Day DESC,Hour", Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_CRS_PER_WEEK: case Sta_CLICKS_GBL_PER_WEEK: - Str_Concat (Query," GROUP BY Week DESC", + Str_Concat (Gbl.DB.QueryPtr," GROUP BY Week DESC", Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_CRS_PER_MONTH: case Sta_CLICKS_GBL_PER_MONTH: - Str_Concat (Query," GROUP BY Month DESC", + Str_Concat (Gbl.DB.QueryPtr," GROUP BY Month DESC", Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_CRS_PER_YEAR: case Sta_CLICKS_GBL_PER_YEAR: - Str_Concat (Query," GROUP BY Year DESC", + Str_Concat (Gbl.DB.QueryPtr," GROUP BY Year DESC", Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_CRS_PER_HOUR: case Sta_CLICKS_GBL_PER_HOUR: - Str_Concat (Query," GROUP BY Hour", + Str_Concat (Gbl.DB.QueryPtr," GROUP BY Hour", Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_CRS_PER_MINUTE: case Sta_CLICKS_GBL_PER_MINUTE: - Str_Concat (Query," GROUP BY Minute", + Str_Concat (Gbl.DB.QueryPtr," GROUP BY Minute", Sta_MAX_BYTES_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, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_GBL_PER_PLUGIN: - Str_Concat (Query," GROUP BY log_ws.PlgCod ORDER BY Num DESC", + Str_Concat (Gbl.DB.QueryPtr," GROUP BY log_ws.PlgCod ORDER BY Num DESC", Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_GBL_PER_API_FUNCTION: - Str_Concat (Query," GROUP BY log_ws.FunCod ORDER BY Num DESC", + Str_Concat (Gbl.DB.QueryPtr," GROUP BY log_ws.FunCod ORDER BY Num DESC", Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_GBL_PER_BANNER: - Str_Concat (Query," GROUP BY log_banners.BanCod ORDER BY Num DESC", + Str_Concat (Gbl.DB.QueryPtr," GROUP BY log_banners.BanCod ORDER BY Num DESC", Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_GBL_PER_COUNTRY: sprintf (QueryAux," GROUP BY %s.CtyCod ORDER BY Num DESC",LogTable); - Str_Concat (Query,QueryAux, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_GBL_PER_INSTITUTION: sprintf (QueryAux," GROUP BY %s.InsCod ORDER BY Num DESC",LogTable); - Str_Concat (Query,QueryAux, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_GBL_PER_CENTRE: sprintf (QueryAux," GROUP BY %s.CtrCod ORDER BY Num DESC",LogTable); - Str_Concat (Query,QueryAux, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_GBL_PER_DEGREE: sprintf (QueryAux," GROUP BY %s.DegCod ORDER BY Num DESC",LogTable); - Str_Concat (Query,QueryAux, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); break; case Sta_CLICKS_GBL_PER_COURSE: sprintf (QueryAux," GROUP BY %s.CrsCod ORDER BY Num DESC",LogTable); - Str_Concat (Query,QueryAux, + Str_Concat (Gbl.DB.QueryPtr,QueryAux, Sta_MAX_BYTES_QUERY_ACCESS); break; } @@ -1461,7 +1482,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse) Ale_ShowAlert (Ale_INFO,Query); */ /***** Make the query *****/ - NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get clicks"); + NumRows = DB_QuerySELECT_new (&mysql_res,"can not get clicks"); /***** Count the number of rows in result *****/ if (NumRows == 0) @@ -1852,14 +1873,12 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql static void Sta_WriteLogComments (long LogCod) { - char Query[512]; MYSQL_RES *mysql_res; MYSQL_ROW row; /***** Get log comments from database *****/ - sprintf (Query,"SELECT Comments FROM log_comments WHERE LogCod=%ld", - LogCod); - if (DB_QuerySELECT (Query,&mysql_res,"can not get log comments")) + DB_BuildQuery ("SELECT Comments FROM log_comments WHERE LogCod=%ld",LogCod); + if (DB_QuerySELECT_new (&mysql_res,"can not get log comments")) { /***** Get and write comments *****/ row = mysql_fetch_row (mysql_res); @@ -5134,7 +5153,6 @@ static void Sta_GetAndShowInssOrderedByNumCtrs (void) { extern const char *Txt_Institutions_by_number_of_centres; extern const char *Txt_Centres; - char Query[1024]; /***** Start box and table *****/ Box_StartBoxTable ("100%",Txt_Institutions_by_number_of_centres,NULL, @@ -5144,36 +5162,36 @@ static void Sta_GetAndShowInssOrderedByNumCtrs (void) switch (Gbl.Scope.Current) { case Sco_SCOPE_SYS: - sprintf (Query,"SELECT InsCod,COUNT(*) AS N" + DB_BuildQuery ("SELECT InsCod,COUNT(*) AS N" " FROM centres" " GROUP BY InsCod" " ORDER BY N DESC"); break; case Sco_SCOPE_CTY: - sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" - " FROM institutions,centres" - " WHERE institutions.CtyCod=%ld" - " AND institutions.InsCod=centres.InsCod" - " GROUP BY centres.InsCod" - " ORDER BY N DESC", - Gbl.CurrentCty.Cty.CtyCod); + DB_BuildQuery ("SELECT centres.InsCod,COUNT(*) AS N" + " FROM institutions,centres" + " WHERE institutions.CtyCod=%ld" + " AND institutions.InsCod=centres.InsCod" + " GROUP BY centres.InsCod" + " ORDER BY N DESC", + Gbl.CurrentCty.Cty.CtyCod); break; case Sco_SCOPE_INS: case Sco_SCOPE_CTR: case Sco_SCOPE_DEG: case Sco_SCOPE_CRS: - sprintf (Query,"SELECT InsCod,COUNT(*) AS N" - " FROM centres" - " WHERE InsCod=%ld" - " GROUP BY InsCod" - " ORDER BY N DESC", - Gbl.CurrentIns.Ins.InsCod); + DB_BuildQuery ("SELECT InsCod,COUNT(*) AS N" + " FROM centres" + " WHERE InsCod=%ld" + " GROUP BY InsCod" + " ORDER BY N DESC", + Gbl.CurrentIns.Ins.InsCod); break; default: Lay_WrongScopeExit (); break; } - Sta_GetAndShowInss (Query,Txt_Centres); + Sta_GetAndShowInss (Txt_Centres); /***** End table and box *****/ Box_EndBoxTable (); @@ -5187,7 +5205,6 @@ static void Sta_GetAndShowInssOrderedByNumDegs (void) { extern const char *Txt_Institutions_by_number_of_degrees; extern const char *Txt_Degrees; - char Query[1024]; /***** Start box and table *****/ Box_StartBoxTable ("100%",Txt_Institutions_by_number_of_degrees,NULL, @@ -5197,39 +5214,39 @@ static void Sta_GetAndShowInssOrderedByNumDegs (void) switch (Gbl.Scope.Current) { case Sco_SCOPE_SYS: - sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" + DB_BuildQuery ("SELECT centres.InsCod,COUNT(*) AS N" " FROM centres,degrees" " WHERE centres.CtrCod=degrees.CtrCod" " GROUP BY InsCod" " ORDER BY N DESC"); break; case Sco_SCOPE_CTY: - sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" - " FROM institutions,centres,degrees" - " WHERE institutions.CtyCod=%ld" - " AND institutions.InsCod=centres.InsCod" - " AND centres.CtrCod=degrees.CtrCod" - " GROUP BY centres.InsCod" - " ORDER BY N DESC", - Gbl.CurrentCty.Cty.CtyCod); + DB_BuildQuery ("SELECT centres.InsCod,COUNT(*) AS N" + " FROM institutions,centres,degrees" + " WHERE institutions.CtyCod=%ld" + " AND institutions.InsCod=centres.InsCod" + " AND centres.CtrCod=degrees.CtrCod" + " GROUP BY centres.InsCod" + " ORDER BY N DESC", + Gbl.CurrentCty.Cty.CtyCod); break; case Sco_SCOPE_INS: case Sco_SCOPE_CTR: case Sco_SCOPE_DEG: case Sco_SCOPE_CRS: - sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" - " FROM centres,degrees" - " WHERE centres.InsCod=%ld" - " AND centres.CtrCod=degrees.CtrCod" - " GROUP BY centres.InsCod" - " ORDER BY N DESC", - Gbl.CurrentIns.Ins.InsCod); + DB_BuildQuery ("SELECT centres.InsCod,COUNT(*) AS N" + " FROM centres,degrees" + " WHERE centres.InsCod=%ld" + " AND centres.CtrCod=degrees.CtrCod" + " GROUP BY centres.InsCod" + " ORDER BY N DESC", + Gbl.CurrentIns.Ins.InsCod); break; default: Lay_WrongScopeExit (); break; } - Sta_GetAndShowInss (Query,Txt_Degrees); + Sta_GetAndShowInss (Txt_Degrees); /***** End table and box *****/ Box_EndBoxTable (); @@ -5243,7 +5260,6 @@ static void Sta_GetAndShowInssOrderedByNumCrss (void) { extern const char *Txt_Institutions_by_number_of_courses; extern const char *Txt_Courses; - char Query[1024]; /***** Start box and table *****/ Box_StartBoxTable ("100%",Txt_Institutions_by_number_of_courses,NULL, @@ -5253,7 +5269,7 @@ static void Sta_GetAndShowInssOrderedByNumCrss (void) switch (Gbl.Scope.Current) { case Sco_SCOPE_SYS: - sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" + DB_BuildQuery ("SELECT centres.InsCod,COUNT(*) AS N" " FROM centres,degrees,courses" " WHERE centres.CtrCod=degrees.CtrCod" " AND degrees.DegCod=courses.DegCod" @@ -5261,34 +5277,34 @@ static void Sta_GetAndShowInssOrderedByNumCrss (void) " ORDER BY N DESC"); break; case Sco_SCOPE_CTY: - sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" - " FROM institutions,centres,degrees,courses" - " WHERE institutions.CtyCod=%ld" - " AND institutions.InsCod=centres.InsCod" - " AND centres.CtrCod=degrees.CtrCod" - " AND degrees.DegCod=courses.DegCod" - " GROUP BY centres.InsCod" - " ORDER BY N DESC", - Gbl.CurrentCty.Cty.CtyCod); + DB_BuildQuery ("SELECT centres.InsCod,COUNT(*) AS N" + " FROM institutions,centres,degrees,courses" + " WHERE institutions.CtyCod=%ld" + " AND institutions.InsCod=centres.InsCod" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " GROUP BY centres.InsCod" + " ORDER BY N DESC", + Gbl.CurrentCty.Cty.CtyCod); break; case Sco_SCOPE_INS: case Sco_SCOPE_CTR: case Sco_SCOPE_DEG: case Sco_SCOPE_CRS: - sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" - " FROM centres,degrees,courses" - " WHERE centres.InsCod=%ld" - " AND centres.CtrCod=degrees.CtrCod" - " AND degrees.DegCod=courses.DegCod" - " GROUP BY centres.InsCod" - " ORDER BY N DESC", - Gbl.CurrentIns.Ins.InsCod); + DB_BuildQuery ("SELECT centres.InsCod,COUNT(*) AS N" + " FROM centres,degrees,courses" + " WHERE centres.InsCod=%ld" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " GROUP BY centres.InsCod" + " ORDER BY N DESC", + Gbl.CurrentIns.Ins.InsCod); break; default: Lay_WrongScopeExit (); break; } - Sta_GetAndShowInss (Query,Txt_Courses); + Sta_GetAndShowInss (Txt_Courses); /***** End table and box *****/ Box_EndBoxTable (); @@ -5302,7 +5318,6 @@ static void Sta_GetAndShowInssOrderedByNumUsrsInCrss (void) { extern const char *Txt_Institutions_by_number_of_users_in_courses; extern const char *Txt_Users; - char Query[1024]; /***** Start box and table *****/ Box_StartBoxTable ("100%",Txt_Institutions_by_number_of_users_in_courses,NULL, @@ -5312,7 +5327,7 @@ static void Sta_GetAndShowInssOrderedByNumUsrsInCrss (void) switch (Gbl.Scope.Current) { case Sco_SCOPE_SYS: - sprintf (Query,"SELECT centres.InsCod,COUNT(DISTINCT crs_usr.UsrCod) AS N" + DB_BuildQuery ("SELECT centres.InsCod,COUNT(DISTINCT crs_usr.UsrCod) AS N" " FROM centres,degrees,courses,crs_usr" " WHERE centres.CtrCod=degrees.CtrCod" " AND degrees.DegCod=courses.DegCod" @@ -5321,36 +5336,36 @@ static void Sta_GetAndShowInssOrderedByNumUsrsInCrss (void) " ORDER BY N DESC"); break; case Sco_SCOPE_CTY: - sprintf (Query,"SELECT centres.InsCod,COUNT(DISTINCT crs_usr.UsrCod) AS N" - " FROM institutions,centres,degrees,courses,crs_usr" - " WHERE institutions.CtyCod=%ld" - " AND institutions.InsCod=centres.InsCod" - " AND centres.CtrCod=degrees.CtrCod" - " AND degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" - " GROUP BY centres.InsCod" - " ORDER BY N DESC", - Gbl.CurrentCty.Cty.CtyCod); + DB_BuildQuery ("SELECT centres.InsCod,COUNT(DISTINCT crs_usr.UsrCod) AS N" + " FROM institutions,centres,degrees,courses,crs_usr" + " WHERE institutions.CtyCod=%ld" + " AND institutions.InsCod=centres.InsCod" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=crs_usr.CrsCod" + " GROUP BY centres.InsCod" + " ORDER BY N DESC", + Gbl.CurrentCty.Cty.CtyCod); break; case Sco_SCOPE_INS: case Sco_SCOPE_CTR: case Sco_SCOPE_DEG: case Sco_SCOPE_CRS: - sprintf (Query,"SELECT centres.InsCod,COUNT(DISTINCT crs_usr.UsrCod) AS N" - " FROM centres,degrees,courses,crs_usr" - " WHERE centres.InsCod=%ld" - " AND centres.CtrCod=degrees.CtrCod" - " AND degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" - " GROUP BY centres.InsCod" - " ORDER BY N DESC", - Gbl.CurrentIns.Ins.InsCod); + DB_BuildQuery ("SELECT centres.InsCod,COUNT(DISTINCT crs_usr.UsrCod) AS N" + " FROM centres,degrees,courses,crs_usr" + " WHERE centres.InsCod=%ld" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=crs_usr.CrsCod" + " GROUP BY centres.InsCod" + " ORDER BY N DESC", + Gbl.CurrentIns.Ins.InsCod); break; default: Lay_WrongScopeExit (); break; } - Sta_GetAndShowInss (Query,Txt_Users); + Sta_GetAndShowInss (Txt_Users); /***** End table and box *****/ Box_EndBoxTable (); @@ -5365,7 +5380,6 @@ static void Sta_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem (void) { extern const char *Txt_Institutions_by_number_of_users_who_claim_to_belong_to_them; extern const char *Txt_Users; - char Query[1024]; /***** Start box and table *****/ Box_StartBoxTable ("100%",Txt_Institutions_by_number_of_users_who_claim_to_belong_to_them, @@ -5376,37 +5390,37 @@ static void Sta_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem (void) switch (Gbl.Scope.Current) { case Sco_SCOPE_SYS: - sprintf (Query,"SELECT InsCod,COUNT(*) AS N" + DB_BuildQuery ("SELECT InsCod,COUNT(*) AS N" " FROM usr_data" " WHERE InsCod>0" " GROUP BY InsCod" " ORDER BY N DESC"); break; case Sco_SCOPE_CTY: - sprintf (Query,"SELECT usr_data.InsCod,COUNT(*) AS N" - " FROM institutions,usr_data" - " WHERE institutions.CtyCod=%ld" - " AND institutions.InsCod=usr_data.InsCod" - " GROUP BY usr_data.InsCod" - " ORDER BY N DESC", - Gbl.CurrentCty.Cty.CtyCod); + DB_BuildQuery ("SELECT usr_data.InsCod,COUNT(*) AS N" + " FROM institutions,usr_data" + " WHERE institutions.CtyCod=%ld" + " AND institutions.InsCod=usr_data.InsCod" + " GROUP BY usr_data.InsCod" + " ORDER BY N DESC", + Gbl.CurrentCty.Cty.CtyCod); break; case Sco_SCOPE_INS: case Sco_SCOPE_CTR: case Sco_SCOPE_DEG: case Sco_SCOPE_CRS: - sprintf (Query,"SELECT InsCod,COUNT(*) AS N" - " FROM usr_data" - " WHERE InsCod=%ld" - " GROUP BY InsCod" - " ORDER BY N DESC", - Gbl.CurrentIns.Ins.InsCod); + DB_BuildQuery ("SELECT InsCod,COUNT(*) AS N" + " FROM usr_data" + " WHERE InsCod=%ld" + " GROUP BY InsCod" + " ORDER BY N DESC", + Gbl.CurrentIns.Ins.InsCod); break; default: Lay_WrongScopeExit (); break; } - Sta_GetAndShowInss (Query,Txt_Users); + Sta_GetAndShowInss (Txt_Users); /***** End table and box *****/ Box_EndBoxTable (); @@ -5416,7 +5430,7 @@ static void Sta_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem (void) /****************** Get and show stats about institutions ********************/ /*****************************************************************************/ -static void Sta_GetAndShowInss (const char *Query,const char *TxtFigure) +static void Sta_GetAndShowInss (const char *TxtFigure) { extern const char *The_ClassForm[The_NUM_THEMES]; extern const char *Txt_Institution; @@ -5430,7 +5444,7 @@ static void Sta_GetAndShowInss (const char *Query,const char *TxtFigure) bool TRIsOpen = false; /***** Query database *****/ - if ((NumInss = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get institutions"))) + if ((NumInss = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get institutions"))) { /* Draw the classphoto/list */ switch (Gbl.Usrs.Me.ListType) @@ -5863,7 +5877,6 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, Brw_FileBrowser_t FileBrowser, struct Sta_SizeOfFileZones *SizeOfFileZones) { - char Query[2048]; MYSQL_RES *mysql_res; MYSQL_ROW row; @@ -5875,7 +5888,7 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, switch (FileBrowser) { case Brw_UNKNOWN: - sprintf (Query,"SELECT COUNT(DISTINCT CrsCod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT CrsCod)," "COUNT(DISTINCT GrpCod)-1," "-1," "MAX(NumLevels)," @@ -5904,22 +5917,22 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser IN (%u,%u,%u,%u)" ") AS sizes", - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_TCH_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) Brw_ADMI_ASG_USR, - (unsigned) Brw_ADMI_WRK_USR, - (unsigned) Brw_ADMI_MRK_CRS, - (unsigned) Brw_ADMI_DOC_GRP, - (unsigned) Brw_ADMI_TCH_GRP, - (unsigned) Brw_ADMI_SHR_GRP, - (unsigned) Brw_ADMI_MRK_GRP); + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_TCH_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) Brw_ADMI_ASG_USR, + (unsigned) Brw_ADMI_WRK_USR, + (unsigned) Brw_ADMI_MRK_CRS, + (unsigned) Brw_ADMI_DOC_GRP, + (unsigned) Brw_ADMI_TCH_GRP, + (unsigned) Brw_ADMI_SHR_GRP, + (unsigned) Brw_ADMI_MRK_GRP); break; case Brw_ADMI_DOC_CRS: case Brw_ADMI_TCH_CRS: case Brw_ADMI_SHR_CRS: case Brw_ADMI_MRK_CRS: - sprintf (Query,"SELECT COUNT(DISTINCT Cod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT Cod)," "-1," "-1," "MAX(NumLevels)," @@ -5928,13 +5941,13 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, "SUM(TotalSize)" " FROM file_browser_size" " WHERE FileBrowser=%u", - (unsigned) FileBrowser); + (unsigned) FileBrowser); break; case Brw_ADMI_DOC_GRP: case Brw_ADMI_TCH_GRP: case Brw_ADMI_SHR_GRP: case Brw_ADMI_MRK_GRP: - sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," "COUNT(DISTINCT file_browser_size.Cod)," "-1," "MAX(file_browser_size.NumLevels)," @@ -5945,11 +5958,11 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " WHERE crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", - (unsigned) FileBrowser); + (unsigned) FileBrowser); break; case Brw_ADMI_ASG_USR: case Brw_ADMI_WRK_USR: - sprintf (Query,"SELECT COUNT(DISTINCT Cod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT Cod)," "-1," "COUNT(DISTINCT ZoneUsrCod)," "MAX(NumLevels)," @@ -5958,10 +5971,10 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, "SUM(TotalSize)" " FROM file_browser_size" " WHERE FileBrowser=%u", - (unsigned) FileBrowser); + (unsigned) FileBrowser); break; case Brw_ADMI_BRF_USR: - sprintf (Query,"SELECT -1," + DB_BuildQuery ("SELECT -1," "-1," "COUNT(DISTINCT ZoneUsrCod)," "MAX(NumLevels)," @@ -5970,7 +5983,7 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, "SUM(TotalSize)" " FROM file_browser_size" " WHERE FileBrowser=%u", - (unsigned) FileBrowser); + (unsigned) FileBrowser); break; default: Lay_ShowErrorAndExit ("Wrong file browser."); @@ -5982,7 +5995,7 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, switch (FileBrowser) { case Brw_UNKNOWN: - sprintf (Query,"SELECT COUNT(DISTINCT CrsCod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT CrsCod)," "COUNT(DISTINCT GrpCod)-1," "-1," "MAX(NumLevels)," @@ -6021,24 +6034,24 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser IN (%u,%u,%u,%u)" ") AS sizes", - Gbl.CurrentCty.Cty.CtyCod, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_TCH_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) Brw_ADMI_ASG_USR, - (unsigned) Brw_ADMI_WRK_USR, - (unsigned) Brw_ADMI_MRK_CRS, - Gbl.CurrentCty.Cty.CtyCod, - (unsigned) Brw_ADMI_DOC_GRP, - (unsigned) Brw_ADMI_TCH_GRP, - (unsigned) Brw_ADMI_SHR_GRP, - (unsigned) Brw_ADMI_MRK_GRP); + Gbl.CurrentCty.Cty.CtyCod, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_TCH_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) Brw_ADMI_ASG_USR, + (unsigned) Brw_ADMI_WRK_USR, + (unsigned) Brw_ADMI_MRK_CRS, + Gbl.CurrentCty.Cty.CtyCod, + (unsigned) Brw_ADMI_DOC_GRP, + (unsigned) Brw_ADMI_TCH_GRP, + (unsigned) Brw_ADMI_SHR_GRP, + (unsigned) Brw_ADMI_MRK_GRP); break; case Brw_ADMI_DOC_CRS: case Brw_ADMI_TCH_CRS: case Brw_ADMI_SHR_CRS: case Brw_ADMI_MRK_CRS: - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT file_browser_size.Cod)," "-1," "-1," "MAX(file_browser_size.NumLevels)," @@ -6052,13 +6065,13 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=file_browser_size.Cod" " and file_browser_size.FileBrowser=%u", - Gbl.CurrentCty.Cty.CtyCod,(unsigned) FileBrowser); + Gbl.CurrentCty.Cty.CtyCod,(unsigned) FileBrowser); break; case Brw_ADMI_DOC_GRP: case Brw_ADMI_TCH_GRP: case Brw_ADMI_SHR_GRP: case Brw_ADMI_MRK_GRP: - sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," "COUNT(DISTINCT file_browser_size.Cod)," "-1," "MAX(file_browser_size.NumLevels)," @@ -6074,11 +6087,11 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", - Gbl.CurrentCty.Cty.CtyCod,(unsigned) FileBrowser); + Gbl.CurrentCty.Cty.CtyCod,(unsigned) FileBrowser); break; case Brw_ADMI_ASG_USR: case Brw_ADMI_WRK_USR: - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT file_browser_size.Cod)," "-1," "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," "MAX(file_browser_size.NumLevels)," @@ -6092,10 +6105,10 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", - Gbl.CurrentCty.Cty.CtyCod,(unsigned) FileBrowser); + Gbl.CurrentCty.Cty.CtyCod,(unsigned) FileBrowser); break; case Brw_ADMI_BRF_USR: - sprintf (Query,"SELECT -1," + DB_BuildQuery ("SELECT -1," "-1," "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," "MAX(file_browser_size.NumLevels)," @@ -6110,7 +6123,7 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=file_browser_size.ZoneUsrCod" " AND file_browser_size.FileBrowser=%u", - Gbl.CurrentCty.Cty.CtyCod,(unsigned) FileBrowser); + Gbl.CurrentCty.Cty.CtyCod,(unsigned) FileBrowser); break; default: Lay_ShowErrorAndExit ("Wrong file browser."); @@ -6122,7 +6135,7 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, switch (FileBrowser) { case Brw_UNKNOWN: - sprintf (Query,"SELECT COUNT(DISTINCT CrsCod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT CrsCod)," "COUNT(DISTINCT GrpCod)-1," "-1," "MAX(NumLevels)," @@ -6159,24 +6172,24 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser IN (%u,%u,%u,%u)" ") AS sizes", - Gbl.CurrentIns.Ins.InsCod, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_TCH_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) Brw_ADMI_ASG_USR, - (unsigned) Brw_ADMI_WRK_USR, - (unsigned) Brw_ADMI_MRK_CRS, - Gbl.CurrentIns.Ins.InsCod, - (unsigned) Brw_ADMI_DOC_GRP, - (unsigned) Brw_ADMI_TCH_GRP, - (unsigned) Brw_ADMI_SHR_GRP, - (unsigned) Brw_ADMI_MRK_GRP); + Gbl.CurrentIns.Ins.InsCod, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_TCH_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) Brw_ADMI_ASG_USR, + (unsigned) Brw_ADMI_WRK_USR, + (unsigned) Brw_ADMI_MRK_CRS, + Gbl.CurrentIns.Ins.InsCod, + (unsigned) Brw_ADMI_DOC_GRP, + (unsigned) Brw_ADMI_TCH_GRP, + (unsigned) Brw_ADMI_SHR_GRP, + (unsigned) Brw_ADMI_MRK_GRP); break; case Brw_ADMI_DOC_CRS: case Brw_ADMI_TCH_CRS: case Brw_ADMI_SHR_CRS: case Brw_ADMI_MRK_CRS: - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT file_browser_size.Cod)," "-1," "-1," "MAX(file_browser_size.NumLevels)," @@ -6189,13 +6202,13 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=file_browser_size.Cod" " and file_browser_size.FileBrowser=%u", - Gbl.CurrentIns.Ins.InsCod,(unsigned) FileBrowser); + Gbl.CurrentIns.Ins.InsCod,(unsigned) FileBrowser); break; case Brw_ADMI_DOC_GRP: case Brw_ADMI_TCH_GRP: case Brw_ADMI_SHR_GRP: case Brw_ADMI_MRK_GRP: - sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," "COUNT(DISTINCT file_browser_size.Cod)," "-1," "MAX(file_browser_size.NumLevels)," @@ -6210,11 +6223,11 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", - Gbl.CurrentIns.Ins.InsCod,(unsigned) FileBrowser); + Gbl.CurrentIns.Ins.InsCod,(unsigned) FileBrowser); break; case Brw_ADMI_ASG_USR: case Brw_ADMI_WRK_USR: - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT file_browser_size.Cod)," "-1," "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," "MAX(file_browser_size.NumLevels)," @@ -6227,10 +6240,10 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", - Gbl.CurrentIns.Ins.InsCod,(unsigned) FileBrowser); + Gbl.CurrentIns.Ins.InsCod,(unsigned) FileBrowser); break; case Brw_ADMI_BRF_USR: - sprintf (Query,"SELECT -1," + DB_BuildQuery ("SELECT -1," "-1," "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," "MAX(file_browser_size.NumLevels)," @@ -6244,7 +6257,7 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=file_browser_size.ZoneUsrCod" " AND file_browser_size.FileBrowser=%u", - Gbl.CurrentIns.Ins.InsCod,(unsigned) FileBrowser); + Gbl.CurrentIns.Ins.InsCod,(unsigned) FileBrowser); break; default: Lay_ShowErrorAndExit ("Wrong file browser."); @@ -6256,7 +6269,7 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, switch (FileBrowser) { case Brw_UNKNOWN: - sprintf (Query,"SELECT COUNT(DISTINCT CrsCod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT CrsCod)," "COUNT(DISTINCT GrpCod)-1," "-1," "MAX(NumLevels)," @@ -6291,24 +6304,24 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser IN (%u,%u,%u,%u)" ") AS sizes", - Gbl.CurrentCtr.Ctr.CtrCod, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_TCH_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) Brw_ADMI_ASG_USR, - (unsigned) Brw_ADMI_WRK_USR, - (unsigned) Brw_ADMI_MRK_CRS, - Gbl.CurrentCtr.Ctr.CtrCod, - (unsigned) Brw_ADMI_DOC_GRP, - (unsigned) Brw_ADMI_TCH_GRP, - (unsigned) Brw_ADMI_SHR_GRP, - (unsigned) Brw_ADMI_MRK_GRP); + Gbl.CurrentCtr.Ctr.CtrCod, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_TCH_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) Brw_ADMI_ASG_USR, + (unsigned) Brw_ADMI_WRK_USR, + (unsigned) Brw_ADMI_MRK_CRS, + Gbl.CurrentCtr.Ctr.CtrCod, + (unsigned) Brw_ADMI_DOC_GRP, + (unsigned) Brw_ADMI_TCH_GRP, + (unsigned) Brw_ADMI_SHR_GRP, + (unsigned) Brw_ADMI_MRK_GRP); break; case Brw_ADMI_DOC_CRS: case Brw_ADMI_TCH_CRS: case Brw_ADMI_SHR_CRS: case Brw_ADMI_MRK_CRS: - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT file_browser_size.Cod)," "-1," "-1," "MAX(file_browser_size.NumLevels)," @@ -6320,13 +6333,13 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", - Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) FileBrowser); + Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) FileBrowser); break; case Brw_ADMI_DOC_GRP: case Brw_ADMI_TCH_GRP: case Brw_ADMI_SHR_GRP: case Brw_ADMI_MRK_GRP: - sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," "COUNT(DISTINCT file_browser_size.Cod)," "-1," "MAX(file_browser_size.NumLevels)," @@ -6340,11 +6353,11 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", - Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) FileBrowser); + Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) FileBrowser); break; case Brw_ADMI_ASG_USR: case Brw_ADMI_WRK_USR: - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT file_browser_size.Cod)," "-1," "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," "MAX(file_browser_size.NumLevels)," @@ -6356,10 +6369,10 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", - Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) FileBrowser); + Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) FileBrowser); break; case Brw_ADMI_BRF_USR: - sprintf (Query,"SELECT -1," + DB_BuildQuery ("SELECT -1," "-1," "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," "MAX(file_browser_size.NumLevels)," @@ -6372,7 +6385,7 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=file_browser_size.ZoneUsrCod" " AND file_browser_size.FileBrowser=%u", - Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) FileBrowser); + Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) FileBrowser); break; default: Lay_ShowErrorAndExit ("Wrong file browser."); @@ -6384,7 +6397,7 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, switch (FileBrowser) { case Brw_UNKNOWN: - sprintf (Query,"SELECT COUNT(DISTINCT CrsCod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT CrsCod)," "COUNT(DISTINCT GrpCod)-1," "-1," "MAX(NumLevels)," @@ -6417,24 +6430,24 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser IN (%u,%u,%u,%u)" ") AS sizes", - Gbl.CurrentDeg.Deg.DegCod, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_TCH_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) Brw_ADMI_ASG_USR, - (unsigned) Brw_ADMI_WRK_USR, - (unsigned) Brw_ADMI_MRK_CRS, - Gbl.CurrentDeg.Deg.DegCod, - (unsigned) Brw_ADMI_DOC_GRP, - (unsigned) Brw_ADMI_TCH_GRP, - (unsigned) Brw_ADMI_SHR_GRP, - (unsigned) Brw_ADMI_MRK_GRP); + Gbl.CurrentDeg.Deg.DegCod, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_TCH_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) Brw_ADMI_ASG_USR, + (unsigned) Brw_ADMI_WRK_USR, + (unsigned) Brw_ADMI_MRK_CRS, + Gbl.CurrentDeg.Deg.DegCod, + (unsigned) Brw_ADMI_DOC_GRP, + (unsigned) Brw_ADMI_TCH_GRP, + (unsigned) Brw_ADMI_SHR_GRP, + (unsigned) Brw_ADMI_MRK_GRP); break; case Brw_ADMI_DOC_CRS: case Brw_ADMI_TCH_CRS: case Brw_ADMI_SHR_CRS: case Brw_ADMI_MRK_CRS: - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT file_browser_size.Cod)," "-1," "-1," "MAX(file_browser_size.NumLevels)," @@ -6445,13 +6458,13 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " WHERE courses.DegCod=%ld" " AND courses.CrsCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", - Gbl.CurrentDeg.Deg.DegCod,(unsigned) FileBrowser); + Gbl.CurrentDeg.Deg.DegCod,(unsigned) FileBrowser); break; case Brw_ADMI_DOC_GRP: case Brw_ADMI_TCH_GRP: case Brw_ADMI_SHR_GRP: case Brw_ADMI_MRK_GRP: - sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," "COUNT(DISTINCT file_browser_size.Cod)," "-1," "MAX(file_browser_size.NumLevels)," @@ -6464,11 +6477,11 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", - Gbl.CurrentDeg.Deg.DegCod,(unsigned) FileBrowser); + Gbl.CurrentDeg.Deg.DegCod,(unsigned) FileBrowser); break; case Brw_ADMI_ASG_USR: case Brw_ADMI_WRK_USR: - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT file_browser_size.Cod)," "-1," "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," "MAX(file_browser_size.NumLevels)," @@ -6479,10 +6492,10 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " WHERE courses.DegCod=%ld" " AND courses.CrsCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", - Gbl.CurrentDeg.Deg.DegCod,(unsigned) FileBrowser); + Gbl.CurrentDeg.Deg.DegCod,(unsigned) FileBrowser); break; case Brw_ADMI_BRF_USR: - sprintf (Query,"SELECT -1," + DB_BuildQuery ("SELECT -1," "-1," "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," "MAX(file_browser_size.NumLevels)," @@ -6494,7 +6507,7 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=file_browser_size.ZoneUsrCod" " AND file_browser_size.FileBrowser=%u", - Gbl.CurrentDeg.Deg.DegCod,(unsigned) FileBrowser); + Gbl.CurrentDeg.Deg.DegCod,(unsigned) FileBrowser); break; default: Lay_ShowErrorAndExit ("Wrong file browser."); @@ -6506,7 +6519,7 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, switch (FileBrowser) { case Brw_UNKNOWN: - sprintf (Query,"SELECT COUNT(DISTINCT CrsCod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT CrsCod)," "COUNT(DISTINCT GrpCod)-1," "-1," "MAX(NumLevels)," @@ -6537,24 +6550,24 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser IN (%u,%u,%u,%u)" ") AS sizes", - Gbl.CurrentCrs.Crs.CrsCod, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_TCH_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) Brw_ADMI_ASG_USR, - (unsigned) Brw_ADMI_WRK_USR, - (unsigned) Brw_ADMI_MRK_CRS, - Gbl.CurrentCrs.Crs.CrsCod, - (unsigned) Brw_ADMI_DOC_GRP, - (unsigned) Brw_ADMI_TCH_GRP, - (unsigned) Brw_ADMI_SHR_GRP, - (unsigned) Brw_ADMI_MRK_GRP); + Gbl.CurrentCrs.Crs.CrsCod, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_TCH_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) Brw_ADMI_ASG_USR, + (unsigned) Brw_ADMI_WRK_USR, + (unsigned) Brw_ADMI_MRK_CRS, + Gbl.CurrentCrs.Crs.CrsCod, + (unsigned) Brw_ADMI_DOC_GRP, + (unsigned) Brw_ADMI_TCH_GRP, + (unsigned) Brw_ADMI_SHR_GRP, + (unsigned) Brw_ADMI_MRK_GRP); break; case Brw_ADMI_DOC_CRS: case Brw_ADMI_TCH_CRS: case Brw_ADMI_SHR_CRS: case Brw_ADMI_MRK_CRS: - sprintf (Query,"SELECT 1," + DB_BuildQuery ("SELECT 1," "-1," "-1," "MAX(NumLevels)," @@ -6563,13 +6576,13 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, "SUM(TotalSize)" " FROM file_browser_size" " WHERE Cod=%ld AND FileBrowser=%u", - Gbl.CurrentCrs.Crs.CrsCod,(unsigned) FileBrowser); + Gbl.CurrentCrs.Crs.CrsCod,(unsigned) FileBrowser); break; case Brw_ADMI_DOC_GRP: case Brw_ADMI_TCH_GRP: case Brw_ADMI_SHR_GRP: case Brw_ADMI_MRK_GRP: - sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," + DB_BuildQuery ("SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," "COUNT(DISTINCT file_browser_size.Cod)," "-1," "MAX(file_browser_size.NumLevels)," @@ -6581,11 +6594,11 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" " AND file_browser_size.FileBrowser=%u", - Gbl.CurrentCrs.Crs.CrsCod,(unsigned) FileBrowser); + Gbl.CurrentCrs.Crs.CrsCod,(unsigned) FileBrowser); break; case Brw_ADMI_ASG_USR: case Brw_ADMI_WRK_USR: - sprintf (Query,"SELECT 1," + DB_BuildQuery ("SELECT 1," "-1," "COUNT(DISTINCT ZoneUsrCod)," "MAX(NumLevels)," @@ -6594,10 +6607,10 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, "SUM(TotalSize)" " FROM file_browser_size" " WHERE Cod=%ld AND FileBrowser=%u", - Gbl.CurrentCrs.Crs.CrsCod,(unsigned) FileBrowser); + Gbl.CurrentCrs.Crs.CrsCod,(unsigned) FileBrowser); break; case Brw_ADMI_BRF_USR: - sprintf (Query,"SELECT -1," + DB_BuildQuery ("SELECT -1," "-1," "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," "MAX(file_browser_size.NumLevels)," @@ -6608,7 +6621,7 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " WHERE crs_usr.CrsCod=%ld" " AND crs_usr.UsrCod=file_browser_size.ZoneUsrCod" " AND file_browser_size.FileBrowser=%u", - Gbl.CurrentCrs.Crs.CrsCod,(unsigned) FileBrowser); + Gbl.CurrentCrs.Crs.CrsCod,(unsigned) FileBrowser); break; default: Lay_ShowErrorAndExit ("Wrong file browser."); @@ -6619,7 +6632,7 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, Lay_WrongScopeExit (); break; } - DB_QuerySELECT (Query,&mysql_res,"can not get size of a file browser"); + DB_QuerySELECT_new (&mysql_res,"can not get size of a file browser"); /* Get row */ row = mysql_fetch_row (mysql_res); @@ -6736,7 +6749,6 @@ static void Sta_GetAndShowOERsStats (void) static void Sta_GetNumberOfOERsFromDB (Sco_Scope_t Scope,Brw_License_t License,unsigned long NumFiles[2]) { - char Query[512]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumRows,NumRow; @@ -6746,14 +6758,14 @@ static void Sta_GetNumberOfOERsFromDB (Sco_Scope_t Scope,Brw_License_t License,u switch (Scope) { case Sco_SCOPE_SYS: - sprintf (Query,"SELECT Public,COUNT(*)" + DB_BuildQuery ("SELECT Public,COUNT(*)" " FROM files" " WHERE License=%u" " GROUP BY Public", - (unsigned) License); + (unsigned) License); break; case Sco_SCOPE_CTY: - sprintf (Query,"SELECT files.Public,COUNT(*)" + DB_BuildQuery ("SELECT files.Public,COUNT(*)" " FROM institutions,centres,degrees,courses,files" " WHERE institutions.CtyCod=%ld" " AND institutions.InsCod=centres.InsCod" @@ -6763,13 +6775,13 @@ static void Sta_GetNumberOfOERsFromDB (Sco_Scope_t Scope,Brw_License_t License,u " AND files.FileBrowser IN (%u,%u)" " AND files.License=%u" " GROUP BY files.Public", - Gbl.CurrentCty.Cty.CtyCod, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) License); + Gbl.CurrentCty.Cty.CtyCod, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) License); break; case Sco_SCOPE_INS: - sprintf (Query,"SELECT files.Public,COUNT(*)" + DB_BuildQuery ("SELECT files.Public,COUNT(*)" " FROM centres,degrees,courses,files" " WHERE centres.InsCod=%ld" " AND centres.CtrCod=degrees.CtrCod" @@ -6778,13 +6790,13 @@ static void Sta_GetNumberOfOERsFromDB (Sco_Scope_t Scope,Brw_License_t License,u " AND files.FileBrowser IN (%u,%u)" " AND files.License=%u" " GROUP BY files.Public", - Gbl.CurrentIns.Ins.InsCod, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) License); + Gbl.CurrentIns.Ins.InsCod, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) License); break; case Sco_SCOPE_CTR: - sprintf (Query,"SELECT files.Public,COUNT(*)" + DB_BuildQuery ("SELECT files.Public,COUNT(*)" " FROM degrees,courses,files" " WHERE degrees.CtrCod=%ld" " AND degrees.DegCod=courses.DegCod" @@ -6792,41 +6804,41 @@ static void Sta_GetNumberOfOERsFromDB (Sco_Scope_t Scope,Brw_License_t License,u " AND files.FileBrowser IN (%u,%u)" " AND files.License=%u" " GROUP BY files.Public", - Gbl.CurrentCtr.Ctr.CtrCod, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) License); + Gbl.CurrentCtr.Ctr.CtrCod, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) License); break; case Sco_SCOPE_DEG: - sprintf (Query,"SELECT files.Public,COUNT(*)" + DB_BuildQuery ("SELECT files.Public,COUNT(*)" " FROM courses,files" " WHERE courses.DegCod=%ld" " AND courses.CrsCod=files.Cod" " AND files.FileBrowser IN (%u,%u)" " AND files.License=%u" " GROUP BY files.Public", - Gbl.CurrentDeg.Deg.DegCod, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) License); + Gbl.CurrentDeg.Deg.DegCod, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) License); break; case Sco_SCOPE_CRS: - sprintf (Query,"SELECT Public,COUNT(*)" + DB_BuildQuery ("SELECT Public,COUNT(*)" " FROM files" " WHERE Cod=%ld" " AND FileBrowser IN (%u,%u)" " AND License=%u" " GROUP BY Public", - Gbl.CurrentCrs.Crs.CrsCod, - (unsigned) Brw_ADMI_DOC_CRS, - (unsigned) Brw_ADMI_SHR_CRS, - (unsigned) License); + Gbl.CurrentCrs.Crs.CrsCod, + (unsigned) Brw_ADMI_DOC_CRS, + (unsigned) Brw_ADMI_SHR_CRS, + (unsigned) License); break; default: Lay_WrongScopeExit (); break; } - NumRows = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get number of OERs"); + NumRows = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get number of OERs"); /* Reset values to zero */ NumFiles[0] = NumFiles[1] = 0L; @@ -7223,7 +7235,6 @@ static void Sta_GetAndShowSocialActivityStats (void) extern const char *Txt_No_of_posts_BR_per_user; extern const char *Txt_SOCIAL_NOTE[Soc_NUM_NOTE_TYPES]; extern const char *Txt_Total; - char Query[1024]; MYSQL_RES *mysql_res; MYSQL_ROW row; Soc_NoteType_t NoteType; @@ -7274,12 +7285,12 @@ static void Sta_GetAndShowSocialActivityStats (void) switch (Gbl.Scope.Current) { case Sco_SCOPE_SYS: - sprintf (Query,"SELECT COUNT(*),COUNT(DISTINCT UsrCod)" + DB_BuildQuery ("SELECT COUNT(*),COUNT(DISTINCT UsrCod)" " FROM social_notes WHERE NoteType=%u", - NoteType); + NoteType); break; case Sco_SCOPE_CTY: - sprintf (Query,"SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" + DB_BuildQuery ("SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" " FROM institutions,centres,degrees,courses,crs_usr,social_notes" " WHERE institutions.CtyCod=%ld" " AND institutions.InsCod=centres.InsCod" @@ -7288,11 +7299,11 @@ static void Sta_GetAndShowSocialActivityStats (void) " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=social_notes.UsrCod" " AND social_notes.NoteType=%u", - Gbl.CurrentCty.Cty.CtyCod, - (unsigned) NoteType); + Gbl.CurrentCty.Cty.CtyCod, + (unsigned) NoteType); break; case Sco_SCOPE_INS: - sprintf (Query,"SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" + DB_BuildQuery ("SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" " FROM centres,degrees,courses,crs_usr,social_notes" " WHERE centres.InsCod=%ld" " AND centres.CtrCod=degrees.CtrCod" @@ -7300,38 +7311,38 @@ static void Sta_GetAndShowSocialActivityStats (void) " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=social_notes.UsrCod" " AND social_notes.NoteType=%u", - Gbl.CurrentIns.Ins.InsCod, - (unsigned) NoteType); + Gbl.CurrentIns.Ins.InsCod, + (unsigned) NoteType); break; case Sco_SCOPE_CTR: - sprintf (Query,"SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" + DB_BuildQuery ("SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" " FROM degrees,courses,crs_usr,social_notes" " WHERE degrees.CtrCod=%ld" " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=social_notes.UsrCod" " AND social_notes.NoteType=%u", - Gbl.CurrentCtr.Ctr.CtrCod, - (unsigned) NoteType); + Gbl.CurrentCtr.Ctr.CtrCod, + (unsigned) NoteType); break; case Sco_SCOPE_DEG: - sprintf (Query,"SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" + DB_BuildQuery ("SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" " FROM courses,crs_usr,social_notes" " WHERE courses.DegCod=%ld" " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=social_notes.UsrCod" " AND social_notes.NoteType=%u", - Gbl.CurrentDeg.Deg.DegCod, - (unsigned) NoteType); + Gbl.CurrentDeg.Deg.DegCod, + (unsigned) NoteType); break; case Sco_SCOPE_CRS: - sprintf (Query,"SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" + DB_BuildQuery ("SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" " FROM crs_usr,social_notes" " WHERE crs_usr.CrsCod=%ld" " AND crs_usr.UsrCod=social_notes.UsrCod" " AND social_notes.NoteType=%u", - Gbl.CurrentCrs.Crs.CrsCod, - (unsigned) NoteType); + Gbl.CurrentCrs.Crs.CrsCod, + (unsigned) NoteType); break; default: Lay_WrongScopeExit (); @@ -7339,7 +7350,7 @@ static void Sta_GetAndShowSocialActivityStats (void) } NumSocialNotes = 0; NumUsrs = 0; - if (DB_QuerySELECT (Query,&mysql_res,"can not get number of social notes")) + if (DB_QuerySELECT_new (&mysql_res,"can not get number of social notes")) { /***** Get number of social notes and number of users *****/ row = mysql_fetch_row (mysql_res); @@ -7389,11 +7400,11 @@ static void Sta_GetAndShowSocialActivityStats (void) switch (Gbl.Scope.Current) { case Sco_SCOPE_SYS: - sprintf (Query,"SELECT COUNT(*),COUNT(DISTINCT UsrCod)" + DB_BuildQuery ("SELECT COUNT(*),COUNT(DISTINCT UsrCod)" " FROM social_notes"); break; case Sco_SCOPE_CTY: - sprintf (Query,"SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" + DB_BuildQuery ("SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" " FROM institutions,centres,degrees,courses,crs_usr,social_notes" " WHERE institutions.CtyCod=%ld" " AND institutions.InsCod=centres.InsCod" @@ -7401,41 +7412,41 @@ static void Sta_GetAndShowSocialActivityStats (void) " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=social_notes.UsrCod", - Gbl.CurrentCty.Cty.CtyCod); + Gbl.CurrentCty.Cty.CtyCod); break; case Sco_SCOPE_INS: - sprintf (Query,"SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" + DB_BuildQuery ("SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" " FROM centres,degrees,courses,crs_usr,social_notes" " WHERE centres.InsCod=%ld" " AND centres.CtrCod=degrees.CtrCod" " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=social_notes.UsrCod", - Gbl.CurrentIns.Ins.InsCod); + Gbl.CurrentIns.Ins.InsCod); break; case Sco_SCOPE_CTR: - sprintf (Query,"SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" + DB_BuildQuery ("SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" " FROM degrees,courses,crs_usr,social_notes" " WHERE degrees.CtrCod=%ld" " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=social_notes.UsrCod", - Gbl.CurrentCtr.Ctr.CtrCod); + Gbl.CurrentCtr.Ctr.CtrCod); break; case Sco_SCOPE_DEG: - sprintf (Query,"SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" + DB_BuildQuery ("SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" " FROM courses,crs_usr,social_notes" " WHERE courses.DegCod=%ld" " AND courses.CrsCod=crs_usr.CrsCod" " AND crs_usr.UsrCod=social_notes.UsrCod", - Gbl.CurrentDeg.Deg.DegCod); + Gbl.CurrentDeg.Deg.DegCod); break; case Sco_SCOPE_CRS: - sprintf (Query,"SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" + DB_BuildQuery ("SELECT COUNT(DISTINCT social_notes.NotCod),COUNT(DISTINCT social_notes.UsrCod)" " FROM crs_usr,social_notes" " WHERE crs_usr.CrsCod=%ld" " AND crs_usr.UsrCod=social_notes.UsrCod", - Gbl.CurrentCrs.Crs.CrsCod); + Gbl.CurrentCrs.Crs.CrsCod); break; default: Lay_WrongScopeExit (); @@ -7443,7 +7454,7 @@ static void Sta_GetAndShowSocialActivityStats (void) } NumSocialNotes = 0; NumUsrs = 0; - if (DB_QuerySELECT (Query,&mysql_res,"can not get number of social notes")) + if (DB_QuerySELECT_new (&mysql_res,"can not get number of social notes")) { /* Get number of social notes and number of users */ row = mysql_fetch_row (mysql_res); diff --git a/swad_survey.c b/swad_survey.c index 64cbd9d0e..4af691442 100644 --- a/swad_survey.c +++ b/swad_survey.c @@ -847,7 +847,6 @@ void Svy_GetListSurveys (void) extern const char *Sco_ScopeDB[Sco_NUM_SCOPES]; char SubQuery[Sco_NUM_SCOPES][256]; char OrderBySubQuery[256]; - char Query[2048]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned long NumRows; @@ -937,22 +936,22 @@ void Svy_GetListSurveys (void) break; } - sprintf (Query,"SELECT SvyCod FROM surveys" + DB_BuildQuery ("SELECT SvyCod FROM surveys" " WHERE %s%s%s%s%s%s" " ORDER BY %s", - SubQuery[Sco_SCOPE_SYS], - SubQuery[Sco_SCOPE_CTY], - SubQuery[Sco_SCOPE_INS], - SubQuery[Sco_SCOPE_CTR], - SubQuery[Sco_SCOPE_DEG], - SubQuery[Sco_SCOPE_CRS], - OrderBySubQuery); + SubQuery[Sco_SCOPE_SYS], + SubQuery[Sco_SCOPE_CTY], + SubQuery[Sco_SCOPE_INS], + SubQuery[Sco_SCOPE_CTR], + SubQuery[Sco_SCOPE_DEG], + SubQuery[Sco_SCOPE_CRS], + OrderBySubQuery); } else Lay_ShowErrorAndExit ("Can not get list of surveys."); /* Make query */ - NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get surveys"); + NumRows = DB_QuerySELECT_new (&mysql_res,"can not get surveys"); if (NumRows) // Surveys found... { @@ -1155,23 +1154,22 @@ static void Svy_SetAllowedAndHiddenScopes (unsigned *ScopesAllowed, void Svy_GetDataOfSurveyByCod (struct Survey *Svy) { - char Query[1024]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned long NumRows; /***** Build query *****/ - sprintf (Query,"SELECT SvyCod,Scope,Cod,Hidden,Roles,UsrCod," + DB_BuildQuery ("SELECT SvyCod,Scope,Cod,Hidden,Roles,UsrCod," "UNIX_TIMESTAMP(StartTime)," "UNIX_TIMESTAMP(EndTime)," "NOW() BETWEEN StartTime AND EndTime," "Title" " FROM surveys" " WHERE SvyCod=%ld", - Svy->SvyCod); + Svy->SvyCod); /***** Get data of survey from database *****/ - NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get survey data"); + NumRows = DB_QuerySELECT_new (&mysql_res,"can not get survey data"); if (NumRows) // Survey found... { @@ -1386,14 +1384,13 @@ void Svy_FreeListSurveys (void) static void Svy_GetSurveyTxtFromDB (long SvyCod,char Txt[Cns_MAX_BYTES_TEXT + 1]) { - char Query[128]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned long NumRows; /***** Get text of survey from database *****/ - sprintf (Query,"SELECT Txt FROM surveys WHERE SvyCod=%ld",SvyCod); - NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get survey text"); + DB_BuildQuery ("SELECT Txt FROM surveys WHERE SvyCod=%ld",SvyCod); + NumRows = DB_QuerySELECT_new (&mysql_res,"can not get survey text"); /***** The result of the query must have one row or none *****/ if (NumRows == 1) @@ -2414,21 +2411,20 @@ static void Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (struct Survey *Svy) extern const char *Txt_Groups; extern const char *Txt_and; extern const char *Txt_The_whole_course; - char Query[512]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned long NumRow; unsigned long NumRows; /***** Get groups associated to a survey from database *****/ - sprintf (Query,"SELECT crs_grp_types.GrpTypName,crs_grp.GrpName" + DB_BuildQuery ("SELECT crs_grp_types.GrpTypName,crs_grp.GrpName" " FROM svy_grp,crs_grp,crs_grp_types" " WHERE svy_grp.SvyCod=%ld" " AND svy_grp.GrpCod=crs_grp.GrpCod" " AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod" " ORDER BY crs_grp_types.GrpTypName,crs_grp.GrpName", - Svy->SvyCod); - NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get groups of a survey"); + Svy->SvyCod); + NumRows = DB_QuerySELECT_new (&mysql_res,"can not get groups of a survey"); /***** Write heading *****/ fprintf (Gbl.F.Out,"
    %s: ", @@ -2601,7 +2597,6 @@ static void Svy_ShowFormEditOneQst (long SvyCod,struct SurveyQuestion *SvyQst, extern const char *Txt_SURVEY_STR_ANSWER_TYPES[Svy_NUM_ANS_TYPES]; extern const char *Txt_Save; extern const char *Txt_Create_question; - char Query[256]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumAns; @@ -2614,10 +2609,10 @@ static void Svy_ShowFormEditOneQst (long SvyCod,struct SurveyQuestion *SvyQst, { /***** Get the type of answer and the stem from the database *****/ /* Get the question from database */ - sprintf (Query,"SELECT QstInd,AnsType,Stem FROM svy_questions" + DB_BuildQuery ("SELECT QstInd,AnsType,Stem FROM svy_questions" " WHERE QstCod=%ld AND SvyCod=%ld", - SvyQst->QstCod,SvyCod); - DB_QuerySELECT (Query,&mysql_res,"can not get a question"); + SvyQst->QstCod,SvyCod); + DB_QuerySELECT_new (&mysql_res,"can not get a question"); row = mysql_fetch_row (mysql_res); @@ -2858,14 +2853,13 @@ static bool Svy_CheckIfAnswerExists (long QstCod,unsigned AnsInd) static unsigned Svy_GetAnswersQst (long QstCod,MYSQL_RES **mysql_res) { - char Query[256]; unsigned long NumRows; /***** Get answers of a question from database *****/ - sprintf (Query,"SELECT AnsInd,NumUsrs,Answer FROM svy_answers" + DB_BuildQuery ("SELECT AnsInd,NumUsrs,Answer FROM svy_answers" " WHERE QstCod=%ld ORDER BY AnsInd", - QstCod); - NumRows = DB_QuerySELECT (Query,mysql_res,"can not get answers of a question"); + QstCod); + NumRows = DB_QuerySELECT_new (mysql_res,"can not get answers of a question"); /***** Count number of rows of result *****/ if (NumRows == 0) @@ -3095,16 +3089,14 @@ void Svy_ReceiveQst (void) static unsigned Svy_GetQstIndFromQstCod (long QstCod) { - char Query[128]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned long NumRows; unsigned QstInd = 0; /***** Get number of surveys with a field value from database *****/ - sprintf (Query,"SELECT QstInd FROM svy_questions WHERE QstCod=%ld", - QstCod); - NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get question index"); + DB_BuildQuery ("SELECT QstInd FROM svy_questions WHERE QstCod=%ld",QstCod); + NumRows = DB_QuerySELECT_new (&mysql_res,"can not get question index"); /***** Get number of users *****/ if (NumRows) @@ -3128,15 +3120,14 @@ static unsigned Svy_GetQstIndFromQstCod (long QstCod) static unsigned Svy_GetNextQuestionIndexInSvy (long SvyCod) { - char Query[128]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned QstInd = 0; /***** Get number of surveys with a field value from database *****/ - sprintf (Query,"SELECT MAX(QstInd) FROM svy_questions WHERE SvyCod=%ld", - SvyCod); - DB_QuerySELECT (Query,&mysql_res,"can not get last question index"); + DB_BuildQuery ("SELECT MAX(QstInd) FROM svy_questions WHERE SvyCod=%ld", + SvyCod); + DB_QuerySELECT_new (&mysql_res,"can not get last question index"); /***** Get number of users *****/ row = mysql_fetch_row (mysql_res); @@ -3168,7 +3159,6 @@ static void Svy_ListSvyQuestions (struct Survey *Svy, extern const char *Txt_SURVEY_STR_ANSWER_TYPES[Svy_NUM_ANS_TYPES]; extern const char *Txt_This_survey_has_no_questions; extern const char *Txt_Done; - char Query[256]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumQsts; @@ -3179,11 +3169,11 @@ static void Svy_ListSvyQuestions (struct Survey *Svy, bool PutFormAnswerSurvey = Svy->Status.ICanAnswer && !Editing; /***** Get data of questions from database *****/ - sprintf (Query,"SELECT QstCod,QstInd,AnsType,Stem" + DB_BuildQuery ("SELECT QstCod,QstInd,AnsType,Stem" " FROM svy_questions" " WHERE SvyCod=%ld ORDER BY QstInd", - Svy->SvyCod); - NumQsts = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get data of a question"); + Svy->SvyCod); + NumQsts = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get data of a question"); /***** Start box *****/ Gbl.Svys.SvyCodToEdit = Svy->SvyCod; @@ -3661,7 +3651,6 @@ void Svy_ReceiveSurveyAnswers (void) static void Svy_ReceiveAndStoreUserAnswersToASurvey (long SvyCod) { - char Query[256]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumQst; @@ -3674,13 +3663,11 @@ static void Svy_ReceiveAndStoreUserAnswersToASurvey (long SvyCod) unsigned AnsInd; /***** Get questions of this survey from database *****/ - sprintf (Query,"SELECT QstCod FROM svy_questions" + DB_BuildQuery ("SELECT QstCod FROM svy_questions" " WHERE SvyCod=%ld ORDER BY QstCod", - SvyCod); - DB_QuerySELECT (Query,&mysql_res,"can not get questions of a survey"); - - if ((NumQsts = (unsigned) DB_QuerySELECT (Query,&mysql_res, - "can not get surveys"))) + SvyCod); + if ((NumQsts = (unsigned) DB_QuerySELECT_new (&mysql_res, + "can not get questions of a survey"))) { // This survey has questions /***** Get questions *****/ @@ -3783,7 +3770,6 @@ static unsigned Svy_GetNumUsrsWhoHaveAnsweredSvy (long SvyCod) unsigned Svy_GetNumCoursesWithCrsSurveys (Sco_Scope_t Scope) { extern const char *Sco_ScopeDB[Sco_NUM_SCOPES]; - char Query[1024]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumCourses; @@ -3792,13 +3778,13 @@ unsigned Svy_GetNumCoursesWithCrsSurveys (Sco_Scope_t Scope) switch (Scope) { case Sco_SCOPE_SYS: - sprintf (Query,"SELECT COUNT(DISTINCT Cod)" + DB_BuildQuery ("SELECT COUNT(DISTINCT Cod)" " FROM surveys" " WHERE Scope='%s'", - Sco_ScopeDB[Sco_SCOPE_CRS]); + Sco_ScopeDB[Sco_SCOPE_CRS]); break; case Sco_SCOPE_CTY: - sprintf (Query,"SELECT COUNT(DISTINCT surveys.Cod)" + DB_BuildQuery ("SELECT COUNT(DISTINCT surveys.Cod)" " FROM institutions,centres,degrees,courses,surveys" " WHERE institutions.CtyCod=%ld" " AND institutions.InsCod=centres.InsCod" @@ -3806,51 +3792,51 @@ unsigned Svy_GetNumCoursesWithCrsSurveys (Sco_Scope_t Scope) " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=surveys.Cod" " AND surveys.Scope='%s'", - Gbl.CurrentIns.Ins.InsCod, - Sco_ScopeDB[Sco_SCOPE_CRS]); + Gbl.CurrentIns.Ins.InsCod, + Sco_ScopeDB[Sco_SCOPE_CRS]); break; case Sco_SCOPE_INS: - sprintf (Query,"SELECT COUNT(DISTINCT surveys.Cod)" + DB_BuildQuery ("SELECT COUNT(DISTINCT surveys.Cod)" " FROM centres,degrees,courses,surveys" " WHERE centres.InsCod=%ld" " AND centres.CtrCod=degrees.CtrCod" " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=surveys.Cod" " AND surveys.Scope='%s'", - Gbl.CurrentIns.Ins.InsCod, - Sco_ScopeDB[Sco_SCOPE_CRS]); + Gbl.CurrentIns.Ins.InsCod, + Sco_ScopeDB[Sco_SCOPE_CRS]); break; case Sco_SCOPE_CTR: - sprintf (Query,"SELECT COUNT(DISTINCT surveys.Cod)" + DB_BuildQuery ("SELECT COUNT(DISTINCT surveys.Cod)" " FROM degrees,courses,surveys" " WHERE degrees.CtrCod=%ld" " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=surveys.Cod" " AND surveys.Scope='%s'", - Gbl.CurrentCtr.Ctr.CtrCod, - Sco_ScopeDB[Sco_SCOPE_CRS]); + Gbl.CurrentCtr.Ctr.CtrCod, + Sco_ScopeDB[Sco_SCOPE_CRS]); break; case Sco_SCOPE_DEG: - sprintf (Query,"SELECT COUNT(DISTINCT surveys.Cod)" + DB_BuildQuery ("SELECT COUNT(DISTINCT surveys.Cod)" " FROM courses,surveys" " WHERE courses.DegCod=%ld" " AND courses.CrsCod=surveys.Cod" " AND surveys.Scope='%s'", - Gbl.CurrentDeg.Deg.DegCod, - Sco_ScopeDB[Sco_SCOPE_CRS]); + Gbl.CurrentDeg.Deg.DegCod, + Sco_ScopeDB[Sco_SCOPE_CRS]); break; case Sco_SCOPE_CRS: - sprintf (Query,"SELECT COUNT(DISTINCT Cod)" + DB_BuildQuery ("SELECT COUNT(DISTINCT Cod)" " FROM surveys" " WHERE Scope='%s' AND Cod=%ld", - Sco_ScopeDB[Sco_SCOPE_CRS], - Gbl.CurrentCrs.Crs.CrsCod); + Sco_ScopeDB[Sco_SCOPE_CRS], + Gbl.CurrentCrs.Crs.CrsCod); break; default: Lay_WrongScopeExit (); break; } - DB_QuerySELECT (Query,&mysql_res,"can not get number of courses with surveys"); + DB_QuerySELECT_new (&mysql_res,"can not get number of courses with surveys"); /***** Get number of surveys *****/ row = mysql_fetch_row (mysql_res); @@ -3872,7 +3858,6 @@ unsigned Svy_GetNumCoursesWithCrsSurveys (Sco_Scope_t Scope) unsigned Svy_GetNumCrsSurveys (Sco_Scope_t Scope,unsigned *NumNotif) { extern const char *Sco_ScopeDB[Sco_NUM_SCOPES]; - char Query[1024]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumSurveys; @@ -3881,13 +3866,13 @@ unsigned Svy_GetNumCrsSurveys (Sco_Scope_t Scope,unsigned *NumNotif) switch (Scope) { case Sco_SCOPE_SYS: - sprintf (Query,"SELECT COUNT(*),SUM(NumNotif)" + DB_BuildQuery ("SELECT COUNT(*),SUM(NumNotif)" " FROM surveys" " WHERE Scope='%s'", - Sco_ScopeDB[Sco_SCOPE_CRS]); + Sco_ScopeDB[Sco_SCOPE_CRS]); break; case Sco_SCOPE_CTY: - sprintf (Query,"SELECT COUNT(*),SUM(surveys.NumNotif)" + DB_BuildQuery ("SELECT COUNT(*),SUM(surveys.NumNotif)" " FROM institutions,centres,degrees,courses,surveys" " WHERE institutions.CtyCod=%ld" " AND institutions.InsCod=centres.InsCod" @@ -3895,52 +3880,52 @@ unsigned Svy_GetNumCrsSurveys (Sco_Scope_t Scope,unsigned *NumNotif) " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=surveys.Cod" " AND surveys.Scope='%s'", - Gbl.CurrentCty.Cty.CtyCod, - Sco_ScopeDB[Sco_SCOPE_CRS]); + Gbl.CurrentCty.Cty.CtyCod, + Sco_ScopeDB[Sco_SCOPE_CRS]); break; case Sco_SCOPE_INS: - sprintf (Query,"SELECT COUNT(*),SUM(surveys.NumNotif)" + DB_BuildQuery ("SELECT COUNT(*),SUM(surveys.NumNotif)" " FROM centres,degrees,courses,surveys" " WHERE centres.InsCod=%ld" " AND centres.CtrCod=degrees.CtrCod" " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=surveys.Cod" " AND surveys.Scope='%s'", - Gbl.CurrentIns.Ins.InsCod, - Sco_ScopeDB[Sco_SCOPE_CRS]); + Gbl.CurrentIns.Ins.InsCod, + Sco_ScopeDB[Sco_SCOPE_CRS]); break; case Sco_SCOPE_CTR: - sprintf (Query,"SELECT COUNT(*),SUM(surveys.NumNotif)" + DB_BuildQuery ("SELECT COUNT(*),SUM(surveys.NumNotif)" " FROM degrees,courses,surveys" " WHERE degrees.CtrCod=%ld" " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=surveys.Cod" " AND surveys.Scope='%s'", - Gbl.CurrentCtr.Ctr.CtrCod, - Sco_ScopeDB[Sco_SCOPE_CRS]); + Gbl.CurrentCtr.Ctr.CtrCod, + Sco_ScopeDB[Sco_SCOPE_CRS]); break; case Sco_SCOPE_DEG: - sprintf (Query,"SELECT COUNT(*),SUM(surveys.NumNotif)" + DB_BuildQuery ("SELECT COUNT(*),SUM(surveys.NumNotif)" " FROM courses,surveys" " WHERE courses.DegCod=%ld" " AND courses.CrsCod=surveys.Cod" " AND surveys.Scope='%s'", - Gbl.CurrentDeg.Deg.DegCod, - Sco_ScopeDB[Sco_SCOPE_CRS]); + Gbl.CurrentDeg.Deg.DegCod, + Sco_ScopeDB[Sco_SCOPE_CRS]); break; case Sco_SCOPE_CRS: - sprintf (Query,"SELECT COUNT(*),SUM(NumNotif)" + DB_BuildQuery ("SELECT COUNT(*),SUM(NumNotif)" " FROM surveys" " WHERE surveys.Scope='%s'" " AND CrsCod=%ld", - Sco_ScopeDB[Sco_SCOPE_CRS], - Gbl.CurrentCrs.Crs.CrsCod); + Sco_ScopeDB[Sco_SCOPE_CRS], + Gbl.CurrentCrs.Crs.CrsCod); break; default: Lay_WrongScopeExit (); break; } - DB_QuerySELECT (Query,&mysql_res,"can not get number of surveys"); + DB_QuerySELECT_new (&mysql_res,"can not get number of surveys"); /***** Get number of surveys *****/ row = mysql_fetch_row (mysql_res); @@ -3969,7 +3954,6 @@ unsigned Svy_GetNumCrsSurveys (Sco_Scope_t Scope,unsigned *NumNotif) float Svy_GetNumQstsPerCrsSurvey (Sco_Scope_t Scope) { extern const char *Sco_ScopeDB[Sco_NUM_SCOPES]; - char Query[1024]; MYSQL_RES *mysql_res; MYSQL_ROW row; float NumQstsPerSurvey; @@ -3978,16 +3962,16 @@ float Svy_GetNumQstsPerCrsSurvey (Sco_Scope_t Scope) switch (Scope) { case Sco_SCOPE_SYS: - sprintf (Query,"SELECT AVG(NumQsts) FROM" + DB_BuildQuery ("SELECT AVG(NumQsts) FROM" " (SELECT COUNT(svy_questions.QstCod) AS NumQsts" " FROM surveys,svy_questions" " WHERE surveys.Scope='%s'" " AND surveys.SvyCod=svy_questions.SvyCod" " GROUP BY svy_questions.SvyCod) AS NumQstsTable", - Sco_ScopeDB[Sco_SCOPE_CRS]); + Sco_ScopeDB[Sco_SCOPE_CRS]); break; case Sco_SCOPE_CTY: - sprintf (Query,"SELECT AVG(NumQsts) FROM" + DB_BuildQuery ("SELECT AVG(NumQsts) FROM" " (SELECT COUNT(svy_questions.QstCod) AS NumQsts" " FROM institutions,centres,degrees,courses,surveys,svy_questions" " WHERE institutions.CtyCod=%ld" @@ -3998,11 +3982,11 @@ float Svy_GetNumQstsPerCrsSurvey (Sco_Scope_t Scope) " AND surveys.Scope='%s'" " AND surveys.SvyCod=svy_questions.SvyCod" " GROUP BY svy_questions.SvyCod) AS NumQstsTable", - Gbl.CurrentCty.Cty.CtyCod, - Sco_ScopeDB[Sco_SCOPE_CRS]); + Gbl.CurrentCty.Cty.CtyCod, + Sco_ScopeDB[Sco_SCOPE_CRS]); break; case Sco_SCOPE_INS: - sprintf (Query,"SELECT AVG(NumQsts) FROM" + DB_BuildQuery ("SELECT AVG(NumQsts) FROM" " (SELECT COUNT(svy_questions.QstCod) AS NumQsts" " FROM centres,degrees,courses,surveys,svy_questions" " WHERE centres.InsCod=%ld" @@ -4012,11 +3996,11 @@ float Svy_GetNumQstsPerCrsSurvey (Sco_Scope_t Scope) " AND surveys.Scope='%s'" " AND surveys.SvyCod=svy_questions.SvyCod" " GROUP BY svy_questions.SvyCod) AS NumQstsTable", - Gbl.CurrentIns.Ins.InsCod, - Sco_ScopeDB[Sco_SCOPE_CRS]); + Gbl.CurrentIns.Ins.InsCod, + Sco_ScopeDB[Sco_SCOPE_CRS]); break; case Sco_SCOPE_CTR: - sprintf (Query,"SELECT AVG(NumQsts) FROM" + DB_BuildQuery ("SELECT AVG(NumQsts) FROM" " (SELECT COUNT(svy_questions.QstCod) AS NumQsts" " FROM degrees,courses,surveys,svy_questions" " WHERE degrees.CtrCod=%ld" @@ -4025,11 +4009,11 @@ float Svy_GetNumQstsPerCrsSurvey (Sco_Scope_t Scope) " AND surveys.Scope='%s'" " AND surveys.SvyCod=svy_questions.SvyCod" " GROUP BY svy_questions.SvyCod) AS NumQstsTable", - Gbl.CurrentCtr.Ctr.CtrCod, - Sco_ScopeDB[Sco_SCOPE_CRS]); + Gbl.CurrentCtr.Ctr.CtrCod, + Sco_ScopeDB[Sco_SCOPE_CRS]); break; case Sco_SCOPE_DEG: - sprintf (Query,"SELECT AVG(NumQsts) FROM" + DB_BuildQuery ("SELECT AVG(NumQsts) FROM" " (SELECT COUNT(svy_questions.QstCod) AS NumQsts" " FROM courses,surveys,svy_questions" " WHERE courses.DegCod=%ld" @@ -4037,23 +4021,23 @@ float Svy_GetNumQstsPerCrsSurvey (Sco_Scope_t Scope) " AND surveys.Scope='%s'" " AND surveys.SvyCod=svy_questions.SvyCod" " GROUP BY svy_questions.SvyCod) AS NumQstsTable", - Gbl.CurrentDeg.Deg.DegCod, - Sco_ScopeDB[Sco_SCOPE_CRS]); + Gbl.CurrentDeg.Deg.DegCod, + Sco_ScopeDB[Sco_SCOPE_CRS]); break; case Sco_SCOPE_CRS: - sprintf (Query,"SELECT AVG(NumQsts) FROM" + DB_BuildQuery ("SELECT AVG(NumQsts) FROM" " (SELECT COUNT(svy_questions.QstCod) AS NumQsts" " FROM surveys,svy_questions" " WHERE surveys.Scope='%s' AND surveys.Cod=%ld" " AND surveys.SvyCod=svy_questions.SvyCod" " GROUP BY svy_questions.SvyCod) AS NumQstsTable", - Sco_ScopeDB[Sco_SCOPE_CRS],Gbl.CurrentCrs.Crs.CrsCod); + Sco_ScopeDB[Sco_SCOPE_CRS],Gbl.CurrentCrs.Crs.CrsCod); break; default: Lay_WrongScopeExit (); break; } - DB_QuerySELECT (Query,&mysql_res,"can not get number of questions per survey"); + DB_QuerySELECT_new (&mysql_res,"can not get number of questions per survey"); /***** Get number of courses *****/ row = mysql_fetch_row (mysql_res); diff --git a/swad_test.c b/swad_test.c index 3357e78b7..68d3bd533 100644 --- a/swad_test.c +++ b/swad_test.c @@ -668,7 +668,6 @@ static bool Tst_CheckIfNextTstAllowed (void) extern const char *Txt_Test; extern const char *Txt_You_can_not_take_a_new_test_until; extern const char *Txt_Today; - char Query[512]; MYSQL_RES *mysql_res; MYSQL_ROW row; long NumSecondsFromNowToNextAccTst = -1L; // Access allowed when this number <= 0 @@ -680,14 +679,14 @@ static bool Tst_CheckIfNextTstAllowed (void) return true; /***** Get date of next allowed access to test from database *****/ - sprintf (Query,"SELECT UNIX_TIMESTAMP(LastAccTst+INTERVAL (NumQstsLastTst*%lu) SECOND)-UNIX_TIMESTAMP()," + DB_BuildQuery ("SELECT UNIX_TIMESTAMP(LastAccTst+INTERVAL (NumQstsLastTst*%lu) SECOND)-UNIX_TIMESTAMP()," "UNIX_TIMESTAMP(LastAccTst+INTERVAL (NumQstsLastTst*%lu) SECOND)" " FROM crs_usr" " WHERE CrsCod=%ld AND UsrCod=%ld", - Gbl.Test.Config.MinTimeNxtTstPerQst, - Gbl.Test.Config.MinTimeNxtTstPerQst, - Gbl.CurrentCrs.Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod); - if (DB_QuerySELECT (Query,&mysql_res,"can not get last access to test") == 1) + Gbl.Test.Config.MinTimeNxtTstPerQst, + Gbl.Test.Config.MinTimeNxtTstPerQst, + Gbl.CurrentCrs.Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod); + if (DB_QuerySELECT_new (&mysql_res,"can not get last access to test") == 1) { /* Get seconds from now to next access to test */ row = mysql_fetch_row (mysql_res); @@ -749,7 +748,6 @@ static void Tst_SetTstStatus (unsigned NumTst,Tst_Status_t TstStatus) static Tst_Status_t Tst_GetTstStatus (unsigned NumTst) { - char Query[256 + Cns_BYTES_SESSION_ID]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned long NumRows; @@ -757,10 +755,10 @@ static Tst_Status_t Tst_GetTstStatus (unsigned NumTst) Tst_Status_t TstStatus = Tst_STATUS_ERROR; /***** Get status of test from database *****/ - sprintf (Query,"SELECT Status FROM tst_status" + DB_BuildQuery ("SELECT Status FROM tst_status" " WHERE SessionId='%s' AND CrsCod=%ld AND NumTst=%u", - Gbl.Session.Id,Gbl.CurrentCrs.Crs.CrsCod,NumTst); - NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get status of test"); + Gbl.Session.Id,Gbl.CurrentCrs.Crs.CrsCod,NumTst); + NumRows = DB_QuerySELECT_new (&mysql_res,"can not get status of test"); if (NumRows == 1) { @@ -784,7 +782,6 @@ static Tst_Status_t Tst_GetTstStatus (unsigned NumTst) static unsigned Tst_GetNumAccessesTst (void) { - char Query[256]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned long NumRows; @@ -793,10 +790,10 @@ static unsigned Tst_GetNumAccessesTst (void) if (Gbl.Usrs.Me.IBelongToCurrentCrs) { /***** Get number of hits to test from database *****/ - sprintf (Query,"SELECT NumAccTst FROM crs_usr" + DB_BuildQuery ("SELECT NumAccTst FROM crs_usr" " WHERE CrsCod=%ld AND UsrCod=%ld", - Gbl.CurrentCrs.Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod); - NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get number of hits to test"); + Gbl.CurrentCrs.Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod); + NumRows = DB_QuerySELECT_new (&mysql_res,"can not get number of hits to test"); if (NumRows == 0) NumAccessesTst = 0; @@ -861,14 +858,13 @@ static void Tst_ShowTestQuestionsWhenSeeing (MYSQL_RES *mysql_res) static void Tst_ShowTstTagsPresentInATestResult (long TstCod) { extern const char *Txt_no_tags; - char Query[512]; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned long NumRows; unsigned long NumRow; /***** Get all tags of questions in this test *****/ - sprintf (Query,"SELECT tst_tags.TagTxt FROM" + DB_BuildQuery ("SELECT tst_tags.TagTxt FROM" " (SELECT DISTINCT(tst_question_tags.TagCod)" " FROM tst_question_tags,tst_exam_questions" " WHERE tst_exam_questions.TstCod=%ld" @@ -876,8 +872,8 @@ static void Tst_ShowTstTagsPresentInATestResult (long TstCod) " AS TagsCods,tst_tags" " WHERE TagsCods.TagCod=tst_tags.TagCod" " ORDER BY tst_tags.TagTxt", - TstCod); - if ((NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get tags present in a test result"))) + TstCod); + if ((NumRows = DB_QuerySELECT_new (&mysql_res,"can not get tags present in a test result"))) { /***** Write the tags *****/ fprintf (Gbl.F.Out,"