diff --git a/swad_agenda.c b/swad_agenda.c index c087b86fb..ad45dd198 100644 --- a/swad_agenda.c +++ b/swad_agenda.c @@ -1866,7 +1866,7 @@ unsigned Agd_GetNumUsrsWithEvents (Sco_Scope_t Scope) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT_free (Query,&mysql_res,"can not get number of users with events"); @@ -1954,7 +1954,7 @@ unsigned Agd_GetNumEvents (Sco_Scope_t Scope) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT_free (Query,&mysql_res,"can not get number of events"); diff --git a/swad_assignment.c b/swad_assignment.c index 35344ab80..8a829ee46 100644 --- a/swad_assignment.c +++ b/swad_assignment.c @@ -1875,7 +1875,7 @@ unsigned Asg_GetNumCoursesWithAssignments (Sco_Scope_t Scope) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT_free (Query,&mysql_res,"can not get number of courses with assignments"); @@ -1959,7 +1959,7 @@ unsigned Asg_GetNumAssignments (Sco_Scope_t Scope,unsigned *NumNotif) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT_free (Query,&mysql_res,"can not get number of assignments"); diff --git a/swad_attendance.c b/swad_attendance.c index 4ce9c1125..e4b46b53b 100644 --- a/swad_attendance.c +++ b/swad_attendance.c @@ -1760,7 +1760,7 @@ unsigned Att_GetNumCoursesWithAttEvents (Sco_Scope_t Scope) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT_free (Query,&mysql_res,"can not get number of courses with attendance events"); @@ -1833,7 +1833,7 @@ unsigned Att_GetNumAttEvents (Sco_Scope_t Scope,unsigned *NumNotif) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT_free (Query,&mysql_res,"can not get number of attendance events"); diff --git a/swad_changelog.h b/swad_changelog.h index 730ae3541..325a1eee1 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.7.40 (2018-10-24)" +#define Log_PLATFORM_VERSION "SWAD 18.7.41 (2018-10-24)" #define CSS_FILE "swad18.4.css" #define JS_FILE "swad17.17.1.js" /* + Version 18.7.41: Oct 24, 2018 Some sprintf for database queries changed by asprintf. (238125 lines) Version 18.7.40: Oct 24, 2018 Some sprintf for database queries changed by asprintf. (238060 lines) Version 18.7.39: Oct 24, 2018 Some sprintf for database queries changed by asprintf. (238037 lines) Version 18.7.38: Oct 24, 2018 Some sprintf for database queries changed by asprintf. (237986 lines) diff --git a/swad_connected.c b/swad_connected.c index 7220f633b..d19c1e5e1 100644 --- a/swad_connected.c +++ b/swad_connected.c @@ -778,7 +778,7 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } break; @@ -876,7 +876,7 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } break; @@ -1191,7 +1191,7 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } break; diff --git a/swad_degree.c b/swad_degree.c index a233fa0af..7dea14d08 100644 --- a/swad_degree.c +++ b/swad_degree.c @@ -2588,7 +2588,7 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan) } break; default: // There are no administrators in other scopes - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } fprintf (Gbl.F.Out,"" diff --git a/swad_degree_type.c b/swad_degree_type.c index 8f0da3530..7467baf07 100644 --- a/swad_degree_type.c +++ b/swad_degree_type.c @@ -654,7 +654,7 @@ void DT_GetListDegreeTypes (Sco_Scope_t Scope,DT_Order_t Order) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } Gbl.Degs.DegTypes.Num = (unsigned) DB_QuerySELECT_free (Query,&mysql_res,"can not get types of degree"); diff --git a/swad_enrolment.c b/swad_enrolment.c index 930d42fde..541e2a737 100644 --- a/swad_enrolment.c +++ b/swad_enrolment.c @@ -2839,7 +2839,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected) } break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } diff --git a/swad_follow.c b/swad_follow.c index 46e51a06f..424896f8a 100644 --- a/swad_follow.c +++ b/swad_follow.c @@ -1204,7 +1204,7 @@ void Fol_GetAndShowRankingFollowers (void) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } Prf_ShowRankingFigure (Query); diff --git a/swad_game.c b/swad_game.c index ddbd5bdb6..740d944f6 100644 --- a/swad_game.c +++ b/swad_game.c @@ -2132,7 +2132,7 @@ void Gam_RecFormGame (void) NewGame.Cod = Gbl.CurrentCrs.Crs.CrsCod; break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } @@ -3987,7 +3987,7 @@ unsigned Gam_GetNumCoursesWithGames (Sco_Scope_t Scope) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT_free (Query,&mysql_res,"can not get number of courses with games"); @@ -4082,7 +4082,7 @@ unsigned Gam_GetNumGames (Sco_Scope_t Scope) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT_free (Query,&mysql_res,"can not get number of games"); @@ -4192,7 +4192,7 @@ float Gam_GetNumQstsPerCrsGame (Sco_Scope_t Scope) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT_free (Query,&mysql_res,"can not get number of questions per game"); diff --git a/swad_indicator.c b/swad_indicator.c index 6ffbebd5d..529f1d00f 100644 --- a/swad_indicator.c +++ b/swad_indicator.c @@ -536,7 +536,7 @@ static unsigned Ind_GetTableOfCourses (MYSQL_RES **mysql_res) } break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } diff --git a/swad_layout.c b/swad_layout.c index 83890c3e1..a0ae24178 100644 --- a/swad_layout.c +++ b/swad_layout.c @@ -1200,7 +1200,16 @@ void Lay_EndSection (void) void Lay_NotEnoughMemoryExit (void) { - Lay_NotEnoughMemoryExit (); + Lay_ShowErrorAndExit ("Not enough memory."); + } + +/*****************************************************************************/ +/************* Write error message and exit when wrong scope *****************/ +/*****************************************************************************/ + +void Lay_WrongScopeExit (void) + { + Lay_ShowErrorAndExit ("Wrong scope."); } /*****************************************************************************/ diff --git a/swad_layout.h b/swad_layout.h index 3c9bb4c2c..bf5d26710 100644 --- a/swad_layout.h +++ b/swad_layout.h @@ -67,6 +67,7 @@ void Lay_StartSection (const char *SectionId); void Lay_EndSection (void); void Lay_NotEnoughMemoryExit (void); +void Lay_WrongScopeExit (void); void Lay_ShowErrorAndExit (const char *Txt); void Lay_RefreshNotifsAndConnected (void); diff --git a/swad_message.c b/swad_message.c index a513771f1..931ddefe4 100644 --- a/swad_message.c +++ b/swad_message.c @@ -2190,7 +2190,7 @@ unsigned Msg_GetNumMsgsSent (Sco_Scope_t Scope,Msg_Status_t MsgStatus) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } return (unsigned) DB_QueryCOUNT_free (Query,"can not get number of sent messages"); @@ -2282,7 +2282,7 @@ unsigned Msg_GetNumMsgsReceived (Sco_Scope_t Scope,Msg_Status_t MsgStatus) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } break; @@ -2406,7 +2406,7 @@ unsigned Msg_GetNumMsgsReceived (Sco_Scope_t Scope,Msg_Status_t MsgStatus) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } break; diff --git a/swad_network.c b/swad_network.c index a458bf064..f991456a9 100644 --- a/swad_network.c +++ b/swad_network.c @@ -535,7 +535,7 @@ void Net_ShowWebAndSocialNetworksStats (void) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } NumRows = (unsigned) DB_QuerySELECT_free (Query,&mysql_res, diff --git a/swad_notice.c b/swad_notice.c index 5ed3c6496..8f07696f0 100644 --- a/swad_notice.c +++ b/swad_notice.c @@ -889,7 +889,7 @@ unsigned Not_GetNumNotices (Sco_Scope_t Scope,Not_Status_t Status,unsigned *NumN Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT_free (Query,&mysql_res,"can not get number of notices"); @@ -981,7 +981,7 @@ unsigned Not_GetNumNoticesDeleted (Sco_Scope_t Scope,unsigned *NumNotif) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT_free (Query,&mysql_res,"can not get number of deleted notices"); diff --git a/swad_profile.c b/swad_profile.c index 5af4b53a2..9286417fa 100644 --- a/swad_profile.c +++ b/swad_profile.c @@ -332,17 +332,18 @@ bool Prf_ShowUserProfile (struct UsrData *UsrDat) void Prf_ChangeProfileVisibility (void) { extern const char *Pri_VisibilityDB[Pri_NUM_OPTIONS_PRIVACY]; - char Query[128]; + char *Query; /***** Get param with public/private photo *****/ Gbl.Usrs.Me.UsrDat.ProfileVisibility = Pri_GetParamVisibility ("VisPrf"); /***** Store public/private photo in database *****/ - sprintf (Query,"UPDATE usr_data SET ProfileVisibility='%s'" - " WHERE UsrCod=%ld", - Pri_VisibilityDB[Gbl.Usrs.Me.UsrDat.ProfileVisibility], - Gbl.Usrs.Me.UsrDat.UsrCod); - DB_QueryUPDATE (Query,"can not update your preference about public profile visibility"); + if (asprintf (&Query,"UPDATE usr_data SET ProfileVisibility='%s'" + " WHERE UsrCod=%ld", + Pri_VisibilityDB[Gbl.Usrs.Me.UsrDat.ProfileVisibility], + Gbl.Usrs.Me.UsrDat.UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryUPDATE_free (Query,"can not update your preference about public profile visibility"); /***** Show form again *****/ Pre_EditPrefs (); @@ -621,18 +622,19 @@ static void Prf_PutLinkToUpdateAction (Act_Action_t Action,const char *Encrypted void Prf_GetUsrFigures (long UsrCod,struct UsrFigures *UsrFigures) { - char Query[512]; + char *Query; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumRows; /***** Get user's figures from database *****/ - sprintf (Query,"SELECT UNIX_TIMESTAMP(FirstClickTime)," - "DATEDIFF(NOW(),FirstClickTime)+1," - "NumClicks,NumFileViews,NumForPst,NumMsgSnt" - " FROM usr_figures WHERE UsrCod=%ld", - UsrCod); - if ((NumRows = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get user's figures"))) + if (asprintf (&Query,"SELECT UNIX_TIMESTAMP(FirstClickTime)," + "DATEDIFF(NOW(),FirstClickTime)+1," + "NumClicks,NumFileViews,NumForPst,NumMsgSnt" + " FROM usr_figures WHERE UsrCod=%ld", + UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + if ((NumRows = (unsigned) DB_QuerySELECT_free (Query,&mysql_res,"can not get user's figures"))) { /***** Get user's figures *****/ row = mysql_fetch_row (mysql_res); @@ -679,16 +681,17 @@ void Prf_GetUsrFigures (long UsrCod,struct UsrFigures *UsrFigures) static unsigned long Prf_GetRankingFigure (long UsrCod,const char *FieldName) { - char Query[256]; + char *Query; /***** Select number of rows with figure greater than the figure of this user *****/ - sprintf (Query,"SELECT COUNT(*)+1 FROM usr_figures" - " WHERE UsrCod<>%ld" // Really not necessary here - " AND %s>" - "(SELECT %s FROM usr_figures WHERE UsrCod=%ld)", - UsrCod,FieldName,FieldName,UsrCod); - return DB_QueryCOUNT (Query,"can not get ranking using a figure"); + if (asprintf (&Query,"SELECT COUNT(*)+1 FROM usr_figures" + " WHERE UsrCod<>%ld" // Really not necessary here + " AND %s>" + "(SELECT %s FROM usr_figures WHERE UsrCod=%ld)", + UsrCod,FieldName,FieldName,UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + return DB_QueryCOUNT_free (Query,"can not get ranking using a figure"); } /*****************************************************************************/ @@ -697,12 +700,13 @@ static unsigned long Prf_GetRankingFigure (long UsrCod,const char *FieldName) static unsigned long Prf_GetNumUsrsWithFigure (const char *FieldName) { - char Query[128]; + char *Query; /***** Select number of rows with values already calculated *****/ - sprintf (Query,"SELECT COUNT(*) FROM usr_figures WHERE %s>=0", - FieldName); - return DB_QueryCOUNT (Query,"can not get number of users with a figure"); + if (asprintf (&Query,"SELECT COUNT(*) FROM usr_figures WHERE %s>=0", + FieldName) < 0) + Lay_NotEnoughMemoryExit (); + return DB_QueryCOUNT_free (Query,"can not get number of users with a figure"); } /*****************************************************************************/ @@ -711,26 +715,27 @@ static unsigned long Prf_GetNumUsrsWithFigure (const char *FieldName) static unsigned long Prf_GetRankingNumClicksPerDay (long UsrCod) { - char Query[1024]; + char *Query; /***** Select number of rows with number of clicks per day greater than the clicks per day of this user *****/ - sprintf (Query,"SELECT COUNT(*)+1 FROM" - " (SELECT NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1)" - " AS NumClicksPerDay" - " FROM usr_figures" - " WHERE UsrCod<>%ld" // Necessary because the following comparison is not exact in floating point - " AND NumClicks>0" - " AND UNIX_TIMESTAMP(FirstClickTime)>0)" - " AS TableNumClicksPerDay" - " WHERE NumClicksPerDay>" - "(SELECT NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1)" - " FROM usr_figures" - " WHERE UsrCod=%ld" - " AND NumClicks>0" - " AND UNIX_TIMESTAMP(FirstClickTime)>0)", - UsrCod,UsrCod); - return DB_QueryCOUNT (Query,"can not get ranking using number of clicks per day"); + if (asprintf (&Query,"SELECT COUNT(*)+1 FROM" + " (SELECT NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1)" + " AS NumClicksPerDay" + " FROM usr_figures" + " WHERE UsrCod<>%ld" // Necessary because the following comparison is not exact in floating point + " AND NumClicks>0" + " AND UNIX_TIMESTAMP(FirstClickTime)>0)" + " AS TableNumClicksPerDay" + " WHERE NumClicksPerDay>" + "(SELECT NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1)" + " FROM usr_figures" + " WHERE UsrCod=%ld" + " AND NumClicks>0" + " AND UNIX_TIMESTAMP(FirstClickTime)>0)", + UsrCod,UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + return DB_QueryCOUNT_free (Query,"can not get ranking using number of clicks per day"); } /*****************************************************************************/ @@ -739,13 +744,14 @@ static unsigned long Prf_GetRankingNumClicksPerDay (long UsrCod) static unsigned long Prf_GetNumUsrsWithNumClicksPerDay (void) { - char Query[128]; + char *Query; /***** Select number of rows with values already calculated *****/ - sprintf (Query,"SELECT COUNT(*) FROM usr_figures" - " WHERE NumClicks>0" - " AND UNIX_TIMESTAMP(FirstClickTime)>0"); - return DB_QueryCOUNT (Query,"can not get number of users with number of clicks per day"); + if (asprintf (&Query,"SELECT COUNT(*) FROM usr_figures" + " WHERE NumClicks>0" + " AND UNIX_TIMESTAMP(FirstClickTime)>0") < 0) + Lay_NotEnoughMemoryExit (); + return DB_QueryCOUNT_free (Query,"can not get number of users with number of clicks per day"); } /*****************************************************************************/ @@ -839,7 +845,7 @@ bool Prf_GetAndStoreAllUsrFigures (long UsrCod,struct UsrFigures *UsrFigures) static void Prf_GetFirstClickFromLogAndStoreAsUsrFigure (long UsrCod) { - char Query[256]; + char *Query; MYSQL_RES *mysql_res; MYSQL_ROW row; struct UsrFigures UsrFigures; @@ -850,11 +856,12 @@ static void Prf_GetFirstClickFromLogAndStoreAsUsrFigure (long UsrCod) Prf_ResetUsrFigures (&UsrFigures); /***** Get first click from log table *****/ - sprintf (Query,"SELECT UNIX_TIMESTAMP(" - "(SELECT MIN(ClickTime) FROM log_full WHERE UsrCod=%ld)" - ")", - UsrCod); - if (DB_QuerySELECT (Query,&mysql_res,"can not get user's first click")) + if (asprintf (&Query,"SELECT UNIX_TIMESTAMP(" + "(SELECT MIN(ClickTime) FROM log_full WHERE UsrCod=%ld)" + ")", + UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + if (DB_QuerySELECT_free (Query,&mysql_res,"can not get user's first click")) { /* Get first click */ row = mysql_fetch_row (mysql_res); @@ -869,11 +876,12 @@ static void Prf_GetFirstClickFromLogAndStoreAsUsrFigure (long UsrCod) /***** Update first click time in user's figures *****/ if (Prf_CheckIfUsrFiguresExists (UsrCod)) { - sprintf (Query,"UPDATE usr_figures" - " SET FirstClickTime=FROM_UNIXTIME(%ld)" - " WHERE UsrCod=%ld", - (long) UsrFigures.FirstClickTimeUTC,UsrCod); - DB_QueryUPDATE (Query,"can not update user's figures"); + if (asprintf (&Query,"UPDATE usr_figures" + " SET FirstClickTime=FROM_UNIXTIME(%ld)" + " WHERE UsrCod=%ld", + (long) UsrFigures.FirstClickTimeUTC,UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryUPDATE_free (Query,"can not update user's figures"); } else // User entry does not exist Prf_CreateUsrFigures (UsrCod,&UsrFigures,false); @@ -886,7 +894,7 @@ static void Prf_GetFirstClickFromLogAndStoreAsUsrFigure (long UsrCod) static void Prf_GetNumClicksAndStoreAsUsrFigure (long UsrCod) { - char Query[256]; + char *Query; struct UsrFigures UsrFigures; if (Usr_ChkIfUsrCodExists (UsrCod)) @@ -895,17 +903,19 @@ static void Prf_GetNumClicksAndStoreAsUsrFigure (long UsrCod) Prf_ResetUsrFigures (&UsrFigures); /***** Get number of clicks from database *****/ - sprintf (Query,"SELECT COUNT(*) FROM log_full WHERE UsrCod=%ld", - UsrCod); - UsrFigures.NumClicks = (long) DB_QueryCOUNT (Query,"can not get number of clicks"); + if (asprintf (&Query,"SELECT COUNT(*) FROM log_full WHERE UsrCod=%ld", + UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + UsrFigures.NumClicks = (long) DB_QueryCOUNT_free (Query,"can not get number of clicks"); /***** Update number of clicks in user's figures *****/ if (Prf_CheckIfUsrFiguresExists (UsrCod)) { - sprintf (Query,"UPDATE usr_figures SET NumClicks=%ld" - " WHERE UsrCod=%ld", - UsrFigures.NumClicks,UsrCod); - DB_QueryUPDATE (Query,"can not update user's figures"); + if (asprintf (&Query,"UPDATE usr_figures SET NumClicks=%ld" + " WHERE UsrCod=%ld", + UsrFigures.NumClicks,UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryUPDATE_free (Query,"can not update user's figures"); } else // User entry does not exist Prf_CreateUsrFigures (UsrCod,&UsrFigures,false); @@ -918,7 +928,7 @@ static void Prf_GetNumClicksAndStoreAsUsrFigure (long UsrCod) static void Prf_GetNumFileViewsAndStoreAsUsrFigure (long UsrCod) { - char Query[256]; + char *Query; struct UsrFigures UsrFigures; if (Usr_ChkIfUsrCodExists (UsrCod)) @@ -932,10 +942,11 @@ static void Prf_GetNumFileViewsAndStoreAsUsrFigure (long UsrCod) /***** Update number of file views in user's figures *****/ if (Prf_CheckIfUsrFiguresExists (UsrCod)) { - sprintf (Query,"UPDATE usr_figures SET NumFileViews=%ld" - " WHERE UsrCod=%ld", - UsrFigures.NumFileViews,UsrCod); - DB_QueryUPDATE (Query,"can not update user's figures"); + if (asprintf (&Query,"UPDATE usr_figures SET NumFileViews=%ld" + " WHERE UsrCod=%ld", + UsrFigures.NumFileViews,UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryUPDATE_free (Query,"can not update user's figures"); } else // User entry does not exist Prf_CreateUsrFigures (UsrCod,&UsrFigures,false); @@ -948,7 +959,7 @@ static void Prf_GetNumFileViewsAndStoreAsUsrFigure (long UsrCod) static void Prf_GetNumForPstAndStoreAsUsrFigure (long UsrCod) { - char Query[256]; + char *Query; struct UsrFigures UsrFigures; if (Usr_ChkIfUsrCodExists (UsrCod)) @@ -962,10 +973,11 @@ static void Prf_GetNumForPstAndStoreAsUsrFigure (long UsrCod) /***** Update number of forum posts in user's figures *****/ if (Prf_CheckIfUsrFiguresExists (UsrCod)) { - sprintf (Query,"UPDATE usr_figures SET NumForPst=%ld" - " WHERE UsrCod=%ld", - UsrFigures.NumForPst,UsrCod); - DB_QueryUPDATE (Query,"can not update user's figures"); + if (asprintf (&Query,"UPDATE usr_figures SET NumForPst=%ld" + " WHERE UsrCod=%ld", + UsrFigures.NumForPst,UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryUPDATE_free (Query,"can not update user's figures"); } else // User entry does not exist Prf_CreateUsrFigures (UsrCod,&UsrFigures,false); @@ -978,7 +990,7 @@ static void Prf_GetNumForPstAndStoreAsUsrFigure (long UsrCod) static void Prf_GetNumMsgSntAndStoreAsUsrFigure (long UsrCod) { - char Query[256]; + char *Query; struct UsrFigures UsrFigures; if (Usr_ChkIfUsrCodExists (UsrCod)) @@ -992,10 +1004,11 @@ static void Prf_GetNumMsgSntAndStoreAsUsrFigure (long UsrCod) /***** Update number of messages sent in user's figures *****/ if (Prf_CheckIfUsrFiguresExists (UsrCod)) { - sprintf (Query,"UPDATE usr_figures SET NumMsgSnt=%ld" - " WHERE UsrCod=%ld", - UsrFigures.NumMsgSnt,UsrCod); - DB_QueryUPDATE (Query,"can not update user's figures"); + if (asprintf (&Query,"UPDATE usr_figures SET NumMsgSnt=%ld" + " WHERE UsrCod=%ld", + UsrFigures.NumMsgSnt,UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryUPDATE_free (Query,"can not update user's figures"); } else // User entry does not exist Prf_CreateUsrFigures (UsrCod,&UsrFigures,false); @@ -1044,7 +1057,7 @@ static void Prf_ResetUsrFigures (struct UsrFigures *UsrFigures) static void Prf_CreateUsrFigures (long UsrCod,const struct UsrFigures *UsrFigures, bool CreatingMyOwnAccount) { - char Query[512 + Prf_MAX_BYTES_SUBQUERY_FIRST_CLICK_TIME]; + char *Query; char SubQueryFirstClickTime[Prf_MAX_BYTES_SUBQUERY_FIRST_CLICK_TIME + 1]; if (CreatingMyOwnAccount) @@ -1056,17 +1069,18 @@ static void Prf_CreateUsrFigures (long UsrCod,const struct UsrFigures *UsrFigure (long) UsrFigures->FirstClickTimeUTC); // 0 ==> unknown first click time or user never logged /***** Create user's figures *****/ - sprintf (Query,"INSERT INTO usr_figures" - " (UsrCod,FirstClickTime,NumClicks,NumFileViews,NumForPst,NumMsgSnt)" - " VALUES" - " (%ld,%s,%ld,%ld,%ld,%ld)", - UsrCod, - SubQueryFirstClickTime, - UsrFigures->NumClicks, // -1L ==> unknown number of clicks - UsrFigures->NumFileViews, // -1L ==> unknown number of file views - UsrFigures->NumForPst, // -1L ==> unknown number of forum posts - UsrFigures->NumMsgSnt); // -1L ==> unknown number of messages sent - DB_QueryINSERT (Query,"can not create user's figures"); + if (asprintf (&Query,"INSERT INTO usr_figures" + " (UsrCod,FirstClickTime,NumClicks,NumFileViews,NumForPst,NumMsgSnt)" + " VALUES" + " (%ld,%s,%ld,%ld,%ld,%ld)", + UsrCod, + SubQueryFirstClickTime, + UsrFigures->NumClicks, // -1L ==> unknown number of clicks + UsrFigures->NumFileViews, // -1L ==> unknown number of file views + UsrFigures->NumForPst, // -1L ==> unknown number of forum posts + UsrFigures->NumMsgSnt) < 0) // -1L ==> unknown number of messages sent + Lay_NotEnoughMemoryExit (); + DB_QueryINSERT_free (Query,"can not create user's figures"); } /*****************************************************************************/ @@ -1075,12 +1089,13 @@ static void Prf_CreateUsrFigures (long UsrCod,const struct UsrFigures *UsrFigure void Prf_RemoveUsrFigures (long UsrCod) { - char Query[128]; + char *Query; /***** Remove user's figures *****/ - sprintf (Query,"DELETE FROM usr_figures WHERE UsrCod=%ld", - UsrCod); - DB_QueryDELETE (Query,"can not delete user's figures"); + if (asprintf (&Query,"DELETE FROM usr_figures WHERE UsrCod=%ld", + UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryDELETE_free (Query,"can not delete user's figures"); } /*****************************************************************************/ @@ -1089,11 +1104,12 @@ void Prf_RemoveUsrFigures (long UsrCod) static bool Prf_CheckIfUsrFiguresExists (long UsrCod) { - char Query[128]; + char *Query; - sprintf (Query,"SELECT COUNT(*) FROM usr_figures WHERE UsrCod=%ld", - UsrCod); - return (DB_QueryCOUNT (Query,"can not get user's first click") != 0); + if (asprintf (&Query,"SELECT COUNT(*) FROM usr_figures WHERE UsrCod=%ld", + UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + return (DB_QueryCOUNT_free (Query,"can not get user's first click") != 0); } /*****************************************************************************/ @@ -1102,14 +1118,15 @@ static bool Prf_CheckIfUsrFiguresExists (long UsrCod) void Prf_IncrementNumClicksUsr (long UsrCod) { - char Query[256]; + char *Query; /***** Increment number of clicks *****/ // If NumClicks < 0 ==> not yet calculated, so do nothing - sprintf (Query,"UPDATE IGNORE usr_figures SET NumClicks=NumClicks+1" - " WHERE UsrCod=%ld AND NumClicks>=0", - UsrCod); - DB_QueryINSERT (Query,"can not increment user's clicks"); + if (asprintf (&Query,"UPDATE IGNORE usr_figures SET NumClicks=NumClicks+1" + " WHERE UsrCod=%ld AND NumClicks>=0", + UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryINSERT_free (Query,"can not increment user's clicks"); } /*****************************************************************************/ @@ -1118,14 +1135,15 @@ void Prf_IncrementNumClicksUsr (long UsrCod) void Prf_IncrementNumFileViewsUsr (long UsrCod) { - char Query[256]; + char *Query; /***** Increment number of file views *****/ // If NumFileViews < 0 ==> not yet calculated, so do nothing - sprintf (Query,"UPDATE IGNORE usr_figures SET NumFileViews=NumFileViews+1" - " WHERE UsrCod=%ld AND NumFileViews>=0", - UsrCod); - DB_QueryINSERT (Query,"can not increment user's file views"); + if (asprintf (&Query,"UPDATE IGNORE usr_figures SET NumFileViews=NumFileViews+1" + " WHERE UsrCod=%ld AND NumFileViews>=0", + UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryINSERT_free (Query,"can not increment user's file views"); } /*****************************************************************************/ @@ -1134,14 +1152,15 @@ void Prf_IncrementNumFileViewsUsr (long UsrCod) void Prf_IncrementNumForPstUsr (long UsrCod) { - char Query[256]; + char *Query; /***** Increment number of forum posts *****/ // If NumForPst < 0 ==> not yet calculated, so do nothing - sprintf (Query,"UPDATE IGNORE usr_figures SET NumForPst=NumForPst+1" - " WHERE UsrCod=%ld AND NumForPst>=0", - UsrCod); - DB_QueryINSERT (Query,"can not increment user's forum posts"); + if (asprintf (&Query,"UPDATE IGNORE usr_figures SET NumForPst=NumForPst+1" + " WHERE UsrCod=%ld AND NumForPst>=0", + UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryINSERT_free (Query,"can not increment user's forum posts"); } /*****************************************************************************/ @@ -1150,14 +1169,15 @@ void Prf_IncrementNumForPstUsr (long UsrCod) void Prf_IncrementNumMsgSntUsr (long UsrCod) { - char Query[256]; + char *Query; /***** Increment number of messages sent *****/ // If NumMsgSnt < 0 ==> not yet calculated, so do nothing - sprintf (Query,"UPDATE IGNORE usr_figures SET NumMsgSnt=NumMsgSnt+1" - " WHERE UsrCod=%ld AND NumMsgSnt>=0", - UsrCod); - DB_QueryINSERT (Query,"can not increment user's messages sent"); + if (asprintf (&Query,"UPDATE IGNORE usr_figures SET NumMsgSnt=NumMsgSnt+1" + " WHERE UsrCod=%ld AND NumMsgSnt>=0", + UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryINSERT_free (Query,"can not increment user's messages sent"); } /*****************************************************************************/ @@ -1277,7 +1297,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName) Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } Prf_ShowRankingFigure (Query); @@ -1351,7 +1371,7 @@ void Prf_ShowRankingFigure (const char *Query) void Prf_GetAndShowRankingClicksPerDay (void) { - char Query[1024]; + char *Query; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumUsrs; @@ -1365,94 +1385,100 @@ void Prf_GetAndShowRankingClicksPerDay (void) switch (Gbl.Scope.Current) { case Sco_SCOPE_SYS: - sprintf (Query,"SELECT UsrCod," - "NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1) AS NumClicksPerDay" - " FROM usr_figures" - " WHERE NumClicks>0" - " AND UNIX_TIMESTAMP(FirstClickTime)>0" - " AND UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" - " ORDER BY NumClicksPerDay DESC,UsrCod LIMIT 100"); + if (asprintf (&Query,"SELECT UsrCod," + "NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1) AS NumClicksPerDay" + " FROM usr_figures" + " WHERE NumClicks>0" + " AND UNIX_TIMESTAMP(FirstClickTime)>0" + " AND UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" + " ORDER BY NumClicksPerDay DESC,UsrCod LIMIT 100") < 0) + Lay_NotEnoughMemoryExit (); break; case Sco_SCOPE_CTY: - sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod," - "usr_figures.NumClicks/(DATEDIFF(NOW()," - "usr_figures.FirstClickTime)+1) AS NumClicksPerDay" - " FROM institutions,centres,degrees,courses,crs_usr,usr_figures" - " 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" - " AND crs_usr.UsrCod=usr_figures.UsrCod" - " AND usr_figures.NumClicks>0" - " AND UNIX_TIMESTAMP(usr_figures.FirstClickTime)>0" - " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" - " ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100", - Gbl.CurrentCty.Cty.CtyCod); + if (asprintf (&Query,"SELECT DISTINCTROW usr_figures.UsrCod," + "usr_figures.NumClicks/(DATEDIFF(NOW()," + "usr_figures.FirstClickTime)+1) AS NumClicksPerDay" + " FROM institutions,centres,degrees,courses,crs_usr,usr_figures" + " 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" + " AND crs_usr.UsrCod=usr_figures.UsrCod" + " AND usr_figures.NumClicks>0" + " AND UNIX_TIMESTAMP(usr_figures.FirstClickTime)>0" + " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" + " ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100", + Gbl.CurrentCty.Cty.CtyCod) < 0) + Lay_NotEnoughMemoryExit (); break; case Sco_SCOPE_INS: - sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod," - "usr_figures.NumClicks/(DATEDIFF(NOW()," - "usr_figures.FirstClickTime)+1) AS NumClicksPerDay" - " FROM centres,degrees,courses,crs_usr,usr_figures" - " WHERE centres.InsCod=%ld" - " AND centres.CtrCod=degrees.CtrCod" - " AND degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=usr_figures.UsrCod" - " AND usr_figures.NumClicks>0" - " AND UNIX_TIMESTAMP(usr_figures.FirstClickTime)>0" - " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" - " ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100", - Gbl.CurrentIns.Ins.InsCod); + if (asprintf (&Query,"SELECT DISTINCTROW usr_figures.UsrCod," + "usr_figures.NumClicks/(DATEDIFF(NOW()," + "usr_figures.FirstClickTime)+1) AS NumClicksPerDay" + " FROM centres,degrees,courses,crs_usr,usr_figures" + " WHERE centres.InsCod=%ld" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=crs_usr.CrsCod" + " AND crs_usr.UsrCod=usr_figures.UsrCod" + " AND usr_figures.NumClicks>0" + " AND UNIX_TIMESTAMP(usr_figures.FirstClickTime)>0" + " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" + " ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100", + Gbl.CurrentIns.Ins.InsCod) < 0) + Lay_NotEnoughMemoryExit (); break; case Sco_SCOPE_CTR: - sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod," - "usr_figures.NumClicks/(DATEDIFF(NOW()," - "usr_figures.FirstClickTime)+1) AS NumClicksPerDay" - " FROM degrees,courses,crs_usr,usr_figures" - " WHERE degrees.CtrCod=%ld" - " AND degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=usr_figures.UsrCod" - " AND usr_figures.NumClicks>0" - " AND UNIX_TIMESTAMP(usr_figures.FirstClickTime)>0" - " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" - " ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100", - Gbl.CurrentCtr.Ctr.CtrCod); + if (asprintf (&Query,"SELECT DISTINCTROW usr_figures.UsrCod," + "usr_figures.NumClicks/(DATEDIFF(NOW()," + "usr_figures.FirstClickTime)+1) AS NumClicksPerDay" + " FROM degrees,courses,crs_usr,usr_figures" + " WHERE degrees.CtrCod=%ld" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=crs_usr.CrsCod" + " AND crs_usr.UsrCod=usr_figures.UsrCod" + " AND usr_figures.NumClicks>0" + " AND UNIX_TIMESTAMP(usr_figures.FirstClickTime)>0" + " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" + " ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100", + Gbl.CurrentCtr.Ctr.CtrCod) < 0) + Lay_NotEnoughMemoryExit (); break; case Sco_SCOPE_DEG: - sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod," - "usr_figures.NumClicks/(DATEDIFF(NOW()," - "usr_figures.FirstClickTime)+1) AS NumClicksPerDay" - " FROM courses,crs_usr,usr_figures" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=crs_usr.CrsCod" - " AND crs_usr.UsrCod=usr_figures.UsrCod" - " AND usr_figures.NumClicks>0" - " AND UNIX_TIMESTAMP(usr_figures.FirstClickTime)>0" - " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" - " ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100", - Gbl.CurrentDeg.Deg.DegCod); + if (asprintf (&Query,"SELECT DISTINCTROW usr_figures.UsrCod," + "usr_figures.NumClicks/(DATEDIFF(NOW()," + "usr_figures.FirstClickTime)+1) AS NumClicksPerDay" + " FROM courses,crs_usr,usr_figures" + " WHERE courses.DegCod=%ld" + " AND courses.CrsCod=crs_usr.CrsCod" + " AND crs_usr.UsrCod=usr_figures.UsrCod" + " AND usr_figures.NumClicks>0" + " AND UNIX_TIMESTAMP(usr_figures.FirstClickTime)>0" + " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" + " ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100", + Gbl.CurrentDeg.Deg.DegCod) < 0) + Lay_NotEnoughMemoryExit (); break; case Sco_SCOPE_CRS: - sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod," - "usr_figures.NumClicks/(DATEDIFF(NOW()," - "usr_figures.FirstClickTime)+1) AS NumClicksPerDay" - " FROM crs_usr,usr_figures" - " WHERE crs_usr.CrsCod=%ld" - " AND crs_usr.UsrCod=usr_figures.UsrCod" - " AND usr_figures.NumClicks>0" - " AND UNIX_TIMESTAMP(usr_figures.FirstClickTime)>0" - " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" - " ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100", - Gbl.CurrentCrs.Crs.CrsCod); + if (asprintf (&Query,"SELECT DISTINCTROW usr_figures.UsrCod," + "usr_figures.NumClicks/(DATEDIFF(NOW()," + "usr_figures.FirstClickTime)+1) AS NumClicksPerDay" + " FROM crs_usr,usr_figures" + " WHERE crs_usr.CrsCod=%ld" + " AND crs_usr.UsrCod=usr_figures.UsrCod" + " AND usr_figures.NumClicks>0" + " AND UNIX_TIMESTAMP(usr_figures.FirstClickTime)>0" + " AND usr_figures.UsrCod NOT IN (SELECT UsrCod FROM usr_banned)" + " ORDER BY NumClicksPerDay DESC,usr_figures.UsrCod LIMIT 100", + Gbl.CurrentCrs.Crs.CrsCod) < 0) + Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } - NumUsrs = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get ranking"); + NumUsrs = (unsigned) DB_QuerySELECT_free (Query,&mysql_res,"can not get ranking"); if (NumUsrs) { /***** Initialize structure with user's data *****/ diff --git a/swad_project.c b/swad_project.c index 71f70c5f9..d2e403a6f 100644 --- a/swad_project.c +++ b/swad_project.c @@ -25,8 +25,10 @@ /********************************* Headers ***********************************/ /*****************************************************************************/ +#define _GNU_SOURCE // For asprintf #include // For PATH_MAX #include // For NULL +#include // For asprintf #include // For calloc #include // For string functions @@ -1797,20 +1799,21 @@ static void Prj_ShowTableAllProjectsMembersWithARole (const struct Project *Prj, static unsigned Prj_GetUsrsInPrj (long PrjCod,Prj_RoleInProject_t RoleInProject, MYSQL_RES **mysql_res) { - char Query[1024]; + char *Query; /***** Get users in project from database *****/ - sprintf (Query,"SELECT prj_usr.UsrCod," - "usr_data.Surname1 AS S1," - "usr_data.Surname2 AS S2," - "usr_data.FirstName AS FN" - " FROM prj_usr,usr_data" - " WHERE prj_usr.PrjCod=%ld AND RoleInProject=%u" - " AND prj_usr.UsrCod=usr_data.UsrCod" - " ORDER BY S1,S2,FN", - PrjCod,(unsigned) RoleInProject); - return (unsigned) DB_QuerySELECT (Query,mysql_res, - "can not get users in project"); + if (asprintf (&Query,"SELECT prj_usr.UsrCod," + "usr_data.Surname1 AS S1," + "usr_data.Surname2 AS S2," + "usr_data.FirstName AS FN" + " FROM prj_usr,usr_data" + " WHERE prj_usr.PrjCod=%ld AND RoleInProject=%u" + " AND prj_usr.UsrCod=usr_data.UsrCod" + " ORDER BY S1,S2,FN", + PrjCod,(unsigned) RoleInProject) < 0) + Lay_NotEnoughMemoryExit (); + return (unsigned) DB_QuerySELECT_free (Query,mysql_res, + "can not get users in project"); } /*****************************************************************************/ @@ -1825,7 +1828,7 @@ void Prj_FlushCacheMyRoleInProject (void) Prj_RoleInProject_t Prj_GetMyRoleInProject (long PrjCod) { - char Query[256]; + char *Query; MYSQL_RES *mysql_res; MYSQL_ROW row; @@ -1842,10 +1845,11 @@ Prj_RoleInProject_t Prj_GetMyRoleInProject (long PrjCod) The result of the query will have one row or none *****/ Gbl.Cache.MyRoleInProject.PrjCod = PrjCod; Gbl.Cache.MyRoleInProject.RoleInProject = Prj_ROLE_UNK; - sprintf (Query,"SELECT RoleInProject FROM prj_usr" - " WHERE PrjCod=%ld AND UsrCod=%ld", - PrjCod,Gbl.Usrs.Me.UsrDat.UsrCod); - if (DB_QuerySELECT (Query,&mysql_res,"can not get my role in project")) + if (asprintf (&Query,"SELECT RoleInProject FROM prj_usr" + " WHERE PrjCod=%ld AND UsrCod=%ld", + PrjCod,Gbl.Usrs.Me.UsrDat.UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + if (DB_QuerySELECT_free (Query,&mysql_res,"can not get my role in project")) { row = mysql_fetch_row (mysql_res); Gbl.Cache.MyRoleInProject.RoleInProject = Prj_ConvertUnsignedStrToRoleInProject (row[0]); @@ -1950,7 +1954,7 @@ static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject) long PrjCod; struct ListUsrCods ListUsrCods; unsigned NumUsr; - char Query[512]; + char *Query; bool ItsMe; /***** Get project code *****/ @@ -1972,12 +1976,14 @@ static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject) Usr_GetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat); /* Add user to project */ - sprintf (Query,"REPLACE INTO prj_usr" - " (PrjCod,RoleInProject,UsrCod)" - " VALUES" - " (%ld,%u,%ld)", - PrjCod,(unsigned) RoleInProject,Gbl.Usrs.Other.UsrDat.UsrCod); - DB_QueryREPLACE (Query,"can not add user to project"); + if (asprintf (&Query,"REPLACE INTO prj_usr" + " (PrjCod,RoleInProject,UsrCod)" + " VALUES" + " (%ld,%u,%ld)", + PrjCod,(unsigned) RoleInProject, + Gbl.Usrs.Other.UsrDat.UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryREPLACE_free (Query,"can not add user to project"); /***** Flush cache *****/ ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod); @@ -2117,7 +2123,7 @@ static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject) extern const char *Txt_THE_USER_X_has_been_removed_as_a_Y_from_the_project_Z; extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT]; extern const char *Txt_User_not_found_or_you_do_not_have_permission_; - char Query[256]; + char *Query; struct Project Prj; bool ItsMe; @@ -2138,12 +2144,13 @@ static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject) if (Prj_CheckIfICanEditProject (Prj.PrjCod)) { /***** Remove user from the table of project-users *****/ - sprintf (Query,"DELETE FROM prj_usr" - " WHERE PrjCod=%ld AND RoleInProject=%u AND UsrCod=%ld", - Prj.PrjCod, - (unsigned) RoleInProject, - Gbl.Usrs.Other.UsrDat.UsrCod); - DB_QueryDELETE (Query,"can not remove a user from a project"); + if (asprintf (&Query,"DELETE FROM prj_usr" + " WHERE PrjCod=%ld AND RoleInProject=%u AND UsrCod=%ld", + Prj.PrjCod, + (unsigned) RoleInProject, + Gbl.Usrs.Other.UsrDat.UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryDELETE_free (Query,"can not remove a user from a project"); /***** Flush cache *****/ ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod); @@ -2288,7 +2295,7 @@ void Prj_GetListProjects (void) char HidVisSubQuery[Prj_MAX_BYTES_SUBQUERY]; char DptCodSubQuery[Prj_MAX_BYTES_SUBQUERY]; char OrderBySubQuery[Prj_MAX_BYTES_SUBQUERY]; - char Query[512 * Prj_MAX_BYTES_SUBQUERY * 4]; + char *Query; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned long NumRows; @@ -2389,31 +2396,33 @@ void Prj_GetListProjects (void) case Prj_ORDER_START_TIME: case Prj_ORDER_END_TIME: case Prj_ORDER_TITLE: - sprintf (Query,"SELECT projects.PrjCod" - " FROM projects,prj_usr" - " WHERE projects.CrsCod=%ld" - "%s%s%s" - " AND projects.PrjCod=prj_usr.PrjCod" - " AND prj_usr.UsrCod=%ld" - " ORDER BY %s", - Gbl.CurrentCrs.Crs.CrsCod, - PreNonSubQuery,HidVisSubQuery,DptCodSubQuery, - Gbl.Usrs.Me.UsrDat.UsrCod, - OrderBySubQuery); + if (asprintf (&Query,"SELECT projects.PrjCod" + " FROM projects,prj_usr" + " WHERE projects.CrsCod=%ld" + "%s%s%s" + " AND projects.PrjCod=prj_usr.PrjCod" + " AND prj_usr.UsrCod=%ld" + " ORDER BY %s", + Gbl.CurrentCrs.Crs.CrsCod, + PreNonSubQuery,HidVisSubQuery,DptCodSubQuery, + Gbl.Usrs.Me.UsrDat.UsrCod, + OrderBySubQuery) < 0) + Lay_NotEnoughMemoryExit (); break; case Prj_ORDER_DEPARTMENT: - sprintf (Query,"SELECT projects.PrjCod" - " FROM prj_usr,projects LEFT JOIN departments" - " ON projects.DptCod=departments.DptCod" - " WHERE projects.CrsCod=%ld" - "%s%s%s" - " AND projects.PrjCod=prj_usr.PrjCod" - " AND prj_usr.UsrCod=%ld" - " ORDER BY %s", - Gbl.CurrentCrs.Crs.CrsCod, - PreNonSubQuery,HidVisSubQuery,DptCodSubQuery, - Gbl.Usrs.Me.UsrDat.UsrCod, - OrderBySubQuery); + if (asprintf (&Query,"SELECT projects.PrjCod" + " FROM prj_usr,projects LEFT JOIN departments" + " ON projects.DptCod=departments.DptCod" + " WHERE projects.CrsCod=%ld" + "%s%s%s" + " AND projects.PrjCod=prj_usr.PrjCod" + " AND prj_usr.UsrCod=%ld" + " ORDER BY %s", + Gbl.CurrentCrs.Crs.CrsCod, + PreNonSubQuery,HidVisSubQuery,DptCodSubQuery, + Gbl.Usrs.Me.UsrDat.UsrCod, + OrderBySubQuery) < 0) + Lay_NotEnoughMemoryExit (); break; } else // Gbl.Prjs.My_All == Prj_ALL_PROJECTS @@ -2422,29 +2431,31 @@ void Prj_GetListProjects (void) case Prj_ORDER_START_TIME: case Prj_ORDER_END_TIME: case Prj_ORDER_TITLE: - sprintf (Query,"SELECT projects.PrjCod" - " FROM projects" - " WHERE projects.CrsCod=%ld" - "%s%s%s" - " ORDER BY %s", - Gbl.CurrentCrs.Crs.CrsCod, - PreNonSubQuery,HidVisSubQuery,DptCodSubQuery, - OrderBySubQuery); + if (asprintf (&Query,"SELECT projects.PrjCod" + " FROM projects" + " WHERE projects.CrsCod=%ld" + "%s%s%s" + " ORDER BY %s", + Gbl.CurrentCrs.Crs.CrsCod, + PreNonSubQuery,HidVisSubQuery,DptCodSubQuery, + OrderBySubQuery) < 0) + Lay_NotEnoughMemoryExit (); break; case Prj_ORDER_DEPARTMENT: - sprintf (Query,"SELECT projects.PrjCod" - " FROM projects LEFT JOIN departments" - " ON projects.DptCod=departments.DptCod" - " WHERE projects.CrsCod=%ld" - "%s%s%s" - " ORDER BY %s", - Gbl.CurrentCrs.Crs.CrsCod, - PreNonSubQuery,HidVisSubQuery,DptCodSubQuery, - OrderBySubQuery); + if (asprintf (&Query,"SELECT projects.PrjCod" + " FROM projects LEFT JOIN departments" + " ON projects.DptCod=departments.DptCod" + " WHERE projects.CrsCod=%ld" + "%s%s%s" + " ORDER BY %s", + Gbl.CurrentCrs.Crs.CrsCod, + PreNonSubQuery,HidVisSubQuery,DptCodSubQuery, + OrderBySubQuery) < 0) + Lay_NotEnoughMemoryExit (); break; } - NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get projects"); + NumRows = DB_QuerySELECT_free (Query,&mysql_res,"can not get projects"); if (NumRows) // Projects found... { @@ -2481,7 +2492,7 @@ void Prj_GetListProjects (void) long Prj_GetCourseOfProject (long PrjCod) { - char Query[128]; + char *Query; MYSQL_RES *mysql_res; MYSQL_ROW row; long CrsCod = -1L; @@ -2489,8 +2500,10 @@ long Prj_GetCourseOfProject (long PrjCod) if (PrjCod > 0) { /***** Get course code from database *****/ - sprintf (Query,"SELECT CrsCod FROM projects WHERE PrjCod=%ld",PrjCod); - if (DB_QuerySELECT (Query,&mysql_res,"can not get project course")) // Project found... + if (asprintf (&Query,"SELECT CrsCod FROM projects WHERE PrjCod=%ld", + PrjCod) < 0) + Lay_NotEnoughMemoryExit (); + if (DB_QuerySELECT_free (Query,&mysql_res,"can not get project course")) // Project found... { /* Get row */ row = mysql_fetch_row (mysql_res); @@ -2512,18 +2525,19 @@ long Prj_GetCourseOfProject (long PrjCod) void Prj_GetDataOfProjectByCod (struct Project *Prj) { - char Query[1024]; + char *Query; if (Prj->PrjCod > 0) { /***** Build query *****/ - sprintf (Query,"SELECT PrjCod,CrsCod,DptCod,Hidden,Preassigned,NumStds,Proposal," - "UNIX_TIMESTAMP(CreatTime)," - "UNIX_TIMESTAMP(ModifTime)," - "Title,Description,Knowledge,Materials,URL" - " FROM projects" - " WHERE PrjCod=%ld AND CrsCod=%ld", - Prj->PrjCod,Gbl.CurrentCrs.Crs.CrsCod); + if (asprintf (&Query,"SELECT PrjCod,CrsCod,DptCod,Hidden,Preassigned,NumStds,Proposal," + "UNIX_TIMESTAMP(CreatTime)," + "UNIX_TIMESTAMP(ModifTime)," + "Title,Description,Knowledge,Materials,URL" + " FROM projects" + " WHERE PrjCod=%ld AND CrsCod=%ld", + Prj->PrjCod,Gbl.CurrentCrs.Crs.CrsCod) < 0) + Lay_NotEnoughMemoryExit (); /* row[ 0]: PrjCod row[ 1]: CrsCod @@ -2761,7 +2775,7 @@ void Prj_ReqRemProject (void) void Prj_RemoveProject (void) { extern const char *Txt_Project_X_removed; - char Query[256]; + char *Query; struct Project Prj; char PathRelPrj[PATH_MAX + 1]; @@ -2779,20 +2793,22 @@ void Prj_RemoveProject (void) if (Prj_CheckIfICanEditProject (Prj.PrjCod)) { /***** Remove users in project *****/ - sprintf (Query,"DELETE FROM prj_usr USING projects,prj_usr" - " WHERE projects.PrjCod=%ld AND projects.CrsCod=%ld" - " AND projects.PrjCod=prj_usr.PrjCod", - Prj.PrjCod,Gbl.CurrentCrs.Crs.CrsCod); - DB_QueryDELETE (Query,"can not remove project"); + if (asprintf (&Query,"DELETE FROM prj_usr USING projects,prj_usr" + " WHERE projects.PrjCod=%ld AND projects.CrsCod=%ld" + " AND projects.PrjCod=prj_usr.PrjCod", + Prj.PrjCod,Gbl.CurrentCrs.Crs.CrsCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryDELETE_free (Query,"can not remove project"); /***** Flush cache *****/ Prj_FlushCacheMyRoleInProject (); /***** Remove project *****/ - sprintf (Query,"DELETE FROM projects" - " WHERE PrjCod=%ld AND CrsCod=%ld", - Prj.PrjCod,Gbl.CurrentCrs.Crs.CrsCod); - DB_QueryDELETE (Query,"can not remove project"); + if (asprintf (&Query,"DELETE FROM projects" + " WHERE PrjCod=%ld AND CrsCod=%ld", + Prj.PrjCod,Gbl.CurrentCrs.Crs.CrsCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryDELETE_free (Query,"can not remove project"); /***** Remove information related to files in project *****/ Brw_RemovePrjFilesFromDB (Prj.PrjCod); @@ -2827,7 +2843,7 @@ void Prj_RemoveProject (void) void Prj_HideProject (void) { extern const char *Txt_Project_X_is_now_hidden; - char Query[512]; + char *Query; struct Project Prj; /***** Allocate memory for the project *****/ @@ -2844,10 +2860,11 @@ void Prj_HideProject (void) if (Prj_CheckIfICanEditProject (Prj.PrjCod)) { /***** Hide project *****/ - sprintf (Query,"UPDATE projects SET Hidden='Y'" - " WHERE PrjCod=%ld AND CrsCod=%ld", - Prj.PrjCod,Gbl.CurrentCrs.Crs.CrsCod); - DB_QueryUPDATE (Query,"can not hide project"); + if (asprintf (&Query,"UPDATE projects SET Hidden='Y'" + " WHERE PrjCod=%ld AND CrsCod=%ld", + Prj.PrjCod,Gbl.CurrentCrs.Crs.CrsCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryUPDATE_free (Query,"can not hide project"); /***** Write message to show the change made *****/ snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt), @@ -2872,7 +2889,7 @@ void Prj_HideProject (void) void Prj_ShowProject (void) { extern const char *Txt_Project_X_is_now_visible; - char Query[512]; + char *Query; struct Project Prj; /***** Allocate memory for the project *****/ @@ -2889,10 +2906,11 @@ void Prj_ShowProject (void) if (Prj_CheckIfICanEditProject (Prj.PrjCod)) { /***** Show project *****/ - sprintf (Query,"UPDATE projects SET Hidden='N'" - " WHERE PrjCod=%ld AND CrsCod=%ld", - Prj.PrjCod,Gbl.CurrentCrs.Crs.CrsCod); - DB_QueryUPDATE (Query,"can not show project"); + if (asprintf (&Query,"UPDATE projects SET Hidden='N'" + " WHERE PrjCod=%ld AND CrsCod=%ld", + Prj.PrjCod,Gbl.CurrentCrs.Crs.CrsCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryUPDATE_free (Query,"can not show project"); /***** Write message to show the change made *****/ snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt), @@ -3349,50 +3367,49 @@ void Prj_RecFormProject (void) static void Prj_CreateProject (struct Project *Prj) { - char Query[2048 + - Prj_MAX_BYTES_PROJECT_TITLE + - Cns_MAX_BYTES_TEXT * 3 + - Cns_MAX_BYTES_WWW]; + char *Query; /***** Set dates to now *****/ Prj->CreatTime = Prj->ModifTime = Gbl.StartExecutionTimeUTC; /***** Create a new project *****/ - sprintf (Query,"INSERT INTO projects" - " (CrsCod,DptCod,Hidden,Preassigned,NumStds,Proposal," - "CreatTime,ModifTime," - "Title,Description,Knowledge,Materials,URL)" - " VALUES" - " (%ld,%ld,'%c','%c',%u,'%s'," - "FROM_UNIXTIME(%ld),FROM_UNIXTIME(%ld)," - "'%s','%s','%s','%s','%s')", - Gbl.CurrentCrs.Crs.CrsCod, - Prj->DptCod, - Prj->Hidden == Prj_HIDDEN ? 'Y' : - 'N', - Prj->Preassigned == Prj_PREASSIGNED ? 'Y' : - 'N', - Prj->NumStds, - Prj_Proposal_DB[Prj->Proposal], - Prj->CreatTime, - Prj->ModifTime, - Prj->Title, - Prj->Description, - Prj->Knowledge, - Prj->Materials, - Prj->URL); - Prj->PrjCod = DB_QueryINSERTandReturnCode (Query,"can not create new project"); + if (asprintf (&Query,"INSERT INTO projects" + " (CrsCod,DptCod,Hidden,Preassigned,NumStds,Proposal," + "CreatTime,ModifTime," + "Title,Description,Knowledge,Materials,URL)" + " VALUES" + " (%ld,%ld,'%c','%c',%u,'%s'," + "FROM_UNIXTIME(%ld),FROM_UNIXTIME(%ld)," + "'%s','%s','%s','%s','%s')", + Gbl.CurrentCrs.Crs.CrsCod, + Prj->DptCod, + Prj->Hidden == Prj_HIDDEN ? 'Y' : + 'N', + Prj->Preassigned == Prj_PREASSIGNED ? 'Y' : + 'N', + Prj->NumStds, + Prj_Proposal_DB[Prj->Proposal], + Prj->CreatTime, + Prj->ModifTime, + Prj->Title, + Prj->Description, + Prj->Knowledge, + Prj->Materials, + Prj->URL) < 0) + Lay_NotEnoughMemoryExit (); + Prj->PrjCod = DB_QueryINSERTandReturnCode_free (Query,"can not create new project"); /***** Insert creator as first tutor *****/ - sprintf (Query,"INSERT INTO prj_usr" - " (PrjCod,RoleInProject,UsrCod)" - " VALUES" - " (%ld,%u,%ld)", - Prj->PrjCod, - (unsigned) Prj_ROLE_TUT, - Gbl.Usrs.Me.UsrDat.UsrCod); - DB_QueryINSERT (Query,"can not add tutor"); + if (asprintf (&Query,"INSERT INTO prj_usr" + " (PrjCod,RoleInProject,UsrCod)" + " VALUES" + " (%ld,%u,%ld)", + Prj->PrjCod, + (unsigned) Prj_ROLE_TUT, + Gbl.Usrs.Me.UsrDat.UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryINSERT_free (Query,"can not add tutor"); /***** Flush cache *****/ Prj_FlushCacheMyRoleInProject (); @@ -3404,36 +3421,34 @@ static void Prj_CreateProject (struct Project *Prj) static void Prj_UpdateProject (struct Project *Prj) { - char Query[1024 + - Prj_MAX_BYTES_PROJECT_TITLE + - Cns_MAX_BYTES_TEXT*3 + - Cns_MAX_BYTES_WWW]; + char *Query; /***** Adjust date of last edition to now *****/ Prj->ModifTime = Gbl.StartExecutionTimeUTC; /***** Update the data of the project *****/ - sprintf (Query,"UPDATE projects SET " - "DptCod=%ld,Hidden='%c',Preassigned='%c',NumStds=%u,Proposal='%s'," - "ModifTime=FROM_UNIXTIME(%ld)," - "Title='%s'," - "Description='%s',Knowledge='%s',Materials='%s',URL='%s'" - " WHERE PrjCod=%ld AND CrsCod=%ld", - Prj->DptCod, - Prj->Hidden == Prj_HIDDEN ? 'Y' : - 'N', - Prj->Preassigned == Prj_PREASSIGNED ? 'Y' : - 'N', - Prj->NumStds, - Prj_Proposal_DB[Prj->Proposal], - Prj->ModifTime, - Prj->Title, - Prj->Description, - Prj->Knowledge, - Prj->Materials, - Prj->URL, - Prj->PrjCod,Gbl.CurrentCrs.Crs.CrsCod); - DB_QueryUPDATE (Query,"can not update project"); + if (asprintf (&Query,"UPDATE projects SET " + "DptCod=%ld,Hidden='%c',Preassigned='%c',NumStds=%u,Proposal='%s'," + "ModifTime=FROM_UNIXTIME(%ld)," + "Title='%s'," + "Description='%s',Knowledge='%s',Materials='%s',URL='%s'" + " WHERE PrjCod=%ld AND CrsCod=%ld", + Prj->DptCod, + Prj->Hidden == Prj_HIDDEN ? 'Y' : + 'N', + Prj->Preassigned == Prj_PREASSIGNED ? 'Y' : + 'N', + Prj->NumStds, + Prj_Proposal_DB[Prj->Proposal], + Prj->ModifTime, + Prj->Title, + Prj->Description, + Prj->Knowledge, + Prj->Materials, + Prj->URL, + Prj->PrjCod,Gbl.CurrentCrs.Crs.CrsCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryUPDATE_free (Query,"can not update project"); } /*****************************************************************************/ @@ -3442,21 +3457,23 @@ static void Prj_UpdateProject (struct Project *Prj) void Prj_RemoveCrsProjects (long CrsCod) { - char Query[256]; + char *Query; /***** Remove users in projects of the course *****/ - sprintf (Query,"DELETE FROM prj_usr USING projects,prj_usr" - " WHERE projects.CrsCod=%ld" - " AND projects.PrjCod=prj_usr.PrjCod", - CrsCod); - DB_QueryDELETE (Query,"can not remove all the projects of a course"); + if (asprintf (&Query,"DELETE FROM prj_usr USING projects,prj_usr" + " WHERE projects.CrsCod=%ld" + " AND projects.PrjCod=prj_usr.PrjCod", + CrsCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryDELETE_free (Query,"can not remove all the projects of a course"); /***** Flush cache *****/ Prj_FlushCacheMyRoleInProject (); /***** Remove projects *****/ - sprintf (Query,"DELETE FROM projects WHERE CrsCod=%ld",CrsCod); - DB_QueryDELETE (Query,"can not remove all the projects of a course"); + if (asprintf (&Query,"DELETE FROM projects WHERE CrsCod=%ld",CrsCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryDELETE_free (Query,"can not remove all the projects of a course"); } /*****************************************************************************/ @@ -3465,12 +3482,13 @@ void Prj_RemoveCrsProjects (long CrsCod) void Prj_RemoveUsrFromProjects (long UsrCod) { - char Query[128]; + char *Query; bool ItsMe; /***** Remove user from projects *****/ - sprintf (Query,"DELETE FROM prj_usr WHERE UsrCod=%ld",UsrCod); - DB_QueryDELETE (Query,"can not remove user from projects"); + if (asprintf (&Query,"DELETE FROM prj_usr WHERE UsrCod=%ld",UsrCod) < 0) + Lay_NotEnoughMemoryExit (); + DB_QueryDELETE_free (Query,"can not remove user from projects"); /***** Flush cache *****/ ItsMe = Usr_ItsMe (UsrCod); @@ -3486,7 +3504,7 @@ void Prj_RemoveUsrFromProjects (long UsrCod) unsigned Prj_GetNumCoursesWithProjects (Sco_Scope_t Scope) { - char Query[1024]; + char *Query; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumCourses; @@ -3495,59 +3513,65 @@ unsigned Prj_GetNumCoursesWithProjects (Sco_Scope_t Scope) switch (Scope) { case Sco_SCOPE_SYS: - sprintf (Query,"SELECT COUNT(DISTINCT CrsCod)" - " FROM projects" - " WHERE CrsCod>0"); + if (asprintf (&Query,"SELECT COUNT(DISTINCT CrsCod)" + " FROM projects" + " WHERE CrsCod>0") < 0) + Lay_NotEnoughMemoryExit (); break; case Sco_SCOPE_CTY: - sprintf (Query,"SELECT COUNT(DISTINCT projects.CrsCod)" - " FROM institutions,centres,degrees,courses,projects" - " WHERE institutions.CtyCod=%ld" - " AND institutions.InsCod=centres.InsCod" - " AND centres.CtrCod=degrees.CtrCod" - " AND degrees.DegCod=courses.DegCod" - " AND courses.Status=0" - " AND courses.CrsCod=projects.CrsCod", - Gbl.CurrentCty.Cty.CtyCod); + if (asprintf (&Query,"SELECT COUNT(DISTINCT projects.CrsCod)" + " FROM institutions,centres,degrees,courses,projects" + " WHERE institutions.CtyCod=%ld" + " AND institutions.InsCod=centres.InsCod" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.Status=0" + " AND courses.CrsCod=projects.CrsCod", + Gbl.CurrentCty.Cty.CtyCod) < 0) + Lay_NotEnoughMemoryExit (); break; case Sco_SCOPE_INS: - sprintf (Query,"SELECT COUNT(DISTINCT projects.CrsCod)" - " FROM centres,degrees,courses,projects" - " WHERE centres.InsCod=%ld" - " AND centres.CtrCod=degrees.CtrCod" - " AND degrees.DegCod=courses.DegCod" - " AND courses.Status=0" - " AND courses.CrsCod=projects.CrsCod", - Gbl.CurrentIns.Ins.InsCod); + if (asprintf (&Query,"SELECT COUNT(DISTINCT projects.CrsCod)" + " FROM centres,degrees,courses,projects" + " WHERE centres.InsCod=%ld" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.Status=0" + " AND courses.CrsCod=projects.CrsCod", + Gbl.CurrentIns.Ins.InsCod) < 0) + Lay_NotEnoughMemoryExit (); break; case Sco_SCOPE_CTR: - sprintf (Query,"SELECT COUNT(DISTINCT projects.CrsCod)" - " FROM degrees,courses,projects" - " WHERE degrees.CtrCod=%ld" - " AND degrees.DegCod=courses.DegCod" - " AND courses.Status=0" - " AND courses.CrsCod=projects.CrsCod", - Gbl.CurrentCtr.Ctr.CtrCod); + if (asprintf (&Query,"SELECT COUNT(DISTINCT projects.CrsCod)" + " FROM degrees,courses,projects" + " WHERE degrees.CtrCod=%ld" + " AND degrees.DegCod=courses.DegCod" + " AND courses.Status=0" + " AND courses.CrsCod=projects.CrsCod", + Gbl.CurrentCtr.Ctr.CtrCod) < 0) + Lay_NotEnoughMemoryExit (); break; case Sco_SCOPE_DEG: - sprintf (Query,"SELECT COUNT(DISTINCT projects.CrsCod)" - " FROM courses,projects" - " WHERE courses.DegCod=%ld" - " AND courses.Status=0" - " AND courses.CrsCod=projects.CrsCod", - Gbl.CurrentDeg.Deg.DegCod); + if (asprintf (&Query,"SELECT COUNT(DISTINCT projects.CrsCod)" + " FROM courses,projects" + " WHERE courses.DegCod=%ld" + " AND courses.Status=0" + " AND courses.CrsCod=projects.CrsCod", + Gbl.CurrentDeg.Deg.DegCod) < 0) + Lay_NotEnoughMemoryExit (); break; case Sco_SCOPE_CRS: - sprintf (Query,"SELECT COUNT(DISTINCT CrsCod)" - " FROM projects" - " WHERE CrsCod=%ld", - Gbl.CurrentCrs.Crs.CrsCod); + if (asprintf (&Query,"SELECT COUNT(DISTINCT CrsCod)" + " FROM projects" + " WHERE CrsCod=%ld", + Gbl.CurrentCrs.Crs.CrsCod) < 0) + Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } - DB_QuerySELECT (Query,&mysql_res,"can not get number of courses with projects"); + DB_QuerySELECT_free (Query,&mysql_res,"can not get number of courses with projects"); /***** Get number of courses *****/ row = mysql_fetch_row (mysql_res); @@ -3567,7 +3591,7 @@ unsigned Prj_GetNumCoursesWithProjects (Sco_Scope_t Scope) unsigned Prj_GetNumProjects (Sco_Scope_t Scope) { - char Query[1024]; + char *Query; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumProjects; @@ -3576,55 +3600,61 @@ unsigned Prj_GetNumProjects (Sco_Scope_t Scope) switch (Scope) { case Sco_SCOPE_SYS: - sprintf (Query,"SELECT COUNT(*)" + if (asprintf (&Query,"SELECT COUNT(*)" " FROM projects" - " WHERE CrsCod>0"); + " WHERE CrsCod>0") < 0) + Lay_NotEnoughMemoryExit (); break; case Sco_SCOPE_CTY: - sprintf (Query,"SELECT COUNT(*)" - " FROM institutions,centres,degrees,courses,projects" - " WHERE institutions.CtyCod=%ld" - " AND institutions.InsCod=centres.InsCod" - " AND centres.CtrCod=degrees.CtrCod" - " AND degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=projects.CrsCod", - Gbl.CurrentCty.Cty.CtyCod); + if (asprintf (&Query,"SELECT COUNT(*)" + " FROM institutions,centres,degrees,courses,projects" + " WHERE institutions.CtyCod=%ld" + " AND institutions.InsCod=centres.InsCod" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=projects.CrsCod", + Gbl.CurrentCty.Cty.CtyCod) < 0) + Lay_NotEnoughMemoryExit (); break; case Sco_SCOPE_INS: - sprintf (Query,"SELECT COUNT(*)" - " FROM centres,degrees,courses,projects" - " WHERE centres.InsCod=%ld" - " AND centres.CtrCod=degrees.CtrCod" - " AND degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=projects.CrsCod", - Gbl.CurrentIns.Ins.InsCod); + if (asprintf (&Query,"SELECT COUNT(*)" + " FROM centres,degrees,courses,projects" + " WHERE centres.InsCod=%ld" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=projects.CrsCod", + Gbl.CurrentIns.Ins.InsCod) < 0) + Lay_NotEnoughMemoryExit (); break; case Sco_SCOPE_CTR: - sprintf (Query,"SELECT COUNT(*)" - " FROM degrees,courses,projects" - " WHERE degrees.CtrCod=%ld" - " AND degrees.DegCod=courses.DegCod" - " AND courses.CrsCod=projects.CrsCod", - Gbl.CurrentCtr.Ctr.CtrCod); + if (asprintf (&Query,"SELECT COUNT(*)" + " FROM degrees,courses,projects" + " WHERE degrees.CtrCod=%ld" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=projects.CrsCod", + Gbl.CurrentCtr.Ctr.CtrCod) < 0) + Lay_NotEnoughMemoryExit (); break; case Sco_SCOPE_DEG: - sprintf (Query,"SELECT COUNT(*)" - " FROM courses,projects" - " WHERE courses.DegCod=%ld" - " AND courses.CrsCod=projects.CrsCod", - Gbl.CurrentDeg.Deg.DegCod); + if (asprintf (&Query,"SELECT COUNT(*)" + " FROM courses,projects" + " WHERE courses.DegCod=%ld" + " AND courses.CrsCod=projects.CrsCod", + Gbl.CurrentDeg.Deg.DegCod) < 0) + Lay_NotEnoughMemoryExit (); break; case Sco_SCOPE_CRS: - sprintf (Query,"SELECT COUNT(*)" - " FROM projects" - " WHERE CrsCod=%ld", - Gbl.CurrentCrs.Crs.CrsCod); + if (asprintf (&Query,"SELECT COUNT(*)" + " FROM projects" + " WHERE CrsCod=%ld", + Gbl.CurrentCrs.Crs.CrsCod) < 0) + Lay_NotEnoughMemoryExit (); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } - DB_QuerySELECT (Query,&mysql_res,"can not get number of projects"); + DB_QuerySELECT_free (Query,&mysql_res,"can not get number of projects"); /***** Get number of projects *****/ row = mysql_fetch_row (mysql_res); diff --git a/swad_scope.c b/swad_scope.c index 14d3cdf55..4c1e49ef0 100644 --- a/swad_scope.c +++ b/swad_scope.c @@ -123,7 +123,7 @@ void Sco_PutSelectorScope (const char *ParamName,bool SendOnChange) WriteScope = true; break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } @@ -166,7 +166,7 @@ void Sco_PutSelectorScope (const char *ParamName,bool SendOnChange) Gbl.CurrentCrs.Crs.ShrtName); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } fprintf (Gbl.F.Out,""); diff --git a/swad_statistic.c b/swad_statistic.c index 62bc3046d..2e02bcdbe 100644 --- a/swad_statistic.c +++ b/swad_statistic.c @@ -4585,7 +4585,7 @@ static void Sta_GetAndShowNumCtysInSWAD (void) NumCtysWithStds = Cty_GetNumCtysWithUsrs (Rol_STD,SubQuery); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } @@ -4721,7 +4721,7 @@ static void Sta_GetAndShowNumInssInSWAD (void) NumInssWithStds = Ins_GetNumInssWithUsrs (Rol_STD,SubQuery); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } @@ -4847,7 +4847,7 @@ static void Sta_GetAndShowNumCtrsInSWAD (void) NumCtrsWithStds = Ctr_GetNumCtrsWithUsrs (Rol_STD,SubQuery); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } @@ -4963,7 +4963,7 @@ static void Sta_GetAndShowNumDegsInSWAD (void) NumDegsWithStds = Deg_GetNumDegsWithUsrs (Rol_STD,SubQuery); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } @@ -5069,7 +5069,7 @@ static void Sta_GetAndShowNumCrssInSWAD (void) NumCrssWithStds = Crs_GetNumCrssWithUsrs (Rol_STD,SubQuery); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } @@ -5188,7 +5188,7 @@ static void Sta_GetAndShowInssOrderedByNumCtrs (void) Gbl.CurrentIns.Ins.InsCod); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } Sta_GetAndShowInss (Query,Txt_Centres); @@ -5244,7 +5244,7 @@ static void Sta_GetAndShowInssOrderedByNumDegs (void) Gbl.CurrentIns.Ins.InsCod); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } Sta_GetAndShowInss (Query,Txt_Degrees); @@ -5303,7 +5303,7 @@ static void Sta_GetAndShowInssOrderedByNumCrss (void) Gbl.CurrentIns.Ins.InsCod); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } Sta_GetAndShowInss (Query,Txt_Courses); @@ -5365,7 +5365,7 @@ static void Sta_GetAndShowInssOrderedByNumUsrsInCrss (void) Gbl.CurrentIns.Ins.InsCod); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } Sta_GetAndShowInss (Query,Txt_Users); @@ -5421,7 +5421,7 @@ static void Sta_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem (void) Gbl.CurrentIns.Ins.InsCod); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } Sta_GetAndShowInss (Query,Txt_Users); @@ -6634,7 +6634,7 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, } break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT (Query,&mysql_res,"can not get size of a file browser"); @@ -6841,7 +6841,7 @@ static void Sta_GetNumberOfOERsFromDB (Sco_Scope_t Scope,Brw_License_t License,u (unsigned) License); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } NumRows = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get number of OERs"); @@ -7352,7 +7352,7 @@ static void Sta_GetAndShowSocialActivityStats (void) (unsigned) NoteType); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } NumSocialNotes = 0; @@ -7456,7 +7456,7 @@ static void Sta_GetAndShowSocialActivityStats (void) Gbl.CurrentCrs.Crs.CrsCod); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } NumSocialNotes = 0; @@ -7631,7 +7631,7 @@ static void Sta_GetAndShowFollowStats (void) FieldDB[Fol]); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } NumUsrs = (unsigned) DB_QueryCOUNT (Query,"can not get the total number of following/followers"); @@ -7742,7 +7742,7 @@ static void Sta_GetAndShowFollowStats (void) FieldDB[1 - Fol]); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT (Query,&mysql_res,"can not get number of questions per survey"); @@ -7902,7 +7902,7 @@ static void Sta_GetAndShowForumStats (void) Sta_ShowStatOfAForumType (For_FORUM_COURSE_TCHS,-1L,-1L,-1L,-1L,Gbl.CurrentCrs.Crs.CrsCod,&StatsForum); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } @@ -8249,7 +8249,7 @@ static void Sta_GetAndShowNumUsrsPerNotifyEvent (void) Gbl.CurrentCrs.Crs.CrsCod); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } NumUsrsTotalWhoWantToBeNotifiedByEMailAboutSomeEvent = (unsigned) DB_QueryCOUNT (Query,"can not get the total number of users who want to be notified by email on some event"); @@ -8318,7 +8318,7 @@ static void Sta_GetAndShowNumUsrsPerNotifyEvent (void) Gbl.CurrentCrs.Crs.CrsCod,(1 << NotifyEvent)); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } NumUsrs[NotifyEvent] = (unsigned) DB_QueryCOUNT (Query,"can not get the number of users who want to be notified by email on an event"); @@ -8374,7 +8374,7 @@ static void Sta_GetAndShowNumUsrsPerNotifyEvent (void) Gbl.CurrentCrs.Crs.CrsCod,(unsigned) NotifyEvent); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT (Query,&mysql_res,"can not get the number of notifications by email"); @@ -8873,7 +8873,7 @@ static void Sta_GetAndShowNumUsrsPerPrivacyForAnObject (const char *TxtObject,co Pri_VisibilityDB[Visibility]); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } NumUsrs[Visibility] = (unsigned) DB_QueryCOUNT (Query,"can not get the number of users who have chosen a privacy"); @@ -9010,7 +9010,7 @@ static void Sta_GetAndShowNumUsrsPerLanguage (void) Txt_STR_LANG_ID[Lan]); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } NumUsrs[Lan] = (unsigned) DB_QueryCOUNT (Query,"can not get the number of users who have chosen a language"); @@ -9147,7 +9147,7 @@ static void Sta_GetAndShowNumUsrsPerFirstDayOfWeek (void) Gbl.CurrentCrs.Crs.CrsCod,(unsigned) FirstDayOfWeek); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } NumUsrs[FirstDayOfWeek] = (unsigned) DB_QueryCOUNT (Query,"can not get the number of users who have chosen a first day of week"); @@ -9286,7 +9286,7 @@ static void Sta_GetAndShowNumUsrsPerDateFormat (void) Gbl.CurrentCrs.Crs.CrsCod,(unsigned) Format); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } NumUsrs[Format] = (unsigned) DB_QueryCOUNT (Query,"can not get the number of users who have chosen a date format"); @@ -9424,7 +9424,7 @@ static void Sta_GetAndShowNumUsrsPerIconSet (void) Gbl.CurrentCrs.Crs.CrsCod,Ico_IconSetId[IconSet]); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } NumUsrs[IconSet] = (unsigned) DB_QueryCOUNT (Query,"can not get the number of users who have chosen an icon set"); @@ -9567,7 +9567,7 @@ static void Sta_GetAndShowNumUsrsPerMenu (void) Gbl.CurrentCrs.Crs.CrsCod,(unsigned) Menu); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } NumUsrs[Menu] = (unsigned) DB_QueryCOUNT (Query,"can not get the number of users who have chosen a menu"); @@ -9707,7 +9707,7 @@ static void Sta_GetAndShowNumUsrsPerTheme (void) Gbl.CurrentCrs.Crs.CrsCod,The_ThemeId[Theme]); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } NumUsrs[Theme] = (unsigned) DB_QueryCOUNT (Query,"can not get the number of users who have chosen a theme"); @@ -9846,7 +9846,7 @@ static void Sta_GetAndShowNumUsrsPerSideColumns (void) Gbl.CurrentCrs.Crs.CrsCod,SideCols); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } NumUsrs[SideCols] = (unsigned) DB_QueryCOUNT (Query,"can not get the number of users who have chosen a layout of columns"); diff --git a/swad_survey.c b/swad_survey.c index e9823267b..90597c4c6 100644 --- a/swad_survey.c +++ b/swad_survey.c @@ -2171,7 +2171,7 @@ void Svy_RecFormSurvey (void) NewSvy.Cod = Gbl.CurrentCrs.Crs.CrsCod; break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } @@ -3897,7 +3897,7 @@ unsigned Svy_GetNumCoursesWithCrsSurveys (Sco_Scope_t Scope) Gbl.CurrentCrs.Crs.CrsCod); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT (Query,&mysql_res,"can not get number of courses with surveys"); @@ -3987,7 +3987,7 @@ unsigned Svy_GetNumCrsSurveys (Sco_Scope_t Scope,unsigned *NumNotif) Gbl.CurrentCrs.Crs.CrsCod); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT (Query,&mysql_res,"can not get number of surveys"); @@ -4100,7 +4100,7 @@ float Svy_GetNumQstsPerCrsSurvey (Sco_Scope_t Scope) Sco_ScopeDB[Sco_SCOPE_CRS],Gbl.CurrentCrs.Crs.CrsCod); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT (Query,&mysql_res,"can not get number of questions per survey"); diff --git a/swad_test.c b/swad_test.c index 9e91b2f8b..63ddd22d0 100644 --- a/swad_test.c +++ b/swad_test.c @@ -7108,7 +7108,7 @@ static unsigned Tst_GetNumTstQuestions (Sco_Scope_t Scope,Tst_AnswerType_t AnsTy Tst_StrAnswerTypesDB[AnsType]); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT (Query,&mysql_res,"can not get number of test questions"); @@ -7257,7 +7257,7 @@ static unsigned Tst_GetNumCoursesWithTstQuestions (Sco_Scope_t Scope,Tst_AnswerT Tst_StrAnswerTypesDB[AnsType]); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT (Query,&mysql_res,"can not get number of courses with test questions"); @@ -7426,7 +7426,7 @@ static unsigned Tst_GetNumCoursesWithPluggableTstQuestions (Sco_Scope_t Scope,Ts Tst_PluggableDB[Tst_PLUGGABLE_YES]); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT (Query,&mysql_res,"can not get number of courses with pluggable test questions"); diff --git a/swad_user.c b/swad_user.c index 1a7355a89..8861fad02 100644 --- a/swad_user.c +++ b/swad_user.c @@ -4522,7 +4522,7 @@ void Usr_GetListUsrs (Sco_Scope_t Scope,Rol_Role_t Role) Usr_BuildQueryToGetUsrsLstCrs (Role,Query); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } /* @@ -4657,7 +4657,7 @@ void Usr_SearchListUsrs (Rol_Role_t Role) OrderQuery); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } break; @@ -4782,7 +4782,7 @@ void Usr_SearchListUsrs (Rol_Role_t Role) OrderQuery); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } break; @@ -4989,7 +4989,7 @@ static void Usr_GetAdmsLst (Sco_Scope_t Scope) Sco_ScopeDB[Sco_SCOPE_DEG],Gbl.CurrentDeg.Deg.DegCod); break; default: // not aplicable - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } @@ -5229,7 +5229,7 @@ static void Usr_GetListUsrsFromQuery (const char *Query,Rol_Role_t Role,Sco_Scop switch (Scope) { case Sco_SCOPE_UNK: // Unknown - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; case Sco_SCOPE_SYS: // System // Query result has not a column with the acceptation @@ -5267,7 +5267,7 @@ static void Usr_GetListUsrsFromQuery (const char *Query,Rol_Role_t Role,Sco_Scop switch (Scope) { case Sco_SCOPE_UNK: // Unknown - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; case Sco_SCOPE_SYS: // System case Sco_SCOPE_CTY: // Country @@ -8632,7 +8632,7 @@ unsigned Usr_GetTotalNumberOfUsersInCourses (Sco_Scope_t Scope,unsigned Roles) Gbl.CurrentCrs.Crs.CrsCod,SubQueryRoles); break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } @@ -8775,7 +8775,7 @@ float Usr_GetNumCrssPerUsr (Rol_Role_t Role) case Sco_SCOPE_CRS: return 1.0; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT (Query,&mysql_res,"can not get number of courses per user"); @@ -8926,7 +8926,7 @@ float Usr_GetNumUsrsPerCrs (Rol_Role_t Role) } break; default: - Lay_ShowErrorAndExit ("Wrong scope."); + Lay_WrongScopeExit (); break; } DB_QuerySELECT (Query,&mysql_res,"can not get number of users per course");