mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-14 12:44:09 +02:00
Version 18.7.41
This commit is contained in:
parent
f0694fc824
commit
944aaa1856
|
@ -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");
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,"</td>"
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -2839,7 +2839,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
}
|
||||
break;
|
||||
default:
|
||||
Lay_ShowErrorAndExit ("Wrong scope.");
|
||||
Lay_WrongScopeExit ();
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -1204,7 +1204,7 @@ void Fol_GetAndShowRankingFollowers (void)
|
|||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
default:
|
||||
Lay_ShowErrorAndExit ("Wrong scope.");
|
||||
Lay_WrongScopeExit ();
|
||||
break;
|
||||
}
|
||||
Prf_ShowRankingFigure (Query);
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -536,7 +536,7 @@ static unsigned Ind_GetTableOfCourses (MYSQL_RES **mysql_res)
|
|||
}
|
||||
break;
|
||||
default:
|
||||
Lay_ShowErrorAndExit ("Wrong scope.");
|
||||
Lay_WrongScopeExit ();
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -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.");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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");
|
||||
|
|
214
swad_profile.c
214
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'"
|
||||
if (asprintf (&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");
|
||||
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),"
|
||||
if (asprintf (&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")))
|
||||
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"
|
||||
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);
|
||||
return DB_QueryCOUNT (Query,"can not get ranking using a figure");
|
||||
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,11 +715,11 @@ 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"
|
||||
if (asprintf (&Query,"SELECT COUNT(*)+1 FROM"
|
||||
" (SELECT NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1)"
|
||||
" AS NumClicksPerDay"
|
||||
" FROM usr_figures"
|
||||
|
@ -729,8 +733,9 @@ static unsigned long Prf_GetRankingNumClicksPerDay (long UsrCod)
|
|||
" 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");
|
||||
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"
|
||||
if (asprintf (&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");
|
||||
" 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("
|
||||
if (asprintf (&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"))
|
||||
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"
|
||||
if (asprintf (&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");
|
||||
(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"
|
||||
if (asprintf (&Query,"UPDATE usr_figures SET NumClicks=%ld"
|
||||
" WHERE UsrCod=%ld",
|
||||
UsrFigures.NumClicks,UsrCod);
|
||||
DB_QueryUPDATE (Query,"can not update user's figures");
|
||||
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"
|
||||
if (asprintf (&Query,"UPDATE usr_figures SET NumFileViews=%ld"
|
||||
" WHERE UsrCod=%ld",
|
||||
UsrFigures.NumFileViews,UsrCod);
|
||||
DB_QueryUPDATE (Query,"can not update user's figures");
|
||||
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"
|
||||
if (asprintf (&Query,"UPDATE usr_figures SET NumForPst=%ld"
|
||||
" WHERE UsrCod=%ld",
|
||||
UsrFigures.NumForPst,UsrCod);
|
||||
DB_QueryUPDATE (Query,"can not update user's figures");
|
||||
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"
|
||||
if (asprintf (&Query,"UPDATE usr_figures SET NumMsgSnt=%ld"
|
||||
" WHERE UsrCod=%ld",
|
||||
UsrFigures.NumMsgSnt,UsrCod);
|
||||
DB_QueryUPDATE (Query,"can not update user's figures");
|
||||
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,7 +1069,7 @@ 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"
|
||||
if (asprintf (&Query,"INSERT INTO usr_figures"
|
||||
" (UsrCod,FirstClickTime,NumClicks,NumFileViews,NumForPst,NumMsgSnt)"
|
||||
" VALUES"
|
||||
" (%ld,%s,%ld,%ld,%ld,%ld)",
|
||||
|
@ -1065,8 +1078,9 @@ static void Prf_CreateUsrFigures (long UsrCod,const struct UsrFigures *UsrFigure
|
|||
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");
|
||||
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"
|
||||
if (asprintf (&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");
|
||||
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"
|
||||
if (asprintf (&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");
|
||||
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"
|
||||
if (asprintf (&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");
|
||||
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"
|
||||
if (asprintf (&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");
|
||||
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,16 +1385,17 @@ void Prf_GetAndShowRankingClicksPerDay (void)
|
|||
switch (Gbl.Scope.Current)
|
||||
{
|
||||
case Sco_SCOPE_SYS:
|
||||
sprintf (Query,"SELECT UsrCod,"
|
||||
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");
|
||||
" ORDER BY NumClicksPerDay DESC,UsrCod LIMIT 100") < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case Sco_SCOPE_CTY:
|
||||
sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod,"
|
||||
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"
|
||||
|
@ -1388,10 +1409,11 @@ void Prf_GetAndShowRankingClicksPerDay (void)
|
|||
" 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);
|
||||
Gbl.CurrentCty.Cty.CtyCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case Sco_SCOPE_INS:
|
||||
sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod,"
|
||||
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"
|
||||
|
@ -1404,10 +1426,11 @@ void Prf_GetAndShowRankingClicksPerDay (void)
|
|||
" 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);
|
||||
Gbl.CurrentIns.Ins.InsCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case Sco_SCOPE_CTR:
|
||||
sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod,"
|
||||
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"
|
||||
|
@ -1419,10 +1442,11 @@ void Prf_GetAndShowRankingClicksPerDay (void)
|
|||
" 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);
|
||||
Gbl.CurrentCtr.Ctr.CtrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case Sco_SCOPE_DEG:
|
||||
sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod,"
|
||||
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"
|
||||
|
@ -1433,10 +1457,11 @@ void Prf_GetAndShowRankingClicksPerDay (void)
|
|||
" 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);
|
||||
Gbl.CurrentDeg.Deg.DegCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case Sco_SCOPE_CRS:
|
||||
sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod,"
|
||||
if (asprintf (&Query,"SELECT DISTINCTROW usr_figures.UsrCod,"
|
||||
"usr_figures.NumClicks/(DATEDIFF(NOW(),"
|
||||
"usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
|
||||
" FROM crs_usr,usr_figures"
|
||||
|
@ -1446,13 +1471,14 @@ void Prf_GetAndShowRankingClicksPerDay (void)
|
|||
" 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);
|
||||
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 *****/
|
||||
|
|
236
swad_project.c
236
swad_project.c
|
@ -25,8 +25,10 @@
|
|||
/********************************* Headers ***********************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define _GNU_SOURCE // For asprintf
|
||||
#include <linux/limits.h> // For PATH_MAX
|
||||
#include <linux/stddef.h> // For NULL
|
||||
#include <stdio.h> // For asprintf
|
||||
#include <stdlib.h> // For calloc
|
||||
#include <string.h> // For string functions
|
||||
|
||||
|
@ -1797,10 +1799,10 @@ 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,"
|
||||
if (asprintf (&Query,"SELECT prj_usr.UsrCod,"
|
||||
"usr_data.Surname1 AS S1,"
|
||||
"usr_data.Surname2 AS S2,"
|
||||
"usr_data.FirstName AS FN"
|
||||
|
@ -1808,8 +1810,9 @@ static unsigned Prj_GetUsrsInPrj (long PrjCod,Prj_RoleInProject_t RoleInProject,
|
|||
" 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,
|
||||
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"
|
||||
if (asprintf (&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"))
|
||||
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"
|
||||
if (asprintf (&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");
|
||||
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"
|
||||
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);
|
||||
DB_QueryDELETE (Query,"can not remove a user from a project");
|
||||
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,7 +2396,7 @@ void Prj_GetListProjects (void)
|
|||
case Prj_ORDER_START_TIME:
|
||||
case Prj_ORDER_END_TIME:
|
||||
case Prj_ORDER_TITLE:
|
||||
sprintf (Query,"SELECT projects.PrjCod"
|
||||
if (asprintf (&Query,"SELECT projects.PrjCod"
|
||||
" FROM projects,prj_usr"
|
||||
" WHERE projects.CrsCod=%ld"
|
||||
"%s%s%s"
|
||||
|
@ -2399,10 +2406,11 @@ void Prj_GetListProjects (void)
|
|||
Gbl.CurrentCrs.Crs.CrsCod,
|
||||
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
OrderBySubQuery);
|
||||
OrderBySubQuery) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case Prj_ORDER_DEPARTMENT:
|
||||
sprintf (Query,"SELECT projects.PrjCod"
|
||||
if (asprintf (&Query,"SELECT projects.PrjCod"
|
||||
" FROM prj_usr,projects LEFT JOIN departments"
|
||||
" ON projects.DptCod=departments.DptCod"
|
||||
" WHERE projects.CrsCod=%ld"
|
||||
|
@ -2413,7 +2421,8 @@ void Prj_GetListProjects (void)
|
|||
Gbl.CurrentCrs.Crs.CrsCod,
|
||||
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
OrderBySubQuery);
|
||||
OrderBySubQuery) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
}
|
||||
else // Gbl.Prjs.My_All == Prj_ALL_PROJECTS
|
||||
|
@ -2422,17 +2431,18 @@ void Prj_GetListProjects (void)
|
|||
case Prj_ORDER_START_TIME:
|
||||
case Prj_ORDER_END_TIME:
|
||||
case Prj_ORDER_TITLE:
|
||||
sprintf (Query,"SELECT projects.PrjCod"
|
||||
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);
|
||||
OrderBySubQuery) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case Prj_ORDER_DEPARTMENT:
|
||||
sprintf (Query,"SELECT projects.PrjCod"
|
||||
if (asprintf (&Query,"SELECT projects.PrjCod"
|
||||
" FROM projects LEFT JOIN departments"
|
||||
" ON projects.DptCod=departments.DptCod"
|
||||
" WHERE projects.CrsCod=%ld"
|
||||
|
@ -2440,11 +2450,12 @@ void Prj_GetListProjects (void)
|
|||
" ORDER BY %s",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,
|
||||
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
||||
OrderBySubQuery);
|
||||
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,"
|
||||
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);
|
||||
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"
|
||||
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);
|
||||
DB_QueryDELETE (Query,"can not remove project");
|
||||
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"
|
||||
if (asprintf (&Query,"DELETE FROM projects"
|
||||
" WHERE PrjCod=%ld AND CrsCod=%ld",
|
||||
Prj.PrjCod,Gbl.CurrentCrs.Crs.CrsCod);
|
||||
DB_QueryDELETE (Query,"can not remove project");
|
||||
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'"
|
||||
if (asprintf (&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");
|
||||
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'"
|
||||
if (asprintf (&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");
|
||||
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,17 +3367,14 @@ 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"
|
||||
if (asprintf (&Query,"INSERT INTO projects"
|
||||
" (CrsCod,DptCod,Hidden,Preassigned,NumStds,Proposal,"
|
||||
"CreatTime,ModifTime,"
|
||||
"Title,Description,Knowledge,Materials,URL)"
|
||||
|
@ -3381,18 +3396,20 @@ static void Prj_CreateProject (struct Project *Prj)
|
|||
Prj->Description,
|
||||
Prj->Knowledge,
|
||||
Prj->Materials,
|
||||
Prj->URL);
|
||||
Prj->PrjCod = DB_QueryINSERTandReturnCode (Query,"can not create new project");
|
||||
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"
|
||||
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);
|
||||
DB_QueryINSERT (Query,"can not add tutor");
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
DB_QueryINSERT_free (Query,"can not add tutor");
|
||||
|
||||
/***** Flush cache *****/
|
||||
Prj_FlushCacheMyRoleInProject ();
|
||||
|
@ -3404,16 +3421,13 @@ 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 "
|
||||
if (asprintf (&Query,"UPDATE projects SET "
|
||||
"DptCod=%ld,Hidden='%c',Preassigned='%c',NumStds=%u,Proposal='%s',"
|
||||
"ModifTime=FROM_UNIXTIME(%ld),"
|
||||
"Title='%s',"
|
||||
|
@ -3432,8 +3446,9 @@ static void Prj_UpdateProject (struct Project *Prj)
|
|||
Prj->Knowledge,
|
||||
Prj->Materials,
|
||||
Prj->URL,
|
||||
Prj->PrjCod,Gbl.CurrentCrs.Crs.CrsCod);
|
||||
DB_QueryUPDATE (Query,"can not update project");
|
||||
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"
|
||||
if (asprintf (&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");
|
||||
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,12 +3513,13 @@ unsigned Prj_GetNumCoursesWithProjects (Sco_Scope_t Scope)
|
|||
switch (Scope)
|
||||
{
|
||||
case Sco_SCOPE_SYS:
|
||||
sprintf (Query,"SELECT COUNT(DISTINCT CrsCod)"
|
||||
if (asprintf (&Query,"SELECT COUNT(DISTINCT CrsCod)"
|
||||
" FROM projects"
|
||||
" WHERE CrsCod>0");
|
||||
" WHERE CrsCod>0") < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case Sco_SCOPE_CTY:
|
||||
sprintf (Query,"SELECT COUNT(DISTINCT projects.CrsCod)"
|
||||
if (asprintf (&Query,"SELECT COUNT(DISTINCT projects.CrsCod)"
|
||||
" FROM institutions,centres,degrees,courses,projects"
|
||||
" WHERE institutions.CtyCod=%ld"
|
||||
" AND institutions.InsCod=centres.InsCod"
|
||||
|
@ -3508,46 +3527,51 @@ unsigned Prj_GetNumCoursesWithProjects (Sco_Scope_t Scope)
|
|||
" AND degrees.DegCod=courses.DegCod"
|
||||
" AND courses.Status=0"
|
||||
" AND courses.CrsCod=projects.CrsCod",
|
||||
Gbl.CurrentCty.Cty.CtyCod);
|
||||
Gbl.CurrentCty.Cty.CtyCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case Sco_SCOPE_INS:
|
||||
sprintf (Query,"SELECT COUNT(DISTINCT projects.CrsCod)"
|
||||
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);
|
||||
Gbl.CurrentIns.Ins.InsCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case Sco_SCOPE_CTR:
|
||||
sprintf (Query,"SELECT COUNT(DISTINCT projects.CrsCod)"
|
||||
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);
|
||||
Gbl.CurrentCtr.Ctr.CtrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case Sco_SCOPE_DEG:
|
||||
sprintf (Query,"SELECT COUNT(DISTINCT projects.CrsCod)"
|
||||
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);
|
||||
Gbl.CurrentDeg.Deg.DegCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case Sco_SCOPE_CRS:
|
||||
sprintf (Query,"SELECT COUNT(DISTINCT CrsCod)"
|
||||
if (asprintf (&Query,"SELECT COUNT(DISTINCT CrsCod)"
|
||||
" FROM projects"
|
||||
" WHERE CrsCod=%ld",
|
||||
Gbl.CurrentCrs.Crs.CrsCod);
|
||||
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(*)"
|
||||
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);
|
||||
Gbl.CurrentCty.Cty.CtyCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case Sco_SCOPE_INS:
|
||||
sprintf (Query,"SELECT COUNT(*)"
|
||||
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);
|
||||
Gbl.CurrentIns.Ins.InsCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case Sco_SCOPE_CTR:
|
||||
sprintf (Query,"SELECT COUNT(*)"
|
||||
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);
|
||||
Gbl.CurrentCtr.Ctr.CtrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case Sco_SCOPE_DEG:
|
||||
sprintf (Query,"SELECT COUNT(*)"
|
||||
if (asprintf (&Query,"SELECT COUNT(*)"
|
||||
" FROM courses,projects"
|
||||
" WHERE courses.DegCod=%ld"
|
||||
" AND courses.CrsCod=projects.CrsCod",
|
||||
Gbl.CurrentDeg.Deg.DegCod);
|
||||
Gbl.CurrentDeg.Deg.DegCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case Sco_SCOPE_CRS:
|
||||
sprintf (Query,"SELECT COUNT(*)"
|
||||
if (asprintf (&Query,"SELECT COUNT(*)"
|
||||
" FROM projects"
|
||||
" WHERE CrsCod=%ld",
|
||||
Gbl.CurrentCrs.Crs.CrsCod);
|
||||
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);
|
||||
|
|
|
@ -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,"</option>");
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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");
|
||||
|
|
18
swad_user.c
18
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");
|
||||
|
|
Loading…
Reference in New Issue
Block a user