Version 16.204

This commit is contained in:
Antonio Cañas Vargas 2017-05-04 11:03:44 +02:00
parent d15af31fd0
commit 756ac27652
17 changed files with 495 additions and 261 deletions

View File

@ -8,6 +8,7 @@ CREATE TABLE IF NOT EXISTS IP_prefs (
UsrCod INT NOT NULL DEFAULT -1,
LastChange DATETIME NOT NULL,
FirstDayOfWeek TINYINT NOT NULL DEFAULT 0,
DateFormat TINYINT NOT NULL DEFAULT 0,
Theme CHAR(16) NOT NULL,
IconSet CHAR(16) NOT NULL,
Menu TINYINT NOT NULL DEFAULT 0,
@ -1195,6 +1196,7 @@ CREATE TABLE IF NOT EXISTS usr_data (
IconSet CHAR(16) NOT NULL DEFAULT '',
Language CHAR(2) NOT NULL DEFAULT '',
FirstDayOfWeek TINYINT NOT NULL DEFAULT 0,
DateFormat TINYINT NOT NULL DEFAULT 0,
Photo CHAR(43) NOT NULL DEFAULT '',
PhotoVisibility ENUM('unknown','user','course','system','world') NOT NULL DEFAULT 'unknown',
ProfileVisibility ENUM('unknown','user','course','system','world') NOT NULL DEFAULT 'unknown',
@ -1222,6 +1224,7 @@ CREATE TABLE IF NOT EXISTS usr_data (
INDEX(IconSet),
INDEX(Language),
INDEX(FirstDayOfWeek),
INDEX(DateFormat),
INDEX(PhotoVisibility),
INDEX(ProfileVisibility),
INDEX(CtyCod),

View File

@ -719,13 +719,15 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat,bool CreatingMyOwnAccount)
Usr_CreateBirthdayStrDB (UsrDat,BirthdayStrDB);
sprintf (Query,"INSERT INTO usr_data"
" (EncryptedUsrCod,Password,Surname1,Surname2,FirstName,Sex,"
"Theme,IconSet,Language,FirstDayOfWeek,PhotoVisibility,ProfileVisibility,"
"Theme,IconSet,Language,FirstDayOfWeek,DateFormat,"
"PhotoVisibility,ProfileVisibility,"
"CtyCod,"
"LocalAddress,LocalPhone,FamilyAddress,FamilyPhone,OriginPlace,Birthday,Comments,"
"Menu,SideCols,NotifNtfEvents,EmailNtfEvents)"
" VALUES"
" ('%s','%s','%s','%s','%s','%s',"
"'%s','%s','%s',%u,'%s','%s',"
"'%s','%s','%s',%u,%u,"
"'%s','%s',"
"%ld,"
"'%s','%s','%s','%s','%s',%s,'%s',"
"%u,%u,-1,0)",
@ -737,6 +739,7 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat,bool CreatingMyOwnAccount)
Ico_IconSetId[UsrDat->Prefs.IconSet],
Txt_STR_LANG_ID[UsrDat->Prefs.Language],
Cal_FIRST_DAY_OF_WEEK_DEFAULT,
(unsigned) Dat_FORMAT_DEFAULT,
Pri_VisibilityDB[UsrDat->PhotoVisibility],
Pri_VisibilityDB[UsrDat->ProfileVisibility],
UsrDat->CtyCod,
@ -746,8 +749,8 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat,bool CreatingMyOwnAccount)
BirthdayStrDB,
UsrDat->Comments ? UsrDat->Comments :
"",
Mnu_MENU_DEFAULT,
Cfg_DEFAULT_COLUMNS);
(unsigned) Mnu_MENU_DEFAULT,
(unsigned) Cfg_DEFAULT_COLUMNS);
UsrDat->UsrCod = DB_QueryINSERTandReturnCode (Query,"can not create user");
/* Insert user's IDs as confirmed */

View File

@ -182,6 +182,21 @@ static unsigned Cal_GetParamFirstDayOfWeek (void)
return FirstDayOfWeek;
}
/*****************************************************************************/
/******************** Get first day of week from string **********************/
/*****************************************************************************/
unsigned Cal_GetFirstDayOfWeekFromStr (const char *Str)
{
unsigned UnsignedNum;
if (sscanf (Str,"%u",&UnsignedNum) == 1)
if (Cal_DayIsValidAsFirstDayOfWeek[UnsignedNum])
return (Dat_Format_t) UnsignedNum;
return Cal_FIRST_DAY_OF_WEEK_DEFAULT;
}
/*****************************************************************************/
/***************************** Draw current month ****************************/
/*****************************************************************************/

View File

@ -47,6 +47,7 @@ void Cal_PutIconsToSelectFirstDayOfWeek (void);
void Cal_ShowFormToSelFirstDayOfWeek (Act_Action_t Action,void (*FuncParams) (),
const char *ClassIcon);
void Cal_ChangeFirstDayOfWeek (void);
unsigned Cal_GetFirstDayOfWeekFromStr (const char *Str);
void Cal_DrawCurrentMonth (void);
Act_Action_t Cal_GetActionToSeeCalendar ();

