Version 15.43

This commit is contained in:
Antonio Cañas Vargas 2015-11-21 22:21:41 +01:00
parent 272cdd74cc
commit 7045feb554
4 changed files with 168 additions and 2 deletions

View File

@ -111,11 +111,12 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.42.4 (2015/11/21)"
#define Log_PLATFORM_VERSION "SWAD 15.43 (2015/11/21)"
// 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
/*
Version 15.43: Nov 21, 2015 New figure (statistic) about first day of week. (187693 lines)
Version 15.42.4: Nov 21, 2015 Fixed bug when getting first day of week from IP preferences. (187535 lines)
Version 15.42.3: Nov 21, 2015 Stats of hits distributed by week depend on user's preference about first day of the week. (187528 lines)
Version 15.42.2: Nov 21, 2015 Fixed bug in JavaScript code to draw months. (187524 lines)

View File

@ -240,6 +240,7 @@ static void Sta_GetAndShowSurveysStats (void);
static void Sta_GetAndShowNumUsrsPerPrivacy (void);
static void Sta_GetAndShowNumUsrsPerPrivacyForAnObject (const char *TxtObject,const char *FieldName);
static void Sta_GetAndShowNumUsrsPerLanguage (void);
static void Sta_GetAndShowNumUsrsPerFirstDayOfWeek (void);
static void Sta_GetAndShowNumUsrsPerLayout (void);
static void Sta_GetAndShowNumUsrsPerTheme (void);
static void Sta_GetAndShowNumUsrsPerIconSet (void);
@ -3930,6 +3931,10 @@ void Sta_ShowUseOfPlatform (void)
/***** Number of users who have chosen a language *****/
Sta_GetAndShowNumUsrsPerLanguage ();
break;
case Sta_FIRST_DAY_OF_WEEK:
/***** Number of users who have chosen a first day of week *****/
Sta_GetAndShowNumUsrsPerFirstDayOfWeek ();
break;
case Sta_LAYOUTS:
/***** Number of users who have chosen a layout *****/
Sta_GetAndShowNumUsrsPerLayout ();
@ -7771,6 +7776,145 @@ static void Sta_GetAndShowNumUsrsPerLanguage (void)
Lay_EndRoundFrameTable ();
}
/*****************************************************************************/
/***** Get and show number of users who have chosen a first day of week ******/
/*****************************************************************************/
static void Sta_GetAndShowNumUsrsPerFirstDayOfWeek (void)
{
extern const bool Cal_DayIsValidAsFirstDayOfWeek[7];
extern const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_FIGURES];
extern const char *Txt_Calendar;
extern const char *Txt_First_day_of_the_week;
extern const char *Txt_DAYS_SMALL[7];
extern const char *Txt_No_of_users;
extern const char *Txt_PERCENT_of_users;
unsigned FirstDayOfWeek;
char Query[1024];
unsigned NumUsrs[Lay_NUM_LAYOUTS];
unsigned NumUsrsTotal = 0;
Lay_StartRoundFrameTable (NULL,2,Txt_STAT_USE_STAT_TYPES[Sta_FIRST_DAY_OF_WEEK]);
/***** Heading row *****/
fprintf (Gbl.F.Out,"<tr>"
"<th class=\"LEFT_MIDDLE\">"
"%s"
"</th>"
"<th class=\"RIGHT_MIDDLE\">"
"%s"
"</th>"
"<th class=\"RIGHT_MIDDLE\">"
"%s"
"</th>"
"</tr>",
Txt_Calendar,
Txt_No_of_users,
Txt_PERCENT_of_users);
/***** For each day... *****/
for (FirstDayOfWeek = 0; // Monday
FirstDayOfWeek <= 6; // Sunday
FirstDayOfWeek++)
if (Cal_DayIsValidAsFirstDayOfWeek[FirstDayOfWeek])
{
/***** Get number of users who have chosen this first day of week from database *****/
switch (Gbl.Scope.Current)
{
case Sco_SCOPE_SYS:
sprintf (Query,"SELECT COUNT(*) FROM usr_data"
" WHERE FirstDayOfWeek='%u'",
(unsigned) FirstDayOfWeek);
break;
case Sco_SCOPE_CTY:
sprintf (Query,"SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM institutions,centres,degrees,courses,crs_usr,usr_data"
" WHERE institutions.CtyCod='%ld'"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=degrees.CtrCod"
" AND degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.FirstDayOfWeek='%u'",
Gbl.CurrentCty.Cty.CtyCod,(unsigned) FirstDayOfWeek);
break;
case Sco_SCOPE_INS:
sprintf (Query,"SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM centres,degrees,courses,crs_usr,usr_data"
" WHERE centres.InsCod='%ld'"
" AND centres.CtrCod=degrees.CtrCod"
" AND degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.FirstDayOfWeek='%u'",
Gbl.CurrentIns.Ins.InsCod,(unsigned) FirstDayOfWeek);
break;
case Sco_SCOPE_CTR:
sprintf (Query,"SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM degrees,courses,crs_usr,usr_data"
" WHERE degrees.CtrCod='%ld'"
" AND degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.FirstDayOfWeek='%u'",
Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) FirstDayOfWeek);
break;
case Sco_SCOPE_DEG:
sprintf (Query,"SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM courses,crs_usr,usr_data"
" WHERE courses.DegCod='%ld'"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.FirstDayOfWeek='%u'",
Gbl.CurrentDeg.Deg.DegCod,(unsigned) FirstDayOfWeek);
break;
case Sco_SCOPE_CRS:
sprintf (Query,"SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM crs_usr,usr_data"
" WHERE crs_usr.CrsCod='%ld'"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.FirstDayOfWeek='%u'",
Gbl.CurrentCrs.Crs.CrsCod,(unsigned) FirstDayOfWeek);
break;
default:
Lay_ShowErrorAndExit ("Wrong scope.");
break;
}
NumUsrs[FirstDayOfWeek] = (unsigned) DB_QueryCOUNT (Query,"can not get the number of users who have chosen a layout");
/* Update total number of users */
NumUsrsTotal += NumUsrs[FirstDayOfWeek];
}
/***** Write number of users who have chosen each layout *****/
for (FirstDayOfWeek = 0; // Monday
FirstDayOfWeek <= 6; // Sunday
FirstDayOfWeek++)
if (Cal_DayIsValidAsFirstDayOfWeek[FirstDayOfWeek])
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"CENTER_MIDDLE\">"
"<img src=\"%s/first-day-of-week-%u-64x64.png\""
" alt=\"%s\" title=\"%s: %s\""
" class=\"ICON32x32\" />"
"</td>"
"<td class=\"DAT RIGHT_MIDDLE\">"
"%u"
"</td>"
"<td class=\"DAT RIGHT_MIDDLE\">"
"%5.2f%%"
"</td>"
"</tr>",
Gbl.Prefs.IconsURL,FirstDayOfWeek,
Txt_DAYS_SMALL[FirstDayOfWeek],
Txt_First_day_of_the_week,Txt_DAYS_SMALL[FirstDayOfWeek],
NumUsrs[FirstDayOfWeek],
NumUsrsTotal ? (float) NumUsrs[FirstDayOfWeek] * 100.0 /
(float) NumUsrsTotal :
0);
Lay_EndRoundFrameTable ();
}
/*****************************************************************************/
/********* Get and show number of users who have chosen a layout *************/
/*****************************************************************************/

View File

@ -97,7 +97,7 @@ typedef enum
Sta_CLICKS_GBL_PER_COURSE = 23,
} Sta_ClicksGroupedBy_t;
#define Sta_NUM_FIGURES 21
#define Sta_NUM_FIGURES 22
typedef enum
{
Sta_USERS, // Number of users
@ -116,6 +116,7 @@ typedef enum
Sta_SURVEYS, // Number of surveys
Sta_PRIVACY, // Number of users per privacity
Sta_LANGUAGES, // Number of users per language
Sta_FIRST_DAY_OF_WEEK, // Number of users per first day of week
Sta_LAYOUTS, // Number of users per layout
Sta_THEMES, // Number of users per theme
Sta_ICON_SETS, // Number of users per icon set

View File

@ -36715,6 +36715,26 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_FIGURES] =
"Lingua"
#endif
,
#if L==0 // Sta_FIRST_DAY_OF_WEEK
"Calendari"
#elif L==1
"Kalender"
#elif L==2
"Calendar"
#elif L==3
"Calendario"
#elif L==4
"Calendrier"
#elif L==5
"Arapapaha"
#elif L==6
"Calendario"
#elif L==7
"Kalendarz"
#elif L==8
"Calend&aacute;rio"
#endif
,
#if L==0 // Sta_LAYOUTS
"Disseny"
#elif L==1