Version 20.100.4: Sep 11, 2021 Queries moved to module swad_timeline_database.

This commit is contained in:
acanas 2021-09-11 17:44:00 +02:00
parent c34477af92
commit b4b1e17db2
6 changed files with 339 additions and 317 deletions

View File

@ -602,13 +602,15 @@ TODO: FIX BUG, URGENT! En las fechas como par
TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo.
*/
#define Log_PLATFORM_VERSION "SWAD 20.100.2 (2021-09-11)"
#define Log_PLATFORM_VERSION "SWAD 20.100.4 (2021-09-11)"
#define CSS_FILE "swad20.45.css"
#define JS_FILE "swad20.69.1.js"
/*
TODO: Rename CENTRE to CENTER in help wiki.
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
Version 20.100.4: Sep 11, 2021 Queries moved to module swad_timeline_database. (314934 lines)
Version 20.100.3: Sep 11, 2021 Queries moved to module swad_file_browser. (314923 lines)
Version 20.100.2: Sep 11, 2021 Queries moved to module swad_institution_database. (314919 lines)
Version 20.100.1: Sep 10, 2021 Queries moved to module swad_institution_database. (314941 lines)
Version 20.100: Sep 10, 2021 New module swad_figure_database for database queries related to figures. (314940 lines)

View File

@ -61,6 +61,7 @@
#include "swad_survey.h"
#include "swad_test.h"
#include "swad_timeline.h"
#include "swad_timeline_database.h"
#include "swad_timeline_note.h"
/*****************************************************************************/
@ -1764,117 +1765,8 @@ static void Fig_GetNumberOfOERs (Brw_License_t License,
unsigned Public;
/***** Get the size of a file browser *****/
switch (Gbl.Scope.Current)
{
case HieLvl_SYS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of OERs",
"SELECT Public," // row[0]
"COUNT(*)" // row[1]
" FROM brw_files"
" WHERE License=%u"
" GROUP BY Public",
(unsigned) License);
break;
case HieLvl_CTY:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of OERs",
"SELECT brw_files.Public," // row[0]
"COUNT(*)" // row[1]
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"brw_files"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=brw_files.Cod"
" AND brw_files.FileBrowser IN (%u,%u)"
" AND brw_files.License=%u"
" GROUP BY brw_files.Public",
Gbl.Hierarchy.Cty.CtyCod,
(unsigned) Brw_ADMI_DOC_CRS,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) License);
break;
case HieLvl_INS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of OERs",
"SELECT brw_files.Public," // row[0]
"COUNT(*)" // row[1]
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"brw_files"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=brw_files.Cod"
" AND brw_files.FileBrowser IN (%u,%u)"
" AND brw_files.License=%u"
" GROUP BY brw_files.Public",
Gbl.Hierarchy.Ins.InsCod,
(unsigned) Brw_ADMI_DOC_CRS,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) License);
break;
case HieLvl_CTR:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of OERs",
"SELECT brw_files.Public," // row[0]
"COUNT(*)" // row[1]
" FROM deg_degrees,"
"crs_courses,"
"brw_files"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=brw_files.Cod"
" AND brw_files.FileBrowser IN (%u,%u)"
" AND brw_files.License=%u"
" GROUP BY brw_files.Public",
Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) Brw_ADMI_DOC_CRS,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) License);
break;
case HieLvl_DEG:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of OERs",
"SELECT brw_files.Public," // row[0]
"COUNT(*)" // row[1]
" FROM crs_courses,"
"brw_files"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=brw_files.Cod"
" AND brw_files.FileBrowser IN (%u,%u)"
" AND brw_files.License=%u"
" GROUP BY brw_files.Public",
Gbl.Hierarchy.Deg.DegCod,
(unsigned) Brw_ADMI_DOC_CRS,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) License);
break;
case HieLvl_CRS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of OERs",
"SELECT Public," // row[0]
"COUNT(*)" // row[1]
" FROM brw_files"
" WHERE Cod=%ld"
" AND FileBrowser IN (%u,%u)"
" AND License=%u"
" GROUP BY Public",
Gbl.Hierarchy.Crs.CrsCod,
(unsigned) Brw_ADMI_DOC_CRS,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) License);
break;
default:
Err_WrongScopeExit ();
break;
}
/* Query database */
NumRows = Brw_DB_GetNumberOfOERs (&mysql_res,License);
/* Reset values to zero */
NumFiles[0] = NumFiles[1] = 0L;
@ -2338,7 +2230,6 @@ static void Fig_GetAndShowTimelineActivityStats (void)
MYSQL_ROW row;
Tml_Not_NoteType_t NoteType;
unsigned NumNotes;
unsigned NumRows;
unsigned NumUsrs;
unsigned NumUsrsTotal;
@ -2359,120 +2250,17 @@ static void Fig_GetAndShowTimelineActivityStats (void)
/***** Get total number of users *****/
NumUsrsTotal = Usr_GetTotalNumberOfUsers ();
/***** Get total number of following/followers from database *****/
/***** Get total number of timeline notes and users for each note type *****/
for (NoteType = (Tml_Not_NoteType_t) 0;
NoteType <= (Tml_Not_NoteType_t) (TL_NOT_NUM_NOTE_TYPES - 1);
NoteType++)
{
switch (Gbl.Scope.Current)
/***** Get number of timeline notes and users for this type *****/
if (Tml_DB_GetNumNotesAndUsrsByType (&mysql_res,NoteType))
{
case HieLvl_SYS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(*)," // row[0]
"COUNT(DISTINCT UsrCod)" // row[1]
" FROM tml_notes WHERE NoteType=%u",
NoteType);
break;
case HieLvl_CTY:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Cty.CtyCod,
(unsigned) NoteType);
break;
case HieLvl_INS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Ins.InsCod,
(unsigned) NoteType);
break;
case HieLvl_CTR:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) NoteType);
break;
case HieLvl_DEG:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM crs_courses,"
"crs_users,"
"tml_notes"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Deg.DegCod,
(unsigned) NoteType);
break;
case HieLvl_CRS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM crs_users,"
"tml_notes"
" WHERE crs_users.CrsCod=%ld"
" AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Crs.CrsCod,
(unsigned) NoteType);
break;
default:
Err_WrongScopeExit ();
NumRows = 0; // Initialized to avoid warning
break;
}
NumNotes = 0;
NumUsrs = 0;
if (NumRows)
{
/***** Get number of social notes and number of users *****/
row = mysql_fetch_row (mysql_res);
/* Get number of social notes */
/* Get number of timeline notes */
if (row[0])
if (sscanf (row[0],"%u",&NumNotes) != 1)
NumNotes = 0;
@ -2482,11 +2270,16 @@ static void Fig_GetAndShowTimelineActivityStats (void)
if (sscanf (row[1],"%u",&NumUsrs) != 1)
NumUsrs = 0;
}
else
{
NumNotes = 0;
NumUsrs = 0;
}
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
/***** Write number of social notes and number of users *****/
/***** Write number of timeline notes and number of users *****/
HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"DAT LM\"");
@ -2508,107 +2301,16 @@ static void Fig_GetAndShowTimelineActivityStats (void)
HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT RM\"");
HTM_Double2Decimals (NumUsrs ? (double) NumNotes / (double) NumUsrs :
0.0);
HTM_Double2Decimals (NumUsrs ? (double) NumNotes /
(double) NumUsrs :
0.0);
HTM_TD_End ();
HTM_TR_End ();
}
/***** Get and write totals *****/
switch (Gbl.Scope.Current)
{
case HieLvl_SYS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(*)," // row[0]
"COUNT(DISTINCT UsrCod)" // row[1]
" FROM tml_notes");
break;
case HieLvl_CTY:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Cty.CtyCod);
break;
case HieLvl_INS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Ins.InsCod);
break;
case HieLvl_CTR:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Ctr.CtrCod);
break;
case HieLvl_DEG:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM crs_courses,"
"crs_users,"
"tml_notes"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Deg.DegCod);
break;
case HieLvl_CRS:
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM crs_users,"
"tml_notes"
" WHERE crs_users.CrsCod=%ld"
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Crs.CrsCod);
break;
default:
Err_WrongScopeExit ();
NumRows = 0; // Initialized to avoid warning
break;
}
NumNotes = 0;
NumUsrs = 0;
if (NumRows)
if (Tml_DB_GetNumNotesAndUsrsTotal (&mysql_res))
{
/* Get number of social notes and number of users */
row = mysql_fetch_row (mysql_res);
@ -2623,6 +2325,11 @@ static void Fig_GetAndShowTimelineActivityStats (void)
if (sscanf (row[1],"%u",&NumUsrs) != 1)
NumUsrs = 0;
}
else
{
NumNotes = 0;
NumUsrs = 0;
}
/* Free structure that stores the query result */
DB_FreeMySQLResult (&mysql_res);

