mirror of https://github.com/acanas/swad-core.git
Version 20.100: Sep 10, 2021 New module swad_figure_database for database queries related to figures.
This commit is contained in:
parent
87d72a9d6f
commit
7468bf70cd
7
Makefile
7
Makefile
|
@ -46,9 +46,10 @@ OBJS = swad_account.o swad_account_database.o swad_action.o swad_admin.o \
|
||||||
swad_enrolment.o swad_enrolment_database.o swad_error.o swad_exam.o \
|
swad_enrolment.o swad_enrolment_database.o swad_error.o swad_exam.o \
|
||||||
swad_exam_database.o swad_exam_log.o swad_exam_print.o \
|
swad_exam_database.o swad_exam_log.o swad_exam_print.o \
|
||||||
swad_exam_result.o swad_exam_session.o swad_exam_set.o \
|
swad_exam_result.o swad_exam_session.o swad_exam_set.o \
|
||||||
swad_figure.o swad_figure_cache.o swad_file.o swad_file_browser.o \
|
swad_figure.o swad_figure_cache.o swad_figure_database.o swad_file.o \
|
||||||
swad_file_extension.o swad_file_MIME.o swad_firewall.o swad_follow.o \
|
swad_file_browser.o swad_file_extension.o swad_file_MIME.o \
|
||||||
swad_follow_database.o swad_form.o swad_forum.o \
|
swad_firewall.o swad_follow.o swad_follow_database.o swad_form.o \
|
||||||
|
swad_forum.o \
|
||||||
swad_game.o swad_global.o swad_group.o swad_group_database.o \
|
swad_game.o swad_global.o swad_group.o swad_group_database.o \
|
||||||
swad_help.o swad_hierarchy.o swad_hierarchy_config.o swad_holiday.o \
|
swad_help.o swad_hierarchy.o swad_hierarchy_config.o swad_holiday.o \
|
||||||
swad_HTML.o \
|
swad_HTML.o \
|
||||||
|
|
|
@ -427,7 +427,8 @@ unsigned Ctr_DB_GetNumCtrsWithDegs (HieLvl_Level_t Scope,long Cod)
|
||||||
" FROM ins_instits,"
|
" FROM ins_instits,"
|
||||||
"ctr_centers,"
|
"ctr_centers,"
|
||||||
"deg_degrees"
|
"deg_degrees"
|
||||||
" WHERE %sinstitutions.InsCod=ctr_centers.InsCod"
|
" WHERE %s"
|
||||||
|
"ins_instits.InsCod=ctr_centers.InsCod"
|
||||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod",
|
" AND ctr_centers.CtrCod=deg_degrees.CtrCod",
|
||||||
SubQuery);
|
SubQuery);
|
||||||
}
|
}
|
||||||
|
@ -449,7 +450,8 @@ unsigned Ctr_DB_GetNumCtrsWithCrss (HieLvl_Level_t Scope,long Cod)
|
||||||
"ctr_centers,"
|
"ctr_centers,"
|
||||||
"deg_degrees,"
|
"deg_degrees,"
|
||||||
"crs_courses"
|
"crs_courses"
|
||||||
" WHERE %sinstitutions.InsCod=ctr_centers.InsCod"
|
" WHERE %s"
|
||||||
|
"ins_instits.InsCod=ctr_centers.InsCod"
|
||||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||||
" AND deg_degrees.DegCod=crs_courses.DegCod",
|
" AND deg_degrees.DegCod=crs_courses.DegCod",
|
||||||
SubQuery);
|
SubQuery);
|
||||||
|
@ -475,7 +477,7 @@ unsigned Ctr_DB_GetNumCtrsWithUsrs (Rol_Role_t Role,
|
||||||
"crs_courses,"
|
"crs_courses,"
|
||||||
"crs_users"
|
"crs_users"
|
||||||
" WHERE %s"
|
" WHERE %s"
|
||||||
"institutions.InsCod=ctr_centers.InsCod"
|
"ins_instits.InsCod=ctr_centers.InsCod"
|
||||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||||
" AND crs_courses.CrsCod=crs_users.CrsCod"
|
" AND crs_courses.CrsCod=crs_users.CrsCod"
|
||||||
|
|
|
@ -602,13 +602,14 @@ 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.99 (2021-09-10)"
|
#define Log_PLATFORM_VERSION "SWAD 20.100 (2021-09-10)"
|
||||||
#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: Sep 10, 2021 New module swad_figure_database for database queries related to figures. (314940 lines)
|
||||||
Version 20.99: Sep 10, 2021 Queries moved to module swad_institution_database. (314758 lines)
|
Version 20.99: Sep 10, 2021 Queries moved to module swad_institution_database. (314758 lines)
|
||||||
Version 20.98: Sep 10, 2021 New module swad_institution_database for database queries related to institutions. (314663 lines)
|
Version 20.98: Sep 10, 2021 New module swad_institution_database for database queries related to institutions. (314663 lines)
|
||||||
Version 20.97: Sep 10, 2021 Code refactoring related to scope. (314566 lines)
|
Version 20.97: Sep 10, 2021 Code refactoring related to scope. (314566 lines)
|
||||||
|
|
|
@ -372,7 +372,7 @@ unsigned Crs_DB_GetNumCrssWithUsrs (Rol_Role_t Role,
|
||||||
"crs_courses,"
|
"crs_courses,"
|
||||||
"crs_users"
|
"crs_users"
|
||||||
" WHERE %s"
|
" WHERE %s"
|
||||||
"institutions.InsCod=ctr_centers.InsCod"
|
"ins_instits.InsCod=ctr_centers.InsCod"
|
||||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||||
" AND crs_courses.CrsCod=crs_users.CrsCod"
|
" AND crs_courses.CrsCod=crs_users.CrsCod"
|
||||||
|
|
|
@ -490,7 +490,8 @@ unsigned Deg_DB_GetNumDegsWithCrss (HieLvl_Level_t Scope,long Cod)
|
||||||
"ctr_centers,"
|
"ctr_centers,"
|
||||||
"deg_degrees,"
|
"deg_degrees,"
|
||||||
"crs_courses"
|
"crs_courses"
|
||||||
" WHERE %sinstitutions.InsCod=ctr_centers.InsCod"
|
" WHERE %s"
|
||||||
|
"ins_instits.InsCod=ctr_centers.InsCod"
|
||||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||||
" AND deg_degrees.DegCod=crs_courses.DegCod",
|
" AND deg_degrees.DegCod=crs_courses.DegCod",
|
||||||
SubQuery);
|
SubQuery);
|
||||||
|
@ -515,7 +516,8 @@ unsigned Deg_DB_GetNumDegsWithUsrs (Rol_Role_t Role,
|
||||||
"deg_degrees,"
|
"deg_degrees,"
|
||||||
"crs_courses,"
|
"crs_courses,"
|
||||||
"crs_users"
|
"crs_users"
|
||||||
" WHERE %sinstitutions.InsCod=ctr_centers.InsCod"
|
" WHERE %s"
|
||||||
|
"ins_instits.InsCod=ctr_centers.InsCod"
|
||||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||||
" AND crs_courses.CrsCod=crs_users.CrsCod"
|
" AND crs_courses.CrsCod=crs_users.CrsCod"
|
||||||
|
|
109
swad_figure.c
109
swad_figure.c
|
@ -48,6 +48,7 @@
|
||||||
#include "swad_hierarchy_level.h"
|
#include "swad_hierarchy_level.h"
|
||||||
#include "swad_HTML.h"
|
#include "swad_HTML.h"
|
||||||
#include "swad_institution.h"
|
#include "swad_institution.h"
|
||||||
|
#include "swad_institution_database.h"
|
||||||
#include "swad_logo.h"
|
#include "swad_logo.h"
|
||||||
#include "swad_message.h"
|
#include "swad_message.h"
|
||||||
#include "swad_network.h"
|
#include "swad_network.h"
|
||||||
|
@ -1013,40 +1014,16 @@ static void Fig_GetAndShowInssOrderedByNumCtrs (void)
|
||||||
switch (Gbl.Scope.Current)
|
switch (Gbl.Scope.Current)
|
||||||
{
|
{
|
||||||
case HieLvl_SYS:
|
case HieLvl_SYS:
|
||||||
NumInss = (unsigned)
|
NumInss = Ins_DB_GetInssInCurrentSysOrderedByNumberOfCtrs (&mysql_res);
|
||||||
DB_QuerySELECT (&mysql_res,"can not get institutions",
|
|
||||||
"SELECT InsCod," // row[0]
|
|
||||||
"COUNT(*) AS N" // row[1]
|
|
||||||
" FROM ctr_centers"
|
|
||||||
" GROUP BY InsCod"
|
|
||||||
" ORDER BY N DESC");
|
|
||||||
break;
|
break;
|
||||||
case HieLvl_CTY:
|
case HieLvl_CTY:
|
||||||
NumInss = (unsigned)
|
NumInss = Ins_DB_GetInssInCurrentCtyOrderedByNumberOfCtrs (&mysql_res);
|
||||||
DB_QuerySELECT (&mysql_res,"can not get institutions",
|
|
||||||
"SELECT ctr_centers.InsCod," // row[0]
|
|
||||||
"COUNT(*) AS N" // row[1]
|
|
||||||
" FROM ins_instits,"
|
|
||||||
"ctr_centers"
|
|
||||||
" WHERE ins_instits.CtyCod=%ld"
|
|
||||||
" AND ins_instits.InsCod=ctr_centers.InsCod"
|
|
||||||
" GROUP BY ctr_centers.InsCod"
|
|
||||||
" ORDER BY N DESC",
|
|
||||||
Gbl.Hierarchy.Cty.CtyCod);
|
|
||||||
break;
|
break;
|
||||||
case HieLvl_INS:
|
case HieLvl_INS:
|
||||||
case HieLvl_CTR:
|
case HieLvl_CTR:
|
||||||
case HieLvl_DEG:
|
case HieLvl_DEG:
|
||||||
case HieLvl_CRS:
|
case HieLvl_CRS:
|
||||||
NumInss = (unsigned)
|
NumInss = Ins_DB_GetInssInCurrentInsOrderedByNumberOfCtrs (&mysql_res);
|
||||||
DB_QuerySELECT (&mysql_res,"can not get institutions",
|
|
||||||
"SELECT InsCod," // row[0]
|
|
||||||
"COUNT(*) AS N" // row[1]
|
|
||||||
" FROM ctr_centers"
|
|
||||||
" WHERE InsCod=%ld"
|
|
||||||
" GROUP BY InsCod"
|
|
||||||
" ORDER BY N DESC",
|
|
||||||
Gbl.Hierarchy.Ins.InsCod);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Err_WrongScopeExit ();
|
Err_WrongScopeExit ();
|
||||||
|
@ -1083,46 +1060,16 @@ static void Fig_GetAndShowInssOrderedByNumDegs (void)
|
||||||
switch (Gbl.Scope.Current)
|
switch (Gbl.Scope.Current)
|
||||||
{
|
{
|
||||||
case HieLvl_SYS:
|
case HieLvl_SYS:
|
||||||
NumInss = (unsigned)
|
NumInss = Ins_DB_GetInssInCurrentSysOrderedByNumberOfDegs (&mysql_res);
|
||||||
DB_QuerySELECT (&mysql_res,"can not get institutions",
|
|
||||||
"SELECT ctr_centers.InsCod," // row[0]
|
|
||||||
"COUNT(*) AS N" // row[1]
|
|
||||||
" FROM ctr_centers,"
|
|
||||||
"deg_degrees"
|
|
||||||
" WHERE ctr_centers.CtrCod=deg_degrees.CtrCod"
|
|
||||||
" GROUP BY InsCod"
|
|
||||||
" ORDER BY N DESC");
|
|
||||||
break;
|
break;
|
||||||
case HieLvl_CTY:
|
case HieLvl_CTY:
|
||||||
NumInss = (unsigned)
|
NumInss = Ins_DB_GetInssInCurrentCtyOrderedByNumberOfDegs (&mysql_res);
|
||||||
DB_QuerySELECT (&mysql_res,"can not get institutions",
|
|
||||||
"SELECT ctr_centers.InsCod," // row[0]
|
|
||||||
"COUNT(*) AS N" // row[1]
|
|
||||||
" FROM ins_instits,"
|
|
||||||
"ctr_centers,"
|
|
||||||
"deg_degrees"
|
|
||||||
" WHERE ins_instits.CtyCod=%ld"
|
|
||||||
" AND ins_instits.InsCod=ctr_centers.InsCod"
|
|
||||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
|
||||||
" GROUP BY ctr_centers.InsCod"
|
|
||||||
" ORDER BY N DESC",
|
|
||||||
Gbl.Hierarchy.Cty.CtyCod);
|
|
||||||
break;
|
break;
|
||||||
case HieLvl_INS:
|
case HieLvl_INS:
|
||||||
case HieLvl_CTR:
|
case HieLvl_CTR:
|
||||||
case HieLvl_DEG:
|
case HieLvl_DEG:
|
||||||
case HieLvl_CRS:
|
case HieLvl_CRS:
|
||||||
NumInss = (unsigned)
|
NumInss = Ins_DB_GetInssInCurrentInsOrderedByNumberOfDegs (&mysql_res);
|
||||||
DB_QuerySELECT (&mysql_res,"can not get institutions",
|
|
||||||
"SELECT ctr_centers.InsCod," // row[0]
|
|
||||||
"COUNT(*) AS N" // row[1]
|
|
||||||
" FROM ctr_centers,"
|
|
||||||
"deg_degrees"
|
|
||||||
" WHERE ctr_centers.InsCod=%ld"
|
|
||||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
|
||||||
" GROUP BY ctr_centers.InsCod"
|
|
||||||
" ORDER BY N DESC",
|
|
||||||
Gbl.Hierarchy.Ins.InsCod);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Err_WrongScopeExit ();
|
Err_WrongScopeExit ();
|
||||||
|
@ -1159,52 +1106,16 @@ static void Fig_GetAndShowInssOrderedByNumCrss (void)
|
||||||
switch (Gbl.Scope.Current)
|
switch (Gbl.Scope.Current)
|
||||||
{
|
{
|
||||||
case HieLvl_SYS:
|
case HieLvl_SYS:
|
||||||
NumInss = (unsigned)
|
NumInss = Ins_DB_GetInssInCurrentSysOrderedByNumberOfCrss (&mysql_res);
|
||||||
DB_QuerySELECT (&mysql_res,"can not get institutions",
|
|
||||||
"SELECT ctr_centers.InsCod," // row[0]
|
|
||||||
"COUNT(*) AS N" // row[1]
|
|
||||||
" FROM ctr_centers,"
|
|
||||||
"deg_degrees,"
|
|
||||||
"crs_courses"
|
|
||||||
" WHERE ctr_centers.CtrCod=deg_degrees.CtrCod"
|
|
||||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
|
||||||
" GROUP BY InsCod"
|
|
||||||
" ORDER BY N DESC");
|
|
||||||
break;
|
break;
|
||||||
case HieLvl_CTY:
|
case HieLvl_CTY:
|
||||||
NumInss = (unsigned)
|
NumInss = Ins_DB_GetInssInCurrentCtyOrderedByNumberOfCrss (&mysql_res);
|
||||||
DB_QuerySELECT (&mysql_res,"can not get institutions",
|
|
||||||
"SELECT ctr_centers.InsCod," // row[0]
|
|
||||||
"COUNT(*) AS N" // row[1]
|
|
||||||
" FROM ins_instits,"
|
|
||||||
"ctr_centers,"
|
|
||||||
"deg_degrees,"
|
|
||||||
"crs_courses"
|
|
||||||
" 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"
|
|
||||||
" GROUP BY ctr_centers.InsCod"
|
|
||||||
" ORDER BY N DESC",
|
|
||||||
Gbl.Hierarchy.Cty.CtyCod);
|
|
||||||
break;
|
break;
|
||||||
case HieLvl_INS:
|
case HieLvl_INS:
|
||||||
case HieLvl_CTR:
|
case HieLvl_CTR:
|
||||||
case HieLvl_DEG:
|
case HieLvl_DEG:
|
||||||
case HieLvl_CRS:
|
case HieLvl_CRS:
|
||||||
NumInss = (unsigned)
|
NumInss = Ins_DB_GetInssInCurrentInsOrderedByNumberOfCrss (&mysql_res);
|
||||||
DB_QuerySELECT (&mysql_res,"can not get institutions",
|
|
||||||
"SELECT ctr_centers.InsCod," // row[0]
|
|
||||||
"COUNT(*) AS N" // row[1]
|
|
||||||
" FROM ctr_centers,"
|
|
||||||
"deg_degrees,"
|
|
||||||
"crs_courses"
|
|
||||||
" WHERE ctr_centers.InsCod=%ld"
|
|
||||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
|
||||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
|
||||||
" GROUP BY ctr_centers.InsCod"
|
|
||||||
" ORDER BY N DESC",
|
|
||||||
Gbl.Hierarchy.Ins.InsCod);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Err_WrongScopeExit ();
|
Err_WrongScopeExit ();
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
#include "swad_database.h"
|
#include "swad_database.h"
|
||||||
#include "swad_figure_cache.h"
|
#include "swad_figure_cache.h"
|
||||||
|
#include "swad_figure_database.h"
|
||||||
#include "swad_scope.h"
|
#include "swad_scope.h"
|
||||||
#include "swad_string.h"
|
#include "swad_string.h"
|
||||||
|
|
||||||
|
@ -53,7 +54,7 @@
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************** Get number of users who have chosen an option ****************/
|
/*************************** Update figure into cache ************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void FigCch_UpdateFigureIntoCache (FigCch_FigureCached_t Figure,
|
void FigCch_UpdateFigureIntoCache (FigCch_FigureCached_t Figure,
|
||||||
|
@ -68,34 +69,18 @@ void FigCch_UpdateFigureIntoCache (FigCch_FigureCached_t Figure,
|
||||||
switch (Type)
|
switch (Type)
|
||||||
{
|
{
|
||||||
case FigCch_UNSIGNED:
|
case FigCch_UNSIGNED:
|
||||||
DB_QueryREPLACE ("can not update cached figure value",
|
Fig_DB_UpdateUnsignedFigureIntoCache (Figure,Scope,Cod,
|
||||||
"REPLACE INTO fig_figures"
|
*((unsigned *) ValuePtr));
|
||||||
" (Figure,Scope,Cod,ValueInt,ValueDouble)"
|
|
||||||
" VALUES"
|
|
||||||
" (%u,'%s',%ld,%u,'0.0')",
|
|
||||||
(unsigned) Figure,
|
|
||||||
Sco_GetDBStrFromScope (Scope),
|
|
||||||
Cod,
|
|
||||||
*((unsigned *) ValuePtr));
|
|
||||||
break;
|
break;
|
||||||
case FigCch_DOUBLE:
|
case FigCch_DOUBLE:
|
||||||
Str_SetDecimalPointToUS (); // To write the decimal point as a dot
|
Fig_DB_UpdateDoubleFigureIntoCache (Figure,Scope,Cod,
|
||||||
DB_QueryREPLACE ("can not update cached figure value",
|
*((double *) ValuePtr));
|
||||||
"REPLACE INTO fig_figures"
|
|
||||||
" (Figure,Scope,Cod,ValueInt,ValueDouble)"
|
|
||||||
" VALUES"
|
|
||||||
" (%u,'%s',%ld,0,'%.15lg')",
|
|
||||||
(unsigned) Figure,
|
|
||||||
Sco_GetDBStrFromScope (Scope),
|
|
||||||
Cod,
|
|
||||||
*((double *) ValuePtr));
|
|
||||||
Str_SetDecimalPointToLocal (); // Return to local system
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************** Get number of users who have chosen an option ****************/
|
/************************** Get figure from cache ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// Return true is figure is found (if figure is cached and recently updated)
|
// Return true is figure is found (if figure is cached and recently updated)
|
||||||
|
|
||||||
|
@ -114,11 +99,6 @@ bool FigCch_GetFigureFromCache (FigCch_FigureCached_t Figure,
|
||||||
[HieLvl_DEG] = (time_t) ( 1UL * 60UL * 60UL), // Degree
|
[HieLvl_DEG] = (time_t) ( 1UL * 60UL * 60UL), // Degree
|
||||||
[HieLvl_CRS] = (time_t) ( 60UL), // Course
|
[HieLvl_CRS] = (time_t) ( 60UL), // Course
|
||||||
};
|
};
|
||||||
static const char *Field[FigCch_NUM_TYPES] =
|
|
||||||
{
|
|
||||||
[FigCch_UNSIGNED] = "ValueInt",
|
|
||||||
[FigCch_DOUBLE ] = "ValueDouble",
|
|
||||||
};
|
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
bool Found = false;
|
bool Found = false;
|
||||||
|
@ -140,16 +120,7 @@ bool FigCch_GetFigureFromCache (FigCch_FigureCached_t Figure,
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/***** Get figure's value if cached and recent *****/
|
/***** Get figure's value if cached and recent *****/
|
||||||
if (DB_QuerySELECT (&mysql_res,"can not get cached figure value",
|
if (Fig_DB_GetFigureFromCache (&mysql_res,Figure,Scope,Cod,Type,TimeCached[Scope]))
|
||||||
"SELECT %s" // row[0]
|
|
||||||
" FROM fig_figures"
|
|
||||||
" WHERE Figure=%u"
|
|
||||||
" AND Scope='%s'"
|
|
||||||
" AND Cod=%ld"
|
|
||||||
" AND LastUpdate>FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)",
|
|
||||||
Field[Type],
|
|
||||||
(unsigned) Figure,Sco_GetDBStrFromScope (Scope),Cod,
|
|
||||||
TimeCached[Scope]))
|
|
||||||
{
|
{
|
||||||
/* Get row */
|
/* Get row */
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
|
@ -297,6 +297,7 @@ unsigned Ins_DB_GetInssInCtyOrderedByFullName (MYSQL_RES **mysql_res,long CtyCod
|
||||||
" ORDER BY FullName",
|
" ORDER BY FullName",
|
||||||
CtyCod);
|
CtyCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************* Get full list of institutions **************/
|
/************* Get full list of institutions **************/
|
||||||
/************* with number of users who claim to belong to them **************/
|
/************* with number of users who claim to belong to them **************/
|
||||||
|
@ -346,6 +347,154 @@ unsigned Ins_DB_GetFullListOfInssInCty (MYSQL_RES **mysql_res,long CtyCod)
|
||||||
OrderBySubQuery[Gbl.Hierarchy.Inss.SelectedOrder]);
|
OrderBySubQuery[Gbl.Hierarchy.Inss.SelectedOrder]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**************** Get list of institutions in system ***************/
|
||||||
|
/**************** ordered by number of centers/degrees/courses ***************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
unsigned Ins_DB_GetInssInCurrentSysOrderedByNumberOfCtrs (MYSQL_RES **mysql_res)
|
||||||
|
{
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get institutions",
|
||||||
|
"SELECT InsCod," // row[0]
|
||||||
|
"COUNT(*) AS N" // row[1]
|
||||||
|
" FROM ctr_centers"
|
||||||
|
" GROUP BY InsCod"
|
||||||
|
" ORDER BY N DESC");
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned Ins_DB_GetInssInCurrentSysOrderedByNumberOfDegs (MYSQL_RES **mysql_res)
|
||||||
|
{
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get institutions",
|
||||||
|
"SELECT ctr_centers.InsCod," // row[0]
|
||||||
|
"COUNT(*) AS N" // row[1]
|
||||||
|
" FROM ctr_centers,"
|
||||||
|
"deg_degrees"
|
||||||
|
" WHERE ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||||
|
" GROUP BY InsCod"
|
||||||
|
" ORDER BY N DESC");
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned Ins_DB_GetInssInCurrentSysOrderedByNumberOfCrss (MYSQL_RES **mysql_res)
|
||||||
|
{
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get institutions",
|
||||||
|
"SELECT ctr_centers.InsCod," // row[0]
|
||||||
|
"COUNT(*) AS N" // row[1]
|
||||||
|
" FROM ctr_centers,"
|
||||||
|
"deg_degrees,"
|
||||||
|
"crs_courses"
|
||||||
|
" WHERE ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||||
|
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||||
|
" GROUP BY InsCod"
|
||||||
|
" ORDER BY N DESC");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/************ Get list of institutions in current country *******************/
|
||||||
|
/************ ordered by number of centers/degrees/courses *******************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
unsigned Ins_DB_GetInssInCurrentCtyOrderedByNumberOfCtrs (MYSQL_RES **mysql_res)
|
||||||
|
{
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get institutions",
|
||||||
|
"SELECT ctr_centers.InsCod," // row[0]
|
||||||
|
"COUNT(*) AS N" // row[1]
|
||||||
|
" FROM ins_instits,"
|
||||||
|
"ctr_centers"
|
||||||
|
" WHERE ins_instits.CtyCod=%ld"
|
||||||
|
" AND ins_instits.InsCod=ctr_centers.InsCod"
|
||||||
|
" GROUP BY ctr_centers.InsCod"
|
||||||
|
" ORDER BY N DESC",
|
||||||
|
Gbl.Hierarchy.Cty.CtyCod);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned Ins_DB_GetInssInCurrentCtyOrderedByNumberOfDegs (MYSQL_RES **mysql_res)
|
||||||
|
{
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get institutions",
|
||||||
|
"SELECT ctr_centers.InsCod," // row[0]
|
||||||
|
"COUNT(*) AS N" // row[1]
|
||||||
|
" FROM ins_instits,"
|
||||||
|
"ctr_centers,"
|
||||||
|
"deg_degrees"
|
||||||
|
" WHERE ins_instits.CtyCod=%ld"
|
||||||
|
" AND ins_instits.InsCod=ctr_centers.InsCod"
|
||||||
|
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||||
|
" GROUP BY ctr_centers.InsCod"
|
||||||
|
" ORDER BY N DESC",
|
||||||
|
Gbl.Hierarchy.Cty.CtyCod);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned Ins_DB_GetInssInCurrentCtyOrderedByNumberOfCrss (MYSQL_RES **mysql_res)
|
||||||
|
{
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get institutions",
|
||||||
|
"SELECT ctr_centers.InsCod," // row[0]
|
||||||
|
"COUNT(*) AS N" // row[1]
|
||||||
|
" FROM ins_instits,"
|
||||||
|
"ctr_centers,"
|
||||||
|
"deg_degrees,"
|
||||||
|
"crs_courses"
|
||||||
|
" 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"
|
||||||
|
" GROUP BY ctr_centers.InsCod"
|
||||||
|
" ORDER BY N DESC",
|
||||||
|
Gbl.Hierarchy.Cty.CtyCod);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/***** Get current institution and its number of centers/degrees/courses *****/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
unsigned Ins_DB_GetInssInCurrentInsOrderedByNumberOfCtrs (MYSQL_RES **mysql_res)
|
||||||
|
{
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get institutions",
|
||||||
|
"SELECT InsCod," // row[0]
|
||||||
|
"COUNT(*) AS N" // row[1]
|
||||||
|
" FROM ctr_centers"
|
||||||
|
" WHERE InsCod=%ld"
|
||||||
|
" GROUP BY InsCod",
|
||||||
|
Gbl.Hierarchy.Ins.InsCod);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned Ins_DB_GetInssInCurrentInsOrderedByNumberOfDegs (MYSQL_RES **mysql_res)
|
||||||
|
{
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get institutions",
|
||||||
|
"SELECT ctr_centers.InsCod," // row[0]
|
||||||
|
"COUNT(*) AS N" // row[1]
|
||||||
|
" FROM ctr_centers,"
|
||||||
|
"deg_degrees"
|
||||||
|
" WHERE ctr_centers.InsCod=%ld"
|
||||||
|
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||||
|
" GROUP BY ctr_centers.InsCod"
|
||||||
|
" ORDER BY N DESC",
|
||||||
|
Gbl.Hierarchy.Ins.InsCod);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned Ins_DB_GetInssInCurrentInsOrderedByNumberOfCrss (MYSQL_RES **mysql_res)
|
||||||
|
{
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (&mysql_res,"can not get institutions",
|
||||||
|
"SELECT ctr_centers.InsCod," // row[0]
|
||||||
|
"COUNT(*) AS N" // row[1]
|
||||||
|
" FROM ctr_centers,"
|
||||||
|
"deg_degrees,"
|
||||||
|
"crs_courses"
|
||||||
|
" WHERE ctr_centers.InsCod=%ld"
|
||||||
|
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||||
|
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||||
|
" GROUP BY ctr_centers.InsCod"
|
||||||
|
" ORDER BY N DESC",
|
||||||
|
Gbl.Hierarchy.Ins.InsCod);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/**************** Get number of institutions in a country ********************/
|
/**************** Get number of institutions in a country ********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -375,7 +524,8 @@ unsigned Ins_DB_GetNumInssWithCtrs (HieLvl_Level_t Scope,long Cod)
|
||||||
"SELECT COUNT(DISTINCT ins_instits.InsCod)"
|
"SELECT COUNT(DISTINCT ins_instits.InsCod)"
|
||||||
" FROM ins_instits,"
|
" FROM ins_instits,"
|
||||||
"ctr_centers"
|
"ctr_centers"
|
||||||
" WHERE %sinstitutions.InsCod=ctr_centers.InsCod",
|
" WHERE %s"
|
||||||
|
"ins_instits.InsCod=ctr_centers.InsCod",
|
||||||
SubQuery);
|
SubQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -395,7 +545,8 @@ unsigned Ins_DB_GetNumInssWithDegs (HieLvl_Level_t Scope,long Cod)
|
||||||
" FROM ins_instits,"
|
" FROM ins_instits,"
|
||||||
"ctr_centers,"
|
"ctr_centers,"
|
||||||
"deg_degrees"
|
"deg_degrees"
|
||||||
" WHERE %sinstitutions.InsCod=ctr_centers.InsCod"
|
" WHERE %s"
|
||||||
|
"ins_instits.InsCod=ctr_centers.InsCod"
|
||||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod",
|
" AND ctr_centers.CtrCod=deg_degrees.CtrCod",
|
||||||
SubQuery);
|
SubQuery);
|
||||||
}
|
}
|
||||||
|
@ -417,7 +568,8 @@ unsigned Ins_DB_GetNumInssWithCrss (HieLvl_Level_t Scope,long Cod)
|
||||||
"ctr_centers,"
|
"ctr_centers,"
|
||||||
"deg_degrees,"
|
"deg_degrees,"
|
||||||
"crs_courses"
|
"crs_courses"
|
||||||
" WHERE %sinstitutions.InsCod=ctr_centers.InsCod"
|
" WHERE %s"
|
||||||
|
"ins_instits.InsCod=ctr_centers.InsCod"
|
||||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||||
" AND deg_degrees.DegCod=crs_courses.DegCod",
|
" AND deg_degrees.DegCod=crs_courses.DegCod",
|
||||||
SubQuery);
|
SubQuery);
|
||||||
|
|
|
@ -61,6 +61,18 @@ unsigned Ins_DB_GetInssInCtyOrderedByShrtName (MYSQL_RES **mysql_res,long CtyCod
|
||||||
unsigned Ins_DB_GetInssInCtyOrderedByFullName (MYSQL_RES **mysql_res,long CtyCod);
|
unsigned Ins_DB_GetInssInCtyOrderedByFullName (MYSQL_RES **mysql_res,long CtyCod);
|
||||||
unsigned Ins_DB_GetFullListOfInssInCty (MYSQL_RES **mysql_res,long CtyCod);
|
unsigned Ins_DB_GetFullListOfInssInCty (MYSQL_RES **mysql_res,long CtyCod);
|
||||||
|
|
||||||
|
unsigned Ins_DB_GetInssInCurrentSysOrderedByNumberOfCtrs (MYSQL_RES **mysql_res);
|
||||||
|
unsigned Ins_DB_GetInssInCurrentSysOrderedByNumberOfDegs (MYSQL_RES **mysql_res);
|
||||||
|
unsigned Ins_DB_GetInssInCurrentSysOrderedByNumberOfCrss (MYSQL_RES **mysql_res);
|
||||||
|
|
||||||
|
unsigned Ins_DB_GetInssInCurrentCtyOrderedByNumberOfCtrs (MYSQL_RES **mysql_res);
|
||||||
|
unsigned Ins_DB_GetInssInCurrentCtyOrderedByNumberOfDegs (MYSQL_RES **mysql_res);
|
||||||
|
unsigned Ins_DB_GetInssInCurrentCtyOrderedByNumberOfCrss (MYSQL_RES **mysql_res);
|
||||||
|
|
||||||
|
unsigned Ins_DB_GetInssInCurrentInsOrderedByNumberOfCtrs (MYSQL_RES **mysql_res);
|
||||||
|
unsigned Ins_DB_GetInssInCurrentInsOrderedByNumberOfDegs (MYSQL_RES **mysql_res);
|
||||||
|
unsigned Ins_DB_GetInssInCurrentInsOrderedByNumberOfCrss (MYSQL_RES **mysql_res);
|
||||||
|
|
||||||
unsigned Ins_DB_GetNumInssInCty (long CtyCod);
|
unsigned Ins_DB_GetNumInssInCty (long CtyCod);
|
||||||
|
|
||||||
unsigned Ins_DB_GetNumInssWithCtrs (HieLvl_Level_t Scope,long Cod);
|
unsigned Ins_DB_GetNumInssWithCtrs (HieLvl_Level_t Scope,long Cod);
|
||||||
|
|
Loading…
Reference in New Issue