Version 18.2.1

This commit is contained in:
Antonio Cañas Vargas 2018-10-08 12:37:29 +02:00
parent 41b4dea455
commit 2ad5395d13
21 changed files with 191 additions and 178 deletions

View File

@ -66,7 +66,7 @@ CC = gcc
# LIBS when using MariaDB (also valid with MySQL): # LIBS when using MariaDB (also valid with MySQL):
LIBS = -lssl -lcrypto -lpthread -lrt -lmysqlclient -lz -L/usr/lib64/mysql -lm -lgsoap LIBS = -lssl -lcrypto -lpthread -lrt -lmysqlclient -lz -L/usr/lib64/mysql -lm -lgsoap
CFLAGS = -Wall -Wextra -mtune=native -O2 -s CFLAGS = -Wall -Wextra -mtune=native -O0 -s
all: swad_ca swad_de swad_en swad_es swad_fr swad_gn swad_it swad_pl swad_pt all: swad_ca swad_de swad_en swad_es swad_fr swad_gn swad_it swad_pl swad_pt

View File

@ -732,19 +732,22 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat,bool CreatingMyOwnAccount)
/***** Insert new user in database *****/ /***** Insert new user in database *****/
/* Insert user's data */ /* Insert user's data */
Usr_CreateBirthdayStrDB (UsrDat,BirthdayStrDB); Usr_CreateBirthdayStrDB (UsrDat,BirthdayStrDB); // It can include start and ending apostrophes
CommentsLength = strlen (UsrDat->Comments); if (UsrDat->Comments)
if ((QueryUsrData = malloc (2048 + CommentsLength = strlen (UsrDat->Comments);
Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + // EncryptedUsrCod else
Pwd_BYTES_ENCRYPTED_PASSWORD + // Password CommentsLength = 0;
Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME * 3 + // Surname1, Surname2, FirstName if ((QueryUsrData = (char *) malloc (2048 +
Usr_MAX_BYTES_ADDRESS + // LocalAddress Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + // EncryptedUsrCod
Usr_MAX_BYTES_PHONE + // LocalPhone Pwd_BYTES_ENCRYPTED_PASSWORD + // Password
Usr_MAX_BYTES_ADDRESS + // FamilyAddress Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME * 3 + // Surname1, Surname2, FirstName
Usr_MAX_BYTES_PHONE + // FamilyPhone Usr_MAX_BYTES_ADDRESS + // LocalAddress
Usr_MAX_BYTES_ADDRESS + // OriginPlace Usr_MAX_BYTES_PHONE + // LocalPhone
Usr_BIRTHDAY_STR_DB_LENGTH + // BirthdayStrDB Usr_MAX_BYTES_ADDRESS + // FamilyAddress
CommentsLength)) == NULL) // Comments Usr_MAX_BYTES_PHONE + // FamilyPhone
Usr_MAX_BYTES_ADDRESS + // OriginPlace
Usr_BIRTHDAY_STR_DB_LENGTH + // BirthdayStrDB
CommentsLength)) == NULL) // Comments
Lay_ShowErrorAndExit ("Not enough memory to store query."); Lay_ShowErrorAndExit ("Not enough memory to store query.");
sprintf (QueryUsrData,"INSERT INTO usr_data" sprintf (QueryUsrData,"INSERT INTO usr_data"
" (EncryptedUsrCod,Password," " (EncryptedUsrCod,Password,"
@ -796,9 +799,9 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat,bool CreatingMyOwnAccount)
{ {
Str_ConvertToUpperText (UsrDat->IDs.List[NumID].ID); Str_ConvertToUpperText (UsrDat->IDs.List[NumID].ID);
sprintf (QueryUsrIDs,"INSERT INTO usr_IDs" sprintf (QueryUsrIDs,"INSERT INTO usr_IDs"
" (UsrCod,UsrID,CreatTime,Confirmed)" " (UsrCod,UsrID,CreatTime,Confirmed)"
" VALUES" " VALUES"
" (%ld,'%s',NOW(),'%c')", " (%ld,'%s',NOW(),'%c')",
UsrDat->UsrCod, UsrDat->UsrCod,
UsrDat->IDs.List[NumID].ID, UsrDat->IDs.List[NumID].ID,
UsrDat->IDs.List[NumID].Confirmed ? 'Y' : UsrDat->IDs.List[NumID].Confirmed ? 'Y' :

View File

@ -1497,7 +1497,7 @@ Profile:
1278. ActSeeMyTT Show the timetable of all courses of the logged user 1278. ActSeeMyTT Show the timetable of all courses of the logged user
1279. ActSeeMyAgd Show my full agenda (personal organizer) 1279. ActSeeMyAgd Show my full agenda (personal organizer)
1280. ActFrmMyAcc Show form to the creation or change of user's account 1280. ActFrmMyAcc Show form to the creation or change of user's account
1281. ActReqEdiRecCom Request the edition of the record with the personal data of the user 1281. ActReqEdiRecSha Request the edition of the record with the personal data of the user
1282. ActEdiPrf Show forms to edit preferences 1282. ActEdiPrf Show forms to edit preferences
1283. ActReqSndNewPwd Show form to send a new password via email 1283. ActReqSndNewPwd Show form to send a new password via email
@ -3092,7 +3092,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActSeeMyTT */{ 408, 3,TabPrf,ActSeeMyTT ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TT_ShowClassTimeTable ,"clock64x64.gif" }, /* ActSeeMyTT */{ 408, 3,TabPrf,ActSeeMyTT ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TT_ShowClassTimeTable ,"clock64x64.gif" },
/* ActSeeMyAgd */{1602, 4,TabPrf,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_ShowMyAgenda ,"calendar64x64.png" }, /* ActSeeMyAgd */{1602, 4,TabPrf,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_ShowMyAgenda ,"calendar64x64.png" },
/* ActFrmMyAcc */{ 36, 5,TabPrf,ActFrmMyAcc ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_ShowFormMyAccount ,"arroba64x64.gif" }, /* ActFrmMyAcc */{ 36, 5,TabPrf,ActFrmMyAcc ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_ShowFormMyAccount ,"arroba64x64.gif" },
/* ActReqEdiRecCom */{ 285, 6,TabPrf,ActReqEdiRecCom ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_ShowFormMySharedRecord ,"card64x64.gif" }, /* ActReqEdiRecSha */{ 285, 6,TabPrf,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_ShowMySharedRecordAndMyInsCtrDpt,"card64x64.gif" },
/* ActEdiPrf */{ 673, 7,TabPrf,ActEdiPrf ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pre_EditPrefs ,"heart64x64.gif" }, /* ActEdiPrf */{ 673, 7,TabPrf,ActEdiPrf ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pre_EditPrefs ,"heart64x64.gif" },
// Actions not in menu: // Actions not in menu:
@ -3137,28 +3137,28 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActReqRemMyAcc */{1430,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_AskIfRemoveMyAccount ,NULL}, /* ActReqRemMyAcc */{1430,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_AskIfRemoveMyAccount ,NULL},
/* ActRemMyAcc */{1431,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_RemoveMyAccount ,NULL}, /* ActRemMyAcc */{1431,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_RemoveMyAccount ,NULL},
/* ActChgMyData */{ 298,-1,TabUnk,ActReqEdiRecCom ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,Rec_UpdateMyRecord ,Rec_ShowMySharedRecordUpd ,NULL}, /* ActChgMyData */{ 298,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,Rec_UpdateMyRecord ,Rec_ShowMySharedRecordUpd ,NULL},
/* ActReqMyPho */{ 30,-1,TabUnk,ActReqEdiRecCom ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ReqMyPhoto ,NULL}, /* ActReqMyPho */{ 30,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ReqMyPhoto ,NULL},
/* ActDetMyPho */{ 693,-1,TabUnk,ActReqEdiRecCom ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,Pho_RecMyPhotoDetFaces ,NULL}, /* ActDetMyPho */{ 693,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,Pho_RecMyPhotoDetFaces ,NULL},
/* ActUpdMyPho */{ 694,-1,TabUnk,ActReqEdiRecCom ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,Pho_UpdateMyPhoto1 ,Pho_UpdateMyPhoto2 ,NULL}, /* ActUpdMyPho */{ 694,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,Pho_UpdateMyPhoto1 ,Pho_UpdateMyPhoto2 ,NULL},
/* ActReqRemMyPho */{1577,-1,TabUnk,ActReqEdiRecCom ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ReqRemoveMyPhoto ,NULL}, /* ActReqRemMyPho */{1577,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ReqRemoveMyPhoto ,NULL},
/* ActRemMyPho */{ 428,-1,TabUnk,ActReqEdiRecCom ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,Pho_RemoveMyPhoto1 ,Pho_RemoveMyPhoto2 ,NULL}, /* ActRemMyPho */{ 428,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,Pho_RemoveMyPhoto1 ,Pho_RemoveMyPhoto2 ,NULL},
/* ActEdiPri */{1403,-1,TabUnk,ActEdiPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pri_EditMyPrivacy ,NULL}, /* ActEdiPri */{1403,-1,TabUnk,ActEdiPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pri_EditMyPrivacy ,NULL},
/* ActChgPriPho */{ 774,-1,TabUnk,ActEdiPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ChangePhotoVisibility ,NULL}, /* ActChgPriPho */{ 774,-1,TabUnk,ActEdiPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ChangePhotoVisibility ,NULL},
/* ActChgPriPrf */{1404,-1,TabUnk,ActEdiPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prf_ChangeProfileVisibility ,NULL}, /* ActChgPriPrf */{1404,-1,TabUnk,ActEdiPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prf_ChangeProfileVisibility ,NULL},
/* ActReqEdiMyIns */{1165,-1,TabUnk,ActReqEdiRecCom ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_ShowFormMyInsCtrDpt ,NULL}, /* ActReqEdiMyIns */{1165,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_ShowMySharedRecordAndMyInsCtrDpt,NULL},
/* ActChgCtyMyIns */{1166,-1,TabUnk,ActReqEdiRecCom ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_ChgCountryOfMyInstitution ,NULL}, /* ActChgCtyMyIns */{1166,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_ChgCountryOfMyInstitution ,NULL},
/* ActChgMyIns */{1167,-1,TabUnk,ActReqEdiRecCom ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_UpdateMyInstitution ,NULL}, /* ActChgMyIns */{1167,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_UpdateMyInstitution ,NULL},
/* ActChgMyCtr */{1168,-1,TabUnk,ActReqEdiRecCom ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_UpdateMyCentre ,NULL}, /* ActChgMyCtr */{1168,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_UpdateMyCentre ,NULL},
/* ActChgMyDpt */{1169,-1,TabUnk,ActReqEdiRecCom ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_UpdateMyDepartment ,NULL}, /* ActChgMyDpt */{1169,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_UpdateMyDepartment ,NULL},
/* ActChgMyOff */{1170,-1,TabUnk,ActReqEdiRecCom ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_UpdateMyOffice ,NULL}, /* ActChgMyOff */{1170,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_UpdateMyOffice ,NULL},
/* ActChgMyOffPho */{1171,-1,TabUnk,ActReqEdiRecCom ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_UpdateMyOfficePhone ,NULL}, /* ActChgMyOffPho */{1171,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_UpdateMyOfficePhone ,NULL},
/* ActReqEdiMyNet */{1172,-1,TabUnk,ActReqEdiRecCom ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Net_ShowFormMyWebsAndSocialNets,NULL}, /* ActReqEdiMyNet */{1172,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Net_ShowFormMyWebsAndSocialNets,NULL},
/* ActChgMyNet */{1173,-1,TabUnk,ActReqEdiRecCom ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Net_UpdateMyWebsAndSocialNets ,NULL}, /* ActChgMyNet */{1173,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Net_UpdateMyWebsAndSocialNets ,NULL},
/* ActChgThe */{ 841,-1,TabUnk,ActEdiPrf ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,The_ChangeTheme ,Pre_EditPrefs ,NULL}, /* ActChgThe */{ 841,-1,TabUnk,ActEdiPrf ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,The_ChangeTheme ,Pre_EditPrefs ,NULL},
/* ActReqChgLan */{ 992,-1,TabUnk,ActEdiPrf ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Lan_AskChangeLanguage ,NULL}, /* ActReqChgLan */{ 992,-1,TabUnk,ActEdiPrf ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Lan_AskChangeLanguage ,NULL},
@ -3469,7 +3469,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
-1, // #282 (obsolete action) -1, // #282 (obsolete action)
-1, // #283 (obsolete action) -1, // #283 (obsolete action)
ActAdmMrkCrs, // #284 ActAdmMrkCrs, // #284
ActReqEdiRecCom, // #285 ActReqEdiRecSha, // #285
ActReqRemFilBrf, // #286 ActReqRemFilBrf, // #286
-1, // #287 (obsolete action) -1, // #287 (obsolete action)
ActReqRemFilWrkUsr, // #288 ActReqRemFilWrkUsr, // #288
@ -5461,7 +5461,7 @@ void Act_AdjustCurrentAction (void)
case ActFrmMyAcc: case ActFrmChgMyPwd: case ActFrmMyAcc: case ActFrmChgMyPwd:
break; break;
default: default:
Gbl.Action.Act = ActReqEdiRecCom; Gbl.Action.Act = ActReqEdiRecSha;
Tab_SetCurrentTab (); Tab_SetCurrentTab ();
return; return;
} }
@ -5481,7 +5481,7 @@ void Act_AdjustCurrentAction (void)
{ {
case ActHom: case ActLogOut: case ActHom: case ActLogOut:
case ActFrmMyAcc: case ActFrmChgMyPwd: case ActFrmMyAcc: case ActFrmChgMyPwd:
case ActReqEdiRecCom: case ActReqEdiRecSha:
break; break;
default: default:
Gbl.Action.Act = ActReqEdiMyIns; Gbl.Action.Act = ActReqEdiMyIns;
@ -5496,7 +5496,7 @@ void Act_AdjustCurrentAction (void)
{ {
case ActHom: case ActLogOut: case ActHom: case ActLogOut:
case ActFrmMyAcc: case ActFrmChgMyPwd: case ActFrmMyAcc: case ActFrmChgMyPwd:
case ActReqEdiRecCom: case ActReqEdiMyIns: case ActReqEdiRecSha: case ActReqEdiMyIns:
break; break;
default: default:
Gbl.Action.Act = ActEdiPri; Gbl.Action.Act = ActEdiPri;
@ -5542,7 +5542,7 @@ void Act_AdjustCurrentAction (void)
case ActLogOut: case ActLogOut:
case ActFrmMyAcc: case ActFrmMyAcc:
case ActFrmChgMyPwd: case ActFrmChgMyPwd:
case ActReqEdiRecCom: case ActReqEdiRecSha:
case ActReqEdiMyIns: case ActReqEdiMyIns:
case ActEdiPri: case ActEdiPri:
case ActReqSelGrp: case ActReqSelGrp:

View File

@ -1531,7 +1531,7 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActSeeMyTT (ActSeeMyUsgRep + 4) #define ActSeeMyTT (ActSeeMyUsgRep + 4)
#define ActSeeMyAgd (ActSeeMyUsgRep + 5) #define ActSeeMyAgd (ActSeeMyUsgRep + 5)
#define ActFrmMyAcc (ActSeeMyUsgRep + 6) #define ActFrmMyAcc (ActSeeMyUsgRep + 6)
#define ActReqEdiRecCom (ActSeeMyUsgRep + 7) #define ActReqEdiRecSha (ActSeeMyUsgRep + 7)
#define ActEdiPrf (ActSeeMyUsgRep + 8) #define ActEdiPrf (ActSeeMyUsgRep + 8)
// Secondary actions // Secondary actions
#define ActReqSndNewPwd (ActSeeMyUsgRep + 9) #define ActReqSndNewPwd (ActSeeMyUsgRep + 9)

View File

@ -355,10 +355,11 @@ En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 18.2 (2018-10-08)" #define Log_PLATFORM_VERSION "SWAD 18.2.1 (2018-10-08)"
#define CSS_FILE "swad17.25.4.css" #define CSS_FILE "swad17.25.4.css"
#define JS_FILE "swad17.17.1.js" #define JS_FILE "swad17.17.1.js"
/* /*
Version 18.2.1: Oct 08, 2018 Changes in edition of user's institution, centre, department... (234989 lines)
Version 18.2: Oct 08, 2018 Changes in layout of record card. (234980 lines) Version 18.2: Oct 08, 2018 Changes in layout of record card. (234980 lines)
Version 18.1.6: Oct 07, 2018 Icon to change user's institution is moved to record card. (234963 lines) Version 18.1.6: Oct 07, 2018 Icon to change user's institution is moved to record card. (234963 lines)
Version 18.1.5: Oct 07, 2018 Icon to change user's privacy is moved to record card. (234958 lines) Version 18.1.5: Oct 07, 2018 Icon to change user's privacy is moved to record card. (234958 lines)

View File

@ -530,18 +530,21 @@ void Enr_UpdateUsrData (struct UsrData *UsrDat)
Enr_FilterUsrDat (UsrDat); Enr_FilterUsrDat (UsrDat);
/***** Update user's common data *****/ /***** Update user's common data *****/
Usr_CreateBirthdayStrDB (UsrDat,BirthdayStrDB); Usr_CreateBirthdayStrDB (UsrDat,BirthdayStrDB); // It can include start and ending apostrophes
CommentsLength = strlen (UsrDat->Comments); if (UsrDat->Comments)
if ((Query = malloc (2048 + CommentsLength = strlen (UsrDat->Comments);
Pwd_BYTES_ENCRYPTED_PASSWORD + // Password else
Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME * 3 +// Surname1, Surname2, FirstName CommentsLength = 0;
Usr_MAX_BYTES_ADDRESS + // LocalAddress if ((Query = (char *) malloc (2048 +
Usr_MAX_BYTES_PHONE + // LocalPhone Pwd_BYTES_ENCRYPTED_PASSWORD + // Password
Usr_MAX_BYTES_ADDRESS + // FamilyAddress Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME * 3 +// Surname1, Surname2, FirstName
Usr_MAX_BYTES_PHONE + // FamilyPhone Usr_MAX_BYTES_ADDRESS + // LocalAddress
Usr_MAX_BYTES_ADDRESS + // OriginPlace Usr_MAX_BYTES_PHONE + // LocalPhone
Usr_BIRTHDAY_STR_DB_LENGTH + // BirthdayStrDB Usr_MAX_BYTES_ADDRESS + // FamilyAddress
CommentsLength)) == NULL) // Comments Usr_MAX_BYTES_PHONE + // FamilyPhone
Usr_MAX_BYTES_ADDRESS + // OriginPlace
Usr_BIRTHDAY_STR_DB_LENGTH + // BirthdayStrDB
CommentsLength)) == NULL) // Comments
Lay_ShowErrorAndExit ("Not enough memory to store query."); Lay_ShowErrorAndExit ("Not enough memory to store query.");
sprintf (Query,"UPDATE usr_data" sprintf (Query,"UPDATE usr_data"
" SET Password='%s'," " SET Password='%s',"

View File

@ -195,25 +195,25 @@ static long Exa_GetParamsExamAnnouncement (void)
static void Exa_AllocMemExamAnnouncement (void) static void Exa_AllocMemExamAnnouncement (void)
{ {
if ((Gbl.ExamAnns.ExaDat.Place = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Gbl.ExamAnns.ExaDat.Place = (char *) malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store exam announcement."); Lay_ShowErrorAndExit ("Not enough memory to store exam announcement.");
if ((Gbl.ExamAnns.ExaDat.Mode = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Gbl.ExamAnns.ExaDat.Mode = (char *) malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store exam announcement."); Lay_ShowErrorAndExit ("Not enough memory to store exam announcement.");
if ((Gbl.ExamAnns.ExaDat.Structure = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Gbl.ExamAnns.ExaDat.Structure = (char *) malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store exam announcement."); Lay_ShowErrorAndExit ("Not enough memory to store exam announcement.");
if ((Gbl.ExamAnns.ExaDat.DocRequired = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Gbl.ExamAnns.ExaDat.DocRequired = (char *) malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store exam announcement."); Lay_ShowErrorAndExit ("Not enough memory to store exam announcement.");
if ((Gbl.ExamAnns.ExaDat.MatRequired = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Gbl.ExamAnns.ExaDat.MatRequired = (char *) malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store exam announcement."); Lay_ShowErrorAndExit ("Not enough memory to store exam announcement.");
if ((Gbl.ExamAnns.ExaDat.MatAllowed = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Gbl.ExamAnns.ExaDat.MatAllowed = (char *) malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store exam announcement."); Lay_ShowErrorAndExit ("Not enough memory to store exam announcement.");
if ((Gbl.ExamAnns.ExaDat.OtherInfo = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Gbl.ExamAnns.ExaDat.OtherInfo = (char *) malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store exam announcement."); Lay_ShowErrorAndExit ("Not enough memory to store exam announcement.");
} }
@ -736,10 +736,10 @@ static long Exa_AddExamAnnouncementToDB (void)
long ExaCod; long ExaCod;
/***** Add exam announcement *****/ /***** Add exam announcement *****/
if ((Query = malloc (512 + if ((Query = (char *) malloc (512 +
Hie_MAX_BYTES_FULL_NAME + Hie_MAX_BYTES_FULL_NAME +
Exa_MAX_BYTES_SESSION + Exa_MAX_BYTES_SESSION +
7 * Cns_MAX_BYTES_TEXT)) == NULL) 7 * Cns_MAX_BYTES_TEXT)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to query database."); Lay_ShowErrorAndExit ("Not enough memory to query database.");
sprintf (Query,"INSERT INTO exam_announcements " sprintf (Query,"INSERT INTO exam_announcements "
"(CrsCod,Status,NumNotif,CrsFullName,Year,ExamSession," "(CrsCod,Status,NumNotif,CrsFullName,Year,ExamSession,"
@ -783,10 +783,10 @@ static void Exa_ModifyExamAnnouncementInDB (void)
char *Query; char *Query;
/***** Modify exam announcement *****/ /***** Modify exam announcement *****/
if ((Query = malloc (512 + if ((Query = (char *) malloc (512 +
Hie_MAX_BYTES_FULL_NAME + Hie_MAX_BYTES_FULL_NAME +
Exa_MAX_BYTES_SESSION + Exa_MAX_BYTES_SESSION +
7 * Cns_MAX_BYTES_TEXT)) == NULL) 7 * Cns_MAX_BYTES_TEXT)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to query database."); Lay_ShowErrorAndExit ("Not enough memory to query database.");
sprintf (Query,"UPDATE exam_announcements" sprintf (Query,"UPDATE exam_announcements"
" SET CrsFullName='%s',Year=%u,ExamSession='%s'," " SET CrsFullName='%s',Year=%u,ExamSession='%s',"

View File

@ -509,12 +509,12 @@ static long For_InsertForumPst (long ThrCod,long UsrCod,
long PstCod; long PstCod;
/***** Allocate space for query *****/ /***** Allocate space for query *****/
if ((Query = malloc (512 + if ((Query = (char *) malloc (512 +
strlen (Subject) + strlen (Subject) +
strlen (Content) + strlen (Content) +
Img_BYTES_NAME + Img_BYTES_NAME +
Img_MAX_BYTES_TITLE + Img_MAX_BYTES_TITLE +
Cns_MAX_BYTES_WWW)) == NULL) Cns_MAX_BYTES_WWW)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store database query."); Lay_ShowErrorAndExit ("Not enough memory to store database query.");
/***** Check if image is received and processed *****/ /***** Check if image is received and processed *****/

View File

@ -285,7 +285,7 @@ const Act_Action_t Mnu_MenuActions[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB
ActSeeMyTT, // 3 ActSeeMyTT, // 3
ActSeeMyAgd, // 4 ActSeeMyAgd, // 4
ActFrmMyAcc, // 5 ActFrmMyAcc, // 5
ActReqEdiRecCom, // 6 ActReqEdiRecSha, // 6
ActEdiPrf, // 7 ActEdiPrf, // 7
0, // 8 0, // 8
0, // 9 0, // 9

View File

@ -1303,11 +1303,11 @@ static long Msg_InsertNewMsg (const char *Subject,const char *Content,
long MsgCod; long MsgCod;
/***** Allocate space for query *****/ /***** Allocate space for query *****/
if ((Query = malloc (512 + if ((Query = (char *) malloc (512 +
strlen (Subject) + strlen (Subject) +
strlen (Content) + strlen (Content) +
Img_BYTES_NAME + Img_BYTES_NAME +
Img_MAX_BYTES_TITLE)) == NULL) Img_MAX_BYTES_TITLE)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store database query."); Lay_ShowErrorAndExit ("Not enough memory to store database query.");
/***** Check if image is received and processed *****/ /***** Check if image is received and processed *****/

View File

@ -3182,13 +3182,13 @@ static void Prj_EditOneProjectTxtArea (const char *Id,
void Prj_AllocMemProject (struct Project *Prj) void Prj_AllocMemProject (struct Project *Prj)
{ {
if ((Prj->Description = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Prj->Description = (char *) malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store project."); Lay_ShowErrorAndExit ("Not enough memory to store project.");
if ((Prj->Knowledge = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Prj->Knowledge = (char *) malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store project."); Lay_ShowErrorAndExit ("Not enough memory to store project.");
if ((Prj->Materials = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Prj->Materials = (char *) malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store project."); Lay_ShowErrorAndExit ("Not enough memory to store project.");
} }

View File

@ -68,6 +68,8 @@ extern struct Globals Gbl;
#define Rec_SHOW_OFFICE_HOURS_DEFAULT true #define Rec_SHOW_OFFICE_HOURS_DEFAULT true
#define Rec_MY_INS_CTR_DPT_ID "my_ins_ctr_dpt_section"
/*****************************************************************************/ /*****************************************************************************/
/***************************** Private prototypes ****************************/ /***************************** Private prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
@ -99,6 +101,7 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
static void Rec_ShowMyCrsRecordUpdated (void); static void Rec_ShowMyCrsRecordUpdated (void);
static bool Rec_CheckIfICanEditField (Rec_VisibilityRecordFields_t Visibility); static bool Rec_CheckIfICanEditField (Rec_VisibilityRecordFields_t Visibility);
static void Rec_ShowFormMySharedRecord (void);
static void Rec_PutIconsCommands (void); static void Rec_PutIconsCommands (void);
static void Rec_PutParamsWorks (void); static void Rec_PutParamsWorks (void);
static void Rec_PutParamsStudent (void); static void Rec_PutParamsStudent (void);
@ -169,7 +172,8 @@ static void Rec_WriteLinkToDataProtectionClause (void);
static void Rec_GetUsrExtraDataFromRecordForm (struct UsrData *UsrDat); static void Rec_GetUsrExtraDataFromRecordForm (struct UsrData *UsrDat);
static void Rec_GetUsrCommentsFromForm (struct UsrData *UsrDat); static void Rec_GetUsrCommentsFromForm (struct UsrData *UsrDat);
static void Rec_PutLinkToChangeMyInsCtrDpt (void);
static void Rec_ShowFormMyInsCtrDpt (void);
/*****************************************************************************/ /*****************************************************************************/
/*************** Create, edit and remove fields of records *******************/ /*************** Create, edit and remove fields of records *******************/
@ -2050,7 +2054,7 @@ void Rec_AllocMemFieldsRecordsCrs (void)
NumField++) NumField++)
if (Rec_CheckIfICanEditField (Gbl.CurrentCrs.Records.LstFields.Lst[NumField].Visibility)) if (Rec_CheckIfICanEditField (Gbl.CurrentCrs.Records.LstFields.Lst[NumField].Visibility))
/* Allocate memory for the texts of the fields */ /* Allocate memory for the texts of the fields */
if ((Gbl.CurrentCrs.Records.LstFields.Lst[NumField].Text = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Gbl.CurrentCrs.Records.LstFields.Lst[NumField].Text = (char *) malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store records of the course."); Lay_ShowErrorAndExit ("Not enough memory to store records of the course.");
} }
@ -2101,24 +2105,23 @@ void Rec_ShowFormSignUpInCrsWithMySharedRecord (void)
/***************** Show form to edit my shared record card *******************/ /***************** Show form to edit my shared record card *******************/
/*****************************************************************************/ /*****************************************************************************/
void Rec_ShowFormMySharedRecord (void) static void Rec_ShowFormMySharedRecord (void)
{ {
extern const char *Txt_Please_fill_in_your_record_card_including_your_country_nationality;
extern const char *Txt_Please_fill_in_your_record_card_including_your_sex;
extern const char *Txt_Please_fill_in_your_record_card_including_your_name; extern const char *Txt_Please_fill_in_your_record_card_including_your_name;
extern const char *Txt_Please_fill_in_your_record_card_including_your_sex;
extern const char *Txt_Please_fill_in_your_record_card_including_your_country_nationality;
/***** If user has no sex, name and surname... *****/ /***** If user has no name and surname, sex... *****/
if (Gbl.Usrs.Me.UsrDat.CtyCod < 0) if (!Gbl.Usrs.Me.UsrDat.FirstName[0] ||
Ale_ShowAlert (Ale_WARNING,Txt_Please_fill_in_your_record_card_including_your_country_nationality); !Gbl.Usrs.Me.UsrDat.Surname1[0])
Ale_ShowAlert (Ale_WARNING,Txt_Please_fill_in_your_record_card_including_your_name);
else if (Gbl.Usrs.Me.UsrDat.Sex == Usr_SEX_UNKNOWN) else if (Gbl.Usrs.Me.UsrDat.Sex == Usr_SEX_UNKNOWN)
Ale_ShowAlert (Ale_WARNING,Txt_Please_fill_in_your_record_card_including_your_sex); Ale_ShowAlert (Ale_WARNING,Txt_Please_fill_in_your_record_card_including_your_sex);
else if (!Gbl.Usrs.Me.UsrDat.FirstName[0] || else if (Gbl.Usrs.Me.UsrDat.CtyCod < 0)
!Gbl.Usrs.Me.UsrDat.Surname1[0]) Ale_ShowAlert (Ale_WARNING,Txt_Please_fill_in_your_record_card_including_your_country_nationality);
Ale_ShowAlert (Ale_WARNING,Txt_Please_fill_in_your_record_card_including_your_name);
/***** My record *****/ /***** My record *****/
Rec_ShowSharedUsrRecord (Rec_SHA_MY_RECORD_FORM,&Gbl.Usrs.Me.UsrDat,NULL); Rec_ShowSharedUsrRecord (Rec_SHA_MY_RECORD_FORM,&Gbl.Usrs.Me.UsrDat,NULL);
Rec_WriteLinkToDataProtectionClause ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -2247,7 +2250,7 @@ void Rec_ShowSharedUsrRecord (Rec_SharedRecordViewType_t TypeOfView,
TeacherInCurrentCrs = UsrDat->Roles.InCurrentCrs.Role == Rol_NET || TeacherInCurrentCrs = UsrDat->Roles.InCurrentCrs.Role == Rol_NET ||
UsrDat->Roles.InCurrentCrs.Role == Rol_TCH; UsrDat->Roles.InCurrentCrs.Role == Rol_TCH;
TeacherInAnyCrs = UsrDat->Roles.InCrss & ((1 << Rol_NET) | TeacherInAnyCrs = UsrDat->Roles.InCrss & ((1 << Rol_NET) |
(1 << Rol_TCH)); (1 << Rol_TCH));
ShowAddressRows = (TypeOfView == Rec_SHA_MY_RECORD_FORM || ShowAddressRows = (TypeOfView == Rec_SHA_MY_RECORD_FORM ||
TypeOfView == Rec_SHA_MY_RECORD_CHECK || TypeOfView == Rec_SHA_MY_RECORD_CHECK ||
@ -2256,8 +2259,7 @@ void Rec_ShowSharedUsrRecord (Rec_SharedRecordViewType_t TypeOfView,
IAmLoggedAsTeacherOrSysAdm && IAmLoggedAsTeacherOrSysAdm &&
StudentInCurrentCrs)); // He/she is a student in the current course StudentInCurrentCrs)); // He/she is a student in the current course
Rol_GetRolesInAllCrssIfNotYetGot (UsrDat); // Get user's roles if not got Rol_GetRolesInAllCrssIfNotYetGot (UsrDat); // Get user's roles if not got
ShowTeacherRows = (((TypeOfView == Rec_SHA_MY_RECORD_FORM || ShowTeacherRows = (((TypeOfView == Rec_SHA_MY_RECORD_CHECK) &&
TypeOfView == Rec_SHA_MY_RECORD_CHECK) &&
TeacherInAnyCrs) || // He/she (me, really) is a teacher in any course TeacherInAnyCrs) || // He/she (me, really) is a teacher in any course
((TypeOfView == Rec_SHA_RECORD_LIST || ((TypeOfView == Rec_SHA_RECORD_LIST ||
TypeOfView == Rec_SHA_RECORD_PRINT) && TypeOfView == Rec_SHA_RECORD_PRINT) &&
@ -2451,7 +2453,7 @@ void Rec_ShowSharedUsrRecord (Rec_SharedRecordViewType_t TypeOfView,
} }
/***** Teacher's rows *****/ /***** Teacher's rows *****/
if (ShowTeacherRows && TypeOfView != Rec_SHA_MY_RECORD_FORM) if (ShowTeacherRows)
Rec_ShowTeacherRows (UsrDat,&Ins,ShowData,ClassForm); Rec_ShowTeacherRows (UsrDat,&Ins,ShowData,ClassForm);
Tbl_EndTable (); Tbl_EndTable ();
@ -2503,15 +2505,6 @@ void Rec_ShowSharedUsrRecord (Rec_SharedRecordViewType_t TypeOfView,
/***** End table and box *****/ /***** End table and box *****/
Box_EndBoxTable (); Box_EndBoxTable ();
/***** Table with teacher rows *****/
if (ShowTeacherRows && TypeOfView == Rec_SHA_MY_RECORD_FORM)
{
Box_StartBoxTable (StrRecordWidth,NULL,Rec_PutLinkToChangeMyInsCtrDpt,
NULL,Box_NOT_CLOSABLE,2);
Rec_ShowTeacherRows (UsrDat,&Ins,ShowData,ClassForm);
Box_EndBoxTable ();
}
} }
/*****************************************************************************/ /*****************************************************************************/
@ -2550,7 +2543,7 @@ static void Rec_PutIconsCommands (void)
if (ItsMe) if (ItsMe)
/***** Button to edit my record card *****/ /***** Button to edit my record card *****/
Lay_PutContextualLink (ActReqEdiRecCom,NULL,NULL, Lay_PutContextualLink (ActReqEdiRecSha,NULL,NULL,
"edit64x64.png", "edit64x64.png",
Txt_Edit_my_personal_data,NULL, Txt_Edit_my_personal_data,NULL,
NULL); NULL);
@ -3953,18 +3946,19 @@ static void Rec_GetUsrCommentsFromForm (struct UsrData *UsrDat)
} }
/*****************************************************************************/ /*****************************************************************************/
/*** Put a link to the action to edit my institution, centre, department... **/ /**** Show my shared record and a form to edit my institution, centre... *****/
/*****************************************************************************/ /*****************************************************************************/
static void Rec_PutLinkToChangeMyInsCtrDpt (void) void Rec_ShowMySharedRecordAndMyInsCtrDpt (void)
{ {
extern const char *Txt_Edit_my_institution; /***** My shared record *****/
Rec_ShowFormMySharedRecord ();
/***** Button to edit my institution *****/ /***** My institution, centre and department *****/
Lay_PutContextualLink (ActReqEdiMyIns,NULL,NULL, Rec_ShowFormMyInsCtrDpt ();
"edit64x64.png",
Txt_Edit_my_institution,NULL, /***** Data protection clause *****/
NULL); Rec_WriteLinkToDataProtectionClause ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -3973,7 +3967,7 @@ static void Rec_PutLinkToChangeMyInsCtrDpt (void)
#define COL2_WIDTH 600 #define COL2_WIDTH 600
void Rec_ShowFormMyInsCtrDpt (void) static void Rec_ShowFormMyInsCtrDpt (void)
{ {
extern const char *Hlp_PROFILE_Institution; extern const char *Hlp_PROFILE_Institution;
extern const char *The_ClassForm[The_NUM_THEMES]; extern const char *The_ClassForm[The_NUM_THEMES];
@ -3996,12 +3990,15 @@ void Rec_ShowFormMyInsCtrDpt (void)
unsigned NumCtr; unsigned NumCtr;
bool IAmATeacher; bool IAmATeacher;
/***** Start section *****/
Lay_StartSection (Rec_MY_INS_CTR_DPT_ID);
/***** Get my roles if not yet got *****/ /***** Get my roles if not yet got *****/
Rol_GetRolesInAllCrssIfNotYetGot (&Gbl.Usrs.Me.UsrDat); Rol_GetRolesInAllCrssIfNotYetGot (&Gbl.Usrs.Me.UsrDat);
/***** Check if I am a teacher *****/ /***** Check if I am a teacher *****/
IAmATeacher = (Gbl.Usrs.Me.UsrDat.Roles.InCrss & ((1 << Rol_NET) | // I am a non-editing teacher... IAmATeacher = (Gbl.Usrs.Me.UsrDat.Roles.InCrss & ((1 << Rol_NET) | // I am a non-editing teacher...
(1 << Rol_TCH))); // ...or a teacher in any course (1 << Rol_TCH))); // ...or a teacher in any course
/***** If there is no country, institution, centre or department *****/ /***** If there is no country, institution, centre or department *****/
if (Gbl.Usrs.Me.UsrDat.InsCtyCod < 0) if (Gbl.Usrs.Me.UsrDat.InsCtyCod < 0)
@ -4039,7 +4036,8 @@ void Rec_ShowFormMyInsCtrDpt (void)
} }
/* Start form to select the country of my institution */ /* Start form to select the country of my institution */
Act_FormGoToStart (ActChgCtyMyIns); // Act_FormGoToStart (ActChgCtyMyIns);
Act_FormStartAnchor (ActChgCtyMyIns,Rec_MY_INS_CTR_DPT_ID);
fprintf (Gbl.F.Out,"<select id=\"OthCtyCod\" name=\"OthCtyCod\"" fprintf (Gbl.F.Out,"<select id=\"OthCtyCod\" name=\"OthCtyCod\""
" style=\"width:500px;\"" " style=\"width:500px;\""
" onchange=\"document.getElementById('%s').submit();\">" " onchange=\"document.getElementById('%s').submit();\">"
@ -4079,7 +4077,8 @@ void Rec_ShowFormMyInsCtrDpt (void)
Ins_GetListInstitutions (Gbl.Usrs.Me.UsrDat.InsCtyCod,Ins_GET_BASIC_DATA); Ins_GetListInstitutions (Gbl.Usrs.Me.UsrDat.InsCtyCod,Ins_GET_BASIC_DATA);
/* Start form to select institution */ /* Start form to select institution */
Act_FormGoToStart (ActChgMyIns); // Act_FormGoToStart (ActChgMyIns);
Act_FormStartAnchor (ActChgMyIns,Rec_MY_INS_CTR_DPT_ID);
fprintf (Gbl.F.Out,"<select id=\"OthInsCod\" name=\"OthInsCod\"" fprintf (Gbl.F.Out,"<select id=\"OthInsCod\" name=\"OthInsCod\""
" style=\"width:500px;\"" " style=\"width:500px;\""
" onchange=\"document.getElementById('%s').submit();\">" " onchange=\"document.getElementById('%s').submit();\">"
@ -4126,7 +4125,8 @@ void Rec_ShowFormMyInsCtrDpt (void)
Ctr_GetListCentres (Gbl.Usrs.Me.UsrDat.InsCod); Ctr_GetListCentres (Gbl.Usrs.Me.UsrDat.InsCod);
/* Start form to select centre */ /* Start form to select centre */
Act_FormGoToStart (ActChgMyCtr); // Act_FormGoToStart (ActChgMyCtr);
Act_FormStartAnchor (ActChgMyCtr,Rec_MY_INS_CTR_DPT_ID);
fprintf (Gbl.F.Out,"<select id=\"OthCtrCod\" name=\"OthCtrCod\"" fprintf (Gbl.F.Out,"<select id=\"OthCtrCod\" name=\"OthCtrCod\""
" style=\"width:500px;\"" " style=\"width:500px;\""
" onchange=\"document.getElementById('%s').submit();\">" " onchange=\"document.getElementById('%s').submit();\">"
@ -4164,7 +4164,8 @@ void Rec_ShowFormMyInsCtrDpt (void)
"<td class=\"LEFT_MIDDLE\" style=\"width:%upx;\">", "<td class=\"LEFT_MIDDLE\" style=\"width:%upx;\">",
Dpt_PARAM_DPT_COD_NAME,ClassForm,Txt_Department, Dpt_PARAM_DPT_COD_NAME,ClassForm,Txt_Department,
COL2_WIDTH); COL2_WIDTH);
Act_FormGoToStart (ActChgMyDpt); // Act_FormGoToStart (ActChgMyDpt);
Act_FormStartAnchor (ActChgMyDpt,Rec_MY_INS_CTR_DPT_ID);
Dpt_WriteSelectorDepartment (Gbl.Usrs.Me.UsrDat.InsCod, // Departments in my institution Dpt_WriteSelectorDepartment (Gbl.Usrs.Me.UsrDat.InsCod, // Departments in my institution
Gbl.Usrs.Me.UsrDat.Tch.DptCod, // Selected department Gbl.Usrs.Me.UsrDat.Tch.DptCod, // Selected department
500, // Width in pixels 500, // Width in pixels
@ -4185,7 +4186,8 @@ void Rec_ShowFormMyInsCtrDpt (void)
"<td class=\"LEFT_MIDDLE\" style=\"width:%upx;\">", "<td class=\"LEFT_MIDDLE\" style=\"width:%upx;\">",
ClassForm,Txt_Office, ClassForm,Txt_Office,
COL2_WIDTH); COL2_WIDTH);
Act_FormGoToStart (ActChgMyOff); // Act_FormGoToStart (ActChgMyOff);
Act_FormStartAnchor (ActChgMyOff,Rec_MY_INS_CTR_DPT_ID);
fprintf (Gbl.F.Out,"<input type=\"text\" id=\"Office\" name=\"Office\"" fprintf (Gbl.F.Out,"<input type=\"text\" id=\"Office\" name=\"Office\""
" maxlength=\"%u\" value=\"%s\"" " maxlength=\"%u\" value=\"%s\""
" style=\"width:500px;\"" " style=\"width:500px;\""
@ -4207,7 +4209,8 @@ void Rec_ShowFormMyInsCtrDpt (void)
"<td class=\"LEFT_MIDDLE\" style=\"width:%upx;\">", "<td class=\"LEFT_MIDDLE\" style=\"width:%upx;\">",
ClassForm,Txt_Phone, ClassForm,Txt_Phone,
COL2_WIDTH); COL2_WIDTH);
Act_FormGoToStart (ActChgMyOffPho); // Act_FormGoToStart (ActChgMyOffPho);
Act_FormStartAnchor (ActChgMyOffPho,Rec_MY_INS_CTR_DPT_ID);
fprintf (Gbl.F.Out,"<input type=\"tel\"" fprintf (Gbl.F.Out,"<input type=\"tel\""
" id=\"OfficePhone\" name=\"OfficePhone\"" " id=\"OfficePhone\" name=\"OfficePhone\""
" maxlength=\"%u\" value=\"%s\"" " maxlength=\"%u\" value=\"%s\""
@ -4223,6 +4226,9 @@ void Rec_ShowFormMyInsCtrDpt (void)
/***** End table and box *****/ /***** End table and box *****/
Box_EndBoxTable (); Box_EndBoxTable ();
/***** End section *****/
Lay_EndSection ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -4255,7 +4261,7 @@ void Rec_ChgCountryOfMyInstitution (void)
Enr_UpdateInstitutionCentreDepartment (); Enr_UpdateInstitutionCentreDepartment ();
/***** Show form again *****/ /***** Show form again *****/
Rec_ShowFormMyInsCtrDpt (); Rec_ShowMySharedRecordAndMyInsCtrDpt ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -4293,7 +4299,7 @@ void Rec_UpdateMyInstitution (void)
Enr_UpdateInstitutionCentreDepartment (); Enr_UpdateInstitutionCentreDepartment ();
/***** Show form again *****/ /***** Show form again *****/
Rec_ShowFormMyInsCtrDpt (); Rec_ShowMySharedRecordAndMyInsCtrDpt ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -4326,7 +4332,7 @@ void Rec_UpdateMyCentre (void)
Enr_UpdateInstitutionCentreDepartment (); Enr_UpdateInstitutionCentreDepartment ();
/***** Show form again *****/ /***** Show form again *****/
Rec_ShowFormMyInsCtrDpt (); Rec_ShowMySharedRecordAndMyInsCtrDpt ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -4357,7 +4363,7 @@ void Rec_UpdateMyDepartment (void)
Enr_UpdateInstitutionCentreDepartment (); Enr_UpdateInstitutionCentreDepartment ();
/***** Show form again *****/ /***** Show form again *****/
Rec_ShowFormMyInsCtrDpt (); Rec_ShowMySharedRecordAndMyInsCtrDpt ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -4378,7 +4384,7 @@ void Rec_UpdateMyOffice (void)
DB_QueryUPDATE (Query,"can not update office"); DB_QueryUPDATE (Query,"can not update office");
/***** Show form again *****/ /***** Show form again *****/
Rec_ShowFormMyInsCtrDpt (); Rec_ShowMySharedRecordAndMyInsCtrDpt ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -4399,5 +4405,5 @@ void Rec_UpdateMyOfficePhone (void)
DB_QueryUPDATE (Query,"can not update office phone"); DB_QueryUPDATE (Query,"can not update office phone");
/***** Show form again *****/ /***** Show form again *****/
Rec_ShowFormMyInsCtrDpt (); Rec_ShowMySharedRecordAndMyInsCtrDpt ();
} }

View File

@ -161,7 +161,6 @@ void Rec_AllocMemFieldsRecordsCrs (void);
void Rec_FreeMemFieldsRecordsCrs (void); void Rec_FreeMemFieldsRecordsCrs (void);
void Rec_ShowFormSignUpInCrsWithMySharedRecord (void); void Rec_ShowFormSignUpInCrsWithMySharedRecord (void);
void Rec_ShowFormMySharedRecord (void);
void Rec_ShowFormOtherNewSharedRecord (struct UsrData *UsrDat,Rol_Role_t DefaultRole); void Rec_ShowFormOtherNewSharedRecord (struct UsrData *UsrDat,Rol_Role_t DefaultRole);
void Rec_ShowMySharedRecordUpd (void); void Rec_ShowMySharedRecordUpd (void);
void Rec_ShowSharedRecordUnmodifiable (struct UsrData *UsrDat); void Rec_ShowSharedRecordUnmodifiable (struct UsrData *UsrDat);
@ -173,7 +172,7 @@ void Rec_UpdateMyRecord (void);
Rol_Role_t Rec_GetRoleFromRecordForm (void); Rol_Role_t Rec_GetRoleFromRecordForm (void);
void Rec_GetUsrNameFromRecordForm (struct UsrData *UsrDat); void Rec_GetUsrNameFromRecordForm (struct UsrData *UsrDat);
void Rec_ShowFormMyInsCtrDpt (void); void Rec_ShowMySharedRecordAndMyInsCtrDpt (void);
void Rec_ChgCountryOfMyInstitution (void); void Rec_ChgCountryOfMyInstitution (void);
void Rec_UpdateMyInstitution (void); void Rec_UpdateMyInstitution (void);
void Rec_UpdateMyCentre (void); void Rec_UpdateMyCentre (void);

View File

@ -2296,11 +2296,11 @@ static long Soc_ReceiveSocialPost (void)
Image.Name[0]) // An image is attached Image.Name[0]) // An image is attached
{ {
/***** Allocate space for query *****/ /***** Allocate space for query *****/
if ((Query = malloc (256 + if ((Query = (char *) malloc (256 +
strlen (Content) + strlen (Content) +
Img_BYTES_NAME + Img_BYTES_NAME +
Img_MAX_BYTES_TITLE + Img_MAX_BYTES_TITLE +
Cns_MAX_BYTES_WWW)) == NULL) Cns_MAX_BYTES_WWW)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store database query."); Lay_ShowErrorAndExit ("Not enough memory to store database query.");
/***** Check if image is received and processed *****/ /***** Check if image is received and processed *****/
@ -3000,11 +3000,11 @@ static long Soc_ReceiveComment (void)
Image.Name[0]) // An image is attached Image.Name[0]) // An image is attached
{ {
/***** Allocate space for query *****/ /***** Allocate space for query *****/
if ((Query = malloc (256 + if ((Query = (char *) malloc (256 +
strlen (Content) + strlen (Content) +
Img_BYTES_NAME + Img_BYTES_NAME +
Img_MAX_BYTES_TITLE + Img_MAX_BYTES_TITLE +
Cns_MAX_BYTES_WWW)) == NULL) Cns_MAX_BYTES_WWW)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store database query."); Lay_ShowErrorAndExit ("Not enough memory to store database query.");
/***** Check if image is received and processed *****/ /***** Check if image is received and processed *****/

View File

@ -2913,7 +2913,7 @@ static bool Svy_AllocateTextChoiceAnswer (struct SurveyQuestion *SvyQst,
unsigned NumAns) unsigned NumAns)
{ {
Svy_FreeTextChoiceAnswer (SvyQst,NumAns); Svy_FreeTextChoiceAnswer (SvyQst,NumAns);
if ((SvyQst->AnsChoice[NumAns].Text = malloc (Svy_MAX_BYTES_ANSWER + 1)) == NULL) if ((SvyQst->AnsChoice[NumAns].Text = (char *) malloc (Svy_MAX_BYTES_ANSWER + 1)) == NULL)
{ {
sprintf (Gbl.Alert.Txt,"Not enough memory to store answer."); sprintf (Gbl.Alert.Txt,"Not enough memory to store answer.");
return false; return false;
@ -3383,7 +3383,7 @@ static void Svy_WriteQstStem (const char *Stem)
/* Convert the stem, that is in HTML, to rigorous HTML */ /* Convert the stem, that is in HTML, to rigorous HTML */
Length = strlen (Stem) * Str_MAX_BYTES_PER_CHAR; Length = strlen (Stem) * Str_MAX_BYTES_PER_CHAR;
if ((HeadingRigorousHTML = malloc (Length + 1)) == NULL) if ((HeadingRigorousHTML = (char *) malloc (Length + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store stem of question."); Lay_ShowErrorAndExit ("Not enough memory to store stem of question.");
Str_Copy (HeadingRigorousHTML,Stem, Str_Copy (HeadingRigorousHTML,Stem,
Length); Length);

View File

@ -1072,7 +1072,7 @@ void Tst_WriteQstStem (const char *Stem,const char *ClassStem)
/***** Convert the stem, that is in HTML, to rigorous HTML *****/ /***** Convert the stem, that is in HTML, to rigorous HTML *****/
StemLength = strlen (Stem) * Str_MAX_BYTES_PER_CHAR; StemLength = strlen (Stem) * Str_MAX_BYTES_PER_CHAR;
if ((StemRigorousHTML = malloc (StemLength + 1)) == NULL) if ((StemRigorousHTML = (char *) malloc (StemLength + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store stem of question."); Lay_ShowErrorAndExit ("Not enough memory to store stem of question.");
Str_Copy (StemRigorousHTML,Stem, Str_Copy (StemRigorousHTML,Stem,
StemLength); StemLength);
@ -1206,7 +1206,7 @@ void Tst_WriteQstFeedback (const char *Feedback,const char *ClassFeedback)
{ {
/***** Convert the feedback, that is in HTML, to rigorous HTML *****/ /***** Convert the feedback, that is in HTML, to rigorous HTML *****/
FeedbackLength = strlen (Feedback) * Str_MAX_BYTES_PER_CHAR; FeedbackLength = strlen (Feedback) * Str_MAX_BYTES_PER_CHAR;
if ((FeedbackRigorousHTML = malloc (FeedbackLength + 1)) == NULL) if ((FeedbackRigorousHTML = (char *) malloc (FeedbackLength + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store stem of question."); Lay_ShowErrorAndExit ("Not enough memory to store stem of question.");
Str_Copy (FeedbackRigorousHTML,Feedback, Str_Copy (FeedbackRigorousHTML,Feedback,
FeedbackLength); FeedbackLength);
@ -3385,7 +3385,7 @@ static void Tst_WriteAnswersEdit (long QstCod)
/* Convert the answer (row[1]), that is in HTML, to rigorous HTML */ /* Convert the answer (row[1]), that is in HTML, to rigorous HTML */
LengthAnswer = strlen (row[1]) * Str_MAX_BYTES_PER_CHAR; LengthAnswer = strlen (row[1]) * Str_MAX_BYTES_PER_CHAR;
if ((Answer = malloc (LengthAnswer + 1)) == NULL) if ((Answer = (char *) malloc (LengthAnswer + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store answer."); Lay_ShowErrorAndExit ("Not enough memory to store answer.");
Str_Copy (Answer,row[1], Str_Copy (Answer,row[1],
LengthAnswer); LengthAnswer);
@ -3399,7 +3399,7 @@ static void Tst_WriteAnswersEdit (long QstCod)
if (row[2][0]) if (row[2][0])
{ {
LengthFeedback = strlen (row[2]) * Str_MAX_BYTES_PER_CHAR; LengthFeedback = strlen (row[2]) * Str_MAX_BYTES_PER_CHAR;
if ((Feedback = malloc (LengthFeedback + 1)) == NULL) if ((Feedback = (char *) malloc (LengthFeedback + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store feedback."); Lay_ShowErrorAndExit ("Not enough memory to store feedback.");
Str_Copy (Feedback,row[2], Str_Copy (Feedback,row[2],
LengthFeedback); LengthFeedback);
@ -4714,7 +4714,7 @@ static bool Tst_GetParamsTst (Tst_ActionToDoWithQuestions_t ActionToDoWithQuesti
Gbl.Test.Tags.All = Par_GetParToBool ("AllTags"); Gbl.Test.Tags.All = Par_GetParToBool ("AllTags");
/* Get the tags */ /* Get the tags */
if ((Gbl.Test.Tags.List = malloc (Tst_MAX_BYTES_TAGS_LIST + 1)) == NULL) if ((Gbl.Test.Tags.List = (char *) malloc (Tst_MAX_BYTES_TAGS_LIST + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store tags."); Lay_ShowErrorAndExit ("Not enough memory to store tags.");
Par_GetParMultiToText ("ChkTag",Gbl.Test.Tags.List,Tst_MAX_BYTES_TAGS_LIST); Par_GetParMultiToText ("ChkTag",Gbl.Test.Tags.List,Tst_MAX_BYTES_TAGS_LIST);
@ -5417,13 +5417,13 @@ int Tst_AllocateTextChoiceAnswer (unsigned NumOpt)
Tst_FreeTextChoiceAnswer (NumOpt); Tst_FreeTextChoiceAnswer (NumOpt);
if ((Gbl.Test.Answer.Options[NumOpt].Text = if ((Gbl.Test.Answer.Options[NumOpt].Text =
malloc (Tst_MAX_BYTES_ANSWER_OR_FEEDBACK + 1)) == NULL) (char *) malloc (Tst_MAX_BYTES_ANSWER_OR_FEEDBACK + 1)) == NULL)
{ {
sprintf (Gbl.Alert.Txt,"Not enough memory to store answer."); sprintf (Gbl.Alert.Txt,"Not enough memory to store answer.");
return 0; return 0;
} }
if ((Gbl.Test.Answer.Options[NumOpt].Feedback = if ((Gbl.Test.Answer.Options[NumOpt].Feedback =
malloc (Tst_MAX_BYTES_ANSWER_OR_FEEDBACK + 1)) == NULL) (char *) malloc (Tst_MAX_BYTES_ANSWER_OR_FEEDBACK + 1)) == NULL)
{ {
sprintf (Gbl.Alert.Txt,"Not enough memory to store feedback."); sprintf (Gbl.Alert.Txt,"Not enough memory to store feedback.");
return 0; return 0;
@ -6506,12 +6506,12 @@ static void Tst_InsertOrUpdateQstIntoDB (void)
char *Query; char *Query;
/***** Allocate space for query *****/ /***** Allocate space for query *****/
if ((Query = malloc (512 + if ((Query = (char *) malloc (512 +
Gbl.Test.Stem.Length + Gbl.Test.Stem.Length +
Gbl.Test.Feedback.Length + Gbl.Test.Feedback.Length +
Img_BYTES_NAME + Img_BYTES_NAME +
Img_MAX_BYTES_TITLE + Img_MAX_BYTES_TITLE +
Cns_MAX_BYTES_WWW)) == NULL) Cns_MAX_BYTES_WWW)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store database query."); Lay_ShowErrorAndExit ("Not enough memory to store database query.");
if (Gbl.Test.QstCod < 0) // It's a new question if (Gbl.Test.QstCod < 0) // It's a new question
@ -6618,11 +6618,11 @@ static void Tst_InsertAnswersIntoDB (void)
unsigned i; unsigned i;
/***** Allocate space for query *****/ /***** Allocate space for query *****/
if ((Query = malloc (256 + if ((Query = (char *) malloc (256 +
Tst_MAX_BYTES_ANSWER_OR_FEEDBACK * 2 + Tst_MAX_BYTES_ANSWER_OR_FEEDBACK * 2 +
Img_BYTES_NAME + Img_BYTES_NAME +
Img_MAX_BYTES_TITLE + Img_MAX_BYTES_TITLE +
Cns_MAX_BYTES_WWW)) == NULL) Cns_MAX_BYTES_WWW)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store database query."); Lay_ShowErrorAndExit ("Not enough memory to store database query.");
/***** Insert answers in the answers table *****/ /***** Insert answers in the answers table *****/

View File

@ -460,7 +460,7 @@ static void TsI_ReadQuestionsFromXMLFileAndStoreInDB (const char *FileNameXML)
fseek (Gbl.Test.XML.FileXML,0L,SEEK_SET); fseek (Gbl.Test.XML.FileXML,0L,SEEK_SET);
/***** Allocate memory for XML buffer *****/ /***** Allocate memory for XML buffer *****/
if ((XMLBuffer = malloc (FileSize + 1)) == NULL) if ((XMLBuffer = (char *) malloc (FileSize + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory for XML buffer."); Lay_ShowErrorAndExit ("Not enough memory for XML buffer.");
else else
{ {
@ -724,7 +724,7 @@ static bool TsI_CheckIfQuestionExistsInDB (void)
/***** Check if stem exists *****/ /***** Check if stem exists *****/
/* Allocate space for query */ /* Allocate space for query */
if ((QueryQst = malloc (256 + Gbl.Test.Stem.Length)) == NULL) if ((QueryQst = (char *) malloc (256 + Gbl.Test.Stem.Length)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store database query."); Lay_ShowErrorAndExit ("Not enough memory to store database query.");
/* Make database query */ /* Make database query */
@ -1126,7 +1126,7 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem,
/* Convert the answer, that is in HTML, to rigorous HTML */ /* Convert the answer, that is in HTML, to rigorous HTML */
AnswerTextLength = strlen (Gbl.Test.Answer.Options[NumOpt].Text) * AnswerTextLength = strlen (Gbl.Test.Answer.Options[NumOpt].Text) *
Str_MAX_BYTES_PER_CHAR; Str_MAX_BYTES_PER_CHAR;
if ((AnswerText = malloc (AnswerTextLength + 1)) == NULL) if ((AnswerText = (char *) malloc (AnswerTextLength + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store answer."); Lay_ShowErrorAndExit ("Not enough memory to store answer.");
Str_Copy (AnswerText,Gbl.Test.Answer.Options[NumOpt].Text, Str_Copy (AnswerText,Gbl.Test.Answer.Options[NumOpt].Text,
AnswerTextLength); AnswerTextLength);
@ -1141,7 +1141,7 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem,
{ {
AnswerFeedbackLength = strlen (Gbl.Test.Answer.Options[NumOpt].Feedback) * AnswerFeedbackLength = strlen (Gbl.Test.Answer.Options[NumOpt].Feedback) *
Str_MAX_BYTES_PER_CHAR; Str_MAX_BYTES_PER_CHAR;
if ((AnswerFeedback = malloc (AnswerFeedbackLength + 1)) == NULL) if ((AnswerFeedback = (char *) malloc (AnswerFeedbackLength + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store feedback."); Lay_ShowErrorAndExit ("Not enough memory to store feedback.");
Str_Copy (AnswerFeedback, Str_Copy (AnswerFeedback,
Gbl.Test.Answer.Options[NumOpt].Feedback, Gbl.Test.Answer.Options[NumOpt].Feedback,

View File

@ -20589,7 +20589,7 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
"Conta" "Conta"
#endif #endif
, ,
// 6: ActReqEdiRecCom // 6: ActReqEdiRecSha
#if L==1 #if L==1
"Fitxa" "Fitxa"
#elif L==2 #elif L==2
@ -22615,7 +22615,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
"Criar ou editar minha conta de usu&aacute;rio" "Criar ou editar minha conta de usu&aacute;rio"
#endif #endif
, ,
// 6: ActReqEdiRecCom // 6: ActReqEdiRecSha
#if L==1 #if L==1
"Dades personals, comuns per a totes les assignatures" "Dades personals, comuns per a totes les assignatures"
#elif L==2 #elif L==2

View File

@ -275,7 +275,7 @@ void Usr_InformAboutNumClicksBeforePhoto (void)
void Usr_UsrDataConstructor (struct UsrData *UsrDat) void Usr_UsrDataConstructor (struct UsrData *UsrDat)
{ {
/***** Allocate memory for the comments *****/ /***** Allocate memory for the comments *****/
if ((UsrDat->Comments = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((UsrDat->Comments = (char *) malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store user's data."); Lay_ShowErrorAndExit ("Not enough memory to store user's data.");
/***** Initialize to zero the data of the user *****/ /***** Initialize to zero the data of the user *****/
@ -2471,6 +2471,7 @@ void Usr_WelcomeUsr (void)
/*****************************************************************************/ /*****************************************************************************/
/************ Write birthday string to insert or update database *************/ /************ Write birthday string to insert or update database *************/
/*****************************************************************************/ /*****************************************************************************/
// It can include start and ending apostrophes
void Usr_CreateBirthdayStrDB (const struct UsrData *UsrDat, void Usr_CreateBirthdayStrDB (const struct UsrData *UsrDat,
char BirthdayStrDB[Usr_BIRTHDAY_STR_DB_LENGTH + 1]) char BirthdayStrDB[Usr_BIRTHDAY_STR_DB_LENGTH + 1])
@ -2478,10 +2479,10 @@ void Usr_CreateBirthdayStrDB (const struct UsrData *UsrDat,
if (UsrDat->Birthday.Year == 0 || if (UsrDat->Birthday.Year == 0 ||
UsrDat->Birthday.Month == 0 || UsrDat->Birthday.Month == 0 ||
UsrDat->Birthday.Day == 0) UsrDat->Birthday.Day == 0)
Str_Copy (BirthdayStrDB,"NULL", Str_Copy (BirthdayStrDB,"NULL", // Without apostrophes
Usr_BIRTHDAY_STR_DB_LENGTH); Usr_BIRTHDAY_STR_DB_LENGTH);
else else
sprintf (BirthdayStrDB,"'%04u-%02u-%02u'", sprintf (BirthdayStrDB,"'%04u-%02u-%02u'", // With apostrophes
UsrDat->Birthday.Year, UsrDat->Birthday.Year,
UsrDat->Birthday.Month, UsrDat->Birthday.Month,
UsrDat->Birthday.Day); UsrDat->Birthday.Day);
@ -5698,7 +5699,7 @@ static void Usr_AllocateListOtherRecipients (void)
{ {
if (!Gbl.Usrs.ListOtherRecipients) if (!Gbl.Usrs.ListOtherRecipients)
{ {
if ((Gbl.Usrs.ListOtherRecipients = malloc (Nck_MAX_BYTES_LIST_NICKS + 1)) == NULL) if ((Gbl.Usrs.ListOtherRecipients = (char *) malloc (Nck_MAX_BYTES_LIST_NICKS + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory to store list of recipients."); Lay_ShowErrorAndExit ("Not enough memory to store list of recipients.");
Gbl.Usrs.ListOtherRecipients[0] = '\0'; Gbl.Usrs.ListOtherRecipients[0] = '\0';
} }

View File

@ -63,7 +63,7 @@
// Surname1 +' '+ Surname2 + ','+' ' + FirstName // Surname1 +' '+ Surname2 + ','+' ' + FirstName
// Surname1 +' '+ Surname2 + '<br />' + FirstName // Surname1 +' '+ Surname2 + '<br />' + FirstName
#define Usr_BIRTHDAY_STR_DB_LENGTH (4 + 1 + 2 + 1 + 2) // "'%04u-%02u-%02u'" #define Usr_BIRTHDAY_STR_DB_LENGTH (1 + 4 + 1 + 2 + 1 + 2 + 1) // "'%04u-%02u-%02u'"
#define Usr_MAX_CHARS_ADDRESS (128 - 1) // 127 #define Usr_MAX_CHARS_ADDRESS (128 - 1) // 127
#define Usr_MAX_BYTES_ADDRESS ((Usr_MAX_CHARS_ADDRESS + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 #define Usr_MAX_BYTES_ADDRESS ((Usr_MAX_CHARS_ADDRESS + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047

View File

@ -178,7 +178,7 @@ static void XML_GetElement (struct XMLElement *ParentElem)
/* Copy content */ /* Copy content */
if (ContentLength) if (ContentLength)
{ {
if ((ParentElem->Content = malloc (ContentLength + 1)) == NULL) if ((ParentElem->Content = (char *) malloc (ContentLength + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory."); Lay_ShowErrorAndExit ("Not enough memory.");
strncpy (ParentElem->Content,StartContent,ContentLength); strncpy (ParentElem->Content,StartContent,ContentLength);
ParentElem->Content[ContentLength] = '\0'; ParentElem->Content[ContentLength] = '\0';
@ -215,7 +215,7 @@ static void XML_GetElement (struct XMLElement *ParentElem)
/***** Get child tag name *****/ /***** Get child tag name *****/
ChildElem->TagNameLength = strcspn (Gbl.XMLPtr,">/ \t"); ChildElem->TagNameLength = strcspn (Gbl.XMLPtr,">/ \t");
if ((ChildElem->TagName = malloc (ChildElem->TagNameLength + 1)) == NULL) if ((ChildElem->TagName = (char *) malloc (ChildElem->TagNameLength + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory."); Lay_ShowErrorAndExit ("Not enough memory.");
strncpy (ChildElem->TagName,Gbl.XMLPtr,ChildElem->TagNameLength); strncpy (ChildElem->TagName,Gbl.XMLPtr,ChildElem->TagNameLength);
ChildElem->TagName[ChildElem->TagNameLength] = '\0'; ChildElem->TagName[ChildElem->TagNameLength] = '\0';
@ -335,7 +335,7 @@ static void XML_GetAttributes (struct XMLElement *Elem)
/***** Get attribute name *****/ /***** Get attribute name *****/
Attribute->AttributeNameLength = strcspn (Gbl.XMLPtr,"="); Attribute->AttributeNameLength = strcspn (Gbl.XMLPtr,"=");
if ((Attribute->AttributeName = malloc (Attribute->AttributeNameLength + 1)) == NULL) if ((Attribute->AttributeName = (char *) malloc (Attribute->AttributeNameLength + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory."); Lay_ShowErrorAndExit ("Not enough memory.");
strncpy (Attribute->AttributeName,Gbl.XMLPtr,Attribute->AttributeNameLength); strncpy (Attribute->AttributeName,Gbl.XMLPtr,Attribute->AttributeNameLength);
Attribute->AttributeName[Attribute->AttributeNameLength] = '\0'; Attribute->AttributeName[Attribute->AttributeNameLength] = '\0';
@ -365,7 +365,7 @@ static void XML_GetAttributes (struct XMLElement *Elem)
Lay_ShowErrorAndExit (Gbl.Alert.Txt); Lay_ShowErrorAndExit (Gbl.Alert.Txt);
} }
if ((Attribute->Content = malloc (Attribute->ContentLength + 1)) == NULL) if ((Attribute->Content = (char *) malloc (Attribute->ContentLength + 1)) == NULL)
Lay_ShowErrorAndExit ("Not enough memory."); Lay_ShowErrorAndExit ("Not enough memory.");
strncpy (Attribute->Content,Gbl.XMLPtr,Attribute->ContentLength); strncpy (Attribute->Content,Gbl.XMLPtr,Attribute->ContentLength);
Attribute->Content[Attribute->ContentLength] = '\0'; Attribute->Content[Attribute->ContentLength] = '\0';