mirror of https://github.com/acanas/swad-core.git
Version 15.60
This commit is contained in:
parent
6666e617c3
commit
52a13bbcbe
24
Makefile
24
Makefile
|
@ -63,50 +63,50 @@ CFLAGS = -Wall -Wextra -O2 -s
|
|||
all: swad_ca swad_de swad_en swad_es swad_fr swad_gn swad_it swad_pl swad_pt
|
||||
|
||||
swad_ca: $(OBJS) $(SOAPOBJS) $(SHAOBJS)
|
||||
$(CC) $(CFLAGS) -c -D L=0 swad_text.c
|
||||
$(CC) $(CFLAGS) -o $@ $(OBJS) swad_text.o $(SOAPOBJS) $(SHAOBJS) $(LIBS)
|
||||
chmod a+x $@
|
||||
|
||||
swad_de: $(OBJS) $(SOAPOBJS)
|
||||
$(CC) $(CFLAGS) -c -D L=1 swad_text.c
|
||||
$(CC) $(CFLAGS) -o $@ $(OBJS) swad_text.o $(SOAPOBJS) $(SHAOBJS) $(LIBS)
|
||||
chmod a+x $@
|
||||
|
||||
swad_en: $(OBJS) $(SOAPOBJS)
|
||||
swad_de: $(OBJS) $(SOAPOBJS)
|
||||
$(CC) $(CFLAGS) -c -D L=2 swad_text.c
|
||||
$(CC) $(CFLAGS) -o $@ $(OBJS) swad_text.o $(SOAPOBJS) $(SHAOBJS) $(LIBS)
|
||||
chmod a+x $@
|
||||
|
||||
swad_es: $(OBJS) $(SOAPOBJS)
|
||||
swad_en: $(OBJS) $(SOAPOBJS)
|
||||
$(CC) $(CFLAGS) -c -D L=3 swad_text.c
|
||||
$(CC) $(CFLAGS) -o $@ $(OBJS) swad_text.o $(SOAPOBJS) $(SHAOBJS) $(LIBS)
|
||||
chmod a+x $@
|
||||
|
||||
swad_fr: $(OBJS) $(SOAPOBJS)
|
||||
swad_es: $(OBJS) $(SOAPOBJS)
|
||||
$(CC) $(CFLAGS) -c -D L=4 swad_text.c
|
||||
$(CC) $(CFLAGS) -o $@ $(OBJS) swad_text.o $(SOAPOBJS) $(SHAOBJS) $(LIBS)
|
||||
chmod a+x $@
|
||||
|
||||
swad_gn: $(OBJS) $(SOAPOBJS)
|
||||
swad_fr: $(OBJS) $(SOAPOBJS)
|
||||
$(CC) $(CFLAGS) -c -D L=5 swad_text.c
|
||||
$(CC) $(CFLAGS) -o $@ $(OBJS) swad_text.o $(SOAPOBJS) $(SHAOBJS) $(LIBS)
|
||||
chmod a+x $@
|
||||
|
||||
swad_it: $(OBJS) $(SOAPOBJS)
|
||||
swad_gn: $(OBJS) $(SOAPOBJS)
|
||||
$(CC) $(CFLAGS) -c -D L=6 swad_text.c
|
||||
$(CC) $(CFLAGS) -o $@ $(OBJS) swad_text.o $(SOAPOBJS) $(SHAOBJS) $(LIBS)
|
||||
chmod a+x $@
|
||||
|
||||
swad_pl: $(OBJS) $(SOAPOBJS)
|
||||
swad_it: $(OBJS) $(SOAPOBJS)
|
||||
$(CC) $(CFLAGS) -c -D L=7 swad_text.c
|
||||
$(CC) $(CFLAGS) -o $@ $(OBJS) swad_text.o $(SOAPOBJS) $(SHAOBJS) $(LIBS)
|
||||
chmod a+x $@
|
||||
|
||||
swad_pt: $(OBJS) $(SOAPOBJS)
|
||||
swad_pl: $(OBJS) $(SOAPOBJS)
|
||||
$(CC) $(CFLAGS) -c -D L=8 swad_text.c
|
||||
$(CC) $(CFLAGS) -o $@ $(OBJS) swad_text.o $(SOAPOBJS) $(SHAOBJS) $(LIBS)
|
||||
chmod a+x $@
|
||||
|
||||
swad_pt: $(OBJS) $(SOAPOBJS)
|
||||
$(CC) $(CFLAGS) -c -D L=9 swad_text.c
|
||||
$(CC) $(CFLAGS) -o $@ $(OBJS) swad_text.o $(SOAPOBJS) $(SHAOBJS) $(LIBS)
|
||||
chmod a+x $@
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
clean:
|
||||
|
|
|
@ -130,14 +130,15 @@ static void QR_ImageQRCode (const char *QRString)
|
|||
void QR_LinkTo (unsigned Size,const char *ParamStr,long Cod)
|
||||
{
|
||||
extern const char *Txt_Shortcut;
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
|
||||
/***** Show QR code with direct link to the current centre *****/
|
||||
fprintf (Gbl.F.Out,"<img src=\"https://chart.googleapis.com/chart?cht=qr&chs=%ux%u&chl=%s/%s?%s=%ld\""
|
||||
" alt=\"%s\" title=\"%s\""
|
||||
" style=\"width:%upx; height:%upx;\" />",
|
||||
Size,Size,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],ParamStr,Cod,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language],ParamStr,Cod,
|
||||
Txt_Shortcut,
|
||||
Txt_Shortcut,
|
||||
Size,Size);
|
||||
|
|
|
@ -415,7 +415,7 @@ void Acc_CreateNewUsr (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[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Usr_StringsSexDB[Usr_NUM_SEXS];
|
||||
char Query[2048];
|
||||
char PathRelUsr[PATH_MAX+1];
|
||||
|
|
|
@ -4361,7 +4361,7 @@ void Act_GetBreadcrumbStrForAction (Act_Action_t Action,bool HTML,char *Breadcru
|
|||
|
||||
char *Act_GetActionTextFromDB (long ActCod,char *Txt)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char Query[1024];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
@ -4420,7 +4420,7 @@ void Act_FormStartId (Act_Action_t NextAction,const char *Id)
|
|||
// Id can not be NULL
|
||||
static void Act_FormStartInternal (Act_Action_t NextAction,bool PutParameterLocationIfNoSesion,const char *Id,const char *Anchor)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char Params[256+256+Ses_LENGTH_SESSION_ID+256];
|
||||
|
||||
if (!Gbl.InsideForm)
|
||||
|
|
|
@ -171,7 +171,7 @@ static unsigned Cal_GetParamFirstDayOfWeek (void)
|
|||
|
||||
void Cal_DrawCurrentMonth (void)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char Params[256+256+Ses_LENGTH_SESSION_ID+256];
|
||||
|
||||
/***** Get list of holidays *****/
|
||||
|
@ -196,7 +196,8 @@ void Cal_DrawCurrentMonth (void)
|
|||
Gbl.Prefs.FirstDayOfWeek,
|
||||
(long) Gbl.StartExecutionTimeUTC,
|
||||
Gbl.CurrentCtr.Ctr.PlcCod,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language]);
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language]);
|
||||
Act_SetParamsForm (Params,ActSeeCal,true);
|
||||
fprintf (Gbl.F.Out,"'%s',",Params);
|
||||
Act_SetParamsForm (Params,ActSeeExaAnn,true);
|
||||
|
@ -231,7 +232,7 @@ void Cal_DrawCurrentMonth (void)
|
|||
void Cal_DrawCalendar (void)
|
||||
{
|
||||
extern const char *Txt_Print;
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char Params[256+256+Ses_LENGTH_SESSION_ID+256];
|
||||
bool PrintView = (Gbl.CurrentAct == ActPrnCal);
|
||||
|
||||
|
@ -280,7 +281,8 @@ void Cal_DrawCalendar (void)
|
|||
Gbl.CurrentCtr.Ctr.PlcCod,
|
||||
(Gbl.CurrentAct == ActPrnCal) ? "true" :
|
||||
"false",
|
||||
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language]);
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language]);
|
||||
Act_SetParamsForm (Params,ActSeeCal,true);
|
||||
fprintf (Gbl.F.Out,"'%s',",
|
||||
Params);
|
||||
|
|
|
@ -255,7 +255,7 @@ static void Ctr_Configuration (bool PrintView)
|
|||
extern const char *Txt_Short_name;
|
||||
extern const char *Txt_Web;
|
||||
extern const char *Txt_Shortcut;
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_QR_code;
|
||||
extern const char *Txt_Courses;
|
||||
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
|
@ -431,8 +431,12 @@ static void Ctr_Configuration (bool PrintView)
|
|||
"</tr>",
|
||||
The_ClassForm[Gbl.Prefs.Theme],
|
||||
Txt_Shortcut,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],Gbl.CurrentCtr.Ctr.CtrCod,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],Gbl.CurrentCtr.Ctr.CtrCod);
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Gbl.CurrentCtr.Ctr.CtrCod,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||
|
||||
if (PrintView)
|
||||
{
|
||||
|
|
|
@ -104,17 +104,22 @@
|
|||
// TODO: Show nicknames of users in lists?
|
||||
// TODO: Form to register and remove system admins
|
||||
// TODO: Fix this bug: when an admin clicks on "Use this email" in the email of another user the email was confirmed, the email becomes unconfirmed
|
||||
// TODO: Replace "Curso o semestre" by "Año o semestre"
|
||||
// TODO: Reply to one user, suggested by Francisco Ocaña Lara
|
||||
// TODO: Reply to all
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.59.4 (2015/12/06)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.60 (2015/12/07)"
|
||||
#define CSS_FILE "swad15.59.4.css"
|
||||
|
||||
// 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.60: Dec 07, 2015 By default, the language of a new user is unknown.
|
||||
Fixed bugs when registering a new user. (? lines)
|
||||
Version 15.59.4: Dec 06, 2015 Changes in some small icons. (186462 lines)
|
||||
Version 15.59.3: Dec 06, 2015 If photo zoom is out of the screen at left, it is shown at right of the photo. (186445 lines)
|
||||
Version 15.59.2: Dec 06, 2015 Courses with year not applicable are listed at the end. (186439 lines)
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
#define Cfg_AUTOMATIC_EMAIL_SMTP_PORT "465" // SMTP port for sending automatic e-mails
|
||||
#define Cfg_AUTOMATIC_EMAIL_FROM "acanas@openswad.org" // E-mail address from where automatic e-mails will be sent
|
||||
#define Cfg_DATABASE_HOST "localhost" // Database host
|
||||
#define Cfg_DEFAULT_LANGUAGE_FOR_NEW_USERS Txt_LANGUAGE_ES // Default language for new users
|
||||
#define Cfg_DEFAULT_LANGUAGE Txt_LANGUAGE_ES // Default language
|
||||
#define Cfg_LOG_START_YEAR 2012 // Year when the log started in the database
|
||||
|
||||
// Footer of page with info about the institution where this platform is installed
|
||||
|
@ -126,7 +126,7 @@
|
|||
#define Cfg_AUTOMATIC_EMAIL_SMTP_PORT "465" // SMTP port for sending automatic e-mails
|
||||
#define Cfg_AUTOMATIC_EMAIL_FROM "acanas@openswad.org" // E-mail address from where automatic e-mails will be sent
|
||||
#define Cfg_DATABASE_HOST "localhost" // Database host
|
||||
#define Cfg_DEFAULT_LANGUAGE_FOR_NEW_USERS Txt_LANGUAGE_ES // Default language for new users
|
||||
#define Cfg_DEFAULT_LANGUAGE Txt_LANGUAGE_EN // Default language
|
||||
#define Cfg_LOG_START_YEAR 2012 // Year when the log started in the database
|
||||
|
||||
// Footer of page with info about the institution where this platform is installed
|
||||
|
@ -196,7 +196,7 @@
|
|||
#define Cfg_AUTOMATIC_EMAIL_SMTP_PORT "587" // SMTP port for sending automatic e-mails
|
||||
#define Cfg_AUTOMATIC_EMAIL_FROM "swad@ugr.es" // E-mail address from where automatic e-mails will be sent
|
||||
#define Cfg_DATABASE_HOST "localhost" // Database host
|
||||
#define Cfg_DEFAULT_LANGUAGE_FOR_NEW_USERS Txt_LANGUAGE_ES // Default language for new users
|
||||
#define Cfg_DEFAULT_LANGUAGE Txt_LANGUAGE_ES // Default language
|
||||
#define Cfg_LOG_START_YEAR 2005 // Year when the log started in the database
|
||||
|
||||
// Footer of page with info about the institution where this platform is installed
|
||||
|
@ -256,7 +256,7 @@
|
|||
#define Cfg_AUTOMATIC_EMAIL_SMTP_PORT "587" // SMTP port for sending automatic e-mails
|
||||
#define Cfg_AUTOMATIC_EMAIL_FROM "cevuna@rec.una.py" // E-mail address from where automatic e-mails will be sent
|
||||
#define Cfg_DATABASE_HOST "localhost" // Database host
|
||||
#define Cfg_DEFAULT_LANGUAGE_FOR_NEW_USERS Txt_LANGUAGE_ES // Default language for new users
|
||||
#define Cfg_DEFAULT_LANGUAGE Txt_LANGUAGE_ES // Default language
|
||||
#define Cfg_LOG_START_YEAR 2012 // Year when the log started in the database
|
||||
|
||||
// Footer of page with info about the institution where this platform is installed
|
||||
|
|
121
swad_country.c
121
swad_country.c
|
@ -84,7 +84,7 @@ static void Cty_CreateCountry (struct Country *Cty);
|
|||
|
||||
void Cty_SeeCtyWithPendingInss (void)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Countries_with_pending_institutions;
|
||||
extern const char *Txt_Country;
|
||||
extern const char *Txt_Institutions;
|
||||
|
@ -205,7 +205,7 @@ static void Cty_Configuration (bool PrintView)
|
|||
extern const char *Txt_Print;
|
||||
extern const char *Txt_Country;
|
||||
extern const char *Txt_Shortcut;
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_QR_code;
|
||||
extern const char *Txt_Centres;
|
||||
extern const char *Txt_Degrees;
|
||||
|
@ -321,9 +321,11 @@ static void Cty_Configuration (bool PrintView)
|
|||
"</tr>",
|
||||
The_ClassForm[Gbl.Prefs.Theme],
|
||||
Txt_Shortcut,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Gbl.CurrentCty.Cty.CtyCod,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Gbl.CurrentCty.Cty.CtyCod);
|
||||
|
||||
if (PrintView)
|
||||
|
@ -822,14 +824,14 @@ void Cty_EditCountries (void)
|
|||
|
||||
void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char StrField[32];
|
||||
char SubQueryNam1[Txt_NUM_LANGUAGES*32];
|
||||
char SubQueryNam2[Txt_NUM_LANGUAGES*32];
|
||||
char SubQueryWWW1[Txt_NUM_LANGUAGES*32];
|
||||
char SubQueryWWW2[Txt_NUM_LANGUAGES*32];
|
||||
char SubQueryNam1[(1+Txt_NUM_LANGUAGES)*32];
|
||||
char SubQueryNam2[(1+Txt_NUM_LANGUAGES)*32];
|
||||
char SubQueryWWW1[(1+Txt_NUM_LANGUAGES)*32];
|
||||
char SubQueryWWW2[(1+Txt_NUM_LANGUAGES)*32];
|
||||
char OrderBySubQuery[256];
|
||||
char Query[1024+Txt_NUM_LANGUAGES*32*4];
|
||||
char Query[1024+(1+Txt_NUM_LANGUAGES)*32*4];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned long NumRows;
|
||||
|
@ -851,8 +853,8 @@ void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData)
|
|||
SubQueryNam2[0] = '\0';
|
||||
SubQueryWWW1[0] = '\0';
|
||||
SubQueryWWW2[0] = '\0';
|
||||
for (Lan = (Txt_Language_t) 0;
|
||||
Lan < Txt_NUM_LANGUAGES;
|
||||
for (Lan = (Txt_Language_t) 1;
|
||||
Lan <= Txt_NUM_LANGUAGES;
|
||||
Lan++)
|
||||
{
|
||||
sprintf (StrField,"countries.Name_%s,",
|
||||
|
@ -931,16 +933,16 @@ void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData)
|
|||
break;
|
||||
case Cty_GET_EXTRA_DATA:
|
||||
/* Get the name of the country in several languages */
|
||||
for (Lan = (Txt_Language_t) 0;
|
||||
Lan < Txt_NUM_LANGUAGES;
|
||||
for (Lan = (Txt_Language_t) 1;
|
||||
Lan <= Txt_NUM_LANGUAGES;
|
||||
Lan++)
|
||||
{
|
||||
strcpy (Cty->Name[Lan],row[2+Lan]);
|
||||
strcpy (Cty->WWW[Lan],row[2+Txt_NUM_LANGUAGES+Lan]);
|
||||
strcpy (Cty->Name[Lan],row[1+Lan]);
|
||||
strcpy (Cty->WWW[Lan],row[1+Txt_NUM_LANGUAGES+Lan]);
|
||||
}
|
||||
|
||||
/* Get number of users in this country */
|
||||
if (sscanf (row[2+Txt_NUM_LANGUAGES*2],"%u",&Cty->NumUsrs) != 1)
|
||||
if (sscanf (row[1+Txt_NUM_LANGUAGES*2+1],"%u",&Cty->NumUsrs) != 1)
|
||||
Cty->NumUsrs = 0;
|
||||
|
||||
/* Get number of institutions in this country */
|
||||
|
@ -963,7 +965,7 @@ void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData)
|
|||
void Cty_WriteSelectorOfCountry (void)
|
||||
{
|
||||
extern const char *Txt_Country;
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char Query[512];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
@ -1024,13 +1026,13 @@ void Cty_WriteSelectorOfCountry (void)
|
|||
bool Cty_GetDataOfCountryByCod (struct Country *Cty)
|
||||
{
|
||||
extern const char *Txt_Another_country;
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char StrField[32];
|
||||
char SubQueryNam1[Txt_NUM_LANGUAGES*32];
|
||||
char SubQueryNam2[Txt_NUM_LANGUAGES*32];
|
||||
char SubQueryWWW1[Txt_NUM_LANGUAGES*32];
|
||||
char SubQueryWWW2[Txt_NUM_LANGUAGES*32];
|
||||
char Query[1024+Txt_NUM_LANGUAGES*32*4];
|
||||
char SubQueryNam1[(1+Txt_NUM_LANGUAGES)*32];
|
||||
char SubQueryNam2[(1+Txt_NUM_LANGUAGES)*32];
|
||||
char SubQueryWWW1[(1+Txt_NUM_LANGUAGES)*32];
|
||||
char SubQueryWWW2[(1+Txt_NUM_LANGUAGES)*32];
|
||||
char Query[1024+(1+Txt_NUM_LANGUAGES)*32*4];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned long NumRows;
|
||||
|
@ -1041,8 +1043,8 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty)
|
|||
return false;
|
||||
|
||||
/***** Clear data *****/
|
||||
for (Lan = (Txt_Language_t) 0;
|
||||
Lan < Txt_NUM_LANGUAGES;
|
||||
for (Lan = (Txt_Language_t) 1;
|
||||
Lan <= Txt_NUM_LANGUAGES;
|
||||
Lan++)
|
||||
{
|
||||
Cty->Name[Lan][0] = '\0';
|
||||
|
@ -1054,8 +1056,8 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty)
|
|||
/***** Check if country code is correct *****/
|
||||
if (Cty->CtyCod == 0)
|
||||
{
|
||||
for (Lan = (Txt_Language_t) 0;
|
||||
Lan < Txt_NUM_LANGUAGES;
|
||||
for (Lan = (Txt_Language_t) 1;
|
||||
Lan <= Txt_NUM_LANGUAGES;
|
||||
Lan++)
|
||||
if (Lan == Gbl.Prefs.Language)
|
||||
strcpy (Cty->Name[Lan],Txt_Another_country);
|
||||
|
@ -1070,8 +1072,8 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty)
|
|||
SubQueryNam2[0] = '\0';
|
||||
SubQueryWWW1[0] = '\0';
|
||||
SubQueryWWW2[0] = '\0';
|
||||
for (Lan = (Txt_Language_t) 0;
|
||||
Lan < Txt_NUM_LANGUAGES;
|
||||
for (Lan = (Txt_Language_t) 1;
|
||||
Lan <= Txt_NUM_LANGUAGES;
|
||||
Lan++)
|
||||
{
|
||||
sprintf (StrField,"countries.Name_%s,",Txt_STR_LANG_ID[Lan]);
|
||||
|
@ -1110,8 +1112,8 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty)
|
|||
Cty->Alpha2[2] = '\0';
|
||||
|
||||
/* Get the name of the country in several languages */
|
||||
for (Lan = (Txt_Language_t) 0;
|
||||
Lan < Txt_NUM_LANGUAGES;
|
||||
for (Lan = (Txt_Language_t) 1;
|
||||
Lan <= Txt_NUM_LANGUAGES;
|
||||
Lan++)
|
||||
{
|
||||
strcpy (Cty->Name[Lan],row[1+Lan]);
|
||||
|
@ -1137,7 +1139,7 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty)
|
|||
|
||||
void Cty_GetCountryName (long CtyCod,char CtyName[Cty_MAX_BYTES_COUNTRY_NAME+1])
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char Query[128];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
@ -1236,7 +1238,7 @@ void Cty_FreeListCountries (void)
|
|||
static void Cty_ListCountriesForEdition (void)
|
||||
{
|
||||
extern const char *Txt_Countries;
|
||||
extern const char *Txt_STR_LANG_NAME[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_NAME[1+Txt_NUM_LANGUAGES];
|
||||
unsigned NumCty;
|
||||
struct Country *Cty;
|
||||
Txt_Language_t Lan;
|
||||
|
@ -1299,8 +1301,8 @@ static void Cty_ListCountriesForEdition (void)
|
|||
1 + Txt_NUM_LANGUAGES,Cty->NumInss);
|
||||
|
||||
/* Country name in several languages */
|
||||
for (Lan = (Txt_Language_t) 0;
|
||||
Lan < Txt_NUM_LANGUAGES;
|
||||
for (Lan = (Txt_Language_t) 1;
|
||||
Lan <= Txt_NUM_LANGUAGES;
|
||||
Lan++)
|
||||
{
|
||||
/* Language */
|
||||
|
@ -1421,7 +1423,7 @@ void Cty_RenameCountry (void)
|
|||
extern const char *Txt_You_can_not_leave_the_name_of_the_country_X_empty;
|
||||
extern const char *Txt_The_country_X_already_exists;
|
||||
extern const char *Txt_The_country_X_has_been_renamed_as_Y;
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_The_name_of_the_country_X_has_not_changed;
|
||||
char Query[512];
|
||||
struct Country *Cty;
|
||||
|
@ -1524,11 +1526,12 @@ static bool Cty_CheckIfAlpha2CountryCodeExists (const char Alpha2[2+1])
|
|||
|
||||
static bool Cty_CheckIfCountryNameExists (Txt_Language_t Language,const char *Name,long CtyCod)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char Query[512];
|
||||
|
||||
/***** Get number of countries with a name from database *****/
|
||||
sprintf (Query,"SELECT COUNT(*) FROM countries WHERE Name_%s='%s' AND CtyCod<>'%03ld'",
|
||||
sprintf (Query,"SELECT COUNT(*) FROM countries"
|
||||
" WHERE Name_%s='%s' AND CtyCod<>'%03ld'",
|
||||
Txt_STR_LANG_ID[Language],Name,CtyCod);
|
||||
return (DB_QueryCOUNT (Query,"can not check if the name of a country already existed") != 0);
|
||||
}
|
||||
|
@ -1540,7 +1543,7 @@ static bool Cty_CheckIfCountryNameExists (Txt_Language_t Language,const char *Na
|
|||
void Cty_ChangeCtyWWW (void)
|
||||
{
|
||||
extern const char *Txt_The_new_web_address_is_X;
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char Query[256+Cty_MAX_LENGTH_COUNTRY_WWW];
|
||||
struct Country *Cty;
|
||||
char NewWWW[Cty_MAX_LENGTH_COUNTRY_WWW+1];
|
||||
|
@ -1607,8 +1610,8 @@ void Cty_ChangeCtyMapAttribution (void)
|
|||
static void Cty_PutFormToCreateCountry (void)
|
||||
{
|
||||
extern const char *Txt_New_country;
|
||||
extern const char *Txt_STR_LANG_NAME[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_NAME[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Create_country;
|
||||
struct Country *Cty;
|
||||
Txt_Language_t Lan;
|
||||
|
@ -1663,8 +1666,8 @@ static void Cty_PutFormToCreateCountry (void)
|
|||
1 + Txt_NUM_LANGUAGES);
|
||||
|
||||
/***** Country name in several languages *****/
|
||||
for (Lan = (Txt_Language_t) 0;
|
||||
Lan < Txt_NUM_LANGUAGES;
|
||||
for (Lan = (Txt_Language_t) 1;
|
||||
Lan <= Txt_NUM_LANGUAGES;
|
||||
Lan++)
|
||||
{
|
||||
/* Language */
|
||||
|
@ -1679,7 +1682,9 @@ static void Cty_PutFormToCreateCountry (void)
|
|||
"<input type=\"text\" name=\"Name_%s\""
|
||||
" size=\"15\" maxlength=\"%u\" value=\"%s\" />"
|
||||
"</td>",
|
||||
Txt_STR_LANG_ID[Lan],Cty_MAX_BYTES_COUNTRY_NAME,Cty->Name[Lan]);
|
||||
Txt_STR_LANG_ID[Lan],
|
||||
Cty_MAX_BYTES_COUNTRY_NAME,
|
||||
Cty->Name[Lan]);
|
||||
|
||||
/* WWW */
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||
|
@ -1688,7 +1693,9 @@ static void Cty_PutFormToCreateCountry (void)
|
|||
" class=\"INPUT_WWW\" />"
|
||||
"</td>"
|
||||
"</tr>",
|
||||
Txt_STR_LANG_ID[Lan],Cty_MAX_LENGTH_COUNTRY_WWW,Cty->WWW[Lan]);
|
||||
Txt_STR_LANG_ID[Lan],
|
||||
Cty_MAX_LENGTH_COUNTRY_WWW,
|
||||
Cty->WWW[Lan]);
|
||||
}
|
||||
|
||||
/***** Send button and end of frame *****/
|
||||
|
@ -1751,7 +1758,7 @@ void Cty_RecFormNewCountry (void)
|
|||
extern const char *Txt_The_numerical_code_X_already_exists;
|
||||
extern const char *Txt_The_alphabetical_code_X_is_not_correct;
|
||||
extern const char *Txt_The_alphabetical_code_X_already_exists;
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_The_country_X_already_exists;
|
||||
extern const char *Txt_You_must_specify_the_name_of_the_new_country_in_all_languages;
|
||||
char ParamName[32];
|
||||
|
@ -1804,8 +1811,8 @@ void Cty_RecFormNewCountry (void)
|
|||
else // Alphabetic code correct
|
||||
{
|
||||
/* Get country name and WWW in different languages */
|
||||
for (Lan = (Txt_Language_t) 0;
|
||||
Lan < Txt_NUM_LANGUAGES;
|
||||
for (Lan = (Txt_Language_t) 1;
|
||||
Lan <= Txt_NUM_LANGUAGES;
|
||||
Lan++)
|
||||
{
|
||||
sprintf (ParamName,"Name_%s",Txt_STR_LANG_ID[Lan]);
|
||||
|
@ -1850,23 +1857,23 @@ void Cty_RecFormNewCountry (void)
|
|||
|
||||
static void Cty_CreateCountry (struct Country *Cty)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Created_new_country_X;
|
||||
Txt_Language_t Lan;
|
||||
char StrField[32];
|
||||
char SubQueryNam1[Txt_NUM_LANGUAGES*32];
|
||||
char SubQueryNam2[Txt_NUM_LANGUAGES*Cty_MAX_BYTES_COUNTRY_NAME];
|
||||
char SubQueryWWW1[Txt_NUM_LANGUAGES*32];
|
||||
char SubQueryWWW2[Txt_NUM_LANGUAGES*Cty_MAX_LENGTH_COUNTRY_WWW];
|
||||
char Query[1024+Txt_NUM_LANGUAGES*(32+Cty_MAX_BYTES_COUNTRY_NAME+32+Cty_MAX_LENGTH_COUNTRY_WWW)];
|
||||
char SubQueryNam1[(1+Txt_NUM_LANGUAGES)*32];
|
||||
char SubQueryNam2[(1+Txt_NUM_LANGUAGES)*Cty_MAX_BYTES_COUNTRY_NAME];
|
||||
char SubQueryWWW1[(1+Txt_NUM_LANGUAGES)*32];
|
||||
char SubQueryWWW2[(1+Txt_NUM_LANGUAGES)*Cty_MAX_LENGTH_COUNTRY_WWW];
|
||||
char Query[1024+(1+Txt_NUM_LANGUAGES)*(32+Cty_MAX_BYTES_COUNTRY_NAME+32+Cty_MAX_LENGTH_COUNTRY_WWW)];
|
||||
|
||||
/***** Create a new country *****/
|
||||
SubQueryNam1[0] = '\0';
|
||||
SubQueryNam2[0] = '\0';
|
||||
SubQueryWWW1[0] = '\0';
|
||||
SubQueryWWW2[0] = '\0';
|
||||
for (Lan = (Txt_Language_t) 0;
|
||||
Lan < Txt_NUM_LANGUAGES;
|
||||
for (Lan = (Txt_Language_t) 1;
|
||||
Lan <= Txt_NUM_LANGUAGES;
|
||||
Lan++)
|
||||
{
|
||||
sprintf (StrField,",Name_%s",Txt_STR_LANG_ID[Lan]);
|
||||
|
|
|
@ -45,8 +45,8 @@ struct Country
|
|||
{
|
||||
long CtyCod;
|
||||
char Alpha2[2+1];
|
||||
char Name[Txt_NUM_LANGUAGES][Cty_MAX_BYTES_COUNTRY_NAME+1];
|
||||
char WWW[Txt_NUM_LANGUAGES][Cty_MAX_LENGTH_COUNTRY_WWW+1];
|
||||
char Name[1+Txt_NUM_LANGUAGES][Cty_MAX_BYTES_COUNTRY_NAME+1];
|
||||
char WWW [1+Txt_NUM_LANGUAGES][Cty_MAX_LENGTH_COUNTRY_WWW+1];
|
||||
unsigned NumUsrs;
|
||||
unsigned NumStds;
|
||||
unsigned NumTchs;
|
||||
|
|
|
@ -155,7 +155,7 @@ static void Crs_Configuration (bool PrintView)
|
|||
extern const char *Txt_Institutional_code;
|
||||
extern const char *Txt_Internal_code;
|
||||
extern const char *Txt_Shortcut;
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_QR_code;
|
||||
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_Indicators;
|
||||
|
@ -328,9 +328,11 @@ static void Crs_Configuration (bool PrintView)
|
|||
"</tr>",
|
||||
The_ClassForm[Gbl.Prefs.Theme],
|
||||
Txt_Shortcut,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Gbl.CurrentCrs.Crs.CrsCod,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Gbl.CurrentCrs.Crs.CrsCod);
|
||||
|
||||
if (PrintView)
|
||||
|
|
|
@ -305,7 +305,7 @@ static void Deg_Configuration (bool PrintView)
|
|||
extern const char *Txt_Short_name;
|
||||
extern const char *Txt_Web;
|
||||
extern const char *Txt_Shortcut;
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_QR_code;
|
||||
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
bool PutLink = !PrintView && Gbl.CurrentDeg.Deg.WWW[0];
|
||||
|
@ -414,9 +414,11 @@ static void Deg_Configuration (bool PrintView)
|
|||
"</tr>",
|
||||
The_ClassForm[Gbl.Prefs.Theme],
|
||||
Txt_Shortcut,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Gbl.CurrentDeg.Deg.DegCod,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Gbl.CurrentDeg.Deg.DegCod);
|
||||
|
||||
if (PrintView)
|
||||
|
|
|
@ -432,7 +432,7 @@ 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[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Usr_StringsSexDB[Usr_NUM_SEXS];
|
||||
char Query[2048];
|
||||
|
||||
|
@ -447,9 +447,13 @@ 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',"
|
||||
"Theme='%s',IconSet='%s',Language='%s',FirstDayOfWeek='%u',"
|
||||
"PhotoVisibility='%s',ProfileVisibility='%s',"
|
||||
"CtyCod='%ld',"
|
||||
"LocalAddress='%s',LocalPhone='%s',FamilyAddress='%s',FamilyPhone='%s',OriginPlace='%s',Birthday='%04u-%02u-%02u',Comments='%s'"
|
||||
"LocalAddress='%s',LocalPhone='%s',"
|
||||
"FamilyAddress='%s',FamilyPhone='%s',"
|
||||
"OriginPlace='%s',Birthday='%04u-%02u-%02u',"
|
||||
"Comments='%s'"
|
||||
" WHERE UsrCod='%ld'",
|
||||
UsrDat->Password,
|
||||
UsrDat->Surname1,UsrDat->Surname2,UsrDat->FirstName,
|
||||
|
@ -462,7 +466,8 @@ void Enr_UpdateUsrData (struct UsrData *UsrDat)
|
|||
Pri_VisibilityDB[UsrDat->ProfileVisibility],
|
||||
UsrDat->CtyCod,
|
||||
UsrDat->LocalAddress,UsrDat->LocalPhone,
|
||||
UsrDat->FamilyAddress,UsrDat->FamilyPhone,UsrDat->OriginPlace,
|
||||
UsrDat->FamilyAddress,UsrDat->FamilyPhone,
|
||||
UsrDat->OriginPlace,
|
||||
UsrDat->Birthday.Year,UsrDat->Birthday.Month,UsrDat->Birthday.Day,
|
||||
UsrDat->Comments ? UsrDat->Comments :
|
||||
"",
|
||||
|
@ -2986,7 +2991,9 @@ static void Enr_AskIfRegRemUsr (struct ListUsrCods *ListUsrCods,Rol_Role_t Role)
|
|||
if (NewUsrIDValid)
|
||||
{
|
||||
/* Initialize some data of this new user */
|
||||
Gbl.Usrs.Other.UsrDat.RoleInCurrentCrsDB = Rol_STUDENT;
|
||||
Gbl.Usrs.Other.UsrDat.RoleInCurrentCrsDB =
|
||||
(Gbl.CurrentCrs.Crs.CrsCod > 0) ? Rol_STUDENT : // Course selected
|
||||
Rol_UNKNOWN; // No course selected
|
||||
Gbl.Usrs.Other.UsrDat.Roles = (1 << Gbl.Usrs.Other.UsrDat.RoleInCurrentCrsDB);
|
||||
|
||||
/***** Show form to enter the data of a new user *****/
|
||||
|
|
|
@ -7717,7 +7717,7 @@ static void Brw_PutFormToUploadFilesUsingDropzone (const char *FileNameToShow)
|
|||
extern const char *Txt_Upload_files;
|
||||
extern const char *Txt_or_you_can_upload_new_files_to_the_folder_X;
|
||||
extern const char *Txt_Select_one_or_more_files_from_your_computer_or_drag_and_drop_here;
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_FILE_UPLOAD_Done;
|
||||
extern struct Act_Actions Act_Actions[Act_NUM_ACTIONS];
|
||||
|
||||
|
|
|
@ -2054,9 +2054,9 @@ void For_SetForumName (For_ForumType_t ForumType,
|
|||
char *ForumName,Txt_Language_t Language,bool UseHTMLEntities)
|
||||
{
|
||||
extern const char *Txt_General;
|
||||
extern const char *Txt_General_NO_HTML[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_General_NO_HTML[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_only_teachers;
|
||||
extern const char *Txt_only_teachers_NO_HTML[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_only_teachers_NO_HTML[1+Txt_NUM_LANGUAGES];
|
||||
|
||||
switch (ForumType)
|
||||
{
|
||||
|
|
|
@ -250,8 +250,8 @@ void Gbl_InitializeGlobals (void)
|
|||
Gbl.Ctys.Lst = NULL;
|
||||
Gbl.Ctys.SelectedOrderType = Cty_DEFAULT_ORDER_TYPE;
|
||||
Gbl.Ctys.EditingCty.CtyCod = -1L;
|
||||
for (Lan = (Txt_Language_t) 0;
|
||||
Lan < Txt_NUM_LANGUAGES;
|
||||
for (Lan = (Txt_Language_t) 1;
|
||||
Lan <= Txt_NUM_LANGUAGES;
|
||||
Lan++)
|
||||
Gbl.Ctys.EditingCty.Name[Lan][0] = '\0';
|
||||
|
||||
|
|
|
@ -1711,7 +1711,7 @@ static void Inf_ShowRichTxtInfo (Inf_InfoType_t InfoType)
|
|||
|
||||
int Inf_WritePlainTextIntoHTMLBuffer (Inf_InfoType_t InfoType,char **HTMLBuffer)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_INFO_TITLE[Inf_NUM_INFO_TYPES];
|
||||
char TxtHTML[Cns_MAX_BYTES_LONG_TEXT+1];
|
||||
char FileNameHTMLTmp[PATH_MAX+1];
|
||||
|
@ -1740,7 +1740,8 @@ int Inf_WritePlainTextIntoHTMLBuffer (Inf_InfoType_t InfoType,char **HTMLBuffer)
|
|||
fprintf (FileHTMLTmp,"<!DOCTYPE html>\n"
|
||||
"<html lang=\"%s\">\n"
|
||||
"<head>\n"
|
||||
"<meta http-equiv=\"Content-Type\" content=\"text/html;charset=windows-1252\" />\n"
|
||||
"<meta http-equiv=\"Content-Type\""
|
||||
" content=\"text/html;charset=windows-1252\" />\n"
|
||||
"<title>%s</title>\n"
|
||||
"</head>\n"
|
||||
"<body>\n",
|
||||
|
|
|
@ -246,7 +246,7 @@ static void Ins_Configuration (bool PrintView)
|
|||
extern const char *Txt_Short_name;
|
||||
extern const char *Txt_Web;
|
||||
extern const char *Txt_Shortcut;
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_QR_code;
|
||||
extern const char *Txt_Degrees;
|
||||
extern const char *Txt_Courses;
|
||||
|
@ -356,8 +356,12 @@ static void Ins_Configuration (bool PrintView)
|
|||
"</tr>",
|
||||
The_ClassForm[Gbl.Prefs.Theme],
|
||||
Txt_Shortcut,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],Gbl.CurrentIns.Ins.InsCod,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],Gbl.CurrentIns.Ins.InsCod);
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Gbl.CurrentIns.Ins.InsCod,
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
|
||||
if (PrintView)
|
||||
{
|
||||
|
|
|
@ -101,7 +101,7 @@ static void Lay_HelpTextEditor (const char *Text,const char *InlineMath,const ch
|
|||
|
||||
void Lay_WriteStartOfPage (void)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const unsigned Txt_Current_CGI_SWAD_Language;
|
||||
extern const char *The_TabOnBgColors[The_NUM_THEMES];
|
||||
extern const char *Txt_NEW_YEAR_GREETING;
|
||||
|
@ -395,7 +395,7 @@ static void Lay_WritePageTitle (void)
|
|||
|
||||
static void Lay_WriteRedirectionToMyLanguage (void)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
|
||||
fprintf (Gbl.F.Out,"<meta http-equiv=\"refresh\""
|
||||
" content=\"0; url='%s/%s?act=%ld&ses=%s'\">",
|
||||
|
@ -589,7 +589,7 @@ static void Lay_WriteScripts (void)
|
|||
|
||||
static void Lay_WriteScriptInit (void)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
|
||||
fprintf (Gbl.F.Out,"<script type=\"text/javascript\">\n");
|
||||
|
||||
|
|
|
@ -1538,8 +1538,8 @@ void Mai_CreateFileNameMail (void)
|
|||
|
||||
void Mai_WriteWelcomeNoteEMail (struct UsrData *UsrDat)
|
||||
{
|
||||
extern const char *Txt_Dear_NO_HTML[Usr_NUM_SEXS][Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_user_NO_HTML[Usr_NUM_SEXS][Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Dear_NO_HTML[Usr_NUM_SEXS][1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_user_NO_HTML[Usr_NUM_SEXS][1+Txt_NUM_LANGUAGES];
|
||||
|
||||
fprintf (Gbl.Msg.FileMail,"%s %s:\n",
|
||||
Txt_Dear_NO_HTML[UsrDat->Sex][UsrDat->Prefs.Language],
|
||||
|
@ -1553,7 +1553,7 @@ void Mai_WriteWelcomeNoteEMail (struct UsrData *UsrDat)
|
|||
|
||||
void Mai_WriteFootNoteEMail (Txt_Language_t Language)
|
||||
{
|
||||
extern const char *Txt_Please_do_not_reply_to_this_automatically_generated_email_NO_HTML[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Please_do_not_reply_to_this_automatically_generated_email_NO_HTML[1+Txt_NUM_LANGUAGES];
|
||||
|
||||
fprintf (Gbl.Msg.FileMail,"%s\n"
|
||||
"%s\n"
|
||||
|
|
|
@ -103,8 +103,6 @@ int main (int argc, char *argv[])
|
|||
|
||||
/***** Initialize global variables *****/
|
||||
Gbl_InitializeGlobals ();
|
||||
|
||||
/***** Get database password and SMTP password from config file *****/
|
||||
Cfg_GetConfigFromFile ();
|
||||
|
||||
/***** Open database connection *****/
|
||||
|
|
|
@ -1331,21 +1331,23 @@ void Ntf_SendPendingNotifByEMailToAllUsrs (void)
|
|||
|
||||
static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsigned *NumNotif,unsigned *NumMails)
|
||||
{
|
||||
extern const char *Txt_NOTIFY_EVENTS_There_is_a_new_event_NO_HTML[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_NOTIFY_EVENTS_There_are_X_new_events_NO_HTML[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_NOTIFY_EVENTS_SINGULAR_NO_HTML[Ntf_NUM_NOTIFY_EVENTS][Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Course_NO_HTML[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Forum_NO_HTML[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_MSG_From_NO_HTML[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Go_to_NO_HTML[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_TAB_Messages_NO_HTML[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Notifications_NO_HTML[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_If_you_no_longer_wish_to_receive_email_notifications_NO_HTML[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_NOTIFY_EVENTS_There_is_a_new_event_NO_HTML[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_NOTIFY_EVENTS_There_are_X_new_events_NO_HTML[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_NOTIFY_EVENTS_SINGULAR_NO_HTML[Ntf_NUM_NOTIFY_EVENTS][1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Course_NO_HTML[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Forum_NO_HTML[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_MSG_From_NO_HTML[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Go_to_NO_HTML[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_TAB_Messages_NO_HTML[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Notifications_NO_HTML[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_If_you_no_longer_wish_to_receive_email_notifications_NO_HTML[1+Txt_NUM_LANGUAGES];
|
||||
char MailDomain[Usr_MAX_BYTES_USR_EMAIL+1];
|
||||
char Query[512];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned long NumRow,NumRows;
|
||||
unsigned long NumRow;
|
||||
unsigned long NumRows;
|
||||
Txt_Language_t ToUsrLanguage;
|
||||
struct UsrData FromUsrDat;
|
||||
Ntf_NotifyEvent_t NotifyEvent = (Ntf_NotifyEvent_t) 0; // Initialized to avoid warning
|
||||
struct Institution Ins;
|
||||
|
@ -1375,16 +1377,21 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign
|
|||
|
||||
if (NumRows) // Events found
|
||||
{
|
||||
/***** If user has no language, set it to current language *****/
|
||||
ToUsrLanguage = ToUsrDat->Prefs.Language;
|
||||
if (ToUsrLanguage == Txt_LANGUAGE_UNKNOWN)
|
||||
ToUsrLanguage = Gbl.Prefs.Language;
|
||||
|
||||
/***** Create temporary file for mail content *****/
|
||||
Mai_CreateFileNameMail ();
|
||||
|
||||
/***** Welcome note *****/
|
||||
Mai_WriteWelcomeNoteEMail (ToUsrDat);
|
||||
if (NumRows == 1)
|
||||
fprintf (Gbl.Msg.FileMail,Txt_NOTIFY_EVENTS_There_is_a_new_event_NO_HTML[ToUsrDat->Prefs.Language],
|
||||
fprintf (Gbl.Msg.FileMail,Txt_NOTIFY_EVENTS_There_is_a_new_event_NO_HTML[ToUsrLanguage],
|
||||
Cfg_PLATFORM_SHORT_NAME);
|
||||
else
|
||||
fprintf (Gbl.Msg.FileMail,Txt_NOTIFY_EVENTS_There_are_X_new_events_NO_HTML[ToUsrDat->Prefs.Language],
|
||||
fprintf (Gbl.Msg.FileMail,Txt_NOTIFY_EVENTS_There_are_X_new_events_NO_HTML[ToUsrLanguage],
|
||||
(unsigned) NumRows,Cfg_PLATFORM_SHORT_NAME);
|
||||
fprintf (Gbl.Msg.FileMail,": \n");
|
||||
|
||||
|
@ -1431,7 +1438,7 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign
|
|||
ForumType = For_GetForumTypeOfAPost (Cod);
|
||||
|
||||
/* Information about the type of this event */
|
||||
fprintf (Gbl.Msg.FileMail,Txt_NOTIFY_EVENTS_SINGULAR_NO_HTML[NotifyEvent][ToUsrDat->Prefs.Language],
|
||||
fprintf (Gbl.Msg.FileMail,Txt_NOTIFY_EVENTS_SINGULAR_NO_HTML[NotifyEvent][ToUsrLanguage],
|
||||
Cfg_PLATFORM_SHORT_NAME);
|
||||
fprintf (Gbl.Msg.FileMail,"\n");
|
||||
|
||||
|
@ -1454,7 +1461,7 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign
|
|||
case Ntf_EVENT_SURVEY:
|
||||
if (Crs.CrsCod > 0)
|
||||
fprintf (Gbl.Msg.FileMail,"%s: %s\n",
|
||||
Txt_Course_NO_HTML[ToUsrDat->Prefs.Language],
|
||||
Txt_Course_NO_HTML[ToUsrLanguage],
|
||||
Crs.FullName);
|
||||
break;
|
||||
case Ntf_EVENT_FORUM_POST_COURSE:
|
||||
|
@ -1464,15 +1471,15 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign
|
|||
&Ctr,
|
||||
&Deg,
|
||||
&Crs,
|
||||
ForumName,ToUsrDat->Prefs.Language,false); // Set forum name in recipient's language
|
||||
ForumName,ToUsrLanguage,false); // Set forum name in recipient's language
|
||||
fprintf (Gbl.Msg.FileMail,"%s: %s\n",
|
||||
Txt_Forum_NO_HTML[ToUsrDat->Prefs.Language],
|
||||
Txt_Forum_NO_HTML[ToUsrLanguage],
|
||||
ForumName);
|
||||
break;
|
||||
}
|
||||
/* From: */
|
||||
fprintf (Gbl.Msg.FileMail,"%s: %s\n",
|
||||
Txt_MSG_From_NO_HTML[ToUsrDat->Prefs.Language],
|
||||
Txt_MSG_From_NO_HTML[ToUsrLanguage],
|
||||
FromUsrDat.FullName);
|
||||
}
|
||||
|
||||
|
@ -1481,17 +1488,17 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign
|
|||
|
||||
/* Go to: */
|
||||
fprintf (Gbl.Msg.FileMail,"%s: %s/ > %s > %s\n",
|
||||
Txt_Go_to_NO_HTML[ToUsrDat->Prefs.Language],
|
||||
Txt_Go_to_NO_HTML[ToUsrLanguage],
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_TAB_Messages_NO_HTML[ToUsrDat->Prefs.Language],
|
||||
Txt_Notifications_NO_HTML[ToUsrDat->Prefs.Language]);
|
||||
Txt_TAB_Messages_NO_HTML[ToUsrLanguage],
|
||||
Txt_Notifications_NO_HTML[ToUsrLanguage]);
|
||||
|
||||
/* Disclaimer */
|
||||
fprintf (Gbl.Msg.FileMail,"\n%s\n",
|
||||
Txt_If_you_no_longer_wish_to_receive_email_notifications_NO_HTML[ToUsrDat->Prefs.Language]);
|
||||
Txt_If_you_no_longer_wish_to_receive_email_notifications_NO_HTML[ToUsrLanguage]);
|
||||
|
||||
/* Footer note */
|
||||
Mai_WriteFootNoteEMail (ToUsrDat->Prefs.Language);
|
||||
Mai_WriteFootNoteEMail (ToUsrLanguage);
|
||||
|
||||
fclose (Gbl.Msg.FileMail);
|
||||
|
||||
|
@ -1503,7 +1510,8 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign
|
|||
Cfg_AUTOMATIC_EMAIL_FROM,
|
||||
Gbl.Config.SMTPPassword,
|
||||
ToUsrDat->Email,
|
||||
Cfg_PLATFORM_SHORT_NAME,Txt_Notifications_NO_HTML[ToUsrDat->Prefs.Language],
|
||||
Cfg_PLATFORM_SHORT_NAME,
|
||||
Txt_Notifications_NO_HTML[ToUsrLanguage],
|
||||
Gbl.Msg.FileNameMail);
|
||||
ReturnCode = system (Command);
|
||||
if (ReturnCode == -1)
|
||||
|
|
|
@ -387,7 +387,7 @@ void Pwd_ChkIdLoginAndSendNewPwd (void)
|
|||
int Pwd_SendNewPasswordByEmail (char NewRandomPlainPassword[Pwd_MAX_LENGTH_PLAIN_PASSWORD+1])
|
||||
{
|
||||
extern const char *Txt_The_following_password_has_been_assigned_to_you_to_log_in_X_NO_HTML;
|
||||
extern const char *Txt_New_password_NO_HTML[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_New_password_NO_HTML[1+Txt_NUM_LANGUAGES];
|
||||
char Command[2048]; // Command to execute for sending an e-mail
|
||||
int ReturnCode;
|
||||
|
||||
|
|
|
@ -234,7 +234,7 @@ void Pre_RemoveOldPrefsFromIP (void)
|
|||
|
||||
void Pre_PutSelectorToSelectLanguage (void)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_NAME[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_NAME[1+Txt_NUM_LANGUAGES];
|
||||
Txt_Language_t Lan;
|
||||
|
||||
Act_FormStart (ActReqChgLan);
|
||||
|
@ -242,8 +242,8 @@ void Pre_PutSelectorToSelectLanguage (void)
|
|||
" style=\"width:112px; margin:0;\""
|
||||
" onchange=\"document.getElementById('%s').submit();\">",
|
||||
Gbl.FormId);
|
||||
for (Lan = (Txt_Language_t) 0;
|
||||
Lan < Txt_NUM_LANGUAGES;
|
||||
for (Lan = (Txt_Language_t) 1;
|
||||
Lan <= Txt_NUM_LANGUAGES;
|
||||
Lan++)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<option value=\"%u\"",(unsigned) Lan);
|
||||
|
@ -261,9 +261,9 @@ void Pre_PutSelectorToSelectLanguage (void)
|
|||
|
||||
void Pre_AskChangeLanguage (void)
|
||||
{
|
||||
extern const char *Txt_Do_you_want_to_change_your_language_to_LANGUAGE[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Do_you_want_to_change_the_language_to_LANGUAGE[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Switch_to_LANGUAGE[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Do_you_want_to_change_your_language_to_LANGUAGE[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Do_you_want_to_change_the_language_to_LANGUAGE[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Switch_to_LANGUAGE[1+Txt_NUM_LANGUAGES];
|
||||
Txt_Language_t CurrentLanguage = Gbl.Prefs.Language;
|
||||
|
||||
/***** Get param language *****/
|
||||
|
@ -290,26 +290,44 @@ void Pre_AskChangeLanguage (void)
|
|||
|
||||
void Pre_ChangeLanguage (void)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_NAME[Txt_NUM_LANGUAGES];
|
||||
char Query[512];
|
||||
|
||||
/***** Get param language *****/
|
||||
Gbl.Prefs.Language = Pre_GetParamLanguage ();
|
||||
|
||||
/***** Store language in database *****/
|
||||
if (Gbl.Usrs.Me.Logged && Gbl.Prefs.Language != Gbl.Usrs.Me.UsrDat.Prefs.Language)
|
||||
{
|
||||
sprintf (Query,"UPDATE usr_data SET Language='%s'"
|
||||
" WHERE UsrCod='%ld'",
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language],Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
DB_QueryUPDATE (Query,"can not update your language");
|
||||
}
|
||||
/*
|
||||
sprintf (Gbl.Message,"Txt_STR_LANG_ID[Gbl.Prefs.Language] = %s",Txt_STR_LANG_ID[Gbl.Prefs.Language]);
|
||||
Lay_ShowAlert (Lay_INFO,Gbl.Message);
|
||||
sprintf (Gbl.Message,"Txt_STR_LANG_ID[Gbl.Usrs.Me.UsrDat.Prefs.Language] = %s",Txt_STR_LANG_ID[Gbl.Usrs.Me.UsrDat.Prefs.Language]);
|
||||
Lay_ShowAlert (Lay_INFO,Gbl.Message);
|
||||
*/
|
||||
|
||||
if (Gbl.Usrs.Me.Logged &&
|
||||
Gbl.Prefs.Language != Gbl.Usrs.Me.UsrDat.Prefs.Language)
|
||||
Pre_UpdateMyLanguageToCurrentLanguage ();
|
||||
|
||||
/***** Set preferences from current IP *****/
|
||||
Pre_SetPrefsFromIP ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************** Update my language to the current language *****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Pre_UpdateMyLanguageToCurrentLanguage (void)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char Query[128];
|
||||
|
||||
/***** Set my language to the current language *****/
|
||||
Gbl.Usrs.Me.UsrDat.Prefs.Language = Gbl.Prefs.Language;
|
||||
|
||||
/***** Update my language in database *****/
|
||||
sprintf (Query,"UPDATE usr_data SET Language='%s' WHERE UsrCod='%ld'",
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
DB_QueryUPDATE (Query,"can not update your language");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************************** Get parameter language **************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -322,7 +340,8 @@ Txt_Language_t Pre_GetParamLanguage (void)
|
|||
|
||||
Par_GetParToText ("Lan",UnsignedStr,10);
|
||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
||||
if (UnsignedNum < Txt_NUM_LANGUAGES)
|
||||
if (UnsignedNum >= 1 &&
|
||||
UnsignedNum <= Txt_NUM_LANGUAGES)
|
||||
return (Txt_Language_t) UnsignedNum;
|
||||
|
||||
return Txt_Current_CGI_SWAD_Language;
|
||||
|
|
|
@ -48,6 +48,7 @@ void Pre_RemoveOldPrefsFromIP (void);
|
|||
void Pre_PutSelectorToSelectLanguage (void);
|
||||
void Pre_AskChangeLanguage (void);
|
||||
void Pre_ChangeLanguage (void);
|
||||
void Pre_UpdateMyLanguageToCurrentLanguage (void);
|
||||
Txt_Language_t Pre_GetParamLanguage (void);
|
||||
|
||||
void Pre_ChangeSideCols (void);
|
||||
|
|
|
@ -107,11 +107,12 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName);
|
|||
|
||||
char *Prf_GetURLPublicProfile (char *URL,const char *NicknameWithoutArroba)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
|
||||
/***** Build URL using nickname *****/
|
||||
sprintf (URL,"%s/%s?usr=@%s",
|
||||
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
Cfg_HTTPS_URL_SWAD_CGI,
|
||||
Txt_STR_LANG_ID[Gbl.Prefs.Language],
|
||||
NicknameWithoutArroba);
|
||||
|
||||
return URL;
|
||||
|
|
|
@ -81,6 +81,7 @@ static void Rec_ShowCrsRecord (Rec_RecordViewType_t TypeOfView,struct UsrData *U
|
|||
static void Rec_ShowMyCrsRecordUpdated (void);
|
||||
static void Rec_WriteLinkToDataProtectionClause (void);
|
||||
|
||||
static void Rec_GetUsrExtraDataFromRecordForm (struct UsrData *UsrDat);
|
||||
static void Rec_GetUsrCommentsFromForm (struct UsrData *UsrDat);
|
||||
static void Rec_PutLinkToChangeMyInsCtrDpt (void);
|
||||
static void Rec_PutLinkToChangeMySocialNetworks (void);
|
||||
|
@ -1966,7 +1967,6 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
|
|||
extern const char *Txt_Unfollow;
|
||||
extern const char *Txt_Follow;
|
||||
extern const char *Txt_View_public_profile;
|
||||
extern const char *Txt_Country;
|
||||
extern const char *Txt_Email;
|
||||
extern const char *Txt_Sex;
|
||||
extern const char *Txt_Role;
|
||||
|
@ -2006,12 +2006,10 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
|
|||
bool HeIsTeacherInAnyCourse = (UsrDat->Roles & (1 << Rol_TEACHER)); // He/she already is a teacher in any course
|
||||
bool HeBelongsToCurrentCrs = (UsrDat->RoleInCurrentCrsDB == Rol_STUDENT ||
|
||||
UsrDat->RoleInCurrentCrsDB == Rol_TEACHER);
|
||||
bool CountryForm = (TypeOfView == Rec_FORM_MY_COMMON_RECORD ||
|
||||
TypeOfView == Rec_FORM_NEW_RECORD_OTHER_NEW_USR);
|
||||
bool RoleForm = (Gbl.CurrentCrs.Crs.CrsCod > 0 &&
|
||||
(TypeOfView == Rec_FORM_SIGN_UP ||
|
||||
TypeOfView == Rec_FORM_NEW_RECORD_OTHER_NEW_USR ||
|
||||
TypeOfView == Rec_FORM_MODIFY_RECORD_OTHER_EXISTING_USR));
|
||||
bool CountryForm = (TypeOfView == Rec_FORM_MY_COMMON_RECORD);
|
||||
bool RoleForm = (TypeOfView == Rec_FORM_SIGN_UP ||
|
||||
TypeOfView == Rec_FORM_NEW_RECORD_OTHER_NEW_USR ||
|
||||
TypeOfView == Rec_FORM_MODIFY_RECORD_OTHER_EXISTING_USR);
|
||||
bool SexForm = (TypeOfView == Rec_FORM_MY_COMMON_RECORD);
|
||||
bool DataForm = (TypeOfView == Rec_FORM_MY_COMMON_RECORD ||
|
||||
TypeOfView == Rec_FORM_NEW_RECORD_OTHER_NEW_USR ||
|
||||
|
@ -3274,7 +3272,7 @@ void Rec_GetUsrNameFromRecordForm (struct UsrData *UsrDat)
|
|||
Usr_BuildFullName (UsrDat);
|
||||
}
|
||||
|
||||
void Rec_GetUsrExtraDataFromRecordForm (struct UsrData *UsrDat)
|
||||
static void Rec_GetUsrExtraDataFromRecordForm (struct UsrData *UsrDat)
|
||||
{
|
||||
char UnsignedStr[10+1];
|
||||
char LongStr[1+10+1];
|
||||
|
|
|
@ -156,7 +156,6 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
|
|||
void Rec_UpdateMyRecord (void);
|
||||
Rol_Role_t Rec_GetRoleFromRecordForm (void);
|
||||
void Rec_GetUsrNameFromRecordForm (struct UsrData *UsrDat);
|
||||
void Rec_GetUsrExtraDataFromRecordForm (struct UsrData *UsrDat);
|
||||
|
||||
void Rec_ShowFormMyInsCtrDpt (void);
|
||||
void Rec_ChgCountryOfMyInstitution (void);
|
||||
|
|
|
@ -587,7 +587,7 @@ static void Sch_SearchInDB (void)
|
|||
|
||||
static unsigned Sch_SearchInstitutionsInDB (const char *RangeQuery)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char SearchQuery[Sch_MAX_LENGTH_SEARCH_QUERY+1];
|
||||
char Query[1024+Sch_MAX_LENGTH_SEARCH_QUERY*2];
|
||||
|
||||
|
|
|
@ -7648,13 +7648,13 @@ static void Sta_GetAndShowNumUsrsPerLanguage (void)
|
|||
{
|
||||
extern const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_FIGURES];
|
||||
extern const char *Txt_Language;
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_NAME[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_NAME[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_No_of_users;
|
||||
extern const char *Txt_PERCENT_of_users;
|
||||
Txt_Language_t Lan;
|
||||
char Query[1024];
|
||||
unsigned NumUsrs[Txt_NUM_LANGUAGES];
|
||||
unsigned NumUsrs[1+Txt_NUM_LANGUAGES];
|
||||
unsigned NumUsrsTotal = 0;
|
||||
|
||||
Lay_StartRoundFrameTable (NULL,2,Txt_STAT_USE_STAT_TYPES[Sta_LANGUAGES]);
|
||||
|
@ -7676,8 +7676,8 @@ static void Sta_GetAndShowNumUsrsPerLanguage (void)
|
|||
Txt_PERCENT_of_users);
|
||||
|
||||
/***** For each language... *****/
|
||||
for (Lan = (Txt_Language_t) 0;
|
||||
Lan < Txt_NUM_LANGUAGES;
|
||||
for (Lan = (Txt_Language_t) 1;
|
||||
Lan <= Txt_NUM_LANGUAGES;
|
||||
Lan++)
|
||||
{
|
||||
/***** Get the number of users who have chosen this language from database *****/
|
||||
|
@ -7754,8 +7754,8 @@ static void Sta_GetAndShowNumUsrsPerLanguage (void)
|
|||
}
|
||||
|
||||
/***** Write number of users who have chosen each language *****/
|
||||
for (Lan = (Txt_Language_t) 0;
|
||||
Lan < Txt_NUM_LANGUAGES;
|
||||
for (Lan = (Txt_Language_t) 1;
|
||||
Lan <= Txt_NUM_LANGUAGES;
|
||||
Lan++)
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"DAT LEFT_MIDDLE\">"
|
||||
|
|
|
@ -801,7 +801,7 @@ int Syl_WriteSyllabusIntoHTMLBuffer (Inf_InfoType_t InfoType,char **HTMLBuffer)
|
|||
|
||||
static void Syl_WriteSyllabusIntoHTMLTmpFile (Inf_InfoType_t InfoType,FILE *FileHTMLTmp)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_INFO_TITLE[Inf_NUM_INFO_TYPES];
|
||||
unsigned NumItem;
|
||||
int i;
|
||||
|
|
41978
swad_text.c
41978
swad_text.c
File diff suppressed because it is too large
Load Diff
21
swad_text.h
21
swad_text.h
|
@ -31,7 +31,7 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Txt_NUM_LANGUAGES 9
|
||||
#define Txt_NUM_LANGUAGES 9 // From 1 to 9. 0 is reserved to unknown language
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************************** Public types *******************************/
|
||||
|
@ -39,15 +39,16 @@
|
|||
|
||||
typedef enum
|
||||
{
|
||||
Txt_LANGUAGE_CA = 0,
|
||||
Txt_LANGUAGE_DE = 1,
|
||||
Txt_LANGUAGE_EN = 2,
|
||||
Txt_LANGUAGE_ES = 3,
|
||||
Txt_LANGUAGE_FR = 4,
|
||||
Txt_LANGUAGE_GN = 5,
|
||||
Txt_LANGUAGE_IT = 6,
|
||||
Txt_LANGUAGE_PL = 7,
|
||||
Txt_LANGUAGE_PT = 8,
|
||||
Txt_LANGUAGE_UNKNOWN = 0,
|
||||
Txt_LANGUAGE_CA = 1,
|
||||
Txt_LANGUAGE_DE = 2,
|
||||
Txt_LANGUAGE_EN = 3,
|
||||
Txt_LANGUAGE_ES = 4,
|
||||
Txt_LANGUAGE_FR = 5,
|
||||
Txt_LANGUAGE_GN = 6,
|
||||
Txt_LANGUAGE_IT = 7,
|
||||
Txt_LANGUAGE_PL = 8,
|
||||
Txt_LANGUAGE_PT = 9,
|
||||
} Txt_Language_t; // ISO 639-1 language codes
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
18
swad_user.c
18
swad_user.c
|
@ -272,7 +272,7 @@ void Usr_ResetUsrDataExceptUsrCodAndIDs (struct UsrData *UsrDat)
|
|||
UsrDat->Tch.Office[0] = '\0';
|
||||
UsrDat->Tch.OfficePhone[0] = '\0';
|
||||
|
||||
UsrDat->Prefs.Language = Cfg_DEFAULT_LANGUAGE_FOR_NEW_USERS;
|
||||
UsrDat->Prefs.Language = Txt_LANGUAGE_UNKNOWN; // Language unknown
|
||||
UsrDat->Prefs.FirstDayOfWeek = Cal_FIRST_DAY_OF_WEEK_DEFAULT; // Default first day of week
|
||||
UsrDat->Prefs.Theme = The_THEME_DEFAULT;
|
||||
UsrDat->Prefs.IconSet = Ico_ICON_SET_DEFAULT;
|
||||
|
@ -387,7 +387,7 @@ void Usr_GetUsrCodFromEncryptedUsrCod (struct UsrData *UsrDat)
|
|||
void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
|
||||
{
|
||||
extern const bool Cal_DayIsValidAsFirstDayOfWeek[7];
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
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];
|
||||
char Query[1024];
|
||||
|
@ -467,9 +467,9 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
|
|||
}
|
||||
|
||||
/* Get language */
|
||||
UsrDat->Prefs.Language = Cfg_DEFAULT_LANGUAGE_FOR_NEW_USERS;
|
||||
for (Lan = (Txt_Language_t) 0;
|
||||
Lan < Txt_NUM_LANGUAGES;
|
||||
UsrDat->Prefs.Language = Txt_LANGUAGE_UNKNOWN; // Language unknown
|
||||
for (Lan = (Txt_Language_t) 1;
|
||||
Lan <= Txt_NUM_LANGUAGES;
|
||||
Lan++)
|
||||
if (!strcasecmp (row[8],Txt_STR_LANG_ID[Lan]))
|
||||
{
|
||||
|
@ -1219,7 +1219,7 @@ bool Usr_CheckIfIBelongToCrs (long CrsCod)
|
|||
|
||||
unsigned Usr_GetCtysFromUsr (long UsrCod,MYSQL_RES **mysql_res)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char Query[512];
|
||||
|
||||
/***** Get the institutions a user belongs to from database *****/
|
||||
|
@ -1515,7 +1515,7 @@ void Usr_WelcomeUsr (void)
|
|||
extern const char *Txt_Welcome[Usr_NUM_SEXS];
|
||||
extern const char *Txt_Welcome_X[Usr_NUM_SEXS];
|
||||
extern const char *Txt_Welcome_X_and_happy_birthday[Usr_NUM_SEXS];
|
||||
extern const char *Txt_Switching_to_LANGUAGE[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_Switching_to_LANGUAGE[1+Txt_NUM_LANGUAGES];
|
||||
bool CongratulateMyBirthday;
|
||||
|
||||
if (Gbl.Usrs.Me.Logged)
|
||||
|
@ -2364,6 +2364,10 @@ static void Usr_SetUsrRoleAndPrefs (void)
|
|||
|
||||
// In this point I am logged
|
||||
|
||||
/***** Set my language if unknown *****/
|
||||
if (Gbl.Usrs.Me.UsrDat.Prefs.Language == Txt_LANGUAGE_UNKNOWN) // I have not chosen language
|
||||
Pre_UpdateMyLanguageToCurrentLanguage (); // Update my language in database
|
||||
|
||||
/***** Set preferences from my preferences *****/
|
||||
Gbl.Prefs.FirstDayOfWeek = Gbl.Usrs.Me.UsrDat.Prefs.FirstDayOfWeek;
|
||||
Gbl.Prefs.Menu = Gbl.Usrs.Me.UsrDat.Prefs.Menu;
|
||||
|
|
|
@ -184,7 +184,7 @@ static void Svc_CopyUsrData (struct swad__user *Usr,struct UsrData *UsrDat,bool
|
|||
|
||||
static void Svc_GetListGrpsInAttendanceEvent (long AttCod,char **ListGroups);
|
||||
|
||||
static int Svc_GetLanguageFromUsrCod (long UsrCod);
|
||||
static int Svc_GetMyLanguage (void);
|
||||
|
||||
static int Svc_sendMessageToUsr (long RepliedMsgCod,long SenderUsrCod,long ReplyUsrCod,long RecipientUsrCod,bool NotifyByEmail,const char *Subject,const char *Content);
|
||||
|
||||
|
@ -2533,8 +2533,8 @@ int swad__getNotifications (struct soap *soap,
|
|||
Gbl.Usrs.Me.Logged = true;
|
||||
Gbl.Usrs.Me.LoggedRole = Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB;
|
||||
|
||||
/***** Get language from database *****/
|
||||
if ((ReturnCode = Svc_GetLanguageFromUsrCod (Gbl.Usrs.Me.UsrDat.UsrCod)) != SOAP_OK)
|
||||
/***** Get my language from database *****/
|
||||
if ((ReturnCode = Svc_GetMyLanguage ()) != SOAP_OK)
|
||||
return ReturnCode;
|
||||
|
||||
if ((SummaryStr = malloc (Cns_MAX_BYTES_TEXT+1)) == NULL)
|
||||
|
@ -2708,13 +2708,12 @@ int swad__getNotifications (struct soap *soap,
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************ Get language from database giving a user's code ****************/
|
||||
/********************* Get my language from database *************************/
|
||||
/*****************************************************************************/
|
||||
// UsrCod must contain an existing user's code
|
||||
|
||||
static int Svc_GetLanguageFromUsrCod (long UsrCod)
|
||||
static int Svc_GetMyLanguage (void)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char Query[512];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
@ -2723,7 +2722,7 @@ static int Svc_GetLanguageFromUsrCod (long UsrCod)
|
|||
/***** Get user's language *****/
|
||||
sprintf (Query,"SELECT Language FROM usr_data"
|
||||
" WHERE UsrCod='%ld'",
|
||||
UsrCod);
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
if (DB_QuerySELECT (Query,&mysql_res,"can not get user's language") != 1)
|
||||
return soap_receiver_fault (Gbl.soap,
|
||||
"Can not get user's language from database",
|
||||
|
@ -2733,15 +2732,17 @@ static int Svc_GetLanguageFromUsrCod (long UsrCod)
|
|||
row = mysql_fetch_row (mysql_res);
|
||||
|
||||
/* Get language (row[0]) */
|
||||
Gbl.Prefs.Language = Cfg_DEFAULT_LANGUAGE_FOR_NEW_USERS; // Set default language
|
||||
for (Lan=(Txt_Language_t) 0;
|
||||
Lan < Txt_NUM_LANGUAGES;
|
||||
Gbl.Prefs.Language = Txt_LANGUAGE_UNKNOWN; // Language unknown
|
||||
for (Lan = (Txt_Language_t) 1;
|
||||
Lan <= Txt_NUM_LANGUAGES;
|
||||
Lan++)
|
||||
if (!strcasecmp (row[0],Txt_STR_LANG_ID[Lan]))
|
||||
{
|
||||
Gbl.Prefs.Language = Lan;
|
||||
break;
|
||||
}
|
||||
if (Gbl.Prefs.Language == Txt_LANGUAGE_UNKNOWN) // Language stored in database is unknown
|
||||
Gbl.Prefs.Language = Cfg_DEFAULT_LANGUAGE;
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
@ -3345,15 +3346,17 @@ int swad__getTests (struct soap *soap,
|
|||
|
||||
static int Svc_GetTstTags (long CrsCod,struct swad__getTestsOutput *getTestsOut)
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||
extern const char *Txt_STR_LANG_ID[1+Txt_NUM_LANGUAGES];
|
||||
char Query[512];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned NumRow,NumRows;
|
||||
|
||||
/***** Get available tags from database *****/
|
||||
sprintf (Query,"SELECT TagCod,TagTxt FROM tst_tags"
|
||||
" WHERE CrsCod='%ld' AND TagHidden='N' ORDER BY TagTxt",
|
||||
sprintf (Query,"SELECT TagCod,TagTxt"
|
||||
" FROM tst_tags"
|
||||
" WHERE CrsCod='%ld' AND TagHidden='N'"
|
||||
" ORDER BY TagTxt",
|
||||
CrsCod);
|
||||
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get test tags");
|
||||
|
||||
|
|
Loading…
Reference in New Issue