View File

@ -13409,3 +13409,116 @@ void Brw_DB_GetSizeOfFileZone (MYSQL_RES **mysql_res,
break;
}
}
/*****************************************************************************/
/***************** Get number of OERs depending on license *******************/
/*****************************************************************************/
unsigned Brw_DB_GetNumberOfOERs (MYSQL_RES **mysql_res,Brw_License_t License)
{
switch (Gbl.Scope.Current)
{
case HieLvl_SYS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of OERs",
"SELECT Public," // row[0]
"COUNT(*)" // row[1]
" FROM brw_files"
" WHERE License=%u"
" GROUP BY Public",
(unsigned) License);
case HieLvl_CTY:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of OERs",
"SELECT brw_files.Public," // row[0]
"COUNT(*)" // row[1]
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"brw_files"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=brw_files.Cod"
" AND brw_files.FileBrowser IN (%u,%u)"
" AND brw_files.License=%u"
" GROUP BY brw_files.Public",
Gbl.Hierarchy.Cty.CtyCod,
(unsigned) Brw_ADMI_DOC_CRS,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) License);
case HieLvl_INS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of OERs",
"SELECT brw_files.Public," // row[0]
"COUNT(*)" // row[1]
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"brw_files"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=brw_files.Cod"
" AND brw_files.FileBrowser IN (%u,%u)"
" AND brw_files.License=%u"
" GROUP BY brw_files.Public",
Gbl.Hierarchy.Ins.InsCod,
(unsigned) Brw_ADMI_DOC_CRS,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) License);
case HieLvl_CTR:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of OERs",
"SELECT brw_files.Public," // row[0]
"COUNT(*)" // row[1]
" FROM deg_degrees,"
"crs_courses,"
"brw_files"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=brw_files.Cod"
" AND brw_files.FileBrowser IN (%u,%u)"
" AND brw_files.License=%u"
" GROUP BY brw_files.Public",
Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) Brw_ADMI_DOC_CRS,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) License);
case HieLvl_DEG:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of OERs",
"SELECT brw_files.Public," // row[0]
"COUNT(*)" // row[1]
" FROM crs_courses,"
"brw_files"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=brw_files.Cod"
" AND brw_files.FileBrowser IN (%u,%u)"
" AND brw_files.License=%u"
" GROUP BY brw_files.Public",
Gbl.Hierarchy.Deg.DegCod,
(unsigned) Brw_ADMI_DOC_CRS,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) License);
case HieLvl_CRS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of OERs",
"SELECT Public," // row[0]
"COUNT(*)" // row[1]
" FROM brw_files"
" WHERE Cod=%ld"
" AND FileBrowser IN (%u,%u)"
" AND License=%u"
" GROUP BY Public",
Gbl.Hierarchy.Crs.CrsCod,
(unsigned) Brw_ADMI_DOC_CRS,
(unsigned) Brw_ADMI_SHR_CRS,
(unsigned) License);
default:
Err_WrongScopeExit ();
return 0; // Not reached
}
}

View File

@ -278,5 +278,6 @@ Act_Action_t Brw_GetActionContract (void);
void Brw_DB_GetSizeOfFileZone (MYSQL_RES **mysql_res,
Brw_FileBrowser_t FileBrowser);
unsigned Brw_DB_GetNumberOfOERs (MYSQL_RES **mysql_res,Brw_License_t License);
#endif

View File

@ -212,6 +212,199 @@ void Tml_DB_MarkNotesChildrenOfFolderAsUnavailable (Tml_Not_NoteType_t NoteType,
Path);
}
/*****************************************************************************/
/********** Get number of notes and users depending on note type *************/
/*****************************************************************************/
unsigned Tml_DB_GetNumNotesAndUsrsByType (MYSQL_RES **mysql_res,
Tml_Not_NoteType_t NoteType)
{
switch (Gbl.Scope.Current)
{
case HieLvl_SYS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of social notes",
"SELECT COUNT(*)," // row[0]
"COUNT(DISTINCT UsrCod)" // row[1]
" FROM tml_notes"
" WHERE NoteType=%u",
(unsigned) NoteType);
case HieLvl_CTY:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Cty.CtyCod,
(unsigned) NoteType);
case HieLvl_INS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Ins.InsCod,
(unsigned) NoteType);
case HieLvl_CTR:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Ctr.CtrCod,
(unsigned) NoteType);
case HieLvl_DEG:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM crs_courses,"
"crs_users,"
"tml_notes"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Deg.DegCod,
(unsigned) NoteType);
case HieLvl_CRS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM crs_users,"
"tml_notes"
" WHERE crs_users.CrsCod=%ld"
" AND crs_users.UsrCod=tml_notes.UsrCod"
" AND tml_notes.NoteType=%u",
Gbl.Hierarchy.Crs.CrsCod,
(unsigned) NoteType);
default:
Err_WrongScopeExit ();
return 0; // Not reached
}
}
/*****************************************************************************/
/******************** Get total number of notes and users ********************/
/*****************************************************************************/
unsigned Tml_DB_GetNumNotesAndUsrsTotal (MYSQL_RES **mysql_res)
{
switch (Gbl.Scope.Current)
{
case HieLvl_SYS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of social notes",
"SELECT COUNT(*)," // row[0]
"COUNT(DISTINCT UsrCod)" // row[1]
" FROM tml_notes");
case HieLvl_CTY:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE ins_instits.CtyCod=%ld"
" AND ins_instits.InsCod=ctr_centers.InsCod"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Cty.CtyCod);
case HieLvl_INS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE ctr_centers.InsCod=%ld"
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Ins.InsCod);
case HieLvl_CTR:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM deg_degrees,"
"crs_courses,"
"crs_users,"
"tml_notes"
" WHERE deg_degrees.CtrCod=%ld"
" AND deg_degrees.DegCod=crs_courses.DegCod"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Ctr.CtrCod);
case HieLvl_DEG:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM crs_courses,"
"crs_users,"
"tml_notes"
" WHERE crs_courses.DegCod=%ld"
" AND crs_courses.CrsCod=crs_users.CrsCod"
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Deg.DegCod);
case HieLvl_CRS:
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get number of social notes",
"SELECT COUNT(DISTINCT tml_notes.NotCod)," // row[0]
"COUNT(DISTINCT tml_notes.UsrCod)" // row[1]
" FROM crs_users,"
"tml_notes"
" WHERE crs_users.CrsCod=%ld"
" AND crs_users.UsrCod=tml_notes.UsrCod",
Gbl.Hierarchy.Crs.CrsCod);
default:
Err_WrongScopeExit ();
return 0; // Not reached
}
}
/*****************************************************************************/
/******* Create temporary tables used to not get notes already shown *********/
/*****************************************************************************/
@ -489,7 +682,7 @@ unsigned Tml_DB_GetNumCommsInNote (long NotCod)
}
/*****************************************************************************/
/************** Get publication codes of comments of a note from database *****************/
/******* Get publication codes of comments of a note from database ***********/
/*****************************************************************************/
// Returns the number of rows got

