mirror of https://github.com/acanas/swad-core.git
Version 18.11.1
This commit is contained in:
parent
f7b1f69fc3
commit
c1559c1d52
|
@ -643,23 +643,24 @@ static void Att_GetListAttEvents (Att_OrderTime_t Order)
|
|||
break;
|
||||
}
|
||||
if (Gbl.CurrentCrs.Grps.WhichGrps == Grp_ONLY_MY_GROUPS)
|
||||
DB_BuildQuery ("SELECT AttCod"
|
||||
" FROM att_events"
|
||||
" WHERE CrsCod=%ld%s"
|
||||
" AND (AttCod NOT IN (SELECT AttCod FROM att_grp) OR"
|
||||
" AttCod IN (SELECT att_grp.AttCod FROM att_grp,crs_grp_usr"
|
||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||
" AND att_grp.GrpCod=crs_grp_usr.GrpCod))"
|
||||
" ORDER BY %s",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,HiddenSubQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,OrderBySubQuery);
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get attendance events",
|
||||
"SELECT AttCod"
|
||||
" FROM att_events"
|
||||
" WHERE CrsCod=%ld%s"
|
||||
" AND (AttCod NOT IN (SELECT AttCod FROM att_grp) OR"
|
||||
" AttCod IN (SELECT att_grp.AttCod FROM att_grp,crs_grp_usr"
|
||||
" WHERE crs_grp_usr.UsrCod=%ld"
|
||||
" AND att_grp.GrpCod=crs_grp_usr.GrpCod))"
|
||||
" ORDER BY %s",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,HiddenSubQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,OrderBySubQuery);
|
||||
else // Gbl.CurrentCrs.Grps.WhichGrps == Grp_ALL_GROUPS
|
||||
DB_BuildQuery ("SELECT AttCod"
|
||||
" FROM att_events"
|
||||
" WHERE CrsCod=%ld%s"
|
||||
" ORDER BY %s",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,HiddenSubQuery,OrderBySubQuery);
|
||||
NumRows = DB_QuerySELECT_new (&mysql_res,"can not get attendance events");
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get attendance events",
|
||||
"SELECT AttCod"
|
||||
" FROM att_events"
|
||||
" WHERE CrsCod=%ld%s"
|
||||
" ORDER BY %s",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,HiddenSubQuery,OrderBySubQuery);
|
||||
|
||||
/* Free allocated memory for subqueries */
|
||||
free ((void *) OrderBySubQuery);
|
||||
|
@ -718,6 +719,7 @@ bool Att_GetDataOfAttEventByCod (struct AttendanceEvent *Att)
|
|||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned long NumRows;
|
||||
bool Found = false;
|
||||
|
||||
/***** Reset attendance event data *****/
|
||||
|
@ -726,18 +728,19 @@ bool Att_GetDataOfAttEventByCod (struct AttendanceEvent *Att)
|
|||
if (Att->AttCod > 0)
|
||||
{
|
||||
/***** Build query *****/
|
||||
DB_BuildQuery ("SELECT AttCod,CrsCod,Hidden,UsrCod,"
|
||||
"UNIX_TIMESTAMP(StartTime),"
|
||||
"UNIX_TIMESTAMP(EndTime),"
|
||||
"NOW() BETWEEN StartTime AND EndTime,"
|
||||
"CommentTchVisible,"
|
||||
"Title"
|
||||
" FROM att_events"
|
||||
" WHERE AttCod=%ld",
|
||||
Att->AttCod);
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get attendance event data",
|
||||
"SELECT AttCod,CrsCod,Hidden,UsrCod,"
|
||||
"UNIX_TIMESTAMP(StartTime),"
|
||||
"UNIX_TIMESTAMP(EndTime),"
|
||||
"NOW() BETWEEN StartTime AND EndTime,"
|
||||
"CommentTchVisible,"
|
||||
"Title"
|
||||
" FROM att_events"
|
||||
" WHERE AttCod=%ld",
|
||||
Att->AttCod);
|
||||
|
||||
/***** Get data of attendance event from database *****/
|
||||
if ((Found = (DB_QuerySELECT_new (&mysql_res,"can not get attendance event data") != 0))) // Attendance event found...
|
||||
if ((Found = (NumRows != 0))) // Attendance event found...
|
||||
{
|
||||
/* Get row */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
@ -828,10 +831,10 @@ static void Att_GetAttEventTxtFromDB (long AttCod,char Txt[Cns_MAX_BYTES_TEXT +
|
|||
unsigned long NumRows;
|
||||
|
||||
/***** Get text of attendance event from database *****/
|
||||
DB_BuildQuery ("SELECT Txt FROM att_events"
|
||||
" WHERE AttCod=%ld AND CrsCod=%ld",
|
||||
AttCod,Gbl.CurrentCrs.Crs.CrsCod);
|
||||
NumRows = DB_QuerySELECT_new (&mysql_res,"can not get attendance event text");
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get attendance event text",
|
||||
"SELECT Txt FROM att_events"
|
||||
" WHERE AttCod=%ld AND CrsCod=%ld",
|
||||
AttCod,Gbl.CurrentCrs.Crs.CrsCod);
|
||||
|
||||
/***** The result of the query must have one row or none *****/
|
||||
if (NumRows == 1)
|
||||
|
@ -1507,14 +1510,14 @@ static void Att_GetAndWriteNamesOfGrpsAssociatedToAttEvent (struct AttendanceEve
|
|||
unsigned NumGrps;
|
||||
|
||||
/***** Get groups associated to an attendance event from database *****/
|
||||
DB_BuildQuery ("SELECT crs_grp_types.GrpTypName,crs_grp.GrpName"
|
||||
" FROM att_grp,crs_grp,crs_grp_types"
|
||||
" WHERE att_grp.AttCod=%ld"
|
||||
" AND att_grp.GrpCod=crs_grp.GrpCod"
|
||||
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||
" ORDER BY crs_grp_types.GrpTypName,crs_grp.GrpName",
|
||||
Att->AttCod);
|
||||
NumGrps = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get groups of an attendance event");
|
||||
NumGrps = (unsigned) DB_QuerySELECT (&mysql_res,"can not get groups of an attendance event",
|
||||
"SELECT crs_grp_types.GrpTypName,crs_grp.GrpName"
|
||||
" FROM att_grp,crs_grp,crs_grp_types"
|
||||
" WHERE att_grp.AttCod=%ld"
|
||||
" AND att_grp.GrpCod=crs_grp.GrpCod"
|
||||
" AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod"
|
||||
" ORDER BY crs_grp_types.GrpTypName,crs_grp.GrpName",
|
||||
Att->AttCod);
|
||||
|
||||
/***** Write heading *****/
|
||||
fprintf (Gbl.F.Out,"<div class=\"%s\">%s: ",
|
||||
|
@ -1657,48 +1660,52 @@ unsigned Att_GetNumCoursesWithAttEvents (Sco_Scope_t Scope)
|
|||
switch (Scope)
|
||||
{
|
||||
case Sco_SCOPE_SYS:
|
||||
DB_BuildQuery ("SELECT COUNT(DISTINCT CrsCod)"
|
||||
" FROM att_events"
|
||||
" WHERE CrsCod>0");
|
||||
DB_QuerySELECT (&mysql_res,"can not get number of courses with attendance events",
|
||||
"SELECT COUNT(DISTINCT CrsCod)"
|
||||
" FROM att_events"
|
||||
" WHERE CrsCod>0");
|
||||
break;
|
||||
case Sco_SCOPE_INS:
|
||||
DB_BuildQuery ("SELECT COUNT(DISTINCT att_events.CrsCod)"
|
||||
" FROM centres,degrees,courses,att_events"
|
||||
" WHERE centres.InsCod=%ld"
|
||||
" AND centres.CtrCod=degrees.CtrCod"
|
||||
" AND degrees.DegCod=courses.DegCod"
|
||||
" AND courses.Status=0"
|
||||
" AND courses.CrsCod=att_events.CrsCod",
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
DB_QuerySELECT (&mysql_res,"can not get number of courses with attendance events",
|
||||
"SELECT COUNT(DISTINCT att_events.CrsCod)"
|
||||
" FROM centres,degrees,courses,att_events"
|
||||
" WHERE centres.InsCod=%ld"
|
||||
" AND centres.CtrCod=degrees.CtrCod"
|
||||
" AND degrees.DegCod=courses.DegCod"
|
||||
" AND courses.Status=0"
|
||||
" AND courses.CrsCod=att_events.CrsCod",
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
break;
|
||||
case Sco_SCOPE_CTR:
|
||||
DB_BuildQuery ("SELECT COUNT(DISTINCT att_events.CrsCod)"
|
||||
" FROM degrees,courses,att_events"
|
||||
" WHERE degrees.CtrCod=%ld"
|
||||
" AND degrees.DegCod=courses.DegCod"
|
||||
" AND courses.Status=0"
|
||||
" AND courses.CrsCod=att_events.CrsCod",
|
||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||
DB_QuerySELECT (&mysql_res,"can not get number of courses with attendance events",
|
||||
"SELECT COUNT(DISTINCT att_events.CrsCod)"
|
||||
" FROM degrees,courses,att_events"
|
||||
" WHERE degrees.CtrCod=%ld"
|
||||
" AND degrees.DegCod=courses.DegCod"
|
||||
" AND courses.Status=0"
|
||||
" AND courses.CrsCod=att_events.CrsCod",
|
||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||
break;
|
||||
case Sco_SCOPE_DEG:
|
||||
DB_BuildQuery ("SELECT COUNT(DISTINCT att_events.CrsCod)"
|
||||
" FROM courses,att_events"
|
||||
" WHERE courses.DegCod=%ld"
|
||||
" AND courses.Status=0"
|
||||
" AND courses.CrsCod=att_events.CrsCod",
|
||||
Gbl.CurrentDeg.Deg.DegCod);
|
||||
DB_QuerySELECT (&mysql_res,"can not get number of courses with attendance events",
|
||||
"SELECT COUNT(DISTINCT att_events.CrsCod)"
|
||||
" FROM courses,att_events"
|
||||
" WHERE courses.DegCod=%ld"
|
||||
" AND courses.Status=0"
|
||||
" AND courses.CrsCod=att_events.CrsCod",
|
||||
Gbl.CurrentDeg.Deg.DegCod);
|
||||
break;
|
||||
case Sco_SCOPE_CRS:
|
||||
DB_BuildQuery ("SELECT COUNT(DISTINCT CrsCod)"
|
||||
" FROM att_events"
|
||||
" WHERE CrsCod=%ld",
|
||||
Gbl.CurrentCrs.Crs.CrsCod);
|
||||
DB_QuerySELECT (&mysql_res,"can not get number of courses with attendance events",
|
||||
"SELECT COUNT(DISTINCT CrsCod)"
|
||||
" FROM att_events"
|
||||
" WHERE CrsCod=%ld",
|
||||
Gbl.CurrentCrs.Crs.CrsCod);
|
||||
break;
|
||||
default:
|
||||
Lay_WrongScopeExit ();
|
||||
break;
|
||||
}
|
||||
DB_QuerySELECT_new (&mysql_res,"can not get number of courses with attendance events");
|
||||
|
||||
/***** Get number of courses *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
@ -1727,45 +1734,49 @@ unsigned Att_GetNumAttEvents (Sco_Scope_t Scope,unsigned *NumNotif)
|
|||
switch (Scope)
|
||||
{
|
||||
case Sco_SCOPE_SYS:
|
||||
DB_BuildQuery ("SELECT COUNT(*),SUM(NumNotif)"
|
||||
" FROM att_events"
|
||||
" WHERE CrsCod>0");
|
||||
DB_QuerySELECT (&mysql_res,"can not get number of attendance events",
|
||||
"SELECT COUNT(*),SUM(NumNotif)"
|
||||
" FROM att_events"
|
||||
" WHERE CrsCod>0");
|
||||
break;
|
||||
case Sco_SCOPE_INS:
|
||||
DB_BuildQuery ("SELECT COUNT(*),SUM(att_events.NumNotif)"
|
||||
" FROM centres,degrees,courses,att_events"
|
||||
" WHERE centres.InsCod=%ld"
|
||||
" AND centres.CtrCod=degrees.CtrCod"
|
||||
" AND degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=att_events.CrsCod",
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
DB_QuerySELECT (&mysql_res,"can not get number of attendance events",
|
||||
"SELECT COUNT(*),SUM(att_events.NumNotif)"
|
||||
" FROM centres,degrees,courses,att_events"
|
||||
" WHERE centres.InsCod=%ld"
|
||||
" AND centres.CtrCod=degrees.CtrCod"
|
||||
" AND degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=att_events.CrsCod",
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
break;
|
||||
case Sco_SCOPE_CTR:
|
||||
DB_BuildQuery ("SELECT COUNT(*),SUM(att_events.NumNotif)"
|
||||
" FROM degrees,courses,att_events"
|
||||
" WHERE degrees.CtrCod=%ld"
|
||||
" AND degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=att_events.CrsCod",
|
||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||
DB_QuerySELECT (&mysql_res,"can not get number of attendance events",
|
||||
"SELECT COUNT(*),SUM(att_events.NumNotif)"
|
||||
" FROM degrees,courses,att_events"
|
||||
" WHERE degrees.CtrCod=%ld"
|
||||
" AND degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=att_events.CrsCod",
|
||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||
break;
|
||||
case Sco_SCOPE_DEG:
|
||||
DB_BuildQuery ("SELECT COUNT(*),SUM(att_events.NumNotif)"
|
||||
" FROM courses,att_events"
|
||||
" WHERE courses.DegCod=%ld"
|
||||
" AND courses.CrsCod=att_events.CrsCod",
|
||||
Gbl.CurrentDeg.Deg.DegCod);
|
||||
DB_QuerySELECT (&mysql_res,"can not get number of attendance events",
|
||||
"SELECT COUNT(*),SUM(att_events.NumNotif)"
|
||||
" FROM courses,att_events"
|
||||
" WHERE courses.DegCod=%ld"
|
||||
" AND courses.CrsCod=att_events.CrsCod",
|
||||
Gbl.CurrentDeg.Deg.DegCod);
|
||||
break;
|
||||
case Sco_SCOPE_CRS:
|
||||
DB_BuildQuery ("SELECT COUNT(*),SUM(NumNotif)"
|
||||
" FROM att_events"
|
||||
" WHERE CrsCod=%ld",
|
||||
Gbl.CurrentCrs.Crs.CrsCod);
|
||||
DB_QuerySELECT (&mysql_res,"can not get number of attendance events",
|
||||
"SELECT COUNT(*),SUM(NumNotif)"
|
||||
" FROM att_events"
|
||||
" WHERE CrsCod=%ld",
|
||||
Gbl.CurrentCrs.Crs.CrsCod);
|
||||
break;
|
||||
default:
|
||||
Lay_WrongScopeExit ();
|
||||
break;
|
||||
}
|
||||
DB_QuerySELECT_new (&mysql_res,"can not get number of attendance events");
|
||||
|
||||
/***** Get number of attendance events *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
@ -2177,12 +2188,10 @@ static void Att_PutParamsCodGrps (long AttCod)
|
|||
|
||||
/***** Get groups associated to an attendance event from database *****/
|
||||
if (Gbl.CurrentCrs.Grps.NumGrps)
|
||||
{
|
||||
DB_BuildQuery ("SELECT GrpCod FROM att_grp"
|
||||
" WHERE att_grp.AttCod=%ld",
|
||||
AttCod);
|
||||
NumGrps = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get groups of an attendance event");
|
||||
}
|
||||
NumGrps = (unsigned) DB_QuerySELECT (&mysql_res,"can not get groups of an attendance event",
|
||||
"SELECT GrpCod FROM att_grp"
|
||||
" WHERE att_grp.AttCod=%ld",
|
||||
AttCod);
|
||||
else
|
||||
NumGrps = 0;
|
||||
|
||||
|
@ -2465,14 +2474,17 @@ static bool Att_CheckIfUsrIsInTableAttUsr (long AttCod,long UsrCod,bool *Present
|
|||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned NumRows;
|
||||
unsigned long NumRows;
|
||||
bool InDBTable;
|
||||
|
||||
/***** Check if a student is registered in an event in database *****/
|
||||
DB_BuildQuery ("SELECT Present FROM att_usr"
|
||||
" WHERE AttCod=%ld AND UsrCod=%ld",
|
||||
AttCod,UsrCod);
|
||||
if ((NumRows = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get if a student is already registered in an event")))
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get if a student"
|
||||
" is already registered"
|
||||
" in an event",
|
||||
"SELECT Present FROM att_usr"
|
||||
" WHERE AttCod=%ld AND UsrCod=%ld",
|
||||
AttCod,UsrCod);
|
||||
if (NumRows)
|
||||
{
|
||||
InDBTable = true;
|
||||
|
||||
|
@ -2517,14 +2529,18 @@ static bool Att_CheckIfUsrIsPresentInAttEventAndGetComments (long AttCod,long Us
|
|||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned NumRows;
|
||||
unsigned long NumRows;
|
||||
bool Present;
|
||||
|
||||
/***** Check if a students is registered in an event in database *****/
|
||||
DB_BuildQuery ("SELECT Present,CommentStd,CommentTch FROM att_usr"
|
||||
" WHERE AttCod=%ld AND UsrCod=%ld",
|
||||
AttCod,UsrCod);
|
||||
if ((NumRows = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get if a student is already registered in an event")))
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get if a student"
|
||||
" is already registered"
|
||||
" in an event",
|
||||
"SELECT Present,CommentStd,CommentTch"
|
||||
" FROM att_usr"
|
||||
" WHERE AttCod=%ld AND UsrCod=%ld",
|
||||
AttCod,UsrCod);
|
||||
if (NumRows)
|
||||
{
|
||||
/* Get row */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
@ -2998,11 +3014,11 @@ static void Att_GetListSelectedAttCods (char **StrAttCodsSelected)
|
|||
else // No students attended to this event
|
||||
{
|
||||
/***** Get groups associated to an attendance event from database *****/
|
||||
DB_BuildQuery ("SELECT GrpCod FROM att_grp"
|
||||
" WHERE att_grp.AttCod=%ld",
|
||||
Gbl.AttEvents.Lst[NumAttEvent].AttCod);
|
||||
NumGrpsInThisEvent = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get groups of an attendance event");
|
||||
|
||||
NumGrpsInThisEvent = (unsigned) DB_QuerySELECT (&mysql_res,"can not get groups"
|
||||
" of an attendance event",
|
||||
"SELECT GrpCod FROM att_grp"
|
||||
" WHERE att_grp.AttCod=%ld",
|
||||
Gbl.AttEvents.Lst[NumAttEvent].AttCod);
|
||||
if (NumGrpsInThisEvent) // This event is associated to groups
|
||||
/* Get groups associated to this event */
|
||||
for (NumGrpInThisEvent = 0;
|
||||
|
|
132
swad_banner.c
132
swad_banner.c
|
@ -65,7 +65,7 @@ extern struct Globals Gbl;
|
|||
|
||||
static void Ban_WriteListOfBanners (void);
|
||||
static void Ban_PutFormToEditBanners (void);
|
||||
static void Ban_GetListBanners (void);
|
||||
static void Ban_GetListBanners (MYSQL_RES **mysql_res,unsigned long NumRows);
|
||||
static void Ban_PutIconToViewBanners (void);
|
||||
static void Ban_ListBannersForEdition (void);
|
||||
static void Ban_PutParamBanCod (long BanCod);
|
||||
|
@ -104,6 +104,8 @@ void Ban_SeeBanners (void)
|
|||
extern const char *Txt_Banners;
|
||||
extern const char *Txt_No_banners;
|
||||
extern const char *Txt_New_banner;
|
||||
MYSQL_RES *mysql_res;
|
||||
unsigned long NumRows;
|
||||
|
||||
/***** Put contextual links *****/
|
||||
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
|
||||
|
@ -114,11 +116,12 @@ void Ban_SeeBanners (void)
|
|||
fprintf (Gbl.F.Out,"</div>");
|
||||
|
||||
/***** Get list of banners *****/
|
||||
DB_BuildQuery ("SELECT BanCod,Hidden,ShortName,FullName,Img,WWW"
|
||||
" FROM banners"
|
||||
" WHERE Hidden='N'"
|
||||
" ORDER BY ShortName");
|
||||
Ban_GetListBanners ();
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get banners",
|
||||
"SELECT BanCod,Hidden,ShortName,FullName,Img,WWW"
|
||||
" FROM banners"
|
||||
" WHERE Hidden='N'"
|
||||
" ORDER BY ShortName");
|
||||
Ban_GetListBanners (&mysql_res,NumRows);
|
||||
|
||||
/***** Start box *****/
|
||||
Box_StartBox (NULL,Txt_Banners,Ban_PutFormToEditBanners,
|
||||
|
@ -197,6 +200,8 @@ void Ban_EditBanners (void)
|
|||
{
|
||||
extern const char *Hlp_SYSTEM_Banners_edit;
|
||||
extern const char *Txt_Banners;
|
||||
MYSQL_RES *mysql_res;
|
||||
unsigned long NumRows;
|
||||
|
||||
/***** Put contextual links *****/
|
||||
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
|
||||
|
@ -207,9 +212,10 @@ void Ban_EditBanners (void)
|
|||
fprintf (Gbl.F.Out,"</div>");
|
||||
|
||||
/***** Get list of banners *****/
|
||||
DB_BuildQuery ("SELECT BanCod,Hidden,ShortName,FullName,Img,WWW"
|
||||
" FROM banners ORDER BY ShortName");
|
||||
Ban_GetListBanners ();
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get banners",
|
||||
"SELECT BanCod,Hidden,ShortName,FullName,Img,WWW"
|
||||
" FROM banners ORDER BY ShortName");
|
||||
Ban_GetListBanners (&mysql_res,NumRows);
|
||||
|
||||
/***** Start box *****/
|
||||
Box_StartBox (NULL,Txt_Banners,Ban_PutIconToViewBanners,
|
||||
|
@ -233,67 +239,61 @@ void Ban_EditBanners (void)
|
|||
/**************************** List all the banners ***************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Ban_GetListBanners (void)
|
||||
static void Ban_GetListBanners (MYSQL_RES **mysql_res,unsigned long NumRows)
|
||||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned long NumRows;
|
||||
unsigned NumBan;
|
||||
struct Banner *Ban;
|
||||
|
||||
if (Gbl.DB.DatabaseIsOpen)
|
||||
/***** Get banners from database *****/
|
||||
if (NumRows) // Banners found...
|
||||
{
|
||||
/***** Get banners from database *****/
|
||||
NumRows = DB_QuerySELECT_new (&mysql_res,"can not get banners");
|
||||
Gbl.Banners.Num = (unsigned) NumRows;
|
||||
|
||||
if (NumRows) // Banners found...
|
||||
/***** Create list with banners *****/
|
||||
if ((Gbl.Banners.Lst = (struct Banner *)
|
||||
calloc (NumRows,sizeof (struct Banner))) == NULL)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
|
||||
/***** Get the banners *****/
|
||||
for (NumBan = 0;
|
||||
NumBan < Gbl.Banners.Num;
|
||||
NumBan++)
|
||||
{
|
||||
Gbl.Banners.Num = (unsigned) NumRows;
|
||||
Ban = &(Gbl.Banners.Lst[NumBan]);
|
||||
|
||||
/***** Create list with banners *****/
|
||||
if ((Gbl.Banners.Lst = (struct Banner *) calloc (NumRows,sizeof (struct Banner))) == NULL)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
/* Get next banner */
|
||||
row = mysql_fetch_row (*mysql_res);
|
||||
|
||||
/***** Get the banners *****/
|
||||
for (NumBan = 0;
|
||||
NumBan < Gbl.Banners.Num;
|
||||
NumBan++)
|
||||
{
|
||||
Ban = &(Gbl.Banners.Lst[NumBan]);
|
||||
/* Get banner code (row[0]) */
|
||||
if ((Ban->BanCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
|
||||
Lay_ShowErrorAndExit ("Wrong code of banner.");
|
||||
|
||||
/* Get next banner */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
/* Get if banner is hidden (row[1]) */
|
||||
Ban->Hidden = (row[1][0] == 'Y');
|
||||
|
||||
/* Get banner code (row[0]) */
|
||||
if ((Ban->BanCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
|
||||
Lay_ShowErrorAndExit ("Wrong code of banner.");
|
||||
/* Get the short name of the banner (row[2]) */
|
||||
Str_Copy (Ban->ShrtName,row[2],
|
||||
Ban_MAX_BYTES_SHRT_NAME);
|
||||
|
||||
/* Get if banner is hidden (row[1]) */
|
||||
Ban->Hidden = (row[1][0] == 'Y');
|
||||
/* Get the full name of the banner (row[3]) */
|
||||
Str_Copy (Ban->FullName,row[3],
|
||||
Ban_MAX_BYTES_FULL_NAME);
|
||||
|
||||
/* Get the short name of the banner (row[2]) */
|
||||
Str_Copy (Ban->ShrtName,row[2],
|
||||
Ban_MAX_BYTES_SHRT_NAME);
|
||||
/* Get the image of the banner (row[4]) */
|
||||
Str_Copy (Ban->Img,row[4],
|
||||
Ban_MAX_BYTES_IMAGE);
|
||||
|
||||
/* Get the full name of the banner (row[3]) */
|
||||
Str_Copy (Ban->FullName,row[3],
|
||||
Ban_MAX_BYTES_FULL_NAME);
|
||||
|
||||
/* Get the image of the banner (row[4]) */
|
||||
Str_Copy (Ban->Img,row[4],
|
||||
Ban_MAX_BYTES_IMAGE);
|
||||
|
||||
/* Get the URL of the banner (row[5]) */
|
||||
Str_Copy (Ban->WWW,row[5],
|
||||
Cns_MAX_BYTES_WWW);
|
||||
}
|
||||
/* Get the URL of the banner (row[5]) */
|
||||
Str_Copy (Ban->WWW,row[5],
|
||||
Cns_MAX_BYTES_WWW);
|
||||
}
|
||||
else
|
||||
Gbl.Banners.Num = 0;
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
}
|
||||
else
|
||||
Gbl.Banners.Num = 0;
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (mysql_res);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -314,11 +314,10 @@ void Ban_GetDataOfBannerByCod (struct Banner *Ban)
|
|||
if (Ban->BanCod > 0)
|
||||
{
|
||||
/***** Get data of a banner from database *****/
|
||||
DB_BuildQuery ("SELECT Hidden,ShortName,FullName,Img,WWW"
|
||||
" FROM banners WHERE BanCod=%ld",
|
||||
Ban->BanCod);
|
||||
NumRows = DB_QuerySELECT_new (&mysql_res,"can not get data of a banner");
|
||||
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get data of a banner",
|
||||
"SELECT Hidden,ShortName,FullName,Img,WWW"
|
||||
" FROM banners WHERE BanCod=%ld",
|
||||
Ban->BanCod);
|
||||
if (NumRows) // Banner found...
|
||||
{
|
||||
/* Get row */
|
||||
|
@ -1007,17 +1006,20 @@ static void Ban_CreateBanner (struct Banner *Ban)
|
|||
|
||||
void Ban_WriteMenuWithBanners (void)
|
||||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
unsigned long NumRows;
|
||||
unsigned NumBan;
|
||||
|
||||
/***** Get random banner *****/
|
||||
// The banner(s) will change once in a while
|
||||
DB_BuildQuery ("SELECT BanCod,Hidden,ShortName,FullName,Img,WWW"
|
||||
" FROM banners"
|
||||
" WHERE Hidden='N'"
|
||||
" ORDER BY RAND(%lu) LIMIT %u",
|
||||
(unsigned long) (Gbl.StartExecutionTimeUTC / Cfg_TIME_TO_CHANGE_BANNER),
|
||||
Cfg_NUMBER_OF_BANNERS);
|
||||
Ban_GetListBanners ();
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get banners",
|
||||
"SELECT BanCod,Hidden,ShortName,FullName,Img,WWW"
|
||||
" FROM banners"
|
||||
" WHERE Hidden='N'"
|
||||
" ORDER BY RAND(%lu) LIMIT %u",
|
||||
(unsigned long) (Gbl.StartExecutionTimeUTC / Cfg_TIME_TO_CHANGE_BANNER),
|
||||
Cfg_NUMBER_OF_BANNERS);
|
||||
Ban_GetListBanners (&mysql_res,NumRows);
|
||||
|
||||
/***** Write all the banners *****/
|
||||
for (NumBan = 0;
|
||||
|
|
166
swad_centre.c
166
swad_centre.c
|
@ -144,29 +144,32 @@ void Ctr_SeeCtrWithPendingDegs (void)
|
|||
switch (Gbl.Usrs.Me.Role.Logged)
|
||||
{
|
||||
case Rol_CTR_ADM:
|
||||
DB_BuildQuery ("SELECT degrees.CtrCod,COUNT(*)"
|
||||
" FROM degrees,ctr_admin,centres"
|
||||
" WHERE (degrees.Status & %u)<>0"
|
||||
" AND degrees.CtrCod=ctr_admin.CtrCod"
|
||||
" AND ctr_admin.UsrCod=%ld"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" GROUP BY degrees.CtrCod ORDER BY centres.ShortName",
|
||||
(unsigned) Deg_STATUS_BIT_PENDING,Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
NumCtrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get centres"
|
||||
" with pending degrees",
|
||||
"SELECT degrees.CtrCod,COUNT(*)"
|
||||
" FROM degrees,ctr_admin,centres"
|
||||
" WHERE (degrees.Status & %u)<>0"
|
||||
" AND degrees.CtrCod=ctr_admin.CtrCod"
|
||||
" AND ctr_admin.UsrCod=%ld"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" GROUP BY degrees.CtrCod ORDER BY centres.ShortName",
|
||||
(unsigned) Deg_STATUS_BIT_PENDING,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
break;
|
||||
case Rol_SYS_ADM:
|
||||
DB_BuildQuery ("SELECT degrees.CtrCod,COUNT(*)"
|
||||
" FROM degrees,centres"
|
||||
" WHERE (degrees.Status & %u)<>0"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" GROUP BY degrees.CtrCod ORDER BY centres.ShortName",
|
||||
(unsigned) Deg_STATUS_BIT_PENDING);
|
||||
NumCtrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get centres"
|
||||
" with pending degrees",
|
||||
"SELECT degrees.CtrCod,COUNT(*)"
|
||||
" FROM degrees,centres"
|
||||
" WHERE (degrees.Status & %u)<>0"
|
||||
" AND degrees.CtrCod=centres.CtrCod"
|
||||
" GROUP BY degrees.CtrCod ORDER BY centres.ShortName",
|
||||
(unsigned) Deg_STATUS_BIT_PENDING);
|
||||
break;
|
||||
default: // Forbidden for other users
|
||||
return;
|
||||
}
|
||||
|
||||
/***** Get centres *****/
|
||||
if ((NumCtrs = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get centres with pending degrees")))
|
||||
if (NumCtrs)
|
||||
{
|
||||
/***** Start box and table *****/
|
||||
Box_StartBoxTable (NULL,Txt_Centres_with_pending_degrees,NULL,
|
||||
|
@ -1052,26 +1055,26 @@ void Ctr_GetListCentres (long InsCod)
|
|||
Lay_NotEnoughMemoryExit ();
|
||||
break;
|
||||
}
|
||||
DB_BuildQuery ("(SELECT centres.CtrCod,centres.InsCod,centres.PlcCod,"
|
||||
"centres.Status,centres.RequesterUsrCod,"
|
||||
"centres.ShortName,centres.FullName,centres.WWW,"
|
||||
"COUNT(DISTINCT usr_data.UsrCod) AS NumUsrs"
|
||||
" FROM centres,usr_data"
|
||||
" WHERE centres.InsCod=%ld"
|
||||
" AND centres.CtrCod=usr_data.CtrCod"
|
||||
" GROUP BY centres.CtrCod)"
|
||||
" UNION "
|
||||
"(SELECT CtrCod,InsCod,PlcCod,Status,RequesterUsrCod,"
|
||||
"ShortName,FullName,WWW,0 AS NumUsrs"
|
||||
" FROM centres"
|
||||
" WHERE centres.InsCod=%ld"
|
||||
" AND CtrCod NOT IN"
|
||||
" (SELECT DISTINCT CtrCod FROM usr_data))"
|
||||
" ORDER BY %s",
|
||||
InsCod,
|
||||
InsCod,
|
||||
OrderBySubQuery);
|
||||
NumRows = DB_QuerySELECT_new (&mysql_res,"can not get centres");
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get centres",
|
||||
"(SELECT centres.CtrCod,centres.InsCod,centres.PlcCod,"
|
||||
"centres.Status,centres.RequesterUsrCod,"
|
||||
"centres.ShortName,centres.FullName,centres.WWW,"
|
||||
"COUNT(DISTINCT usr_data.UsrCod) AS NumUsrs"
|
||||
" FROM centres,usr_data"
|
||||
" WHERE centres.InsCod=%ld"
|
||||
" AND centres.CtrCod=usr_data.CtrCod"
|
||||
" GROUP BY centres.CtrCod)"
|
||||
" UNION "
|
||||
"(SELECT CtrCod,InsCod,PlcCod,Status,RequesterUsrCod,"
|
||||
"ShortName,FullName,WWW,0 AS NumUsrs"
|
||||
" FROM centres"
|
||||
" WHERE centres.InsCod=%ld"
|
||||
" AND CtrCod NOT IN"
|
||||
" (SELECT DISTINCT CtrCod FROM usr_data))"
|
||||
" ORDER BY %s",
|
||||
InsCod,
|
||||
InsCod,
|
||||
OrderBySubQuery);
|
||||
free ((void *) OrderBySubQuery);
|
||||
|
||||
if (NumRows) // Centres found...
|
||||
|
@ -1151,6 +1154,7 @@ bool Ctr_GetDataOfCentreByCod (struct Centre *Ctr)
|
|||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned long NumRows;
|
||||
bool CtrFound = false;
|
||||
|
||||
/***** Clear data *****/
|
||||
|
@ -1170,26 +1174,27 @@ bool Ctr_GetDataOfCentreByCod (struct Centre *Ctr)
|
|||
if (Ctr->CtrCod > 0)
|
||||
{
|
||||
/***** Get data of a centre from database *****/
|
||||
DB_BuildQuery ("(SELECT centres.InsCod,centres.PlcCod,"
|
||||
"centres.Status,centres.RequesterUsrCod,"
|
||||
"centres.ShortName,centres.FullName,centres.WWW,"
|
||||
"COUNT(DISTINCT usr_data.UsrCod) AS NumUsrs"
|
||||
" FROM centres,usr_data"
|
||||
" WHERE centres.CtrCod=%ld"
|
||||
" AND centres.CtrCod=usr_data.CtrCod"
|
||||
" GROUP BY centres.CtrCod)"
|
||||
" UNION "
|
||||
"(SELECT InsCod,PlcCod,"
|
||||
"Status,RequesterUsrCod,"
|
||||
"ShortName,FullName,WWW,"
|
||||
"0 AS NumUsrs"
|
||||
" FROM centres"
|
||||
" WHERE CtrCod=%ld"
|
||||
" AND CtrCod NOT IN"
|
||||
" (SELECT DISTINCT CtrCod FROM usr_data))",
|
||||
Ctr->CtrCod,
|
||||
Ctr->CtrCod);
|
||||
if (DB_QuerySELECT_new (&mysql_res,"can not get data of a centre")) // Centre found...
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get data of a centre",
|
||||
"(SELECT centres.InsCod,centres.PlcCod,"
|
||||
"centres.Status,centres.RequesterUsrCod,"
|
||||
"centres.ShortName,centres.FullName,centres.WWW,"
|
||||
"COUNT(DISTINCT usr_data.UsrCod) AS NumUsrs"
|
||||
" FROM centres,usr_data"
|
||||
" WHERE centres.CtrCod=%ld"
|
||||
" AND centres.CtrCod=usr_data.CtrCod"
|
||||
" GROUP BY centres.CtrCod)"
|
||||
" UNION "
|
||||
"(SELECT InsCod,PlcCod,"
|
||||
"Status,RequesterUsrCod,"
|
||||
"ShortName,FullName,WWW,"
|
||||
"0 AS NumUsrs"
|
||||
" FROM centres"
|
||||
" WHERE CtrCod=%ld"
|
||||
" AND CtrCod NOT IN"
|
||||
" (SELECT DISTINCT CtrCod FROM usr_data))",
|
||||
Ctr->CtrCod,
|
||||
Ctr->CtrCod);
|
||||
if (NumRows) // Centre found...
|
||||
{
|
||||
/* Get row */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
@ -1256,9 +1261,9 @@ long Ctr_GetInsCodOfCentreByCod (long CtrCod)
|
|||
if (CtrCod > 0)
|
||||
{
|
||||
/***** Get the institution code of a centre from database *****/
|
||||
DB_BuildQuery ("SELECT InsCod FROM centres WHERE CtrCod=%ld",
|
||||
CtrCod);
|
||||
if (DB_QuerySELECT_new (&mysql_res,"can not get the institution of a centre") == 1)
|
||||
if (DB_QuerySELECT (&mysql_res,"can not get the institution of a centre",
|
||||
"SELECT InsCod FROM centres WHERE CtrCod=%ld",
|
||||
CtrCod) == 1)
|
||||
{
|
||||
/***** Get the institution code of this centre *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
@ -1285,10 +1290,10 @@ void Ctr_GetShortNameOfCentreByCod (struct Centre *Ctr)
|
|||
if (Ctr->CtrCod > 0)
|
||||
{
|
||||
/***** Get the short name of a centre from database *****/
|
||||
DB_BuildQuery ("SELECT ShortName FROM centres"
|
||||
" WHERE CtrCod=%ld",
|
||||
Ctr->CtrCod);
|
||||
if (DB_QuerySELECT_new (&mysql_res,"can not get the short name of a centre") == 1)
|
||||
if (DB_QuerySELECT (&mysql_res,"can not get the short name of a centre",
|
||||
"SELECT ShortName FROM centres"
|
||||
" WHERE CtrCod=%ld",
|
||||
Ctr->CtrCod) == 1)
|
||||
{
|
||||
/***** Get the short name of this centre *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
@ -1316,10 +1321,10 @@ static void Ctr_GetPhotoAttribution (long CtrCod,char **PhotoAttribution)
|
|||
Ctr_FreePhotoAttribution (PhotoAttribution);
|
||||
|
||||
/***** Get photo attribution from database *****/
|
||||
DB_BuildQuery ("SELECT PhotoAttribution"
|
||||
" FROM centres WHERE CtrCod=%ld",
|
||||
CtrCod);
|
||||
if (DB_QuerySELECT_new (&mysql_res,"can not get photo attribution"))
|
||||
if (DB_QuerySELECT (&mysql_res,"can not get photo attribution",
|
||||
"SELECT PhotoAttribution"
|
||||
" FROM centres WHERE CtrCod=%ld",
|
||||
CtrCod))
|
||||
{
|
||||
/* Get row */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
@ -1398,12 +1403,12 @@ void Ctr_WriteSelectorOfCentre (void)
|
|||
if (Gbl.CurrentIns.Ins.InsCod > 0)
|
||||
{
|
||||
/***** Get centres from database *****/
|
||||
DB_BuildQuery ("SELECT DISTINCT CtrCod,ShortName"
|
||||
" FROM centres"
|
||||
" WHERE InsCod=%ld"
|
||||
" ORDER BY ShortName",
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
NumCtrs = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get centres");
|
||||
NumCtrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get centres",
|
||||
"SELECT DISTINCT CtrCod,ShortName"
|
||||
" FROM centres"
|
||||
" WHERE InsCod=%ld"
|
||||
" ORDER BY ShortName",
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
|
||||
/***** Get centres *****/
|
||||
for (NumCtr = 0;
|
||||
|
@ -2935,20 +2940,17 @@ unsigned Ctr_GetNumCtrsWithUsrs (Rol_Role_t Role,const char *SubQuery)
|
|||
/*****************************************************************************/
|
||||
/****************************** List centres found ***************************/
|
||||
/*****************************************************************************/
|
||||
// Returns number of centres found
|
||||
|
||||
unsigned Ctr_ListCtrsFound (void)
|
||||
void Ctr_ListCtrsFound (MYSQL_RES **mysql_res,unsigned NumCtrs)
|
||||
{
|
||||
extern const char *Txt_centre;
|
||||
extern const char *Txt_centres;
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned NumCtrs;
|
||||
unsigned NumCtr;
|
||||
struct Centre Ctr;
|
||||
|
||||
/***** Query database *****/
|
||||
if ((NumCtrs = (unsigned) DB_QuerySELECT_new (&mysql_res,"can not get centres")))
|
||||
if (NumCtrs)
|
||||
{
|
||||
/***** Start box and table *****/
|
||||
/* Number of centres found */
|
||||
|
@ -2968,7 +2970,7 @@ unsigned Ctr_ListCtrsFound (void)
|
|||
NumCtr++)
|
||||
{
|
||||
/* Get next centre */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
row = mysql_fetch_row (*mysql_res);
|
||||
|
||||
/* Get centre code (row[0]) */
|
||||
Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||
|
@ -2985,7 +2987,5 @@ unsigned Ctr_ListCtrsFound (void)
|
|||
}
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
||||
return NumCtrs;
|
||||
DB_FreeMySQLResult (mysql_res);
|
||||
}
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
/********************************* Headers ***********************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#include <mysql/mysql.h> // To access MySQL databases
|
||||
|
||||
#include "swad_action.h"
|
||||
#include "swad_constant.h"
|
||||
#include "swad_degree.h"
|
||||
|
@ -134,6 +136,6 @@ unsigned Ctr_GetNumCtrsWithDegs (const char *SubQuery);
|
|||
unsigned Ctr_GetNumCtrsWithCrss (const char *SubQuery);
|
||||
unsigned Ctr_GetNumCtrsWithUsrs (Rol_Role_t Role,const char *SubQuery);
|
||||
|
||||
unsigned Ctr_ListCtrsFound (void);
|
||||
void Ctr_ListCtrsFound (MYSQL_RES **mysql_res,unsigned NumCtrs);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -355,10 +355,11 @@ En OpenSWAD:
|
|||
ps2pdf source.ps destination.pdf
|
||||
*/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 18.11 (2018-10-30)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 18.11.1 (2018-10-30)"
|
||||
#define CSS_FILE "swad18.4.css"
|
||||
#define JS_FILE "swad17.17.1.js"
|
||||
/*
|
||||
Version 18.11.1: Oct 30, 2018 Joining building and performing query into one function. (235497 lines)
|
||||
Version 18.11: Oct 30, 2018 Joining building and performing query into one function. (235465 lines)
|
||||
Version 18.10.2: Oct 30, 2018 Fixed bugs in access to database. (235414 lines)
|
||||
Version 18.10.1: Oct 30, 2018 Fixed bugs in access to database. (235399 lines)
|
||||
|
|
16
swad_chat.c
16
swad_chat.c
|
@ -273,10 +273,11 @@ void Cht_ShowListOfChatRoomsWithUsrs (void)
|
|||
unsigned long NumRow,NumRows;
|
||||
|
||||
/***** Get chat rooms with connected users from database *****/
|
||||
DB_BuildQuery ("SELECT RoomCode,NumUsrs FROM chat"
|
||||
" WHERE NumUsrs>0 ORDER BY NumUsrs DESC,RoomCode");
|
||||
NumRows = DB_QuerySELECT_new (&mysql_res,"can not get chat rooms with connected users");
|
||||
|
||||
NumRows = DB_QuerySELECT (&mysql_res,"can not get chat rooms"
|
||||
" with connected users",
|
||||
"SELECT RoomCode,NumUsrs FROM chat"
|
||||
" WHERE NumUsrs>0"
|
||||
" ORDER BY NumUsrs DESC,RoomCode");
|
||||
if (NumRows > 0) // If not empty chat rooms found
|
||||
{
|
||||
/***** Start box and table *****/
|
||||
|
@ -381,9 +382,10 @@ static unsigned Cht_GetNumUsrsInChatRoom (const char *RoomCode)
|
|||
unsigned NumUsrs = 0;
|
||||
|
||||
/***** Get number of users connected to chat rooms from database *****/
|
||||
DB_BuildQuery ("SELECT NumUsrs FROM chat WHERE RoomCode='%s'",
|
||||
RoomCode);
|
||||
if (DB_QuerySELECT_new (&mysql_res,"can not get number of users connected to a chat room"))
|
||||
if (DB_QuerySELECT (&mysql_res,"can not get number of users"
|
||||
" connected to a chat room",
|
||||
"SELECT NumUsrs FROM chat WHERE RoomCode='%s'",
|
||||
RoomCode))
|
||||
{
|
||||
/* Get number of users connected to the chat room */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
|
|
@ -688,6 +688,8 @@ static unsigned Sch_SearchInstitutionsInDB (const char *RangeQuery)
|
|||
static unsigned Sch_SearchCentresInDB (const char *RangeQuery)
|
||||
{
|
||||
char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1];
|
||||
MYSQL_RES *mysql_res;
|
||||
unsigned NumCtrs;
|
||||
|
||||
/***** Check scope *****/
|
||||
if (Gbl.Scope.Current != Sco_SCOPE_DEG &&
|
||||
|
@ -698,15 +700,17 @@ static unsigned Sch_SearchCentresInDB (const char *RangeQuery)
|
|||
if (Sch_BuildSearchQuery (SearchQuery,"centres.FullName",NULL,NULL))
|
||||
{
|
||||
/***** Query database and list centres found *****/
|
||||
DB_BuildQuery ("SELECT centres.CtrCod"
|
||||
" FROM centres,institutions,countries"
|
||||
" WHERE %s"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod=countries.CtyCod"
|
||||
"%s"
|
||||
" ORDER BY centres.FullName,institutions.FullName",
|
||||
SearchQuery,RangeQuery);
|
||||
return Ctr_ListCtrsFound ();
|
||||
NumCtrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get centres",
|
||||
"SELECT centres.CtrCod"
|
||||
" FROM centres,institutions,countries"
|
||||
" WHERE %s"
|
||||
" AND centres.InsCod=institutions.InsCod"
|
||||
" AND institutions.CtyCod=countries.CtyCod"
|
||||
"%s"
|
||||
" ORDER BY centres.FullName,institutions.FullName",
|
||||
SearchQuery,RangeQuery);
|
||||
Ctr_ListCtrsFound (&mysql_res,NumCtrs);
|
||||
return NumCtrs;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue