Version 15.222.5

This commit is contained in:
Antonio Cañas Vargas 2016-06-10 10:22:22 +02:00
parent 9a9b8fb6e9
commit c4aae64097
4 changed files with 41 additions and 35 deletions

View File

@ -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)

View File

@ -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 *****/

View File

@ -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);
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -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