mirror of https://github.com/acanas/swad-core.git
Version 15.222.5
This commit is contained in:
parent
9a9b8fb6e9
commit
c4aae64097
|
@ -134,13 +134,14 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 15.222.4 (2016-06-09)"
|
#define Log_PLATFORM_VERSION "SWAD 15.222.5 (2016-06-10)"
|
||||||
#define CSS_FILE "swad15.218.css"
|
#define CSS_FILE "swad15.218.css"
|
||||||
#define JS_FILE "swad15.216.js"
|
#define JS_FILE "swad15.216.js"
|
||||||
|
|
||||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
|
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
|
||||||
/*
|
/*
|
||||||
|
Version 15.222.5: Jun 10, 2016 Indicators of a course are always calculated and stored in course configuration. (202214 lines)
|
||||||
Version 15.222.4: Jun 09, 2016 Code refactoring in indicators. (202208 lines)
|
Version 15.222.4: Jun 09, 2016 Code refactoring in indicators. (202208 lines)
|
||||||
Version 15.222.3: Jun 09, 2016 Indicators form is sended automatically when any parameter changes. (202214 lines)
|
Version 15.222.3: Jun 09, 2016 Indicators form is sended automatically when any parameter changes. (202214 lines)
|
||||||
Version 15.222.2: Jun 09, 2016 Code refactoring in indicators. (202233 lines)
|
Version 15.222.2: Jun 09, 2016 Code refactoring in indicators. (202233 lines)
|
||||||
|
|
|
@ -158,7 +158,8 @@ static void Crs_Configuration (bool PrintView)
|
||||||
extern const char *Txt_of_PART_OF_A_TOTAL;
|
extern const char *Txt_of_PART_OF_A_TOTAL;
|
||||||
extern const char *Txt_Save;
|
extern const char *Txt_Save;
|
||||||
unsigned Year;
|
unsigned Year;
|
||||||
unsigned NumIndicators;
|
int NumIndicatorsFromDB;
|
||||||
|
struct Ind_IndicatorsCrs Indicators;
|
||||||
bool IsForm = (!PrintView && Gbl.Usrs.Me.LoggedRole >= Rol_TEACHER);
|
bool IsForm = (!PrintView && Gbl.Usrs.Me.LoggedRole >= Rol_TEACHER);
|
||||||
bool PutLink = !PrintView && Gbl.CurrentDeg.Deg.WWW[0];
|
bool PutLink = !PrintView && Gbl.CurrentDeg.Deg.WWW[0];
|
||||||
|
|
||||||
|
@ -350,7 +351,9 @@ static void Crs_Configuration (bool PrintView)
|
||||||
Txt_ROLES_PLURAL_Abc[Rol_STUDENT][Usr_SEX_UNKNOWN],Gbl.CurrentCrs.Crs.NumStds);
|
Txt_ROLES_PLURAL_Abc[Rol_STUDENT][Usr_SEX_UNKNOWN],Gbl.CurrentCrs.Crs.NumStds);
|
||||||
|
|
||||||
/***** Indicators *****/
|
/***** Indicators *****/
|
||||||
NumIndicators = Ind_GetAndUpdateNumIndicatorsCrs (Gbl.CurrentCrs.Crs.CrsCod);
|
NumIndicatorsFromDB = Ind_GetNumIndicatorsCrsFromDB (Gbl.CurrentCrs.Crs.CrsCod);
|
||||||
|
Ind_ComputeAndStoreIndicatorsCrs (Gbl.CurrentCrs.Crs.CrsCod,
|
||||||
|
NumIndicatorsFromDB,&Indicators);
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td class=\"%s RIGHT_MIDDLE\">"
|
"<td class=\"%s RIGHT_MIDDLE\">"
|
||||||
"%s:"
|
"%s:"
|
||||||
|
@ -367,12 +370,12 @@ static void Crs_Configuration (bool PrintView)
|
||||||
The_ClassForm[Gbl.Prefs.Theme],
|
The_ClassForm[Gbl.Prefs.Theme],
|
||||||
Txt_Indicators,
|
Txt_Indicators,
|
||||||
Cfg_HTTPS_URL_SWAD_CGI,Gbl.CurrentCrs.Crs.CrsCod,Act_Actions[ActReqStaCrs].ActCod,
|
Cfg_HTTPS_URL_SWAD_CGI,Gbl.CurrentCrs.Crs.CrsCod,Act_Actions[ActReqStaCrs].ActCod,
|
||||||
NumIndicators,Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS,
|
Indicators.NumIndicators,Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS,
|
||||||
Gbl.Prefs.IconsURL,
|
Gbl.Prefs.IconsURL,
|
||||||
(NumIndicators == Ind_NUM_INDICATORS) ? "ok_green" :
|
(Indicators.NumIndicators == Ind_NUM_INDICATORS) ? "ok_green" :
|
||||||
"warning",
|
"warning",
|
||||||
NumIndicators,Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS,
|
Indicators.NumIndicators,Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS,
|
||||||
NumIndicators,Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS);
|
Indicators.NumIndicators,Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** End table *****/
|
/***** End table *****/
|
||||||
|
|
|
@ -72,10 +72,8 @@ static void Ind_ShowNumCoursesWithIndicators (unsigned NumCrssWithIndicatorYes[1
|
||||||
unsigned NumCrss,bool PutForm);
|
unsigned NumCrss,bool PutForm);
|
||||||
static void Ind_ShowTableOfCoursesWithIndicators (Ind_IndicatorsLayout_t IndicatorsLayout,
|
static void Ind_ShowTableOfCoursesWithIndicators (Ind_IndicatorsLayout_t IndicatorsLayout,
|
||||||
unsigned NumCrss,MYSQL_RES *mysql_res);
|
unsigned NumCrss,MYSQL_RES *mysql_res);
|
||||||
static int Ind_GetNumIndicatorsCrsFromDB (long CrsCod);
|
static unsigned Ind_GetAndUpdateNumIndicatorsCrs (long CrsCod);
|
||||||
static void Ind_StoreIndicatorsCrsIntoDB (long CrsCod,unsigned NumIndicators);
|
static void Ind_StoreIndicatorsCrsIntoDB (long CrsCod,unsigned NumIndicators);
|
||||||
static void Ind_ComputeAndStoreIndicatorsCrs (long CrsCod,int NumIndicatorsFromDB,
|
|
||||||
struct Ind_IndicatorsCrs *Indicators);
|
|
||||||
static unsigned long Ind_GetNumFilesInDocumZonesOfCrsFromDB (long CrsCod);
|
static unsigned long Ind_GetNumFilesInDocumZonesOfCrsFromDB (long CrsCod);
|
||||||
static unsigned long Ind_GetNumFilesInShareZonesOfCrsFromDB (long CrsCod);
|
static unsigned long Ind_GetNumFilesInShareZonesOfCrsFromDB (long CrsCod);
|
||||||
static unsigned long Ind_GetNumFilesInAssigZonesOfCrsFromDB (long CrsCod);
|
static unsigned long Ind_GetNumFilesInAssigZonesOfCrsFromDB (long CrsCod);
|
||||||
|
@ -571,7 +569,7 @@ static void Ind_GetNumCoursesWithIndicators (unsigned NumCrssWithIndicatorYes[1+
|
||||||
if ((CrsCod = Str_ConvertStrCodToLongCod (row[2])) < 0)
|
if ((CrsCod = Str_ConvertStrCodToLongCod (row[2])) < 0)
|
||||||
Lay_ShowErrorAndExit ("Wrong code of course.");
|
Lay_ShowErrorAndExit ("Wrong code of course.");
|
||||||
|
|
||||||
/* Get number of indicators of this course */
|
/* Get stored number of indicators of this course */
|
||||||
NumIndicators = Ind_GetAndUpdateNumIndicatorsCrs (CrsCod);
|
NumIndicators = Ind_GetAndUpdateNumIndicatorsCrs (CrsCod);
|
||||||
NumCrssWithIndicatorYes[NumIndicators]++;
|
NumCrssWithIndicatorYes[NumIndicators]++;
|
||||||
}
|
}
|
||||||
|
@ -992,7 +990,7 @@ static void Ind_ShowTableOfCoursesWithIndicators (Ind_IndicatorsLayout_t Indicat
|
||||||
Ind_ComputeAndStoreIndicatorsCrs (CrsCod,(int) NumIndicators,&Indicators);
|
Ind_ComputeAndStoreIndicatorsCrs (CrsCod,(int) NumIndicators,&Indicators);
|
||||||
|
|
||||||
/* The number of indicators may have changed */
|
/* The number of indicators may have changed */
|
||||||
if (Gbl.Stat.IndicatorsSelected[Indicators.CountIndicators])
|
if (Gbl.Stat.IndicatorsSelected[Indicators.NumIndicators])
|
||||||
{
|
{
|
||||||
/* Write a row for this course */
|
/* Write a row for this course */
|
||||||
switch (IndicatorsLayout)
|
switch (IndicatorsLayout)
|
||||||
|
@ -1075,7 +1073,7 @@ static void Ind_ShowTableOfCoursesWithIndicators (Ind_IndicatorsLayout_t Indicat
|
||||||
(Indicators.CoursePartiallyOK ? "DAT_SMALL" :
|
(Indicators.CoursePartiallyOK ? "DAT_SMALL" :
|
||||||
"DAT_SMALL_RED"),
|
"DAT_SMALL_RED"),
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd,
|
||||||
Indicators.CountIndicators,
|
Indicators.NumIndicators,
|
||||||
|
|
||||||
"DAT_SMALL_GREEN",Gbl.RowEvenOdd,
|
"DAT_SMALL_GREEN",Gbl.RowEvenOdd,
|
||||||
Indicators.ThereIsSyllabus ? Txt_YES :
|
Indicators.ThereIsSyllabus ? Txt_YES :
|
||||||
|
@ -1249,7 +1247,7 @@ static void Ind_ShowTableOfCoursesWithIndicators (Ind_IndicatorsLayout_t Indicat
|
||||||
(Indicators.CoursePartiallyOK ? "DAT_SMALL" :
|
(Indicators.CoursePartiallyOK ? "DAT_SMALL" :
|
||||||
"DAT_SMALL_RED"),
|
"DAT_SMALL_RED"),
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd,
|
||||||
Indicators.CountIndicators,
|
Indicators.NumIndicators,
|
||||||
|
|
||||||
"DAT_SMALL_GREEN",Gbl.RowEvenOdd,
|
"DAT_SMALL_GREEN",Gbl.RowEvenOdd,
|
||||||
Indicators.ThereIsSyllabus ? Txt_YES :
|
Indicators.ThereIsSyllabus ? Txt_YES :
|
||||||
|
@ -1352,7 +1350,7 @@ static void Ind_ShowTableOfCoursesWithIndicators (Ind_IndicatorsLayout_t Indicat
|
||||||
/************ If not stored ==> compute and store it *************/
|
/************ If not stored ==> compute and store it *************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
unsigned Ind_GetAndUpdateNumIndicatorsCrs (long CrsCod)
|
static unsigned Ind_GetAndUpdateNumIndicatorsCrs (long CrsCod)
|
||||||
{
|
{
|
||||||
unsigned NumIndicators;
|
unsigned NumIndicators;
|
||||||
struct Ind_IndicatorsCrs Indicators;
|
struct Ind_IndicatorsCrs Indicators;
|
||||||
|
@ -1365,7 +1363,7 @@ unsigned Ind_GetAndUpdateNumIndicatorsCrs (long CrsCod)
|
||||||
{
|
{
|
||||||
/***** Compute and store number of indicators *****/
|
/***** Compute and store number of indicators *****/
|
||||||
Ind_ComputeAndStoreIndicatorsCrs (CrsCod,NumIndicatorsFromDB,&Indicators);
|
Ind_ComputeAndStoreIndicatorsCrs (CrsCod,NumIndicatorsFromDB,&Indicators);
|
||||||
NumIndicators = Indicators.CountIndicators;
|
NumIndicators = Indicators.NumIndicators;
|
||||||
}
|
}
|
||||||
return NumIndicators;
|
return NumIndicators;
|
||||||
}
|
}
|
||||||
|
@ -1374,7 +1372,7 @@ unsigned Ind_GetAndUpdateNumIndicatorsCrs (long CrsCod)
|
||||||
/************ Get number of indicators of a course from database *************/
|
/************ Get number of indicators of a course from database *************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static int Ind_GetNumIndicatorsCrsFromDB (long CrsCod)
|
int Ind_GetNumIndicatorsCrsFromDB (long CrsCod)
|
||||||
{
|
{
|
||||||
char Query[128];
|
char Query[128];
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
|
@ -1417,14 +1415,16 @@ static void Ind_StoreIndicatorsCrsIntoDB (long CrsCod,unsigned NumIndicators)
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************* Compute indicators of a course ************************/
|
/********************* Compute indicators of a course ************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/* If number of indicators stored in database is different
|
/* NumIndicatorsFromDB (number of indicators stored in database)
|
||||||
from number of indicators just computed ==> update it into database */
|
must be retrieved before calling this function.
|
||||||
|
If NumIndicatorsFromDB is different from number of indicators just computed
|
||||||
|
==> update it into database */
|
||||||
|
|
||||||
static void Ind_ComputeAndStoreIndicatorsCrs (long CrsCod,int NumIndicatorsFromDB,
|
void Ind_ComputeAndStoreIndicatorsCrs (long CrsCod,int NumIndicatorsFromDB,
|
||||||
struct Ind_IndicatorsCrs *Indicators)
|
struct Ind_IndicatorsCrs *Indicators)
|
||||||
{
|
{
|
||||||
/***** Initialize number of indicators *****/
|
/***** Initialize number of indicators *****/
|
||||||
Indicators->CountIndicators = 0;
|
Indicators->NumIndicators = 0;
|
||||||
|
|
||||||
/***** Get whether download zones are empty or not *****/
|
/***** Get whether download zones are empty or not *****/
|
||||||
Indicators->NumFilesInDocumentZones = Ind_GetNumFilesInDocumZonesOfCrsFromDB (CrsCod);
|
Indicators->NumFilesInDocumentZones = Ind_GetNumFilesInDocumZonesOfCrsFromDB (CrsCod);
|
||||||
|
@ -1438,7 +1438,7 @@ static void Ind_ComputeAndStoreIndicatorsCrs (long CrsCod,int NumIndicatorsFromD
|
||||||
(Indicators->SyllabusPraSrc != Inf_INFO_SRC_NONE) ||
|
(Indicators->SyllabusPraSrc != Inf_INFO_SRC_NONE) ||
|
||||||
(Indicators->TeachingGuideSrc != Inf_INFO_SRC_NONE);
|
(Indicators->TeachingGuideSrc != Inf_INFO_SRC_NONE);
|
||||||
if (Indicators->ThereIsSyllabus)
|
if (Indicators->ThereIsSyllabus)
|
||||||
Indicators->CountIndicators++;
|
Indicators->NumIndicators++;
|
||||||
|
|
||||||
/***** Indicator #2: information about assignments *****/
|
/***** Indicator #2: information about assignments *****/
|
||||||
Indicators->NumAssignments = Asg_GetNumAssignmentsInCrs (CrsCod);
|
Indicators->NumAssignments = Asg_GetNumAssignmentsInCrs (CrsCod);
|
||||||
|
@ -1448,7 +1448,7 @@ static void Ind_ComputeAndStoreIndicatorsCrs (long CrsCod,int NumIndicatorsFromD
|
||||||
(Indicators->NumFilesAssignments != 0) ||
|
(Indicators->NumFilesAssignments != 0) ||
|
||||||
(Indicators->NumFilesWorks != 0);
|
(Indicators->NumFilesWorks != 0);
|
||||||
if (Indicators->ThereAreAssignments)
|
if (Indicators->ThereAreAssignments)
|
||||||
Indicators->CountIndicators++;
|
Indicators->NumIndicators++;
|
||||||
|
|
||||||
/***** Indicator #3: information about online tutoring *****/
|
/***** Indicator #3: information about online tutoring *****/
|
||||||
Indicators->NumThreads = For_GetNumTotalThrsInForumsOfType (For_FORUM_COURSE_USRS,-1L,-1L,-1L,-1L,CrsCod);
|
Indicators->NumThreads = For_GetNumTotalThrsInForumsOfType (For_FORUM_COURSE_USRS,-1L,-1L,-1L,-1L,CrsCod);
|
||||||
|
@ -1458,30 +1458,30 @@ static void Ind_ComputeAndStoreIndicatorsCrs (long CrsCod,int NumIndicatorsFromD
|
||||||
(Indicators->NumPosts != 0) ||
|
(Indicators->NumPosts != 0) ||
|
||||||
(Indicators->NumMsgsSentByTchs != 0);
|
(Indicators->NumMsgsSentByTchs != 0);
|
||||||
if (Indicators->ThereIsOnlineTutoring)
|
if (Indicators->ThereIsOnlineTutoring)
|
||||||
Indicators->CountIndicators++;
|
Indicators->NumIndicators++;
|
||||||
|
|
||||||
/***** Indicator #4: information about materials *****/
|
/***** Indicator #4: information about materials *****/
|
||||||
Indicators->ThereAreMaterials = (Indicators->NumFilesInDocumentZones != 0) ||
|
Indicators->ThereAreMaterials = (Indicators->NumFilesInDocumentZones != 0) ||
|
||||||
(Indicators->NumFilesInSharedZones != 0);
|
(Indicators->NumFilesInSharedZones != 0);
|
||||||
if (Indicators->ThereAreMaterials)
|
if (Indicators->ThereAreMaterials)
|
||||||
Indicators->CountIndicators++;
|
Indicators->NumIndicators++;
|
||||||
|
|
||||||
/***** Indicator #5: information about assessment *****/
|
/***** Indicator #5: information about assessment *****/
|
||||||
Indicators->AssessmentSrc = Inf_GetInfoSrcFromDB (CrsCod,Inf_ASSESSMENT);
|
Indicators->AssessmentSrc = Inf_GetInfoSrcFromDB (CrsCod,Inf_ASSESSMENT);
|
||||||
Indicators->ThereIsAssessment = (Indicators->AssessmentSrc != Inf_INFO_SRC_NONE) ||
|
Indicators->ThereIsAssessment = (Indicators->AssessmentSrc != Inf_INFO_SRC_NONE) ||
|
||||||
(Indicators->TeachingGuideSrc != Inf_INFO_SRC_NONE);
|
(Indicators->TeachingGuideSrc != Inf_INFO_SRC_NONE);
|
||||||
if (Indicators->ThereIsAssessment)
|
if (Indicators->ThereIsAssessment)
|
||||||
Indicators->CountIndicators++;
|
Indicators->NumIndicators++;
|
||||||
|
|
||||||
/***** All the indicators are OK? *****/
|
/***** All the indicators are OK? *****/
|
||||||
Indicators->CoursePartiallyOK = Indicators->CountIndicators >= 1 &&
|
Indicators->CoursePartiallyOK = Indicators->NumIndicators >= 1 &&
|
||||||
Indicators->CountIndicators < Ind_NUM_INDICATORS;
|
Indicators->NumIndicators < Ind_NUM_INDICATORS;
|
||||||
Indicators->CourseAllOK = Indicators->CountIndicators == Ind_NUM_INDICATORS;
|
Indicators->CourseAllOK = Indicators->NumIndicators == Ind_NUM_INDICATORS;
|
||||||
|
|
||||||
/***** Update number of indicators into database
|
/***** Update number of indicators into database
|
||||||
if different to the stored one *****/
|
if different to the stored one *****/
|
||||||
if (NumIndicatorsFromDB != (int) Indicators->CountIndicators)
|
if (NumIndicatorsFromDB != (int) Indicators->NumIndicators)
|
||||||
Ind_StoreIndicatorsCrsIntoDB (CrsCod,Indicators->CountIndicators);
|
Ind_StoreIndicatorsCrsIntoDB (CrsCod,Indicators->NumIndicators);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -54,7 +54,7 @@ struct Ind_IndicatorsCrs
|
||||||
bool ThereAreMaterials;
|
bool ThereAreMaterials;
|
||||||
bool ThereIsAssessment;
|
bool ThereIsAssessment;
|
||||||
Inf_InfoSrc_t AssessmentSrc;
|
Inf_InfoSrc_t AssessmentSrc;
|
||||||
unsigned CountIndicators;
|
unsigned NumIndicators;
|
||||||
bool CoursePartiallyOK;
|
bool CoursePartiallyOK;
|
||||||
bool CourseAllOK;
|
bool CourseAllOK;
|
||||||
};
|
};
|
||||||
|
@ -65,6 +65,8 @@ struct Ind_IndicatorsCrs
|
||||||
|
|
||||||
void Ind_ReqIndicatorsCourses (void);
|
void Ind_ReqIndicatorsCourses (void);
|
||||||
void Ind_ShowIndicatorsCourses (void);
|
void Ind_ShowIndicatorsCourses (void);
|
||||||
unsigned Ind_GetAndUpdateNumIndicatorsCrs (long CrsCod);
|
int Ind_GetNumIndicatorsCrsFromDB (long CrsCod);
|
||||||
|
void Ind_ComputeAndStoreIndicatorsCrs (long CrsCod,int NumIndicatorsFromDB,
|
||||||
|
struct Ind_IndicatorsCrs *Indicators);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue