From fd8caa4bfe0722a74448e583edfd6589b9d1cee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Sun, 1 May 2016 01:52:35 +0200 Subject: [PATCH] Version 15.207 --- sql/swad.sql | 34 ++++++++++----------- swad_account.c | 6 ++-- swad_changelog.h | 27 +++++++++++++++-- swad_database.c | 73 +++++++++++++++++++++++----------------------- swad_enrollment.c | 10 ++++--- swad_text.c | 52 ++++++++++++++++++++++++++++++--- swad_user.c | 26 ++++++++++++++--- swad_user.h | 6 ++++ swad_web_service.c | 9 ++++-- 9 files changed, 171 insertions(+), 72 deletions(-) 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);