mirror of https://github.com/acanas/swad-core.git
Version 20.100.4: Sep 11, 2021 Queries moved to module swad_timeline_database.
This commit is contained in:
parent
c34477af92
commit
b4b1e17db2
|
@ -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.
|
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 CSS_FILE "swad20.45.css"
|
||||||
#define JS_FILE "swad20.69.1.js"
|
#define JS_FILE "swad20.69.1.js"
|
||||||
/*
|
/*
|
||||||
TODO: Rename CENTRE to CENTER in help wiki.
|
TODO: Rename CENTRE to CENTER in help wiki.
|
||||||
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
|
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.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.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)
|
Version 20.100: Sep 10, 2021 New module swad_figure_database for database queries related to figures. (314940 lines)
|
||||||
|
|
337
swad_figure.c
337
swad_figure.c
|
@ -61,6 +61,7 @@
|
||||||
#include "swad_survey.h"
|
#include "swad_survey.h"
|
||||||
#include "swad_test.h"
|
#include "swad_test.h"
|
||||||
#include "swad_timeline.h"
|
#include "swad_timeline.h"
|
||||||
|
#include "swad_timeline_database.h"
|
||||||
#include "swad_timeline_note.h"
|
#include "swad_timeline_note.h"
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1764,117 +1765,8 @@ static void Fig_GetNumberOfOERs (Brw_License_t License,
|
||||||
unsigned Public;
|
unsigned Public;
|
||||||
|
|
||||||
/***** Get the size of a file browser *****/
|
/***** Get the size of a file browser *****/
|
||||||
switch (Gbl.Scope.Current)
|
/* Query database */
|
||||||
{
|
NumRows = Brw_DB_GetNumberOfOERs (&mysql_res,License);
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Reset values to zero */
|
/* Reset values to zero */
|
||||||
NumFiles[0] = NumFiles[1] = 0L;
|
NumFiles[0] = NumFiles[1] = 0L;
|
||||||
|
@ -2338,7 +2230,6 @@ static void Fig_GetAndShowTimelineActivityStats (void)
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
Tml_Not_NoteType_t NoteType;
|
Tml_Not_NoteType_t NoteType;
|
||||||
unsigned NumNotes;
|
unsigned NumNotes;
|
||||||
unsigned NumRows;
|
|
||||||
unsigned NumUsrs;
|
unsigned NumUsrs;
|
||||||
unsigned NumUsrsTotal;
|
unsigned NumUsrsTotal;
|
||||||
|
|
||||||
|
@ -2359,120 +2250,17 @@ static void Fig_GetAndShowTimelineActivityStats (void)
|
||||||
/***** Get total number of users *****/
|
/***** Get total number of users *****/
|
||||||
NumUsrsTotal = Usr_GetTotalNumberOfUsers ();
|
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;
|
for (NoteType = (Tml_Not_NoteType_t) 0;
|
||||||
NoteType <= (Tml_Not_NoteType_t) (TL_NOT_NUM_NOTE_TYPES - 1);
|
NoteType <= (Tml_Not_NoteType_t) (TL_NOT_NUM_NOTE_TYPES - 1);
|
||||||
NoteType++)
|
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);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
/* Get number of social notes */
|
/* Get number of timeline notes */
|
||||||
if (row[0])
|
if (row[0])
|
||||||
if (sscanf (row[0],"%u",&NumNotes) != 1)
|
if (sscanf (row[0],"%u",&NumNotes) != 1)
|
||||||
NumNotes = 0;
|
NumNotes = 0;
|
||||||
|
@ -2482,11 +2270,16 @@ static void Fig_GetAndShowTimelineActivityStats (void)
|
||||||
if (sscanf (row[1],"%u",&NumUsrs) != 1)
|
if (sscanf (row[1],"%u",&NumUsrs) != 1)
|
||||||
NumUsrs = 0;
|
NumUsrs = 0;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NumNotes = 0;
|
||||||
|
NumUsrs = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
/***** Free structure that stores the query result *****/
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
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_TR_Begin (NULL);
|
||||||
|
|
||||||
HTM_TD_Begin ("class=\"DAT LM\"");
|
HTM_TD_Begin ("class=\"DAT LM\"");
|
||||||
|
@ -2508,107 +2301,16 @@ static void Fig_GetAndShowTimelineActivityStats (void)
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
HTM_TD_Begin ("class=\"DAT RM\"");
|
HTM_TD_Begin ("class=\"DAT RM\"");
|
||||||
HTM_Double2Decimals (NumUsrs ? (double) NumNotes / (double) NumUsrs :
|
HTM_Double2Decimals (NumUsrs ? (double) NumNotes /
|
||||||
0.0);
|
(double) NumUsrs :
|
||||||
|
0.0);
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
HTM_TR_End ();
|
HTM_TR_End ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Get and write totals *****/
|
/***** Get and write totals *****/
|
||||||
switch (Gbl.Scope.Current)
|
if (Tml_DB_GetNumNotesAndUsrsTotal (&mysql_res))
|
||||||
{
|
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
/* Get number of social notes and number of users */
|
/* Get number of social notes and number of users */
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
@ -2623,6 +2325,11 @@ static void Fig_GetAndShowTimelineActivityStats (void)
|
||||||
if (sscanf (row[1],"%u",&NumUsrs) != 1)
|
if (sscanf (row[1],"%u",&NumUsrs) != 1)
|
||||||
NumUsrs = 0;
|
NumUsrs = 0;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NumNotes = 0;
|
||||||
|
NumUsrs = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Free structure that stores the query result */
|
/* Free structure that stores the query result */
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
|
|
|
@ -13409,3 +13409,116 @@ void Brw_DB_GetSizeOfFileZone (MYSQL_RES **mysql_res,
|
||||||
break;
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -278,5 +278,6 @@ Act_Action_t Brw_GetActionContract (void);
|
||||||
|
|
||||||
void Brw_DB_GetSizeOfFileZone (MYSQL_RES **mysql_res,
|
void Brw_DB_GetSizeOfFileZone (MYSQL_RES **mysql_res,
|
||||||
Brw_FileBrowser_t FileBrowser);
|
Brw_FileBrowser_t FileBrowser);
|
||||||
|
unsigned Brw_DB_GetNumberOfOERs (MYSQL_RES **mysql_res,Brw_License_t License);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -212,6 +212,199 @@ void Tml_DB_MarkNotesChildrenOfFolderAsUnavailable (Tml_Not_NoteType_t NoteType,
|
||||||
Path);
|
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 *********/
|
/******* 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
|
// Returns the number of rows got
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,11 @@ void Tml_DB_MarkNoteAsUnavailable (Tml_Not_NoteType_t NoteType,long Cod);
|
||||||
void Tml_DB_MarkNotesChildrenOfFolderAsUnavailable (Tml_Not_NoteType_t NoteType,
|
void Tml_DB_MarkNotesChildrenOfFolderAsUnavailable (Tml_Not_NoteType_t NoteType,
|
||||||
Brw_FileBrowser_t FileBrowser,
|
Brw_FileBrowser_t FileBrowser,
|
||||||
long Cod,const char *Path);
|
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_CreateTmpTableJustRetrievedNotes (void);
|
||||||
void Tml_DB_CreateTmpTableVisibleTimeline (void);
|
void Tml_DB_CreateTmpTableVisibleTimeline (void);
|
||||||
void Tml_DB_InsertNoteInJustRetrievedNotes (long NotCod);
|
void Tml_DB_InsertNoteInJustRetrievedNotes (long NotCod);
|
||||||
|
@ -69,6 +74,7 @@ void Tml_DB_DropTmpTableJustRetrievedNotes (void);
|
||||||
void Tml_DB_DropTmpTableVisibleTimeline (void);
|
void Tml_DB_DropTmpTableVisibleTimeline (void);
|
||||||
void Tml_DB_ClearOldTimelinesNotesFromDB (void);
|
void Tml_DB_ClearOldTimelinesNotesFromDB (void);
|
||||||
void Tml_DB_ClearTimelineNotesOfSessionFromDB (void);
|
void Tml_DB_ClearTimelineNotesOfSessionFromDB (void);
|
||||||
|
|
||||||
void Tml_DB_RemoveNoteFavs (long NotCod);
|
void Tml_DB_RemoveNoteFavs (long NotCod);
|
||||||
void Tml_DB_RemoveNotePubs (long NotCod);
|
void Tml_DB_RemoveNotePubs (long NotCod);
|
||||||
void Tml_DB_RemoveNote (long NotCod);
|
void Tml_DB_RemoveNote (long NotCod);
|
||||||
|
|
Loading…
Reference in New Issue