View File

@ -233,13 +233,19 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.203 (2017-05-04)"
#define Log_PLATFORM_VERSION "SWAD 16.204 (2017-05-04)"
#define CSS_FILE "swad16.202.css"
#define JS_FILE "swad16.181.js"
// 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 16.204: May 04, 2017 Form in preferences to change date format. (218656 lines)
3 changes necessary in database:
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1638','es','N','Cambiar formato de fecha');
ALTER TABLE usr_data ADD COLUMN DateFormat TINYINT NOT NULL DEFAULT 0 AFTER FirstDayOfWeek,ADD INDEX (DateFormat);
ALTER TABLE IP_prefs ADD COLUMN DateFormat TINYINT NOT NULL DEFAULT 0 AFTER FirstDayOfWeek;
Version 16.203: May 04, 2017 Form in preferences to change date format. Not finished. (218447 lines)
Version 16.202.2: May 03, 2017 Fixed bug in attendance events, reported by Francisco Ocaña Lara. (218306 lines)
Version 16.202.1: May 02, 2017 Changed help on surveys from STATS to ASSESSMENT. (218296 lines)

View File

@ -95,18 +95,20 @@ mysql> DESCRIBE IP_prefs;
| UsrCod | int(11) | NO | MUL | -1 | |
| LastChange | datetime | NO | MUL | NULL | |
| FirstDayOfWeek | tinyint(4) | NO | | 0 | |
| DateFormat | tinyint(4) | NO | | 0 | |
| Theme | char(16) | NO | | NULL | |
| IconSet | char(16) | NO | | NULL | |
| Menu | tinyint(4) | NO | | 0 | |
| SideCols | tinyint(4) | NO | | NULL | |
+----------------+------------+------+-----+---------+-------+
8 rows in set (0.01 sec)
9 rows in set (0,00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS IP_prefs ("
"IP CHAR(15) NOT NULL," // Cns_MAX_BYTES_IP
"UsrCod INT NOT NULL DEFAULT -1,"
"LastChange DATETIME NOT NULL,"
"FirstDayOfWeek TINYINT NOT NULL DEFAULT 0,"
"DateFormat TINYINT NOT NULL DEFAULT 0,"
"Theme CHAR(16) NOT NULL," // The_MAX_BYTES_THEME_ID
"IconSet CHAR(16) NOT NULL," // Ico_MAX_BYTES_ICON_SET_ID
"Menu TINYINT NOT NULL DEFAULT 0,"
@ -2532,6 +2534,7 @@ mysql> DESCRIBE usr_data;
| IconSet | char(16) | NO | MUL | | |
| Language | char(2) | NO | MUL | | |
| FirstDayOfWeek | tinyint(4) | NO | MUL | 0 | |
| DateFormat | tinyint(4) | NO | MUL | 0 | |
| Photo | char(43) | NO | | | |
| PhotoVisibility | enum('unknown','user','course','system','world') | NO | MUL | unknown | |
| ProfileVisibility | enum('unknown','user','course','system','world') | NO | MUL | unknown | |
@ -2554,7 +2557,7 @@ mysql> DESCRIBE usr_data;
| NotifNtfEvents | int(11) | NO | | 0 | |
| EmailNtfEvents | int(11) | NO | | 0 | |
+-------------------+--------------------------------------------------+------+-----+---------+----------------+
32 rows in set (0,00 sec)
33 rows in set (0,00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS usr_data ("
"UsrCod INT NOT NULL AUTO_INCREMENT,"
@ -2568,6 +2571,7 @@ mysql> DESCRIBE usr_data;
"IconSet CHAR(16) NOT NULL DEFAULT '',"
"Language CHAR(2) NOT NULL DEFAULT '',"
"FirstDayOfWeek TINYINT NOT NULL DEFAULT 0,"
"DateFormat TINYINT NOT NULL DEFAULT 0,"
"Photo CHAR(43) NOT NULL DEFAULT ''," // Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64
"PhotoVisibility ENUM('unknown','user','course','system','world') NOT NULL DEFAULT 'unknown',"
"ProfileVisibility ENUM('unknown','user','course','system','world') NOT NULL DEFAULT 'unknown',"
@ -2595,6 +2599,7 @@ mysql> DESCRIBE usr_data;
"INDEX(IconSet),"
"INDEX(Language),"
"INDEX(FirstDayOfWeek),"
"INDEX(DateFormat),"
"INDEX(PhotoVisibility),"
"INDEX(ProfileVisibility),"
"INDEX(CtyCod),"

View File

@ -42,6 +42,18 @@
extern struct Globals Gbl;
/*****************************************************************************/
/***************************** Public constants ******************************/
/*****************************************************************************/
/***** Date format *****/
const char *Dat_Format_Str[Dat_NUM_OPTIONS_FORMAT] =
{
"yyyy-mm-dd", // Dat_FORMAT_YYYY_MM_DD
"dd mmm yyyy", // Dat_FORMAT_DD_MONTH_YYYY
"mmm dd, yyyy", // Dat_FORMAT_MONTH_DD_YYYY
};
/*****************************************************************************/
/**************************** Private constants ******************************/
/*****************************************************************************/
@ -76,14 +88,6 @@ const char *Dat_TimeStatusClassHidden[Dat_NUM_TIME_STATUS] =
"DATE_BLUE_LIGHT", // Dat_FUTURE
};
/***** Date format *****/
static const char *Dat_Format_Str[Dat_NUM_OPTIONS_FORMAT] =
{
"yyyy-mm-dd", // Dat_FORMAT_YYYY_MM_DD
"dd mmm yyyy", // Dat_FORMAT_DD_MONTH_YYYY
"mmm dd, yyyy", // Dat_FORMAT_MONTH_DD_YYYY
};
/*****************************************************************************/
/****************************** Internal types *******************************/
/*****************************************************************************/
@ -121,10 +125,10 @@ void Dat_PutIconsToSelectDateFormat (void)
fprintf (Gbl.F.Out,"<li class=\"%s\">"
"<label>"
"<input type=\"radio\" name=\"DateFormat\" value=\"%u\"",
(Format == Gbl.Usrs.Me.UsrDat.Prefs.DateFormat) ? "DAT_N LIGHT_BLUE" :
"DAT",
(Format == Gbl.Prefs.DateFormat) ? "DAT_N LIGHT_BLUE" :
"DAT",
(unsigned) Format);
if (Format == Gbl.Usrs.Me.UsrDat.Prefs.DateFormat)
if (Format == Gbl.Prefs.DateFormat)
fprintf (Gbl.F.Out," checked=\"checked\"");
fprintf (Gbl.F.Out," onclick=\"document.getElementById('%s').submit();\" />"
"%s"
@ -151,7 +155,7 @@ void Dat_PutIconsToSelectDateFormat (void)
static void Dat_PutIconsDateFormat (void)
{
/***** Put icon to show a figure *****/
Gbl.Stat.FigureType = Sta_FIRST_DAY_OF_WEEK; // TODO: Change!!!!!!!!!!!!!!
Gbl.Stat.FigureType = Sta_DATE_FORMAT;
Sta_PutIconToShowFigure ();
}
@ -184,12 +188,27 @@ void Dat_ChangeDateFormat (void)
/********************** Get parameter with date format ***********************/
/*****************************************************************************/
static unsigned Dat_GetParamDateFormat (void)
static Dat_Format_t Dat_GetParamDateFormat (void)
{
return (unsigned) Par_GetParToUnsignedLong ("DateFormat",
0,
Dat_NUM_OPTIONS_FORMAT - 1,
Dat_FORMAT_DEFAULT);
return (Dat_Format_t) Par_GetParToUnsignedLong ("DateFormat",
0L,
(unsigned long) (Dat_NUM_OPTIONS_FORMAT - 1),
(unsigned long) Dat_FORMAT_DEFAULT);
}
/*****************************************************************************/
/*********************** Get date format from string *************************/
/*****************************************************************************/
Dat_Format_t Dat_GetDateFormatFromStr (const char *Str)
{
unsigned UnsignedNum;
if (sscanf (Str,"%u",&UnsignedNum) == 1)
if (UnsignedNum < Dat_NUM_OPTIONS_FORMAT)
return (Dat_Format_t) UnsignedNum;
return Dat_FORMAT_DEFAULT;
}
/*****************************************************************************/

View File

@ -106,7 +106,7 @@ typedef enum
Dat_FORMAT_YYYY_MM_DD = 0, // ISO 8601, default
Dat_FORMAT_DD_MONTH_YYYY = 1,
Dat_FORMAT_MONTH_DD_YYYY = 2,
} Dat_Format_t;
} Dat_Format_t; // Do not change these numbers because they are used in database
#define Dat_FORMAT_DEFAULT Dat_FORMAT_YYYY_MM_DD
/*****************************************************************************/
@ -115,6 +115,7 @@ typedef enum
void Dat_PutIconsToSelectDateFormat (void);
void Dat_ChangeDateFormat (void);
Dat_Format_t Dat_GetDateFormatFromStr (const char *Str);
void Dat_GetStartExecutionTimeUTC (void);
void Dat_GetAndConvertCurrentDateTime (void);

View File

@ -445,10 +445,6 @@ void Enr_GetNotifEnrolment (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
void Enr_UpdateUsrData (struct UsrData *UsrDat)
{
extern const char *The_ThemeId[The_NUM_THEMES];
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
extern const char *Pri_VisibilityDB[Pri_NUM_OPTIONS_PRIVACY];
extern const char *Txt_STR_LANG_ID[1 + Txt_NUM_LANGUAGES];
extern const char *Usr_StringsSexDB[Usr_NUM_SEXS];
char BirthdayStrDB[Usr_BIRTHDAY_STR_DB_LENGTH + 1];
char Query[2048];
@ -465,8 +461,6 @@ void Enr_UpdateUsrData (struct UsrData *UsrDat)
sprintf (Query,"UPDATE usr_data"
" SET Password='%s',"
"Surname1='%s',Surname2='%s',FirstName='%s',Sex='%s',"
"Theme='%s',IconSet='%s',Language='%s',FirstDayOfWeek=%u,"
"PhotoVisibility='%s',ProfileVisibility='%s',"
"CtyCod=%ld,"
"LocalAddress='%s',LocalPhone='%s',"
"FamilyAddress='%s',FamilyPhone='%s',"
@ -476,12 +470,6 @@ void Enr_UpdateUsrData (struct UsrData *UsrDat)
UsrDat->Password,
UsrDat->Surname1,UsrDat->Surname2,UsrDat->FirstName,
Usr_StringsSexDB[UsrDat->Sex],
The_ThemeId[UsrDat->Prefs.Theme],
Ico_IconSetId[UsrDat->Prefs.IconSet],
Txt_STR_LANG_ID[UsrDat->Prefs.Language],
UsrDat->Prefs.FirstDayOfWeek,
Pri_VisibilityDB[UsrDat->PhotoVisibility],
Pri_VisibilityDB[UsrDat->ProfileVisibility],
UsrDat->CtyCod,
UsrDat->LocalAddress,UsrDat->LocalPhone,
UsrDat->FamilyAddress,UsrDat->FamilyPhone,

View File

@ -127,12 +127,12 @@ void Gbl_InitializeGlobals (void)
Gbl.HiddenParamsInsertedIntoDB = false;
Gbl.Prefs.Language = Txt_Current_CGI_SWAD_Language;
Gbl.Prefs.Language = Txt_Current_CGI_SWAD_Language;
Gbl.Prefs.FirstDayOfWeek = Cal_FIRST_DAY_OF_WEEK_DEFAULT; // Default first day of week
Gbl.Prefs.DateFormat = Dat_FORMAT_DEFAULT; // Default date format
Gbl.Prefs.Menu = Mnu_MENU_DEFAULT; // Default menu
Gbl.Prefs.Theme = The_THEME_DEFAULT; // Default theme
Gbl.Prefs.IconSet = Ico_ICON_SET_DEFAULT; // Default icon set
Gbl.Prefs.DateFormat = Dat_FORMAT_DEFAULT; // Default date format
Gbl.Prefs.Menu = Mnu_MENU_DEFAULT; // Default menu
Gbl.Prefs.Theme = The_THEME_DEFAULT; // Default theme
Gbl.Prefs.IconSet = Ico_ICON_SET_DEFAULT; // Default icon set
sprintf (Gbl.Prefs.IconsURL,"%s/%s",
Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_PUBLIC_ICON);
sprintf (Gbl.Prefs.PathTheme,"%s/%s/%s",

View File

@ -469,3 +469,18 @@ Mnu_Menu_t Mnu_GetParamMenu (void)
Mnu_NUM_MENUS - 1,
(unsigned long) Mnu_MENU_DEFAULT);
}
/*****************************************************************************/
/*************************** Get menu from string ****************************/
/*****************************************************************************/
Mnu_Menu_t Mnu_GetMenuFromStr (const char *Str)
{
unsigned UnsignedNum;
if (sscanf (Str,"%u",&UnsignedNum) == 1)
if (UnsignedNum < Mnu_NUM_MENUS)
return (Mnu_Menu_t) UnsignedNum;
return Mnu_MENU_DEFAULT;
}

View File

@ -55,5 +55,6 @@ void Mnu_WriteMenuThisTab (void);
void Mnu_PutIconsToSelectMenu (void);
void Mnu_ChangeMenu (void);
Mnu_Menu_t Mnu_GetParamMenu (void);
Mnu_Menu_t Mnu_GetMenuFromStr (const char *Str);
#endif

View File

@ -135,17 +135,15 @@ static void Pre_PutIconsLanguage (void)
void Pre_GetPrefsFromIP (void)
{
extern const bool Cal_DayIsValidAsFirstDayOfWeek[7];
char Query[1024];
unsigned long NumRows;
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned UnsignedNum;
if (Gbl.IP[0])
{
/***** Get preferences from database *****/
sprintf (Query,"SELECT FirstDayOfWeek,Theme,IconSet,Menu,SideCols"
sprintf (Query,"SELECT FirstDayOfWeek,DateFormat,Theme,IconSet,Menu,SideCols"
" FROM IP_prefs WHERE IP='%s'",
Gbl.IP);
if ((NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get preferences")))
@ -157,25 +155,22 @@ void Pre_GetPrefsFromIP (void)
row = mysql_fetch_row (mysql_res);
/* Get first day of week (row[0]) */
Gbl.Prefs.FirstDayOfWeek = Cal_FIRST_DAY_OF_WEEK_DEFAULT;
if (sscanf (row[0],"%u",&UnsignedNum) == 1)
if (Cal_DayIsValidAsFirstDayOfWeek[UnsignedNum])
Gbl.Prefs.FirstDayOfWeek = UnsignedNum;
Gbl.Prefs.FirstDayOfWeek = Cal_GetFirstDayOfWeekFromStr (row[0]);
/* Get theme (row[1]) */
Gbl.Prefs.Theme = The_GetThemeFromStr (row[1]);
/* Get date format (row[1]) */
Gbl.Prefs.DateFormat = Dat_GetDateFormatFromStr (row[1]);
/* Get icon set (row[2]) */
Gbl.Prefs.IconSet = Ico_GetIconSetFromStr (row[2]);
/* Get theme (row[2]) */
Gbl.Prefs.Theme = The_GetThemeFromStr (row[2]);
/* Get menu (row[3]) */
Gbl.Prefs.Menu = Mnu_MENU_DEFAULT;
if (sscanf (row[3],"%u",&UnsignedNum) == 1)
if (UnsignedNum < Mnu_NUM_MENUS)
Gbl.Prefs.Menu = (Mnu_Menu_t) UnsignedNum;
/* Get icon set (row[3]) */
Gbl.Prefs.IconSet = Ico_GetIconSetFromStr (row[3]);
/* Get if user wants to show side columns (row[4]) */
if (sscanf (row[4],"%u",&Gbl.Prefs.SideCols) == 1)
/* Get menu (row[4]) */
Gbl.Prefs.Menu = Mnu_GetMenuFromStr (row[4]);
/* Get if user wants to show side columns (row[5]) */
if (sscanf (row[5],"%u",&Gbl.Prefs.SideCols) == 1)
{
if (Gbl.Prefs.SideCols > Lay_SHOW_BOTH_COLUMNS)
Gbl.Prefs.SideCols = Cfg_DEFAULT_COLUMNS;
@ -198,11 +193,14 @@ void Pre_SetPrefsFromIP (void)
/***** Update preferences from current IP in database *****/
sprintf (Query,"REPLACE INTO IP_prefs"
" (IP,UsrCod,LastChange,FirstDayOfWeek,Theme,IconSet,Menu,SideCols)"
" (IP,UsrCod,LastChange,"
"FirstDayOfWeek,DateFormat,Theme,IconSet,Menu,SideCols)"
" VALUES"
" ('%s',%ld,NOW(),%u,'%s','%s',%u,%u)",
" ('%s',%ld,NOW(),"
"%u,%u,'%s','%s',%u,%u)",
Gbl.IP,Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.Prefs.FirstDayOfWeek,
(unsigned) Gbl.Prefs.DateFormat,
The_ThemeId[Gbl.Prefs.Theme],
Ico_IconSetId[Gbl.Prefs.IconSet],
(unsigned) Gbl.Prefs.Menu,
@ -212,9 +210,12 @@ void Pre_SetPrefsFromIP (void)
/***** If a user is logged, update its preferences in database for all its IP's *****/
if (Gbl.Usrs.Me.Logged)
{
sprintf (Query,"UPDATE IP_prefs SET FirstDayOfWeek=%u,Theme='%s',IconSet='%s',Menu=%u,SideCols=%u"
sprintf (Query,"UPDATE IP_prefs"
" SET FirstDayOfWeek=%u,DateFormat=%u,"
"Theme='%s',IconSet='%s',Menu=%u,SideCols=%u"
" WHERE UsrCod=%ld",
Gbl.Prefs.FirstDayOfWeek,
(unsigned) Gbl.Prefs.DateFormat,
The_ThemeId[Gbl.Prefs.Theme],
Ico_IconSetId[Gbl.Prefs.IconSet],
(unsigned) Gbl.Prefs.Menu,

View File

@ -240,9 +240,10 @@ 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_GetAndShowNumUsrsPerDateFormat (void);
static void Sta_GetAndShowNumUsrsPerIconSet (void);
static void Sta_GetAndShowNumUsrsPerMenu (void);
static void Sta_GetAndShowNumUsrsPerFirstDayOfWeek (void);
static void Sta_GetAndShowNumUsrsPerTheme (void);
static void Sta_GetAndShowNumUsrsPerSideColumns (void);
@ -4001,9 +4002,10 @@ void Sta_ShowFigures (void)
Sta_GetAndShowSurveysStats, // Sta_SURVEYS
Net_ShowWebAndSocialNetworksStats, // Sta_SOCIAL_NETWORKS
Sta_GetAndShowNumUsrsPerLanguage, // Sta_LANGUAGES
Sta_GetAndShowNumUsrsPerFirstDayOfWeek, // Sta_FIRST_DAY_OF_WEEK
Sta_GetAndShowNumUsrsPerDateFormat, // Sta_DATE_FORMAT
Sta_GetAndShowNumUsrsPerIconSet, // Sta_ICON_SETS
Sta_GetAndShowNumUsrsPerMenu, // Sta_MENUS
Sta_GetAndShowNumUsrsPerFirstDayOfWeek, // Sta_FIRST_DAY_OF_WEEK
Sta_GetAndShowNumUsrsPerTheme, // Sta_THEMES
Sta_GetAndShowNumUsrsPerSideColumns, // Sta_SIDE_COLUMNS
Sta_GetAndShowNumUsrsPerPrivacy, // Sta_PRIVACY
@ -8688,6 +8690,284 @@ 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 *Hlp_STATS_Figures_calendar;
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[7]; // 7: seven days in a week
unsigned NumUsrsTotal = 0;
/***** Start table *****/
Lay_StartRoundFrameTable (NULL,Txt_STAT_USE_STAT_TYPES[Sta_FIRST_DAY_OF_WEEK],
NULL,Hlp_STATS_Figures_calendar,2);
/***** 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 first day of week");
/* Update total number of users */
NumUsrsTotal += NumUsrs[FirstDayOfWeek];
}
/***** Write number of users who have chosen each first day of week *****/
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=\"ICO40x40\" />"
"</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);
/***** End table *****/
Lay_EndRoundFrameTable ();
}
/*****************************************************************************/
/******** Get and show number of users who have chosen a date format *********/
/*****************************************************************************/
static void Sta_GetAndShowNumUsrsPerDateFormat (void)
{
extern const char *Dat_Format_Str[Dat_NUM_OPTIONS_FORMAT];
extern const char *Hlp_STATS_Figures_calendar; // TODO: Change!!!!!!!!!!!!!!!!
extern const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_FIGURES];
extern const char *Txt_Format;
extern const char *Txt_No_of_users;
extern const char *Txt_PERCENT_of_users;
unsigned Format;
char Query[1024];
unsigned NumUsrs[Dat_NUM_OPTIONS_FORMAT];
unsigned NumUsrsTotal = 0;
/***** Start table *****/
Lay_StartRoundFrameTable (NULL,Txt_STAT_USE_STAT_TYPES[Sta_DATE_FORMAT],
NULL,Hlp_STATS_Figures_calendar,2); // TODO: Change!!!!!!!!!!!!!!!!
/***** 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_Format,
Txt_No_of_users,
Txt_PERCENT_of_users);
/***** For each format... *****/
for (Format = (Dat_Format_t) 0;
Format <= (Dat_Format_t) (Dat_NUM_OPTIONS_FORMAT - 1);
Format++)
{
/***** Get number of users who have chosen this date format from database *****/
switch (Gbl.Scope.Current)
{
case Sco_SCOPE_SYS:
sprintf (Query,"SELECT COUNT(*) FROM usr_data"
" WHERE DateFormat=%u",
(unsigned) Format);
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.DateFormat=%u",
Gbl.CurrentCty.Cty.CtyCod,(unsigned) Format);
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.DateFormat=%u",
Gbl.CurrentIns.Ins.InsCod,(unsigned) Format);
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.DateFormat=%u",
Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) Format);
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.DateFormat=%u",
Gbl.CurrentDeg.Deg.DegCod,(unsigned) Format);
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.DateFormat=%u",
Gbl.CurrentCrs.Crs.CrsCod,(unsigned) Format);
break;
default:
Lay_ShowErrorAndExit ("Wrong scope.");
break;
}
NumUsrs[Format] = (unsigned) DB_QueryCOUNT (Query,"can not get the number of users who have chosen a date format");
/* Update total number of users */
NumUsrsTotal += NumUsrs[Format];
}
/***** Write number of users who have chosen each date format *****/
for (Format = (Dat_Format_t) 0;
Format <= (Dat_Format_t) (Dat_NUM_OPTIONS_FORMAT - 1);
Format++)
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"DAT_N CENTER_MIDDLE\">"
"%s"
"</td>"
"<td class=\"DAT RIGHT_MIDDLE\">"
"%u"
"</td>"
"<td class=\"DAT RIGHT_MIDDLE\">"
"%5.2f%%"
"</td>"
"</tr>",
Dat_Format_Str[Format],
NumUsrs[Format],
NumUsrsTotal ? (float) NumUsrs[Format] * 100.0 /
(float) NumUsrsTotal :
0);
/***** End table *****/
Lay_EndRoundFrameTable ();
}
/*****************************************************************************/
/********* Get and show number of users who have chosen an icon set **********/
/*****************************************************************************/
@ -8971,149 +9251,6 @@ static void Sta_GetAndShowNumUsrsPerMenu (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 *Hlp_STATS_Figures_calendar;
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[7]; // 7: seven days in a week
unsigned NumUsrsTotal = 0;
/***** Start table *****/
Lay_StartRoundFrameTable (NULL,Txt_STAT_USE_STAT_TYPES[Sta_FIRST_DAY_OF_WEEK],
NULL,Hlp_STATS_Figures_calendar,2);
/***** 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=\"ICO40x40\" />"
"</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);
/***** End table *****/
Lay_EndRoundFrameTable ();
}
/*****************************************************************************/
/********** Get and show number of users who have chosen a theme *************/
/*****************************************************************************/

View File

@ -103,7 +103,7 @@ typedef enum
} Sta_ClicksGroupedBy_t;
#define Sta_CLICKS_GROUPED_BY_DEFAULT Sta_CLICKS_CRS_PER_USR
#define Sta_NUM_FIGURES 24
#define Sta_NUM_FIGURES 25
typedef enum
{
Sta_USERS, // Number of users
@ -124,9 +124,10 @@ typedef enum
Sta_SURVEYS, // Number of surveys
Sta_SOCIAL_NETWORKS, // Number of users in social networks
Sta_LANGUAGES, // Number of users per language
Sta_FIRST_DAY_OF_WEEK, // Number of users per first day of week
Sta_DATE_FORMAT, // Number of users per date format
Sta_ICON_SETS, // Number of users per icon set
Sta_MENUS, // Number of users per menu
Sta_FIRST_DAY_OF_WEEK, // Number of users per first day of week
Sta_THEMES, // Number of users per theme
Sta_SIDE_COLUMNS, // Number of users per layout of columns
Sta_PRIVACY, // Number of users per privacity

View File

@ -13161,6 +13161,27 @@ const char *Txt_Forgotten_password =
"Senha esquecida?";
#endif
const char *Txt_Format =
#if L==1
"Format";
#elif L==2
"Format";
#elif L==3
"Format";
#elif L==4
"Formato";
#elif L==5
"Format";
#elif L==6
"Formato"; // Okoteve traducción
#elif L==7
"Formato";
#elif L==8
"Format";
#elif L==9
"Formato";
#endif
const char *Txt_Forum =
#if L==1
"Foro"; // Necessita traduccio
@ -39578,6 +39599,46 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_FIGURES] =
"Lingua"
#endif
,
#if L==1 // Sta_FIRST_DAY_OF_WEEK
"Calendari"
#elif L==2
"Kalender"
#elif L==3
"Calendar"
#elif L==4
"Calendario"
#elif L==5
"Calendrier"
#elif L==6
"Arapapaha"
#elif L==7
"Calendario"
#elif L==8
"Kalendarz"
#elif L==9
"Calend&aacute;rio"
#endif
,
#if L==1 // Sta_DATE_FORMAT
"Dates"
#elif L==2
"Datum"
#elif L==3
"Dates"
#elif L==4
"Fechas"
#elif L==5
"Dates"
#elif L==6
"Arange"
#elif L==7
"Date"
#elif L==8
"Daty"
#elif L==9
"Datas"
#endif
,
#if L==1 // Sta_ICON_SETS
"Icones"
#elif L==2
@ -39618,26 +39679,6 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_FIGURES] =
"Menu"
#endif
,
#if L==1 // Sta_FIRST_DAY_OF_WEEK
"Calendari"
#elif L==2
"Kalender"
#elif L==3
"Calendar"
#elif L==4
"Calendario"
#elif L==5
"Calendrier"
#elif L==6
"Arapapaha"
#elif L==7
"Calendario"
#elif L==8
"Kalendarz"
#elif L==9
"Calend&aacute;rio"
#endif
,
#if L==1 // Sta_THEMES
"Tema (colors)"
#elif L==2

View File

@ -449,7 +449,6 @@ void Usr_GetEncryptedUsrCodFromUsrCod (struct UsrData *UsrDat) // TODO: Remove t
void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
{
extern const bool Cal_DayIsValidAsFirstDayOfWeek[7];
extern const char *Txt_STR_LANG_ID[1 + Txt_NUM_LANGUAGES];
extern const char *The_ThemeId[The_NUM_THEMES];
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
@ -460,11 +459,11 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
The_Theme_t Theme;
Ico_IconSet_t IconSet;
Txt_Language_t Lan;
unsigned UnsignedNum;
/***** Get user's data from database *****/
sprintf (Query,"SELECT EncryptedUsrCod,Password,Surname1,Surname2,FirstName,Sex,"
"Theme,IconSet,Language,FirstDayOfWeek,Photo,PhotoVisibility,ProfileVisibility,"
"Theme,IconSet,Language,FirstDayOfWeek,DateFormat,"
"Photo,PhotoVisibility,ProfileVisibility,"
"CtyCod,InsCtyCod,InsCod,DptCod,CtrCod,Office,OfficePhone,"
"LocalAddress,LocalPhone,FamilyAddress,FamilyPhone,OriginPlace,"
"DATE_FORMAT(Birthday,'%%Y%%m%%d'),Comments,"
@ -542,52 +541,49 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
}
/* Get first day of week */
UsrDat->Prefs.FirstDayOfWeek = Cal_FIRST_DAY_OF_WEEK_DEFAULT;
if (sscanf (row[9],"%u",&UnsignedNum) == 1)
if (Cal_DayIsValidAsFirstDayOfWeek[UnsignedNum])
UsrDat->Prefs.FirstDayOfWeek = UnsignedNum;
UsrDat->Prefs.FirstDayOfWeek = Cal_GetFirstDayOfWeekFromStr (row[9]);
/* Get date format */
UsrDat->Prefs.DateFormat = Dat_GetDateFormatFromStr (row[10]);
/* Get rest of data */
Str_Copy (UsrDat->Photo,row[10],
Str_Copy (UsrDat->Photo,row[11],
Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64);
UsrDat->PhotoVisibility = Pri_GetVisibilityFromStr (row[11]);
UsrDat->ProfileVisibility = Pri_GetVisibilityFromStr (row[12]);
UsrDat->CtyCod = Str_ConvertStrCodToLongCod (row[13]);
UsrDat->InsCtyCod = Str_ConvertStrCodToLongCod (row[14]);
UsrDat->InsCod = Str_ConvertStrCodToLongCod (row[15]);
UsrDat->PhotoVisibility = Pri_GetVisibilityFromStr (row[12]);
UsrDat->ProfileVisibility = Pri_GetVisibilityFromStr (row[13]);
UsrDat->CtyCod = Str_ConvertStrCodToLongCod (row[14]);
UsrDat->InsCtyCod = Str_ConvertStrCodToLongCod (row[15]);
UsrDat->InsCod = Str_ConvertStrCodToLongCod (row[16]);
UsrDat->Tch.DptCod = Str_ConvertStrCodToLongCod (row[16]);
UsrDat->Tch.CtrCod = Str_ConvertStrCodToLongCod (row[17]);
Str_Copy (UsrDat->Tch.Office,row[18],
UsrDat->Tch.DptCod = Str_ConvertStrCodToLongCod (row[17]);
UsrDat->Tch.CtrCod = Str_ConvertStrCodToLongCod (row[18]);
Str_Copy (UsrDat->Tch.Office,row[19],
Usr_MAX_BYTES_ADDRESS);
Str_Copy (UsrDat->Tch.OfficePhone,row[19],
Str_Copy (UsrDat->Tch.OfficePhone,row[20],
Usr_MAX_BYTES_PHONE);
Str_Copy (UsrDat->LocalAddress,row[20],
Str_Copy (UsrDat->LocalAddress,row[21],
Usr_MAX_BYTES_ADDRESS);
Str_Copy (UsrDat->LocalPhone,row[21],
Str_Copy (UsrDat->LocalPhone,row[22],
Usr_MAX_BYTES_PHONE);
Str_Copy (UsrDat->FamilyAddress,row[22],
Str_Copy (UsrDat->FamilyAddress,row[23],
Usr_MAX_BYTES_ADDRESS);
Str_Copy (UsrDat->FamilyPhone,row[23],
Str_Copy (UsrDat->FamilyPhone,row[24],
Usr_MAX_BYTES_PHONE);
Str_Copy (UsrDat->OriginPlace,row[24],
Str_Copy (UsrDat->OriginPlace,row[25],
Usr_MAX_BYTES_ADDRESS);
Dat_GetDateFromYYYYMMDD (&(UsrDat->Birthday),row[25]);
Dat_GetDateFromYYYYMMDD (&(UsrDat->Birthday),row[26]);
Usr_GetUsrCommentsFromString (row[26] ? row[26] :
Usr_GetUsrCommentsFromString (row[27] ? row[27] :
"",
UsrDat); // Get the comments comunes a todas the courses
/* Get menu */
UsrDat->Prefs.Menu = Mnu_MENU_DEFAULT;
if (sscanf (row[27],"%u",&UnsignedNum) == 1)
if (UnsignedNum < Mnu_NUM_MENUS)
UsrDat->Prefs.Menu = (Mnu_Menu_t) UnsignedNum;
UsrDat->Prefs.Menu = Mnu_GetMenuFromStr (row[28]);
/* Get if user wants to show side columns */
if (sscanf (row[28],"%u",&UsrDat->Prefs.SideCols) == 1)
if (sscanf (row[29],"%u",&UsrDat->Prefs.SideCols) == 1)
{
if (UsrDat->Prefs.SideCols > Lay_SHOW_BOTH_COLUMNS)
UsrDat->Prefs.SideCols = Cfg_DEFAULT_COLUMNS;
@ -596,11 +592,11 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
UsrDat->Prefs.SideCols = Cfg_DEFAULT_COLUMNS;
/* Get on which events I want to be notified inside the platform */
if (sscanf (row[29],"%u",&UsrDat->Prefs.NotifNtfEvents) != 1)
if (sscanf (row[30],"%u",&UsrDat->Prefs.NotifNtfEvents) != 1)
UsrDat->Prefs.NotifNtfEvents = (unsigned) -1; // 0xFF..FF
/* Get on which events I want to be notified by email */
if (sscanf (row[30],"%u",&UsrDat->Prefs.EmailNtfEvents) != 1)
if (sscanf (row[31],"%u",&UsrDat->Prefs.EmailNtfEvents) != 1)
UsrDat->Prefs.EmailNtfEvents = 0;
if (UsrDat->Prefs.EmailNtfEvents >= (1 << Ntf_NUM_NOTIFY_EVENTS)) // Maximum binary value for NotifyEvents is 000...0011...11
UsrDat->Prefs.EmailNtfEvents = 0;
@ -2847,6 +2843,7 @@ static void Usr_SetUsrRoleAndPrefs (void)
/***** Set preferences from my preferences *****/
Gbl.Prefs.FirstDayOfWeek = Gbl.Usrs.Me.UsrDat.Prefs.FirstDayOfWeek;
Gbl.Prefs.DateFormat = Gbl.Usrs.Me.UsrDat.Prefs.DateFormat;
Gbl.Prefs.Menu = Gbl.Usrs.Me.UsrDat.Prefs.Menu;
Gbl.Prefs.SideCols = Gbl.Usrs.Me.UsrDat.Prefs.SideCols;