diff --git a/sql/swad.sql b/sql/swad.sql
index 2e32361b..e420a174 100644
--- a/sql/swad.sql
+++ b/sql/swad.sql
@@ -1202,17 +1202,17 @@ CREATE TABLE IF NOT EXISTS usr_banned (
--
CREATE TABLE IF NOT EXISTS usr_data (
UsrCod INT NOT NULL AUTO_INCREMENT,
- EncryptedUsrCod CHAR(43) NOT NULL,
- Password CHAR(86) COLLATE latin1_bin NOT NULL,
- Surname1 VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL,
- Surname2 VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL,
- FirstName VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL,
+ EncryptedUsrCod CHAR(43) NOT NULL DEFAULT '',
+ Password CHAR(86) COLLATE latin1_bin NOT NULL DEFAULT '',
+ Surname1 VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL DEFAULT '',
+ Surname2 VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL DEFAULT '',
+ FirstName VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL DEFAULT '',
Sex ENUM ('unknown','female','male') NOT NULL DEFAULT 'unknown',
- Theme CHAR(16) NOT NULL,
- IconSet CHAR(16) NOT NULL,
- Language CHAR(2) NOT NULL,
+ Theme CHAR(16) NOT NULL DEFAULT '',
+ IconSet CHAR(16) NOT NULL DEFAULT '',
+ Language CHAR(2) NOT NULL DEFAULT '',
FirstDayOfWeek TINYINT NOT NULL DEFAULT 0,
- Photo CHAR(43) NOT NULL,
+ 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',
CtyCod INT NOT NULL DEFAULT -1,
@@ -1220,15 +1220,15 @@ CREATE TABLE IF NOT EXISTS usr_data (
InsCod INT NOT NULL DEFAULT -1,
DptCod INT NOT NULL DEFAULT -1,
CtrCod INT NOT NULL DEFAULT -1,
- Office VARCHAR(127) NOT NULL,
- OfficePhone CHAR(16) NOT NULL,
- LocalAddress VARCHAR(127) NOT NULL,
- LocalPhone CHAR(16) NOT NULL,
- FamilyAddress VARCHAR(127) NOT NULL,
- FamilyPhone CHAR(16) NOT NULL,
- OriginPlace VARCHAR(127) NOT NULL,
+ Office VARCHAR(127) NOT NULL DEFAULT '',
+ OfficePhone CHAR(16) NOT NULL DEFAULT '',
+ LocalAddress VARCHAR(127) NOT NULL DEFAULT '',
+ LocalPhone CHAR(16) NOT NULL DEFAULT '',
+ FamilyAddress VARCHAR(127) NOT NULL DEFAULT '',
+ FamilyPhone CHAR(16) NOT NULL DEFAULT '',
+ OriginPlace VARCHAR(127) NOT NULL DEFAULT '',
Birthday DATE NOT NULL,
- Comments TEXT NOT NULL,
+ Comments TEXT NOT NULL DEFAULT '',
Menu TINYINT NOT NULL DEFAULT 0,
SideCols TINYINT NOT NULL DEFAULT 3,
NotifNtfEvents INT NOT NULL DEFAULT 0,
diff --git a/swad_account.c b/swad_account.c
index 6c4f4933..ee3d84e4 100644
--- a/swad_account.c
+++ b/swad_account.c
@@ -456,6 +456,7 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat)
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];
char PathRelUsr[PATH_MAX+1];
unsigned NumID;
@@ -472,6 +473,7 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat)
/***** Insert new user in database *****/
/* Insert user's data */
+ Usr_CreateBirthdayStrDB (UsrDat,BirthdayStrDB);
sprintf (Query,"INSERT INTO usr_data (EncryptedUsrCod,Password,Surname1,Surname2,FirstName,Sex,"
"Theme,IconSet,Language,FirstDayOfWeek,PhotoVisibility,ProfileVisibility,"
"CtyCod,"
@@ -480,7 +482,7 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat)
" VALUES ('%s','%s','%s','%s','%s','%s',"
"'%s','%s','%s','%u','%s','%s',"
"'%ld',"
- "'%s','%s','%s','%s','%s','%04u-%02u-%02u','%s',"
+ "'%s','%s','%s','%s','%s',%s,'%s',"
"'%u','%u','-1','0')",
UsrDat->EncryptedUsrCod,
UsrDat->Password,
@@ -496,7 +498,7 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat)
UsrDat->LocalAddress ,UsrDat->LocalPhone,
UsrDat->FamilyAddress,UsrDat->FamilyPhone,
UsrDat->OriginPlace,
- UsrDat->Birthday.Year,UsrDat->Birthday.Month,UsrDat->Birthday.Day,
+ BirthdayStrDB,
UsrDat->Comments ? UsrDat->Comments :
"",
Mnu_MENU_DEFAULT,
diff --git a/swad_changelog.h b/swad_changelog.h
index 6ad20cf1..b2055296 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -130,20 +130,43 @@
// TODO: FIX BUG: A theacher uploads a document in course documents zone, then he/she unregister from course, the he/she search for his/her documents, a document is shown in results but he/she can not view it
// TODO: FIX BUG: Txt_Save_file_properties does not have sense in briefcase, because nothing to save (license should be editable in briefcase?)
// TODO: In listing of courses, teachers column is before than students column. In edition of courses, students column is before teachers column.
+// TODO: List exam announcement as a list, like assignments. When clicking on an announcement, it will be shown alone, as now.
/*****************************************************************************/
/****************************** Public constants *****************************/
/*****************************************************************************/
-#define Log_PLATFORM_VERSION "SWAD 15.206 (2016-04-30)"
+#define Log_PLATFORM_VERSION "SWAD 15.207 (2016-05-01)"
#define CSS_FILE "swad15.204.1.css"
#define JS_FILE "swad15.197.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 15.207: May 01, 2016 Add default values for fields in users' data table. (201424 lines)
+ Birthday default value now is NULL.
+ 18 changes necessary in database:
+ALTER TABLE usr_data CHANGE COLUMN EncryptedUsrCod EncryptedUsrCod CHAR(43) NOT NULL DEFAULT '';
+ALTER TABLE usr_data CHANGE COLUMN Password Password CHAR(86) COLLATE latin1_bin NOT NULL DEFAULT '';
+ALTER TABLE usr_data CHANGE COLUMN Surname1 Surname1 VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL DEFAULT '';
+ALTER TABLE usr_data CHANGE COLUMN Surname2 Surname2 VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL DEFAULT '';
+ALTER TABLE usr_data CHANGE COLUMN FirstName FirstName VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL DEFAULT '';
+ALTER TABLE usr_data CHANGE COLUMN Theme Theme CHAR(16) NOT NULL DEFAULT '';
+ALTER TABLE usr_data CHANGE COLUMN IconSet IconSet CHAR(16) NOT NULL DEFAULT '';
+ALTER TABLE usr_data CHANGE COLUMN Language Language CHAR(2) NOT NULL DEFAULT '';
+ALTER TABLE usr_data CHANGE COLUMN Photo Photo CHAR(43) NOT NULL DEFAULT '';
+ALTER TABLE usr_data CHANGE COLUMN Office Office VARCHAR(127) NOT NULL DEFAULT '';
+ALTER TABLE usr_data CHANGE COLUMN OfficePhone OfficePhone CHAR(16) NOT NULL DEFAULT '';
+ALTER TABLE usr_data CHANGE COLUMN LocalAddress LocalAddress VARCHAR(127) NOT NULL DEFAULT '';
+ALTER TABLE usr_data CHANGE COLUMN LocalPhone LocalPhone CHAR(16) NOT NULL DEFAULT '';
+ALTER TABLE usr_data CHANGE COLUMN FamilyAddress FamilyAddress VARCHAR(127) NOT NULL DEFAULT '';
+ALTER TABLE usr_data CHANGE COLUMN FamilyPhone FamilyPhone CHAR(16) NOT NULL DEFAULT '';
+ALTER TABLE usr_data CHANGE COLUMN OriginPlace OriginPlace VARCHAR(127) NOT NULL DEFAULT '';
+ALTER TABLE usr_data CHANGE COLUMN Birthday Birthday DATE;
+UPDATE usr_data SET Birthday=NULL WHERE Birthday='0000-00-00';
+
Version 15.206: Apr 30, 2016 Remove default DATETIME fields to avoid errors if 0 is not allowed in date in database. (201424 lines)
- 6 changes necessary in database:
+ 7 changes necessary in database:
ALTER TABLE connected CHANGE COLUMN LastTime LastTime DATETIME NOT NULL;
ALTER TABLE crs_grp_types CHANGE COLUMN OpenTime OpenTime DATETIME NOT NULL;
ALTER TABLE crs_last CHANGE COLUMN LastTime LastTime DATETIME NOT NULL;
diff --git a/swad_database.c b/swad_database.c
index c072cfa0..03f68d06 100644
--- a/swad_database.c
+++ b/swad_database.c
@@ -2547,18 +2547,17 @@ mysql> DESCRIBE usr_data;
| Field | Type | Null | Key | Default | Extra |
+-------------------+--------------------------------------------------+------+-----+---------+----------------+
| UsrCod | int(11) | NO | PRI | NULL | auto_increment |
-| EncryptedUsrCod | char(43) | NO | UNI | NULL | |
-| Password | char(86) | NO | | NULL | |
-| Surname1 | varchar(32) | NO | | NULL | |
-| Surname2 | varchar(32) | NO | | NULL | |
-| FirstName | varchar(32) | NO | | NULL | |
+| EncryptedUsrCod | char(43) | NO | UNI | | |
+| Password | char(86) | NO | | | |
+| Surname1 | varchar(32) | NO | | | |
+| Surname2 | varchar(32) | NO | | | |
+| FirstName | varchar(32) | NO | | | |
| Sex | enum('unknown','female','male') | NO | | unknown | |
-| Layout | tinyint(4) | NO | MUL | 0 | |
-| Theme | char(16) | NO | MUL | NULL | |
-| IconSet | char(16) | NO | MUL | NULL | |
-| Language | char(2) | NO | MUL | NULL | |
+| Theme | char(16) | NO | MUL | | |
+| IconSet | char(16) | NO | MUL | | |
+| Language | char(2) | NO | MUL | | |
| FirstDayOfWeek | tinyint(4) | NO | MUL | 0 | |
-| Photo | char(43) | NO | | NULL | |
+| Photo | char(43) | NO | | | |
| PhotoVisibility | enum('unknown','user','course','system','world') | NO | MUL | unknown | |
| ProfileVisibility | enum('unknown','user','course','system','world') | NO | MUL | unknown | |
| CtyCod | int(11) | NO | MUL | -1 | |
@@ -2566,35 +2565,35 @@ mysql> DESCRIBE usr_data;
| InsCod | int(11) | NO | MUL | -1 | |
| DptCod | int(11) | NO | MUL | -1 | |
| CtrCod | int(11) | NO | MUL | -1 | |
-| Office | varchar(127) | NO | | NULL | |
-| OfficePhone | char(16) | NO | | NULL | |
-| LocalAddress | varchar(127) | NO | | NULL | |
-| LocalPhone | char(16) | NO | | NULL | |
-| FamilyAddress | varchar(127) | NO | | NULL | |
-| FamilyPhone | char(16) | NO | | NULL | |
-| OriginPlace | varchar(127) | NO | | NULL | |
-| Birthday | date | NO | | NULL | |
+| Office | varchar(127) | NO | | | |
+| OfficePhone | char(16) | NO | | | |
+| LocalAddress | varchar(127) | NO | | | |
+| LocalPhone | char(16) | NO | | | |
+| FamilyAddress | varchar(127) | NO | | | |
+| FamilyPhone | char(16) | NO | | | |
+| OriginPlace | varchar(127) | NO | | | |
+| Birthday | date | YES | | NULL | |
| Comments | text | NO | | NULL | |
| Menu | tinyint(4) | NO | MUL | 0 | |
| SideCols | tinyint(4) | NO | MUL | 3 | |
-| NotifNtfEvents | int(11) | NO | | -1 | |
+| NotifNtfEvents | int(11) | NO | | 0 | |
| EmailNtfEvents | int(11) | NO | | 0 | |
+-------------------+--------------------------------------------------+------+-----+---------+----------------+
-33 rows in set (0.01 sec)
+32 rows in set (0.00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS usr_data ("
"UsrCod INT NOT NULL AUTO_INCREMENT,"
- "EncryptedUsrCod CHAR(43) NOT NULL,"
- "Password CHAR(86) COLLATE latin1_bin NOT NULL,"
- "Surname1 VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL,"
- "Surname2 VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL,"
- "FirstName VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL,"
+ "EncryptedUsrCod CHAR(43) NOT NULL DEFAULT '',"
+ "Password CHAR(86) COLLATE latin1_bin NOT NULL DEFAULT '',"
+ "Surname1 VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL DEFAULT '',"
+ "Surname2 VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL DEFAULT '',"
+ "FirstName VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL DEFAULT '',"
"Sex ENUM ('unknown','female','male') NOT NULL DEFAULT 'unknown',"
- "Theme CHAR(16) NOT NULL,"
- "IconSet CHAR(16) NOT NULL,"
- "Language CHAR(2) NOT NULL,"
+ "Theme CHAR(16) NOT NULL DEFAULT '',"
+ "IconSet CHAR(16) NOT NULL DEFAULT '',"
+ "Language CHAR(2) NOT NULL DEFAULT '',"
"FirstDayOfWeek TINYINT NOT NULL DEFAULT 0,"
- "Photo CHAR(43) NOT NULL,"
+ "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',"
"CtyCod INT NOT NULL DEFAULT -1,"
@@ -2602,14 +2601,14 @@ mysql> DESCRIBE usr_data;
"InsCod INT NOT NULL DEFAULT -1,"
"DptCod INT NOT NULL DEFAULT -1,"
"CtrCod INT NOT NULL DEFAULT -1,"
- "Office VARCHAR(127) NOT NULL,"
- "OfficePhone CHAR(16) NOT NULL,"
- "LocalAddress VARCHAR(127) NOT NULL,"
- "LocalPhone CHAR(16) NOT NULL,"
- "FamilyAddress VARCHAR(127) NOT NULL,"
- "FamilyPhone CHAR(16) NOT NULL,"
- "OriginPlace VARCHAR(127) NOT NULL,"
- "Birthday DATE NOT NULL,"
+ "Office VARCHAR(127) NOT NULL DEFAULT '',"
+ "OfficePhone CHAR(16) NOT NULL DEFAULT '',"
+ "LocalAddress VARCHAR(127) NOT NULL DEFAULT '',"
+ "LocalPhone CHAR(16) NOT NULL DEFAULT '',"
+ "FamilyAddress VARCHAR(127) NOT NULL DEFAULT '',"
+ "FamilyPhone CHAR(16) NOT NULL DEFAULT '',"
+ "OriginPlace VARCHAR(127) NOT NULL DEFAULT '',"
+ "Birthday DATE,"
"Comments TEXT NOT NULL,"
"Menu TINYINT NOT NULL DEFAULT 0,"
"SideCols TINYINT NOT NULL DEFAULT 3,"
diff --git a/swad_enrollment.c b/swad_enrollment.c
index 65ba1384..a801399a 100644
--- a/swad_enrollment.c
+++ b/swad_enrollment.c
@@ -443,6 +443,7 @@ void Enr_UpdateUsrData (struct UsrData *UsrDat)
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];
/***** Check if user's code is initialized *****/
@@ -453,6 +454,7 @@ void Enr_UpdateUsrData (struct UsrData *UsrDat)
Enr_FilterUsrDat (UsrDat);
/***** Update user's common data *****/
+ Usr_CreateBirthdayStrDB (UsrDat,BirthdayStrDB);
sprintf (Query,"UPDATE usr_data"
" SET Password='%s',"
"Surname1='%s',Surname2='%s',FirstName='%s',Sex='%s',"
@@ -461,7 +463,7 @@ void Enr_UpdateUsrData (struct UsrData *UsrDat)
"CtyCod='%ld',"
"LocalAddress='%s',LocalPhone='%s',"
"FamilyAddress='%s',FamilyPhone='%s',"
- "OriginPlace='%s',Birthday='%04u-%02u-%02u',"
+ "OriginPlace='%s',Birthday=%s,"
"Comments='%s'"
" WHERE UsrCod='%ld'",
UsrDat->Password,
@@ -477,7 +479,7 @@ void Enr_UpdateUsrData (struct UsrData *UsrDat)
UsrDat->LocalAddress,UsrDat->LocalPhone,
UsrDat->FamilyAddress,UsrDat->FamilyPhone,
UsrDat->OriginPlace,
- UsrDat->Birthday.Year,UsrDat->Birthday.Month,UsrDat->Birthday.Day,
+ BirthdayStrDB,
UsrDat->Comments ? UsrDat->Comments :
"",
UsrDat->UsrCod);
@@ -493,9 +495,9 @@ void Enr_FilterUsrDat (struct UsrData *UsrDat)
/***** Fix birthday *****/
if (UsrDat->Birthday.Year < Gbl.Now.Date.Year-99 ||
UsrDat->Birthday.Year > Gbl.Now.Date.Year-16)
- UsrDat->Birthday.Year =
+ UsrDat->Birthday.Year =
UsrDat->Birthday.Month =
- UsrDat->Birthday.Day = 0;
+ UsrDat->Birthday.Day = 0;
}
/*****************************************************************************/
diff --git a/swad_text.c b/swad_text.c
index 1e03796c..7e1ce34e 100644
--- a/swad_text.c
+++ b/swad_text.c
@@ -40364,7 +40364,7 @@ const char *Txt_Tag_X_not_allowed_Click_to_allow_it = // Warning: it is very imp
"Tag %s not allowed. Click to allow it."; // Necessita de tradução
#endif
-#if defined LOCALHOST_UBUNTU // localhost (Ubuntu) ******************
+#if defined LOCALHOST_UBUNTU // localhost (Ubuntu) *****************
const char *Txt_TAGLINE =
# if L==1
@@ -40408,7 +40408,7 @@ const char *Txt_TAGLINE_BR =
"plataforma de
apoio ao ensino";
# endif
-#elif defined OPENSWAD_ORG // openswad.org ************************
+#elif defined OPENSWAD_ORG // openswad.org ***********************
const char *Txt_TAGLINE =
# if L==1
@@ -40452,7 +40452,7 @@ const char *Txt_TAGLINE_BR =
"plataforma de
apoio ao ensino";
# endif
-#elif defined SWAD_UGR_ES // swad.ugr.es *************************
+#elif defined SWAD_UGR_ES // swad.ugr.es ************************
const char *Txt_TAGLINE =
# if L==1
@@ -40496,7 +40496,51 @@ const char *Txt_TAGLINE_BR =
"plataforma de apoio
ao ensino (UGR)";
# endif
-#elif defined WWW_CEVUNA_UNA_PY // www.cevuna.una.py/swad **************
+#elif defined SWADBERRY_UGR_ES // swadberry.ugr.es *******************
+
+const char *Txt_TAGLINE =
+# if L==1
+ "plataforma de suport a la docència (Raspberry Pi)";
+# elif L==2
+ "Plattform zur Unterstützung der Lehre (Raspberry Pi)";
+# elif L==3
+ "platform to support teaching (Raspberry Pi)";
+# elif L==4
+ "plataforma de apoyo a la docencia (Raspberry Pi)";
+# elif L==5
+ "plate-forme pour appuyer l'enseignement (Raspberry Pi)";
+# elif L==6
+ "plataforma de apoyo a la docencia (Raspberry Pi)"; // Okoteve traducción
+# elif L==7
+ "piattaforma per sostenere l'insegnamento (Raspberry Pi)";
+# elif L==8
+ "platforma do wspierania nauczania (Raspberry Pi)";
+# elif L==9
+ "plataforma de apoio ao ensino (Raspberry Pi)";
+# endif
+
+const char *Txt_TAGLINE_BR =
+# if L==1
+ "plataforma de suport
a la docència (Raspberry Pi)";
+# elif L==2
+ "Plattform zur
Unterstützung der Lehre (Raspberry Pi)";
+# elif L==3
+ "platform to
support teaching (Raspberry Pi)";
+# elif L==4
+ "plataforma de apoyo
a la docencia (Raspberry Pi)";
+# elif L==5
+ "plate-forme pour
appuyer l'enseignement (Raspberry Pi)";
+# elif L==6
+ "plataforma de apoyo
a la docencia (Raspberry Pi)"; // Okoteve traducción
+# elif L==7
+ "piattaforma per
sostenere l'insegnamento (Raspberry Pi)";
+# elif L==8
+ "platforma do
wspierania nauczania (Raspberry Pi)";
+# elif L==9
+ "plataforma de
apoio ao ensino (Raspberry Pi)";
+# endif
+
+#elif defined WWW_CEVUNA_UNA_PY // www.cevuna.una.py/swad *************
const char *Txt_TAGLINE =
# if L==1
diff --git a/swad_user.c b/swad_user.c
index c9208272..703ef811 100644
--- a/swad_user.c
+++ b/swad_user.c
@@ -560,8 +560,9 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
strncpy (UsrDat->OriginPlace ,row[24],sizeof (UsrDat->OriginPlace ) - 1);
UsrDat->OriginPlace [sizeof (UsrDat->OriginPlace ) - 1] = '\0';
strcpy (StrBirthday,
- row[25] ? row[25] :
- "0000-00-00");
+ row[25] ? row[25] :
+ "0000-00-00");
+
Usr_GetUsrCommentsFromString (row[26] ? row[26] :
"",
UsrDat); // Get the comments comunes a todas the courses
@@ -1614,7 +1615,25 @@ void Usr_WelcomeUsr (void)
}
}
-/******************************************************************************/
+/*****************************************************************************/
+/************ Write birthday string to insert or update database *************/
+/*****************************************************************************/
+
+void Usr_CreateBirthdayStrDB (const struct UsrData *UsrDat,
+ char BirthdayStrDB[Usr_BIRTHDAY_STR_DB_LENGTH+1])
+ {
+ if (UsrDat->Birthday.Year == 0 ||
+ UsrDat->Birthday.Month == 0 ||
+ UsrDat->Birthday.Day == 0)
+ strcpy (BirthdayStrDB,"NULL");
+ else
+ sprintf (BirthdayStrDB,"'%04u-%02u-%02u'",
+ UsrDat->Birthday.Year,
+ UsrDat->Birthday.Month,
+ UsrDat->Birthday.Day);
+ }
+
+/*****************************************************************************/
/*************** Check if my birthday is already congratulated ***************/
/*****************************************************************************/
@@ -2504,7 +2523,6 @@ static void Usr_SetUsrRoleAndPrefs (void)
}
}
-
/***** Check if I belong to current course *****/
if (Gbl.CurrentCrs.Crs.CrsCod > 0)
Gbl.Usrs.Me.IBelongToCurrentCrs = Usr_CheckIfIBelongToCrs (Gbl.CurrentCrs.Crs.CrsCod);
diff --git a/swad_user.h b/swad_user.h
index 479bbfdd..fc421296 100644
--- a/swad_user.h
+++ b/swad_user.h
@@ -61,6 +61,8 @@
#define Usr_MAX_BYTES_NAME 32
#define Usr_MAX_BYTES_NAME_SPEC_CHAR (Usr_MAX_BYTES_NAME*Str_MAX_LENGTH_SPEC_CHAR_HTML)
+#define Usr_BIRTHDAY_STR_DB_LENGTH (1+4+1+2+1+2+1) // "'%04u-%02u-%02u'"
+
#define Usr_MAX_LENGTH_PHONE 16
#define Usr_MAX_BYTES_PHONE 16
@@ -251,6 +253,10 @@ void Usr_Logout (void);
void Usr_PutLinkToLogin (void);
void Usr_WriteFormLogin (void);
void Usr_WelcomeUsr (void);
+
+void Usr_CreateBirthdayStrDB (const struct UsrData *UsrDat,
+ char BirthdayStrDB[Usr_BIRTHDAY_STR_DB_LENGTH+1]);
+
void Usr_PutFormLogIn (void);
void Usr_WriteLoggedUsrHead (void);
void Usr_PutFormLogOut (void);
diff --git a/swad_web_service.c b/swad_web_service.c
index 0144cf17..80ec6763 100644
--- a/swad_web_service.c
+++ b/swad_web_service.c
@@ -553,8 +553,13 @@ static int Svc_GetSomeUsrDataFromUsrCod (struct UsrData *UsrDat,long CrsCod)
UsrDat->Photo[sizeof (UsrDat->Photo)-1] = '\0';
/* Get user's brithday */
- strncpy (UsrDat->Birthday.YYYYMMDD,row[4],4+2+2);
- UsrDat->Birthday.YYYYMMDD[4+2+2] = '\0';
+ if (row[4])
+ {
+ strncpy (UsrDat->Birthday.YYYYMMDD,row[4],4+2+2);
+ UsrDat->Birthday.YYYYMMDD[4+2+2] = '\0';
+ }
+ else
+ strcpy (UsrDat->Birthday.YYYYMMDD,"00000000");
/* Free structure that stores the query result */
DB_FreeMySQLResult (&mysql_res);