From e774a9c18e182afbdd5db45d26d7884decf4ec93 Mon Sep 17 00:00:00 2001 From: acanas Date: Fri, 6 Oct 2023 10:55:13 +0200 Subject: [PATCH] Version 23.28: Oct 06, 2023 New file swad_constant.c. --- Makefile | 8 +- html/api/index.html | 571 +- html/author/index.html | 4 +- html/changelog/index.html | 17677 +++++++++++++--- html/database/index.html | 3013 +-- html/install/index.html | 527 +- html/paper/index.html | 133 +- html/presentation/index.html | 29 +- html/roadmap/index.html | 10 + .../img/lineas-codigo-modulo-principal.png | Bin 40119 -> 286669 bytes html/source/index.html | 18 +- swad_API.c | 16 +- swad_banner.c | 61 +- swad_banner.h | 10 +- swad_browser.c | 2 +- swad_building.c | 66 +- swad_building.h | 11 +- swad_call_for_exam.c | 4 +- swad_call_for_exam.h | 2 +- swad_center.c | 63 +- swad_center_database.c | 4 +- swad_center_database.h | 2 +- swad_changelog.h | 5 +- swad_connected.c | 2 +- swad_constant.h | 7 + swad_course.c | 66 +- swad_course_database.c | 8 +- swad_course_database.h | 4 +- swad_database.c | 42 +- swad_degree.c | 67 +- swad_degree.h | 2 +- swad_degree_database.c | 6 +- swad_degree_database.h | 4 +- swad_department.c | 63 +- swad_department.h | 4 +- swad_global.h | 4 +- swad_group.h | 4 +- swad_hierarchy_config.c | 4 +- swad_hierarchy_type.h | 10 +- swad_holiday.h | 2 +- swad_institution.c | 77 +- swad_institution.h | 2 +- swad_institution_database.c | 8 +- swad_institution_database.h | 4 +- swad_link.c | 63 +- swad_link.h | 10 +- swad_mail.c | 58 +- swad_message.h | 4 +- swad_photo.c | 6 +- swad_place.c | 64 +- swad_place.h | 10 +- swad_report.c | 2 +- swad_room.c | 63 +- swad_room.h | 12 +- swad_test_print.c | 34 +- 55 files changed, 18298 insertions(+), 4654 deletions(-) diff --git a/Makefile b/Makefile index a0bfc026..76a70c7c 100644 --- a/Makefile +++ b/Makefile @@ -38,10 +38,10 @@ OBJS = swad_account.o swad_account_database.o swad_action.o swad_action_list.o \ swad_calendar.o swad_call_for_exam.o swad_call_for_exam_resource.o \ swad_call_for_exam_database.o swad_center.o swad_center_config.o \ swad_center_database.o swad_chat.o swad_chat_database.o swad_config.o \ - swad_connected.o swad_connected_database.o swad_cookie.o \ - swad_cookie_database.o swad_country.o swad_country_config.o \ - swad_country_database.o swad_course.o swad_course_config.o \ - swad_course_database.o swad_cryptography.o \ + swad_connected.o swad_connected_database.o swad_constant.o \ + swad_cookie.o swad_cookie_database.o swad_country.o \ + swad_country_config.o swad_country_database.o swad_course.o \ + swad_course_config.o swad_course_database.o swad_cryptography.o \ swad_database.o swad_date.o swad_degree.o swad_degree_config.o \ swad_degree_database.o swad_degree_type.o swad_department.o \ swad_department_database.o swad_duplicate.o swad_duplicate_database.o \ diff --git a/html/api/index.html b/html/api/index.html index 53fee9f7..8c59e192 100644 --- a/html/api/index.html +++ b/html/api/index.html @@ -14,6 +14,10 @@ { color:#A0A0A0; } +.obsolete + { + color:#660000; + } @@ -50,13 +33,23 @@ img {border-width:0px; border-style:none;}

Presentations

CC BY-SA - Antonio Cañas Vargas, 1999-2018 + Antonio Cañas Vargas, 1999-2021 +
+

+ + SWAD, an Open Learning Management System +

+ +
+

+ + + + Parece que es el fin
+ y solo es el comienzo.
+
+
Nuestro tiempo, Amaral + + + diff --git a/html/source/img/lineas-codigo-modulo-principal.png b/html/source/img/lineas-codigo-modulo-principal.png index db68cf0729bba6fc89bd9d78815f6f05fe51493b..8a410db8402674106c196b99d3d0560ed6f419f6 100644 GIT binary patch literal 286669 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 DD^>6LTn%EntoU&tqyG#{j7ZB*SYyL8x9X3 zjfepGZSeRf1cc#2_8uO*+UoR|rdPoyh8|>G3N#F$uM;K(ZV4Po>DR+x6(ca!ttK-OMS8TH1Cz=--xcX$UDtLsv?9%%8Tpe zfy)@pHb^7>2?yB(Pa-E)SCUg2S!_eJmU0$Jm^FPjEpjqEy~ z&w>xaty`_`onpi>u&eEEd+gLwcZr(zKktP6s)_jT?5CFPeZsr4`H%&kFF?qRsgQb0kUg6hZz-k1I^rrXN?2Vz>IJmM+) z*ZcUJ!lIcVK3YG)0lb)X)CL$x;cc!Klg1sNHGxuWA&ySG( zk%*=(Qxb0Lo-g~+n|xnlM{B~d7Yv*~j-I8ReRzvLG?K%p1?IEBGAai0)*@#s!rz7q zF(p9S^A>Iy_6LZPXc3d7rgmjsN%$+>2{U0ub9xSRAhsLU{bwYeL~~W5wT-6lev9SN zc3D6F<4xoJBiMJxDdRqM4vj=v5G%es5G&s_d|PNIJ0UpQx#0mPK4nG1rs)?a=CKSR80BsB z#C{$eHcmfzhc9L;ioXWe(nV%O5HHDu1nBK}0!V;D*b0s$ln7`YZXaL_LhuG)>P5#n z)5Y?$pE`EM`ZSVvjYSi7sW|2k?Y6YE{D|l5zFj(Q?@XxocED4F7KgMoK>Z`oTfwvm1?EmO`P7~L6Vo{<8J->kgTZA= zuQ?`D8sw=OJMfck97d2u86(*yXMwixhX@q1V(E3fmULHVXZ00q&uTwed}fm6s(-{1x%vH;jt_let+`NoI2Qe8muZXmdo8 zS>Z5Uh@?Z~V(_9vX=iHsL}9n zV+x+MS~4YR$aMF1oz#U3HgpO?m_JiY*j-ORjXty(@NSqb)y&*Gu5-FT=ooBnpSQC< z2EDHda2UC_R;t_&3_0L=az=gu*M-9xlVA}=dQQ%28_zg=ZYc;bbB89D^Sz2SGh>4X zOU&0km(=zf)mmRs;onQcao-s9%&9Arz&My%D2Y8JDtBO0R?gtVVe$t98{*oca$Kxe zbyB7L!jBOvLtn}&psJ)~3ya!jh8LLH+v7wk%gV}7^s`~bOMhfkNuy$$jqEt9b%an1 z<*-dj=y%6K&3HI|Z=jmla>5yNIFZZzDy8M-kKT-o42axaJlH{>)rEd&vOokOc6iRq zNCWz~FAkP+nVV2BYdAjUrRdw;@&2I;e?O29cfet^-&c(xMw=o+!AyWPp8%OC|v|EiElz?8G>Z@hRXL-#TH}t{Q$WHC&KGSHk+7?j@Gc3H1YgQ>&I9 zjoRU#3zv1nxL1yBvMonH!GBit+0x#A=CK+g!o`Sl`gZ1}W&o2e<^pK1-@iLS!xhWX zD$bO?CVeRE@_`%z=CmHR)#M>=abM~}O@8KcKH*Tf8+_E6QD}{okJ0au|D!u`ndMMl zsnAG8Mrfx&HaS+`b+eb8-r03AcQC#8j-tzAvf_RFmw1+GRHtEd0KAUD{=sFy&9$~$ z$t8C$Iha(k45Fqkl%%HO`Jz3Ap9hUDHnro8!)M%e_+6VZ8u%-^=f4~=99uQJhrg3E z*?O$5s2I{_3{c53Hck!d zOLTKN&N7v4HWsdtjP(UU#oG_nB4Ruh6_v2NiRtUBIK$OoZ#i^7zR4Gnh~cqJ@nvDt zSR%i6a^R>LbRQsfEV5&6O$}QXqz@Wrv0RAtQoes50)tuo0yKEW`PJhVn6~^eLe!j7 zwhm$wNy(dOevSuri`w1chdZS@MEEO>9rS3WQ@W|C>b4hEh!Rs%%@=4cmm08E)Rg|v z?PIrzZrcKoj8UVGqGBg>0)&j`WKmcSWa~Y^XM9S+ywCWV*o>JM2WBcz6jV7r{zO8y z`*Uvz5C_N5X@_muaLAp;5cu+t6efTKnHU+HecV*`kLf zb~Nj0=T$5CIc>v>JoDaa7~F(q2*6k6tp9BV4_-BR2n9h8w6(SG-P6yf`PhH*VSV)I z5$vKDZ@u{F_22|@>mmq+gr8t;gNIW-M>{31Lx)pgaW~KYRUj+7Y#6i)cB%eqG zTXNyZV`=TM^$wBodAqHptR3*$z(Cy%zO~6Q4nuHMK^_}OX@D7Nk6`zL#|F*ktKaJ3 zw`7R~6FSFx#K<5*2*l04nA6C9253(JF;_ifF2MffeN2Qbjt4wg#Te0X9E*{xWC+Q^?UPRtHpz7cF!;`)gXAh(y>iYeO0^r zdhz;O`LVrPDQ@-5^*Wg+M{_z~G8X2~$fovXP&abnCL|xdVHxY?>P^KQq!3d~@B5%! zW#}sChXOXOOHBZ4{7#EhU?QrjA21;HvaOxWc&<<*KU8fmcxTM$L6n@S03@ln&4=Jm`E^u4I#>*=jR;*zWKd=6dKe4h8*n%)L?ls+z_8^1>QWW8EK^@qko zAkQ6784~LZo#zZ~w%bf*07CDBO&X15y{MDMC5T4{Tma1mG6L_ zCfjSg($*h7$1h6MAFmWVa#&jaGN^28FI0Lhj;s72F}&X@KPlkbT2bkfb6ub8G!aZ|vz0>E9S_4dFU}2e2j!?KMZJ zg7rJ$a-c`DTXJpwA!7L4bTtH_?&N@cDMa!l7Y~pUDBXi2GI;&5IDirjZcA`mBzK$r z_!>@e11)hdfYD2!GI%#m6!X1_N_ok)=tDYz%=~K<_oP4Vo$2O+?eh+0UzW~z*|N^?MY@IiY(yd{VzsaNv7{flW|g&?j<^;tPak2TMojr z(S9=Vdes{v`hgtt!Q(Dh-$`%g{iqEFf|}O8*gj>EYDH^jKyN>K;X7_+kM~8=xSUjh zn`~K8Ig;rbu6G|vUb9YHAIhETV!`CRUQBWHQMQ$j>LhB?#mVj&~$T zl0ROU-i9NSk7!V`bV}6C_0mBi!)l!UVR=Ho(UN*KZTKX^*i7yB5|8FFsac28<>I+m zSW~((F$Dnp2;)jP`}*M`7QT;vsKgOTq zogaKOWzviA`3{~6t3OuEAW<3Xb<@u)%zqd;%}}3+DvSDgIXcqDwXQC#gOj6XX)=@V zCJQ4@3VdKMf+9JVMK2Cq00VSH_8R~S5HzGBbO3uhJB5GPeo!_7Hd46usV4rgpeUM^ zvgAc`^gtOsEmJo{&^m7QUbhC_>EP-_P3<9|^$|62lBaSvuyuxi`W4*Ay>CHJNjP5! zTp1AvFc@f?4Z&3VZv*Y!M0fyTp#5{l^9zx@Oh!(Q7%WZ!Wlw`8B&W}xgL0YmK}cM? zB_Y00Q@=@^Z7yaDSwo*A+Q79mrjpIByn;OI!|=O>1$OoW3p&(@;VewG!=u7|De775!G27o$1btzx3#H>c-}*tg;o^E zrr_~Szk#8`43GvC#VZKhNMK$4PVCy`BKJJ-x4cweP=51)msu)Yf`qZCwShAq^sX%CZ ztlN0d>y>Bi)Fe6~Eo4MaT)@yst&*)vDu)Y6i*ts$`{5*bzFvsdZ>Qx19(R%|U;-q` zM0RBbn|{=KsaHLu5U-y*=+yiCZ;|kC>HHT7fw2j9bYw451kL~L5A@~^;UmGA{a}^c z@w&B&wc(8})p65i)>eIT$EpgU=L}n``+=>6(Gl~?ahXHk;(d(Q{V$NOFEI{fpCP

KF|gzSuT;rJNcP6qw(|uGZIOWWJXt<& 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 z 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 VzWuT1#UgL<=TY+`*@x_J{eQltev<$I diff --git a/html/source/index.html b/html/source/index.html index 8790faff..b1763da8 100644 --- a/html/source/index.html +++ b/html/source/index.html @@ -40,7 +40,7 @@

Source code

CC BY-SA - Antonio Cañas Vargas, 1999-2018 + Antonio Cañas Vargas, 1999-2022 @@ -77,7 +77,7 @@

"Cuando me preguntan cuándo estará listo un programa, contesto: - depende de cuánto trabaje usted en ello."
+ depende de cuánto trabaje usted en ello."
--Richard Stallman 1

@@ -123,12 +123,12 @@ The reader will probably think "a web application written in C?" Yes, it is not usual, but... ;-) A little more seriously, we could say that we have developed swad-core - following the philosophy of The Handmade Manifesto. + following the philosophy of The Handmade Manifesto.

- SWAD core has about 234 500 lines of source code. - Each executable program (one for each language) has a size of 2.2 MiB + SWAD core has about 323 000 lines of source code. + Each executable program (one for each language) has a size of 2.7 MiB and in most of the possible actions generates the page in few milliseconds.

@@ -139,7 +139,7 @@ All versions are listed in the change log.

- Main swad core code lines + Main swad core code lines

For encryption of passwords @@ -165,7 +165,8 @@

Photo processing module (fotomaton)

- Programmed by Daniel Jesús Calandria Hernández. + Programmed by Daniel Jesús Calandria Hernández + and Jesús Mesa González.

@@ -174,7 +175,8 @@ The first version of this module was developed by former students of Computer Engineering Jesús Álvarez Martín and Alberto Rodrigo Gámiz. Currently it uses a version completely rewritten - by Daniel Jesús Calandria Hernández. + by Daniel Jesús Calandria Hernández + and Jesús Mesa González. The module detects human faces present in the picture, resize the image, and performs various improvements such as checking the clarity of background, noise removal, contrast and saturation improvement, and white balance. diff --git a/swad_API.c b/swad_API.c index cbf0d30f..98e86e75 100644 --- a/swad_API.c +++ b/swad_API.c @@ -872,8 +872,8 @@ int swad__loginBySessionKey (struct soap *soap, loginBySessionKeyOut->userSurname2 = soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1); loginBySessionKeyOut->userPhoto = soap_malloc (soap,Cns_MAX_BYTES_WWW + 1); loginBySessionKeyOut->userBirthday = soap_malloc (soap,Dat_LENGTH_YYYYMMDD + 1); - loginBySessionKeyOut->degreeName = soap_malloc (soap,Hie_MAX_BYTES_FULL_NAME + 1); - loginBySessionKeyOut->courseName = soap_malloc (soap,Hie_MAX_BYTES_FULL_NAME + 1); + loginBySessionKeyOut->degreeName = soap_malloc (soap,Cns_MAX_BYTES_FULL_NAME + 1); + loginBySessionKeyOut->courseName = soap_malloc (soap,Cns_MAX_BYTES_FULL_NAME + 1); /***** Default values returned on error *****/ loginBySessionKeyOut->userCode = -1; @@ -916,7 +916,7 @@ int swad__loginBySessionKey (struct soap *soap, Crs_GetCourseDataByCod (&Gbl.Hierarchy.Node[Hie_CRS]); loginBySessionKeyOut->courseCode = (int) Gbl.Hierarchy.Node[Hie_CRS].HieCod; Str_Copy (loginBySessionKeyOut->courseName,Gbl.Hierarchy.Node[Hie_CRS].FullName, - Hie_MAX_BYTES_FULL_NAME); + Cns_MAX_BYTES_FULL_NAME); /***** Get user code (row[0]) *****/ Gbl.Usrs.Me.UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]); @@ -927,7 +927,7 @@ int swad__loginBySessionKey (struct soap *soap, Deg_GetDegreeDataByCod (&Gbl.Hierarchy.Node[Hie_DEG]); loginBySessionKeyOut->degreeCode = (int) Gbl.Hierarchy.Node[Hie_DEG].HieCod; Str_Copy (loginBySessionKeyOut->degreeName,Gbl.Hierarchy.Node[Hie_DEG].FullName, - Hie_MAX_BYTES_FULL_NAME); + Cns_MAX_BYTES_FULL_NAME); } else UsrFound = false; @@ -1155,13 +1155,13 @@ int swad__getCourses (struct soap *soap, /* Get course short name (row[1]) and course full name (row[2]) */ getCoursesOut->coursesArray.__ptr[NumCrs].courseShortName = - soap_malloc (soap,Hie_MAX_BYTES_SHRT_NAME + 1); + soap_malloc (soap,Cns_MAX_BYTES_SHRT_NAME + 1); getCoursesOut->coursesArray.__ptr[NumCrs].courseFullName = - soap_malloc (soap,Hie_MAX_BYTES_FULL_NAME + 1); + soap_malloc (soap,Cns_MAX_BYTES_FULL_NAME + 1); Str_Copy (getCoursesOut->coursesArray.__ptr[NumCrs].courseShortName, - row[1],Hie_MAX_BYTES_SHRT_NAME); + row[1],Cns_MAX_BYTES_SHRT_NAME); Str_Copy (getCoursesOut->coursesArray.__ptr[NumCrs].courseFullName, - row[2],Hie_MAX_BYTES_FULL_NAME); + row[2],Cns_MAX_BYTES_FULL_NAME); /* Get role (row[3]) */ if (sscanf (row[3],"%u",&Role) != 1) // Role in this course diff --git a/swad_banner.c b/swad_banner.c index bd79ba79..f7bf05f7 100644 --- a/swad_banner.c +++ b/swad_banner.c @@ -441,7 +441,7 @@ static void Ban_ListBannersForEdition (struct Ban_Banners *Banners) HTM_TD_Begin ("class=\"CM\""); Frm_BeginForm (ActRenBanSho); ParCod_PutPar (ParCod_Ban,Banners->BanCodToEdit); - HTM_INPUT_TEXT ("ShortName",Ban_MAX_CHARS_SHRT_NAME,Ban->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Ban->ShrtName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"", The_GetSuffix ()); @@ -452,7 +452,7 @@ static void Ban_ListBannersForEdition (struct Ban_Banners *Banners) HTM_TD_Begin ("class=\"CM\""); Frm_BeginForm (ActRenBanFul); ParCod_PutPar (ParCod_Ban,Banners->BanCodToEdit); - HTM_INPUT_TEXT ("FullName",Ban_MAX_CHARS_FULL_NAME,Ban->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Ban->FullName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"", The_GetSuffix ()); @@ -613,74 +613,65 @@ void Ban_RenameBannerFull (void) static void Ban_RenameBanner (struct Ban_Banner *Ban, Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_banner_X_already_exists; extern const char *Txt_The_banner_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentBanName = NULL; // Initialized to avoid warning - char NewBanName[Ban_MAX_BYTES_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Ban_MAX_BYTES_SHRT_NAME; - CurrentBanName = Ban->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Ban_MAX_BYTES_FULL_NAME; - CurrentBanName = Ban->FullName; - break; - } + [Cns_SHRT_NAME] = Ban->ShrtName, + [Cns_FULL_NAME] = Ban->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get the code of the banner */ Ban->BanCod = ParCod_GetAndCheckPar (ParCod_Ban); /* Get the new name for the banner */ - Par_GetParText (ParName,NewBanName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get banner data from the database *****/ Ban_GetBannerDataByCod (Ban); /***** Check if new name is empty *****/ - if (!NewBanName[0]) + if (!NewName[0]) Ale_CreateAlertYouCanNotLeaveFieldEmpty (); else { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentBanName,NewBanName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If banner was in database... *****/ - if (Ban_DB_CheckIfBannerNameExists (ParName,NewBanName,Ban->BanCod)) + if (Ban_DB_CheckIfBannerNameExists (Cns_ParShrtOrFullName[ShrtOrFullName], + NewName,Ban->BanCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_banner_X_already_exists, - NewBanName); + NewName); else { /* Update the table changing old name by new name */ - Ban_DB_UpdateBanName (Ban->BanCod,FldName,NewBanName); + Ban_DB_UpdateBanName (Ban->BanCod,Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_banner_X_has_been_renamed_as_Y, - CurrentBanName,NewBanName); + CurrentName[ShrtOrFullName],NewName); } } else // The same name /* Write warning message */ Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentBanName); + Txt_The_name_X_has_not_changed,CurrentName[ShrtOrFullName]); } /***** Update name *****/ - Str_Copy (CurrentBanName,NewBanName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } /*****************************************************************************/ @@ -813,7 +804,7 @@ static void Ban_PutFormToCreateBanner (const struct Ban_Banner *Ban) /* Banner short name */ HTM_TD_Begin ("class=\"CM\""); - HTM_INPUT_TEXT ("ShortName",Ban_MAX_CHARS_SHRT_NAME,Ban->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Ban->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -822,7 +813,7 @@ static void Ban_PutFormToCreateBanner (const struct Ban_Banner *Ban) /* Banner full name */ HTM_TD_Begin ("class=\"CM\""); - HTM_INPUT_TEXT ("FullName",Ban_MAX_CHARS_FULL_NAME,Ban->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Ban->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -897,8 +888,8 @@ void Ban_ReceiveFormNewBanner (void) Ban_ResetBanner (Ban); /***** Get parameters from form *****/ - Par_GetParText ("ShortName",Ban->ShrtName,Ban_MAX_BYTES_SHRT_NAME); - Par_GetParText ("FullName" ,Ban->FullName,Ban_MAX_BYTES_FULL_NAME); + Par_GetParText ("ShortName",Ban->ShrtName,Cns_MAX_BYTES_SHRT_NAME); + Par_GetParText ("FullName" ,Ban->FullName,Cns_MAX_BYTES_FULL_NAME); Par_GetParText ("Img" ,Ban->Img ,Ban_MAX_BYTES_IMAGE); Par_GetParText ("WWW" ,Ban->WWW ,Cns_MAX_BYTES_WWW); diff --git a/swad_banner.h b/swad_banner.h index c8d68a14..992f719e 100644 --- a/swad_banner.h +++ b/swad_banner.h @@ -35,12 +35,6 @@ /************************** Public types and constants ***********************/ /*****************************************************************************/ -#define Ban_MAX_CHARS_SHRT_NAME (32 - 1) // 31 -#define Ban_MAX_BYTES_SHRT_NAME ((Ban_MAX_CHARS_SHRT_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511 - -#define Ban_MAX_CHARS_FULL_NAME (128 - 1) // 127 -#define Ban_MAX_BYTES_FULL_NAME ((Ban_MAX_CHARS_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 - #define Ban_MAX_CHARS_IMAGE NAME_MAX // 255 #define Ban_MAX_BYTES_IMAGE Ban_MAX_CHARS_IMAGE // 255 @@ -48,8 +42,8 @@ struct Ban_Banner { long BanCod; HidVis_HiddenOrVisible_t HiddenOrVisible; - char ShrtName[Ban_MAX_BYTES_SHRT_NAME + 1]; - char FullName[Ban_MAX_BYTES_FULL_NAME + 1]; + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; + char FullName[Cns_MAX_BYTES_FULL_NAME + 1]; char Img[Ban_MAX_BYTES_IMAGE + 1]; char WWW[Cns_MAX_BYTES_WWW + 1]; }; diff --git a/swad_browser.c b/swad_browser.c index 538f8eba..67dd7c2a 100644 --- a/swad_browser.c +++ b/swad_browser.c @@ -5282,7 +5282,7 @@ static void Brw_WriteCurrentClipboard (void) struct Prj_Project Prj; struct Usr_Data UsrDat; char TxtClipboardZone[1024 + - Hie_MAX_BYTES_SHRT_NAME + + Cns_MAX_BYTES_SHRT_NAME + Grp_MAX_BYTES_GROUP_TYPE_NAME + Grp_MAX_BYTES_GROUP_NAME + Usr_MAX_BYTES_FULL_NAME + diff --git a/swad_building.c b/swad_building.c index 3d58cbe7..c488adde 100644 --- a/swad_building.c +++ b/swad_building.c @@ -429,7 +429,7 @@ static void Bld_ListBuildingsForEdition (const struct Bld_Buildings *Buildings) HTM_TD_Begin ("class=\"LM\""); Frm_BeginFormAnchor (ActRenBldSho,Anchor); ParCod_PutPar (ParCod_Bld,Building->BldCod); - HTM_INPUT_TEXT ("ShortName",Bld_MAX_CHARS_SHRT_NAME,Building->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Building->ShrtName, HTM_SUBMIT_ON_CHANGE, "size=\"10\" class=\"INPUT_SHORT_NAME INPUT_%s\"", The_GetSuffix ()); @@ -440,7 +440,7 @@ static void Bld_ListBuildingsForEdition (const struct Bld_Buildings *Buildings) HTM_TD_Begin ("class=\"LM\""); Frm_BeginFormAnchor (ActRenBldFul,Anchor); ParCod_PutPar (ParCod_Bld,Building->BldCod); - HTM_INPUT_TEXT ("FullName",Bld_MAX_CHARS_FULL_NAME,Building->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Building->FullName, HTM_SUBMIT_ON_CHANGE, "size=\"20\" class=\"INPUT_FULL_NAME INPUT_%s\"", The_GetSuffix ()); @@ -536,73 +536,67 @@ void Bld_RenameBuildingFull (void) static void Bld_RenameBuilding (Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_building_X_already_exists; extern const char *Txt_The_building_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentClaName = NULL; // Initialized to avoid warning - char NewClaName[Bld_MAX_BYTES_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Bld_MAX_BYTES_SHRT_NAME; - CurrentClaName = Bld_EditingBuilding->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Bld_MAX_BYTES_FULL_NAME; - CurrentClaName = Bld_EditingBuilding->FullName; - break; - } + [Cns_SHRT_NAME] = Bld_EditingBuilding->ShrtName, + [Cns_FULL_NAME] = Bld_EditingBuilding->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get the code of the building */ Bld_EditingBuilding->BldCod = ParCod_GetAndCheckPar (ParCod_Bld); /* Get the new name for the building */ - Par_GetParText (ParName,NewClaName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get from the database the old names of the building *****/ Bld_GetBuildingDataByCod (Bld_EditingBuilding); /***** Check if new name is empty *****/ - if (NewClaName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentClaName,NewClaName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If building was in database... *****/ - if (Bld_DB_CheckIfBuildingNameExists (ParName,NewClaName,Bld_EditingBuilding->BldCod)) + if (Bld_DB_CheckIfBuildingNameExists (Cns_ParShrtOrFullName[ShrtOrFullName], + NewName,Bld_EditingBuilding->BldCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_building_X_already_exists, - NewClaName); + NewName); else { /* Update the table changing old name by new name */ - Bld_DB_UpdateBuildingName (Bld_EditingBuilding->BldCod,FldName,NewClaName); + Bld_DB_UpdateBuildingName (Bld_EditingBuilding->BldCod, + Cns_FldShrtOrFullName[ShrtOrFullName], + NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_building_X_has_been_renamed_as_Y, - CurrentClaName,NewClaName); + CurrentName[ShrtOrFullName],NewName); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentClaName); + Txt_The_name_X_has_not_changed, + CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); /***** Update building name *****/ - Str_Copy (CurrentClaName,NewClaName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } /*****************************************************************************/ @@ -613,7 +607,7 @@ void Bld_ChangeBuildingLocation (void) { extern const char *Txt_The_location_of_the_building_X_has_changed_to_Y; extern const char *Txt_The_location_of_the_building_X_has_not_changed; - char NewLocation[Bld_MAX_BYTES_FULL_NAME + 1]; + char NewLocation[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Building constructor *****/ Bld_EditingBuildingConstructor (); @@ -688,7 +682,7 @@ static void Bld_PutFormToCreateBuilding (void) /***** Building short name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("ShortName",Bld_MAX_CHARS_SHRT_NAME,Bld_EditingBuilding->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Bld_EditingBuilding->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "size=\"10\" class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -697,7 +691,7 @@ static void Bld_PutFormToCreateBuilding (void) /***** Building full name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("FullName",Bld_MAX_CHARS_FULL_NAME,Bld_EditingBuilding->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Bld_EditingBuilding->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "size=\"20\" class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -754,10 +748,10 @@ void Bld_ReceiveFormNewBuilding (void) /***** Get parameters from form *****/ /* Get building short name */ - Par_GetParText ("ShortName",Bld_EditingBuilding->ShrtName,Bld_MAX_BYTES_SHRT_NAME); + Par_GetParText ("ShortName",Bld_EditingBuilding->ShrtName,Cns_MAX_BYTES_SHRT_NAME); /* Get building full name */ - Par_GetParText ("FullName",Bld_EditingBuilding->FullName,Bld_MAX_BYTES_FULL_NAME); + Par_GetParText ("FullName",Bld_EditingBuilding->FullName,Cns_MAX_BYTES_FULL_NAME); /* Get building location */ Par_GetParText ("Location",Bld_EditingBuilding->Location,Bld_MAX_BYTES_LOCATION); diff --git a/swad_building.h b/swad_building.h index 391fbff7..8554bd09 100644 --- a/swad_building.h +++ b/swad_building.h @@ -27,18 +27,13 @@ /********************************** Headers **********************************/ /*****************************************************************************/ +#include "swad_constant.h" #include "swad_string.h" /*****************************************************************************/ /************************** Public types and constants ***********************/ /*****************************************************************************/ -#define Bld_MAX_CHARS_SHRT_NAME (32 - 1) // 31 -#define Bld_MAX_BYTES_SHRT_NAME ((Bld_MAX_CHARS_SHRT_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511 - -#define Bld_MAX_CHARS_FULL_NAME (128 - 1) // 127 -#define Bld_MAX_BYTES_FULL_NAME ((Bld_MAX_CHARS_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 - #define Bld_MAX_CHARS_LOCATION (128 - 1) // 127 #define Bld_MAX_BYTES_LOCATION ((Bld_MAX_CHARS_LOCATION + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 @@ -46,8 +41,8 @@ struct Bld_Building { long BldCod; long InsCod; - char ShrtName[Bld_MAX_BYTES_SHRT_NAME + 1]; - char FullName[Bld_MAX_BYTES_FULL_NAME + 1]; + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; + char FullName[Cns_MAX_BYTES_FULL_NAME + 1]; char Location[Bld_MAX_BYTES_LOCATION + 1]; // Examples: Campus North, City center }; diff --git a/swad_call_for_exam.c b/swad_call_for_exam.c index 45e14706..d904291d 100644 --- a/swad_call_for_exam.c +++ b/swad_call_for_exam.c @@ -172,7 +172,7 @@ static long Cfe_GetParsCallsForExams (struct Cfe_CallsForExams *CallsForExams) ExaCod = ParCod_GetPar (ParCod_Exa); /***** Get the name of the course (it is allowed to be different from the official name of the course) *****/ - Par_GetParText ("CrsName",CallsForExams->CallForExam.CrsFullName,Hie_MAX_BYTES_FULL_NAME); + Par_GetParText ("CrsName",CallsForExams->CallForExam.CrsFullName,Cns_MAX_BYTES_FULL_NAME); // If the parameter is not present or is empty, initialize the string to the full name of the current course if (!CallsForExams->CallForExam.CrsFullName[0]) Str_Copy (CallsForExams->CallForExam.CrsFullName, @@ -1001,7 +1001,7 @@ static void Cfe_ShowCallForExam (struct Cfe_CallsForExams *CallsForExams, HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"", The_GetSuffix ()); if (TypeViewCallForExam == Cfe_FORM_VIEW) - HTM_INPUT_TEXT ("CrsName",Hie_MAX_CHARS_FULL_NAME,CallsForExams->CallForExam.CrsFullName, + HTM_INPUT_TEXT ("CrsName",Cns_MAX_CHARS_FULL_NAME,CallsForExams->CallForExam.CrsFullName, HTM_DONT_SUBMIT_ON_CHANGE, "id=\"CrsName\" size=\"30\" class=\"INPUT_%s\"", The_GetSuffix ()); diff --git a/swad_call_for_exam.h b/swad_call_for_exam.h index 2bdd3d4c..c50482a4 100644 --- a/swad_call_for_exam.h +++ b/swad_call_for_exam.h @@ -62,7 +62,7 @@ struct Cfe_CallForExam { long CrsCod; Cfe_Status_t Status; - char CrsFullName[Hie_MAX_BYTES_FULL_NAME + 1]; + char CrsFullName[Cns_MAX_BYTES_FULL_NAME + 1]; unsigned Year; // Number of year (0 (N.A.), 1, 2, 3, 4, 5, 6) in the degree char Session[Cfe_MAX_BYTES_SESSION + 1]; // Exam session is june, september, etc. struct Dat_Date CallDate; diff --git a/swad_center.c b/swad_center.c index 0bdcea16..d7a00e02 100644 --- a/swad_center.c +++ b/swad_center.c @@ -839,7 +839,7 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places) { Frm_BeginForm (ActRenCtrSho); ParCod_PutPar (ParCod_OthHie,Ctr->HieCod); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Ctr->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Ctr->ShrtName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"", The_GetSuffix ()); @@ -855,7 +855,7 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places) { Frm_BeginForm (ActRenCtrFul); ParCod_PutPar (ParCod_OthHie,Ctr->HieCod); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Ctr->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Ctr->FullName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"", The_GetSuffix ()); @@ -1079,70 +1079,63 @@ void Ctr_RenameCenterFull (void) void Ctr_RenameCenter (struct Hie_Node *Ctr,Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_center_X_already_exists; extern const char *Txt_The_center_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentCtrName = NULL; // Initialized to avoid warning - char NewCtrName[Hie_MAX_BYTES_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Hie_MAX_BYTES_SHRT_NAME; - CurrentCtrName = Ctr->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Hie_MAX_BYTES_FULL_NAME; - CurrentCtrName = Ctr->FullName; - break; - } + [Cns_SHRT_NAME] = Ctr->ShrtName, + [Cns_FULL_NAME] = Ctr->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get the new name for the center */ - Par_GetParText (ParName,NewCtrName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get from the database the old names of the center *****/ Ctr_GetCenterDataByCod (Ctr); /***** Check if new name is empty *****/ - if (!NewCtrName[0]) + if (!NewName[0]) Ale_CreateAlertYouCanNotLeaveFieldEmpty (); else { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentCtrName,NewCtrName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If degree was in database... *****/ - if (Ctr_DB_CheckIfCtrNameExistsInIns (ParName,NewCtrName,Ctr->HieCod, + if (Ctr_DB_CheckIfCtrNameExistsInIns (Cns_ParShrtOrFullName[ShrtOrFullName], + NewName,Ctr->HieCod, Gbl.Hierarchy.Node[Hie_INS].HieCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_center_X_already_exists, - NewCtrName); + NewName); else { /* Update the table changing old name by new name */ - Ctr_DB_UpdateCtrName (Ctr->HieCod,FldName,NewCtrName); + Ctr_DB_UpdateCtrName (Ctr->HieCod, + Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_center_X_has_been_renamed_as_Y, - CurrentCtrName,NewCtrName); + CurrentName[ShrtOrFullName],NewName); /* Change current center name in order to display it properly */ - Str_Copy (CurrentCtrName,NewCtrName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentCtrName); + Txt_The_name_X_has_not_changed, + CurrentName[ShrtOrFullName]); } } @@ -1325,7 +1318,7 @@ static void Ctr_PutFormToCreateCenter (const struct Plc_Places *Places) /***** Center short name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Ctr_EditingCtr->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Ctr_EditingCtr->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -1334,7 +1327,7 @@ static void Ctr_PutFormToCreateCenter (const struct Plc_Places *Places) /***** Center full name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Ctr_EditingCtr->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Ctr_EditingCtr->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -1522,8 +1515,8 @@ static void Ctr_ReceiveFormRequestOrCreateCtr (Hie_Status_t Status) Ctr_EditingCtr->Specific.PlcCod = ParCod_GetAndCheckParMin (ParCod_Plc,0); // 0 (another place) is allowed here /* Get center short name and full name */ - Par_GetParText ("ShortName",Ctr_EditingCtr->ShrtName,Hie_MAX_BYTES_SHRT_NAME); - Par_GetParText ("FullName" ,Ctr_EditingCtr->FullName,Hie_MAX_BYTES_FULL_NAME); + Par_GetParText ("ShortName",Ctr_EditingCtr->ShrtName,Cns_MAX_BYTES_SHRT_NAME); + Par_GetParText ("FullName" ,Ctr_EditingCtr->FullName,Cns_MAX_BYTES_FULL_NAME); /* Get center WWW */ Par_GetParText ("WWW",Ctr_EditingCtr->WWW,Cns_MAX_BYTES_WWW); diff --git a/swad_center_database.c b/swad_center_database.c index fd531439..12b74217 100644 --- a/swad_center_database.c +++ b/swad_center_database.c @@ -260,7 +260,7 @@ long Ctr_DB_GetInsCodOfCenterByCod (long CtrCod) /*************** Get the short name of a center from its code ****************/ /*****************************************************************************/ -void Ctr_DB_GetShortNameOfCenterByCod (long CtrCod,char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]) +void Ctr_DB_GetShortNameOfCenterByCod (long CtrCod,char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]) { /***** Trivial check: center code should be > 0 *****/ if (CtrCod <= 0) @@ -270,7 +270,7 @@ void Ctr_DB_GetShortNameOfCenterByCod (long CtrCod,char ShrtName[Hie_MAX_BYTES_S } /***** Get the short name of a center from database *****/ - DB_QuerySELECTString (ShrtName,Hie_MAX_BYTES_SHRT_NAME, + DB_QuerySELECTString (ShrtName,Cns_MAX_BYTES_SHRT_NAME, "can not get the short name of a center", "SELECT ShortName" " FROM ctr_centers" diff --git a/swad_center_database.h b/swad_center_database.h index 5248ff0b..182fdc99 100644 --- a/swad_center_database.h +++ b/swad_center_database.h @@ -48,7 +48,7 @@ unsigned Ctr_DB_GetCtrsWithPendingDegs (MYSQL_RES **mysql_res); unsigned Ctr_DB_GetCenterDataByCod (MYSQL_RES **mysql_res,long CtrCod); unsigned Ctr_DB_GetCoordByCod (MYSQL_RES **mysql_res,long CtrCod); long Ctr_DB_GetInsCodOfCenterByCod (long CtrCod); -void Ctr_DB_GetShortNameOfCenterByCod (long CtrCod,char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]); +void Ctr_DB_GetShortNameOfCenterByCod (long CtrCod,char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]); unsigned Ctr_DB_GetPhotoAttribution (MYSQL_RES **mysql_res,long CtrCod); bool Ctr_DB_CheckIfCtrNameExistsInIns (const char *FldName,const char *Name, long CtrCod,long InsCod); diff --git a/swad_changelog.h b/swad_changelog.h index 6f04a48f..84c0cdf6 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -632,10 +632,13 @@ TODO: Francisco Javier Fern Me sale este error, no sé si por no recordar yo la sintaxis apropiada para mandar a varios destinatarios. ¿No era así? "can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod') */ -#define Log_PLATFORM_VERSION "SWAD 23.26.1 (2023-10-05)" +#define Log_PLATFORM_VERSION "SWAD 23.28 (2023-10-06)" #define CSS_FILE "swad23.25.2.css" #define JS_FILE "swad22.49.js" /* + Version 23.28: Oct 06, 2023 New file swad_constant.c. + Changes in test and match results when a question is edited. Suggested by Francisco Javier Fernández Baldomero. (335920 lines) + Version 23.27: Oct 06, 2023 Code refactoring. (335951 lines) Version 23.26.1: Oct 05, 2023 Code refactoring. (335938 lines) Version 23.26: Oct 04, 2023 Code refactoring in forum stats. (335965 lines) Version 23.25.4: Oct 03, 2023 Code refactoring. (336036 lines) diff --git a/swad_connected.c b/swad_connected.c index fe4245ee..57e783ea 100644 --- a/swad_connected.c +++ b/swad_connected.c @@ -301,7 +301,7 @@ void Con_ShowConnectedUsrsBelongingToCurrentCrs (void) { extern const char *Txt_Connected_users; extern const char *Txt_from; - char CourseName[Hie_MAX_BYTES_SHRT_NAME + 1]; + char CourseName[Cns_MAX_BYTES_SHRT_NAME + 1]; struct Con_ConnectedUsrs Usrs; /***** Trivial check *****/ diff --git a/swad_constant.h b/swad_constant.h index db3c0e66..5ddbcf62 100644 --- a/swad_constant.h +++ b/swad_constant.h @@ -33,6 +33,12 @@ /***************************** Public constants ******************************/ /*****************************************************************************/ +#define Cns_MAX_CHARS_SHRT_NAME (32 - 1) // 31 +#define Cns_MAX_BYTES_SHRT_NAME ((Cns_MAX_CHARS_SHRT_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511 + +#define Cns_MAX_CHARS_FULL_NAME (128 - 1) // 127 +#define Cns_MAX_BYTES_FULL_NAME ((Cns_MAX_CHARS_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 + #define Cns_MAX_CHARS_WWW (256 - 1) // 255: max. number of chars of a URL #define Cns_MAX_BYTES_WWW Cns_MAX_CHARS_WWW // 255 @@ -106,6 +112,7 @@ typedef enum } Cns_QuietOrVerbose_t; // Related with names of centers, degrees, courses,... +#define Cns_NUM_SHRT_FULL_NAMES 2 typedef enum { Cns_SHRT_NAME, diff --git a/swad_course.c b/swad_course.c index 7856d156..b905386b 100644 --- a/swad_course.c +++ b/swad_course.c @@ -566,8 +566,8 @@ void Crs_WriteSelectorMyCoursesInBreadcrumb (void) long CrsCod; long DegCod; long LastDegCod; - char CrsShortName[Hie_MAX_BYTES_SHRT_NAME + 1]; - char DegShortName[Hie_MAX_BYTES_SHRT_NAME + 1]; + char CrsShortName[Cns_MAX_BYTES_SHRT_NAME + 1]; + char DegShortName[Cns_MAX_BYTES_SHRT_NAME + 1]; /***** Fill the list with the courses I belong to, if not filled *****/ if (Gbl.Usrs.Me.Logged) @@ -1012,7 +1012,7 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year) { Frm_BeginForm (ActRenCrsSho); ParCod_PutPar (ParCod_OthHie,Crs->HieCod); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Crs->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Crs->ShrtName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"", The_GetSuffix ()); @@ -1028,7 +1028,7 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year) { Frm_BeginForm (ActRenCrsFul); ParCod_PutPar (ParCod_OthHie,Crs->HieCod); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Crs->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Crs->FullName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"", The_GetSuffix ()); @@ -1147,7 +1147,7 @@ static void Crs_PutFormToCreateCourse (void) /***** Course short name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Crs_EditingCrs->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Crs_EditingCrs->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -1156,7 +1156,7 @@ static void Crs_PutFormToCreateCourse (void) /***** Course full name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Crs_EditingCrs->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Crs_EditingCrs->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -1341,10 +1341,10 @@ static void Crs_GetParsNewCourse (struct Hie_Node *Crs) Par_GetParText ("InsCrsCod",Crs->InstitutionalCod,Hie_MAX_BYTES_INSTITUTIONAL_COD); /* Get course short name */ - Par_GetParText ("ShortName",Crs->ShrtName,Hie_MAX_BYTES_SHRT_NAME); + Par_GetParText ("ShortName",Crs->ShrtName,Cns_MAX_BYTES_SHRT_NAME); /* Get course full name */ - Par_GetParText ("FullName",Crs->FullName,Hie_MAX_BYTES_FULL_NAME); + Par_GetParText ("FullName",Crs->FullName,Cns_MAX_BYTES_FULL_NAME); } /*****************************************************************************/ @@ -1742,34 +1742,23 @@ void Crs_RenameCourseFull (void) void Crs_RenameCourse (struct Hie_Node *Crs,Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_course_X_already_exists; extern const char *Txt_The_course_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentCrsName = NULL; // Initialized to avoid warning - char NewCrsName[Hie_MAX_BYTES_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Hie_MAX_BYTES_SHRT_NAME; - CurrentCrsName = Crs->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Hie_MAX_BYTES_FULL_NAME; - CurrentCrsName = Crs->FullName; - break; - } + [Cns_SHRT_NAME] = Crs->ShrtName, + [Cns_FULL_NAME] = Crs->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get the new name for the course */ - Par_GetParText (ParName,NewCrsName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get from the database the data of the degree *****/ Crs_GetCourseDataByCod (Crs); @@ -1777,35 +1766,38 @@ void Crs_RenameCourse (struct Hie_Node *Crs,Cns_ShrtOrFullName_t ShrtOrFullName) Err_NoPermissionExit (); /***** Check if new name is empty *****/ - if (NewCrsName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentCrsName,NewCrsName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If course was in database... *****/ - if (Crs_DB_CheckIfCrsNameExistsInYearOfDeg (ParName,NewCrsName,Crs->HieCod, + if (Crs_DB_CheckIfCrsNameExistsInYearOfDeg (Cns_ParShrtOrFullName[ShrtOrFullName], + NewName,Crs->HieCod, Crs->PrtCod,Crs->Specific.Year)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_course_X_already_exists, - NewCrsName); + NewName); else { /* Update the table changing old name by new name */ - Crs_DB_UpdateCrsName (Crs->HieCod,FldName,NewCrsName); + Crs_DB_UpdateCrsName (Crs->HieCod, + Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Create alert to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_course_X_has_been_renamed_as_Y, - CurrentCrsName,NewCrsName); + CurrentName[ShrtOrFullName],NewName); /* Change current course name in order to display it properly */ - Str_Copy (CurrentCrsName,NewCrsName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentCrsName); + Txt_The_name_X_has_not_changed,CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); diff --git a/swad_course_database.c b/swad_course_database.c index 0fdfe368..2b88c08d 100644 --- a/swad_course_database.c +++ b/swad_course_database.c @@ -161,8 +161,8 @@ long Crs_DB_GetCurrentDegCodFromCurrentCrsCod (void) /*****************************************************************************/ void Crs_DB_GetShortNamesByCod (long CrsCod, - char CrsShortName[Hie_MAX_BYTES_SHRT_NAME + 1], - char DegShortName[Hie_MAX_BYTES_SHRT_NAME + 1]) + char CrsShortName[Cns_MAX_BYTES_SHRT_NAME + 1], + char DegShortName[Cns_MAX_BYTES_SHRT_NAME + 1]) { MYSQL_RES *mysql_res; MYSQL_ROW row; @@ -185,8 +185,8 @@ void Crs_DB_GetShortNamesByCod (long CrsCod, { /***** Get the course short name and degree short name *****/ row = mysql_fetch_row (mysql_res); - Str_Copy (CrsShortName,row[0],Hie_MAX_BYTES_SHRT_NAME); - Str_Copy (DegShortName,row[1],Hie_MAX_BYTES_SHRT_NAME); + Str_Copy (CrsShortName,row[0],Cns_MAX_BYTES_SHRT_NAME); + Str_Copy (DegShortName,row[1],Cns_MAX_BYTES_SHRT_NAME); } /***** Free structure that stores the query result *****/ diff --git a/swad_course_database.h b/swad_course_database.h index 82261dd0..69465411 100644 --- a/swad_course_database.h +++ b/swad_course_database.h @@ -43,8 +43,8 @@ unsigned Crs_DB_GetCrssInCurrentDegFull (MYSQL_RES **mysql_res); unsigned Crs_DB_GetCourseDataByCod (MYSQL_RES **mysql_res,long CrsCod); long Crs_DB_GetCurrentDegCodFromCurrentCrsCod (void); void Crs_DB_GetShortNamesByCod (long CrsCod, - char CrsShortName[Hie_MAX_BYTES_SHRT_NAME + 1], - char DegShortName[Hie_MAX_BYTES_SHRT_NAME + 1]); + char CrsShortName[Cns_MAX_BYTES_SHRT_NAME + 1], + char DegShortName[Cns_MAX_BYTES_SHRT_NAME + 1]); bool Crs_DB_CheckIfCrsCodExists (long CrsCod); bool Crs_DB_CheckIfCrsNameExistsInYearOfDeg (const char *FldName,const char *Name,long CrsCod, long DegCod,unsigned Year); diff --git a/swad_database.c b/swad_database.c index c0b5167f..e8e311be 100644 --- a/swad_database.c +++ b/swad_database.c @@ -350,8 +350,8 @@ mysql> DESCRIBE ban_banners; DB_CreateTable ("CREATE TABLE IF NOT EXISTS ban_banners (" "BanCod INT NOT NULL AUTO_INCREMENT," "Hidden ENUM('N','Y') NOT NULL DEFAULT 'N'," - "ShortName VARCHAR(511) NOT NULL," // Ban_MAX_BYTES_SHRT_NAME - "FullName VARCHAR(2047) NOT NULL," // Ban_MAX_BYTES_FULL_NAME + "ShortName VARCHAR(511) NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) NOT NULL," // Cns_MAX_BYTES_FULL_NAME "Img VARCHAR(255) NOT NULL," // Ban_MAX_BYTES_IMAGE "WWW VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW "UNIQUE INDEX(BanCod)," @@ -374,8 +374,8 @@ mysql> DESCRIBE bld_buildings; DB_CreateTable ("CREATE TABLE IF NOT EXISTS bld_buildings (" "BldCod INT NOT NULL AUTO_INCREMENT," "CtrCod INT NOT NULL," - "ShortName VARCHAR(511) NOT NULL," // Bld_MAX_BYTES_SHRT_NAME - "FullName VARCHAR(2047) NOT NULL," // Bld_MAX_BYTES_FULL_NAME + "ShortName VARCHAR(511) NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) NOT NULL," // Cns_MAX_BYTES_FULL_NAME "Location VARCHAR(2047) NOT NULL," // Bld_MAX_BYTES_LOCATION "UNIQUE INDEX(BldCod)," "INDEX(CtrCod))"); @@ -584,7 +584,7 @@ mysql> DESCRIBE cfe_exams; "CrsCod INT NOT NULL DEFAULT -1," "Status TINYINT NOT NULL DEFAULT 0," "NumNotif INT NOT NULL DEFAULT 0," - "CrsFullName VARCHAR(2047) NOT NULL," // Hie_MAX_BYTES_FULL_NAME + "CrsFullName VARCHAR(2047) NOT NULL," // Cns_MAX_BYTES_FULL_NAME "Year TINYINT NOT NULL," "ExamSession VARCHAR(2047) NOT NULL," // Cfe_MAX_BYTES_SESSION "CallDate DATETIME NOT NULL," @@ -642,8 +642,8 @@ mysql> DESCRIBE crs_courses; "InsCrsCod CHAR(7) NOT NULL," "Status TINYINT NOT NULL DEFAULT 0," "RequesterUsrCod INT NOT NULL DEFAULT -1," - "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_SHRT_NAME - "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_FULL_NAME + "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Cns_MAX_BYTES_FULL_NAME "NumIndicators INT NOT NULL DEFAULT -1," "UNIQUE INDEX(CrsCod)," "INDEX(DegCod,Year)," @@ -977,8 +977,8 @@ mysql> DESCRIBE ctr_centers; "Latitude DOUBLE PRECISION NOT NULL DEFAULT 0," "Longitude DOUBLE PRECISION NOT NULL DEFAULT 0," "Altitude DOUBLE PRECISION NOT NULL DEFAULT 0," - "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_SHRT_NAME - "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_FULL_NAME + "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Cns_MAX_BYTES_FULL_NAME "WWW VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW "PhotoAttribution TEXT NOT NULL," // Med_MAX_BYTES_ATTRIBUTION "UNIQUE INDEX(CtrCod)," @@ -1093,8 +1093,8 @@ mysql> DESCRIBE deg_degrees; "DegTypCod INT NOT NULL," "Status TINYINT NOT NULL DEFAULT 0," "RequesterUsrCod INT NOT NULL DEFAULT -1," - "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_SHRT_NAME - "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_FULL_NAME + "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Cns_MAX_BYTES_FULL_NAME "WWW VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW "UNIQUE INDEX(DegCod)," "INDEX(CtrCod)," @@ -1118,8 +1118,8 @@ mysql> DESCRIBE dpt_departments; DB_CreateTable ("CREATE TABLE IF NOT EXISTS dpt_departments (" "DptCod INT NOT NULL AUTO_INCREMENT," "InsCod INT NOT NULL," - "ShortName VARCHAR(511) NOT NULL," // Hie_MAX_BYTES_SHRT_NAME - "FullName VARCHAR(2047) NOT NULL," // Hie_MAX_BYTES_FULL_NAME + "ShortName VARCHAR(511) NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) NOT NULL," // Cns_MAX_BYTES_FULL_NAME "WWW VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW "UNIQUE INDEX(DptCod)," "INDEX(InsCod))"); @@ -1852,8 +1852,8 @@ mysql> DESCRIBE ins_instits; "CtyCod INT NOT NULL," "Status TINYINT NOT NULL DEFAULT 0," "RequesterUsrCod INT NOT NULL DEFAULT -1," - "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_SHRT_NAME - "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_FULL_NAME + "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Cns_MAX_BYTES_FULL_NAME "WWW VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW "UNIQUE INDEX(InsCod)," "INDEX(CtyCod)," @@ -1874,8 +1874,8 @@ mysql> DESCRIBE lnk_links; */ DB_CreateTable ("CREATE TABLE IF NOT EXISTS lnk_links (" "LnkCod INT NOT NULL AUTO_INCREMENT," - "ShortName VARCHAR(511) NOT NULL," // Lnk_MAX_BYTES_LINK_SHRT_NAME - "FullName VARCHAR(2047) NOT NULL," // Lnk_MAX_BYTES_LINK_FULL_NAME + "ShortName VARCHAR(511) NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) NOT NULL," // Cns_MAX_BYTES_FULL_NAME "WWW VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW "UNIQUE INDEX(LnkCod))"); @@ -2434,8 +2434,8 @@ mysql> DESCRIBE plc_places; DB_CreateTable ("CREATE TABLE IF NOT EXISTS plc_places (" "PlcCod INT NOT NULL AUTO_INCREMENT," "InsCod INT NOT NULL," - "ShortName VARCHAR(511) NOT NULL," // Plc_MAX_BYTES_PLACE_SHRT_NAME - "FullName VARCHAR(2047) NOT NULL," // Plc_MAX_BYTES_PLACE_FULL_NAME + "ShortName VARCHAR(511) NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) NOT NULL," // Cns_MAX_BYTES_FULL_NAME "UNIQUE INDEX(PlcCod)," "INDEX(InsCod))"); @@ -2719,8 +2719,8 @@ mysql> DESCRIBE roo_rooms; "'toilets'," "'virtual'," "'yard') NOT NULL DEFAULT 'no_type'," - "ShortName VARCHAR(511) NOT NULL," // Roo_MAX_BYTES_SHRT_NAME - "FullName VARCHAR(2047) NOT NULL," // Roo_MAX_BYTES_FULL_NAME + "ShortName VARCHAR(511) NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) NOT NULL," // Cns_MAX_BYTES_FULL_NAME "Capacity INT NOT NULL," "UNIQUE INDEX(RooCod)," "INDEX(CtrCod,BldCod,Floor))"); diff --git a/swad_degree.c b/swad_degree.c index b64c98f2..5a4e50db 100644 --- a/swad_degree.c +++ b/swad_degree.c @@ -384,7 +384,7 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes) { Frm_BeginForm (ActRenDegSho); ParCod_PutPar (ParCod_OthHie,DegInLst->HieCod); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,DegInLst->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,DegInLst->ShrtName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"", The_GetSuffix ()); @@ -400,7 +400,7 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes) { Frm_BeginForm (ActRenDegFul); ParCod_PutPar (ParCod_OthHie,DegInLst->HieCod); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,DegInLst->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,DegInLst->FullName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"", The_GetSuffix ()); @@ -562,7 +562,7 @@ static void Deg_PutFormToCreateDegree (const struct DegTyp_DegTypes *DegTypes) /***** Degree short name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Deg_EditingDeg->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Deg_EditingDeg->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -571,7 +571,7 @@ static void Deg_PutFormToCreateDegree (const struct DegTyp_DegTypes *DegTypes) /***** Degree full name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Deg_EditingDeg->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Deg_EditingDeg->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -1081,8 +1081,8 @@ static void Deg_ReceiveFormRequestOrCreateDeg (Hie_Status_t Status) Deg_EditingDeg->PrtCod = Gbl.Hierarchy.Node[Hie_CTR].HieCod; /* Get degree short name and full name */ - Par_GetParText ("ShortName",Deg_EditingDeg->ShrtName,Hie_MAX_BYTES_SHRT_NAME); - Par_GetParText ("FullName" ,Deg_EditingDeg->FullName,Hie_MAX_BYTES_FULL_NAME); + Par_GetParText ("ShortName",Deg_EditingDeg->ShrtName,Cns_MAX_BYTES_SHRT_NAME); + Par_GetParText ("FullName" ,Deg_EditingDeg->FullName,Cns_MAX_BYTES_FULL_NAME); /* Get degree type */ Deg_EditingDeg->Specific.TypCod = ParCod_GetAndCheckPar (ParCod_OthDegTyp); @@ -1319,67 +1319,60 @@ void Deg_RenameDegreeFull (void) void Deg_RenameDegree (struct Hie_Node *Deg,Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_degree_X_already_exists; extern const char *Txt_The_degree_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentDegName = NULL; // Initialized to avoid warning - char NewDegName[Hie_MAX_BYTES_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Hie_MAX_BYTES_SHRT_NAME; - CurrentDegName = Deg->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Hie_MAX_BYTES_FULL_NAME; - CurrentDegName = Deg->FullName; - break; - } + [Cns_SHRT_NAME] = Deg->ShrtName, + [Cns_FULL_NAME] = Deg->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get the new name for the degree */ - Par_GetParText (ParName,NewDegName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get data of degree *****/ Deg_GetDegreeDataByCod (Deg); /***** Check if new name is empty *****/ - if (NewDegName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentDegName,NewDegName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If degree was in database... *****/ - if (Deg_DB_CheckIfDegNameExistsInCtr (ParName,NewDegName,Deg->HieCod,Deg->PrtCod)) + if (Deg_DB_CheckIfDegNameExistsInCtr (Cns_ParShrtOrFullName[ShrtOrFullName], + NewName,Deg->HieCod,Deg->PrtCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_degree_X_already_exists, - NewDegName); + NewName); else { /* Update the table changing old name by new name */ - Deg_DB_UpdateDegNameDB (Deg->HieCod,FldName,NewDegName); + Deg_DB_UpdateDegNameDB (Deg->HieCod, + Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_degree_X_has_been_renamed_as_Y, - CurrentDegName,NewDegName); + CurrentName[ShrtOrFullName],NewName); /* Change current degree name in order to display it properly */ - Str_Copy (CurrentDegName,NewDegName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentDegName); + Txt_The_name_X_has_not_changed, + CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); @@ -1647,7 +1640,7 @@ static void Deg_EditingDegreeDestructor (void) /*****************************************************************************/ void Deg_GetUsrMainDeg (long UsrCod, - char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1], + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1], Rol_Role_t *MaxRole) { MYSQL_RES *mysql_res; @@ -1659,7 +1652,7 @@ void Deg_GetUsrMainDeg (long UsrCod, row = mysql_fetch_row (mysql_res); /* Get degree name (row[0]) */ - Str_Copy (ShrtName,row[0],Hie_MAX_BYTES_SHRT_NAME); + Str_Copy (ShrtName,row[0],Cns_MAX_BYTES_SHRT_NAME); /* Get maximum role (row[1]) */ *MaxRole = Rol_ConvertUnsignedStrToRole (row[1]); diff --git a/swad_degree.h b/swad_degree.h index fcfa19f7..afe4c26f 100644 --- a/swad_degree.h +++ b/swad_degree.h @@ -84,7 +84,7 @@ unsigned Deg_GetCachedNumDegsWithUsrs (Rol_Role_t Role); void Deg_ListDegsFound (MYSQL_RES **mysql_res,unsigned NumCrss); void Deg_GetUsrMainDeg (long UsrCod, - char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1], + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1], Rol_Role_t *MaxRole); #endif diff --git a/swad_degree_database.c b/swad_degree_database.c index 99a247ad..3662bf14 100644 --- a/swad_degree_database.c +++ b/swad_degree_database.c @@ -339,7 +339,7 @@ long Deg_DB_GetCtrCodOfDegreeByCod (long DegCod) /************* Get the short name of a degree from its code ******************/ /*****************************************************************************/ -void Deg_DB_GetShortNameOfDegreeByCod (long DegCod,char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]) +void Deg_DB_GetShortNameOfDegreeByCod (long DegCod,char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]) { /***** Trivial check: degree code should be > 0 *****/ if (DegCod <= 0) @@ -349,7 +349,7 @@ void Deg_DB_GetShortNameOfDegreeByCod (long DegCod,char ShrtName[Hie_MAX_BYTES_S } /***** Get the short name of a degree from database *****/ - DB_QuerySELECTString (ShrtName,Hie_MAX_BYTES_SHRT_NAME, + DB_QuerySELECTString (ShrtName,Cns_MAX_BYTES_SHRT_NAME, "can not get the short name of a degree", "SELECT ShortName" " FROM deg_degrees" @@ -689,7 +689,7 @@ void Deg_DB_UpdateDegTypName (long DegTypCod, /*****************************************************************************/ void Deg_DB_UpdateDegNameDB (long DegCod,const char *FldName, - const char NewDegName[Hie_MAX_BYTES_FULL_NAME + 1]) + const char NewDegName[Cns_MAX_BYTES_FULL_NAME + 1]) { DB_QueryUPDATE ("can not update the name of a degree", "UPDATE deg_degrees" diff --git a/swad_degree_database.h b/swad_degree_database.h index 0054a9df..5b8231db 100644 --- a/swad_degree_database.h +++ b/swad_degree_database.h @@ -47,7 +47,7 @@ void Deg_DB_GetDegTypeNameByCod (struct DegTyp_DegreeType *DegTyp); unsigned Deg_DB_GetDegreeDataByCod (MYSQL_RES **mysql_res,long DegCod); long Deg_DB_GetInsCodOfDegreeByCod (long DegCod); long Deg_DB_GetCtrCodOfDegreeByCod (long DegCod); -void Deg_DB_GetShortNameOfDegreeByCod (long DegCod,char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]); +void Deg_DB_GetShortNameOfDegreeByCod (long DegCod,char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]); bool Deg_DB_CheckIfDegreeTypeNameExists (const char *DegTypName,long DegTypCod); unsigned Deg_DB_GetNumDegsOfType (long DegTypCod); unsigned Deg_DB_GetDegsOfType (MYSQL_RES **mysql_res,long DegTypCod); @@ -74,7 +74,7 @@ unsigned Deg_DB_GetNumDegsInCtr (long CtrCod); void Deg_DB_UpdateDegTypName (long DegTypCod, const char NewNameDegTyp[DegTyp_MAX_BYTES_DEGREE_TYPE_NAME + 1]); void Deg_DB_UpdateDegNameDB (long DegCod,const char *FldName, - const char NewDegName[Hie_MAX_BYTES_FULL_NAME + 1]); + const char NewDegName[Cns_MAX_BYTES_FULL_NAME + 1]); void Deg_DB_UpdateDegCtr (long DegCod,long NewCtrCod); void Deg_DB_UpdateDegTyp (long DegCod,long NewDegTypCod); void Deg_DB_UpdateDegWWW (long DegCod,const char NewWWW[Cns_MAX_BYTES_WWW + 1]); diff --git a/swad_department.c b/swad_department.c index 689681eb..bf1c567c 100644 --- a/swad_department.c +++ b/swad_department.c @@ -536,7 +536,7 @@ static void Dpt_ListDepartmentsForEdition (const struct Dpt_Departments *Departm HTM_TD_Begin ("class=\"LM\""); Frm_BeginForm (ActRenDptSho); ParCod_PutPar (ParCod_Dpt,DptInLst->DptCod); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,DptInLst->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,DptInLst->ShrtName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"", The_GetSuffix ()); @@ -547,7 +547,7 @@ static void Dpt_ListDepartmentsForEdition (const struct Dpt_Departments *Departm HTM_TD_Begin ("class=\"LM\""); Frm_BeginForm (ActRenDptFul); ParCod_PutPar (ParCod_Dpt,DptInLst->DptCod); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,DptInLst->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,DptInLst->FullName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"", The_GetSuffix ()); @@ -683,73 +683,66 @@ void Dpt_RenameDepartFull (void) static void Dpt_RenameDepartment (Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_department_X_already_exists; extern const char *Txt_The_department_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - size_t MaxBytes = 0; // Initialized to avoid warning - char *CurrentDptName = NULL; // Initialized to avoid warning - char NewDptName[Hie_MAX_BYTES_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Hie_MAX_BYTES_SHRT_NAME; - CurrentDptName = Dpt_EditingDpt->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Hie_MAX_BYTES_FULL_NAME; - CurrentDptName = Dpt_EditingDpt->FullName; - break; - } + [Cns_SHRT_NAME] = Dpt_EditingDpt->ShrtName, + [Cns_FULL_NAME] = Dpt_EditingDpt->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get the code of the department */ Dpt_EditingDpt->DptCod = ParCod_GetAndCheckPar (ParCod_Dpt); /* Get the new name for the department */ - Par_GetParText (ParName,NewDptName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get from the database the old names of the department *****/ Dpt_GetDepartmentDataByCod (Dpt_EditingDpt); /***** Check if new name is empty *****/ - if (NewDptName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentDptName,NewDptName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If degree was in database... *****/ - if (Dpt_DB_CheckIfDepartmentNameExists (ParName,NewDptName,Dpt_EditingDpt->DptCod)) + if (Dpt_DB_CheckIfDepartmentNameExists (Cns_ParShrtOrFullName[ShrtOrFullName], + NewName,Dpt_EditingDpt->DptCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_department_X_already_exists, - NewDptName); + NewName); else { /* Update the table changing old name by new name */ - Dpt_DB_UpdateDptName (Dpt_EditingDpt->DptCod,FldName,NewDptName); + Dpt_DB_UpdateDptName (Dpt_EditingDpt->DptCod, + Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_department_X_has_been_renamed_as_Y, - CurrentDptName,NewDptName); + CurrentName[ShrtOrFullName],NewName); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentDptName); + Txt_The_name_X_has_not_changed, + CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); /***** Update name *****/ - Str_Copy (CurrentDptName,NewDptName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } /******************************************************************************/ @@ -861,7 +854,7 @@ static void Dpt_PutFormToCreateDepartment (void) /***** Department short name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Dpt_EditingDpt->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Dpt_EditingDpt->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -870,7 +863,7 @@ static void Dpt_PutFormToCreateDepartment (void) /***** Department full name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Dpt_EditingDpt->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Dpt_EditingDpt->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -937,10 +930,10 @@ void Dpt_ReceiveFormNewDpt (void) Dpt_EditingDpt->InsCod = ParCod_GetAndCheckPar (ParCod_OthIns); /* Get department short name */ - Par_GetParText ("ShortName",Dpt_EditingDpt->ShrtName,Hie_MAX_BYTES_SHRT_NAME); + Par_GetParText ("ShortName",Dpt_EditingDpt->ShrtName,Cns_MAX_BYTES_SHRT_NAME); /* Get department full name */ - Par_GetParText ("FullName",Dpt_EditingDpt->FullName,Hie_MAX_BYTES_FULL_NAME); + Par_GetParText ("FullName",Dpt_EditingDpt->FullName,Cns_MAX_BYTES_FULL_NAME); /* Get department WWW */ Par_GetParText ("WWW",Dpt_EditingDpt->WWW,Cns_MAX_BYTES_WWW); diff --git a/swad_department.h b/swad_department.h index d66d2c95..fd43e33e 100644 --- a/swad_department.h +++ b/swad_department.h @@ -37,8 +37,8 @@ struct Dpt_Department { long DptCod; long InsCod; - char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]; - char FullName[Hie_MAX_BYTES_FULL_NAME + 1]; + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; + char FullName[Cns_MAX_BYTES_FULL_NAME + 1]; char WWW[Cns_MAX_BYTES_WWW + 1]; unsigned NumTchs; // Non-editing teachers and teachers }; diff --git a/swad_global.h b/swad_global.h index a9bfae83..d9528a98 100644 --- a/swad_global.h +++ b/swad_global.h @@ -249,8 +249,8 @@ struct Globals struct { long HieCod; - char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]; - char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]; + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; + char CtyName[Cns_MAX_BYTES_FULL_NAME + 1]; bool Valid; } InstitutionShrtNameAndCty; struct diff --git a/swad_group.h b/swad_group.h index 6db8766d..efc26d00 100644 --- a/swad_group.h +++ b/swad_group.h @@ -67,7 +67,7 @@ struct GroupData struct { long RooCod; // Room code - char ShrtName[Roo_MAX_BYTES_SHRT_NAME + 1]; // Room short name + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; // Room short name } Room; unsigned MaxStudents; int Vacant; @@ -83,7 +83,7 @@ struct Group struct { long RooCod; // Room code - char ShrtName[Roo_MAX_BYTES_SHRT_NAME + 1]; // Room short name + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; // Room short name } Room; unsigned NumUsrs[Rol_NUM_ROLES]; // Number of users in the group unsigned MaxStudents; // Maximum number of students in the group diff --git a/swad_hierarchy_config.c b/swad_hierarchy_config.c index 236c27af..2785a165 100644 --- a/swad_hierarchy_config.c +++ b/swad_hierarchy_config.c @@ -102,7 +102,7 @@ void HieCfg_FullName (bool PutForm,Act_Action_t NextAction,Hie_Level_t Level, { /* Form to change full name */ Frm_BeginForm (NextAction); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME, Gbl.Hierarchy.Node[Level].FullName, HTM_SUBMIT_ON_CHANGE, "id=\"FullName\"" @@ -140,7 +140,7 @@ void HieCfg_ShrtName (bool PutForm,Act_Action_t NextAction,Hie_Level_t Level) { /* Form to change short name */ Frm_BeginForm (NextAction); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME, Gbl.Hierarchy.Node[Level].ShrtName, HTM_SUBMIT_ON_CHANGE, "id=\"ShortName\"" diff --git a/swad_hierarchy_type.h b/swad_hierarchy_type.h index 5cb4820f..1908db67 100644 --- a/swad_hierarchy_type.h +++ b/swad_hierarchy_type.h @@ -72,12 +72,6 @@ typedef enum #define Hie_MAX_CHARS_INSTITUTIONAL_COD (16 - 1) // 15 #define Hie_MAX_BYTES_INSTITUTIONAL_COD ((Hie_MAX_CHARS_INSTITUTIONAL_COD + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 255 -#define Hie_MAX_CHARS_SHRT_NAME (32 - 1) // 31 -#define Hie_MAX_BYTES_SHRT_NAME ((Hie_MAX_CHARS_SHRT_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511 - -#define Hie_MAX_CHARS_FULL_NAME (128 - 1) // 127 -#define Hie_MAX_BYTES_FULL_NAME ((Hie_MAX_CHARS_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 - struct Hie_MyNode { long HieCod; // Course/degree/center/institution/country code @@ -98,8 +92,8 @@ struct Hie_Node Hie_Status_t Status; // Node status long RequesterUsrCod; // User code of the person who requested the creation of this node char InstitutionalCod[Hie_MAX_BYTES_INSTITUTIONAL_COD + 1]; // Institutional code of the node - char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]; // Short name of the node - char FullName[Hie_MAX_BYTES_FULL_NAME + 1]; // Full name of the node + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; // Short name of the node + char FullName[Cns_MAX_BYTES_FULL_NAME + 1]; // Full name of the node char WWW[Cns_MAX_BYTES_WWW + 1]; struct { diff --git a/swad_holiday.h b/swad_holiday.h index 00088eac..c679cf67 100644 --- a/swad_holiday.h +++ b/swad_holiday.h @@ -55,7 +55,7 @@ struct Hld_Holiday { long HldCod; long PlcCod; - char PlaceFullName[Plc_MAX_BYTES_PLACE_FULL_NAME + 1]; + char PlaceFullName[Cns_MAX_BYTES_FULL_NAME + 1]; Hld_HolidayType_t HldTyp; struct Dat_Date StartDate; struct Dat_Date EndDate; diff --git a/swad_institution.c b/swad_institution.c index c6d8e09a..6d836e53 100644 --- a/swad_institution.c +++ b/swad_institution.c @@ -90,7 +90,7 @@ static void Ins_GetInstitDataFromRow (MYSQL_RES *mysql_res, static void Ins_ListInstitutionsForEdition (void); static bool Ins_CheckIfICanEdit (struct Hie_Node *Ins); -static void Ins_UpdateInsNameDB (long InsCod,const char *FldName,const char *NewInsName); +static void Ins_UpdateInsNameDB (long InsCod,const char *FldName,const char *NewName); static void Ins_ShowAlertAndButtonToGoToIns (void); @@ -638,7 +638,7 @@ void Ins_GetFullListOfInstitutions (long CtyCod) void Ins_WriteInstitutionNameAndCty (long InsCod) { struct Hie_Node Ins; - char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]; + char CtyName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get institution short name and country name *****/ Ins.HieCod = InsCod; @@ -746,7 +746,7 @@ void Ins_FlushCacheFullNameAndCtyOfInstitution (void) } void Ins_GetShrtNameAndCtyOfInstitution (struct Hie_Node *Ins, - char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]) + char CtyName[Cns_MAX_BYTES_FULL_NAME + 1]) { MYSQL_RES *mysql_res; MYSQL_ROW row; @@ -766,7 +766,7 @@ void Ins_GetShrtNameAndCtyOfInstitution (struct Hie_Node *Ins, Str_Copy (Ins->ShrtName,Gbl.Cache.InstitutionShrtNameAndCty.ShrtName, sizeof (Ins->ShrtName) - 1); Str_Copy (CtyName,Gbl.Cache.InstitutionShrtNameAndCty.CtyName, - Hie_MAX_BYTES_FULL_NAME); + Cns_MAX_BYTES_FULL_NAME); return; } @@ -796,7 +796,7 @@ void Ins_GetShrtNameAndCtyOfInstitution (struct Hie_Node *Ins, Str_Copy (Ins->ShrtName,Gbl.Cache.InstitutionShrtNameAndCty.ShrtName, sizeof (Ins->ShrtName) - 1); Str_Copy (CtyName ,Gbl.Cache.InstitutionShrtNameAndCty.CtyName , - Hie_MAX_BYTES_FULL_NAME); + Cns_MAX_BYTES_FULL_NAME); Gbl.Cache.InstitutionShrtNameAndCty.Valid = true; } @@ -946,7 +946,7 @@ static void Ins_ListInstitutionsForEdition (void) { Frm_BeginForm (ActRenInsSho); ParCod_PutPar (ParCod_OthHie,Ins->HieCod); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Ins->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Ins->ShrtName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"", The_GetSuffix ()); @@ -962,7 +962,7 @@ static void Ins_ListInstitutionsForEdition (void) { Frm_BeginForm (ActRenInsFul); ParCod_PutPar (ParCod_OthHie,Ins->HieCod); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Ins->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Ins->FullName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"", The_GetSuffix ()); @@ -1160,67 +1160,60 @@ void Ins_RenameInsFull (void) void Ins_RenameInstitution (struct Hie_Node *Ins,Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_institution_X_already_exists; extern const char *Txt_The_institution_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentInsName = NULL; // Initialized to avoid warning - char NewInsName[Hie_MAX_BYTES_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Hie_MAX_BYTES_SHRT_NAME; - CurrentInsName = Ins->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Hie_MAX_BYTES_FULL_NAME; - CurrentInsName = Ins->FullName; - break; - } + [Cns_SHRT_NAME] = Ins->ShrtName, + [Cns_FULL_NAME] = Ins->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get the new name for the institution from form *****/ - Par_GetParText (ParName,NewInsName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get from the database the old names of the institution *****/ Ins_GetInstitDataByCod (Ins); /***** Check if new name is empty *****/ - if (NewInsName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentInsName,NewInsName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If institution was in database... *****/ - if (Ins_DB_CheckIfInsNameExistsInCty (ParName,NewInsName,Ins->HieCod, + if (Ins_DB_CheckIfInsNameExistsInCty (Cns_ParShrtOrFullName[ShrtOrFullName], + NewName,Ins->HieCod, Gbl.Hierarchy.Node[Hie_CTY].HieCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_institution_X_already_exists, - NewInsName); + NewName); else { /* Update the table changing old name by new name */ - Ins_UpdateInsNameDB (Ins->HieCod,FldName,NewInsName); + Ins_UpdateInsNameDB (Ins->HieCod, + Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Create message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_institution_X_has_been_renamed_as_Y, - CurrentInsName,NewInsName); + CurrentName[ShrtOrFullName],NewName); /* Change current institution name in order to display it properly */ - Str_Copy (CurrentInsName,NewInsName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentInsName); + Txt_The_name_X_has_not_changed, + CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); @@ -1230,10 +1223,10 @@ void Ins_RenameInstitution (struct Hie_Node *Ins,Cns_ShrtOrFullName_t ShrtOrFull /************ Update institution name in table of institutions ***************/ /*****************************************************************************/ -static void Ins_UpdateInsNameDB (long InsCod,const char *FldName,const char *NewInsName) +static void Ins_UpdateInsNameDB (long InsCod,const char *FldName,const char *NewName) { /***** Update institution changing old name by new name */ - Ins_DB_UpdateInsName (InsCod,FldName,NewInsName); + Ins_DB_UpdateInsName (InsCod,FldName,NewName); /***** Flush caches *****/ Ins_FlushCacheFullNameAndCtyOfInstitution (); @@ -1392,7 +1385,7 @@ static void Ins_PutFormToCreateInstitution (void) /***** Institution short name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Ins_EditingIns->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Ins_EditingIns->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -1401,7 +1394,7 @@ static void Ins_PutFormToCreateInstitution (void) /***** Institution full name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Ins_EditingIns->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Ins_EditingIns->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -1523,8 +1516,8 @@ static void Ins_ReceiveFormRequestOrCreateIns (Hie_Status_t Status) Ins_EditingIns->PrtCod = Gbl.Hierarchy.Node[Hie_CTY].HieCod; /* Get institution short name, full name and WWW */ - Par_GetParText ("ShortName",Ins_EditingIns->ShrtName,Hie_MAX_BYTES_SHRT_NAME); - Par_GetParText ("FullName" ,Ins_EditingIns->FullName,Hie_MAX_BYTES_FULL_NAME); + Par_GetParText ("ShortName",Ins_EditingIns->ShrtName,Cns_MAX_BYTES_SHRT_NAME); + Par_GetParText ("FullName" ,Ins_EditingIns->FullName,Cns_MAX_BYTES_FULL_NAME); Par_GetParText ("WWW" ,Ins_EditingIns->WWW ,Cns_MAX_BYTES_WWW); if (Ins_EditingIns->ShrtName[0] && diff --git a/swad_institution.h b/swad_institution.h index 5152c5f0..e916ebf7 100644 --- a/swad_institution.h +++ b/swad_institution.h @@ -51,7 +51,7 @@ void Ins_WriteInstitutionNameAndCty (long InsCod); bool Ins_GetInstitDataByCod (struct Hie_Node *Ins); void Ins_FlushCacheFullNameAndCtyOfInstitution (void); void Ins_GetShrtNameAndCtyOfInstitution (struct Hie_Node *Ins, - char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]); + char CtyName[Cns_MAX_BYTES_FULL_NAME + 1]); void Ins_WriteSelectorOfInstitution (void); diff --git a/swad_institution_database.c b/swad_institution_database.c index f909bba6..897a3b87 100644 --- a/swad_institution_database.c +++ b/swad_institution_database.c @@ -97,14 +97,14 @@ void Ins_DB_UpdateInsStatus (long InsCod,Hie_Status_t Status) /*************************** Update institution name *************************/ /*****************************************************************************/ -void Ins_DB_UpdateInsName (long InsCod,const char *FldName,const char *NewInsName) +void Ins_DB_UpdateInsName (long InsCod,const char *FldName,const char *NewName) { /***** Update institution changing old name by new name */ DB_QueryUPDATE ("can not update the name of an institution", "UPDATE ins_instits" " SET %s='%s'" " WHERE InsCod=%ld", - FldName,NewInsName, + FldName,NewName, InsCod); } @@ -148,7 +148,7 @@ unsigned Ins_DB_GetInsDataByCod (MYSQL_RES **mysql_res,long InsCod) /*********** Get the short name of an institution from its code **************/ /*****************************************************************************/ -void Ins_DB_GetInsShrtName (long InsCod,char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]) +void Ins_DB_GetInsShrtName (long InsCod,char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]) { /***** Trivial check: institution code should be > 0 *****/ if (InsCod <= 0) @@ -158,7 +158,7 @@ void Ins_DB_GetInsShrtName (long InsCod,char ShrtName[Hie_MAX_BYTES_SHRT_NAME + } /***** Get short name of institution from database *****/ - DB_QuerySELECTString (ShrtName,Hie_MAX_BYTES_SHRT_NAME, + DB_QuerySELECTString (ShrtName,Cns_MAX_BYTES_SHRT_NAME, "can not get the short name of an institution", "SELECT ShortName" " FROM ins_instits" diff --git a/swad_institution_database.h b/swad_institution_database.h index 802c7831..68d0c78f 100644 --- a/swad_institution_database.h +++ b/swad_institution_database.h @@ -40,11 +40,11 @@ long Ins_DB_CreateInstitution (const struct Hie_Node *Ins,Hie_Status_t Status); void Ins_DB_UpdateInsCty (long InsCod,long CtyCod); void Ins_DB_UpdateInsStatus (long InsCod,Hie_Status_t Status); -void Ins_DB_UpdateInsName (long InsCod,const char *FldName,const char *NewInsName); +void Ins_DB_UpdateInsName (long InsCod,const char *FldName,const char *NewName); void Ins_DB_UpdateInsWWW (long InsCod,const char NewWWW[Cns_MAX_BYTES_WWW + 1]); unsigned Ins_DB_GetInsDataByCod (MYSQL_RES **mysql_res,long InsCod); -void Ins_DB_GetInsShrtName (long InsCod,char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]); +void Ins_DB_GetInsShrtName (long InsCod,char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]); unsigned Ins_DB_GetInsShrtNameAndCty (MYSQL_RES **mysql_res,long InsCod); bool Ins_DB_CheckIfInsNameExistsInCty (const char *FldName, const char *Name, diff --git a/swad_link.c b/swad_link.c index d2aebc6e..8afa078c 100644 --- a/swad_link.c +++ b/swad_link.c @@ -430,7 +430,7 @@ static void Lnk_ListLinksForEdition (const struct Lnk_Links *Links) HTM_TD_Begin ("class=\"CM\""); Frm_BeginForm (ActRenLnkSho); ParCod_PutPar (ParCod_Lnk,Lnk->LnkCod); - HTM_INPUT_TEXT ("ShortName",Lnk_MAX_CHARS_LINK_SHRT_NAME,Lnk->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Lnk->ShrtName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -442,7 +442,7 @@ static void Lnk_ListLinksForEdition (const struct Lnk_Links *Links) HTM_TD_Begin ("class=\"CM\""); Frm_BeginForm (ActRenLnkFul); ParCod_PutPar (ParCod_Lnk,Lnk->LnkCod); - HTM_INPUT_TEXT ("FullName",Lnk_MAX_CHARS_LINK_FULL_NAME,Lnk->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Lnk->FullName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -536,73 +536,66 @@ void Lnk_RenameLinkFull (void) static void Lnk_RenameLink (Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_link_X_already_exists; extern const char *Txt_The_link_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentLnkName = NULL; // Initialized to avoid warning - char NewLnkName[Lnk_MAX_BYTES_LINK_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Lnk_MAX_BYTES_LINK_SHRT_NAME; - CurrentLnkName = Lnk_EditingLnk->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Lnk_MAX_BYTES_LINK_FULL_NAME; - CurrentLnkName = Lnk_EditingLnk->FullName; - break; - } + [Cns_SHRT_NAME] = Lnk_EditingLnk->ShrtName, + [Cns_FULL_NAME] = Lnk_EditingLnk->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get the code of the link */ Lnk_EditingLnk->LnkCod = ParCod_GetAndCheckPar (ParCod_Lnk); /* Get the new name for the link */ - Par_GetParText (ParName,NewLnkName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get link data from the database *****/ Lnk_GetLinkDataByCod (Lnk_EditingLnk); /***** Check if new name is empty *****/ - if (NewLnkName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentLnkName,NewLnkName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If link was in database... *****/ - if (Lnk_DB_CheckIfLinkNameExists (ParName,NewLnkName,Lnk_EditingLnk->LnkCod)) + if (Lnk_DB_CheckIfLinkNameExists (Cns_ParShrtOrFullName[ShrtOrFullName], + NewName,Lnk_EditingLnk->LnkCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_link_X_already_exists, - NewLnkName); + NewName); else { /* Update the table changing old name by new name */ - Lnk_DB_UpdateLnkName (Lnk_EditingLnk->LnkCod,FldName,NewLnkName); + Lnk_DB_UpdateLnkName (Lnk_EditingLnk->LnkCod, + Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_link_X_has_been_renamed_as_Y, - CurrentLnkName,NewLnkName); + CurrentName[ShrtOrFullName],NewName); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentLnkName); + Txt_The_name_X_has_not_changed, + CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); /***** Update name *****/ - Str_Copy (CurrentLnkName,NewLnkName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } /*****************************************************************************/ @@ -685,7 +678,7 @@ static void Lnk_PutFormToCreateLink (void) /***** Link short name *****/ HTM_TD_Begin ("class=\"CM\""); - HTM_INPUT_TEXT ("ShortName",Lnk_MAX_CHARS_LINK_SHRT_NAME,Lnk_EditingLnk->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Lnk_EditingLnk->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -694,7 +687,7 @@ static void Lnk_PutFormToCreateLink (void) /***** Link full name *****/ HTM_TD_Begin ("class=\"CM\""); - HTM_INPUT_TEXT ("FullName",Lnk_MAX_CHARS_LINK_FULL_NAME,Lnk_EditingLnk->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Lnk_EditingLnk->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -750,10 +743,10 @@ void Lnk_ReceiveFormNewLink (void) /***** Get parameters from form *****/ /* Get link short name */ - Par_GetParText ("ShortName",Lnk_EditingLnk->ShrtName,Lnk_MAX_BYTES_LINK_SHRT_NAME); + Par_GetParText ("ShortName",Lnk_EditingLnk->ShrtName,Cns_MAX_BYTES_SHRT_NAME); /* Get link full name */ - Par_GetParText ("FullName",Lnk_EditingLnk->FullName,Lnk_MAX_BYTES_LINK_FULL_NAME); + Par_GetParText ("FullName",Lnk_EditingLnk->FullName,Cns_MAX_BYTES_FULL_NAME); /* Get link URL */ Par_GetParText ("WWW",Lnk_EditingLnk->WWW,Cns_MAX_BYTES_WWW); diff --git a/swad_link.h b/swad_link.h index 4e4b206c..b7d1e216 100644 --- a/swad_link.h +++ b/swad_link.h @@ -27,17 +27,11 @@ /************************** Public types and constants ***********************/ /*****************************************************************************/ -#define Lnk_MAX_CHARS_LINK_SHRT_NAME (32 - 1) // 31 -#define Lnk_MAX_BYTES_LINK_SHRT_NAME ((Lnk_MAX_CHARS_LINK_SHRT_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511 - -#define Lnk_MAX_CHARS_LINK_FULL_NAME (128 - 1) // 127 -#define Lnk_MAX_BYTES_LINK_FULL_NAME ((Lnk_MAX_CHARS_LINK_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 - struct Lnk_Link { long LnkCod; - char ShrtName[Lnk_MAX_BYTES_LINK_SHRT_NAME + 1]; - char FullName[Lnk_MAX_BYTES_LINK_FULL_NAME + 1]; + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; + char FullName[Cns_MAX_BYTES_FULL_NAME + 1]; char WWW[Cns_MAX_BYTES_WWW + 1]; }; diff --git a/swad_mail.c b/swad_mail.c index 010aac55..3ed786ad 100644 --- a/swad_mail.c +++ b/swad_mail.c @@ -590,71 +590,71 @@ static void Mai_RenameMailDomain (Cns_ShrtOrFullName_t ShrtOrFullName) extern const char *Txt_The_email_domain_X_already_exists; extern const char *Txt_The_email_domain_X_has_been_renamed_as_Y; extern const char *Txt_The_email_domain_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentMaiName = NULL; // Initialized to avoid warning - char NewMaiName[Mai_MAX_BYTES_MAIL_INFO + 1]; - - switch (ShrtOrFullName) + static const char *ParName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "Domain"; - FldName = "Domain"; - MaxBytes = Cns_MAX_BYTES_EMAIL_ADDRESS; - CurrentMaiName = Mai_EditingMai->Domain; - break; - case Cns_FULL_NAME: - ParName = "Info"; - FldName = "Info"; - MaxBytes = Mai_MAX_BYTES_MAIL_INFO; - CurrentMaiName = Mai_EditingMai->Info; - break; - } + [Cns_SHRT_NAME] = "Domain", + [Cns_FULL_NAME] = "Info", + }; + static const char *FldName[Cns_NUM_SHRT_FULL_NAMES] = + { + [Cns_SHRT_NAME] = "Domain", + [Cns_FULL_NAME] = "Info", + }; + static unsigned MaxBytes[Cns_NUM_SHRT_FULL_NAMES] = + { + [Cns_SHRT_NAME] = Cns_MAX_BYTES_EMAIL_ADDRESS, + [Cns_FULL_NAME] = Mai_MAX_BYTES_MAIL_INFO, + }; + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = + { + [Cns_SHRT_NAME] = Mai_EditingMai->Domain, + [Cns_FULL_NAME] = Mai_EditingMai->Info, + }; + char NewName[Mai_MAX_BYTES_MAIL_INFO + 1]; /***** Get parameters from form *****/ /* Get the code of the mail */ Mai_EditingMai->MaiCod = ParCod_GetAndCheckPar (ParCod_Mai); /* Get the new name for the mail */ - Par_GetParText (ParName,NewMaiName,MaxBytes); + Par_GetParText (ParName[ShrtOrFullName],NewName,MaxBytes[ShrtOrFullName]); /***** Get from the database the old names of the mail *****/ Mai_GetMailDomainDataByCod (Mai_EditingMai); /***** Check if new name is empty *****/ - if (NewMaiName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentMaiName,NewMaiName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If mail was in database... *****/ - if (Mai_DB_CheckIfMailDomainNameExists (ParName,NewMaiName,Mai_EditingMai->MaiCod)) + if (Mai_DB_CheckIfMailDomainNameExists (ParName[ShrtOrFullName],NewName,Mai_EditingMai->MaiCod)) Ale_CreateAlert (Ale_WARNING,Mai_EMAIL_SECTION_ID, Txt_The_email_domain_X_already_exists, - NewMaiName); + NewName); else { /* Update the table changing old name by new name */ - Mai_DB_UpdateMailDomainName (Mai_EditingMai->MaiCod,FldName,NewMaiName); + Mai_DB_UpdateMailDomainName (Mai_EditingMai->MaiCod,FldName[ShrtOrFullName],NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,Mai_EMAIL_SECTION_ID, Txt_The_email_domain_X_has_been_renamed_as_Y, - CurrentMaiName,NewMaiName); + CurrentName[ShrtOrFullName],NewName); } } else // The same name Ale_CreateAlert (Ale_INFO,Mai_EMAIL_SECTION_ID, Txt_The_email_domain_X_has_not_changed, - CurrentMaiName); + CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); /***** Update name *****/ - Str_Copy (CurrentMaiName,NewMaiName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName,MaxBytes[ShrtOrFullName]); } /*****************************************************************************/ diff --git a/swad_message.h b/swad_message.h index 5a490777..f20f2c9b 100644 --- a/swad_message.h +++ b/swad_message.h @@ -63,7 +63,7 @@ typedef enum struct Msg_Course { long CrsCod; - char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]; + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; }; // Distinct courses in my messages sent or received struct Msg_Messages @@ -72,7 +72,7 @@ struct Msg_Messages unsigned NumMsgs; char Subject[Cns_MAX_BYTES_SUBJECT + 1]; long FilterCrsCod; // Show only messages sent from this course code - char FilterCrsShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]; + char FilterCrsShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; char FilterFromTo[Usr_MAX_BYTES_FULL_NAME + 1]; // Show only messages from/to these users char FilterContent[Msg_MAX_BYTES_FILTER_CONTENT + 1]; // Show only messages that match this content bool ShowOnlyUnreadMsgs; // Show only unread messages (this option is applicable only for received messages) diff --git a/swad_photo.c b/swad_photo.c index c291cbc3..c4a556c7 100644 --- a/swad_photo.c +++ b/swad_photo.c @@ -1072,9 +1072,9 @@ void Pho_BuildHTMLUsrPhoto (const struct Usr_Data *UsrDat,const char *PhotoURL, bool PutZoomCode = (Zoom == Pho_ZOOM) && // Make zoom BrowserTabIs1stTab; // Only in main browser tab (or AJAX) char IdCaption[Frm_MAX_BYTES_ID + 1]; - char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]; + char CtyName[Cns_MAX_BYTES_FULL_NAME + 1]; struct Hie_Node Ins; - char MainDegreeShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]; + char MainDegreeShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; Rol_Role_t MaxRole; // Maximum user's role in his/her main degree struct { @@ -2368,7 +2368,7 @@ static void Pho_ShowDegreeAvgPhotoAndStat (const struct Hie_Node *Deg, unsigned PhotoHeight; char PathRelAvgPhoto[PATH_MAX + 1]; char PhotoURL[Cns_MAX_BYTES_WWW + 1]; - char PhotoCaption[1024 + Hie_MAX_BYTES_SHRT_NAME]; + char PhotoCaption[1024 + Cns_MAX_BYTES_SHRT_NAME]; bool ShowDegPhoto; char IdCaption[Frm_MAX_BYTES_ID + 1]; diff --git a/swad_place.c b/swad_place.c index ea8b2f90..fd299000 100644 --- a/swad_place.c +++ b/swad_place.c @@ -481,7 +481,7 @@ static void Plc_ListPlacesForEdition (const struct Plc_Places *Places) HTM_TD_Begin ("class=\"CM\""); Frm_BeginForm (ActRenPlcSho); ParCod_PutPar (ParCod_Plc,Plc->PlcCod); - HTM_INPUT_TEXT ("ShortName",Plc_MAX_CHARS_PLACE_SHRT_NAME,Plc->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Plc->ShrtName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"", The_GetSuffix ()); @@ -492,7 +492,7 @@ static void Plc_ListPlacesForEdition (const struct Plc_Places *Places) HTM_TD_Begin ("class=\"CM\""); Frm_BeginForm (ActRenPlcFul); ParCod_PutPar (ParCod_Plc,Plc->PlcCod); - HTM_INPUT_TEXT ("FullName",Plc_MAX_CHARS_PLACE_FULL_NAME,Plc->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Plc->FullName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"", The_GetSuffix ()); @@ -587,73 +587,67 @@ void Plc_RenamePlaceFull (void) static void Plc_RenamePlace (Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_place_X_already_exists; extern const char *Txt_The_place_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentPlcName = NULL; // Initialized to avoid warning - char NewPlcName[Plc_MAX_BYTES_PLACE_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Plc_MAX_BYTES_PLACE_SHRT_NAME; - CurrentPlcName = Plc_EditingPlc->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Plc_MAX_BYTES_PLACE_FULL_NAME; - CurrentPlcName = Plc_EditingPlc->FullName; - break; - } + [Cns_SHRT_NAME] = Plc_EditingPlc->ShrtName, + [Cns_FULL_NAME] = Plc_EditingPlc->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get the code of the place */ Plc_EditingPlc->PlcCod = ParCod_GetAndCheckPar (ParCod_Plc); /* Get the new name for the place */ - Par_GetParText (ParName,NewPlcName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get place old names from database *****/ Plc_GetPlaceDataByCod (Plc_EditingPlc); /***** Check if new name is empty *****/ - if (NewPlcName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentPlcName,NewPlcName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If place was in database... *****/ - if (Plc_DB_CheckIfPlaceNameExists (Plc_EditingPlc->PlcCod,ParName,NewPlcName)) + if (Plc_DB_CheckIfPlaceNameExists (Plc_EditingPlc->PlcCod, + Cns_ParShrtOrFullName[ShrtOrFullName], + NewName)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_place_X_already_exists, - NewPlcName); + NewName); else { /* Update the table changing old name by new name */ - Plc_DB_UpdatePlcName (Plc_EditingPlc->PlcCod,FldName,NewPlcName); + Plc_DB_UpdatePlcName (Plc_EditingPlc->PlcCod, + Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_place_X_has_been_renamed_as_Y, - CurrentPlcName,NewPlcName); + CurrentName[ShrtOrFullName],NewName); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentPlcName); + Txt_The_name_X_has_not_changed, + CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); /***** Update place name *****/ - Str_Copy (CurrentPlcName,NewPlcName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } /*****************************************************************************/ @@ -696,7 +690,7 @@ static void Plc_PutFormToCreatePlace (void) /***** Place short name *****/ HTM_TD_Begin ("class=\"CM\""); - HTM_INPUT_TEXT ("ShortName",Plc_MAX_CHARS_PLACE_SHRT_NAME,Plc_EditingPlc->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Plc_EditingPlc->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -705,7 +699,7 @@ static void Plc_PutFormToCreatePlace (void) /***** Place full name *****/ HTM_TD_Begin ("class=\"CM\""); - HTM_INPUT_TEXT ("FullName",Plc_MAX_CHARS_PLACE_FULL_NAME,Plc_EditingPlc->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Plc_EditingPlc->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -757,10 +751,10 @@ void Plc_ReceiveFormNewPlace (void) /***** Get parameters from form *****/ /* Get place short name */ - Par_GetParText ("ShortName",Plc_EditingPlc->ShrtName,Plc_MAX_BYTES_PLACE_SHRT_NAME); + Par_GetParText ("ShortName",Plc_EditingPlc->ShrtName,Cns_MAX_BYTES_SHRT_NAME); /* Get place full name */ - Par_GetParText ("FullName",Plc_EditingPlc->FullName,Plc_MAX_BYTES_PLACE_FULL_NAME); + Par_GetParText ("FullName",Plc_EditingPlc->FullName,Cns_MAX_BYTES_FULL_NAME); if (Plc_EditingPlc->ShrtName[0] && Plc_EditingPlc->FullName[0]) // If there's a place name diff --git a/swad_place.h b/swad_place.h index 5afaf914..ab8a1e76 100644 --- a/swad_place.h +++ b/swad_place.h @@ -33,18 +33,12 @@ /************************** Public types and constants ***********************/ /*****************************************************************************/ -#define Plc_MAX_CHARS_PLACE_SHRT_NAME (32 - 1) // 31 -#define Plc_MAX_BYTES_PLACE_SHRT_NAME ((Plc_MAX_CHARS_PLACE_SHRT_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511 - -#define Plc_MAX_CHARS_PLACE_FULL_NAME (128 - 1) // 127 -#define Plc_MAX_BYTES_PLACE_FULL_NAME ((Plc_MAX_CHARS_PLACE_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 - struct Plc_Place { long PlcCod; long InsCod; - char ShrtName[Plc_MAX_BYTES_PLACE_SHRT_NAME + 1]; - char FullName[Plc_MAX_BYTES_PLACE_FULL_NAME + 1]; + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; + char FullName[Cns_MAX_BYTES_FULL_NAME + 1]; unsigned NumCtrs; }; diff --git a/swad_report.c b/swad_report.c index ea6644a8..b7c99862 100644 --- a/swad_report.c +++ b/swad_report.c @@ -484,7 +484,7 @@ static void Rep_WriteSectionUsrInfo (void) extern const char *Txt_Email; extern const char *Txt_Country; extern const char *Txt_Institution; - char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]; + char CtyName[Cns_MAX_BYTES_FULL_NAME + 1]; struct Hie_Node Ins; /***** Begin section *****/ diff --git a/swad_room.c b/swad_room.c index d8539820..24c79adb 100644 --- a/swad_room.c +++ b/swad_room.c @@ -696,7 +696,7 @@ static void Roo_ListRoomsForEdition (const struct Bld_Buildings *Buildings, HTM_TD_Begin ("class=\"LT\""); Frm_BeginFormAnchor (ActRenRooSho,Anchor); ParCod_PutPar (ParCod_Roo,Room->RooCod); - HTM_INPUT_TEXT ("ShortName",Roo_MAX_CHARS_SHRT_NAME,Room->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Room->ShrtName, HTM_SUBMIT_ON_CHANGE, "size=\"10\"" " class=\"INPUT_SHORT_NAME INPUT_%s\"", @@ -708,7 +708,7 @@ static void Roo_ListRoomsForEdition (const struct Bld_Buildings *Buildings, HTM_TD_Begin ("class=\"LT\""); Frm_BeginFormAnchor (ActRenRooFul,Anchor); ParCod_PutPar (ParCod_Roo,Room->RooCod); - HTM_INPUT_TEXT ("FullName",Roo_MAX_CHARS_FULL_NAME,Room->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Room->FullName, HTM_SUBMIT_ON_CHANGE, "size=\"20\"" " class=\"INPUT_FULL_NAME INPUT_%s\"", @@ -1056,75 +1056,68 @@ void Roo_RenameRoomFull (void) static void Roo_RenameRoom (Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_room_X_already_exists; extern const char *Txt_The_room_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentClaName = NULL; // Initialized to avoid warning - char NewClaName[Roo_MAX_BYTES_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Roo_MAX_BYTES_SHRT_NAME; - CurrentClaName = Roo_EditingRoom->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Roo_MAX_BYTES_FULL_NAME; - CurrentClaName = Roo_EditingRoom->FullName; - break; - } + [Cns_SHRT_NAME] = Roo_EditingRoom->ShrtName, + [Cns_FULL_NAME] = Roo_EditingRoom->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get room code */ Roo_EditingRoom->RooCod = ParCod_GetAndCheckPar (ParCod_Roo); /* Get the new name for the room */ - Par_GetParText (ParName,NewClaName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get from the database the old names of the room *****/ Roo_GetRoomDataByCod (Roo_EditingRoom); /***** Check if new name is empty *****/ - if (NewClaName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentClaName,NewClaName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If room was in database... *****/ if (Roo_DB_CheckIfRoomNameExists (Gbl.Hierarchy.Node[Hie_CTR].HieCod, Roo_EditingRoom->RooCod, - ParName,NewClaName)) + Cns_ParShrtOrFullName[ShrtOrFullName], + NewName)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_room_X_already_exists, - NewClaName); + NewName); else { /* Update the table changing old name by new name */ - Roo_DB_UpdateRoomName (Roo_EditingRoom->RooCod,FldName,NewClaName); + Roo_DB_UpdateRoomName (Roo_EditingRoom->RooCod, + Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_room_X_has_been_renamed_as_Y, - CurrentClaName,NewClaName); + CurrentName[ShrtOrFullName],NewName); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentClaName); + Txt_The_name_X_has_not_changed, + CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); /***** Update room name *****/ - Str_Copy (CurrentClaName,NewClaName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } /*****************************************************************************/ @@ -1255,7 +1248,7 @@ static void Roo_PutFormToCreateRoom (const struct Bld_Buildings *Buildings) /***** Room short name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("ShortName",Roo_MAX_CHARS_SHRT_NAME,Roo_EditingRoom->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Roo_EditingRoom->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "size=\"10\" class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -1264,7 +1257,7 @@ static void Roo_PutFormToCreateRoom (const struct Bld_Buildings *Buildings) /***** Room full name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("FullName",Roo_MAX_CHARS_FULL_NAME,Roo_EditingRoom->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Roo_EditingRoom->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "size=\"20\" class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -1342,8 +1335,8 @@ void Roo_ReceiveFormNewRoom (void) Roo_EditingRoom->Type = Roo_GetParType (); /* Get room short name and full name */ - Par_GetParText ("ShortName",Roo_EditingRoom->ShrtName,Roo_MAX_BYTES_SHRT_NAME); - Par_GetParText ("FullName" ,Roo_EditingRoom->FullName,Roo_MAX_BYTES_FULL_NAME); + Par_GetParText ("ShortName",Roo_EditingRoom->ShrtName,Cns_MAX_BYTES_SHRT_NAME); + Par_GetParText ("FullName" ,Roo_EditingRoom->FullName,Cns_MAX_BYTES_FULL_NAME); /* Get seating capacity */ Roo_EditingRoom->Capacity = (unsigned) diff --git a/swad_room.h b/swad_room.h index 5784475e..386cdac2 100644 --- a/swad_room.h +++ b/swad_room.h @@ -34,12 +34,6 @@ /************************** Public types and constants ***********************/ /*****************************************************************************/ -#define Roo_MAX_CHARS_SHRT_NAME (32 - 1) // 31 -#define Roo_MAX_BYTES_SHRT_NAME ((Roo_MAX_CHARS_SHRT_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511 - -#define Roo_MAX_CHARS_FULL_NAME (128 - 1) // 127 -#define Roo_MAX_BYTES_FULL_NAME ((Roo_MAX_CHARS_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 - #define Roo_MAX_CAPACITY 10000 // If capacity of a room is greater than this, it is considered infinite #define Roo_UNLIMITED_CAPACITY INT_MAX // This number can be stored in database as an integer... // ...and means that a room has no limited capacity @@ -79,11 +73,11 @@ struct Roo_Room long RooCod; // Room code long CtrCod; // Center code long BldCod; // Building code - char BldShrtName[Bld_MAX_BYTES_SHRT_NAME + 1]; // Building short name + char BldShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; // Building short name int Floor; // Room floor Roo_RoomType_t Type; // Room type - char ShrtName[Roo_MAX_BYTES_SHRT_NAME + 1]; // Room short name - char FullName[Roo_MAX_BYTES_FULL_NAME + 1]; // Room full name + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; // Room short name + char FullName[Cns_MAX_BYTES_FULL_NAME + 1]; // Room full name unsigned Capacity; // Room seating capacity // (maximum people who fit in the room) unsigned long long MACnum; diff --git a/swad_test_print.c b/swad_test_print.c index 56350d5f..f22bb1b6 100644 --- a/swad_test_print.c +++ b/swad_test_print.c @@ -674,6 +674,23 @@ static void TstPrn_WriteQstAndAnsExam (struct Usr_Data *UsrDat, TstPrn_ComputeAnswerScore (&PrintedQuestions[QstInd],Question); TstPrn_WriteAnswersExam (UsrDat,&PrintedQuestions[QstInd],Question, ICanView,"Qst_TXT","Qst_TXT_LIGHT"); + + /* Write score retrieved from database */ + if (ICanView[TstVis_VISIBLE_EACH_QST_SCORE]) + { + HTM_DIV_Begin ("class=\"LM DAT_SMALL_%s\"", + The_GetSuffix ()); + HTM_TxtColonNBSP (Txt_Score); + HTM_SPAN_Begin ("class=\"%s_%s\"", + PrintedQuestions[QstInd].StrAnswers[0] ? + (PrintedQuestions[QstInd].Score > 0 ? "Qst_ANS_OK" : // Correct + "Qst_ANS_BAD") : // Wrong + "Qst_ANS_0", // Blank answer + The_GetSuffix ()); + HTM_Double2Decimals (PrintedQuestions[QstInd].Score); + HTM_SPAN_End (); + HTM_DIV_End (); + } } else Ale_ShowAlert (Ale_WARNING,Txt_Question_modified); @@ -681,23 +698,6 @@ static void TstPrn_WriteQstAndAnsExam (struct Usr_Data *UsrDat, else Ale_ShowAlert (Ale_WARNING,Txt_Question_removed); - /* Write score retrieved from database */ - if (ICanView[TstVis_VISIBLE_EACH_QST_SCORE]) - { - HTM_DIV_Begin ("class=\"LM DAT_SMALL_%s\"", - The_GetSuffix ()); - HTM_TxtColonNBSP (Txt_Score); - HTM_SPAN_Begin ("class=\"%s_%s\"", - PrintedQuestions[QstInd].StrAnswers[0] ? - (PrintedQuestions[QstInd].Score > 0 ? "Qst_ANS_OK" : // Correct - "Qst_ANS_BAD") : // Wrong - "Qst_ANS_0", // Blank answer - The_GetSuffix ()); - HTM_Double2Decimals (PrintedQuestions[QstInd].Score); - HTM_SPAN_End (); - HTM_DIV_End (); - } - /* Question feedback */ if (QuestionUneditedAfterExam) if (ICanView[TstVis_VISIBLE_FEEDBACK_TXT])