View File

@ -60,6 +60,11 @@ void Tml_DB_MarkNoteAsUnavailable (Tml_Not_NoteType_t NoteType,long Cod);
void Tml_DB_MarkNotesChildrenOfFolderAsUnavailable (Tml_Not_NoteType_t NoteType,
Brw_FileBrowser_t FileBrowser,
long Cod,const char *Path);
unsigned Tml_DB_GetNumNotesAndUsrsByType (MYSQL_RES **mysql_res,
Tml_Not_NoteType_t NoteType);
unsigned Tml_DB_GetNumNotesAndUsrsTotal (MYSQL_RES **mysql_res);
void Tml_DB_CreateTmpTableJustRetrievedNotes (void);
void Tml_DB_CreateTmpTableVisibleTimeline (void);
void Tml_DB_InsertNoteInJustRetrievedNotes (long NotCod);
@ -69,6 +74,7 @@ void Tml_DB_DropTmpTableJustRetrievedNotes (void);
void Tml_DB_DropTmpTableVisibleTimeline (void);
void Tml_DB_ClearOldTimelinesNotesFromDB (void);
void Tml_DB_ClearTimelineNotesOfSessionFromDB (void);
void Tml_DB_RemoveNoteFavs (long NotCod);
void Tml_DB_RemoveNotePubs (long NotCod);
void Tml_DB_RemoveNote (long NotCod);